perf: remember equivalent session tab source identities

This commit is contained in:
Neil
2026-09-05 18:20:35 -07:00
parent d7722a698c
commit c389e074e7
2 changed files with 31 additions and 2 deletions
@@ -90,6 +90,34 @@ afterEach(() => {
})
describe('session write subscriber allocation', () => {
it.each(['tabsByWorktree', 'unifiedTabsByWorktree'] as const)(
'remembers an equivalent %s source before unrelated writes',
(field) => {
const harness = createHarness()
try {
harness.write(() => ({ [field]: { 'wt-1': [] } }))
vi.advanceTimersByTime(500)
harness.persisted.length = 0
harness.write(() => ({ [field]: { 'wt-1': [] } }))
const calls = countFilterCalls(() => {
for (let write = 0; write < 200; write += 1) {
harness.write(() => ({ runtimePaneTitlesByTabId: {} }))
}
})
expect(calls).toBe(0)
vi.advanceTimersByTime(500)
expect(harness.persisted).toHaveLength(0)
harness.write(() => ({ activeTabId: 'next-tab' }))
vi.advanceTimersByTime(500)
expect(harness.persisted).toHaveLength(1)
} finally {
harness.dispose()
}
}
)
it('allocates nothing for store writes that touch no session field', () => {
const harness = createHarness()
try {
@@ -233,12 +233,13 @@ export function createSessionWriteSubscriber({
prev === null
? [...SESSION_RELEVANT_FIELDS]
: SESSION_RELEVANT_FIELDS.filter((key) => prev?.[key] !== next[key])
// Equivalent projections still consume the new source identities.
prevTabsSource = state.tabsByWorktree
prevUnifiedTabsSource = state.unifiedTabsByWorktree
if (changedFields.length === 0 && pendingChangedFields.size === 0) {
return
}
prev = next
prevTabsSource = state.tabsByWorktree
prevUnifiedTabsSource = state.unifiedTabsByWorktree
for (const field of changedFields) {
pendingChangedFields.add(field)
}