文件最后提交记录最后更新时间
feat(ui): render compacted history as a collapsible card on all three surfaces (#1649) After auto-compaction, the synthesized recap was being stored as a plain assistant message with a HISTORY_FOLD_MARKER prefix. None of the three surfaces special-cased it — TUI hydrated it as a regular streaming card on resume; Desktop and Dashboard rendered it inline through AssistantText. Users had no way to tell compaction had happened or distinguish the recap from a real model reply. - Single-source the marker + helpers in @reasonix/core-utils/compaction (COMPACTION_SUMMARY_MARKER, isCompactionSummary, stripCompactionMarker). Re-export the constant from src/context-manager.ts so existing HISTORY_FOLD_MARKER imports keep resolving. - TUI: new kind: "compaction" in state/cards.ts, renderer in cards/CompactionCard.tsx, hydrate.ts emits it instead of a streaming card when the marker is present. - Desktop / Dashboard: CompactionCard component in ui/cards.tsx, intercepted in the assistant-segment renderer in ui/thread.tsx. Default-collapsed, archive icon, header shows char count, body renders the recap markdown. - Wire vite + tsconfig aliases for the sub-import path so browser bundles don't pull in Node-only siblings (tildeify) via the barrel. Tests: marker detection edge cases in core-utils, hydrate emits compaction card for the marker, full verify (262 files / 3595 tests). Follow-up: surface the loop "warning" event ("folded N messages → M") as a visible row on Desktop / Dashboard (currently flows through protocol, no ChatMessage reducer).5 天前
feat(ui): render compacted history as a collapsible card on all three surfaces (#1649) After auto-compaction, the synthesized recap was being stored as a plain assistant message with a HISTORY_FOLD_MARKER prefix. None of the three surfaces special-cased it — TUI hydrated it as a regular streaming card on resume; Desktop and Dashboard rendered it inline through AssistantText. Users had no way to tell compaction had happened or distinguish the recap from a real model reply. - Single-source the marker + helpers in @reasonix/core-utils/compaction (COMPACTION_SUMMARY_MARKER, isCompactionSummary, stripCompactionMarker). Re-export the constant from src/context-manager.ts so existing HISTORY_FOLD_MARKER imports keep resolving. - TUI: new kind: "compaction" in state/cards.ts, renderer in cards/CompactionCard.tsx, hydrate.ts emits it instead of a streaming card when the marker is present. - Desktop / Dashboard: CompactionCard component in ui/cards.tsx, intercepted in the assistant-segment renderer in ui/thread.tsx. Default-collapsed, archive icon, header shows char count, body renders the recap markdown. - Wire vite + tsconfig aliases for the sub-import path so browser bundles don't pull in Node-only siblings (tildeify) via the barrel. Tests: marker detection edge cases in core-utils, hydrate emits compaction card for the marker, full verify (262 files / 3595 tests). Follow-up: surface the loop "warning" event ("folded N messages → M") as a visible row on Desktop / Dashboard (currently flows through protocol, no ChatMessage reducer).5 天前
feat(ui): render compacted history as a collapsible card on all three surfaces (#1649) After auto-compaction, the synthesized recap was being stored as a plain assistant message with a HISTORY_FOLD_MARKER prefix. None of the three surfaces special-cased it — TUI hydrated it as a regular streaming card on resume; Desktop and Dashboard rendered it inline through AssistantText. Users had no way to tell compaction had happened or distinguish the recap from a real model reply. - Single-source the marker + helpers in @reasonix/core-utils/compaction (COMPACTION_SUMMARY_MARKER, isCompactionSummary, stripCompactionMarker). Re-export the constant from src/context-manager.ts so existing HISTORY_FOLD_MARKER imports keep resolving. - TUI: new kind: "compaction" in state/cards.ts, renderer in cards/CompactionCard.tsx, hydrate.ts emits it instead of a streaming card when the marker is present. - Desktop / Dashboard: CompactionCard component in ui/cards.tsx, intercepted in the assistant-segment renderer in ui/thread.tsx. Default-collapsed, archive icon, header shows char count, body renders the recap markdown. - Wire vite + tsconfig aliases for the sub-import path so browser bundles don't pull in Node-only siblings (tildeify) via the barrel. Tests: marker detection edge cases in core-utils, hydrate emits compaction card for the marker, full verify (262 files / 3595 tests). Follow-up: surface the loop "warning" event ("folded N messages → M") as a visible row on Desktop / Dashboard (currently flows through protocol, no ChatMessage reducer).5 天前
feat(core-utils): introduce @reasonix/core-utils workspace package (Phase 1) (#1328) Closes #1322 (Phase 1) Co-authored-by: paradoxSCH <sch.paradox@foxmail.com>10 天前