Repository navigation
Ask Options join the mode row; Generate actions in purpose order - #229
Conversation
Captured on design/debateowl-restyle at c9cf5dd with the local verify stack (fake provider), 10 viewports from 375 px phones to 1920 px desktop. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ask: Options sits at the end of the General/Clarify row instead of a row of its own, so one row of controls stays above the message box. On a phone it shows its icon (the label stays its accessible name), because the Hungarian label does not fit beside both modes. Generate: the top row reads Save, Undo, then Discuss, Flowcharts and Open in Crossfire. On a phone both rows stretch into even pairs and the Export tag takes its own line. ExportToolbar gets an opt-in evenRows for this, so Attack, Brainstorm and Factoids are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Same 10 viewports and states as the before set, captured on the local verify stack (fake provider). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
Layout-only cleanup of the Ask composer and the Generate result toolbar. It stacks on #228 (
design/debateowl-restyle). Every control, label and translation from before is still there, and nothing new was added.What moved
Ask: Options joins the mode row
Before, Options (Hungarian: "Beállítások", which is why it reads as Settings) took a row of its own under General/Clarify, so there were three rows of controls above the message box. Now it sits at the right end of the General/Clarify row, and its popover opens from the right edge.
I put it there because Options changes how the next message is answered (citations, web search, pros/cons, argument map, model), the same kind of choice as General/Clarify. Keeping it beside the modes, right above the box it affects, puts every per-message setting on one line. The card header was the other candidate, but Save and Clear there act on the whole conversation, not on the next message.
On phones (below 640px) the button shows only its sliders icon and the active-option count. The word "Options" stays as the button's accessible name (
sr-only sm:not-sr-only, the same pattern the Flowchart toolbar uses), so screen readers and the existinggetByRole('button', { name: 'Options' })selectors still find it. The full label is back from 640px up. The icon-only button is needed because in Hungarian "Általános", "Pontosítás" and "Beállítások" don't fit on one 375px row.Generate: actions in purpose order, even rows on phones
The top row went from Open in Crossfire, Save, Discuss, Flowcharts, Undo to:
The export row keeps its order (Export tag, Clipboard, PDF, DOCX, Google Docs).
On phones the rows used to wrap raggedly, with a long button alone on one line and two short ones on the next. Below 640px both rows now fill even two-up pairs, and a label too long for half a row ("Megnyitás a Keresztkérdezésben") takes the full row. The Export tag sits on its own line above its four buttons. Both rows now use the same two-column layout, which gives the top and bottom the balance the brief asked for. From 640px up, buttons keep their natural width and stay left-aligned, as decided for this toolbar on 2026-05-27.
ExportToolbaris shared with Attack, Brainstorm and Factoids. The phone pairing is behind a new opt-inevenRowsprop that only Generate passes, so those three tools look exactly as before.How it was checked
Screenshots and checks come from a Playwright script driving the real app on the local verify stack (local Supabase, real Edge Functions, fake model provider, demo-code sign-in). It covered 10 viewports: phones at 375×812, 390×844 and 430×932; iPad at 768×1024, 1024×768, 1024×1366 and 1366×1024 (touch emulated,
pointer: coarseasserted); desktop at 1280×800, 1440×900 and 1920×1080. The script switched theme through System in Settings and checked thedarkclass on<html>, and switched language with?lang=and checked<html lang>.The script checked each state for page overflow, controls overlapping each other or leaving their menu, clipped button text, rows that hide overflow by scrolling, and touch targets under 44px on touch viewports.
c9cf5ddf) had no findings in either menu.min-width, which overrides flexbox's content-based minimum. The fix (min-w-fiton even-row items) is in this PR, and the recaptured phones are clean.Test results are below the screenshots.
Screenshots
Each image is one state at all 10 viewports. BEFORE is from
design/debateowl-restyleatc9cf5ddf; AFTER is this branch. Click an image for full size. Files are indocs/screenshots/menu-layout/.Ask
empty, EN, light
Before
After
Options open, EN, light
Before
After
Options open, HU, light
Before
After
loading (Stop showing, Send disabled), EN
Before
After
filled, EN, light
Before
After
filled, HU, light
Before
After
filled, HU, dark
Before
After
filled, ES, light
Before
After
error with Retry, EN, light
Before
After
error with Retry, EN, dark
Before
After
saved-chats sidebar open, HU, dark (1024 and wider only)
Before
After
Generate
filled, one-off (Save button), EN, light
Before
After
filled, EN, dark
Before
After
filled, HU, light
Before
After
filled, HU, dark
Before
After
filled, ES, light
Before
After
filed in a debate (Saved to History), HU, light
Before
After
regenerating a section (Undo disabled), EN
Before
After
empty form, no toolbar yet (unchanged)
Before
After
loading, no toolbar yet (unchanged)
Before
After
error panel, no toolbar yet (unchanged)
Before
After
Test results
All runs are local, from this worktree at the code commit. GitHub Actions is billing-blocked, so CI shows red without having run.
npm run verifypassed. That covers the docs check, lint, typecheck, 651 unit tests, 30 collaboration tests, 470 edge tests, build, service worker check, and 47@smokebrowser tests.desktop-chromiumandmobile-chromium:recipes/ai-tools(8 and 8),recipes/case-generation(9 and 9),e2e/full-stack/ai-tools(5 and 5). These drive Ask with Options and Generate end to end.npm run test:e2e(desktop and mobile Chromium): 281 passed, 5 skipped, 2 flaky, 6 failed.loading-performance.spec.ts:63,navigation-performance.spec.ts:344,search-quality.spec.ts:7. They are not fixed here.home-navigation.spec.ts:90(onboarding delay) andquality-backlog.spec.ts:20(ES page titles).authed-pages,results-overflow,hungarian-parity,localization,animation-polish,first-run), rerun on their own with a list reporter: 114 passed on desktop and mobile Chromium, none skipped.$H e2e run, which spends OpenRouter credit), WebKit, and staging.Not sure about
/share/:coderenders the sameGenerateResults, so its export row gets the phone pairing too. It has no top-row actions.min-w-fitfix. That fix only applies below 640px, so those widths render the same..verify/, so the run can't be reproduced from the repo.🤖 Generated with Claude Code