From 0096396de6ec0bc326ee0deeeb0fd0c6ebfe36ea Mon Sep 17 00:00:00 2001 From: Mao Nakamoto <41178744+maonakamoto@users.noreply.github.com> Date: Fri, 4 Sep 2026 13:38:24 +0200 Subject: [PATCH] refactor(control): the card opens with the action people actually use MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three chips — Test & fix / Quality / Commit — sat directly under the primary CTA on every project card at every width above `sm`. Counted over the whole history of orchestration_runs: next_best 185 runs custom 99 runs test_and_fix 3 runs quality 1 run commit_push 0 runs — never once, by anyone And of those four quick-action rows, three are not real: five rows were inserted at 04:20:02.844 through .850 — inside six milliseconds, on projects (ledgerpost, harbourlight, kestrel) that are not in the fleet. That is a seed script. The only genuine quick-action dispatch in the product's history is Bitbaum/test_and_fix on 2026-07-31, which ended error/timeout. So one real click in five weeks held the most valuable row on the surface, directly beneath the button carrying 185. They move to `more`, behind the disclosure that already existed and already hid them below `sm`. The old comment there said "unchanged at sm and up, where the room to show them was never the problem" — room was never the problem; ATTENTION was. This is what CLAUDE.md asks of this surface ("at most one button") argued with counts instead of taste. NOTHING IS REMOVED. Verified in a browser at 768/1024/1440: before: [Test & fix, Quality, Commit, More] 73 buttons after: [More] 70 buttons and tapping More reveals ✓ Test & fix ✓ Quality ✓ Commit ✓ Full audit ✓ Product review. (A first run reported them missing; that was my probe's click landing on a button at y=859 in a 900px viewport, not a regression — re-tested with an in-page click.) The `action` group is kept rather than deleted even though it is now empty: the fix is a config change, and moving an intent back is one word. If usage changes, change it back — the counts are the argument, not the layout. pnpm run verify passes. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01UvjGNAS9CMfEGNW26tUR4P --- .../control/project-intent-panel.tsx | 17 +++++----- src/config/control-intents.ts | 32 +++++++++++++++++-- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/src/components/control/project-intent-panel.tsx b/src/components/control/project-intent-panel.tsx index f05fde37..000d21d6 100644 --- a/src/components/control/project-intent-panel.tsx +++ b/src/components/control/project-intent-panel.tsx @@ -344,14 +344,15 @@ export function IntentButtonPanel({ {/* Secondary intents: compact chips + More toggle. - On phones, these three (Test & fix / Quality / Commit) plus the - primary CTA above plus composer/mic/send below put 8-10 tap - targets on screen before scrolling past a single card — the - "wall of buttons" the mobile UX audit named as this surface's - worst offender. Hidden under `sm` until "More" is tapped, same - as MORE_INTENTS already was; one extra tap trades for a card - that opens with ONE clear action instead of ten. Unchanged at - sm and up, where the room to show them was never the problem. */} + This row used to carry Test & fix / Quality / Commit, hidden under + `sm` but always shown above it — "the room to show them was never + the problem" at desktop widths. Room was not the problem; ATTENTION + was. Counted over all of orchestration_runs, those three have one + real dispatch between them ever, against next_best's 185, so they + now live in `more` (see config/control-intents.ts for the counts). + ACTION_INTENTS is consequently empty and this map renders nothing — + the group is kept, not deleted, because the fix is a config change + and reassigning an intent back is one word. */}
{ACTION_INTENTS.map(({ id, label }) => (