Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
6beed38
Implement mobile touch ergonomics audit recommendations
BigSimmo Jul 24, 2026
1136b55
Merge branch 'main' into mobile-ergonomics-fixes
BigSimmo Jul 24, 2026
878c8c1
Merge remote-tracking branch 'origin/main' into HEAD
cursoragent Jul 24, 2026
26ca905
style: format mobile ergonomics changes
cursoragent Jul 24, 2026
35e9684
Fix: Resolve CSS mask calc syntax and restore Tailwind transform comp…
BigSimmo Jul 24, 2026
74fa90b
docs: Update branch-review-ledger.md for mobile-ergonomics-fixes review
BigSimmo Jul 24, 2026
ffc98d9
Merge remote-tracking branch 'origin/main' into HEAD
cursoragent Jul 24, 2026
f57274a
Merge remote-tracking branch 'origin/main' into HEAD
BigSimmo Jul 24, 2026
5b9b0f2
docs: ledger Run PR conflict sweep for #1156
BigSimmo Jul 24, 2026
5cff1cd
Merge remote-tracking branch 'origin/main' into mobile-ergonomics-fixes
BigSimmo Jul 24, 2026
e29f19d
docs: ledger re-sync sweep for PR #1156
BigSimmo Jul 24, 2026
5344d59
Merge branch 'main' into mobile-ergonomics-fixes
cursoragent Jul 24, 2026
2178a6e
Merge branch 'main' into mobile-ergonomics-fixes
cursoragent Jul 24, 2026
ce97412
Merge branch 'main' into mobile-ergonomics-fixes
cursoragent Jul 24, 2026
8f8311f
Merge remote-tracking branch 'origin/main' into mobile-ergonomics-fixes
cursoragent Jul 24, 2026
94f3616
Merge remote-tracking branch 'origin/main' into mobile-ergonomics-fixes
cursoragent Jul 24, 2026
5f7056b
Merge cursor/pr-queue-hygiene-72ec for postcss audit + PR branch sync
cursoragent Jul 24, 2026
80d8dde
Merge branch 'main' into mobile-ergonomics-fixes
github-actions[bot] Jul 24, 2026
78853ad
Merge branch 'main' into mobile-ergonomics-fixes
github-actions[bot] Jul 24, 2026
dff340e
merge origin/main into mobile-ergonomics-fixes
BigSimmo Jul 25, 2026
181fcb6
Merge branch 'main' into mobile-ergonomics-fixes
github-actions[bot] Jul 25, 2026
dc7d608
Merge branch 'main' into mobile-ergonomics-fixes
github-actions[bot] Jul 25, 2026
9a9d659
merge origin/main into mobile-ergonomics-fixes
BigSimmo Jul 25, 2026
e59a035
merge origin/main into mobile-ergonomics-fixes
BigSimmo Jul 25, 2026
3b31688
merge origin/main into mobile-ergonomics-fixes
BigSimmo Jul 25, 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
11 changes: 11 additions & 0 deletions docs/branch-review-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ This file is append-only. Never rewrite or delete an existing review record; app

| Date | Branch or ref | Reviewed HEAD | Scope | Outcome | Checks |
| ---------- | -------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2026-07-24 | `mobile-ergonomics-fixes` | `35e96844fc8bd94e7737229cb01174d1a0f9689f` | PR #1156 mobile touch ergonomics review | APPROVE. Found and fixed two findings: a P1 invalid CSS calc syntax breaking horizontal scroll masks (`calc(100%-1.5rem)` -> `calc(100%_-_1.5rem)`), and a P2 transform collision in `globals.css` where global `scale(0.97)` active states overrode Tailwind's composite variables (reverted to `translateY(1px)`). The `modal-landscape-container` safe-area padding correctly uses `max(1rem, var(--safe-area-left))` so it is safe on portrait. No further P0-P2 findings. | Local static inspection and visual review of DOM tree. Heavy tests were locked out by concurrent verification in `remediate-audit-system-issues`. Hosted CI tests will execute automatically on PR push. No provider actions were run. |
| 2026-07-24 | `main` / `037b4808100946f96aee28b8ff51939ae2986851` | `037b4808100946f96aee28b8ff51939ae2986851` | frontend-ui review: clinical-dashboard sidebar streamlining, global-search-shell, mobile-composer-reserve, globals.css forced-colors/reduced-motion, evidence-panels aria, answer-result-surface, visual-evidence-tabs DOM tests | APPROVE with notes (P2 closed on `cursor/frontend-ui-review-docs-e8d9`). No P0/P1. One P2 was docs-only: `docs/codebase-index.md` mode-home list omitted `/therapy-compass`, `/dsm`, `/specifiers`, and `/factsheets` while `isStandaloneModeHome` already handles them — fixed in the follow-up docs PR. What holds: sidebar streamlining (`primarySidebarToolIds` Set) is correct; global reduced-motion CSS covers `animate-spin`; forced-colors token remap is comprehensive; mobile-composer-reserve and overlay CSS contracts intact; tab/tabpanel ARIA associations pass in jsdom; icon-only collapsed rail links carry `aria-label`+`title`; lucide-react defaults SVG `aria-hidden="true"`. | Full unit suite 3261/3264 passed (3 pre-existing skips); typecheck clean; lint clean; static read of globals.css forced-colors/reduced-motion, overlay contracts, aria patterns, and mobile-composer-reserve. Docs mode-home list aligned to `isStandaloneModeHome`. No live Supabase/OpenAI/Railway mutation. |
| 2026-07-24 | PR #1134 / `cursor/search-performance-review-4ee9` | `2a8e045f4a7179ea6fc9b81b1b2173e4c932617e` | Babysit closeout / merge readiness | MERGE-READY for product scope once exact-head required checks finish after final main sync. Fixed: Bugbot pathname searchMode (Compiler-safe previous-state sync); docs index; PR_POLICY_BODY/governance; maintainability extract; prescribing Safety filters (no fields=index); Sheet teardown document guard. Unresolved threads: none. Residual: human approving review; title still stale (gh/ManagePullRequest cannot edit); main may move again. | Hosted on prior tip 973d5d88: PR policy/Static/Unit/Build/Production UI/PR required all SUCCESS. Final sync pushed; awaiting exact-head recheck. No OpenAI/live Supabase writes. |
| 2026-07-24 | `cursor/search-performance-review-4ee9` / PR #1134 | 76d47871c44c607f942a683351378230173dcbe3 | Search performance findings remediation (prescribing, differentials, typeahead docs timeout, shared shell, answer rate-limit fallback) | FIXED. P1 prescribing catalogue now debounces (250 ms), aborts in-flight fetches, and uses `fields=index`. Differentials catalogue + evidence search abort/debounce. Universal documents typeahead timeout 6 s→750 ms (RAG impact: no retrieval behaviour change — typeahead timeout only). Shared `(search-app)` layout keeps GlobalSearchShell mounted across mode homes. Answer rate-limit fails closed only in production; development uses in-memory fallback when durable RPC is unavailable. | Focused Vitest 362 via test:focused; api-rate-limit/search-shell/universal/route/site-map suites green; `npm run ensure` smoke 200 on mode homes; `/api/answer/stream` 200 after fallback. No OpenAI spend beyond local answer stream smoke; no live eval/soak. |
Expand Down Expand Up @@ -727,6 +728,15 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 bugbot) | 8d712183 | Bugbot babysit | Fixed medium: formulation builder/home cleared live query still ranked against lagging deferredQuery. Merged main (#1137 search-chrome). No unresolved review threads. | Focused Vitest deferred registry; typecheck pending in CI. |
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit close) | 2f8509cc | Babysit to merge-ready | Merged main; fixed Bugbot deferred-clear findings; fixed Sheet focus-restore teardown flake that failed Unit coverage; no unresolved review threads. Hosted PR required green. | Hosted CI: Static PR, Unit coverage, Build, Production UI, Advisory UI, PR required PASS. No provider calls. |
| 2026-07-24 | codex/reindex-agent-enrichment-guard (PR #1143) | f82cf9cfa | Run PR sweep: CI fix + threads + drift | Before: PR required green, 1 unresolved reindex/agent-claim serialization thread, branch behind main. After: remote branch already had atomic RPC fix 2bb0470d plus merge-main d2d57d7c; validated pushed head, resolved thread via GraphQL; reply mutation 403 noted in commit f82cf9cf. | node scripts/run-vitest.mjs run --reporter=dot tests/reindex-enrichment-lease.test.ts tests/private-access-routes.test.ts tests/supabase-schema.test.ts tests/drift-detection.test.ts PASS (218/218); npm run check:migration-role PASS; npm run typecheck PASS; npm run check:production-readiness PASS with non-blocking warnings; no live eval gates run. |

## 2026-07-24 — work search chrome behaviour review

- Branch/ref: PR #1137 / `codex/review-search-bar-behavior-and-establish-rules`
- HEAD: 6ee0484cc97b087c0e4f3661a49493f24a3ea9ba
- Scope: Targeted review of search bar/header/footer chrome behaviour after the edge-to-edge phone dock fix, plus durable repo rules for page-adaptive search chrome.
- Outcome: No new P0/P1 search chrome defect found in the static review. Fixed one regression hazard: a stale ClinicalDashboard comment still instructed a 0.75rem hidden dock pad despite the implementation/tests requiring 0rem. Added durable search chrome behaviour rules in AGENTS.md and docs/search-chrome-behaviour.md, with a static guard tying the remembered rules to the hidden-reserve contract.
- Checks: dependency shortcut section count; git diff --check; targeted rg for stale 0.75rem hidden-pad source wording (only negative test assertions remain); targeted Vitest command attempted but blocked by missing node_modules/vitest under Node 20.20.2 in this container. No provider-backed checks run.
| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | f57274a4179a7e5678a5906399ed73da4801f3b3 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed f57274a41. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run |
| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1f0aed90d | mobile keyboard viewport audit fixes | REJECTED. Found two P1 defects. 1) Broken keyboard detection due to `resizes-content` conflict. 2) Aggressive keyboard dismissal breaks scrolling. | `npm run verify:cheap` running. |
| 2026-07-24 | PR #1140 / `implement-audit-viewport-fixes` | 1528f69cda55f46e6eca910671987219ce9cbbaf | mobile keyboard viewport audit fixes | APPROVED. Fixed the two P1 defects (keyboard detection logic, scrollable container touch bubbling). | `npm run verify:cheap` passed. |
| 2026-07-24 | cursor/frontend-ui-review-docs-e8d9 (PR #1146) | 9c373eb1c2308b298a4c3abe970e5db793854ee4 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger/codebase-index auto-merge); pushed 9c373eb1c. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run |
Expand Down Expand Up @@ -754,6 +764,7 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 37cfa5553ccb784ee5e9f47ded1ad69914c053ed | Run PR babysit: CI/threads/drift | Final HEAD after merge origin/main + ledger bookkeeping. 0 unresolved threads; no Bugbot actionable findings; required CI re-running on this SHA. | merge origin/main; no provider-backed checks run. |
| 2026-07-24 | codex/query-ribbon-search-headings (PR #1166) | 9eac2e252bcc5c548aa919b69faeb79b9ff7d2cf | Run PR babysit: CI/threads/drift | Merged origin/main; Codex ledger-SHA P2 dispositioned+resolved (append-only supersede already in 9eac2e252). 0 unresolved threads. | merge origin/main; thread resolve only; no provider-backed checks run. |
| 2026-07-24 | remediate-audit-system-issues (PR #1160) | bdf530fc8c6faaa4491c510396b47872fc39bf25 | Run PR sweep: CI fix + threads + drift | second re-merge after main moved to 2e68888f3 during first push; clean ort merge (ledger + layout.tsx); taskkill /T retained; sitemap prettier retained | merge only; no provider-backed checks run |
| 2026-07-24 | mobile-ergonomics-fixes (PR #1156) | 5cff1cd0cf69539f18307fdeabbe87fc8a0fb13c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
| 2026-07-24 | cursor/information-page-structure-2a5d (PR #1148) | 230770a53f9bfb53ba69abc81d6e8491e021f8a9 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
| 2026-07-24 | codex/audit-remediation-final (PR #1158) | 78fab6be0c43cf5e92361315399d393ee7742f2e | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean (no RAG conflict markers). NOTE: PR still intentionally adds deterministic broad_summary queryClass shortcut in src/lib/rag/rag.ts (+17) — RAG impact behaviour change, not dropped during merge. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
| 2026-07-24 | implement-audit-viewport-fixes (PR #1140) | a541b75c0e49f84125fc7e5d114cd9fc32d1a694 | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
Expand Down
2 changes: 1 addition & 1 deletion src/app/(search-app)/documents/search/loading.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { DocumentSearchPageSkeleton } from "@/components/mode-home-page-skeleton

export default function Loading() {
return (
<div className="flex min-h-[50vh] bg-[color:var(--background)]">
<div className="flex min-h-[50dvh] bg-[color:var(--background)]">
<DocumentSearchPageSkeleton />
</div>
);
Expand Down
8 changes: 7 additions & 1 deletion src/app/globals.css
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,8 @@ a,
summary,
input,
textarea,
select {
select,
.touch-card {
outline: none;
touch-action: manipulation;
-webkit-tap-highlight-color: transparent;
Expand Down Expand Up @@ -596,6 +597,11 @@ summary::-webkit-details-marker {
background: color-mix(in srgb, var(--surface) 72%, transparent);
}

.modal-landscape-container {
padding-left: max(1rem, var(--safe-area-left));
padding-right: max(1rem, var(--safe-area-right));
}

.universal-header-mode-button {
border-color: var(--border);
background: var(--surface);
Expand Down
2 changes: 1 addition & 1 deletion src/components/AccessibleTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -458,7 +458,7 @@ export function AccessibleTable({
portal
testId="table-fullscreen-dialog"
contentClassName="sm:max-w-none"
bodyClassName="p-3 pb-[max(1rem,env(safe-area-inset-bottom))] sm:p-3"
bodyClassName="py-3 pb-[max(1rem,env(safe-area-inset-bottom))] modal-landscape-container sm:p-3"
>
<div>
{lowConfidence ? (
Expand Down
2 changes: 1 addition & 1 deletion src/components/DocumentTagCloud.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ function DocumentTagChip({
}) {
const Icon = groupIcon[tag.group];
const tagClassName = cn(
"inline-flex max-w-full items-center gap-1 rounded-md border font-semibold shadow-[var(--shadow-inset)]",
"relative inline-flex max-w-full items-center gap-1 rounded-md border font-semibold shadow-[var(--shadow-inset)] before:absolute before:-inset-y-2 before:-inset-x-1 before:content-['']",
compact ? "min-h-6 px-2 text-2xs" : "min-h-7 px-2 text-2xs",
groupToneClass(tag.group),
tag.queryMatched && "ring-2 ring-[color:var(--focus)]/25",
Expand Down
8 changes: 4 additions & 4 deletions src/components/calculator-mockups/bedside-sheet-mockup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ function SheetSection({
)}
{derived.flags.length > 0 ? (
<span
className="grid size-8 shrink-0 place-items-center rounded-md border border-[color:var(--danger-border)] bg-[color:var(--danger-soft)] text-[color:var(--danger)]"
className="relative grid size-8 shrink-0 place-items-center rounded-md border border-[color:var(--danger-border)] bg-[color:var(--danger-soft)] text-[color:var(--danger)] before:absolute before:-inset-2 before:content-['']"
title="Safety flag triggered"
>
<AlertTriangle className="size-icon-sm" aria-hidden="true" />
</span>
) : null}
<span
className={cn(
"grid size-8 shrink-0 place-items-center rounded-md border border-[color:var(--border)] text-[color:var(--text-soft)] transition",
"relative grid size-8 shrink-0 place-items-center rounded-md border border-[color:var(--border)] text-[color:var(--text-soft)] transition before:absolute before:-inset-2 before:content-['']",
open && "rotate-180",
)}
>
Expand Down Expand Up @@ -170,7 +170,7 @@ export function CalculatorsBedsideSheetMockup() {
</div>
<nav
aria-label="Jump to calculator"
className="flex gap-1.5 overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"
className="flex gap-1.5 overflow-x-auto overscroll-x-contain pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [mask-image:linear-gradient(to_right,black_calc(100%_-_1.5rem),transparent)]"
>
{calculators.map((calc) => {
const derived = deriveCalculator(calc, session[calc.id] ?? {});
Expand Down Expand Up @@ -234,7 +234,7 @@ export function CalculatorsBedsideSheetMockup() {
</button>
</div>
{startedCalcs.length ? (
<div className="flex gap-1.5 overflow-x-auto pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden">
<div className="flex gap-1.5 overflow-x-auto overscroll-x-contain pb-1 [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [mask-image:linear-gradient(to_right,black_calc(100%_-_1.5rem),transparent)]">
{startedCalcs.map(({ calc, derived }) => (
<a
key={calc.id}
Expand Down
2 changes: 1 addition & 1 deletion src/components/calculator-mockups/calculator-ui.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ export function CheckboxRow({
<span
aria-hidden="true"
className={cn(
"mt-0.5 grid size-5 shrink-0 place-items-center rounded-md border transition",
"relative mt-0.5 grid size-5 shrink-0 place-items-center rounded-md border transition before:absolute before:-inset-2 before:content-['']",
checked
? "border-[color:var(--clinical-accent)] bg-[color:var(--clinical-accent)] text-[color:var(--clinical-accent-contrast)]"
: "border-[color:var(--border-strong)] bg-[color:var(--surface)]",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ function CalculatorCard({
</span>
<span
className={cn(
"grid size-8 shrink-0 place-items-center rounded-md border transition",
"relative grid size-8 shrink-0 place-items-center rounded-md border transition before:absolute before:-inset-2 before:content-['']",
open
? "rotate-180 border-[color:var(--clinical-accent-border)] bg-[color:var(--clinical-accent-soft)] text-[color:var(--clinical-accent)]"
: "border-[color:var(--border)] bg-[color:var(--surface)] text-[color:var(--text-soft)]",
Expand Down
Loading
Loading