From 4121889a7d19777455250dfc788d301313e22a64 Mon Sep 17 00:00:00 2001 From: brooksc Date: Sat, 23 May 2026 22:07:36 -0700 Subject: [PATCH] fix(sidebar): sync selection on task shortcut --- src/store/navigation.test.ts | 19 +++++++++++++++++++ src/store/navigation.ts | 7 ++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/store/navigation.test.ts b/src/store/navigation.test.ts index d6f740d1..8cdb5d91 100644 --- a/src/store/navigation.test.ts +++ b/src/store/navigation.test.ts @@ -9,6 +9,9 @@ type MockStore = { collapsedTaskOrder: string[]; projects: Array<{ id: string }>; focusedPanel: Record; + sidebarFocused: boolean; + sidebarFocusedProjectId: string | null; + sidebarFocusedTaskId: string | null; }; let mockStore: MockStore; @@ -54,6 +57,9 @@ beforeEach(() => { collapsedTaskOrder: [], projects: [], focusedPanel: {}, + sidebarFocused: false, + sidebarFocusedProjectId: null, + sidebarFocusedTaskId: null, }; }); @@ -128,4 +134,17 @@ describe('jumpToTask', () => { jumpToTask(2); expect(mockStore.activeTaskId).toBe(null); }); + + it('moves the sidebar focus outline when jumping while the sidebar is focused', () => { + mockStore.activeTaskId = 'task-1'; + mockStore.sidebarFocused = true; + mockStore.sidebarFocusedTaskId = 'task-1'; + mockStore.sidebarFocusedProjectId = 'project-1'; + + jumpToTask(2); + + expect(mockStore.activeTaskId).toBe('task-3'); + expect(mockStore.sidebarFocusedTaskId).toBe('task-3'); + expect(mockStore.sidebarFocusedProjectId).toBe(null); + }); }); diff --git a/src/store/navigation.ts b/src/store/navigation.ts index d98de8ca..ffb9de05 100644 --- a/src/store/navigation.ts +++ b/src/store/navigation.ts @@ -76,7 +76,12 @@ export function jumpToTask(index: number): void { // Index against taskOrder so Cmd+N matches the left-to-right tile order // shown in the main area (and the order Cmd+Left/Right cycles through). const id = store.taskOrder[index]; - if (id) setActiveTask(id); + if (!id) return; + setActiveTask(id); + if (store.sidebarFocused) { + setStore('sidebarFocusedTaskId', id); + setStore('sidebarFocusedProjectId', null); + } } export function toggleNewTaskDialog(show?: boolean): void {