Skip to content

refactor(desktop): ホットキーシステムをreact-hotkeys-hookに全面移行 (#3178)#87

Merged
MocA-Love merged 3 commits intomainfrom
merge/upstream-hotkey-rewrite
Apr 5, 2026
Merged

refactor(desktop): ホットキーシステムをreact-hotkeys-hookに全面移行 (#3178)#87
MocA-Love merged 3 commits intomainfrom
merge/upstream-hotkey-rewrite

Conversation

@MocA-Love
Copy link
Copy Markdown
Owner

Summary

upstream 1219200 (superset-sh#3178) のホットキーシステム全面書き換えを取り込み。

変更内容

  • 旧システム削除: shared/hotkeys.ts (1042行) + stores/hotkeys/ (357行) + tRPC hotkeysルーター
  • 新システム導入: renderer/hotkeys/ に react-hotkeys-hook ベースの新モジュール
  • API移行: useAppHotkeyuseHotkeyHotkeyTooltipContentHotkeyLabeluseHotkeyTextuseHotkeyDisplay
  • 純減: -1718行(3219行削除、1501行追加)

フォーク固有の対応

  • 新レジストリに BROWSER_RELOAD / BROWSER_HARD_RELOAD / SEARCH_IN_FILES を追加
  • HotkeyCategory に "Browser" カテゴリ追加
  • menu.ts のフォーク独自メニュー項目維持
  • browser-shortcut-events.ts 維持
  • キーボード設定ページにBrowserカテゴリ追加

コンフリクト解消 (9件)

  • trpc/routers/index.ts: hotkeysルーター削除
  • menu.ts: フォーク独自メニュー維持 + acceleratorハードコード化
  • _dashboard/layout.tsx: useHotkey import追加
  • v2-workspace/page.tsx: HotkeyLabel移行 + フォーク構造維持
  • workspace/page.tsx: 全面API移行 + 閉じ括弧修正
  • usePresetHotkeys.ts: API移行
  • EmptyTabView.tsx: API移行
  • stores/hotkeys/store.ts: 削除受け入れ
  • shared/hotkeys.ts: 削除受け入れ

Test plan

  • デスクトップアプリのビルド確認
  • 全ホットキーの動作確認(Cmd+P, Cmd+L, Cmd+N等)
  • ブラウザリロードホットキー (Cmd+Shift+R) 動作確認
  • キーボード設定ページの表示・カスタマイズ確認
  • ターミナル内でのホットキー動作確認
  • v1/v2ワークスペース両方でのホットキー動作確認

…erset-sh#3178)

upstream 1219200 の取り込み:
- shared/hotkeys.ts (1042行) + stores/hotkeys/ (357行) を削除
- renderer/hotkeys/ に新システム導入 (react-hotkeys-hook ベース)
- useAppHotkey → useHotkey、HotkeyTooltipContent → HotkeyLabel に全面移行
- tRPC hotkeysルーター削除、メニューacceleratorハードコード化
- キーボード設定ページを新システムで書き直し

フォーク固有の対応:
- BROWSER_RELOAD / BROWSER_HARD_RELOAD を新レジストリに追加
- SEARCH_IN_FILES を新レジストリに追加
- HotkeyCategory に "Browser" カテゴリ追加
- menu.ts のフォーク独自メニュー項目 (Browser Reload) 維持
- browser-shortcut-events.ts 維持
- workspace/page.tsx のコンフリクト解消 (閉じ括弧修正含む)
1. キーバインド競合解消
   - BROWSER_RELOAD mac: meta+shift+r → meta+alt+r (REOPEN_TABとの衝突回避)
   - BROWSER_HARD_RELOAD win/linux: ctrl+shift+alt+r → ctrl+alt+shift+e (同上)

2. keep-alive workspace二重発火防止
   - workspace固有のuseHotkey呼び出しに { enabled: isActive } を追加
   - 非アクティブworkspaceではNEW_GROUP/CLOSE_TAB/SPLIT_*等が発火しない
   - ナビゲーション系(PREV_TAB等)はガードなし(全workspaceで有効)

3. SEARCH_IN_FILES Windows/Linux競合回避
   - ctrl+shift+f → ctrl+shift+h (FIND_IN_TERMINAL等との衝突回避)
1. menu.ts acceleratorとregistry.tsのキー不一致修正
   - browserReloadAccelerator: CmdOrCtrl+Shift+R → CmdOrCtrl+Alt+R
   - registry.tsのmeta+alt+rと一致するように

2. usePresetHotkeysにenabledオプション追加
   - 非アクティブworkspaceでプリセットホットキーが発火しない
   - 呼び出し元で { enabled: isActive } を渡す

3. 全useHotkeyにenabled: isActive追加
   - PREV_TAB/NEXT_TAB/ALT、JUMP_TO_TAB_1-9
   - PREV_PANE/NEXT_PANE
   - TOGGLE_SIDEBAR/TOGGLE_EXPAND_SIDEBAR
   - PREV_WORKSPACE/NEXT_WORKSPACE
   - hidden workspaceでの誤発火を完全に防止
@MocA-Love MocA-Love merged commit cf96164 into main Apr 5, 2026
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