From 3b68fb4e48aaace737342f1062e6ca12ed3e3227 Mon Sep 17 00:00:00 2001 From: Adeniji Adekunle James Date: Tue, 30 Sep 2025 21:43:24 +0100 Subject: [PATCH] feat: add hotkey to toggle chat modes (#1274) (#995) (#1284) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Ctrl+Shift+A (Cmd+Shift+A on Mac) keyboard shortcut to toggle between Ask and Build chat modes. **Changes:** - Created `useChatModeToggle` hook for shared logic - Added shortcut to ChatInput and HomeChatInput components **Usage:** Press Ctrl+Shift+A (or Cmd+Shift+A on Mac) to quickly switch between chat modes without using the UI. image Closes (#995) --- ## Summary by cubic Add a global hotkey to toggle between Ask and Build modes: Ctrl+Shift+A (Cmd+Shift+A on Mac). Makes switching faster without touching the UI and fulfills Linear #995. - **New Features** - Added useChatModeToggle hook to flip selectedChatMode, detect platform, and track PostHog event chat:mode_toggle. - Wired the hotkey into ChatInput and HomeChatInput via useChatModeToggle. - Updated ChatModeSelector tooltip to show the shortcut. --- > [!NOTE] > Adds Cmd/Ctrl + . shortcut to cycle chat modes via a new hook, and updates the mode selector tooltip to show the shortcut. > > - **UX/Hotkey**: > - Introduces `useChatModeToggle` to cycle `settings.selectedChatMode` (captures `chat:mode_toggle`), with platform detection (`detectIsMac`/`useIsMac`) and `useShortcut` binding for `Cmd/Ctrl + .`. > - **Integrations**: > - Wires `useChatModeToggle()` into `components/chat/ChatInput.tsx` and `components/chat/HomeChatInput.tsx` to enable the shortcut in chat inputs. > - **UI**: > - Enhances `components/ChatModeSelector.tsx` tooltip to display the platform-specific shortcut hint (`⌘ + .` or `Ctrl + .`). > > Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit d8cc3fff43b6eb3227623f1c084410f42392c0b3. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot). --------- Co-authored-by: Will Chen --- src/components/ChatModeSelector.tsx | 11 ++++- src/components/chat/ChatInput.tsx | 2 + src/components/chat/HomeChatInput.tsx | 2 + src/hooks/useChatModeToggle.ts | 71 +++++++++++++++++++++++++++ 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/hooks/useChatModeToggle.ts diff --git a/src/components/ChatModeSelector.tsx b/src/components/ChatModeSelector.tsx index 8ebda49..d81c4eb 100644 --- a/src/components/ChatModeSelector.tsx +++ b/src/components/ChatModeSelector.tsx @@ -13,6 +13,7 @@ import { import { useSettings } from "@/hooks/useSettings"; import type { ChatMode } from "@/lib/schemas"; import { cn } from "@/lib/utils"; +import { detectIsMac } from "@/hooks/useChatModeToggle"; export function ChatModeSelector() { const { settings, updateSettings } = useSettings(); @@ -35,6 +36,7 @@ export function ChatModeSelector() { return "Build"; } }; + const isMac = detectIsMac(); return (