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
- Keep the healthy Portless child when browser configuration is unchanged\n- Allow genuine configuration restarts enough time to register their replacement service\n- Cover configuration equality and delayed health readiness
- Classify authentication, access, model, rate-limit, network, and credit errors\n- Preserve the original provider error across the no-output stream consequence\n- Add optional toast actions for opening model settings\n- Consume handled chat send rejections to avoid global unhandled errors\n- Localize provider failure guidance and cover the authentication flow
- Keep one canonical Playwright project for browser tests\n- Exclude @real-llm from the default command and select it explicitly when requested\n- Remove the redundant config and project
- Replace the shared serial page with isolated configured-chat fixtures\n- Split composer, attachment, Markdown, profile, navigation, and response behavior\n- Use Playwright's structured @real-llm tag with a credential-gated config\n- Keep mock stream construction and page operations in focused helpers
- Keep deterministic chat tests permanently bound to the mock transport\n- Add an explicit @real-llm Playwright project and package script\n- Skip the paid OpenRouter smoke test clearly when its credential is absent
- Move chat app setup and shared locators into the test helper domain\n- Move mock AI stream construction out of the panel specification\n- Keep the panel behavior suite focused on user-facing assertions
- Move send orchestration, cancellation, Vision analysis, and optimistic history into a submission composable\n- Move composer image and node draft ownership into an attachment composable\n- Replace positional submit arguments with a named ChatSubmission payload
- Generalize transcript presentations across image and node attachments\n- Snapshot referenced nodes when sending so history survives graph changes\n- Reuse one attachment card and viewer for both attachment kinds\n- Localize attachment actions and remove image-processing details from the viewer
- Give configured profiles a full-width multiline selection surface\n- Show resolved model and provider metadata with a stable selection indicator\n- Keep Vision capability compact and link back to model-role settings\n- Split chat Markdown and profile themes into focused domain files
- Hold Vite startup and MCP restarts until the sibling service health endpoint responds\n- Tolerate transient Portless 404 responses during service registration\n- Cover worktree-origin CORS preflight and restart health polling
- Restore attachment inset spacing through the InputGroup theme slot\n- Mark curated multimodal models as Vision-capable and repair saved capability metadata\n- Default Vision to the Design profile when that profile accepts images\n- Use configured Design profiles in the composer instead of raw provider models\n- Surface missing Vision configuration directly in Settings\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
- Render node references and images with one attachment-card layout\n- Generate live previews for referenced scene nodes\n- Make the current-selection control toggle its active selection\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
- Import upstream Markdown CSS through the components cascade layer\n- Keep compact semantic overrides in a dedicated chat stylesheet\n- Preserve Shiki backgrounds through its supported theme variable\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>