The road — conditions, not dates

One road, no dates.

aparté ships when a barrier is cleared, not when a month arrives — so this page carries no calendar. What npm serves, what the current branch holds, the conditions the beta and 1.0 each have to meet, what is still to build, and what we decided not to build, with the reason.

  • shipped
  • in progress
  • open
  1. Shipped

    On (npm)

    0.17.3 is the line this site was built from: 21 packages on a single version, MIT. The docs site deploys from main.

  2. In progress

    Where we (are)

    0.17.0 is out as the beta, and next is aligned on main again. What is in progress now is the soak — a beta that stays quiet — and the first 0.17.x series: the four wrappers audited as a first consumer would use them, and what that audit found made right.

    Dogfooding

    • paulrichez.fr — Angular 19, the agent loop server-side over its own SSE events: the first public site to move onto the library, on 0.17.0. In progress, not yet live on it.
    • bonaparte — a local-AI harness on the React wrapper, private: the first consumer, and where most of the frictions the library fixed were found.

    Counted on the tree

    24elements
    25kit families
    40typed events
    462CSS variablesdocumented
    346CSS classesacross 44 sheets
    9plugins
    4wrappersReact, Vue, Svelte, Angular — plus vanilla
    3,324testsin 336 files
    32gate steps25 of them guards
    0third-party depscore’s one dependency is @aparte/engine, first-party
  3. Shipped

    (Beta)

    The beta is a dist-tag and a promise, and both are out: npm i @aparte/core@beta installs 0.17.0, and the declared surface — elements, attributes, events and their detail, barrel exports, CSS tokens and contract classes, locale keys — is frozen as of that version: it stops changing without a notice release. The alpha broke cleanly; the beta warns.

    The barrier, item by item

    1. One agent loop, one unified tool model. done
    2. No critical or major audit finding left open. done · re-checked by the cold audit
    3. The frozen surface declared on a stability page. done · the page declares what is frozen, and the gate refuses a removal without a notice
    4. The visible UI defects fixed. done
    5. Professional hygiene: SECURITY.md, issue templates, main protected server-side. done
    6. Docs with no first-minute gap: every public export documented, the compare page, the support matrix. done
    7. The browser matrix, the coverage floors, publint and attw green on every release. done · recurring
    8. An external consumer that followed a release without breaking. in progress · the first signs are in

    The beta shipped on the seven conditions this list can measure. The two it cannot hold: the cold audit ran on the final tree before the cut, and soak time is what the barrier below is for.

    What 0.17.0 carries

    In the library

    • The comfortable default density.
    • Compaction left core for @aparte/plugin-compaction.
    • @aparte/plugin-artifacts — the artifact card as a tool renderer, and as a stream block.
    • The ask_user rework, and @aparte/plugin-approval.
    • A title for every conversation: the manager takes a title provider, and @aparte/plugin-titler binds one to a 133 KB model that runs in the browser, in 17 languages.
    • The scroll rail measured against the market and reworked: a list of ticks capped at a share of the transcript, centred on it, and a jump that lands where it aimed.

    New elements and recipes

    • The application shell: <aparte-sidebar>, plus the app-shell and app-header recipes.
    • <aparte-split> — two panes and a seam you can drag, arrow or collapse.
    • <aparte-scroll-rail>.
    • <aparte-context>, as a bar or as a ring.
    • <aparte-suggestions>.
    • <aparte-elicitation>, the typed-question panel.
    • The kit dialog, on a native <dialog>.
    • Markdown tables, styled like the prose around them.

    On the site, and on the project

    • A live demo per layout family: reading column, feed, builder split, side panel, empty state, an artifact in a pane.
    • A UI kit section — twenty-five families, live preview first.
    • The components grouped by purpose: conversation, input, shell, utility.
    • The compare page, and the support matrix.
    • SECURITY.md, and main protected.
  4. Open

    (1.0)

    The barrier from beta to 1.0.

    • A quiet beta — no unannounced breaking change.in progress · since 0.17.0
    • A published and guarded performance budget: token-to-paint, the memory of a 500-message conversation, gzip per package.
    • SSR proven on Next, Nuxt and SvelteKit, in CI.
    • An accessibility statement, and a real RTL audit.
    • A locale-keys guard in the gate.
    • npm provenance, and a written semver and deprecation policy.
    • The 1.0 versioning decision, taken cold.
    • The engine competitors re-evaluated (TanStack AI), and engine’s run events mapped onto the AG-UI / A2A vocabulary if interop becomes a demand.

    What 1.0 promises: strict semver — the elements and the event table stable across 1.x.

  5. Open

    Still to (build)

    Named, and not scheduled. Every one of them waits on the same thing — the last line of this page.

    Components

    • Sources and citations, as an annotation on a range of a text segment: an inline marker, and a source list. The ai-sdk bridge drops source parts today.
    • A floating widget: a launcher, and a fixed card that becomes a full-screen sheet under a breakpoint.
    • Theme presets, as pure token sheets.

    Plugins

    • @aparte/plugin-storage-idb — the reference IndexedDB adapter.
    • @aparte/plugin-katex.
    • A one-line setupDompurify().
    • @aparte/plugin-mermaid.
    • @aparte/plugin-speech — microphone input, over the Web Speech API.
    • More locales — es, de. The ideal first contribution.

    The site

    • The kit gallery on one page, and an Examples page: a ChatGPT-shaped app and a builder split, assembled and copyable.
    • Framework tabs on every demo — React, Vue, Svelte, Angular, vanilla.
    • The Builder: a live chat beside a composition panel that exports the exact install and setup of your selection, with the theme editor folded in.
    • The landing where the chat is the hero, and the page splits open as you scroll.

    Not hostage to our UI

    • First skin packs, pure CSS.
    • Then a control-renderer seam, so a design system’s own buttons — PrimeNG under Angular, shadcn under React — draw aparté’s controls without a single CSS override.

    Also on the list

    • A raw-completion provider for llama.cpp, when a consumer needs one.
    • Conversation export — a recipe first.
  6. Decided

    What we said (no) to

    With the reason, so that nobody re-derives the answer from scratch.

    Real-time voice sessions
    Large, and vendor-specific. Microphone input yes; sessions no.
    A workflow canvas
    Another product.
    Arbitrary generative UI
    Custom segments and tool renderers are the sane version of it, and they are already here.
    Multi-runtime adapters
    Bring-your-own-loop covers it. A guide, not a package.
    Routing, settings, persistence
    The product’s, never the library’s.
    A citation type in the segment union
    An annotation on a range of text, not a member of the union — and it lands when a provider in this repo actually returns citations.

    A capability ships when an in-repo consumer exercises it end to end. A layer no caller uses is a contract maintained for nobody.