[Hermes Desktop][Sidebar][hermes-desktop-sidebar-shift-click-selects][1/n] Shift-click drives multi-select; pin moves to drag, menus, and the bulk bar - #163
Merged
Conversation
…shift binding Operator feedback on #161: with no active selection, shift-click still pinned — shadowing the canonical multi-select gesture, so selection mode was unreachable by muscle memory. Shift-click on any selectable row now always drives selection (first click starts it, subsequent shift-clicks range-extend); pin remains via drag-to-Pinned, the row menus, and the bulk bar. Pinned empty-state hint updated in en/zh/zh-hant/ja; row gesture contract pinned by new session-row component tests. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
🔎 Lint report:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Operator feedback on the multi-select feature merged in #161: with no active selection, shift-click still pinned the row — the legacy binding shadowed the canonical multi-select gesture, so selection mode was unreachable by the muscle memory everyone brings from Finder/Gmail ("shift-click overrides the multi select command").
What changed
apps/desktop/src/app/chat/sidebar/session-row.tsx: shift-click on any selectable row now ALWAYS drives selection — first shift-click starts the selection with that row; subsequent shift-clicks hit the existing selection-active branch and range-extend from the anchor. Pin's shift binding is removed; pin remains reachable via drag-to-Pinned (feat(desktop): drag sessions between Pinned and Sessions to pin/unpin #145), the row context/⋯ menus, and the bulk bar's Pin verb. Rows with no selection wiring keep the legacy pin binding (none render that way today), and archived rows still never pin.apps/desktop/src/app/chat/sidebar/session-row.test.tsx(new): component tests pinning the gesture contract — shift-click selects (never pins) on selectable rows, plain click resumes, alt-click selects, selection-active click/shift toggle/range, legacy fallback, archived guard, checkbox render.en/zh/zh-hant/ja: Pinned empty-state hint no longer advertises shift-click ("Drag a chat here to pin").How to review
session-row.tsx— the reordered shift-key branch (one hunk).session-row.test.tsx— the contract.Evidence
{section: sessions, ids: [b]}, pinned ids stayed[](the old behavior would have pinned); second shift-click on row d →ids: [b, c, d], bar "3 selected".session-row.test.tsx; 47 total pass across the sidebar/selection/bulk suites.Verification
tsc -p . --noEmitclean;eslintclean on touched files.vitest --environment jsdomon session-row + sidebar-selection + session-bulk-actions + use-session-drop-zone suites: 47/47 pass.Risks / gaps
Collaborators