Tracks this family from #3134 . Experimental @vizejs/ui workstream.
Outcome
Ship message, thread, and AI chat families: streaming tokens, tools, citations, abort, and accessible composition.
Authoring contract
Public components are real .vue files. Handwritten render functions and JSX are not the public authoring model.
Generated compiler output stays an internal artifact.
Hover and completion must be enough to use the API without leaving the editor.
Keep runtime script small. Prefer native HTML, CSS, and platform APIs.
Extension is a first-class contract: parts, slots, CSS properties, and typed hooks.
Inventory
Chat Message, Bubble, Attachment, Marker, Message Scroller
Composer with IME, markdown, mentions, and file paste
Streaming tokens, abort, retry, edit, and stale-stream discard
Tool-call cards, citations, and structured result slots
Thread navigation, reactions, and read markers
Comment thread, mentions, emoji picker, activity feed, presence, notification preferences
Live region policy for incoming messages without stealing focus
Dependencies
Depends on #4888 and #4910 . Toasts are #4905 .
Quality gates
This family is not done until it satisfies the parent definition of done in #3134 :
Canonical Vue SFCs with explicit <template>, <script setup lang="ts">, and scoped <style>
kebab-case filenames for every public source, test, story, and fixture
Every public prop, emit, slot, expose, CSS custom property, part, and data attribute documented; every option states @default
Literal types for props, emits, slots, expose, and useTemplateRef
Equivalent public contracts across DOM, SSR, and Vapor builds
WCAG 2.2 AA, WAI-ARIA APG, keyboard, pointer, touch, focus, and dismissal where applicable
LTR/RTL, locale, reduced motion, forced colors, and zoom
SSR, hydration, deterministic IDs, Teleport, Suspense, islands, and no request-global state
Colocated Vue Test Utils tests, Vitest browser-mode coverage, and Playwright visual regression
Musea stories covering states, slots, parts, and presets
Tree-shakable ESM subpath, exact sideEffects, and enforced bundle budgets
Headless by default; visual style arrives only through opt-in presets
Testbed notes
Streaming SSR/island fixtures, cancellation tests, and generic slot types for tool results. Composer is an IME testbed.
Out of scope
Toast notifications belong in overlays. Audio/video attachments use the media family.
Tracks this family from #3134. Experimental
@vizejs/uiworkstream.Outcome
Ship message, thread, and AI chat families: streaming tokens, tools, citations, abort, and accessible composition.
Authoring contract
.vuefiles. Handwritten render functions and JSX are not the public authoring model.Inventory
Dependencies
Depends on #4888 and #4910. Toasts are #4905.
Quality gates
This family is not done until it satisfies the parent definition of done in #3134:
<template>,<script setup lang="ts">, and scoped<style>@defaultuseTemplateRefsideEffects, and enforced bundle budgetsTestbed notes
Streaming SSR/island fixtures, cancellation tests, and generic slot types for tool results. Composer is an IME testbed.
Out of scope
Toast notifications belong in overlays. Audio/video attachments use the media family.