Files
orca/src/shared/worktree-sort-order-update.ts
T
Brennan Benson 84bd306949 perf: Stop unchanged worktree refresh churn (#13662)
* fix: stop unchanged worktree refresh churn

* fix: preserve smart sort telemetry recomputations

* fix: preserve duplicate worktree host identities

* perf: skip reconciled catalog traversal

* test: strengthen worktree refresh regressions
2026-08-10 15:44:05 -07:00

33 lines
885 B
TypeScript

export type WorktreeSortOrderUpdate = {
worktreeId: string
sortOrder: number
}
type WorktreeSortOrderMeta = {
sortOrder?: number
}
export function planWorktreeSortOrderUpdates(
orderedIds: readonly string[],
getMeta: (worktreeId: string) => WorktreeSortOrderMeta | undefined,
now: number
): WorktreeSortOrderUpdate[] {
const uniqueIds = [...new Set(orderedIds)]
const existing = uniqueIds.flatMap((worktreeId) => {
const meta = getMeta(worktreeId)
return meta ? [{ worktreeId, sortOrder: meta.sortOrder }] : []
})
const alreadyOrdered = existing.every(
(entry, index) =>
Number.isFinite(entry.sortOrder) &&
(index === 0 || existing[index - 1].sortOrder! > entry.sortOrder!)
)
if (alreadyOrdered) {
return []
}
return existing.map((entry, index) => ({
worktreeId: entry.worktreeId,
sortOrder: now - index * 1000
}))
}