From eacb579857b20426a994964143b38e50a982f242 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 12:55:56 +0000 Subject: [PATCH 1/6] Polish Confirm checklist spacing and typography on form detail pages. Treat Confirm rows as reading callouts with calmer weight, looser padding, and top-aligned icons so multi-line checks feel more premium. Co-authored-by: BigSimmo --- src/components/forms/form-detail-page.tsx | 53 ++++++++++++++++------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/src/components/forms/form-detail-page.tsx b/src/components/forms/form-detail-page.tsx index 444c14a072..0bece582ed 100644 --- a/src/components/forms/form-detail-page.tsx +++ b/src/components/forms/form-detail-page.tsx @@ -211,6 +211,24 @@ function criterionToneClass(tone: ServiceCriterion["tone"]) { return toneWarning; } +/** Soft cue + body for Confirm callouts — medium prefix only, never full-row bold. */ +function ConfirmCalloutText({ cue, body }: { cue?: string; body: string }) { + if (!cue) return <>{body}; + return ( + + {cue} + {body ? <> {body} : null} + + ); +} + +function confirmCheckParts(check: string): { cue?: string; body: string } { + const normalized = check.replace(/^Before use:\s*/i, "Before use: "); + const match = normalized.match(/^(Before use:)\s*(.*)$/i); + if (!match) return { body: normalized }; + return { cue: "Before use:", body: match[2] ?? "" }; +} + function DetailCard({ card }: { card: ServiceSummaryCard }) { return (
@@ -426,19 +444,22 @@ function PathwayContextCard({

Confirm

-
- {confirmChecks.slice(0, 4).map((check) => ( - - - {check.replace(/^Before use:\s*/i, "Before use: ")} - - ))} +
+ {confirmChecks.slice(0, 4).map((check) => { + const { cue, body } = confirmCheckParts(check); + return ( + + + + + ); + })} {criteria .filter((criterion) => criterion.tone === "reject") .slice(0, 1) @@ -446,12 +467,12 @@ function PathwayContextCard({ - - Avoid: {criterion.label} + + ))}
From 32474bcd20d5fa39097a3f75b85d3af81b404320 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 13:54:18 +0000 Subject: [PATCH 2/6] Add DOM regression coverage for polished form Confirm callouts. Locks Confirm stack spacing classes, soft cue weight, and Avoid row rendering on Form 1A. Co-authored-by: BigSimmo --- tests/form-confirm-callout.dom.test.tsx | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 tests/form-confirm-callout.dom.test.tsx diff --git a/tests/form-confirm-callout.dom.test.tsx b/tests/form-confirm-callout.dom.test.tsx new file mode 100644 index 0000000000..6cd414da4a --- /dev/null +++ b/tests/form-confirm-callout.dom.test.tsx @@ -0,0 +1,42 @@ +import { render, screen } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; + +import { FormDetailPage } from "@/components/forms/form-detail-page"; +import { getFormRecord } from "@/lib/forms"; + +vi.mock("@/components/account-data-provider", () => ({ + useAccountData: () => ({ + isSaved: () => false, + setFavourite: vi.fn(async () => true), + }), +})); + +describe("Form confirm callouts", () => { + it("renders Confirm rows as spaced reading callouts with soft cues", () => { + const form = getFormRecord("form-1a"); + expect(form).toBeTruthy(); + render(); + + const mobile = screen.getByTestId("form-decision-context-mobile"); + const confirmHeading = Array.from(mobile.querySelectorAll("p")).find((p) => p.textContent === "Confirm"); + expect(confirmHeading).toBeTruthy(); + + const stack = confirmHeading!.parentElement!.querySelector(":scope > .grid"); + expect(stack?.className).toContain("gap-2.5"); + + const rows = Array.from(stack!.children) as HTMLElement[]; + expect(rows.length).toBeGreaterThanOrEqual(4); + for (const row of rows) { + expect(row.className).toMatch(/font-normal/); + expect(row.className).toMatch(/px-3/); + expect(row.className).toMatch(/py-2\.5/); + expect(row.className).toMatch(/rounded-lg/); + expect(row.className).not.toMatch(/font-semibold/); + } + + expect(mobile.textContent).toMatch(/Avoid:/); + expect(Array.from(mobile.querySelectorAll("span.font-medium")).some((el) => el.textContent === "Before use:")).toBe( + true, + ); + }); +}); From 3cf0ed99a1a90f46cb7c6aff7e8b7f7bfd6212b8 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 13:54:33 +0000 Subject: [PATCH 3/6] Record form Confirm checklist polish in the branch review ledger. Co-authored-by: BigSimmo --- docs/branch-review-ledger.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index 114f425ae7..50e6b50aa9 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -752,3 +752,4 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | 2026-08-08 | claude/ds-tap-and-linkaction | 6916c80526603514d91bd29d224959dd420af59c | M5 LinkAction tone refusal plus re-measured corrections to outstanding-issues #270, #118 and #269 — final reviewed head, adds the tone?: never fix, its type-contract test and both regenerated manifests | PR #1720, superseding the 824c1b74a record. Codex found the Omit form still accepted tone through a spread; verified with a focused tsc probe before changing anything (Omit accepted the spread with no diagnostic, tone?: never rejected it with TS2345), because excess-property checking only fires on object literals. Fixed with tone?: never plus a type-level contract test that stops compiling if the prop widens back. CodeRabbit's future-dated finding fixed in ff307cc5b. CodeRabbit's ledger-scope finding does not apply: that row records a different ref and head and was accurate as written, but a superseding row for the final #1719 head was appended anyway since its scope grew after the review pass | tsc -p tsconfig.typecheck.json --noEmit exit 0 zero diagnostics; lint exit 0; check:design-system-contract exit 0 (676 production files, legacy shadow aliases 228 confirming the #262 re-measure, adoption 53 components 55 roots, design-sync 53 components and 7 guidelines); check-icon-scale.mjs --strict exit 0; vitest threads pool 3 files 164 tests passed; check:outstanding-issues pass; check:branch-review-ledger pass; prettier --check . pass whole-tree; main merged in with merge-tree proven clean first and an id-set proof over both merge parents showing 274 ids each side, none lost, none invented | | 2026-08-08 | claude/ds-close-276 (PR #1724) | 75c89993f3ea23b70a250f605b21437b4ea9aac8 | PR #1724 review-and-fix | fixed Codex P2 wrong #118 Lighthouse cause (150 overwrite vs 151 pin); dispositioned CodeRabbit #276 archive claim as false (issues:done move); merge-tree clean; required CI was green on prior tip 8ae8c48f; no Bugbot findings | check:outstanding-issues pass; prettier --check docs/outstanding-issues.md pass; no provider-backed checks | | 2026-08-08 | claude/ds-close-276 (PR #1724) | 4baa9a1b42fa05731a6f983b3e0d0ebbd37f5271 | PR #1724 review-and-fix | synced origin/main (#1725 conflict on outstanding-issues resolved by preferring main queue then re-applying #276 done + corrected #118 diagnosis); Codex P2 fixed; CodeRabbit #276 archive claim dispositioned false; merge-tree clean after sync | check:outstanding-issues pass; prettier --check docs/outstanding-issues.md pass; merge-tree clean vs origin/main; no provider-backed checks | +| 2026-08-08 | cursor/confirm-checklist-polish-195c | 32474bcd20d5fa39097a3f75b85d3af81b404320 | form-detail Confirm checklist polish | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | From db01d3220941b34440346b002b1fd333d016506d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 13:54:41 +0000 Subject: [PATCH 4/6] Supersede Confirm polish ledger row with tip HEAD. Co-authored-by: BigSimmo --- docs/branch-review-ledger.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index 50e6b50aa9..54a8de503a 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -753,3 +753,5 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | 2026-08-08 | claude/ds-close-276 (PR #1724) | 75c89993f3ea23b70a250f605b21437b4ea9aac8 | PR #1724 review-and-fix | fixed Codex P2 wrong #118 Lighthouse cause (150 overwrite vs 151 pin); dispositioned CodeRabbit #276 archive claim as false (issues:done move); merge-tree clean; required CI was green on prior tip 8ae8c48f; no Bugbot findings | check:outstanding-issues pass; prettier --check docs/outstanding-issues.md pass; no provider-backed checks | | 2026-08-08 | claude/ds-close-276 (PR #1724) | 4baa9a1b42fa05731a6f983b3e0d0ebbd37f5271 | PR #1724 review-and-fix | synced origin/main (#1725 conflict on outstanding-issues resolved by preferring main queue then re-applying #276 done + corrected #118 diagnosis); Codex P2 fixed; CodeRabbit #276 archive claim dispositioned false; merge-tree clean after sync | check:outstanding-issues pass; prettier --check docs/outstanding-issues.md pass; merge-tree clean vs origin/main; no provider-backed checks | | 2026-08-08 | cursor/confirm-checklist-polish-195c | 32474bcd20d5fa39097a3f75b85d3af81b404320 | form-detail Confirm checklist polish | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | +| 2026-08-08 | cursor/confirm-checklist-polish-195c | 3cf0ed99a1a90f46cb7c6aff7e8b7f7bfd6212b8 | form-detail Confirm checklist polish | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | +| 2026-08-08 | cursor/confirm-checklist-polish-195c | 3cf0ed99a1a90f46cb7c6aff7e8b7f7bfd6212b8 | form-detail Confirm checklist polish (supersedes 2026-08-08) | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | From a905b60c8a60fcdfec6cf584d76a59a4f2ffd688 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 14:44:45 +0000 Subject: [PATCH 5/6] Record PR #1734 Confirm checklist review (clean) in ledger. Co-authored-by: BigSimmo --- docs/branch-review-ledger.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index 54a8de503a..d0a9d6307c 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -755,3 +755,4 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | 2026-08-08 | cursor/confirm-checklist-polish-195c | 32474bcd20d5fa39097a3f75b85d3af81b404320 | form-detail Confirm checklist polish | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | | 2026-08-08 | cursor/confirm-checklist-polish-195c | 3cf0ed99a1a90f46cb7c6aff7e8b7f7bfd6212b8 | form-detail Confirm checklist polish | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | | 2026-08-08 | cursor/confirm-checklist-polish-195c | 3cf0ed99a1a90f46cb7c6aff7e8b7f7bfd6212b8 | form-detail Confirm checklist polish (supersedes 2026-08-08) | shipped spacing/typography polish + DOM guard | vitest form-confirm-callout.dom; visual Form 1A Confirm | +| 2026-08-08 | cursor/confirm-checklist-polish-195c | 96c4d3a3a1a46efedfa5b43c4bf1de227c1d19a6 | PR #1734 confirm checklist | clean; no P0/P1/P2 in ConfirmCalloutText/confirmCheckParts/Avoid row | diff vs main; form-1a catalog wiring; vitest form-confirm-callout.dom.test.tsx PASS | From 36ad3e0df6d1bf70ff47917a9ac8092121c646fd Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 8 Aug 2026 15:52:47 +0000 Subject: [PATCH 6/6] Record PR #1734 unblock sync in the branch review ledger. Co-authored-by: BigSimmo --- docs/branch-review-ledger.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/branch-review-ledger.md b/docs/branch-review-ledger.md index 88a621524d..5564715a6f 100644 --- a/docs/branch-review-ledger.md +++ b/docs/branch-review-ledger.md @@ -758,3 +758,4 @@ Records before 2026-07-28 were written by hand and had drifted: 146 lines carrie | 2026-08-08 | cursor/confirm-checklist-polish-195c | 96c4d3a3a1a46efedfa5b43c4bf1de227c1d19a6 | PR #1734 confirm checklist | clean; no P0/P1/P2 in ConfirmCalloutText/confirmCheckParts/Avoid row | diff vs main; form-1a catalog wiring; vitest form-confirm-callout.dom.test.tsx PASS | | 2026-08-08 | claude/document-image-mobile-view-30xzw8 | 2394d903a6ca1ba7a84e380c9ed5cada038fa5c0 | document-viewer phone image layout + lightbox geometry (PR #1737) | implemented: capped rail/body grid tracks, removed aspect-ratio min-height transfer, rebuilt phone image viewer (legible open scale, rotation re-fit, clamped pan, double-tap, footer controls) | lint, typecheck, test (5647 pass / 1 pre-existing fail), build, eval:rag:offline, check:bundle-budget, all verify:pr-local static steps by hand; browser gates blocked by #255 | | 2026-08-08 | claude/document-image-mobile-view-30xzw8 | d257df7e11913db1d367535171fac726f47e7f1c | PR #1737 document-viewer phone image review-and-fix | fixed P1 expand fixture/threshold + P2 double-tap stage coords/pointer-up + resize re-clamp; Production UI timeout root cause cleared; merge-tree clean | verify:pr-local PASS (525 files/5653 tests); lint; typecheck; focused vitest 64/64; Production UI delegated to CI | +| 2026-08-08 | cursor/confirm-checklist-polish-195c | 89cc8711dd0536c32818cbbd493edff860763a61 | PR #1734 unblock | synced origin/main (behind-but-clean DIRTY; merge-tree clean); no product conflict; advisory lighthouse ignored | merge-tree clean vs origin/main; ledger:dedupe none |