17 Commits
Author SHA1 Message Date
Brandon ThomasandClaude Opus 5.5 d4b0a5479b Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#994)
Progress docs per craftrules standards/progress-docs.md: target-app parity, gaps, roadmap with alpha gate, readiness by audience (full / mainstream / essentials) with Opus 5.5 hours, and feature, format, hardware, UI and localization parity docs.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-10 14:11:14 -04:00
bflatasticandClaude Opus 5.5 87cf1ff3e6 Clean-room: never run, automate or observe Adobe software; behaviour from public docs only
Adobe's Terms of Use forbid reverse engineering, including observing a program's inputs and
outputs to recreate it. The agent rules allowed black-box observation of the running app; they
now forbid running, automating, screenshotting or measuring any Adobe application, reading an
Adobe install, and copying Adobe-authored code or text (procsets, prologs, sample files) into
the repo, tests included. Behaviour comes from public documentation and published specs only.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-08 21:39:16 +07:00
Brandon ThomasandClaude Opus 5.5 f7a03160d6 About: contributor and model credits compiled in (grab bag + table, self-submitted names) (#411)
* About: contributors compiled in from contributors.json (grab bag + table, sortable, name toggle)

Help > About VectorCraft gains Contributors and Models tabs next to the existing About
content, following the craftrules standard (standards/contributors.md):
contributors/contributors.json is generated by craftrules/scripts/contributors.py and baked
into the binary by crates/ui-egui/build.rs as static tables (credits.rs). Each contributor
line: @username, opt-in display/real name, PRs, commits, lines +/-/delta, binary assets +/-,
first/last commit. Sortable by every column; alphabetical ignores case and the leading @.
Labels are translated (ja, zh-hant, pt-br catalog rows).

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors docs: craftrules is two levels up (../../craftrules)

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: self-submitted names in contributors/people.toml; AGENTS.md credit-yourself section

build.rs reads contributors/people.toml next to the generated contributors.json and shows a name only
for entries the generator verified as written by that person (craftrules standards/contributors.md).

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: regenerate (verified people.toml entries)

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* i18n: credits labels for catalogs added on main since this branch

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: regenerate after rebase onto main

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Contributors: regenerate (verified people.toml entries)

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 21:22:04 -04:00
Brandon ThomasandClaude Opus 5.5 1f7873273b Rename PrintCraft to PdfCraft (storytold/pdfcraft) (#356)
Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-07 14:45:57 -04:00
Brandon ThomasandClaude Opus 5.5 721d1118f3 Fonts: docs use an absolute CRAFT_FONTS_DIR; note the web size
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 14:19:24 -04:00
Brandon ThomasandClaude Opus 5.5 546a65f77a Fonts: use craft-fonts as an optional build input; move the Japanese fonts out
Shippori Mincho (assets/fonts, from #145) moves to storytold/craft-fonts. crates/text/build.rs
embeds the fonts of a craft-fonts checkout when CRAFT_FONTS_DIR is set (web: BIZ UDPGothic
Regular only) as vectorcraft_text::CRAFT_FONTS; unset, it is empty and Japanese falls back to the
installed fonts. Document text gets the Japanese faces after the bundled fonts (Mincho first); the
UI adds them at the end of every egui family (BIZ UDPGothic first), before ui_fonts' system-font
discovery. Release and FreeBSD CI builds check craft-fonts out at a pinned commit; packages carry
the fonts' OFL texts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-06 10:42:21 -04:00
Brandon ThomasandClaude Opus 5.5 7c0a253b50 docs: point agents to the shared test corpora (#125)
Real-file test oracles live in storytold/photocraft-corpus, explained in
craftrules standards/test-corpora.md. Never commit large binary fixtures
here; fetch them pinned and sha256-verified.

Co-authored-by: Claude Opus 5.5 <[email protected]>
2026-10-05 08:24:28 -04:00
Brandon ThomasandClaude Opus 5.5 2b48392c36 Roadmap: honest assessment, the gap list and where we're going
- ROADMAP: a new "Honest assessment (2026-10-05)" section with:
  - scores by dimension (breadth, depth, large missing subsystems, interaction
    fidelity, look and feel, file interop, bundled content, performance,
    robustness, platforms, automation) and how far to trust the self-graded scores;
  - the prioritized gap list with one-agent hour sizes;
  - the direction (next, then, alongside, 1.0).
- ROADMAP: the parity rows for files, export, print, links and UI chrome are
  re-derived after M4 (feature parity ~74% on the rubric, 68–74% honest range;
  ~230–350 h to feature parity, ~335–520 h to full parity, one agent), the M4 and
  M11 milestone rows and the inventories are updated, and "Shipped so far" lists M4
  and the robustness work.
- README Status: where we are, what's missing, where we're going.
- AGENTS.md / CLAUDE.md: sessions start from the gap list; landing a task updates
  the assessment, the parity row and the README status in the same PR.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 06:11:03 -04:00
Brandon ThomasandClaude Opus 5.5 3e323bfa2a Robustness: VectorCraft never crashes — no panics in shipped code
Shipped code no longer unwraps, expects or panics: every one of the 124
unwrap()/expect()/panic!/unreachable! sites outside tests now handles the
failure (Result/Option, ?, let-else, defaults) and reports errors to the user.

- Lints: workspace clippy denies unwrap_used, expect_used, panic, todo,
  unimplemented and unreachable; clippy.toml allows them in tests, and
  integration tests, examples and testkit opt out explicitly.
- Safety net (vectorcraft_engine::guard): a panic in a top-level command rolls
  the document back and returns EngineError::Internal; a panicking tool is
  reset; the MCP server answers with an internal error and keeps serving; the
  UI frame and each control request are guarded.
- APIs that hid failures now return them: Rendered::to_png/to_jpeg/to_webp
  return Result (JPEG/WebP errors used to write empty files),
  FontDb::face returns Option, Region::top returns Option.
- Fuzzing: engine/tests/import_fuzz.rs feeds garbage, hostile and mutated SVG
  and PDF through import → render → export (30k cases locally, no panics).
- Docs: AGENTS.md/CLAUDE.md rule, docs/development.md "Robustness" section,
  README pointer and a PR template checklist.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-05 06:28:59 +07:00
Brandon ThomasandClaude Opus 5.5 ef5beece81 Licensing: MIT OR Apache-2.0 files, NOTICE, ArtCraft brand terms
Adds LICENSE-MIT, LICENSE-APACHE and docs/brand/LICENSE-brand.txt from the Crafting Apps
licensing standard. NOTICE follows the standard template (copyright, licence, brand carve-out)
and keeps the third-party list, now noting the Feather-derived Lucide icons (also MIT) and the
egui default fonts compiled into the app. ASSETS.md gives the docs/brand/ files their trademark
terms and marks the 21 Feather-derived Lucide icons. README uses the standard License and credits
section; AGENTS.md/CLAUDE.md point to the licence and brand files.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-04 10:05:13 -04:00
Brandon ThomasandClaude 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 <[email protected]>
2026-10-01 14:30:09 -04:00
Brandon ThomasandClaude 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 <[email protected]>
2026-10-01 10:09:19 -04:00
Brandon ThomasandClaude Opus 5.5 b318a62edd M5.4: drawcraft-cli perf — plan §4 budgets on a synthetic 50k-path document, with a busy-machine warning
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 08:39:58 -04:00
Brandon ThomasandClaude Opus 5.5 abe2ed7080 M1.9: headless CLI/MCP export PDF/JPG/WebP; app JPEG/WebP export; ui.screenshot errors instead of hanging without a presented frame; docs (roadmap re-estimate, agent guide: bench, locked screens, disk)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-01 00:30:38 -04:00
Brandon ThomasandClaude Opus 5.5 94e72f490e Asset policy: no Adobe iconography/images; per-asset attribution in ASSETS.md enforced by xtask assets (in ci). Offset Path: fix area loss for offsets larger than curvature radius
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 11:23:33 -04:00
Brandon ThomasandClaude Opus 5.5 8d20f0e475 Point agents at ROADMAP.md
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 10:07:15 -04:00
Brandon ThomasandClaude Opus 5.5 8cd8f8f8a7 M0.1/M0.9: xtask (layers, wasm, ci, stats), agent docs, NOTICE, README, control protocol doc
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 06:21:08 -04:00