Commit graph

2570 commits

Author SHA1 Message Date
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
Danila Poyarkov e971f735ef fix(fig): preserve explicit text alignment metadata 2026-09-02 22:54:13 +03:00
Danila Poyarkov 39d7a901ff
Merge pull request #637 from open-pencil/material3-blend-mode
fix(fig): preserve explicit blend modes
2026-09-02 22:32:55 +03:00
Danila Poyarkov 8ee6ed1dd9 test(fig): retain rectangle blend default coverage 2026-09-02 22:09:11 +03:00
Danila Poyarkov f2ce4ac9a0 fix(fig): preserve explicit blend modes 2026-09-02 19:38:42 +03:00
Danila Poyarkov a4306aab24
Merge pull request #631 from open-pencil/material3-text-auto-resize
fix(fig): preserve implicit fixed text sizing
2026-09-02 17:04:05 +03:00
Danila Poyarkov fd42243808 Merge master into material3-text-auto-resize 2026-09-02 14:28:42 +03:00
Danila Poyarkov 0686a2d630
fix(app): remove misleading browser font warning
* fix(app): remove misleading browser font warning

* fix(app): remove duplicate font constant import

* docs: keep unreleased changelog categories intact
2026-09-02 13:14:06 +03:00
Danila Poyarkov 5b363f503a Merge remote-tracking branch 'origin/master' into material3-text-auto-resize 2026-09-02 13:11:38 +03:00
Danila Poyarkov 2bce9b77b3 build: validate changelog structure 2026-09-02 11:18:51 +03:00
Danila Poyarkov 57c8f4e1d7 Merge master into material3-text-auto-resize 2026-09-02 11:04:55 +03:00
Danila Poyarkov 036b63d42f
Merge pull request #634 from open-pencil/shared-mutation-impact
refactor(editor): centralize mutation layout reconciliation
2026-09-02 11:01:27 +03:00
Danila Poyarkov 44105205d5 docs: refresh contributor guidance 2026-09-02 10:56:00 +03:00
Danila Poyarkov d81e355e84 test(scene-graph): move mutation impact coverage 2026-09-02 10:49:05 +03:00
Danila Poyarkov 83017be686 test(scene-graph): assert rejected inserts preserve tree 2026-09-02 10:25:25 +03:00
Danila Poyarkov aa3285f2fc Merge master into shared-mutation-impact 2026-09-02 10:24:51 +03:00
Danila Poyarkov 17b5dfead0 fix(scene-graph): reject cyclic insertions 2026-09-02 09:56:51 +03:00
Danila Poyarkov 7d9034ed91 docs: clarify changelog curation 2026-09-02 09:56:00 +03:00
Danila Poyarkov cbcd0b84a9 docs: clean up unreleased changelog 2026-09-02 09:52:41 +03:00
Danila Poyarkov 418dc4f61c fix(scene-graph): validate reorder destinations 2026-09-02 09:32:28 +03:00
Danila Poyarkov 45c401cbf5
fix(text): preserve cached font coverage and source offsets 2026-09-02 09:26:59 +03:00
Danila Poyarkov 0027e24465 test(scene-graph): share mutation transfer setup 2026-09-02 08:51:30 +03:00
Danila Poyarkov 75d555900f fix(editor): preserve mutation parents and font layout 2026-09-02 08:27:52 +03:00
Danila Poyarkov 4ecbc9e583 fix(ai): prepare fonts before mutation layout 2026-09-02 02:12:28 +03:00
Danila Poyarkov 8a5daa7472 fix(automation): load fonts before scoped layout 2026-09-02 02:09:05 +03:00
Danila Poyarkov 0f070f9f97 refactor(ai): share mutation layout reconciliation 2026-09-02 02:06:08 +03:00