From eaff89e1c0d1a9fc85e511ddd46b457532be91fa Mon Sep 17 00:00:00 2001 From: Brandon Thomas Date: Wed, 30 Sep 2026 10:07:15 -0400 Subject: [PATCH] ROADMAP.md: status, milestones and parity estimates Co-Authored-By: Claude Opus 5.5 --- ROADMAP.md | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 ROADMAP.md diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 00000000..e52e483c --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,84 @@ +# DrawCraft Roadmap + +DrawCraft is a clean-room, open-source, pure-Rust reimplementation of the Adobe Illustrator workflow. It runs on macOS, Windows, Linux and the web (WASM), and agents can drive it fully over a JSON control channel and MCP. + +This file tracks **how far we are and what's left**. Estimates are wall-clock hours of continuous agent work (Claude Opus 5.5 lead plus 4–6 parallel agents). They were made by counting the remaining work, not measured, and are updated as work lands. + +_Last updated: 2026-09-30._ + +## Where we are + +| Dimension | Status | +|---|---| +| Infrastructure (engine, command registry, history, render, formats, MCP, web, packaging, tests) | **~90%** | +| Look & feel vs Illustrator 2026 default workspace (measured) | **~75–80%** | +| Feature surface vs full Illustrator | **~35–40%** | +| Estimated time to **checklist parity** (every menu item, tool, panel and dialog functional) | **~200–300 h** | +| Estimated time to **1:1 feel** (edge cases, modifier nuances, typographic/colour fidelity) | **~500+ h** | + +### Shipped so far +- **Architecture:** 19+ crates with enforced layering (`cargo xtask layers`). Every action is a command (~400 engine + ~50 UI). Undo is unlimited via structural sharing. `command.batch` runs several commands as one transaction. +- **Automation:** + - JSON-lines control channel with real egui pointer and keyboard injection. + - MCP server with 19 tools, which can attach to the running app or run headless. + - Headless CLI (`drawcraft-cli`). + - Actions panel that records and plays back commands. +- **UI:** Illustrator 2026 layout restyled to measured values: + - Medium Dark theme, categorized and Advanced toolbars, 35 pt document tabs, 33 pt panel tabs. + - Hint bar, contextual task bar, 19 dock panels with ≡ menus. + - Native macOS menu bar, vector tool cursors, a ⌘K command palette. + - Four brightness themes, persistent preferences. +- **Tools:** + - **Selection:** Selection, Direct/Group Selection, Magic Wand, Lasso. + - **Drawing:** Pen, Curvature, anchor tools, Pencil, Paintbrush, Blob Brush, Smooth, Path Eraser, Join. + - **Shapes:** all shape tools and the line, arc, spiral and grid tools. + - **Cutting:** Eraser, Scissors, Knife. + - **Transform:** Rotate, Reflect, Scale, Shear, Free Transform (distort/perspective). + - **Other:** Eyedropper, Gradient annotator, Artboard, Measure, Type, Hand, Zoom, Rotate View. +- **Drawing aids:** Smart Guides and snapping, and Draw Normal / Behind / Inside modes. +- **Geometry and effects:** + - Pathfinder (10 exact curve booleans), Offset, Outline Stroke, Simplify, Clean Up, Split Into Grid, Divide Objects Below. + - Live effects with previewing dialogs: Distort & Transform, Path, Convert to Shape, 15 Warp styles, Round Corners, Scribble, and raster drop shadow, glows and feather. +- **Colour, type and file workflows:** Recolor Artwork (engine), Edit Colors, Find & Replace, Change Case, Smart Punctuation, Guides, Lock/Hide Above, Transform Each, Rasterize. +- **Formats:** + - `.drawcraft` (lossless JSON), SVG import/export, PDF export/import (including PDF-compatible `.ai`). + - PNG, JPEG and WebP export, Export for Screens, Place. +- **Performance:** 20k shapes + 1k texts render in 27 ms per full-retina frame (7.8 ms zoomed), 7× faster than the first version. The UI thread never blocks. The web build is 7.1 MB gzipped. +- **Tests:** ~700 automated tests: model-based property tests, a junk-parameter sweep over every command, golden renders, and MCP end-to-end tests over stdio. + +## Milestones and estimates + +| # | Milestone | Status | Est. remaining (h) | +|---|---|---|---| +| M0 | Skeleton + vertical slice | ✅ done | — | +| M1 | Selection, transform, layers, MCP | ✅ mostly done (rotated persistent bbox pending) | 3–5 | +| M2 | Drawing tools + smart guides | ✅ mostly done (Shaper, Pen modifier nuances) | 5–10 | +| M3 | Paint & appearance (swatches, color, gradient, stroke, appearance, transparency, styles) | 🟡 panels done; opacity masks, freeform gradients pending | 10–15 | +| M4 | Files (native, SVG, PDF, raster, Export for Screens, clipboard interop) | 🟡 system clipboard SVG/PNG interop, EPS/DXF pending | 10–15 | +| M5 | Performance | 🟡 background render + caches + MT done; dirty-region rendering, GPU backend spike | 10–20 | +| M6 | Path operations (Pathfinder, Shape Builder, offset…) | 🟡 Shape Builder in progress; large-offset bug open | 5–10 | +| M7 | Type (point/area/path, editing, styles, OpenType, threading, glyphs) | 🟡 in progress | 20–30 | +| M8 | Transform & distort (Puppet Warp, Liquify tools, Envelopes, Blends, Perspective Grid) | 🟡 envelopes/blends in progress | 25–40 | +| M9 | Live effects (+ 3D & Materials) | 🟡 2D effects done; 3D pending | 25–40 | +| M10 | Brushes, symbols, patterns, Repeat | 🟡 brushes/symbols in progress; patterns, Repeat pending | 15–25 | +| M11 | Artboards & views (artboard panel/tool done; print tiling, multiple windows, presentation polish) | 🟡 | 10–15 | +| M12 | Advanced color & art (CMYK/ICC, separations, Gradient Mesh, Live Paint, Image Trace, Graphs) | 🟡 mesh/live paint/trace in progress | 35–55 | +| M13 | Automation (Actions ✅, variables, scripting, batch) | 🟡 | 10–15 | +| M14 | 1.0 polish (preferences, shortcut editor, workspaces, accessibility, packaging for all OSes) | ⬜ | 20–30 | +| — | Interaction fidelity pass (every tool's modifiers, Properties panel per context, isolation, nuance) | ⬜ | 40–60 | +| — | Hardening at scale (big-file corpus, fuzzing, cross-platform + browser QA) | 🟡 | 30–50 | +| | **Total to checklist parity** | | **~200–300** | + +## Out of scope (by design or by law) +- **Native `.ai` private data:** it's undocumented. We read the PDF-compatible part, so Illustrator-only live objects arrive as appearance. +- **Adobe cloud services** (Libraries sync, Adobe Fonts, Firefly/generative): these are pluggable provider APIs, not built in. +- **Adobe's bundled assets** (swatch/brush/symbol libraries, presets, icons): ours are original. + +## Where we aim to be better than Illustrator +- **Speed:** off-thread multithreaded rendering, instant startup, a responsive UI on huge files. +- **Robustness:** exact curve booleans (no "cannot perform operation"), property-tested undo/redo and file round trips. +- **Openness:** a documented native format, first-class SVG, and the same app in the browser. +- **Automation:** every command, gesture, dialog and widget is drivable by agents (JSON channel + MCP), with headless batch mode. + +## How to update this file +After each milestone task lands, update the status column and remaining estimates, and move items into "Shipped so far". Keep estimates honest: re-derive them from what remains, never from wishful velocity.