mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-16 13:03:31 +08:00
Open session tabs can outlive the title value they were created with, while the sidebar and session detail view read from the refreshed session list. Refresh existing tab titles when a session tab is reopened and after session list refreshes so the top tab bar cannot keep a stale generated title. Constraint: Sidebar filtering and session refresh should not leave already-open tabs with stale labels. Rejected: Only rely on WebSocket title update events | restored tabs and already-open tabs can miss later session-list corrections. Confidence: high Scope-risk: narrow Directive: Keep session tab titles derived from current session list data when available. Tested: cd desktop && bun run test -- --run src/stores/tabStore.test.ts src/stores/sessionStore.test.ts Tested: cd desktop && bun run lint Tested: cd desktop && bun run test -- --run Tested: agent-browser smoke on http://127.0.0.1:1420/ confirmed top tabs match sidebar and session detail titles.
23 lines
812 B
TypeScript
23 lines
812 B
TypeScript
import { beforeEach, describe, expect, it } from 'vitest'
|
||
import { useTabStore } from './tabStore'
|
||
|
||
describe('tabStore', () => {
|
||
beforeEach(() => {
|
||
useTabStore.setState({ tabs: [], activeTabId: null })
|
||
localStorage.clear()
|
||
})
|
||
|
||
it('refreshes an existing tab title when opening the same session again', () => {
|
||
useTabStore.getState().openTab('session-1', '```json {"title":')
|
||
useTabStore.getState().openTab('session-1', '使用bash写一个shell,随便写点什么东西')
|
||
|
||
expect(useTabStore.getState().tabs).toHaveLength(1)
|
||
expect(useTabStore.getState().tabs[0]).toMatchObject({
|
||
sessionId: 'session-1',
|
||
title: '使用bash写一个shell,随便写点什么东西',
|
||
type: 'session',
|
||
})
|
||
expect(useTabStore.getState().activeTabId).toBe('session-1')
|
||
})
|
||
})
|