diff --git a/web-ui/src/App.tsx b/web-ui/src/App.tsx index de5f960..3c002ff 100644 --- a/web-ui/src/App.tsx +++ b/web-ui/src/App.tsx @@ -449,17 +449,6 @@ export default function App(): ReactElement { setIsSettingsOpen(true); }, []); - useAppHotkeys({ - selectedCard, - isDetailTerminalOpen, - isHomeTerminalOpen, - handleToggleDetailTerminal, - handleToggleHomeTerminal, - handleToggleExpandDetailTerminal, - handleToggleExpandHomeTerminal, - handleOpenCreateTask, - }); - const { handleProgrammaticCardMoveReady, confirmMoveTaskToTrash, @@ -529,6 +518,18 @@ export default function App(): ReactElement { sendTaskSessionInput, }); + useAppHotkeys({ + selectedCard, + isDetailTerminalOpen, + isHomeTerminalOpen, + handleToggleDetailTerminal, + handleToggleHomeTerminal, + handleToggleExpandDetailTerminal, + handleToggleExpandHomeTerminal, + handleOpenCreateTask, + onStartAllTasks: handleStartAllBacklogTasksWithServiceSetupPrompt + }); + useEffect(() => { if (!pendingTaskStartAfterEditId) { return; diff --git a/web-ui/src/components/project-navigation-panel.tsx b/web-ui/src/components/project-navigation-panel.tsx index ceeac13..4d5a16a 100644 --- a/web-ui/src/components/project-navigation-panel.tsx +++ b/web-ui/src/components/project-navigation-panel.tsx @@ -208,11 +208,13 @@ export function ProjectNavigationPanel({ const isMac = typeof navigator !== "undefined" && /Mac|iPhone|iPad|iPod/.test(navigator.platform || navigator.userAgent); const MOD = isMac ? "\u2318" : "Ctrl"; +const ALT = isMac ? '\u2325' : 'Alt' const ESSENTIAL_SHORTCUTS = [ { keys: ["C"], label: "New task" }, { keys: [MOD, "\u23CE"], label: "Create task" }, { keys: [MOD, "Shift", "\u23CE"], label: "Create & start" }, + { keys: [ALT, "Shift", "s"], label: "Start all tasks" }, { keys: [MOD, "J"], label: "Toggle terminal" }, { keys: [MOD], label: "Hold to link tasks" }, ]; diff --git a/web-ui/src/hooks/use-app-hotkeys.ts b/web-ui/src/hooks/use-app-hotkeys.ts index 40a734f..9f5073c 100644 --- a/web-ui/src/hooks/use-app-hotkeys.ts +++ b/web-ui/src/hooks/use-app-hotkeys.ts @@ -11,6 +11,7 @@ interface UseAppHotkeysInput { handleToggleExpandDetailTerminal: () => void; handleToggleExpandHomeTerminal: () => void; handleOpenCreateTask: () => void; + onStartAllTasks: () => void; } export function useAppHotkeys({ @@ -22,6 +23,7 @@ export function useAppHotkeys({ handleToggleExpandDetailTerminal, handleToggleExpandHomeTerminal, handleOpenCreateTask, + onStartAllTasks, }: UseAppHotkeysInput): void { useHotkeys( "mod+j", @@ -40,6 +42,17 @@ export function useAppHotkeys({ [handleToggleDetailTerminal, handleToggleHomeTerminal, selectedCard], ); + useHotkeys( + "alt+shift+s", + onStartAllTasks, + { + enableOnContentEditable: false, + enableOnFormTags: false, + preventDefault: true, + }, + [onStartAllTasks], + ); + useHotkeys( "mod+m", () => {