mirror of
https://github.com/NanmiCoder/cc-haha
synced 2026-07-19 13:33:35 +08:00
Merge branch 'main' into fix/issue-809-plus-batch-a
This commit is contained in:
commit
f36af8e17f
@ -287,6 +287,40 @@ describe('chatStore history mapping', () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('does not prewarm an existing transcript when opening it for history review', () => {
|
||||||
|
sessionStoreSnapshot.sessions = [{
|
||||||
|
id: TEST_SESSION_ID,
|
||||||
|
title: 'Existing transcript',
|
||||||
|
createdAt: '2026-06-20T10:00:00.000Z',
|
||||||
|
modifiedAt: '2026-06-20T10:30:00.000Z',
|
||||||
|
messageCount: 4,
|
||||||
|
projectPath: '/workspace/project',
|
||||||
|
workDir: '/workspace/project',
|
||||||
|
workDirExists: true,
|
||||||
|
}]
|
||||||
|
|
||||||
|
useChatStore.getState().connectToSession(TEST_SESSION_ID)
|
||||||
|
|
||||||
|
expect(sendMock).not.toHaveBeenCalledWith(TEST_SESSION_ID, { type: 'prewarm_session' })
|
||||||
|
})
|
||||||
|
|
||||||
|
it('still prewarms empty placeholder sessions so new chats start quickly', () => {
|
||||||
|
sessionStoreSnapshot.sessions = [{
|
||||||
|
id: TEST_SESSION_ID,
|
||||||
|
title: 'New Session',
|
||||||
|
createdAt: '2026-06-20T10:00:00.000Z',
|
||||||
|
modifiedAt: '2026-06-20T10:00:00.000Z',
|
||||||
|
messageCount: 0,
|
||||||
|
projectPath: '/workspace/project',
|
||||||
|
workDir: '/workspace/project',
|
||||||
|
workDirExists: true,
|
||||||
|
}]
|
||||||
|
|
||||||
|
useChatStore.getState().connectToSession(TEST_SESSION_ID)
|
||||||
|
|
||||||
|
expect(sendMock).toHaveBeenCalledWith(TEST_SESSION_ID, { type: 'prewarm_session' })
|
||||||
|
})
|
||||||
|
|
||||||
it('preserves thinking blocks when restoring transcript history', () => {
|
it('preserves thinking blocks when restoring transcript history', () => {
|
||||||
const messages: MessageEntry[] = [
|
const messages: MessageEntry[] = [
|
||||||
{
|
{
|
||||||
|
|||||||
@ -902,6 +902,11 @@ async function fetchAndMapSessionHistory(sessionId: string) {
|
|||||||
|
|
||||||
const historyLoadsInFlight = new Map<string, Promise<void>>()
|
const historyLoadsInFlight = new Map<string, Promise<void>>()
|
||||||
|
|
||||||
|
function shouldPrewarmSession(sessionId: string): boolean {
|
||||||
|
const knownSession = useSessionStore.getState().sessions.find((session) => session.id === sessionId)
|
||||||
|
return !knownSession || knownSession.messageCount === 0
|
||||||
|
}
|
||||||
|
|
||||||
export const useChatStore = create<ChatStore>((set, get) => ({
|
export const useChatStore = create<ChatStore>((set, get) => ({
|
||||||
sessions: {},
|
sessions: {},
|
||||||
|
|
||||||
@ -948,7 +953,11 @@ export const useChatStore = create<ChatStore>((set, get) => ({
|
|||||||
if (runtimeSelection) {
|
if (runtimeSelection) {
|
||||||
wsManager.send(sessionId, { type: 'set_runtime_config', ...runtimeSelection })
|
wsManager.send(sessionId, { type: 'set_runtime_config', ...runtimeSelection })
|
||||||
}
|
}
|
||||||
if (!sessionId.startsWith('__') && !useTeamStore.getState().getMemberBySessionId(sessionId)) {
|
if (
|
||||||
|
!sessionId.startsWith('__') &&
|
||||||
|
!useTeamStore.getState().getMemberBySessionId(sessionId) &&
|
||||||
|
shouldPrewarmSession(sessionId)
|
||||||
|
) {
|
||||||
wsManager.send(sessionId, { type: 'prewarm_session' })
|
wsManager.send(sessionId, { type: 'prewarm_session' })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user