Skip to content

feat(ui): communication and AI chat #4911

Description

@ubugeeei

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:uiAccessible SFC UI package (@vizejs/ui)priority:p1High priority before v1 alpha production readiness

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions