Skip to content

[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
OmarB97 merged 1 commit into
mainfrom
work/hermes-desktop-sidebar-shift-click-selects
Jun 11, 2026
Merged

OmarB97 merged 1 commit into
mainfrom
work/hermes-desktop-sidebar-shift-click-selects

Conversation

@OmarB97

@OmarB97 OmarB97 commented Jun 10, 2026

Copy link
Copy Markdown
Owner

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.
  • i18n en/zh/zh-hant/ja: Pinned empty-state hint no longer advertises shift-click ("Drag a chat here to pin").

How to review

  1. session-row.tsx — the reordered shift-key branch (one hunk).
  2. session-row.test.tsx — the contract.
  3. Locale hint strings last.

Evidence

  • Harness (real Chromium, seeded stores): FIRST gesture shift-click on row b → selection {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".
  • 7 new component assertions in session-row.test.tsx; 47 total pass across the sidebar/selection/bulk suites.

Verification

  • tsc -p . --noEmit clean; eslint clean on touched files.
  • vitest --environment jsdom on session-row + sidebar-selection + session-bulk-actions + use-session-drop-zone suites: 47/47 pass.
  • Renderer browser-harness interaction pass as described under Evidence.

Risks / gaps

  • Shift-click-to-pin muscle memory no longer pins — intentional operator-requested change; pin keeps three other paths, low risk.
  • Upstream port rides the next coherent fork→upstream sync with the rest of the fork-canonical sidebar stack — already tracked.

Collaborators

  • @OmarB97 (operator)
  • Claude Fable 5 (ko-mac.claude) — implementation

…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>
@github-actions

Copy link
Copy Markdown

🔎 Lint report: work/hermes-desktop-sidebar-shift-click-selects vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10627 on HEAD, 10627 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5556 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@OmarB97
OmarB97 merged commit 76d8978 into main Jun 11, 2026
26 checks passed
@OmarB97
OmarB97 deleted the work/hermes-desktop-sidebar-shift-click-selects branch June 11, 2026 00:04
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