* fix(packages): make packed exports runtime-safe
Make checked-in package manifests truthful for ordinary npm and Bun packing, and verify installed artifacts under both runtimes. Centralize package discovery, artifact inspection, and bounded process execution so CI and release publication share the same contracts.
* ci: build package dependencies before checks
Keep workspace jobs independent of ignored dist output now that public package exports consistently resolve built artifacts.
* ci: preserve source-first engine tests
Keep the broader dependency build for package and repository validation, but retain Core-only setup for engine shards so workspace tests continue exercising source modules.
* ci: build engine shard dependencies
Build the seven workspace packages imported by engine tests in dependency order. This preserves a single module instance per package and keeps each clean CI shard independent of ignored dist output.
* ci: restore established package build boundaries
Keep the original repository and engine job setup, and add installed artifact verification only after the existing package build. Avoid changing which module copies unrelated tests execute.
* fix(packages): preserve Bun source identity in tarballs
Retain source-first workspace resolution and ship complete source trees for Bun conditions. Verify clean installed consumers without overlaying archives, reuse consumer validation before release publication, and repair Bun 1.3.10 private source alias resolution.
* refactor(tooling): reuse package and process utilities
Use pkg-types for manifest I/O and types, tinyexec for subprocess lifecycle, and npm's pack listing for release staging. Preserve archive verification and project release invariants rather than reimplementing package-manager file selection.
* refactor(tooling): resolve workspace roots at CLI boundaries
Discover and validate the nearest workspace once, support explicit roots, and pass roots to reusable checks. Replace subprocess entrypoint dispatch with direct calls and preserve aggregate package diagnostics without adding arbitrary test timeout increases.
* fix(release): enforce publication boundaries
Use root version alignment and shared validated npm output parsing. Enforce the public npm registry policy and test verification-before-publication, mismatched artifacts, and partial retries without registry writes.
* refactor(tooling): validate package responses with Valibot
Express npm pack and manifest identity contracts as schemas, infer parsed output types, and preserve contextual failures and relative-path safety. Document Valibot as the first-party validation convention while retaining Zod at SDK boundaries.
* refactor(tooling): validate manifests at input boundaries
Share Valibot schemas for consumed manifest fields, recursive exports, supported workspace declarations, and npm registry responses. Infer domain types and reject malformed metadata instead of silently skipping it downstream.
* refactor(tooling): group package helpers by ownership
Colocate manifest and workspace contracts, separate npm response parsing from generic JSON handling, and split smoke packing, installation, and runtime checks. Remove the release tarball forwarding shim and consolidate its coverage in package-artifacts. Preserve public tooling exports and CLI commands.
* feat: persist AI conversations and add chat history
Store transcripts and attachment previews in IndexedDB, separate conversation history from transport lifetime, and add document-aware switching with shared Storybook coverage. Preserve interrupted activity and guard stale writes and async switches.
* test: group chat history tests by domain
* feat: simplify chat history navigation and diagnostics
Use a compact header with searchable document-scoped history and a correctly anchored conversation menu. Move diagnostic copying into the menu with copy-result feedback, and separate Storybook fixtures from composition.
* fix: address chat history review findings
* test: cover harness shutdown and restored chat scrolling
* fix: preserve Portless proxy port in MCP routes
* docs: clarify UI animation conventions
* feat: configure reasoning display and animate disclosure
* fix: separate transcript following from reasoning disclosure
* fix: restore selected chat after document recovery
* refactor: separate chat history persistence and sessions
* style: format reasoning story imports
Adapt the output-directory fix from #645 while preserving source-based workspace exports. Cover existing and missing nested destinations for JSON and FIG imports.
Co-authored-by: Joseph Cumines <joeycumines@gmail.com>
Group reusable UI components into button, input, select, toggle, feedback, overlay, menu, and paint families while retaining dialog, panel, and binding.
Colocate stories with their components, preserve Storybook titles and existing story exports, and separate the combobox keyboard interaction from its default playground.
Move InlineLabelEditor into the input family and colocate the model catalog service with its composable. Update imports without compatibility shims.
Reorganize matching themes and document component-family and story conventions in AGENTS.md. Preserve existing application behavior.
Move model, MCP, storage, vectorization, diagnostics, and usage settings workflows into their owning app domains. Keep presentation, navigation, confirmations, and short-lived credential inputs in components.
Separate Settings credential APIs from chat initialization and standardize composable organization and spacing.
Guard asynchronous results against changed targets and disposed editors. Serialize MCP mutations across editor instances, persist connections disabled until credential writes succeed, and revalidate credentials before enabling them.
Add regression coverage for credential failures, cross-editor races, provider switching, role assignments, and subscription cleanup.
Add a reusable Reka UI combobox with Fuse.js search, scoped slots, and Storybook interaction coverage.
Connect model pickers to the models.dev catalog with curated recommendations, recent compatible models, and cached/offline fallbacks. Refresh model suggestions, including Kimi K3 and Claude Fable 5.1.
Apply selected-model metadata immediately, preserve offline vision capabilities, and allow failed catalog requests to retry.
Extract profile editing into focused selection, connection, and persistence workflows, sharing model-option projection between Settings and chat.
- Correct library and fallback terminology in German, Spanish, and Italian\n- Use imperative and grammatically matching Polish action labels\n- Distinguish the Simplified Chinese duplicate action from duplicate state
- Localize library updates, publishing, comparison, and variant controls across all supported locales\n- Translate remaining locale-specific API and HTML/CSS labels where appropriate\n- Retain source-identical baselines only for reviewed technical and product terminology
- Localize unnecessary English prose in Japanese and Simplified Chinese\n- Keep product, protocol, provider, file-format, URL, and model identifiers intact\n- Remove eight reviewed mixed-script baseline entries
- Strip interpolation tokens before detecting mixed Latin and CJK content\n- Cover placeholder-only and genuinely mixed translations in the i18n tool tests\n- Remove 48 baseline entries that existed only because placeholder names were counted
- Drive the app theme store from Storybook's theme toolbar\n- Use OpenPencil surface tokens for readable inline code in light mode\n- Verify light Shiki and inline-code contrast in the visual workshop
- Override inline code through the renderer component API instead of CSS cascade fights\n- Add light and dark Storybook states for prose, inline code, fenced code, streaming, messages, and attachments\n- Keep fenced Shiki rendering separate from compact inline tokens