feat(mockups): three runnable directions for the Tools search results state - #1839
Conversation
… state `/tools?q=…` is rated an urgent redesign in the outstanding-issues ledger (`#162`). The July 2026 study produced three static PNG comps and picked direction A, but nothing runnable was ever built, so the pick had never been read against live catalogue data. Adds `/mockups/tools-search-directions`: one route, three stacked directions for the submitted results state, each shown at phone 390 and desktop 1280. - 01 Compact Results Instrument — query-as-h1, hero and quick-action grid dropped on submit, filters folded onto the title row, dense rows whose primary button launches the tool. - 02 Ranked Clinical Brief — adopts `rankToolRecords` (already exported by the catalogue, never called by this page) and promotes the top match into an inline brief built from `bestFor` / `checkFirst` / `neededInput` / `output`. - 03 Launch-First Triage Deck — no dialog at all; native `<details>` rows, and the area filter and count fuse into one segmented band. Frames are built from the real 13-record `src/lib/tools-catalog.ts`, so match counts, orderings, badges and per-tool copy are genuine rather than fixtures. Both demo queries are real: `monitoring` (3 substring matches vs 4 ranked — today's matcher puts the exactly-named tool last) and `compare` (one match, the reported screenshot). Match-reason chips deliberately use categorical `--type-*` tones rather than the `relevance.tsx` badges, whose `EvidenceRelevance` verdicts would print a source-grounding claim where only a keyword hit exists. Shared app chrome is suppressed for this route because every frame draws its own top bar, composer and band; per `mockups/README.md` shared chrome is inherited or suppressed, never forked into the page. Scope is the results state only — no production surface changes, and the Tools home redesign stays out per `#162`'s own stop rule. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CCSWnNvh73Y3FG3oDj6rRi
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in:1 second Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
Comment |
This pull request has been ignored for the connected project Preview Branches by Supabase. |
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CCSWnNvh73Y3FG3oDj6rRi
There was a problem hiding this comment.
Pull request overview
Adds a dev-only runnable study comparing three Tools search-results designs using the real catalogue.
Changes:
- Adds compact, ranked-brief, and launch-first mockup directions.
- Adds the mockup route and suppresses shared chrome.
- Updates mockup documentation and generated records.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
src/components/tools-search-directions-mockups.tsx | Implements the three design studies. |
src/app/mockups/tools-search-directions/page.tsx | Registers the mockup route. |
src/app/mockups/mockups-layout-client.tsx | Suppresses shared chrome for the route. |
mockups/README.md | Documents the study and recommendation. |
docs/site-map.md | Adds the generated route entry. |
docs/branch-review-ledger.md | Records the PR review state. |
Suppressed comments (1)
src/components/tools-search-directions-mockups.tsx:765
- The PR promises both demo queries at phone and desktop widths, but each direction renders the desktop frame only for
monitoring. This leaves the sparsecomparestate unevaluated on desktop in all three directions. Add the missing desktopcompareframe (yielding 12 frames total).
<DeviceFrame direction={direction.id} query="monitoring" device="desktop" />
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Uh oh!
There was an error while loading. Please reload this page.
Checked all 12 open PRs and mapped them to ledger rows. Twenty-four open rows are actively being fixed right now — #1835 (7 rows), #1840 (4), #1842 (6), #1841 (4), #1836 (2), #1837 (1), #1839 (1) — and none of those rows said so. This is the #292 failure mode with the safety off: a queued row that reads as unclaimed while a PR is open against it is how the same conversion shipped twice on 2026-08-09. Each row now names its PR and says not to start until that PR merges. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017paT42ZVMf8jaLtkjFxdy5
BigSimmo
commented
Aug 12, 2026
Resolved the suppressed desktop-completeness review finding: every direction now renders both representative queries at phone 390 and desktop 1280 (12 frames total). Focused static proof passed 2/2 before publication; a later identical rerun was skipped by the repository coordinator because another worktree held the focused-test capacity. |
BigSimmo
commented
Aug 12, 2026
@claude This draft PR is currently |
Hi @BigSimmo — thanks for the @claude mention. Open this in Claude Code on the web to continue here: https://claude.ai/code Context: Automated backlink from the Claude backlink workflow. Claude Code can pick up the mention and push a scoped fix to the branch. |
Claude encountered an error after 2s —— View job I'll analyze this and get back to you. |
BigSimmo
commented
Aug 13, 2026
@claude Please main-sync this draft PR from exact head Preserve the tools-search mockup study and the verified evidence matrix at the captioned 390px/1280px dimensions. For Run the focused tools-search-directions mockup contract, site-map/docs checks if retained, typecheck and format. Report the new head and exact outcomes. |
Hi @BigSimmo — thanks for the @claude mention. Open this in Claude Code on the web to continue here: https://claude.ai/code Context: Automated backlink from the Claude backlink workflow. Claude Code can pick up the mention and push a scoped fix to the branch. |
Claude encountered an error after 2s —— View job I'll analyze this and get back to you. |
BigSimmo
commented
Aug 13, 2026
@copilot Merge Preserve the tools-search mockup study and its verified 390px/1280px evidence matrix. For Run the focused tools-search-directions mockup contract, site-map/docs and ledger integrity/write-discipline checks, typecheck and format. Report the pushed 40-character SHA and exact outcomes. |
Preserve the three runnable Tools search directions and focused contract while replaying the one shared-layout guard onto current main. Keep current generated indexes and ledgers for regeneration on the combined tree.
CI triageCI failed on this PR. Automated classification of the 3 failed job(s):
Compared with main CI run #10317 (success). Classification is evidence routing, not permission to ignore a failure. Exact quarantined Playwright identities remain governed by the flake ledger. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:edd1932afd
ℹ️ 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.
BigSimmo
commented
Aug 13, 2026
@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. The only repository destination is BigSimmo/Database, and the only branch destination is the pull request head branch claude/tools-search-mockups-kmzxf1 at starting commit edd1932; never publish fixes to a detached or synthetic work branch and never create a stacked pull request. Use the authenticated GitHub connector to commit each approved fix to BigSimmo/Database:claude/tools-search-mockups-kmzxf1, then verify that the pull request head contains the published commit before reporting success. 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. For a fixed thread, reply with as the first line and as the second line. For a no-code disposition, use followed by . These result markers authorize the workflow to close that exact thread only after it verifies a fixed commit is the pull request head; a local-only commit is not a fix. If publication or verification fails, do not use either result marker, do not claim success, and leave the thread open with the blocker. If human input or new authorization is required, do the same. 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. |
Codex Review: Didn't find any major issues. 🚀 Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
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". |
Summary
/mockups/tools-search-directions— one design-scratch route presenting three directions for the Tools search results state (/tools?q=…), each shown at phone 390 and desktop 1280. This is the runnable successor to the July 2026 static comps inpublic/mockups/mode-page-redesign-2026-07/tools-search/, whose direction A was the product pick but was never built, so the pick had never been read against live catalogue data. Tracked as#162.h1, count and area filters fold onto that title row, and results become dense rows whose primary button launches the tool (Detailsdemotes to a desktop-only secondary). A filter row is only drawn when there is more than one match.rankToolRecords, whichsrc/lib/tools-catalog.tsalready exports and this page has never called, and promotes the top match into an inline brief built frombestFor/checkFirst/neededInput/output— four per-tool fields authored for all 13 tools and currently invisible in the results state.<details>that open inline, and the area filter and result count fuse into a single segmented band.safetyFirsttools carry a persistent warning edge instead of a badge one tap deep.monitoring(3 substring matches vs 4 ranked — today's matcher returns the exactly-named tool last and misses a fourth relevant match) andcompare(one match, the reported screenshot state where the only result fell below the fold).--type-*tones rather than therelevance.tsxbadges. Those are typed toEvidenceRelevance/SourceEvidenceRelevanceand render a source-grounding verdict ("Source-backed" / "Partial support"), so feeding a text-match score into them would print a grounding claim where only a keyword hit exists — one line away from a realsourceBackedbadge.src/app/mockups/mockups-layout-client.tsxgains one pathname predicate so shared app chrome is suppressed for this route: every frame draws its own top bar, composer and band, and permockups/README.mdshared chrome is inherited or suppressed, never forked into the page. The/mockups/tools-prefix already suppliedinitialMode="tools"and hid the bottom composer.#162's own stop rule.Verification
npm run verify:pr-local— ran with the changed-file list. The wrapper stops at its second step on this machine:check:installed-lock-parityfails because the container's SessionStart hook writesnode_modules/.session-start-lock-hashafterpostinstallstamps the tree, so the tree digest no longer matches the stamp it just created. Diagnosed rather than assumed:packageLockDigeststill matches, the inventory differs by exactly one file, andfind node_modules -newer …/.codex-installed-tree.json -type f -not -path '*/.cache/*'returns only.session-start-lock-hash. Pre-existing and environment-only — no dependency drift. Every remaining selected step was then run directly and passed:The one unit failure is
tests/pr-handoff-stop.test.ts, which is pre-existing and unrelated: it reproduces on a clean tree at this branch's base with the working changes stashed (Tests 1 failed | 10 passed). This diff touches no hook, script, or settings file.npm run verify:uiexercises production journeys, and this diff adds only a/mockups/*route that 404s in production and changes no production surface. Browser evidence was captured directly instead — the route was loaded in Chromium at 1400×1000 against the local dev server, returning 200 with zero console or page errors, oneh1, and all 9 expected frames present; each direction was then screenshotted at both viewports and both demo queries and read in light theme.npm run check:bundle-budgetwas run against a fresh build rather than skipped, since mockup chunks are weighed against the separatemockupsbaseline: +3.3% on a 25% tolerance.Risk and rollout
src/app/mockups/**is dev-only —layout.tsxcallsnotFound()unlessmockupsEnabled(),robots.txtdisallows the tree, andsrc/proxy.tsguards it in production. The only shared file touched ismockups-layout-client.tsx, and the change there is purely additive: one new pathname predicate and one new&& !…term, affecting no other mockup route.mockups/README.md, and the generateddocs/site-map.mdline is involved.Notes
ckb-v2-tokens.cssrecords DS-01, where a:not(.dark)subtree scope clobbered inherited dark values. The same route will render Sky Graphite for a later dark review with no rewrite.SearchResultsHeaderBand. That component reads its count noun from the live mode registry viaappModeSearchConfig(modeId), its placement is governed bydocs/search-chrome-behaviour.md§ "Results band" andtests/search-results-band-adoption.test.ts, and directions 01 and 03 exist precisely to restructure it.comparecovers the sparse-but-nonzero case), dark-mode frames, and the production implementation itself. Note for whoever implements 02 — adoptingrankToolRecordson the live page is a search-ranking change and should be scoped and reviewed as one, even thoughtools-catalog.ts/catalog-search.tssit outsidesrc/lib/rag/**andclassifyPullRequestFilesreportsragRanking: falsefor this diff.Generated by Claude Code