Skip to content

fix(viewport): implement mobile keyboard and touch target audit fixes#1140

Merged
cursor[bot] merged 37 commits into
mainfrom
implement-audit-viewport-fixes
Jul 25, 2026
Merged

fix(viewport): implement mobile keyboard and touch target audit fixes#1140
cursor[bot] merged 37 commits into
mainfrom
implement-audit-viewport-fixes

Conversation

@BigSimmo

@BigSimmo BigSimmo commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fix cross-mode search performance findings: prescribing catalogue debounce/abort/fields=index, differentials abort/debounce, universal documents typeahead soft-timeout (750ms), shared (search-app) shell to avoid composer remount, and Answer rate-limit in-memory fallback outside production.
  • Fix Bugbot regressions: shared-shell pathname navigation (/services/dsm) syncs searchMode during render (no stale-mode paint) even when the query string is unchanged; extracted ClinicalDashboard lazy imports to stay under the maintainability budget.

RAG impact: no retrieval behaviour change — typeahead documents domain timeout and shell URL sync only; ranking formulas and full /api/search retrieval path unchanged.

Verification

  • npm run verify:pr-local — focused Vitest on touched sources (362) plus api-rate-limit / search-shell / universal / route / site-map suites green; docs:check-index OK
  • UI verification not run: full verify:ui not required for this pass; mode-home smoke via npm run ensure returned HTTP 200 for /, /services, /dsm, /documents/search, /therapy-compass, /?mode=prescribing, and /api/answer/stream returned 200 after the rate-limit fallback fix
  • Verification not run: eval:retrieval:latency / soak / live OpenAI canary — approval-gated provider work; not needed for timeout-only typeahead change

Risk and rollout

  • Risk: medium — shared layout remount change and rate-limit fallback behaviour in non-production; production Answer/upload still fail closed when the durable limiter is unavailable
  • Rollback: revert this PR; mode routes return to per-segment GlobalSearchShell layouts and prior timeout/fallback behaviour
  • Provider or production effects: None

Clinical Governance Preflight

  • Source-backed claims still require linked source verification before clinical use
  • No patient-identifiable document workflow was introduced or expanded without explicit governance approval
  • Supabase target remains [REDACTED] ([REDACTED])
  • Service-role keys and private document access remain server-only
  • Demo/synthetic content remains clearly separated from real clinical sources
  • Source metadata, review status, and outdated/unknown-source behavior remain conservative
  • Deployment classification/TGA SaMD impact was checked when clinical decision-support behavior changed

Notes

  • Prescribing list rows keep the full catalogue payload so Safety/Monitoring filters and patient alerts still see section-derived signals; keystroke storms are controlled by debounce + abort. fields=index remains for identity-only consumers (cross-mode links).
  • Live hybrid RPC cold tails remain a separate approval-gated follow-up.

@supabase

supabase Bot commented Jul 24, 2026

Copy link
Copy Markdown

This pull request has been ignored for the connected project sjrfecxgysukkwxsowpy because there are no changes detected in supabase directory. You can change this behaviour in Project Integrations Settings ↗︎.


Preview Branches by Supabase.
Learn more about Supabase Branching ↗︎.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Adds mobile keyboard viewport tracking and app-wide context wiring, keyboard-aware mobile composer layout, updated search focus and touch-dismissal behavior, shared focus-shadow styling, and review ledger records.

Changes

Mobile keyboard and composer behavior

Layer / File(s) Summary
Keyboard viewport integration
src/components/use-mobile-keyboard.tsx, src/app/layout.tsx, tests/mobile-keyboard-viewport.test.ts
Resolves keyboard state from viewport measurements and editable focus, publishes state through the provider, updates --keyboard-height, tests baseline handling, and wires the provider into the root layout.
Keyboard-aware composer layout
src/app/globals.css, src/components/clinical-dashboard/mobile-composer-reserve.ts, src/components/DocumentViewer.tsx, src/components/ui-primitives.tsx, tests/*
Adds keyboard-height and focus-shadow tokens, applies keyboard-aware dock positioning, padding, and reserve calculations, and updates related CSS and layout assertions.
Search composer interactions
src/components/clinical-dashboard/master-search-header.tsx, tests/ui-tools.spec.ts
Adds resolved focus scrolling, downward-swipe dismissal outside scrollable containers, minimum clear-button sizing, and support for identity-matrix dock transforms.
Review ledger maintenance
docs/branch-review-ledger.md
Records review status, sweep, re-sync, merge, and verification entries for PR #1140.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant MasterSearchHeader
  participant MobileKeyboardProvider
  participant visualViewport
  participant ComposerDock
  User->>MasterSearchHeader: focus search input
  MasterSearchHeader->>MasterSearchHeader: resolve scroll behavior
  MasterSearchHeader->>User: scroll input into view
  visualViewport->>MobileKeyboardProvider: resize or focus event
  MobileKeyboardProvider->>MobileKeyboardProvider: resolve keyboard height
  MobileKeyboardProvider->>ComposerDock: set --keyboard-height
  ComposerDock->>User: reposition dock and reserves
  User->>MasterSearchHeader: downward swipe
  MasterSearchHeader->>User: blur focused element
Loading

Possibly related PRs

Suggested labels: codex

Suggested reviewers: claude

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title is concise and accurately describes the main viewport/mobile keyboard fixes in the change set.
Description check ✅ Passed The description follows the template with Summary, Verification, Risk and rollout, Clinical Governance Preflight, and Notes filled in.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch implement-audit-viewport-fixes

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1f0aed90d5

ℹ️ 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".

Comment thread package.json Outdated
Comment thread src/components/clinical-dashboard/master-search-header.tsx Outdated
@BigSimmo

Copy link
Copy Markdown
Owner Author

@codex resolve actionable Codex review findings for this pull request and current head using the repository instructions. This is the pull request's single automatic repair pass: do not perform a fresh review, create new standalone findings, or request another review. Work only the existing unresolved Codex threads on the current head. Always fix P0 and P1 findings. For P2 and lower findings, fix only clear, scoped, low-risk issues; otherwise disposition them with a concise reason. After fixing or dispositioning a thread, reply in that thread with as the first line, followed by a concise summary; that marker authorizes the workflow to close that exact thread. If human input or new authorization is required, do not use the marker and leave the thread open with the blocker. Finish only after every actionable thread is fixed or dispositioned and closed, or explicitly left open for a human decision. Do not update the branch from main, address unrelated reviews, broaden scope, or create more than one scoped fix commit. Do not use external APIs, paid services, credentials, dependency changes, or broad refactors unless explicitly authorized. Add targeted tests where behavior changes and run the narrowest relevant validation.

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

CI triage

CI failed on this PR. Automated classification of the 2 failed job(s):

  • Production UImain-side: the same job also failed on the latest completed main CI run.
  • PR requiredmain-side: the same job also failed on the latest completed main CI run.

Compared with main CI run #5269 (failure).

Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1f0aed90d5

ℹ️ 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".

Comment thread package.json Outdated
Comment thread src/components/clinical-dashboard/master-search-header.tsx
cursoragent and others added 4 commits July 24, 2026 06:11
…ort-fixes

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Route search-input focus scrolling through resolveScrollBehavior so
prefers-reduced-motion is respected. Drop the npx rimraf typecheck wipe
that fetched a remote package and deleted .next/types without regenerating
them. Format use-mobile-keyboard.tsx for CI prettier.
Addresses Codex review on PR #1140.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
@BigSimmo
BigSimmo enabled auto-merge July 24, 2026 11:12
@BigSimmo

Copy link
Copy Markdown
Owner Author

@cursoragent fix merge conflict

@cursor

cursor Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Merge conflict on #1140 is resolved.

Merged origin/main into implement-audit-viewport-fixes (clean auto-merge, no manual conflict edits) and pushed 999835e2.

PR status: MERGEABLE (was CONFLICTING). Still BLOCKED until required checks/reviews finish on the new head.

Open in Web Open in Cursor 

…ort-fixes

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/branch-review-ledger.md`:
- Around line 733-734: Move the two PR `#1140` rows in the review-records table so
they appear before the standalone “work search chrome behaviour review” section
begins. Preserve the existing row content and table formatting, ensuring both
entries render as table rows.

In `@src/components/use-mobile-keyboard.tsx`:
- Around line 27-43: Update the resize handling around maxViewportHeight and
handleResize to reset the viewport baseline when orientation or the mobile
breakpoint changes, before calculating diff. Track the previous viewport
dimensions or breakpoint state, assign the current viewport.height as the new
baseline on transition, and ensure the orientation change cannot falsely report
the keyboard as open.
🪄 Autofix (Beta)

✅ Autofix completed


ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a0b8068f-7d0d-456a-a85a-badf06ccc285

📥 Commits

Reviewing files that changed from the base of the PR and between f01dcb6 and 999835e.

📒 Files selected for processing (6)
  • docs/branch-review-ledger.md
  • src/app/globals.css
  • src/app/layout.tsx
  • src/components/clinical-dashboard/master-search-header.tsx
  • src/components/ui-primitives.tsx
  • src/components/use-mobile-keyboard.tsx

Comment thread docs/branch-review-ledger.md
Comment thread src/components/use-mobile-keyboard.tsx Outdated
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

❌ Failed to clone repository into sandbox. Please try again.

@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Fixes Applied Successfully

Fixed 2 file(s) based on 2 unresolved review comments.

Files modified:

  • docs/branch-review-ledger.md
  • src/components/use-mobile-keyboard.tsx

Commit: 47acd6a1778c1a02d588b6bedc53326a49f94981

The changes have been pushed to the implement-audit-viewport-fixes branch.

Time taken: 4m 56s

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c41160491e

ℹ️ 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".

Comment thread src/components/use-mobile-keyboard.tsx Outdated
coderabbitai Bot and others added 3 commits July 24, 2026 11:42
Fixed 2 file(s) based on 2 unresolved review comments.

Co-authored-by: CodeRabbit <noreply@coderabbit.ai>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fca3b671e1

ℹ️ 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".

Comment thread src/components/use-mobile-keyboard.tsx Outdated
@cursor
cursor Bot disabled auto-merge July 24, 2026 19:53
@cursor
cursor Bot enabled auto-merge (squash) July 24, 2026 19:53
@cursor
cursor Bot disabled auto-merge July 24, 2026 19:56
@cursor
cursor Bot enabled auto-merge (squash) July 24, 2026 19:56
The viewport PR intentionally adds --keyboard-height to phone composer
reserves; update the source pin so Unit coverage matches.
@cursor
cursor Bot disabled auto-merge July 24, 2026 20:04
@cursor
cursor Bot enabled auto-merge (squash) July 24, 2026 20:04
Headless CI was treating viewport shrink as an open keyboard and
inflating phone dock reserves. Only apply --keyboard-height when an
input/textarea/select/contenteditable is focused, and accept identity
transforms as the resting scroll-hide dock state.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/branch-review-ledger.md`:
- Around line 762-763: Update the affected branch-review ledger records,
including the entries corresponding to the additional referenced ranges, so they
do not use the future date 2026-07-25 while the review date is 2026-07-24.
Replace each date with the actual execution date, preserving the append-only
historical ordering and all other record details.
- Line 31: Update the table entry around the audit remediation record to replace
the raw pipe separators in the `node|npm|npx|tsx|vitest|playwright|bun` code
span with comma- or slash-separated wrapper names, preserving the listed names
while keeping the Markdown table valid.
🪄 Autofix (Beta)

❌ Autofix failed (check again to retry)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ee2dc61c-1fc9-4041-b65d-0caf7e074b7f

📥 Commits

Reviewing files that changed from the base of the PR and between 999835e and 20eac47.

📒 Files selected for processing (10)
  • docs/branch-review-ledger.md
  • src/app/globals.css
  • src/app/layout.tsx
  • src/components/clinical-dashboard/mobile-composer-reserve.ts
  • src/components/use-mobile-keyboard.tsx
  • tests/clinical-dashboard-merge-artifacts.test.ts
  • tests/mobile-composer-reserve.test.ts
  • tests/mobile-keyboard-viewport.test.ts
  • tests/ui-overlay-css-contract.test.ts
  • tests/ui-tools.spec.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/app/layout.tsx

Comment thread docs/branch-review-ledger.md
Comment thread docs/branch-review-ledger.md
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Cannot run autofix: This PR has merge conflicts.

Please resolve the conflicts with the base branch and try again.

Alternatively, use @coderabbitai resolve merge conflict to automatically resolve the conflicts.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3084d0465a

ℹ️ 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".

Comment thread src/components/use-mobile-keyboard.tsx Outdated
@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

Autofix skipped. No unresolved CodeRabbit review comments with fix instructions found.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 706188afa8

ℹ️ 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".

Comment thread src/app/globals.css
Defer baseline rebase while an overlay keyboard is open, restore
per-width unobstructed baselines when available, and cover the
rotation-with-keyboard-open path in unit tests.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
tests/mobile-keyboard-viewport.test.ts (1)

146-167: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Add the sub-threshold counterpart for deferredKeyboardCloseGrowth.

This case clears the pending rebase at 400 vs a 398 trigger point — only 2px past the boundary, and nothing asserts the guard holds below it. A companion case would pin both sides.

💚 Suggested additional case
+  it("keeps the deferred rebase pending while the keyboard is still up", () => {
+    expect(
+      resolveMobileKeyboardBaselines({
+        widthChanged: false,
+        hasEditableFocus: true,
+        keyboardWasOpen: true,
+        pendingOrientationRebase: true,
+        currentVisualHeight: 360,
+        currentLayoutHeight: 800,
+        previousVisualHeight: 350,
+        previousLayoutHeight: 800,
+        maxVisualHeight: 650,
+        maxLayoutHeight: 800,
+        deferredOccludedVisualHeight: 350,
+      }),
+    ).toEqual({
+      maxVisualHeight: 650,
+      maxLayoutHeight: 800,
+      pendingOrientationRebase: true,
+      deferredOccludedVisualHeight: 350,
+    });
+  });
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/mobile-keyboard-viewport.test.ts` around lines 146 - 167, The
orientation rebase tests lack coverage for growth below the
deferredKeyboardCloseGrowth threshold. Add a companion test alongside the
existing “finishes a deferred orientation rebase once the keyboard closes” case
using a current height just below the 398px trigger, and assert that the pending
rebase remains deferred with baseline values unchanged as appropriate.
src/components/use-mobile-keyboard.tsx (1)

162-162: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

baselinesByWidth is never pruned.

Every distinct rounded sub-1024px width (window dragging, pinch-zoom width changes) adds a permanent entry for the lifetime of the effect. Harmless in practice, but a small cap or eviction keeps it bounded.

♻️ Optional: bound the cache
-      if (!next.isKeyboardOpen && !pendingOrientationRebase) {
+      if (!next.isKeyboardOpen && !pendingOrientationRebase) {
+        if (baselinesByWidth.size > 8 && !baselinesByWidth.has(widthKey)) {
+          const oldest = baselinesByWidth.keys().next().value;
+          if (oldest !== undefined) baselinesByWidth.delete(oldest);
+        }
         baselinesByWidth.set(widthKey, {

Also applies to: 219-226

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/components/use-mobile-keyboard.tsx` at line 162, Bound the
baselinesByWidth cache in the mobile keyboard effect so it cannot grow
indefinitely as distinct widths are observed. Add a small eviction or pruning
policy when entries are inserted, while preserving the existing baseline lookup
and update behavior in the related width-handling logic.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@src/components/use-mobile-keyboard.tsx`:
- Line 162: Bound the baselinesByWidth cache in the mobile keyboard effect so it
cannot grow indefinitely as distinct widths are observed. Add a small eviction
or pruning policy when entries are inserted, while preserving the existing
baseline lookup and update behavior in the related width-handling logic.

In `@tests/mobile-keyboard-viewport.test.ts`:
- Around line 146-167: The orientation rebase tests lack coverage for growth
below the deferredKeyboardCloseGrowth threshold. Add a companion test alongside
the existing “finishes a deferred orientation rebase once the keyboard closes”
case using a current height just below the 398px trigger, and assert that the
pending rebase remains deferred with baseline values unchanged as appropriate.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a12d83ed-3dba-4718-b011-d2dc55340777

📥 Commits

Reviewing files that changed from the base of the PR and between 20eac47 and 80988a7.

📒 Files selected for processing (4)
  • docs/branch-review-ledger.md
  • src/components/use-mobile-keyboard.tsx
  • tests/mobile-keyboard-viewport.test.ts
  • tests/ui-tools.spec.ts
🚧 Files skipped from review as they are similar to previous changes (2)
  • tests/ui-tools.spec.ts
  • docs/branch-review-ledger.md

Apply --keyboard-height transform and matching content reserve so page-owned DocumentViewer composers stay visible when visual keyboards open.

Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

github-actions Bot and others added 2 commits July 25, 2026 03:20
Prevent Playwright breakpoint churn from treating desktop visual height as keyboard occlusion, and settle the medication stress page-geometry assertion after the final phone resize.

Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

Retry opener focus when sheet teardown races the composer, and poll the smoke assertions so CI does not flake on the first animation frame.

Co-authored-by: Cursor <cursoragent@cursor.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@cursor
cursor Bot merged commit f4ae0a7 into main Jul 25, 2026
18 checks passed
@cursor
cursor Bot deleted the implement-audit-viewport-fixes branch July 25, 2026 03:53
BigSimmo added a commit that referenced this pull request Jul 25, 2026
Skip the default phone max-h utility when contentClassName already sets max-h, and record the PR #1140 babysit ledger row.

Co-authored-by: Cursor <cursoragent@cursor.com>
BigSimmo added a commit that referenced this pull request Jul 25, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
cursor Bot pushed a commit that referenced this pull request Jul 25, 2026
…1141)

* fix(ui): implement orientation adaptive design audit recommendations

* fix: remove duplicate command dropdown height cap

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>

* chore: note review reply permission denial

GraphQL review-thread replies returned 403; resolved the fixed duplicate-height threads directly after validation.

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>

* docs: record PR babysit sweep

Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>

* docs: record Run PR behind-main sweep for #1141

* docs: ledger re-sync sweep for PR #1141

* fix(ui): collapse dock child safe-area padding

* docs: record PR 1141 maintenance

* fix(ui): avoid Sheet max-height racing caller caps

Skip the default phone max-h utility when contentClassName already sets max-h, and record the PR #1140 babysit ledger row.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(ui): poll guide dialog focus trap across viewport sizes

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): do not steal focus from a newly opened sheet on restore retry

The Sources opener retry must not reclaim focus when another dialog already became active (mobile Guide opened from the Clinical Guide menu).

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): retry Sheet autofocus when open races a closing sibling

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(ui): harden Sources opener focus restore assertion after Escape

Co-authored-by: Cursor <cursoragent@cursor.com>

* docs(review): record babysit merges for #1140 #1171 #1180 #1158

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ui): stabilize Sources sheet autofocus on open

Default UtilityDrawer sheet mode for breakpoint=all and retry sheet autofocus so the Find-a-document field keeps focus after drawer mount races.

* ci: retrigger PR policy check on tip

* fix(ui): stop stacked Sheet focus steal; assert Escape restore honestly

Gate Sheet autofocus retries on isTopmostSheet, and remove test-side focus repair so production restore failures stay visible.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: BigSimmo <BigSimmo@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.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.

2 participants