mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 02:29:33 +01:00
fix(edit-history): re-read at the end of a turn on session:idle
transcript:complete fires on a `result` line, and claude's interactive transcript has none (checked against a live session: user/assistant/system turn_duration, no result), so an open panel never re-read at the end of a turn. A background subagent writes after the Agent tool end that started it, so its edits stayed missing until the next edit- capable tool end or a manual refresh. The panel now re-reads on its session's session:idle, through _onSessionIdle (the SSE handler map holds one handler per event). Live: a backgrounded subagent's Write shows up in the open panel at the end of the turn, without a click. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
dcdeaab98d
commit
f5ce80dce2
5 files changed
+27
-11
No files matched your search
@@ -323,8 +323,12 @@ describe('Edit history panel in a real browser', () => {
|
||||
);
|
||||
await page.waitForTimeout(800);
|
||||
expect(syncReads(sessionA)).toBe(before + 1);
|
||||
// The end of a turn re-reads too (a parallel tool call reports one tool end only).
|
||||
(server as any).broadcast('transcript:complete', { sessionId: sessionA, timestamp: Date.now() });
|
||||
// The end of a turn re-reads too (a parallel tool call reports one tool end only, a background
|
||||
// subagent writes later): `session:idle`, since claude's transcript has no `result` line.
|
||||
(server as any).broadcast('session:idle', { id: 'someone-else' });
|
||||
await page.waitForTimeout(1200);
|
||||
expect(syncReads(sessionA)).toBe(before + 1);
|
||||
(server as any).broadcast('session:idle', { id: sessionA });
|
||||
await page.waitForTimeout(1200);
|
||||
expect(syncReads(sessionA)).toBe(before + 2);
|
||||
});
|
||||
@@ -334,7 +338,7 @@ describe('Edit history panel in a real browser', () => {
|
||||
await page.waitForSelector('#editHistoryPanel:not(.visible)', { state: 'attached' });
|
||||
const before = syncReads(sessionA);
|
||||
toolEnd(sessionA, 'Edit');
|
||||
(server as any).broadcast('transcript:complete', { sessionId: sessionA, timestamp: Date.now() });
|
||||
(server as any).broadcast('session:idle', { id: sessionA });
|
||||
await page.waitForTimeout(1200);
|
||||
expect(syncReads(sessionA)).toBe(before);
|
||||
expect(await page.$('#editHistoryUnread')).toBeNull(); // no unread badge: closed means idle
|
||||
|
||||
Reference in new issue
Block a user