Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
02ce93e
fix(ui): implement orientation adaptive design audit recommendations
BigSimmo Jul 24, 2026
bbc16cc
Merge remote-tracking branch 'origin/main' into HEAD
cursoragent Jul 24, 2026
c2494b3
fix: remove duplicate command dropdown height cap
cursoragent Jul 24, 2026
864f738
chore: note review reply permission denial
cursoragent Jul 24, 2026
4bd3630
docs: record PR babysit sweep
cursoragent Jul 24, 2026
f33a824
Merge remote-tracking branch 'origin/main' into HEAD
cursoragent Jul 24, 2026
a5de573
Merge remote-tracking branch 'origin/main' into HEAD
cursoragent Jul 24, 2026
5aec89d
Merge remote-tracking branch 'origin/main' into implement-audit-recom…
cursoragent Jul 24, 2026
b5f8959
Merge remote-tracking branch 'origin/main' into HEAD
BigSimmo Jul 24, 2026
70814a8
docs: record Run PR behind-main sweep for #1141
BigSimmo Jul 24, 2026
7cd9d42
Merge remote-tracking branch 'origin/main' into implement-audit-recom…
BigSimmo Jul 24, 2026
04d07f2
docs: ledger re-sync sweep for PR #1141
BigSimmo Jul 24, 2026
a1cf29a
Merge branch 'main' into implement-audit-recommendations-fix
cursoragent Jul 24, 2026
0aaf441
fix(ui): collapse dock child safe-area padding
BigSimmo Jul 24, 2026
d0b988a
docs: record PR 1141 maintenance
BigSimmo Jul 24, 2026
61d9ba1
Merge branch 'main' into implement-audit-recommendations-fix
cursoragent Jul 24, 2026
8c179aa
Merge branch 'main' into implement-audit-recommendations-fix
cursoragent Jul 24, 2026
a401258
fix: stabilize sheet focus and dom contract
BigSimmo Jul 28, 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
4 changes: 4 additions & 0 deletions docs/branch-review-ledger.md
Original file line number Diff line number Diff line change
Expand Up @@ -724,6 +724,7 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (Option A wave verdict — no code change; #1040 merged as cde6c5c) | canary run 29827012719 (#61, main cde6c5c) vs banked #60 (29800029819) | OPTION A WAVE ADOPTED — FIRST FULLY-GREEN 44-CASE CANARY IN PROGRAM HISTORY (Blocking failures: None). (1) Option A payoff EXCEEDED: citation_failure_rate 0.0227→0; the neuroleptic-side-effect-escalation case flipped from wrong-doc→failed-generation→1-citation-fallback to **strong route, successful gpt-5.6-sol generation, passed in 15.4s with no fallback marker** — the rescued S3 retrieval fixed generation itself, not just the citation count; expected_source_hit 0.6364→0.6591. (2) Golden held exactly as the blast-radius analysis promised: 36/36 PASS, content_recall 1.0, mrr@10 0.8921 BYTE-IDENTICAL to the pre-wave baseline (zero ordering movement — no golden case fires the predicate), irrelevant@10 0.1083→0.0917 (slightly better). (3) Parity payoff PARTIAL: monitoring targeting 1/5→2/5 (olanzapine-lai flipped — previously called a retrieval-depth residual; quetiapine-dose also flipped on the dose side); lithium-range (232ch) + metabolic (73ch, byte-identical answer to #60) did NOT flip despite offline-proven fixes — their live chunk sets evidently contain no admissible schedule sentence even under the widened gate → reclassified as retrieval-depth/live-content residuals joining adhd; below the ≥3/5 target but strictly improved, no regression anywhere. Dose 2/5 vs 2/4: same passing count, applicable set grew (new quality-metformin-renal-dosing miss = eval-set churn, not regression). (4) No-worse EXCEEDED: relevance 0.5333→0.6 (the two-step watch-item slide FULLY REVERSED to the #58 level), targeting_rate 0.6667→0.6957, fail_closed 0.9 held, readability/artifact_leaks 1.0, route ceilings 0, grounded 1.0, unsupported_correct 1.0, numeric 0, p95 22.8s, red_result 3/3. Adoption per the measured-gain rule: primary goal achieved, three case flips, relevance recovered, zero regressions. Residual queue: monitoring retrieval-depth trio (lithium-range/metabolic/adhd), E-3d H2 discards, weekly ANSWER_CASE_LIMIT 8→44 raise now unblocked (gate would be green), comparison-class coverage. Wave spend +~$2-4 → Phase E + Option A total ~$12-20 of ≤$20. | Evidence: run #61 job log read (Threshold Status: None; Answer Metrics; neuroleptic diagnostics row; targeting metric_rates + 6-miss list; golden 36 PASS lines + summary). Revert drill NOT triggered. |
| 2026-07-21 | claude/clinical-kb-pwa-review-asi3wb (PR: I9 weekly coverage raise) | see PR head | ADDENDUM 5 post-green item I9 (plan-authorized "after reds fixed"): weekly scheduled canary ANSWER_CASE_LIMIT default 8→44 — the Sunday 18:00 UTC cron now guards the FULL answer-quality case set instead of the first 8 (both #57 blocking reds historically lived OUTSIDE the first 8, leaving the weekly gate blind to them). Unblocked by run #61 proving the citation gate green on the full 44. Cost: est +$1-2/week (user-authorized in the plan). Contract test pin updated in lockstep (eval-canary-workflow.test.ts). Dispatch shapes unchanged (input override still wins); operational-risk diff, plain-revert rollback. | check:github-actions PASS; check:ci-scope PASS; check:gate-manifest PASS (20/20); eval-canary-workflow contract 4/4; prettier clean; no provider calls |
| 2026-07-21 | claude/database-governance-audit-10b6ed (PR #1051: source-governance audit — safe subset) | cee396730 | Governance-metadata observability + UI display + provenance flow test; no ranking/retrieval/generation surface touched. | IMPLEMENTED + handed off (not a review of prior work). Resolved audit #1 (logger.warn on unrecognized enum values; return value unchanged), #2 (review_due_source added to frontendVisibleWarningCodes → answer-level badge; warning-severity, no refusal impact), #9 (source_metadata retained on safety-finding citations + governance pill in SafetyFindingsListContent), #13 (new tests/provenance-flow.test.ts: DB-normalize→governance→client payload sources+safety citations→render policy). Deferred #4/5/6/8/10 (RAG-protected ranking/selection/LLM-context/cache — need live eval-canary+approval), #11/#5 flag debt (D5/D4), #3 (is_public schema/RLS), #7 (conflict-detection scope), #12 (canary automation). Rebased onto origin/main (was 18 behind; conflict-free — none of the 18 commits touched the 8 files). PR-policy CI green (confirmed no ragRankingPatterns match). | verify:pr-local exit 0 (351 files/3129 tests, production build, client-bundle secret scan, offline RAG fixtures 36/36); typecheck + lint + prettier green. verify:ui NOT run locally: pre-existing globals.css Tailwind/Turbopack dev-compile error (git-clean, unrelated; prod build passed) — CI Production UI job covers it. check:production-readiness deferred (offline env/config validator; PR changes no env/secret/config inputs; secretless worktree). No provider calls. |
| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | 864f738e6 | Run PR sweep: CI fix + threads + drift | Before: PR required green, 2 unresolved duplicate sm:max-h command-surface threads, branch behind main. After: merged origin/main cleanly; removed generic duplicate sm:max-h cap; both threads resolved via GraphQL; reply mutations 403 noted in commit 864f738e. | node scripts/run-vitest.mjs run --reporter=dot tests/search-command-surface.test.ts PASS (8/8); git diff --check PASS; no Supabase/OpenAI/live eval gates run. |
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | 46597a9b | Explicit performance + frontend-ui review of search/interactive surfaces; low-risk client deferral/cache/abort/progressive-reveal pass | Prior document/universal search latency work retained (NDJSON stream, LRU, lazy PDF, content-first detail). New work: differential debounce+abort+LRU; useDeferredValue on catalogue ranking; document results Show more window; RelatedDocumentsPanel memo; universal LRU 100+TTL; deferred registry search extracted from ClinicalDashboard. No RAG/retrieval/ranking edits. No high-confidence P0–P2 defect found in the shipped scope; residual risk = deferred paint lag on large catalogues and progressive reveal missing deep cards until Show more. | Focused Vitest 10/10 (differential + universal + performance boundaries); verify:cheap exit 0 (3262 tests); typecheck clean; verify:ui exit 0 (Chromium). No provider calls. |
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 follow-up) | 7e2ccee0 | Bugfix pass on search interactive performance diff | Fixed P1 auth-stale differential matches; P2 progressive-reveal hiding selected card; P2 deferred empty/full-catalogue flash on services/forms/formulation/therapy-compass; Prettier CI failure on universal-search test. No remaining high-confidence P0–P2 in scoped diff. Residual: differential debounce skeleton flicker; RelatedDocumentsPanel memo limited by unstable callbacks. | Focused Vitest 11/11; typecheck; format:check; maintainability budgets. No provider calls. |
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138 babysit) | e27df0fa | Bugbot + merge babysit | Merged origin/main. Fixed Bugbot medium findings: deferred clear left stale service/registry matches. No unresolved review threads. | Focused Vitest (deferred registry + differential + boundaries); typecheck; maintainability budgets. Watching hosted CI. |
Expand All @@ -744,6 +745,7 @@ This file is append-only. Never rewrite or delete an existing review record; app
| 2026-07-24 | cursor/search-performance-review-4ee9 (PR #1134) | 9311d01212fe42bd41ffb22a83bfa51f1a4d19f2 | Run PR re-sync sweep | Re-check: CONFLICTING on use-differential-catalog.ts (+ related). Not cheap; merge aborted, no push. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 60a3c3a83a31e65ec2759540629687e7113e2489 | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. After: merged origin/main cleanly (ledger auto-merge); pushed 60a3c3a83. Threads: none. Residual: CI re-running. | merge origin/main only; no provider-backed checks run |
| 2026-07-24 | cursor/search-interactive-perf-af54 (PR #1138) | ff4b293d95f922e70ebf5ee9b0c156c41a8bff3b | Run PR sweep: CI fix + threads + drift | Before: CONFLICTING, CI green, 0 threads. RAG impact: no retrieval behaviour change — PR is client deferred-search/UI only (no src/lib/rag/**). After: merged origin/main; conflict resolved in src/components/ui/sheet.tsx by keeping main restoreTimersRef/unmountingRef focus-restore fix; pushed ff4b293d9. Threads: none. | merge origin/main only; no provider-backed checks run |
| 2026-07-24 | implement-audit-recommendations-fix (PR #1141) | b5f8959af8ec44de63200b1d19c273bae1b7d541 | Run PR sweep: CI fix + threads + drift | Before: behind main by 6. After: merged origin/main cleanly (no conflicts). Threads: non-P0/P1 left open. CI not waited. | merge origin/main only; thread scan read-only; no provider-backed checks run |
| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 8b2359589fe61c19c78fb02be50316c8f29d7e18 | Run PR sweep: CI fix + threads + drift | before: CONFLICTING; Static PR checks + Unit coverage + PR required FAIL (stale docs/site-map.md). after: merged origin/main cleanly (2e7b034d1); regenerated site-map (8b2359589fe61c19c78fb02be50316c8f29d7e18); no unresolved review threads; CI re-running expected green for static-pr/coverage/pr-required | vitest tests/site-map.test.ts pass (6); sitemap:check pass; no provider-backed checks run |
| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 992ebefa296d6894d5448c1381f1b0b95580e529 | Run PR sweep: CI fix + threads + drift | supersedes prior #1160 row: final HEAD after prettier site-map; merge origin/main clean; stale sitemap fixed; no threads | vitest site-map pass; sitemap:check pass; no provider-backed checks run |
| 2026-07-24 | remediate-audit-system-issues (PR #1160) | 04201a87cc7ad7dd1477d17cd2b96544b7379789 | Run PR sweep: CI fix + threads + drift | re-merge origin/main after CONFLICTING relapse; resolved scripts/run-eval-safe.mjs (kept main taskkill /T /F + validPids); sitemap Prettier format() retained from fe0588b86; no unresolved threads; no conflict markers | merge + conflict resolve only; no provider-backed checks run |
Expand All @@ -754,9 +756,11 @@ 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 | implement-audit-recommendations-fix (PR #1141) | 7cd9d428a9c2c8c1ba22af2c1d6c4725334221c8 | 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/frontend-ui-review-docs-e8d9 (PR #1146) | 2b17f5fcbe06307e7ff50ad0373789daa8f07a01 | 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/query-ribbon-search-headings (PR #1166) | c94e89f392f578c4b2c749195dd485b74959074c | Run PR re-sync sweep | Before: CONFLICTING. After: merged origin/main clean. CI re-running. | merge origin/main and/or conflict re-check only; no provider-backed checks run |
| 2026-07-24 | cursor/comprehensive-repo-review-ledger-d9a1 (PR #1150) | 345c02cdbaefb13aeb951a14674aedfe4648a50e | 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-25 | cursor/pr-babysit-bugbot-agents-6c52 (PR #1167) | ee44812aae9dad1973d8302eba5bfca5000dffb6 | Open-PR maintenance: review-thread fixes | Before: 8 unresolved Codex/CodeRabbit threads; branch current with main. After: target-head pinning, fresh-main verification, exact `cursor[bot]` identity checks, explicit mutation/provider authorization, direct reply-then-resolve semantics, and no-op ledger bookkeeping are documented. | Prettier check on both agent files pass; `git diff --check` pass; GitHub author probe confirmed `cursor[bot]` account type `Bot`; no provider-backed checks run. |
| 2026-07-25 | codex/fix-merge-conflicts-and-ci-on-open-prs (PR #1170) | e979fc892f11a17b1a8f2ef1ab058ef40d629182 | Open-PR maintenance: CI fix + threads + drift | Before: Static PR checks failed because route-group moves made nine valid legacy `src/app/*` documentation references appear missing; 0 unresolved threads; branch already contained current main. After: docs-link resolution checks known App Router route groups and the focused failure is fixed. | `node scripts/check-docs-links.mjs` pass (1162 references); Prettier check pass; `git diff --check` pass; no provider-backed checks run. |
| 2026-07-25 | implement-audit-recommendations-fix (PR #1141) | 0aaf441775786e5def408a2eda551d9b5d95542d | Open-PR maintenance: review fix + drift | Before: 24 commits behind and 1 unresolved P2 thread; nested result content retained safe-area padding after the shared dock hid. After: current main is merged and child content uses fixed small phone gaps so the shared zero hidden reserve reaches the viewport edge. | focused Vitest pass (7/7); Prettier check pass; `git diff --check` pass; no provider-backed checks run. |
| 2026-07-25 | cursor/search-performance-review-4ee9 (PR #1134) | 692834a86e612cc8b311dc6895e007f182f5c5b8 | Open-PR maintenance: superseded docs-link thread and clean main sync | Before: branch was behind current main with one outdated docs-link thread; its product tree already matched main. After: merged current main cleanly and verified the route-group-aware docs-link fix now covers legacy route references. RAG impact: no retrieval behaviour change — history sync and docs tooling verification only. | `node scripts/check-docs-links.mjs` pass (1154 references); clean merge-tree; no live RAG canary or provider-backed check run. |
6 changes: 3 additions & 3 deletions src/components/AccessibleTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ function AccessibleTableMarkup({
<div
className={cn(
"overflow-hidden rounded-lg border border-[color:var(--border)] bg-[color:var(--surface)]",
expanded && "max-h-[calc(100dvh-8.5rem)] rounded-none border-0 sm:rounded-lg sm:border",
expanded && "max-h-[calc(100dvh-8.5rem)] flex flex-col rounded-none border-0 sm:rounded-lg sm:border",
)}
>
{caption && !(hidePreviewCaption && !expanded) ? (
Expand All @@ -112,7 +112,7 @@ function AccessibleTableMarkup({
{caption}
</div>
) : null}
<div className="overflow-x-auto">
<div className={cn("overflow-x-auto", expanded && "flex-1 min-h-0")}>
<table
aria-label={caption ?? undefined}
className={cn(
Expand Down Expand Up @@ -460,7 +460,7 @@ export function AccessibleTable({
contentClassName="sm:max-w-none"
bodyClassName="p-3 pb-[max(1rem,env(safe-area-inset-bottom))] sm:p-3"
>
<div>
<div className="flex flex-col h-full">
{lowConfidence ? (
<p data-testid="table-low-confidence-note" className={cn("mb-1 text-xs", textMuted)}>
{showFallback
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ function CommandDropdown({
role="listbox"
aria-label={`${mode.label} search suggestions`}
className={cn(
"max-h-[min(55dvh,26rem)] overflow-y-auto overscroll-contain p-2",
"max-h-[calc(100dvh-5rem)] overflow-y-auto overscroll-contain p-2",
opensUpward ? "sm:max-h-[min(38dvh,20rem)]" : "sm:max-h-[min(42dvh,24rem)]",
)}
>
Expand Down
8 changes: 7 additions & 1 deletion src/components/ui/sheet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,9 @@ export function Sheet({
const defaultSheetIsFullscreen = placement !== "left" && mobilePlacement === "fullscreen";
const defaultSheetIsTopAligned = placement !== "left" && mobilePlacement === "top";
const defaultSheetUsesViewportSize = placement !== "left" && mobileSize === "viewport";
const contentClassTokens = contentClassName?.split(/\s+/) ?? [];
const hasMobileMaxHeight = contentClassTokens.some((token) => /^!?max-h-/.test(token));
const hasSmallScreenMaxHeight = contentClassTokens.some((token) => /^sm:!?max-h-/.test(token));
Comment on lines +282 to +284

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.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== sheet.tsx around the predicates ==\n'
sed -n '270,360p' src/components/ui/sheet.tsx

printf '\n== Tailwind docs in node_modules (if present) ==\n'
find node_modules/next/dist/docs -maxdepth 3 -type f \( -iname '*tailwind*' -o -iname '*css*' -o -iname '*important*' \) | sed -n '1,80p'

printf '\n== Search for important modifier references ==\n'
rg -n "trailing important|important modifier|!$|max-h-\\[|max-h-" node_modules/next/dist/docs src/components/ui/sheet.tsx -S || true

Repository: BigSimmo/Database

Length of output: 10359


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== package manifests mentioning tailwind ==\n'
rg -n '"tailwindcss"|tailwindcss|`@tailwind`' package.json pnpm-lock.yaml yarn.lock package-lock.json bun.lockb . -g '!node_modules' -S || true

printf '\n== sheet.tsx snippet with line numbers ==\n'
cat -n src/components/ui/sheet.tsx | sed -n '278,356p'

printf '\n== search for related tests or utilities ==\n'
rg -n "hasMobileMaxHeight|hasSmallScreenMaxHeight|max-h-\\[|max-h-" src test tests __tests__ . -g '!node_modules' -S || true

Repository: BigSimmo/Database

Length of output: 33149


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== package.json tailwind entries ==\n'
python3 - <<'PY'
import json, pathlib
p = pathlib.Path('package.json')
if p.exists():
    data = json.loads(p.read_text())
    for section in ('dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'):
        deps = data.get(section, {})
        for name, ver in deps.items():
            if 'tailwind' in name.lower():
                print(section, name, ver)
else:
    print('package.json not found')
PY

printf '\n== lockfile tailwind entries (first matches) ==\n'
for f in package-lock.json pnpm-lock.yaml yarn.lock bun.lockb; do
  [ -f "$f" ] || continue
  echo "--- $f ---"
  rg -n "tailwindcss|tailwind" "$f" -S | sed -n '1,40p'
done

printf '\n== local docs search for important modifier phrasing ==\n'
rg -n "important modifier|trailing .*!|prefix .*!|max-h-\\[" node_modules/next/dist/docs . -g '!node_modules/**/dist/**' -S || true

Repository: BigSimmo/Database

Length of output: 10681


🌐 Web query:

Tailwind CSS v4 important modifier trailing exclamation mark utility syntax max-h-[88dvh]!

💡 Result:

In Tailwind CSS v4, the syntax for marking a utility as important has changed. You must now place the exclamation mark (!) at the end of the class name, rather than at the beginning [1][2]. For your specific case, the correct syntax is: max-h-[88dvh]! Key details regarding this change: - New Placement: The! modifier is now a suffix [1]. For example, a class like!text-blue-500 (v3 style) should be updated to text-blue-500! (v4 style) [1][2]. - Compatibility: While Tailwind v4 still supports the older prefix syntax (e.g.,!text-blue-500) for backwards compatibility, it is officially deprecated and you are encouraged to migrate to the suffix syntax [1]. - Arbitrary Values: The syntax for arbitrary values (square brackets) remains compatible with this modifier. Placing the! after the closing bracket correctly applies!important to the generated CSS rule [1][2]. - Global Important: If you intended to make all utilities important, the v4 approach is to use the important flag in your CSS import directive rather than the tailwind.config.js file [3][4]: @import "tailwindcss" important;

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== tailwindcss package version and docs hits ==\n'
node - <<'JS'
const pkg = require('./node_modules/tailwindcss/package.json');
console.log(pkg.version);
JS

printf '\n== search installed tailwindcss for important modifier docs/code ==\n'
rg -n "important modifier|prefix it with !|!mt-4|max-h-\\[88dvh\\]!|trailing" node_modules/tailwindcss node_modules/@tailwindcss -S || true

printf '\n== inspect candidate parser/source symbols for ! handling ==\n'
fd -a "" node_modules/tailwindcss | sed -n '1,120p'

Repository: BigSimmo/Database

Length of output: 728


Recognize Tailwind v4 trailing ! important modifier. These checks miss classes like max-h-[88dvh]! and sm:max-h-[min(80dvh,36rem)]!, so the Sheet can still append its default cap when callers mark their height utility important. Accept the suffix form and add a regression test.

🤖 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/ui/sheet.tsx` around lines 282 - 284, Update the max-height
detection checks near contentClassTokens to recognize Tailwind v4 trailing !
modifiers, including unprefixed and sm-prefixed classes such as max-h-[88dvh]!
and sm:max-h-[min(80dvh,36rem)]!, while preserving existing prefix-! support.
Add a regression test covering both suffix forms and verify the Sheet does not
append its default cap.


const sheet = (
<div
Expand Down Expand Up @@ -340,7 +343,10 @@ export function Sheet({
"rounded-t-2xl motion-safe:animate-sheet-up",
defaultSheetUsesViewportSize
? "min-h-[calc(100dvh-2rem)] max-h-[calc(100dvh-1rem)] sm:min-h-0"
: "max-h-[88dvh]",
: cn(
!hasMobileMaxHeight && "max-h-[calc(100dvh-2rem)]",
!hasSmallScreenMaxHeight && "sm:max-h-[88dvh]",
),
),
),
),
Expand Down
2 changes: 1 addition & 1 deletion src/components/universal-search-command-mockups.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,7 @@ function SmartDropdown({
id={listboxId}
role="listbox"
aria-label={`${mode.label} search suggestions`}
className="max-h-[26rem] overflow-y-auto p-2"
className="max-h-[calc(100dvh-5rem)] sm:max-h-[26rem] overflow-y-auto p-2"
>
{sections.map((section) =>
section.items.length ? (
Expand Down
1 change: 1 addition & 0 deletions tests/clinical-dashboard-merge-artifacts.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ describe("ClinicalDashboard merge-artifact guards", () => {
expect(clinicalDashboardSource).toContain("resolveMobileComposerReserve(");
expect(clinicalDashboardSource).toContain('from "@/components/clinical-dashboard/mobile-composer-reserve"');
expect(clinicalDashboardSource).not.toContain('bottomComposerHidden ? "max(0.75rem, env(safe-area-inset-bottom))"');
expect(clinicalDashboardSource).not.toMatch(/pb-\[max\([^"']*safe-area-inset-bottom/);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Scope the safe-area guard to hidden composer padding

When ClinicalDashboard legitimately adds visible-composer padding such as pb-[max(1rem,env(safe-area-inset-bottom))], this file-wide regex fails even though visible chrome may consume the safe-area inset; meanwhile, equivalent hidden padding using var(--safe-area-bottom) passes. This makes the guard both reject valid UI and miss an equivalent regression, so scope it to the hidden-composer branch and cover both inset forms.

AGENTS.md reference: AGENTS.md:L216-L218

Useful? React with 👍 / 👎.

expect(clinicalDashboardSource).toContain(
'"max-sm:pb-[var(--mobile-composer-reserve)] max-sm:[scroll-padding-bottom:var(--mobile-composer-reserve)] sm:mb-24"',
);
Expand Down
11 changes: 11 additions & 0 deletions tests/search-command-surface.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { describe, expect, it } from "vitest";
import { readFileSync } from "node:fs";

import {
commandDropdownCanDisplay,
Expand Down Expand Up @@ -139,4 +140,14 @@ describe("search command surface", () => {
expect(differentialRedFlagTerms).toContain("confusion");
expect(differentialRedFlagTerms.length).toBeGreaterThan(3);
});

it("keeps one sm max-height cap per command dropdown placement", () => {
const source = readFileSync(
new URL("../src/components/clinical-dashboard/universal-search-command-surface.tsx", import.meta.url),
"utf8",
);

expect(source).not.toContain("sm:max-h-[min(55dvh,26rem)]");
expect(source).toContain('opensUpward ? "sm:max-h-[min(38dvh,20rem)]" : "sm:max-h-[min(42dvh,24rem)]"');
});
});
Loading
Loading