storytold/vectorcraft
70.7
Strong · 7 November 2026
630.9k
lines of production code
Rust
primary language
3
measurements over time
What this system is
Behavioural changes
1 commit (0 fixes) modifying crates/affinity
A change to existing behaviour in crates/affinity — 1 commit, 3 files: “refactor(affinity): move model.rs items to model/{bounds,read}.rs”. Also in this area: 2 commits (0 fixes) modifying crates/affinity; 1 commit (1 fix) fixing crates/affinity.
crates/affinity/src/model, examples · medium confidence · unverified
1 commit (0 fixes) modifying licenses, packaging
A change to existing behaviour in licenses, packaging — 1 commit, 16 files: “PDF.R1: integrate shared reader with bounded nesting checks”.
licenses · medium confidence · unverified
101 commits (26 fixes) modifying crates/ui-egui
A change to existing behaviour in crates/ui-egui — 101 commits (26 fixs), 156 files: “Shortcuts: a text with no key press of its own leaves the next keystroke's press to that keystroke's text”; “Brushes: each Pattern Brush Options tile can be set to a pattern swatch or None”; “Shortcuts: Shift+Comma and Shift+Period follow their key positions only with Shift alone”; and 98 more (refs \#4893, \#4953, \#4946, \#4943, \#4939, …). Also in this area: 4 commits (1 fix) modifying crates/color; 1 commit (0 fixes) modifying crates/color; 2 commits (2 fixes) fixing crates/color, examples.
crates/color/src/cms, crates/mcp/src/tests, crates/mcp/src/tools · low confidence · unverified
13 commits (2 fixes) modifying crates/pdf
A change to existing behaviour in crates/pdf — 13 commits (2 fixs), 26 files: “Part of \#868: PDFs saved with the reference app's editing data open from it, as .ai files do”; “PDF import: an editor's .ai keeps its RGB numbers, and a fill faded or masked by its group keeps its stroke apart”; “PDF import: the type of a .ai page moved right keeps the stroke drawn on its glyphs”; and 10 more (refs \#868, \#1304, \#1244, \#1387, \#1286, …). Also in this area: 1 commit (1 fix) fixing (repo-wide); 1 commit (0 fixes) modifying apps/vectorcraft-cli, crates/testkit; 2 commits (1 fix) modifying crates/geom, crates/testkit.
crates/testkit · low confidence · unverified
16 commits (3 fixes) modifying crates/engine
A change to existing behaviour in crates/engine — 16 commits (3 fixs), 72 files: “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”; “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”; “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”; and 13 more. Also in this area: 7 commits (1 fix) modifying crates/text; 1 commit adding/updating tests in crates/text; 2 commits (2 fixes) fixing crates/text; 1 commit (1 fix) fixing crates/text.
crates/doc/src, crates/text/src · medium confidence · unverified
2 commits (0 fixes) modifying crates/color/src/palette\_io
A change to existing behaviour in crates/color/src/palette\_io — 2 commits, 1 file: “refactor(color): move palette\_io.rs tests to palette\_io/tests.rs”; “style: cargo fmt on files moved without formatting”.
_crates/color/src/palette\io · medium confidence · unverified
2 commits (0 fixes) modifying crates/tools/src/corners
A change to existing behaviour in crates/tools/src/corners — 2 commits, 1 file: “refactor(tools): move corners.rs tests to corners/tests.rs”; “style: cargo fmt on files moved without formatting”.
crates/tools/src/corners · medium confidence · unverified
2 commits (0 fixes) modifying crates/tools/src/pen
A change to existing behaviour in crates/tools/src/pen — 2 commits, 1 file: “refactor(tools): move pen.rs tests to pen/tests.rs”; “style: cargo fmt on files moved without formatting”.
crates/tools/src/pen · medium confidence · unverified
2 commits (0 fixes) modifying crates/tools/src/rulerguide
A change to existing behaviour in crates/tools/src/rulerguide — 2 commits, 1 file: “refactor(tools): move rulerguide.rs tests to rulerguide/tests.rs”; “style: cargo fmt on files moved without formatting”.
crates/tools/src/rulerguide · medium confidence · unverified
3 commits (0 fixes) modifying assets/app-icon
A change to existing behaviour in assets/app-icon — 3 commits, 17 files: “app icon: regal engraved dragon (owner's ArtCraft drawing), Dock/taskbar/launcher wiring, palette docs”; “M14.3: the dragon app icon is the brand mark”; “docs: tidy agent, contributor and asset docs”.
assets/app-icon · medium confidence · unverified
5 commits (0 fixes) modifying crates/effects
A change to existing behaviour in crates/effects — 5 commits, 5 files: “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)”; “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”; “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”; and 2 more. Also in this area: 1 commit (0 fixes) modifying crates/pdf, xtask; 10 commits (1 fix) modifying crates/pdf; 3 commits (2 fixes) fixing crates/pdf.
crates/pdf/src, crates/three-d/src · low confidence · unverified
54 commits (0 fixes) modifying crates/doc
A change to existing behaviour in crates/doc — 54 commits, 22 files: “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”; “M3.20: visual bounds cover arrowheads so overhanging heads are not culled; one arrowhead-weight helper”; “M3.21: the Appearance panel's active item drives paint, stroke, gradient and transparency edits”; and 51 more. Also in this area: 1 commit (1 fix) fixing crates/format; 1 commit (0 fixes) modifying crates/format; 3 commits (2 fixes) fixing crates/format; 2 commits (1 fix) modifying crates/format, crates/geom.
(repo-wide) · low confidence · unverified
7 commits (0 fixes) modifying crates/tools
A change to existing behaviour in crates/tools — 7 commits, 7 files: “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”; “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)”; “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”; and 4 more. Also in this area: 1 commit (0 fixes) modifying crates/tools/src/draw2, crates/tools/src/xform; 4 commits (1 fix) modifying crates/tools/src/xform; 9 commits (5 fixes) fixing crates/tools/src/xform.
(repo-wide) · low confidence · unverified
713 commits (160 fixes) modifying (repo-wide)
A change to existing behaviour in (repo-wide) — 713 commits (160 fixs), 13 files: “Fix \#733: PDF export keeps type as text in embedded subset fonts”; “Graph Type: Override Calculated Values uses the exact value-axis range”; “ROADMAP: dropped libraries, presets and plug-ins open in the progress log (\#1083)”; and 708 more (refs \#733, \#1083, \#681, \#388, \#784, …).
(repo-wide) · low confidence · unverified
9 commits (1 fix) modifying crates/mcp
A change to existing behaviour in crates/mcp — 9 commits (1 fix), 10 files: “Raster export: refuse sizes the renderer can't produce instead of crashing”; “MCP: headless open\_file reads .pdf and PDF-compatible .ai, as File ▸ Open does”; “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”; and 6 more. Also in this area: 8 commits (3 fixes) modifying crates/mcp; 1 commit adding/updating tests in crates/mcp/tests.
(repo-wide) · low confidence · unverified
Fixes
1 commit (1 fix) fixing crates/plugins/example, crates/plugins/src
A fix in crates/plugins/example, crates/plugins/src — 1 commit (1 fix), 10 files: “Fix \#121: sandboxed WebAssembly plug-ins: object filters and live effects” (refs \#121).
crates/plugins/example · medium confidence · unverified
Test coverage
1 commit adding/updating tests in apps/vectorcraft/tests, crates/render/tests; 1 commit adding/updating tests in apps/vectorcraft/tests, crates/render/tests; 1 commit adding/updating tests in crates/doc/src/tests; 1 commit adding/updating tests in crates/metafile/src/tests; 1 commit adding/updating tests in crates/pathops/tests/common; 1 commit adding/updating tests in crates/svg/tests; 1 commit adding/updating tests in crates/three-d/src/tests; 12 commits adding/updating tests in crates/engine/tests.
Dependencies
5 commits updating dependencies (25 manifests)
A dependency / build maintenance change in (dependencies) — 5 commits (1 fix), 25 files: “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”; “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”; “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)”; and 2 more. Also in this area: 1 commit updating dependencies (2 manifests).
(dependencies) · medium confidence · unverified
Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 71.
Lenses
- Code Health 86
- Architecture 94
- Maturity 69
- Readiness 75
- Security 64
- Performance 100
Changes since last survey
- 300 commits — 204 feature/other, 96 fixes
By area
- (repo) — 140 commits
- crates/ui-egui — 50 commits
- crates/engine — 36 commits
- crates/eps — 25 commits
- crates/render — 12 commits
- crates/svg — 7 commits
- crates/tools — 5 commits
- apps/vectorcraft-cli — 3 commits
- crates/pathops — 3 commits
- crates/text — 3 commits
- docs/file-format-parity.md — 3 commits
- apps/vectorcraft — 2 commits
- crates/effects — 2 commits
- crates/pdf — 2 commits
- docs/mcp.md — 2 commits
- (root) — 1 commit
- crates/doc — 1 commit
- crates/mcp — 1 commit
- docs/roadmap.md — 1 commit
- docs/target-app-parity.md — 1 commit
Notable commits
- fix: Fix #5526: document the functions the link-status selection touches
- fix: Fix #5526: select images by link status
- fix: Fix item 1747: stop hidden thumbnail panel jobs
- fix: Merge pull request #3272 from FractalEncrypt/fix/outline-stroke-open-fills
- fix: Merge pull request #3273 from FractalEncrypt/fix/thin-curved-stroke-coverage
- fix: Merge pull request #4345 from el-j/fix/offset-path-transform-ram-spike
- fix: Merge pull request #5744 from dotCooCoo/fix/render-path-splice-on-edit
- fix: Merge pull request #5751 from dotCooCoo/fix/global-edit-check-cheap
- fix: Merge pull request #5753 from dotCooCoo/fix/pointer-waits-for-queued-keys
- fix: Merge pull request #5754 from dotCooCoo/fix/remote-letter-shortcut-docs
- fix: Merge pull request #5755 from Silvertree2010/fix/5746-wont-allow-snapping-to-2-guides
- fix: Merge pull request #5756 from dotCooCoo/fix/gradient-stroke-slices-on-move
- fix: Merge pull request #5758 from dotCooCoo/fix/layers-thumbs-active-document-first
- fix: Merge pull request #5761 from dotCooCoo/fix/coincident-lines-under-outline
- fix: Merge pull request #5762 from dotCooCoo/fix/pointer-backquote-boolean
- fix: Merge pull request #5763 from dotCooCoo/fix/svg-export-long-path
- fix: Merge pull request #5764 from dotCooCoo/fix/issue-5750
- fix: Merge pull request #5766 from dotCooCoo/fix/story-selection-cleanup-commands
- fix: Merge pull request #5768 from dotCooCoo/fix/withdrawn-pointer-skips-wait
- fix: Merge pull request #5770 from dotCooCoo/fix/ai-editing-guides
- …and 280 more
Written by cca.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
storytold/vectorcraft was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 7 November 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 36ef34dfdd8dfd1abc19fd209678860a00583558 — the exact code this score is about.
- Scored under rubric-2026.11.2 — the same rubric and the same method as every other entry in this index.
- Measured by Canine Code Analyzer (cca.canine.dev) using cca measure-2026.11.3+preprod-5f8314471808.