| v0.26.7 | React #185 回调稳定化 + ChapterSwitch 路径守卫 | 未根治 |
| v0.26.8 | isTextDuplicate + isTextAlreadyInEditor,覆盖 pipeline-complete/ChapterSwitch/smart_execute 竞态 | 未根治 |
| v0.26.9 | 重复检测基准从 editorRef.getText() 改 latestContentRef.current(DOM 滞后) | 未根治 |
| v0.26.10 | latestContentRef + editorRef.getText() 双重基准 + appendText 最终防线 | 未根治 |
| v0.26.11 | 追加后立即 editorRef.getHTML() 同步 store 与 latestContentRef;appendText 空文档分支标记外部同步 | 未根治 |
| v0.26.12 | 修 characters null 白屏;useSubscription 空值防护;E2E | 相关但非根因 |
| v0.26.13 | 渲染层:shouldShowGhostTree 改 !!generatedText(空幽灵容器残留)+ 自动接受先 setIsGenerating(false) | 视觉重复缓解 |
| v0.26.14 | 日志证实数据层只追加一次,重复来自 LLM 正文自身首尾回环;新增 trimSelfRepetition(段落级 + KMP border) | 治标:清 LLM 自重复 |
| v0.26.16 | 结构性根治:生成侧 8% 闸门 + anti-repeat 指令;前端单写者状态机 idle→generating→delivered | 胜 |
| v0.26.18 | 真正的独立根因被发现:src-frontend/src/utils/format.ts 的 splitChineseSentences 全局正则 lastIndex 在 exec 返回 null 时被重置为 0,循环外读取导致 text.slice(0)(整段)被当末句再 push → autoFormatText 段落分组后内容翻倍(日志:0+1446 → 2933 ≈ 2×1446)。修复:循环内捕获 lastIndex,3 个契约单测。Gap A/B/C 单写者加固作为正交防御保留 | 胜(format 层) |
| v0.26.23 | auto_contract 4 label 静默化(解除续写 6 分钟阻塞,根因非重复但同症状域) | 收尾 |