Why: reproduced with headless Chromium - clicking an artifact row with no
conversation selected closed the workspace overlay and nothing else appeared.
requestPreview stores tabs under currentConvId ?? '_' while the render side
required a non-null currentConvId, so the preview pane never mounted in the
empty state. The empty state was itself a trap: currentConvId was not
persisted, so every reload landed there.
Evidence: vitest 85/85 (new preview-empty-state tests for the key contract
and orphan-tab merge); browser replay on the fixed build shows the preview
pane mounting with rendered docx content from the empty state and the
conversation restoring after reload (screenshots in the Dev task card).
Impact: previewTabsKey() unifies the read/write key; entering a conversation
adopts orphan '_' tabs; the last conversation id persists and restores once
on boot; deliverable cards toast when the artifact is gone instead of
silently doing nothing.
Refs: Dev task feature/empty-state-preview-fix; diagnosis session 2026-10-10.
weichen
merged commit 339a9ebc2d into main2026-10-10 08:24:30 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why: headless Chromium 实测复现——空态(未选会话)点击工件行后仅工件弹层关闭、预览区完全不出现(requestPreview 写 currentConvId ?? '_' 键,渲染判 currentConvId 非空,键口径不一致);且 currentConvId 不持久化,刷新必回空态,构成高频触发路径(2026-10-10 用户实测问题 2)。
改动:
Evidence: vitest 85/85(新增 preview-empty-state 3 测:键口径、孤儿收编、无孤儿不动);修复构建浏览器回放:空态点击→预览区挂载且 docx 渲染(bodyLen=157);刷新→会话恢复(stillEmpty=false)。截图与 Dev 任务卡。
Refs: Dev 任务 feature/empty-state-preview-fix。