Why: tool artifacts were only reachable via the collapsed process
section or the artifacts workspace; users had to read model text to
learn a file existed. Deliverables should appear directly in the
conversation as an openable card (ZCode/Kimi pattern) that opens the
right-rail preview.
Evidence:
- Conversation.tsx artifact_ref renderer upgraded from a small chip to
a deliverable card (icon + name + kind/size meta + preview affordance
+ single download action); whole card click = rail preview (the one
preview placement, fullscreen still reachable from the rail header)
- live.ts projects artifact items as content parts pinned after the
reply text, isomorphic with the new llm.go persisted order; card is
visible while streaming
- styles: deliverable-card uses tokens only (radius-lg card, bg-raised,
hairline border, mk-rise-in entrance); design-guard suite green
- vitest 40/40 (live.test pinned-tail case updated, messageparts.test
covers new persisted order plus legacy inline order); tsc clean
Impact: every generated artifact (docx/pdf/image/…) now surfaces as an
in-chat card immediately, click-to-preview in the right rail with real
formatting for styled docx; workspace panel (⌘1) unchanged as the
file-system fallback.
Refs: task feature/deliverable-docx-r1 (backend: write_docx + pinned
artifact_ref)
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.
task feature/deliverable-docx-r1 (frontend half): deliverable card in message flow (whole-card click = rail preview, single download), live.ts pins artifact projection after reply text isomorphic to llm.go. vitest 40/40, tsc clean.