Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
b92c70b
Add answer-page chat + reference-system design study
claude Aug 24, 2026
3bfd65f
Show the sources drawer open on desktop in the answer study
claude Aug 24, 2026
deacdf2
Refine direction A into a finished answer-page design
claude Aug 24, 2026
7e346a2
Restore the original source cards and add a build handover
claude Aug 24, 2026
14e829a
Fix source-drawer keyboard paging by listening on window
cursoragent Aug 24, 2026
c38a13f
Merge remote-tracking branch 'origin/main' into claude/answer-page-re…
claude Aug 24, 2026
245c307
fix(mockups): drawer focus management and keyboard-focus action reveal
claude Aug 24, 2026
612892d
test: cover answer drawer keyboard focus
BigSimmo Aug 24, 2026
1477709
test: target the answer drawer frame
BigSimmo Aug 24, 2026
f4cf9ff
fix: address answer redesign review findings
BigSimmo Aug 24, 2026
c9ebebd
fix: address answer redesign review findings
BigSimmo Aug 24, 2026
0e66001
style: format answer drawer accessibility fix
BigSimmo Aug 24, 2026
1263f44
style: apply repository formatting to drawer fix
BigSimmo Aug 24, 2026
6873609
test: type drawer focus assertion
BigSimmo Aug 24, 2026
29425b3
Merge branch 'main' into claude/answer-page-redesign-s8st5u
BigSimmo Aug 24, 2026
3487032
test: cover answer drawer keyboard focus
BigSimmo Aug 24, 2026
9e48a7d
test: collect answer drawer mockup browser proof
BigSimmo Aug 24, 2026
b5cf1dd
test: target the rendered answer drawer
BigSimmo Aug 24, 2026
eb96c1b
fix: focus the first source drawer control
BigSimmo Aug 24, 2026
20b458e
fix: focus the first source drawer control
BigSimmo Aug 24, 2026
98539ba
test: scope answer drawer keyboard coverage to phone frame
BigSimmo Aug 24, 2026
30a7d41
fix: restore focus to the source trigger on drawer close
BigSimmo Aug 24, 2026
d14dc24
style: format drawer focus restoration
BigSimmo Aug 24, 2026
129adc5
Merge branch 'main' into claude/answer-page-redesign-s8st5u
BigSimmo Aug 24, 2026
e668fa0
Merge branch 'main' into claude/answer-page-redesign-s8st5u
BigSimmo Aug 24, 2026
aa42798
fix: avoid focusing initially open answer drawers
BigSimmo Aug 24, 2026
afcc60d
fix: reveal redesigned answer actions on keyboard focus
BigSimmo Aug 24, 2026
950a74d
test: target the interactive phone answer drawer
BigSimmo Aug 24, 2026
0d107f3
docs: clarify initial drawer focus behavior
BigSimmo Aug 24, 2026
dfb6ece
fix: track post-load drawer focus without render ref reads
BigSimmo Aug 24, 2026
4b77f11
Merge branch 'main' into claude/answer-page-redesign-s8st5u
BigSimmo Aug 24, 2026
a6e2819
fix: focus the clicked source mark explicitly before opening drawer
claude Aug 24, 2026
5d8e05a
Merge remote-tracking branch 'origin/claude/answer-page-redesign-s8st…
claude Aug 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ npm run docs:check-links
## Plans and workstreams (living)

- [mode-aware-clinical-ask-local-handover.md](mode-aware-clinical-ask-local-handover.md) — three-phase local integration, approval-gated staging/governance, and PR publication handover for Mode-aware Clinical Ask
- [answer-page-redesign-handover.md](answer-page-redesign-handover.md) — build-and-merge handover for the chosen answer-page design: what claim-level citation data already exists, the three-PR order it forces, the design contract, and the gates and PR-body requirements that block the merge
- [maturity-backlog-workorders.md](maturity-backlog-workorders.md) — actionable work orders tracking the repository-maturity audit backlog
- [no-unchecked-indexed-access-migration-plan.md](no-unchecked-indexed-access-migration-plan.md) — staged multi-PR rollout for the `noUncheckedIndexedAccess` TypeScript flag (ledger `#211`)
- [ledger-id-scheme-proposal.md](ledger-id-scheme-proposal.md) — design for collision-free outstanding-issue ids so concurrent sessions stop contending on `issues:next-id` (ledger `#168`)
Expand Down
318 changes: 318 additions & 0 deletions docs/answer-page-redesign-handover.md

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions docs/site-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -1148,6 +1148,8 @@ This file is generated by `npm run docs:update` (or `npm run sitemap:update` dir

- `/mockups/accessible-table-browser-fixture` - Route discovered from app directory Source: `src/app/mockups/accessible-table-browser-fixture/page.tsx`.
- `/mockups/also-matches-accents` - Route discovered from app directory Source: `src/app/mockups/also-matches-accents/page.tsx`.
- `/mockups/answer-chat-perfected` - Route discovered from app directory Source: `src/app/mockups/answer-chat-perfected/page.tsx`.
- `/mockups/answer-chat-redesign` - Route discovered from app directory Source: `src/app/mockups/answer-chat-redesign/page.tsx`.
- `/mockups/answer-evidence-popups` - Route discovered from app directory Source: `src/app/mockups/answer-evidence-popups/page.tsx`.
- `/mockups/answer-home-proposal` - Route discovered from app directory Source: `src/app/mockups/answer-home-proposal/page.tsx`.
- `/mockups/calculators-bedside-sheet` - Route discovered from app directory Source: `src/app/mockups/calculators-bedside-sheet/page.tsx`.
Expand Down
4 changes: 2 additions & 2 deletions playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ const chromiumExecutablePath = process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH;
const productionSpecPattern =
/.*(?:answer-progress-ui-smoke|dsm-ui-smoke|ui-(smoke|stress|accessibility|caring-contacts-workspace|clinical-ask|dictionary|document-canvas|tools|ward-(?:management|coordinator|roles)|overlap|universal-search|specifiers|formulation(?:-result-cards)?|forms-section-nav|chrome-scroll|therapy-nav-scroll|mode-nav-density|phone-motion|phone-scroll(?:-[a-z0-9-]+)?|pwa|route-coverage|style-contract|visual-artifacts|hydration))\.spec\.ts/;
const mockupSpecPattern =
/.*ui-(caring-contact-mockup|document-top-navigation-mockup|sidebar-live-mockup|therapy-navigation-mockup|tools|tools-collapse|tools-search-mode-mockup|tools-task-directory)\.spec\.ts/;
/.*ui-(answer-chat-perfected-mockup|caring-contact-mockup|document-top-navigation-mockup|sidebar-live-mockup|therapy-navigation-mockup|tools|tools-collapse|tools-search-mode-mockup|tools-task-directory)\.spec\.ts/;
const mockupTag = /@mockup/;

export default defineConfig({
testDir: "./tests",
testMatch:
/.*(?:answer-progress-ui-smoke|dsm-ui-smoke|ui-(smoke|stress|accessibility|caring-contact-mockup|caring-contacts-workspace|clinical-ask|dictionary|document-canvas|document-top-navigation-mockup|sidebar-live-mockup|therapy-navigation-mockup|tools|tools-collapse|tools-search-mode-mockup|tools-task-directory|ward-(?:management|coordinator|roles)|overlap|universal-search|specifiers|formulation(?:-result-cards)?|forms-section-nav|chrome-scroll|therapy-nav-scroll|mode-nav-density|phone-motion|phone-scroll(?:-[a-z0-9-]+)?|pwa|route-coverage|style-contract|visual-artifacts|hydration))\.spec\.ts/,
/.*(?:answer-progress-ui-smoke|dsm-ui-smoke|ui-(smoke|stress|accessibility|answer-chat-perfected-mockup|caring-contact-mockup|caring-contacts-workspace|clinical-ask|dictionary|document-canvas|document-top-navigation-mockup|sidebar-live-mockup|therapy-navigation-mockup|tools|tools-collapse|tools-search-mode-mockup|tools-task-directory|ward-(?:management|coordinator|roles)|overlap|universal-search|specifiers|formulation(?:-result-cards)?|forms-section-nav|chrome-scroll|therapy-nav-scroll|mode-nav-density|phone-motion|phone-scroll(?:-[a-z0-9-]+)?|pwa|route-coverage|style-contract|visual-artifacts|hydration))\.spec\.ts/,
timeout: 60_000,
retries: 0,
// Fail the run if a stray `test.only` is committed: otherwise it silently
Expand Down
5 changes: 5 additions & 0 deletions src/app/mockups/answer-chat-perfected/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { AnswerChatPerfectedMockupsPage } from "@/components/answer-chat-perfected-mockups";

export default function AnswerChatPerfectedMockupRoute() {
return <AnswerChatPerfectedMockupsPage />;
}
5 changes: 5 additions & 0 deletions src/app/mockups/answer-chat-redesign/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { AnswerChatRedesignMockupsPage } from "@/components/answer-chat-redesign-mockups";

export default function AnswerChatRedesignMockupRoute() {
return <AnswerChatRedesignMockupsPage />;
}
10 changes: 10 additions & 0 deletions src/app/mockups/mockups-layout-client.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
// sit on top of a study about results-card identity.
const isAlsoMatchesAccentMockup = pathname === "/mockups/also-matches-accents";
const isAnswerHomeProposalMockup = pathname === "/mockups/answer-home-proposal";
// Every direction in this study draws its own top bar, transcript and
// composer inside phone/desktop frames — the reference system under review
// sits directly between them, so shared chrome would read as a second real
// header and a second real search bar over the study.
const isAnswerChatRedesignMockup = pathname === "/mockups/answer-chat-redesign";
const isAnswerChatPerfectedMockup = pathname === "/mockups/answer-chat-perfected";
// Draws its own sticky chrome + device frames for /privacy; shared shell would
// read as a second real header over the study.
const isPrivacyPageDirectionsMockup = pathname === "/mockups/privacy-page-directions";
Expand Down Expand Up @@ -135,6 +141,8 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isWarningLineMockup &&
!isAlsoMatchesAccentMockup &&
!isAnswerHomeProposalMockup &&
!isAnswerChatRedesignMockup &&
!isAnswerChatPerfectedMockup &&
!isPrivacyPageDirectionsMockup &&
!isPrivacyLiveSignalPerfectedMockup &&
!isSearchLensMenuMockup &&
Expand Down Expand Up @@ -162,6 +170,8 @@ export function MockupsLayoutClient({ children }: { children: ReactNode }) {
!isWarningLineMockup &&
!isAlsoMatchesAccentMockup &&
!isAnswerHomeProposalMockup &&
!isAnswerChatRedesignMockup &&
!isAnswerChatPerfectedMockup &&
!isPrivacyPageDirectionsMockup &&
!isPrivacyLiveSignalPerfectedMockup &&
!isSearchLensMenuMockup &&
Expand Down
Loading
Loading