Skip to content

feat(GestureMenu): Enable multi-column MenuItem on wider screens#4533

Draft
cindmichelle wants to merge 52 commits into
cybersemics:mainfrom
cindmichelle:gesturemenu/multi-column-layout
Draft

feat(GestureMenu): Enable multi-column MenuItem on wider screens#4533
cindmichelle wants to merge 52 commits into
cybersemics:mainfrom
cindmichelle:gesturemenu/multi-column-layout

Conversation

@cindmichelle

Copy link
Copy Markdown
Collaborator

No description provided.

cindmichelle and others added 30 commits April 30, 2026 01:20
…ghlightColor props

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…el/Cheatsheet gap (cybersemics#3709)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…eDiagram.onRef

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes regression from commit 120a77e where the per-segment rendering refactor split path handling into useGradient-dependent branches, causing two issues:

1. Arrowhead added to help gesture (rdld): The markerEnd condition lost the `path !== 'rdld'` guard, adding an unwanted arrowhead to the ? gesture in the test snapshot.

2. Straight lines instead of Bezier curves: The rdld Bezier path override was only added to the `!useGradient` branch, so callers using useGradient=true (default, e.g. CommandItem) rendered straight line segments instead of the smooth ? shape in the Help modal.

Both fixes restore the original behavior by re-adding the rdld special cases to the per-segment rendering path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cindmichelle and others added 13 commits June 20, 2026 03:47
Eliminate double negative by renaming to a positive boolean.
glow={true} (default) enables the glow, glow={false} disables it.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
More descriptive name since it's specifically an item inside the
Gesture Menu, not a generic gesture item.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Clarifies that Cancel and Command Universe are always-visible commands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove console log file accidentally committed to version control
- Convert useGestureHighlight to options object instead of positional args
- Combine GestureDiagram dropShadow ternary branches with same value

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Hook computing column count, rows per column, visible (trimmed) regular
command count, and last-column-empty state for the multi-column Gesture
Menu (issue cybersemics#4313). Reads state.fontSize and viewportStore internally;
exports the shared geometry constants. Unit-tested via renderHook.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds an optional autoScroll prop (default true) gating the selected-row
scrollIntoView/scrollTop effect, so it never fires in the non-scrolling
multi-column grid. Adds minWidth:0 so a nowrap label cannot overflow its
grid column.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Above the md breakpoint the gesture menu now flows commands into an
explicit CSS grid whose column count is derived from the panel inner
width (via useGestureMenuLayout). Commands flow top-to-bottom then
left-to-right; Cancel + Command Universe are placed in the last column
(alone at top when it is empty, else in-flow after the last command);
displaced commands are trimmed. The header divider is constrained to the
first column, panel padding grows to 5rem, and the fixed content-width
cap is dropped. Below md the single-column flex layout is unchanged.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Vercel preview: https://em-19njbktbi-cybersemics.vercel.app

cindmichelle and others added 9 commits July 7, 2026 23:23
Main commands now fill every column of the multi-column gesture menu; the
persistent block (Cancel + Command Universe) renders in its own full-width
row below the grid instead of reserving trailing cells in the last column.

- Drop lastColumnEmpty and GESTURE_MENU_PERSISTENT_ROWS; the block no longer
  steals grid cells, so trimming just fills to grid capacity.
- Panel horizontal padding now keys off isMultiColumn rather than viewport.
- Add a full-width divider above the persistent row.
- Archive the OpenSpec change + spec that drove this work.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…mns in gesture menu

The multi-column gesture menu rendered all commands in one CSS grid with
shared row tracks (gridAutoFlow: column + gridTemplateRows). Shared tracks
size each row to its tallest cell across all columns, so a selected
command's description stretched the matching row in every column.

Lay out only the columns with the outer grid and give each column its own
nested grid of rows. Per-column row tracks keep a description from
lengthening sibling columns' rows.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ne them when they fit

The multi-column gesture menu always dropped the persistent commands
(Cancel/Command Universe) into a full-width bottom row. Now they flow
inline at the bottom of the last column when there is room, and the
main + persistent commands are balanced across columns so heights are
even instead of leaving the last column short.

- useGestureMenuLayout: balance main + persistent (balancedRows) and add
  a separate inline height budget (maxRowsInline, no bottom-row
  reservation) so inline isn't rejected when space exists; keep
  maxRowsBottom for the trim/bottom-row fallback.
- GestureMenu: append persistent items below the last column when inline
  (group gap above); switch main column grids to gridAutoRows so a short
  last column has no trailing empty tracks.
- Fall back to the full-width bottom row only when the balanced grid
  overflows the inline height.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Attach the persistent block (Cancel/Command Universe) to the last column
that actually holds main commands rather than the last physical column, so
it no longer sits alone in an empty column when few main commands remain.
Drop the group gap above the block when its column has no main commands.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reserve the 0.6rem top padding on every column's first row so selecting
it no longer pushes the column down and misaligns it from siblings.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant