Skip to content

Traits dropdown: restore the 2px gap between menu rows - #33

Merged
wingleeio merged 1 commit into
mainfrom
comet/traits-menu-row-gap
Aug 9, 2026
Merged

wingleeio merged 1 commit into
mainfrom
comet/traits-menu-row-gap

Conversation

@wingleeio

@wingleeio wingleeio commented Aug 9, 2026 •

Copy link
Copy Markdown
Contributor

The Reasoning/options section columns in the Traits dropdown were missing the .gap(px(2.0)) every other menu column carries (model list, device switchers, harness rail), so an adjacent selected row and hovered row rendered as one fused wash (screenshot report).

Verified in the headless rig: with "High" selected and "X-High" hovered, the two washes now separate with the standard 2px rhythm. cargo test -p comet-ui: 384 passed.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

The Reasoning/options section columns lacked the .gap(px(2.0)) every
other menu column carries (model list, device switchers), so adjacent
selected + hovered washes fused into one blob (user report).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@wingleeio
wingleeio merged commit 6fbd788 into main Aug 9, 2026
1 check passed
guilhermexp pushed a commit to guilhermexp/comet that referenced this pull request Aug 30, 2026
The Reasoning/options section columns lacked the .gap(px(2.0)) every
other menu column carries (model list, device switchers), so adjacent
selected + hovered washes fused into one blob (user report).

Co-authored-by: wing-anara <wing@anara.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
hoangvu12 referenced this pull request in hoangvu12/roboco Oct 13, 2026
SplitRoot: a custom two-pane Layout porting SplitRootController — 360dp
sidebar (320..400) beside the detail column, 1px hairline over the
sidebar's trailing pixel, flat Palette.background, window-inset routing,
and the 300ms easeInOut show/hide through Motion.sidebarToggle() with
collectLatest reversal. The sidebar and detail content are measured at
target width; only the pane background and placements move per frame
(sidebarFraction is read in the MeasurePolicy, never in composition).
Hidden, the sidebar stays composed off-screen with layer alpha 0,
cleared semantics (derived settled-hidden flag) and focus-entry guard;
hiding clears focus. The detail slot gets LocalPrefersLargeTitles
provides false; SplitRoot hosts no stack and never writes
LocalBottomChromeTop.

TabletShellState: currentChatId, sidebarVisible, DetailRoot (Draft/
Session/Empty) + listSaver round-trip (focusOnAppear is one-shot),
detailGeneration, the single-writer isCollapsed flag, and
SplitGeometry/splitGeometry pane math.

ShellShortcuts: Ctrl+N / Ctrl+Shift+F / Ctrl+B (exact matcher: down,
no repeat, ctrl-only, shift-exact) dispatched in onPreviewKeyEvent at
the shell root, plus the ShortcutSink that MainActivity's
onKeyShortcut/onProvideKeyboardShortcuts reach when nothing has focus;
the Meta+/ helper shows the Roboco group (Toggle Sidebar only while the
split is up). MainTabShell wires the shortcut modifier with its own
phone router (router construction hoisted above the root Box so the
root modifier can use it; sheetHost passed explicitly — same instance).

Debug gallery: Split layout section (scaled 1280x800 frame, toggle and
collapsed switches, router call log) + light/dark previews; registered
in Gallery.sections.

Tests: SplitGeometryTest, TabletShellStateTest (plain JVM);
ShellShortcutsTest, SplitRootTest (Robolectric; bounds, hairline
pixels, animation, keys through a focused field, restoration),
MainTabShellShortcutTest, SplitRootScreenshotTest (Roborazzi goldens)
— all written, none run on this PC (VPS).
hoangvu12 referenced this pull request in hoangvu12/roboco Oct 13, 2026
Found by the import check over zeronsh#101, zeronsh#110, zeronsh#97, #41, #33 (not yet compiled
by CI):
- FolderBrowserController: Snapshot is androidx.compose.runtime.snapshots
- NewProjectScreen: Layout is androidx.compose.ui.layout.Layout
- SessionListStatusOverlay: Modifier.testTag is ui.platform.testTag (the
  semantics property was imported)
- LicensesBehaviourTest: SemanticsMatcher is ui.test; onAllNodes is a
  member, not importable
- SessionListBehaviourTest: Modifier and onRoot imports
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