From 1087f295e72cfdbe9251037b0a851777dc49e23e Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Tue, 24 Mar 2026 09:17:00 -0700 Subject: [PATCH] fix: update sortOrder on worktree activation for correct recent sorting When a worktree is activated, update its sortOrder timestamp so that the "recent" sort reflects the actual last-accessed time. Co-Authored-By: Claude Opus 4.6 --- src/renderer/src/store/slices/worktrees.ts | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/store/slices/worktrees.ts b/src/renderer/src/store/slices/worktrees.ts index 94fa715ca83..90b2f0a56f9 100644 --- a/src/renderer/src/store/slices/worktrees.ts +++ b/src/renderer/src/store/slices/worktrees.ts @@ -197,6 +197,7 @@ export const createWorktreeSlice: StateCreator setActiveWorktree: (worktreeId) => { let shouldClearUnread = false const prevActiveId = get().activeWorktreeId + const now = Date.now() set((s) => { if (!worktreeId) { return { activeWorktreeId: null } @@ -229,9 +230,10 @@ export const createWorktreeSlice: StateCreator activeWorktreeId: worktreeId, activeFileId, activeTabType, - worktreesByRepo: shouldClearUnread - ? applyWorktreeUpdates(s.worktreesByRepo, worktreeId, { isUnread: false }) - : s.worktreesByRepo + worktreesByRepo: applyWorktreeUpdates(s.worktreesByRepo, worktreeId, { + ...(shouldClearUnread ? { isUnread: false } : {}), + sortOrder: now + }) } }) @@ -258,16 +260,21 @@ export const createWorktreeSlice: StateCreator get().refreshGitHubForWorktree(worktreeId) } - if (!worktreeId || !shouldClearUnread) { + if (!worktreeId || !findWorktreeById(get().worktreesByRepo, worktreeId)) { return } - void window.api.worktrees - .updateMeta({ worktreeId, updates: { isUnread: false } }) - .catch((err) => { - console.error('Failed to clear unread state for active worktree:', err) - void get().fetchWorktrees(getRepoIdFromWorktreeId(worktreeId)) - }) + const updates: Parameters[0]['updates'] = { + sortOrder: now + } + if (shouldClearUnread) { + updates.isUnread = false + } + + void window.api.worktrees.updateMeta({ worktreeId, updates }).catch((err) => { + console.error('Failed to persist worktree activation state:', err) + void get().fetchWorktrees(getRepoIdFromWorktreeId(worktreeId)) + }) }, allWorktrees: () => Object.values(get().worktreesByRepo).flat()