bflatastic and Claude Opus 5.5
543d09985d
M3.22: effects apply to the active fill or stroke and item effect rows are editable
...
effect.apply, effect.remove, effect.setParams and the new effect.duplicate
take item (omitted: the Appearance panel's active item, else the object;
null: the object's own effects), so the fx button, the Effect menu, Apply
Last Effect and the effect dialogs (effect.dialog {item}) put the effect on
the selected fill or stroke. effect.list reports each object's item effects
and the active item. appearance.addEffect is an alias of effect.apply.
In the Appearance panel, item effect rows sit under their fill or stroke
with working eyes and inline editors, and can be selected for Duplicate
and Delete; a selected effect row is remembered per object.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 17:15:40 +07:00
bflatastic and Claude Opus 5.5
018bed29db
M3.21: the Appearance panel's active item drives paint, stroke, gradient and transparency edits
...
Clicking a fill or stroke row runs appearance.setActiveItem; the toolbar,
Control bar and Properties proxies and the Color, Swatches, Gradient,
Stroke and Transparency panels show and edit that item, and the gradient
tool's annotator follows it. paint.setFill/setStroke, stroke.set/
setAdvanced, paint.editGradient/setGradientGeom and transparency.set take
item (omitted: the active item, null: the top one). Item edits and the
appearance.* commands address the selected objects' own stacks, so a
group's own fills no longer leak into its contents. Any selection change
clears the active item.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 12:28:05 +07:00
bflatastic and Claude Opus 5.5
fb8c41d8e3
Merge wp/M1: one engine loader/encoder for every frontend and export correctness (M4.12, M4.13)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:58:07 +07:00
bflatastic and Claude Opus 5.5
115255a7e4
Merge wp/WP-00: neutral labels, packaging metadata and vendor-name CI gate (M3.7, M4.10, M4.11)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:57:34 +07:00
bflatastic and Claude Opus 5.5
7b410ecf2c
M3.7: proof setup looks profiles up through the alias table; alias tests read the legacy name from it
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:56:39 +07:00
bflatastic and Claude Opus 5.5
7bc50901e4
M4.13: review fixes — template sublayers are left out of raster exports too (the check moves into draw_arc), Export Selection skips art under a template layer at any depth, Export for Screens drops @Nx suffixes on SVG/PDF rows, names files without case clashes and calls an unnamed artboard Artboard-N, oversized raster exports are refused instead of writing empty files, a named MCP artboard/range replaces the option picks, and control app.export without a path returns dataBase64 instead of opening a save dialog
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:49:45 +07:00
bflatastic and Claude Opus 5.5
5d9b97c3bd
M4.10: neutral file, preference and MCP wording; vendor-name CI gate
...
Edit -> "PDF Presets…"; the clipboard preferences read "Legacy vector
clipboard (no transparency)" / "Legacy vector clipboard" (keys copyAicb and
aicbMode unchanged); the second keyboard shortcut set is "Classic Defaults",
and the old set name is still accepted from saved UI preferences, imported
sets and shortcuts.preset. The MCP server instructions, the apply_effect and
create_graph tool descriptions, the text.createInPath params doc,
docs/mcp.md, the ui-egui crate description and the PDF compatibility docs
no longer name another vendor.
New `cargo xtask brands` (run by `cargo xtask ci`) fails on vendor product
or company names in Rust string literals (labels, params docs, menus,
panels, MCP definitions; comments and test code skipped), Cargo.toml
descriptions and text under docs/ and packaging/; a required legacy alias
is marked `brand-ok`. xtask shares one git file listing between the asset
and brand checks. docs/development.md describes the gate.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:47:28 +07:00
bflatastic and Claude Opus 5.5
45a7302601
M4.13: export correctness and MCP export parity — document.export/serialize honour artboard, artboards or range ("1-3, 5") for PDF (one page per artboard) and return dataBase64 without a path; Export for Screens writes one page per PDF, ignores scale and @Nx suffixes for vector formats, names duplicate artboards -2/-3 and returns bytes without a folder; raster exports, thumbnails and Export Selection leave template layers out (RenderOptions.skip_templates); file.exportForScreens with params runs the engine; the MCP export tool takes artboard/range/options, lists formats from the engine and never retargets the document; CLI convert --range
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:38:23 +07:00
bflatastic and Claude Opus 5.5
4d503c0327
M4.12: one loader and encoder for every frontend — engine fileio (load/encode/export/save, append-only FORMATS table, OPEN_EXTS, document.formats query, typed per-format options, parse_range); document.open reads native/legacy, SVG/SVGZ, PDF/.ai, .ait (opens untitled like native templates) and PNG/JPEG/GIF/WebP/TIFF/BMP; desktop, web, control channel, headless MCP and the CLI open and encode through it; open dialogs list "All readable files" plus one filter per format
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:36:51 +07:00
bflatastic and Claude Opus 5.5
9cabeea68b
M3.8: register the split paint modules next to paint so the command palette keeps listing them (Stroke Options for "stroke")
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:32:11 +07:00
bflatastic and Claude Opus 5.5
b7969a6a5d
M3.8: split the paint/panel command modules and the dialogs into per-area files
...
No behaviour change: every command keeps its id, label, menu, shortcut and
params doc.
- Engine: swatch.* -> cmd/swatch.rs, graphicStyle.* -> cmd/style.rs,
appearance.* (incl. copyFrom) -> cmd/appearance.rs, stroke.set/setAdvanced
-> cmd/stroke.rs, paint.editGradient/setGradientGeom -> cmd/gradient.rs.
Shared helpers in cmd/mod.rs: leaf_targets/paint_targets (replacing three
copies) and unique_name (swatch and graphic style naming).
- UI: dialogs.rs -> dialogs/ with one file per dialog and a DialogSpec
registry (one DialogKind row per dialog); shared field widgets in
dialogs/form.rs. Headless frame tests draw and confirm every dialog.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:22:23 +07:00
bflatastic and Claude Opus 5.5
016fcbf34e
M3.7: neutral paint, effect and stroke labels
...
The wide-gamut RGB working space is now "Wide Gamut RGB (1998 primaries)";
its old name still resolves everywhere (cms::profile / canonical_name,
Color Settings, Assign Profile, documents and settings saved earlier).
The Effect menu section is "Vector Effects", stroke width profiles are
Lens / Taper Start / Taper End, dash, arrowhead-tip and gradient-on-stroke
tooltips are reworded, the Window library submenus hold neutral disabled
placeholders until the generated libraries land, and the Swatches menu
offers "Save Swatch Library…" (disabled).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-04 11:17:50 +07:00
Brandon Thomas and Claude Opus 5.5
7b37dd1da5
M7.6: tab stops and the Tabs panel — left/center/right/decimal stops (align-on character), default stops every ½ inch, text.tabs.set/get/clear, ruler (click adds, drag moves, drag off deletes), Repeat Tab / Delete Tab / Clear All Tabs; control characters no longer draw .notdef boxes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 10:13:24 -04:00
Brandon Thomas and Claude Opus 5.5
dabd179d5a
M7.4: Text Wrap flows on both sides of an object (lines split into every free span, left to right, sharing the baseline; exact interval intersection across the line band)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 09:28:04 -04:00
Brandon Thomas and Claude Opus 5.5
dcc5a006a2
M3.6: opacity-mask editing mode — click the mask thumbnail to edit the mask art on a temporary isolated layer with any tool; the mask updates live after every edit; the object thumbnail (or transparency.stopEditingOpacityMask) leaves the mode
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:40:18 -04:00
Brandon Thomas and Claude Opus 5.5
5026dad446
M11.5: View → New View… / Edit Views… (saved views in the document, up to 25, listed at the bottom of the View menu; view.saved.* commands)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:16:36 -04:00
Brandon Thomas and Claude Opus 5.5
16a73dc02a
M12.7: Object → Create Object Mosaic… (trace::mosaic tile averages; columns/rows, new size, spacing, gray, delete raster; follows the image transform)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 08:16:36 -04:00
Brandon Thomas and Claude Opus 5.5
bfa46e6cb4
M9.4: raster effects in PDF export — shadows/outer glows as images under the untouched vector object, inner glow/feather/blur as images, at the document's resolution; Effect → Document Raster Effects Settings… (document.rasterEffectsSettings: screen/medium/high/ppi); engine::export_pdf used by app, CLI and MCP
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:58:10 -04:00
Brandon Thomas and Claude Opus 5.5
9b0fe0ca5d
M1.9: agent integrations — MCP tools add_text, apply_effect, pathfinder, transform, create_graph, text_wrap, export {selection, outlineText}; CLI convert (IN → OUT, effects kept) and info; SVG export Convert to Outlines (text as glyph paths); TextObject pathEffect key camelCase
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 07:50:20 -04:00
Brandon Thomas and Claude Opus 5.5
1d493c7f06
M12.6: Graphs — the nine graph tools (Column, Stacked Column, Bar, Stacked Bar, Line, Area, Scatter, Pie, Radar), Object → Graph → Type… and Data… (CSV), series groups with legend, regenerate in place keeping moves/scales
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 00:16:23 -04:00
Brandon Thomas and Claude Opus 5.5
13d0aef57f
M1.5: commands that default to the current layer validate the remembered id (reused after undo it could name a compound path: Send to Current Layer moved art into it, Delete Layer could delete it)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-02 00:16:23 -04:00
Brandon Thomas and Claude Opus 5.5
69be79bbf1
M4.4: File → Export Selection… (selected art cropped to its bounds as PNG/JPG/WebP/SVG/PDF), Save as Template… and New from Template… (templates open as untitled documents)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 23:46:20 -04:00
Brandon Thomas and Claude Opus 5.5
4745f39c6c
M7.4: Object → Text Wrap (Make, Release, Text Wrap Options: offset, invert): area type flows around wrap objects above it in the same layer, re-resolved after every edit
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 22:48:49 -04:00
Brandon Thomas and Claude Opus 5.5
0ae572be93
M7.3: Type → Type on a Path effects (Rainbow, Skew, 3D Ribbon, Stair Step, Gravity): TextObject::path_effect, type.pathOptions {effect}, checked menu items
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 22:21:58 -04:00
Brandon Thomas and Claude Opus 5.5
1c1fd0f139
M9.3: Effect → Pathfinder (Add, Intersect, Exclude, Subtract, Minus Back, Divide, Trim, Merge, Crop, Outline) as live effects on groups/layers; rendered via the live cache, baked by Expand Appearance
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 20:57:14 -04:00
Brandon Thomas and Claude Opus 5.5
71d43421f5
M2.6: Flare tool (centre drag, then click for the rings; click → Flare Tool Options; shape.flare builds centre/halo/rays/rings from radial gradients in Screen mode) and Reshape tool (path.reshape: grab a point of a selected path, neighbourhood follows with a smooth falloff)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 20:57:02 -04:00
Brandon Thomas and Claude Opus 5.5
f5ff9317d4
M6.7: Object → Clipping Mask → Edit Contents / Edit Clipping Path (select the clipped art or the mask of the selected clip groups, also from inside one)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 20:56:22 -04:00
Brandon Thomas and Claude Opus 5.5
7d393add4a
Community links: Help menu (Discord, ArtCraft website, app page, GitHub), Discord button in the header, links on the About and Home screens; engine help.* commands return the URLs (menu clicks open them via the host's browser service)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:37:29 -04:00
Brandon Thomas and Claude Opus 5.5
4878f1c5dd
Rename DrawCraft → VectorCraft: crates (vectorcraft-*), apps, binaries, types, env vars, docs, examples (.vectorcraft); old .drawcraft files and preferences still load. Fix: text bounds exact after opening a file; selection no longer marks a document modified (dirty = content differs from the saved document). Screenshots and renders regenerated.
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 14:30:09 -04:00
Brandon Thomas and Claude Opus 5.5
deb9df299c
M7.7: Type → Find Font… (fonts in document with missing ones flagged, Find, Change, Change All; engine: text.fonts, text.replaceFont, select.font)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 13:16:26 -04:00
Brandon Thomas and Claude Opus 5.5
d5aa387367
M7.5: OpenType as character attributes — per-run features (ligatures, contextual alternates, discretionary ligatures, swash, small caps, ordinals, fractions, figure styles) drive shaping; OpenType panel; SVG font-feature-settings
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 12:02:13 -04:00
Brandon Thomas and Claude Opus 5.5
d9df5b0135
M7.3/M7.7: threaded text (Type → Threaded Text: Create/Release Selection/Remove Threading; story re-flows after any edit touching its frames, deleted frames' text flows on), Fit Headline; roadmap
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 11:00:17 -04:00
Brandon Thomas and Claude Opus 5.5
f522e6bd3d
M7.3: Area Type Options — rows, columns, gutter, inset, first baseline stored on area type, laid out by the text engine; Type → Area Type Options… dialog prefilled from the selection
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 10:32:58 -04:00
Brandon Thomas and Claude Opus 5.5
4d1eb16424
M1: fix paste into a compound path when undo made a new object reuse the active layer's id (active layer / isolation must still be a layer / group); regression test
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 10:32:58 -04:00
Brandon Thomas and Claude Opus 5.5
6a6e3d4bb1
M4.1/M11: File → Open Recent Files (persisted, native menu too), Document Info panel (document.info), Object → Make Pixel Perfect; agent guide: control-port clashes
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 10:09:19 -04:00
Brandon Thomas and Claude Opus 5.5
48a4720ece
M7.6: Character and Paragraph Styles — partial named styles in the document, apply to objects or a Type tool range, Clear Overrides, override-preserving redefine, duplicate/rename/delete; panels with override markers
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 09:55:01 -04:00
Brandon Thomas and Claude Opus 5.5
c8f157cc87
M12.5: Image Trace objects remember their preset and parameters (saved in the file); the panel shows the selected trace's settings; Expand clears them
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 09:14:17 -04:00
Brandon Thomas
f673491bd2
progress
2026-10-01 08:56:21 -04:00
Brandon Thomas and Claude Opus 5.5
66855f309d
M4.1: .drawcraft format v2 — default-valued fields omitted, anchors as {p: [x, y], in?, out?, kind?}; large documents saved compact. 50k paths: 56 → 35 MB, open 722 → 244 ms; v1 files still load
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 08:39:58 -04:00
Brandon Thomas and Claude Opus 5.5
318a55350a
M4.8: system clipboard — copy/cut publish SVG markup, paste adopts SVG from other apps (centred in view); Copy/Cut/Paste events handled off macOS; Place bypasses the clipboard hook
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 08:27:54 -04:00
Brandon Thomas and Claude Opus 5.5
5e15994012
M3: opacity masks — model (linked transform), luminance mask rendering, transparency.* commands, SVG <mask> export/import, PDF luminosity soft masks, Transparency panel controls
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-01 00:30:38 -04:00
Brandon Thomas and Claude Opus 5.5
acb2566d89
Distortion tools (Width, Liquify, Puppet Warp, Perspective Grid), Patterns + Repeat, colour management (CMS, proofing, separations), Preferences/Shortcuts/Workspaces; original brand mark; fix filter panic in thumbnails; README demo scenes
...
- New original DrawCraft mark (gradient + pen nib) replaces the two-letter badge
- render: thumbnails and pattern tiles use a single-threaded context (vello's default is
multithreaded and panics on filters); per-item raster effects detected
- Type tool state no longer leaks across documents
- ui.set {status} for clean screenshots
- README: new hero, feature shots, Made in DrawCraft gallery; examples/neon-drive, ribbons,
feature-sheet; ASSETS.md updated; heading renamed to Crafting Apps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 22:44:39 -04:00
Brandon Thomas
c9f38685b4
wip
2026-09-30 11:37:31 -04:00
Brandon Thomas
6dd0d2dcff
continued work; wip
2026-09-30 11:24:38 -04:00
Brandon Thomas and Claude Opus 5.5
f8136f1e35
Live Blends/Envelopes/Gradient Mesh, Shape Builder, Live Paint, Image Trace (drawcraft-trace), Recolor Artwork, Export for Screens, Actions panel, prefs persistence, real layer thumbnails; menus bound
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 11:02:16 -04:00
Brandon Thomas
a7e49bfa72
continued work
2026-09-30 09:43:24 -04:00
Brandon Thomas
d083c2ab50
continued progress
2026-09-30 09:36:51 -04:00
Brandon Thomas and Claude Opus 5.5
42df20ca7f
Panels to Illustrator parity (19 panels), ~70 menu commands, generic param dialogs, view rotation, property/model-based tests + MCP e2e; fix arrange overflow, compound grouping, double journaling, float round-trip, coordinate sanity, simplify growth, batch rollback of session state
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 09:32:20 -04:00
Brandon Thomas and Claude Opus 5.5
213b0927ee
Draw Normal/Behind/Inside modes (Shift+D)
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 07:22:47 -04:00
Brandon Thomas and Claude Opus 5.5
60c562c956
M5.2/M5.4: render geometry cache (Arc identity), opacity folding, LOD, multithreaded rasterizer (20k objects: 187→21 ms); native macOS menu bar; Effect menu + live-preview dialogs; PDF open/save; bench example
...
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-09-30 07:07:59 -04:00