Commit graph

2595 commits

Author SHA1 Message Date
Danila Poyarkov 6e4fab40dc style(ui): sort imports after family moves 2026-09-06 17:54:22 +03:00
Danila Poyarkov 3fdac60afa Merge branch 'refactor/settings-workflows' into refactor-ui-families
# Conflicts:
#	src/app/ai/models/settings/profile-editor/selection.ts
2026-09-06 16:46:02 +03:00
Danila Poyarkov cc4dc933e8 fix(settings): revalidate queued credentials and handle status failures 2026-09-06 16:41:50 +03:00
Danila Poyarkov 2b4e5240e7 style(settings): separate composable responsibilities 2026-09-06 15:41:15 +03:00
Danila Poyarkov 95fbd06dc3 fix(settings): share MCP mutation queues across editors 2026-09-06 15:41:15 +03:00
Danila Poyarkov b5391f7305 fix(settings): persist credentials before enabling connections 2026-09-06 15:18:18 +03:00
Danila Poyarkov 8407f23fd1 refactor(ai): colocate catalog service and composable 2026-09-06 14:56:09 +03:00
Danila Poyarkov 742d544342 Merge branch 'refactor/settings-workflows' into refactor-ui-families 2026-09-06 14:45:03 +03:00
Danila Poyarkov 9f5d583bed Merge branch 'feat/model-picker-catalog' into refactor/settings-workflows 2026-09-06 14:37:39 +03:00
Danila Poyarkov c30b2def7b Merge remote-tracking branch 'origin/master' into feat/model-picker-catalog
# Conflicts:
#	packages/vue/src/i18n/locales/de/ai.json
#	packages/vue/src/i18n/locales/fr/ai.json
#	packages/vue/src/i18n/locales/pl/ai.json
#	packages/vue/src/i18n/locales/ru/ai.json
2026-09-06 14:34:55 +03:00
Danila Poyarkov 24df07ac41 fix(settings): guard asynchronous credential workflows 2026-09-06 14:34:32 +03:00
Danila Poyarkov 8c8a4754d7 refactor(ui): organize components and themes by family 2026-09-06 14:26:56 +03:00
Danila Poyarkov 61c1e9839b refactor(settings): separate credential services from chat 2026-09-06 14:00:09 +03:00
Danila Poyarkov a338f57f4b refactor(settings): extract domain workflows 2026-09-05 21:49:30 +03:00
Danila Poyarkov 904c90c329 refactor(settings): extract model profile workflows 2026-09-05 21:25:46 +03:00
Danila Poyarkov d82aaff9ea
Merge pull request #644 from open-pencil/fix-i18n-placeholder-baseline
fix(i18n): audit translation quality baselines
2026-09-04 22:46:05 +03:00
Danila Poyarkov 080d2dc890 fix(i18n): refine translated action labels
- 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
2026-09-04 22:38:30 +03:00
Danila Poyarkov aef2258678 fix(i18n): translate library management workflows
- 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
2026-09-04 21:30:31 +03:00
Danila Poyarkov 4cd7b7685a fix(i18n): reduce mixed-script translation debt
- 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
2026-09-04 20:05:25 +03:00
Danila Poyarkov e851331c27 fix(ai): recommend latest Kimi and Fable models 2026-09-04 19:03:34 +03:00
Danila Poyarkov 6d96edcc52 fix(i18n): ignore placeholders in script checks
- 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
2026-09-04 18:57:31 +03:00
Danila Poyarkov f674f8c99d feat(ai): modernize model picker 2026-09-04 18:45:03 +03:00
Danila Poyarkov 7964b99ba3
Merge pull request #640 from open-pencil/vibe-merge-pr-13
feat(chat): adopt contextual composer and Markdown v2
2026-09-04 18:44:00 +03:00
Danila Poyarkov 039c810f5c fix(storybook): synchronize chat light theme
- 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
2026-09-04 18:32:33 +03:00
Danila Poyarkov b7879ac026 feat(chat): add visual Markdown 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
2026-09-04 18:15:24 +03:00
Danila Poyarkov 6ea68d1f81 fix(chat): compact inline code typography
- Match inline monospace tokens to the 11px chat body scale\n- Reduce inline code padding without changing fenced Shiki blocks
2026-09-04 17:53:55 +03:00
Danila Poyarkov 6be82c115e fix(automation): avoid redundant MCP restarts
- 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
2026-09-04 17:23:53 +03:00
Danila Poyarkov 61f11e7d24 fix(ai): surface actionable provider failures
- 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
2026-09-04 16:41:03 +03:00
Danila Poyarkov a6b6b2bb5b test(chat): select real LLM coverage by tag
- 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
2026-09-04 12:22:05 +03:00
Danila Poyarkov b9731f6a90 test(chat): isolate domain specs and real LLM runs
- 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
2026-09-04 11:50:12 +03:00
Danila Poyarkov 1455fab099 test(chat): isolate real LLM smoke coverage
- 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
2026-09-04 11:31:31 +03:00
Danila Poyarkov c3a560d2b9 test(chat): extract browser harness
- 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
2026-09-04 11:26:30 +03:00
Danila Poyarkov db68b71ae1 refactor(chat): extract submission and attachment state
- 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
2026-09-04 11:16:32 +03:00
Danila Poyarkov bd24220b9a feat(chat): preserve node attachments in history
- 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
2026-09-04 10:55:42 +03:00
Danila Poyarkov c5158edc82 fix(chat): redesign Design profile picker
- 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
2026-09-03 20:58:32 +03:00
Danila Poyarkov 5951f45d64 fix(automation): wait for Portless MCP readiness
- 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
2026-09-03 20:33:06 +03:00
Danila Poyarkov f5db783797 fix(chat): align vision and model role UX
- 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>
2026-09-03 19:58:09 +03:00
Danila Poyarkov a8c7fedadb feat(chat): unify composer attachments
- 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>
2026-09-03 19:05:10 +03:00
Danila Poyarkov 743078255f refactor(chat): layer Markdown integration styles
- 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>
2026-09-03 17:37:44 +03:00
Danila Poyarkov b1522c8f34 fix(chat): tighten Markdown block chrome
- Reduce code header controls, labels, icons, and body spacing\n- Scope block-code overrides away from inline code\n- Compact horizontal-rule spacing for chat messages\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 16:44:36 +03:00
Danila Poyarkov 1b43c25efa fix(chat): compact Markdown typography
- Map upstream document typography to the editor chat scale\n- Reduce code block text, spacing, header labels, and controls\n- Keep chat Markdown styling in the typed chat theme\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 15:40:52 +03:00
Danila Poyarkov 21b1d25bff fix(chat): derive Markdown image origin at runtime
- Restrict assistant-rendered images to the active deployment origin\n- Cover local and self-hosted origins without hardcoded production hosts\n- Verify cross-origin, insecure, and data image rejection in browser tests\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 14:12:14 +03:00
Danila Poyarkov dd53d08474 refactor(chat): adopt upstream Markdown v2
- Replace the fork-era Markdown integration with Comark and an explicit Shiki extension\n- Centralize OpenPencil theming, parser lifecycle, controls, and URL hardening\n- Remove Mermaid stubs and bundled math or diagram dependencies\n- Address contextual composer review findings and extend browser coverage\n\nCo-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 13:34:55 +03:00
Danila Poyarkov 9dccf09eb6 style(chat): apply composer formatting
Co-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 13:11:48 +03:00
Danila Poyarkov f0afe3c4d7 feat(chat): adopt contextual composer improvements
- Pin selected layers as bounded context without exposing metadata in transcript bubbles
- Show collapsible reasoning and copy individual assistant responses
- Autosize multiline prompts and cover the new chat states in browser tests

Co-authored-by: Jason Kneen <jason.kneen@bouncingfish.com>
2026-09-03 11:40:50 +03:00
Danila Poyarkov cb7ceea61a
Merge pull request #639 from open-pencil/audit-stock-photo-current
fix(ai): validate stock photo targets
2026-09-03 10:18:26 +03:00
Danila Poyarkov 9a3d7ca702 fix(ai): require closed stock photo vectors
- Reject open vector networks before contacting the provider\n- Cover closed and open vector targets explicitly\n- Label the stock photo prompt example code fence
2026-09-03 08:46:10 +03:00
Danila Poyarkov 90b608863e fix(ai): validate stock photo targets
- Reject text, line, structural, and populated container targets before provider requests\n- Preserve closed shape and Boolean geometry support without mutating target bounds\n- Cover accepted and rejected node families with focused tests
2026-09-03 08:46:10 +03:00
Danila Poyarkov bc8f973c79
Merge pull request #638 from open-pencil/material3-text-alignment
fix(fig): preserve explicit text alignment metadata
2026-09-03 08:34:06 +03:00
Danila Poyarkov 2f1d33403c fix: preserve changelog formatting 2026-09-02 22:56:23 +03:00