Brandon Thomas
|
2d0b055c7e
|
Make ported packaging scripts executable (fixes exit 126)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-10-02 12:03:30 -04:00 |
BFlat
|
1531cb0d11
|
Merge pull request #1 from storytold/live-corners-pan-close-prompt
Live Corners dragging, transform pivot snapping, middle-mouse pan, save prompt on close
|
2026-10-02 23:00:22 +07:00 |
bflatastic
|
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)
|
2026-10-02 22:42:50 +07:00 |
bflatastic
|
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
|
2026-10-02 22:42:50 +07:00 |
bflatastic
|
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)
|
2026-10-02 22:42:50 +07:00 |
bflatastic
|
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
|
2026-10-02 22:42:49 +07:00 |
Brandon Thomas
|
0e24110259
|
Fix macOS Info.plist: remove document-types block cleanly (route B)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-10-02 11:36:23 -04:00 |
Brandon Thomas
|
da8a14dd04
|
Signed release pipeline (macOS/Windows/Linux/Web); README community note
Ports photocraft's release workflow + packaging (signing, notarization,
MSI/DMG/deb/rpm/AppImage/web), adds `cargo xtask version`. File-type
associations omitted for now (route B); app keeps its own .desktop. Fresh
WiX UpgradeCode. README 'about' note updated.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-10-02 11:35:29 -04:00 |
Brandon Thomas
|
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
|
437320509d
|
app icon: regal engraved dragon (owner's ArtCraft drawing), Dock/taskbar/launcher wiring, palette docs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 09:45:30 -04:00 |
Brandon Thomas
|
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
|
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
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 09:10:44 -04:00 |
Brandon Thomas
|
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)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 08:51:33 -04:00 |
Brandon Thomas
|
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
|
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
|
8e735f1de9
|
M11.3: View → Snap to Pixel (drawing points and moved selections land on whole pixels)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 08:16:36 -04:00 |
Brandon Thomas
|
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
|
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)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 08:16:35 -04:00 |
Brandon Thomas
|
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
|
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
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 07:51:36 -04:00 |
Brandon Thomas
|
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
|
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
|
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
|
1e7b4308ec
|
M0.2: hit-test distance exact on cusp-like cubics (nearest-point accuracy 1e-9; proptest regression)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-02 00:16:23 -04:00 |
Brandon Thomas
|
c878ac994c
|
M11.4: View → Hide/Show Corner Widget; Type → Recent Fonts (last 10 applied fonts, persisted)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:46:20 -04:00 |
Brandon Thomas
|
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
|
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)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 23:31:22 -04:00 |
Brandon Thomas
|
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
|
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
|
8434ef4404
|
M2.6: Flare tool ↑/↓ add or remove rays while drawing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 22:21:58 -04:00 |
Brandon Thomas
|
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)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 21:39:20 -04:00 |
Brandon Thomas
|
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
|
e20fe0a200
|
M0.9: attribute the ArtCraft brand marks in docs/brand (cargo xtask assets)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 20:57:14 -04:00 |
Brandon Thomas
|
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
|
7d95f146ce
|
M11.4: View → Trim View (artwork clipped to the artboards; RenderOptions::trim)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 20:56:45 -04:00 |
Brandon Thomas
|
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
|
a5a02f43c0
|
readme
|
2026-10-01 14:51:05 -04:00 |
Brandon Thomas
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
2dafc7634b
|
M5: cache expanded stroke outlines across frames (pans reuse them), skip per-frame bounds for solid paints, pointer hasher for render caches (~7% less CPU per frame on the 20k bench); perf suite budgets reflect reprojection + background refresh
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:32:43 -04:00 |
Brandon Thomas
|
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
|
e5959de6cc
|
M1.6/M12.5: Magic Wand panel (fill/stroke colour, stroke weight, opacity, blending mode with tolerances; settings in the engine, select.magicWand), Image Trace panel (presets, mode, threshold/colours, advanced, live re-trace), Glyphs reachable from the menus
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
2026-10-01 09:01:56 -04:00 |
Brandon Thomas
|
f673491bd2
|
progress
|
2026-10-01 08:56:21 -04:00 |