Skip to content

feat(notes): match the provider's Word support-notes template (T44) - #246

Merged
Lethabarb merged 8 commits into
mainfrom
feat/t44-word-template-parity
Nov 10, 2026
Merged

Lethabarb merged 8 commits into
mainfrom
feat/t44-word-template-parity

Conversation

@Lethabarb

Copy link
Copy Markdown
Owner

What this adds

The provider's five daily Word support-note documents are what Grow2Notes is based on. This PR makes the downloaded
daily report, and the note form behind it, match them (T44, decision D104, owner's answers of 10 November 2026).

  • Report in Word and PDF. Title SUPPORT NOTES (with – WEEK A or – WEEK B), DATE: and STAFF: rows, a
    Participants index with start pages, each participant on a new page under NAME: in capitals, in first-name order.
    Goals sit under Short term goals and Medium or Long term goal, each group under its own name (unpicked groups as
    empty boxes, report only), then Daily Support Notes and Note written by:. The past-day, edited, flag and review
    lines stay. File name is <Weekday> dd.mm.yyyy.docx or .pdf. One ReportStyle feeds both files (T39).
  • Attendance. Three independent ticks (Not In, Late Notice, Sick), autosaved and versioned, printed under NAME and
    shown on the read view, version page and record export. An absent participant still gets a note.
  • Goal terms. A bool per goal, set in the goal editor, snapshotted with the wording; existing goals are Short term.
  • Medication line. A manager switches it on per participant; notes started afterwards get an optional free-text box.
  • Text for "Other" items. A manager marks an item as needing details; a Details box shows when it is ticked and is
    required to submit.
  • Week A / Week B chosen on the Report screen, kept only in the report.downloaded audit details.
  • MCP. The seven admin tools are extended in place (still 28 tools); the assistant never sees note content.
  • Not chosen: frequency levels, a "Note checked by" line, co-authors, handover.

One expand-only migration, AddWordTemplateParity (defaulted columns and two check constraints), is in the diff for
review. No route, table, error code or audit event type is added. Old notes, versions and reports read as no ticks,
Short term goals, no Medication row and no details.

Stories absorbed

S01.02.09, S01.02.10, S01.03.09, S02.02.09, S02.02.10, S02.02.11, S02.02.12, S02.05.05, S04.01.07, S04.01.08,
S04.01.09, S04.02.06 and S07.03.09; dated Notes amend S04.01.01 to S04.01.05, S04.02.01, S04.02.03, S02.05.01 to
S02.05.04, S01.02.03, S01.02.05, S01.02.06 and S01.03.02. Also done: T04 (ops/word-template-setup.md), T22 to T26,
T37, T38, T39 and T40.

Verticals (each reviewed, merged into the feature branch)

Tests

CI runs them (none were run locally). Added or extended: ListsVersion, note draft and version endpoints, goal, item
and participant set-up, MCP tool tests, ReportLayout, Word and PDF report tests, DailyReportFullDayTests (17
participants), NoteToReportTests, PastRecordsTests, NoteHeadingWordsTests, ReportDatesTests, Vitest specs and
word-template.spec.ts. Locally: dotnet build Grow2Notes.slnx -warnaserror and the SPA build, typecheck and lint
pass. By-hand checks are first-use steps 223 to 229 in ops/first-use-in-test.md.

Decisions

D104 records the answers (amends D47 for the daily report only, and D9; D13, D14, D20 and D25 stand). A145 to A149 are
the owner's assumed defaults, and A150 to A163 are the developer's choices, in design.md section 13; the owner may
overturn any of them.

Labels taken from the owner's summary

SUPPORT NOTES, DATE:, STAFF:, NAME:, Not In, Late Notice, Sick, Short term goals, Medium or Long term goal,
Medication, Daily Support Notes, Note written by:. They live in one place (NoteWords and ReportLayout).
ops/word-template-setup.md marks each item not quoted word for word as "Wording to confirm against the Word
template".

Merge notes

Open PRs #235 and #241 claim only D103, so D104, A145 to A163, steps 223 to 229 and the migration slot are free. #241
touches Limits.cs, limits.ts, EndpointMatrix and design.md sections 6 and 12, so expect text conflicts; append ours
after theirs.

🤖 Generated with Claude Code

Lethabarb and others added 8 commits November 10, 2026 19:54
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fields (server foundation) (#242)

* feat(notes): add the Word-template fields to the data model, note rules and set-up API

Adds, expand-only, the goal term, the common item's need for details and the
participant's Medication switch; a note's attendance ticks and Medication
text; and a version item's term, need for details and details. The note
snapshot carries them (PrintedGroups, MedicationOf, SubmitRefusal), the draft
and version endpoints store and read them, and the goal, common item and
participant set-up endpoints and the MCP tools set them. The report keeps its
old layout.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* test(notes): cover the Word-template fields

Model, table and constraint tests for the new columns; the legacy working-copy
JSON; the lists version; the goal, common item and participant set-up
endpoints; the draft and version endpoints; and the MCP tools and their
pinned list.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* docs(notes): describe the Word-template fields in the data model, API and MCP pages

Updates the design lengths, entities, audit catalogue, snapshot, save and API
sections, the MCP tool table, and the onboarding skill and its ops page.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* fix(notes): add the Word-template migration to the database check and update stale test expectations

The production check-database script now names AddWordTemplateParity in B8, and the tests that assert the
participant column list and the restore_participant result carry hasMedicationLine. The onboard-provider skill
states that the Medication switch is a manager's step by decision.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(e2e): expect the new set-up and note fields in the exact-shape reads

The admin participant list now carries hasMedicationLine, and the manager's
read of a draft carries the attendance ticks, medication and each goal's term.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(audit): note the Medication switch on the participant.created row

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
…e name, week, styles and report tests (T22, T23, T24, T39) (#243)

* feat(notes): Word-layout daily report with index, attendance row, goal terms and one set of styles

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(notes): report layout, endpoint, renderer and text-match tests for the Word-layout report

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(notes): full-day report, note-to-report and past-record tests for the Word-layout report

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(design): the Word-layout report, week choice, file name and one set of styles

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(reports): correct the export row in design 6.5, compare tick rows by value, and fix three report test assertions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(e2e): allow for WebKit swapping spaces for underscores in a suggested file name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(reports): update the manual header and heading steps; drop a duplicate footer assertion

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…t screen week choice, copy, UX docs and the T40 headings test (#244)

* feat(notes): copy for the Word template labels, details and file day (T44)

Adds noteWords, held to NoteWords.cs by a test, the Attendance, Medication,
term, Ask for details, Week and Word page-number strings, msg.enterDetails,
msg.itemDetails and fileDay. Drops the numbered section names, readView.noGoals
and readView.noCommonItems. The empty-goals sentence now says "No goals set" (T38).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(notes): attendance, term headings, Medication and Details on the note form and read view (T44)

The note form gains an Attendance fieldset, goals under Short term goals and
Medium or Long term goal, a Medication box for participants who have one, and a
Details box under a ticked common item that asks for details. Each group is
headed by its own name, and the Guided notes box is now Daily Support Notes.
Autosave, takeover and conflict reloads carry the new fields, Submit and Save
changes require the details, and a server 422 maps to its field. The read view
and version page show the same sections.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat(notes): set-up controls for goal term, Ask for details and Medication box, and the Week choice (T44)

A goal's Edit gains a Term choice, a common item's Edit gains Ask for details
when ticked, and a participant's Details gain Medication box on notes, each
sent under If-Match. The Report screen gains a Week choice, the dated file name
and a hint about Word page numbers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(notes): show a 422 under the Medication text or the details on the field it names (T44)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(notes): cover attendance, term headings, Medication, details, the set-up controls and the Week choice (T44)

Updates every Vitest spec that names the old section headings, the daily
report's file names and the participant fixtures, and adds specs for the new
note form fields, the read view and version page, the list editor setting, the
Medication switch, the Ask for details tick box, the Week choice and fileDay.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(e2e): follow the new headings, Attendance stops and fields, and add the Word template flow (T44)

The note form's tab order now starts with Attendance, the read view lists the
Attendance ticks, the groups are <h2>s under their own names, the item edit form
asks for details, the Term radios and Medication switch join the participant page, and the Week choice joins the
Report screen. The fake note store gives the new fields. word-template.spec.ts
signs in for real and walks a manager's set-up, a worker's note, the read view
and the Week A download.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(notes): hold the SPA's noteWords to NoteWords.cs word for word (T40)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(ux): the Word template's note form, read view, set-up controls and Week choice (T44)

Amends the note form, read view, version page, participants, common items, group
picker, tick lists, list editor, daily report, file download, record export,
form validation and microcopy specs, the glossary and design.md 4.3, 4.4, 4.5,
4.7, 4.8 and 4.9. New strings are marked (P).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test(spa): fix the six failing Vitest cases and tidy the T44 comments

- Medication box switch: follows() took its arguments the wrong way round, and the
  saved status is compared as textContent like its neighbours (toHaveTextContent
  normalises the no-break space).
- Details box: scope the 200-character count to the box, as the flag reason has one.
- Report screen: the test server answers an export that carries &week=A or &week=B.
- Common items: the Ask for details save serves the list writes, so the form closes.
- Reflow the broken doc comments and move the CSS-module imports into place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(notes): wrap long headings at 320 px and follow the e2e specs to the new form (T44)

- Let a tick list's heading and the Medication label break a long word (Attendance, a
  group's name) instead of widening the page at 320 px with text at 200%.
- axe reads the page from its top, as the past-day case already did: the longer form
  scrolls under the sticky bar when typing, which target-size reads as a covered target.
- The takeover keyboard test uses a taller window, as the form is longer.
- The Chromium names of the Edit buttons and the Details box carry the hidden context
  after a space, as the participants spec already has them.
- The Jane Citizen Tab order includes the Medication box switch before Save.
- The two read-order patterns start with Attendance, not 1. Goals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…verage, Word-template set-up list and by-hand checks (merges last) (#245)

* feat(notes): T44 v4 decision, assumed defaults, backlog close-out, coverage, Word-template set-up list and by-hand checks

Records D104 (amends D47 and D9; D13, D14, D20 and D25 stand), A145 to A163 in
design.md section 13, the amended A4, A5 and A68, section 3.1, M4 and the No
rostering row (T37). Closes T44 and its stories with their tests named, adds dated
Notes to the amended stories, maps each Word element in coverage.md (T26), adds
ops/word-template-setup.md (T04) and first-use steps 223 to 229 (T25), and
brings the UX docs' file-name and heading examples in line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(ops): use placeholders for venue names in the Word-template set-up list

Replace the literal venue names with placeholders and mark the "G2B" wording to
confirm against the Word template.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…s a placeholder, rename a stale test

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… what Guided notes means in older by-hand steps

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Lethabarb
Lethabarb merged commit 406fe75 into main Nov 10, 2026
1 check passed
@Lethabarb
Lethabarb deleted the feat/t44-word-template-parity branch November 10, 2026 23:29
Lethabarb added a commit that referenced this pull request Nov 10, 2026
Main took D104 for the Word-template decision (#246), and open PR #241
also numbers its decision D103, so this branch's hosting-cost decision
becomes D105, the next number no branch claims. design/decisions.md keeps
main's D104 row and adds this one after it; this branch's citations are
renamed in the files it changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant