Commit Graph

  • f21161ce8c M3.27: Color Picker dialog — double-clicking a Fill/Stroke proxy (toolbar, Color, Swatches, Properties) or ui.colorPicker {stroke?, color?} opens a colour field with an H/S/B/R/G/B channel slider, HSB/RGB/Lab/CMYK fields and hex, Only Web Colors, out-of-gamut (corrected through color.convert) and out-of-web warnings, New/Original chips and a Color Swatches list; OK runs paint.setFill / paint.setStroke (CMYK in CMYK documents) bflatasticandClaude Opus 5.5 2026-10-04 17:49:26 +07:00
  • 8a871d98a9 M3.29: proxy paint commands — paint.invert / paint.complement recolour the active proxy of each selected object keeping its colour model (the defaults when nothing is selected), paint.lastColor (,) and paint.lastGradient (.) re-apply the last solid colour or gradient (the toolbar chips draw and run them), swap and default work on type, and recent colours live in the Session, fed by every paint command (MCP, eyedropper, live previews on commit) and listed by paint.recent bflatasticandClaude Opus 5.5 2026-10-04 12:23:52 +07:00
  • 2ed962e7d0 M3.16: the eyedropper samples type gradients in text space bflatasticandClaude Opus 5.5 2026-10-04 17:59:03 +07:00
  • cca1d11032 M3.14: gradient swatches and new art fit a placed gradient to themselves bflatasticandClaude Opus 5.5 2026-10-04 17:58:05 +07:00
  • 6ebffb9156 M3.24: Clear Appearance and Reduce to Basic add no fill or stroke rows to a group bflatasticandClaude Opus 5.5 2026-10-04 17:52:46 +07:00
  • d3dc4a2af3 M3.17: the stop popover survives its opening double-click, and the selected stop belongs to its gradient bflatasticandClaude Opus 5.5 2026-10-04 17:52:28 +07:00
  • 1b3e7110a3 M3.21: active-row edits of the other kind stay on the painted leaves, item transparency is one undo step bflatasticandClaude Opus 5.5 2026-10-04 17:50:46 +07:00
  • 8910f8fd1e M3.12: the dialog Cancel button reuses dialogs::cancel; the Swatches panel no longer clones its selection every frame bflatasticandClaude Opus 5.5 2026-10-04 17:45:50 +07:00
  • d1d133bf09 M3.13: swatch.newGroup falls back to "Color Group" for a blank name, never gives a swatch its own group's name, and takes mesh point colours from the artwork bflatasticandClaude Opus 5.5 2026-10-04 17:45:49 +07:00
  • e9e4b94ed0 M3.10: default swatch names never read "-0" (components are clamped first); one numbering helper for free and new swatch names bflatasticandClaude Opus 5.5 2026-10-04 17:45:47 +07:00
  • 984eb7f10c M3.26: effects crate docs list the shared clip_outline helper bflatasticandClaude Opus 5.5 2026-10-04 17:45:04 +07:00
  • 745d50f76e M3.25: appearance.setItem takes ids without a selection; undo/redo through mask editing tested bflatasticandClaude Opus 5.5 2026-10-04 17:45:04 +07:00
  • 014ee0382f M3.20: visual bounds cover arrowheads so overhanging heads are not culled; one arrowhead-weight helper bflatasticandClaude Opus 5.5 2026-10-04 17:40:41 +07:00
  • 4283820a30 M3.19: dash patterns too fine to advance draw solid instead of hanging on zero-length paths bflatasticandClaude Opus 5.5 2026-10-04 17:40:39 +07:00
  • 3786cfaf36 M3.17: interactive gradient annotator — drag the start handle or the bar to move the gradient, the end handle to change length and angle, just past the end to rotate (Shift snaps to 45°); a bar click adds a stop, stops drag along the bar, off it to delete (never below two), Alt-drag copies, diamonds move midpoints; a click inside selected art applies the gradient from that point; double-clicking a stop opens a popover (Color/Swatches, Opacity, Location); the selected stop lives in the session (gradient.selectStop), shared by the tool, the Gradient and Color panels and agents, and takes Delete/Backspace and ←/→ ahead of their shortcuts (Tool::claims_key, also headless); stop chips draw as Overlay::Swatch with generated add/remove-stop cursors; the stop math moves into the color crate bflatasticandClaude Opus 5.5 2026-10-04 17:39:36 +07:00
  • 3692b9d233 M3.24: basic appearance, Layers target dots, Mixed Appearances and Clear resets opacity bflatasticandClaude Opus 5.5 2026-10-04 17:30:03 +07:00
  • 7da0bfb1c6 M3.13: New Swatch and New Color Group dialogs — New Swatch reuses the Swatch Options fields prefilled from the active colour (its default name follows the colour), goes into the selected colour group, Alt-click skips it and Cmd/Ctrl makes a spot colour; New Color Group makes a group from the selected swatches or the selected artwork's colours, optionally as global swatches the art links to and with swatches for tints bflatasticandClaude Opus 5.5 2026-10-04 17:26:24 +07:00
  • 4f685be57a M3.26: clipping sets with any clip shape bflatasticandClaude Opus 5.5 2026-10-04 17:23:57 +07:00
  • b6b87ee9b6 M3.23: per-item Opacity popups and one grouped blend-mode widget bflatasticandClaude Opus 5.5 2026-10-04 17:21:28 +07:00
  • 5ae7bfb8ca M3.20: arrowheads: hollow outlines, tip/extend alignment, one opacity for line and head bflatasticandClaude Opus 5.5 2026-10-04 17:20:40 +07:00
  • 23f19a861b M3.19: dotted lines: zero-length dashes draw discs or squares bflatasticandClaude Opus 5.5 2026-10-04 17:18:13 +07:00
  • 09d7aaa7f4 M3.18: shared stroke-geometry module for arrowheads, width profiles and the profile preset catalogue bflatasticandClaude Opus 5.5 2026-10-04 17:16:17 +07:00
  • aa1b592935 M3.16: the Gradient tool follows the active proxy and type objects — the tool and annotator edit the fill or the stroke by the focused proxy (ToolContext.fill_active); paint.setGradientGeom takes stroke? (default: the active proxy) and index? (one appearance item), sets type objects' vectors on their runs in text space and keeps the aspect the document shows; paint.setFill/setStroke vectors on type move into text space; aspect edits place run gradients on the layout bounds; run strokes (and type appearance strokes) fit the stroke-inflated box on screen and in PDF bflatasticandClaude Opus 5.5 2026-10-04 17:16:12 +07:00
  • 3082be6ecf M3.12: delete swatches and colour groups — Shift/Cmd-click selects several swatches and groups in the panel, Delete asks first (Alt-click skips), swatch.delete {names} removes them in one undo step and art using a deleted global swatch keeps its colour, unlinked bflatasticandClaude Opus 5.5 2026-10-04 17:15:46 +07:00
  • 543d09985d M3.22: effects apply to the active fill or stroke and item effect rows are editable bflatasticandClaude Opus 5.5 2026-10-04 17:15:40 +07:00
  • b117566fc2 M3.25: opacity-mask editing and transparency command reach bflatasticandClaude Opus 5.5 2026-10-04 17:10:21 +07:00
  • 6b159467a2 SVG import: tspan line breaks follow the baseline gap (none on the same baseline, bounded far gaps) storybored379andClaude Opus 5.5 2026-10-04 00:06:57 -07:00
  • ce5fdfd373 SVG import: root sizes in mm/cm/in/pt open at their physical size storybored379andClaude Opus 5.5 2026-10-04 01:14:20 -07:00
  • cab5dffbcf SVG export: area type keeps its wrapped lines and alignment storybored379andClaude Opus 5.5 2026-10-04 01:01:04 -07:00
  • 152228d76d Raster export: refuse sizes the renderer can't produce instead of crashing storybored379andClaude Opus 5.5 2026-10-04 00:44:03 -07:00
  • c20b7deec5 Stroke dashes: an invalid dash pattern draws a solid stroke instead of hanging the renderer storybored379andClaude Opus 5.5 2026-10-04 00:00:39 -07:00
  • 4ac7095601 SVG import: <textPath> comes back as type on a path storybored379andClaude Opus 5.5 2026-10-03 23:46:04 -07:00
  • 1fd9b79a9d MCP: headless open_file reads .pdf and PDF-compatible .ai, as File ▸ Open does storybored379andClaude Opus 5.5 2026-10-03 23:45:57 -07:00
  • d272d32be3 M3.11: Swatch Options — double-click, the options button or the menu item opens a colour swatch's editor (name, process/spot, Global, Gray/RGB/HSB/CMYK/Web sliders, hex) with a live canvas preview; gradients open the Gradient panel and patterns pattern editing; swatch.edit recolours and renames every linked fill, stroke and text run in one undo step, spot forces Global, grouped swatches edit too; swatch.list query bflatasticandClaude Opus 5.5 2026-10-04 12:32:17 +07:00
  • 81f86a9acc M3.15: gradients follow every transform — rotate, reflect, shear, non-uniform scale and Free Distort/warps pin an unplaced gradient to its fit first (fills on the bounds, strokes on the stroke-inflated box; moves and uniform scales keep refitting); linear vectors keep their isolines and radial gradients map their ellipse (principal axes give the new end and aspect); the radial angle places the vector before the gradient is placed; the eyedropper samples radials honouring aspect; SVG import shares the mapping; warped text, images and symbols no longer map their gradients twice bflatasticandClaude Opus 5.5 2026-10-04 12:31:54 +07:00
  • 018bed29db M3.21: the Appearance panel's active item drives paint, stroke, gradient and transparency edits bflatasticandClaude Opus 5.5 2026-10-04 12:28:05 +07:00
  • 61ddc1ce34 M3.14: lossless, validated gradient params — paint.setFill/setStroke, swatch.new and appearance.setItem keep kind (freeform too), midpoints, stop opacity, aspect, vector and swatch link; a shared parse_stops rejects fewer than two or malformed stops, clamps offsets and normalises 0..100 opacity; an aspect without a vector places the gradient on each object's (stroke-inflated) bounds; panels write gradients through one params writer bflatasticandClaude Opus 5.5 2026-10-04 12:22:49 +07:00
  • 2f21fc3a66 M3.10: swatch names follow the colour model (C=10 M=20 Y=30 K=0, R=.. G=.. B=.., Gray K=..) and are unique document-wide; New Swatch saves the active gradient or pattern, Ctrl/Cmd-click makes a spot colour; colour groups take solid colours only bflatasticandClaude Opus 5.5 2026-10-04 12:20:52 +07:00
  • 00a0874d4d M3.9: swatches in colour groups are first-class — Document Color Mode converts them, they can be spot colours with their own plate and PDF Separation, and Document Info counts them bflatasticandClaude Opus 5.5 2026-10-04 12:15:10 +07:00
  • 8f9d6ef2bd Roadmap: M3/M4 wave 0 (one loader/encoder for every frontend, MCP export options, per-area paint modules, brands gate) m3-m4-paint-and-files bflatasticandClaude Opus 5.5 2026-10-04 12:02:52 +07:00
  • fb8c41d8e3 Merge wp/M1: one engine loader/encoder for every frontend and export correctness (M4.12, M4.13) bflatasticandClaude Opus 5.5 2026-10-04 11:58:00 +07:00
  • 115255a7e4 Merge wp/WP-00: neutral labels, packaging metadata and vendor-name CI gate (M3.7, M4.10, M4.11) bflatasticandClaude Opus 5.5 2026-10-04 11:57:34 +07:00
  • 29d43d2a84 Merge wp/WP-01: split paint/panel command modules and dialogs into per-area files (M3.8) bflatasticandClaude Opus 5.5 2026-10-04 11:57:28 +07:00
  • 879295dd1a M4.10: shortcut-set alias test reads the legacy name from the alias table bflatasticandClaude Opus 5.5 2026-10-04 11:56:39 +07:00
  • 7b410ecf2c M3.7: proof setup looks profiles up through the alias table; alias tests read the legacy name from it bflatasticandClaude Opus 5.5 2026-10-04 11:56:39 +07:00
  • 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 bflatasticandClaude Opus 5.5 2026-10-04 11:49:45 +07:00
  • 5d9b97c3bd M4.10: neutral file, preference and MCP wording; vendor-name CI gate bflatasticandClaude Opus 5.5 2026-10-04 11:47:28 +07:00
  • dd0bb0eefb M3.7: colour tests share the settings lock bflatasticandClaude Opus 5.5 2026-10-04 11:45:32 +07:00
  • 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 bflatasticandClaude Opus 5.5 2026-10-04 11:38:23 +07:00
  • 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 bflatasticandClaude Opus 5.5 2026-10-04 11:36:51 +07:00
  • 9cabeea68b M3.8: register the split paint modules next to paint so the command palette keeps listing them (Stroke Options for "stroke") bflatasticandClaude Opus 5.5 2026-10-04 11:32:11 +07:00
  • b7969a6a5d M3.8: split the paint/panel command modules and the dialogs into per-area files bflatasticandClaude Opus 5.5 2026-10-04 11:22:23 +07:00
  • 0af38a31fd M4.11: packaging metadata describes a vector illustration app bflatasticandClaude Opus 5.5 2026-10-04 11:19:13 +07:00
  • 016fcbf34e M3.7: neutral paint, effect and stroke labels bflatasticandClaude Opus 5.5 2026-10-04 11:17:50 +07:00
  • d99853ed2a M4.10: neutral New Document preset name bflatasticandClaude Opus 5.5 2026-10-04 11:01:59 +07:00
  • 5fab94753c CI: cargo fmt xtask/src/version.rs (the fmt gate failed on main) bflatasticandClaude Opus 5.5 2026-10-04 10:23:02 +07:00
  • 604c20ed90 Merge pull request #3 from storytold/revert-readme-habits BFlat 2026-10-04 01:16:35 +07:00
  • e08ced735e Docs: drop the README's list of specific Illustrator habits (too detailed for the overview); the control-protocol note on the save prompt stays bflatastic 2026-10-04 01:16:12 +07:00
  • b538b0a84a Merge pull request #2 from storytold/docs-workflow-updates BFlat 2026-10-04 00:57:41 +07:00
  • 62681d2b80 Docs: README names the Illustrator habits that now work (corner widget dragging, Alt-click pivot on an anchor, middle-mouse pan, save prompt before closing); control protocol: file.close / closeAll / app.quit open a saveChanges dialog per modified document and how agents answer it bflatastic 2026-10-04 00:55:55 +07:00
  • 4ddc422e51 Release 0.1.1 v0.1.1 Brandon ThomasandClaude Opus 5.5 2026-10-03 09:55:30 -04:00
  • f188863b10 README: tagline names the Adobe app it reimplements; standard Adobe trademark and non-affiliation notice v0.1.0 Brandon ThomasandClaude Opus 5.5 2026-10-02 12:24:12 -04:00
  • e608d5a26b README: Crafting Apps table in five columns (icon, app, purpose, GitHub, Website) Brandon ThomasandClaude Opus 5.5 2026-10-02 12:19:01 -04:00
  • 065d095597 README: drop the old DrawCraft name; VectorCraft links to /apps/vectorcraft Brandon ThomasandClaude Opus 5.5 2026-10-02 12:18:12 -04:00
  • 4af5e80a41 README: app icons in the Crafting Apps table Brandon ThomasandClaude Opus 5.5 2026-10-02 12:17:13 -04:00
  • 2d0b055c7e Make ported packaging scripts executable (fixes exit 126) Brandon ThomasandClaude Opus 4.8 2026-10-02 12:03:30 -04:00
  • 1531cb0d11 Merge pull request #1 from storytold/live-corners-pan-close-prompt BFlat 2026-10-02 23:00:22 +07:00
  • b8701977d4 M4.9: Save / Don't Save / Cancel before closing modified documents — File → Close, Close All, a tab's ×, Quit and the window's close button ask once per modified document (shown first); Cancel stops the whole close/quit, a cancelled Save As keeps the document open; closing keeps per-document views aligned; agents answer the saveChanges dialog with ui.dialog.confirm (discard: true for Don't Save) bflatastic 2026-10-02 22:24:30 +07:00
  • 3f1f3383d3 M11.6: middle-button drag pans the view with any tool (no tool events, grabbing cursor while panning; a left press during the pan is ignored); headless canvas test bflatastic 2026-10-02 22:23:55 +07:00
  • cf775072be M1.10: Rotate/Reflect/Scale/Shear reference point snaps — a click or Alt-click within 5 px of an anchor or object centre (of the selection or the object under the pointer) pivots exactly there, so Alt-clicking a corner flips/rotates from that corner; hovering shows the anchor/center label first; follows View → Snap to Point or Smart Guides (snap_to_point now reaches the tools) bflatastic 2026-10-02 22:23:24 +07:00
  • 8276d0a303 M2.10: Live Corners — drag a live rectangle's corner widget (Selection or Direct Selection) to round or sharpen all four corners as one undo step (object.setLiveShape preview, radius readout, follows rotated/scaled shapes, square to fully round); widgets drawn from the same geometry the tools hit-test, hidden on tiny shapes and with View → Hide Corner Widget; corner-radius cursor bflatastic 2026-10-02 22:22:29 +07:00
  • 0e24110259 Fix macOS Info.plist: remove document-types block cleanly (route B) Brandon ThomasandClaude Opus 4.8 2026-10-02 11:36:23 -04:00
  • da8a14dd04 Signed release pipeline (macOS/Windows/Linux/Web); README community note Brandon ThomasandClaude Opus 4.8 2026-10-02 11:35:29 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-02 10:13:24 -04:00
  • 437320509d app icon: regal engraved dragon (owner's ArtCraft drawing), Dock/taskbar/launcher wiring, palette docs Brandon ThomasandClaude Opus 5.5 2026-10-02 09:45:30 -04:00
  • 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) Brandon ThomasandClaude Opus 5.5 2026-10-02 09:28:04 -04:00
  • fa2d901a7e M2.9: Shaper tool — rough rectangles, ellipses, triangles/polygons/diamonds and lines become clean live shapes (geom::recognize), squares/circles snap; a scribble deletes the objects it crosses Brandon ThomasandClaude Opus 5.5 2026-10-02 09:10:44 -04:00
  • 55e24d6622 M11.4: text-thread connectors on selected threaded frames + View → Hide/Show Text Threads, Hide/Show Gradient Annotator, Type → Show Hidden Characters (spaces, ¶, #), Effect → Last Effect… (reopens the last effect's dialog) Brandon ThomasandClaude Opus 5.5 2026-10-02 08:51:33 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-02 08:40:18 -04:00
  • 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) Brandon ThomasandClaude Opus 5.5 2026-10-02 08:16:36 -04:00
  • 8e735f1de9 M11.3: View → Snap to Pixel (drawing points and moved selections land on whole pixels) Brandon ThomasandClaude Opus 5.5 2026-10-02 08:16:36 -04:00
  • 16a73dc02a M12.7: Object → Create Object Mosaic… (trace::mosaic tile averages; columns/rows, new size, spacing, gray, delete raster; follows the image transform) Brandon ThomasandClaude Opus 5.5 2026-10-02 08:16:36 -04:00
  • 5a36fa1a9b M6.1: a panic inside the curve sweep (rare near-degenerate input) becomes PathOpsError::Degenerate instead of crashing (found by the randomized export test) Brandon ThomasandClaude Opus 5.5 2026-10-02 08:16:35 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-02 07:58:10 -04:00
  • 9f20c36f33 Roadmap: parity estimate — ~65% feature parity (weighted over 22 areas), ~50% including fidelity and hardening; ~330–500 h of Opus 5.5 to feature parity and ~440–670 h to full parity for one agent (~85–140 h / ~115–190 h with 4–6 agents); inventories and milestone estimates reconciled Brandon ThomasandClaude Opus 5.5 2026-10-02 07:51:36 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-02 07:50:20 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-02 00:16:23 -04:00
  • 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) Brandon ThomasandClaude Opus 5.5 2026-10-02 00:16:23 -04:00
  • 1e7b4308ec M0.2: hit-test distance exact on cusp-like cubics (nearest-point accuracy 1e-9; proptest regression) Brandon ThomasandClaude Opus 5.5 2026-10-02 00:16:23 -04:00
  • c878ac994c M11.4: View → Hide/Show Corner Widget; Type → Recent Fonts (last 10 applied fonts, persisted) Brandon ThomasandClaude Opus 5.5 2026-10-01 23:46:20 -04:00
  • 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) Brandon ThomasandClaude Opus 5.5 2026-10-01 23:46:20 -04:00
  • 3b48776607 M5.2: render perf — drop shadows/outer glows from a cached CPU-blurred raster composited per draw (600 shadows: ~300–1500 ms → 17–70 ms/frame); object blend modes on single plain fills applied per draw instead of a full-viewport layer; effect catalogue indexed once (lookups 300× faster) Brandon ThomasandClaude Opus 5.5 2026-10-01 23:31:22 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-01 22:48:49 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-01 22:21:58 -04:00
  • 8434ef4404 M2.6: Flare tool ↑/↓ add or remove rays while drawing Brandon ThomasandClaude Opus 5.5 2026-10-01 22:21:58 -04:00
  • 09fc2eedd9 M4.3: live effects survive SVG, PDF and clipboard export (vectorcraft_effects::bake_document evaluates object, per-fill/stroke and Pathfinder effects on a copy; SVG raster effects become filters: drop shadow, outer/inner glow, Gaussian blur, feather) Brandon ThomasandClaude Opus 5.5 2026-10-01 21:39:20 -04:00
  • 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 Brandon ThomasandClaude Opus 5.5 2026-10-01 20:57:14 -04:00
  • e20fe0a200 M0.9: attribute the ArtCraft brand marks in docs/brand (cargo xtask assets) Brandon ThomasandClaude Opus 5.5 2026-10-01 20:57:14 -04:00
  • 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) Brandon ThomasandClaude Opus 5.5 2026-10-01 20:57:02 -04:00
  • 7d95f146ce M11.4: View → Trim View (artwork clipped to the artboards; RenderOptions::trim) Brandon ThomasandClaude Opus 5.5 2026-10-01 20:56:45 -04:00