Проблема
После #52 (41539b0) turnIndex AI-группы = порядковый номер её user-сообщения
(0-based). Две AI-группы одного хода теперь получают одинаковый turnIndex —
например, автокомпакт или stdout slash-команды рвут ход на две группы
([U1, A1, Compact, A2] — ChunkBuilder флашит AI-буфер на compact/system без
нового user-сообщения). Коллизии даёт и aiCount-фолбэк: [AI, AI, U, A] → [0, 1, 0].
На это завязаны два механизма, и оба ломаются на дублях:
- Навигация — обработчики ищут цель через
items.find(item.group.turnIndex === n) (ChatHistory.tsx ~:428/:474/:510),
побеждает первая: клик по инъекции из ПОЗДНЕЙ группы скроллит/подсвечивает
РАННЮЮ (в случае компакта — до-компактную, не ту сторону границы).
- Идентичность инъекций —
turnGroupId ai-${turnIndex} и генерируемые id
tool-output-ai-N, loop-ai-N, thinking-text-ai-N, wait-loop-ai-N,
task-coord-ai-N, user-msg-ai-N, reread-ai-N
(contextTracker.ts:111-147, :903; claudeMdTracker.ts:512) — две группы одного
хода кладут в один accumulatedInjections инъекции с одинаковыми id →
дубликаты React keys (ContextBadge, FlatInjectionList, ToolOutputsSection,
RankedInjectionList) и неоднозначные id-lookup'ы.
Направление фикса
Навигация и id инъекций — по стабильному id группы (group.id/chunkId),
turnIndex остаётся только отображаемой меткой «Turn N».
Источник: раунд /code-review PR #52, находки 2–3 (подтверждены по коду).
Проблема
После #52 (
41539b0) turnIndex AI-группы = порядковый номер её user-сообщения(0-based). Две AI-группы одного хода теперь получают одинаковый turnIndex —
например, автокомпакт или stdout slash-команды рвут ход на две группы
(
[U1, A1, Compact, A2]— ChunkBuilder флашит AI-буфер на compact/system безнового user-сообщения). Коллизии даёт и aiCount-фолбэк:
[AI, AI, U, A] → [0, 1, 0].На это завязаны два механизма, и оба ломаются на дублях:
items.find(item.group.turnIndex === n)(ChatHistory.tsx ~:428/:474/:510),побеждает первая: клик по инъекции из ПОЗДНЕЙ группы скроллит/подсвечивает
РАННЮЮ (в случае компакта — до-компактную, не ту сторону границы).
turnGroupId ai-${turnIndex}и генерируемые idtool-output-ai-N,loop-ai-N,thinking-text-ai-N,wait-loop-ai-N,task-coord-ai-N,user-msg-ai-N,reread-ai-N(contextTracker.ts:111-147, :903; claudeMdTracker.ts:512) — две группы одного
хода кладут в один accumulatedInjections инъекции с одинаковыми id →
дубликаты React keys (ContextBadge, FlatInjectionList, ToolOutputsSection,
RankedInjectionList) и неоднозначные id-lookup'ы.
Направление фикса
Навигация и id инъекций — по стабильному id группы (
group.id/chunkId),turnIndex остаётся только отображаемой меткой «Turn N».
Источник: раунд
/code-reviewPR #52, находки 2–3 (подтверждены по коду).