Add tools and favourites mockup concepts - #215
Conversation
- differentials detail: give each Compare Basket item its own severity tag
(shared likelihoodTag helper) instead of stamping the parent's status on
all items; show the real related count instead of length + 8
- differentials stream: replace internal QA-scaffolding copy ("Stream helper /
workflow verification only") with clinician-facing "Keep exploring" guidance
- services: expand "ATSI" display labels to "Aboriginal and Torres Strait
Islander" while keeping "ATSI" as a search keyword in tags; rename the
duplicate "Find a service" card to "Search services"
- favourites: derive saved-set counts from real items (2/2/1 vs 12/9/7),
relabel the ambiguous "Active" stat to "Filters", fix "1 item" pluralization
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>…ar, form
Commits the current working-tree state of these four files, which also carries
in-progress edits already present on this branch. Design-review changes here:
- service detail: use break-words instead of break-all so referral values no
longer split mid-word ("service" -> "servic e", "Strait" -> "Stra it")
- master search header: use the magnifier submit affordance for every
search-mode home; differentials no longer uses the send arrow
- sidebar: expand tool labels to full words (Favourites, Differentials,
Medications) for consistency with the rest of the nav
- form detail: render Verification notes as proper sentences (joinNotes)
instead of a bare space-joined run-on
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
… build Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…d mockups Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…uum, drop dead indexes Postgres best-practices audit of the live Clinical KB Database found: an unindexed FK on storage_cleanup_jobs.document_id, document_embedding_fields (largest table, 215k+ rows, backs an HNSW index) missing the autovacuum tuning its sibling RAG tables already have, no idle-in-transaction timeout on the authenticator role, and 4 dead/duplicate indexes (~25MB) not referenced by any query or by search_schema_health()'s required_indexes invariant. All changes already applied live via Supabase MCP and verified (search_schema_health() still reports ok:true). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… clinical UI Consolidates the in-progress design-token / design-review sweep from the working tree of this shared checkout (38 files): - globals.css: add size-only type-scale steps (--text-4xs/3xs/2xs/sm-minus/ base-minus) and remove the dead `@theme inline` colour bridge; per-theme values are consumed directly via var() so .dark overrides cascade. - Migrate hardcoded `text-[Npx]` sizes and ad-hoc values to the new tokens across dashboard, differentials, forms, services, document, and mockup surfaces. - Update ui-smoke / ui-stress / ui-tools specs to match. Excludes tools-page-mockup-page.tsx: its sweep edit was a mid-flight extraction into ./tool-fixtures + ./use-tool-filter (modules not yet committed), left as the owning session's WIP. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- 07-token-adoption-audit.md: report from the design-token adoption sweep. - 08-design-review-prompt.md: the design-review prompt driving the UI pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:6bbf3f2630
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:dae41bb68e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
BigSimmo
commented
Jul 3, 2026
@copilot resolve the merge conflicts in this pull request |
BigSimmo
commented
Jul 3, 2026
@copilot resolve the merge conflicts in this pull request |
Head branch was pushed to by a user without write access
…ckups # Conflicts: # scripts/run-eval-safe.mjs # src/components/ClinicalDashboard.tsx # src/components/DocumentViewer.tsx # src/components/clinical-dashboard/differentials-home.tsx # src/components/clinical-dashboard/global-mockup-search-shell.tsx # src/components/clinical-dashboard/master-search-header.tsx # src/components/differentials/differential-detail-page.tsx # src/components/forms/forms-search-results-page.tsx # tests/ui-tools.spec.ts
… feature/tools-page-mockups # Conflicts: # src/components/ClinicalDashboard.tsx # supabase/migrations/20260703000000_storage_cleanup_fk_index_and_embedding_fields_autovacuum.sql # supabase/schema.sql # tests/supabase-schema.test.ts
… feature/tools-page-mockups # Conflicts: # scripts/run-eval-safe.mjs # src/components/ClinicalDashboard.tsx # src/components/DocumentViewer.tsx # src/components/clinical-dashboard/differentials-home.tsx # src/components/clinical-dashboard/global-mockup-search-shell.tsx # src/components/forms/forms-search-results-page.tsx # tests/ui-tools.spec.ts
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:952c2e7379
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
fde914a to
2ca4685CompareUh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:5b623209e2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // library, whose single `document_labels.in(<all ids>)` request produces an | ||
| // over-long PostgREST URL that fails on large corpora. Corpus search runs | ||
| // unscoped (like Documents); users opt into label filters explicitly. | ||
| const requestId = ++searchRequestSeqRef.current; |
There was a problem hiding this comment.
Clear loading on setup-not-ready early returns
Because this sequence is incremented before the setup-readiness gate, a submit that reaches the later !canRunSearch return while another answer/document request is still loading invalidates the older request; its finally will skip cleanup, and the setup-not-ready branch only sets error before returning. The local-mode returns now clear loading, but this remaining branch can still leave the dashboard spinner/progress stuck after readiness/auth/local API state flips (or an Enter submit bypasses the disabled button), so clear loading/progress before returning there as well.
Useful? React with 👍 / 👎.
| -- app role. With only 60 max_connections on this compute tier, a stuck idle | ||
| -- transaction can pin a slot indefinitely. 30s is well above normal | ||
| -- request/RPC duration for this app. | ||
| alter role authenticator set idle_in_transaction_session_timeout = '30s'; |
There was a problem hiding this comment.
Mirror the role timeout in schema bootstrap
This only protects databases that replay this migration. The repo's setup path bootstraps new Supabase projects by running supabase/schema.sql, and that file has no alter role authenticator ... entry, so fresh/local databases keep the default unbounded idle-in-transaction timeout even though migrated live databases get the 30s connection-slot guard. Add the role setting to the schema bootstrap or another setup-applied SQL file so new environments match the migrated role configuration.
Useful? React with 👍 / 👎.
| type="button" | ||
| onClick={() => onSelect(app.id)} | ||
| data-testid={`mobile-application-row-${app.id}`} | ||
| {...{ href: app.href }} |
There was a problem hiding this comment.
Turn mobile tool rows into real links
In the mobile Tools hub (/?mode=tools below lg), this adds an href prop to a <button>, but browsers ignore href on buttons; the click still runs selectApplication, which opens the selected-tool sheet for max-width 1023px instead of navigating to app.href. The updated direct-launch flow can therefore falsely pass attribute-only tests while mobile users still get the old extra sheet step; render a Link/anchor or navigate in the click handler.
Useful? React with 👍 / 👎.
Tools-page area captions stay verb-form (Assess/Treat/Coordinate) to match the workflow-board lanes, but "personal" rendered as "Resume" — the same word as the Favourites card's own action button, so the card showed "Resume" twice. Use the noun "Saved" for that one caption. Design-review follow-up to #215. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* docs: plan PDF and photo viewer redesign programme Capture a phased plan for DocumentViewer/PDF canvas/lightbox work: Phase 0 gesture+a11y debt (#214/#219/#215), shell extraction, unified DocumentFrame chrome, then function and optimisation — with hard chrome/privacy/pixel-fidelity constraints and verification ladders. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * ci: retrigger after Actions queue timeout Prior CI run cancelled/timed out while queued during the GitHub Actions major outage. Empty commit to re-fire checks on current tip. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
* fix(viewer): Phase 0 gesture INP, preview a11y, image decode Make PDF wheel listeners passive by default and attach non-passive only for unmodified wheel-zoom or active Ctrl/⌘ pinch (#214). Announce canvas/non-PDF preview failures with role=alert and LiveAnnouncer (#219). Add lightbox decoding=async and SignedImage priority for above-fold loads (partial #215). Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * chore: format Phase 0 viewer fixes and close#214/#219 Archive gesture INP and preview-announce ledger rows; note partial #215 progress for lightbox decode and SignedImage priority. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * issues: drop #214/#219 from recommended queue after archive Close the order gap so the recommended execution queue no longer points at resolved viewer gesture/a11y work. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * test: fix SignedImage priority IntersectionObserver mock types Avoid assigning read-only observer fields in the jsdom mock so typecheck stays green under the Phase 0 priority coverage. Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * fix(ui-smoke): scope document-frame asserts to the visible owner Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * fix(viewer): single preview-failure announce path; complete issues queue Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> * fix(viewer): align gesture tests with main non-passive #214 Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Archived #303: probed the real CLI rather than reading it — ledger:append now accepts a --scope value beginning with a double dash. (The probe row it wrote was removed immediately and the guard re-run clean.) #302 re-measured and WORSE, which strengthens it: the legacyShadowAliases ceiling is still pinned at 220 while the gate measures 193 — 27 units of unguarded slack, up from 3 when the row was written. Paying #262's debt down bought headroom instead of tightening the gate, which is exactly the row's thesis. #215 re-scoped: one of its three items is done (image-lightbox has decoding=async) and the row's path was misleading — the file is under clinical-dashboard/, so a root-level search reads as 'already fixed'. Twenty stamped VERIFIED CORRECT with the measurement that settled each. Coverage: 58 of 119 open rows now carry sweep evidence, up from 34. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017paT42ZVMf8jaLtkjFxdy5
…merged #215, #210, and #293 were queued as `done` in this same PR, each citing a PR (#1949, #1953, #1962) that turned out still to be open, not merged — verified by checking whether each PR's actual file change is present on origin/main (none are). Reconciling the original `done` requests would have closed these rows while their fixes exist only on unmerged branches, one of which (#1949) currently has failing required CI. Converts all three to `update` requests documenting the correction and the real current state, so reconciling this PR now cannot close a row before its fix has actually landed. Leaves #98, #189, and #194 as `done` unchanged — those cite PR #1950 and PR #1947, both confirmed merged into main.
Summary
Verification
npm run typecheckpassed.npm run lintpassed with existingClinicalDashboard.tsxunused-symbol warnings only.node scripts/run-vitest.mjs run tests/app-modes.test.ts tests/openai-cache.test.ts tests/document-enrichment.test.ts tests/model-index-extraction.test.ts --reporter=dotpassed.node scripts/run-playwright.mjs tests/ui-tools-task-directory.spec.ts --project=chromiumpassed.npm run verify:cheapreached tests but hit atests/pdf-extractor.test.tstimeout under the full suite; rerunning that file directly passed.npm run verify:uidid not complete cleanly in this workspace; targeted task-directory Chromium coverage passed.