Commit graph

2604 commits

Author SHA1 Message Date
PAVEL TKACHEV c946337f3d
fix(pen): resolve ordinary variable references (#622)
* fix(pen): resolve ordinary variable references

Recognize nonempty dollar-prefixed variable names while preserving double-dash references and existing bindings.

Add parser regressions, a reproducible .pen fixture, and visual coverage comparing variable references with literal values.

Update the Unreleased changelog for #563.

* test(pen): strengthen variable reference coverage

---------

Co-authored-by: Danila Poyarkov <dev@dannote.net>
2026-09-06 23:50:03 +03:00
Danila Poyarkov 076f7ce0d9
fix: restore engine test coverage and isolation (#653)
* ci: require complete engine test shard coverage

* test: provide path data in the font editing gate fixture

* test: remove stale Tauri runtime markers during cleanup

* fix(collab): deduplicate pending page switches

* test: simplify pending page switch regression setup
2026-09-06 23:29:45 +03:00
Danila Poyarkov 5ab13032ec
Merge pull request #651 from open-pencil/adapt-pr-645
fix: handle nested CLI import outputs and stale oracle imports
2026-09-06 19:14:16 +03:00
Danila Poyarkov 103f6003d6
Merge branch 'master' into adapt-pr-645 2026-09-06 19:05:52 +03:00
Danila Poyarkov 39e761c1b7 fix(tools): import SceneGraph from its owning package
Adapt the import repair identified in #645 without restoring forwarding-only Core subpaths.

Co-authored-by: Joseph Cumines <joeycumines@gmail.com>
2026-09-06 18:18:52 +03:00
Danila Poyarkov de4c90a023 fix(cli): create missing import output directories
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>
2026-09-06 18:18:51 +03:00
Danila Poyarkov 72b8da1a75
refactor(ui): organize components and themes by family (#649)
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.
2026-09-06 18:08:07 +03:00
Danila Poyarkov 6e4fab40dc style(ui): sort imports after family moves 2026-09-06 17:54:22 +03:00
Danila Poyarkov d5ed2310c2
refactor(settings): extract domain workflows (#647)
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.
2026-09-06 17:51:19 +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 2f28752138
feat(ai): add searchable model catalogs (#643)
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.
2026-09-06 15:06:49 +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