figcraft/ROADMAP.md

9.2 KiB
Raw Blame History

FigCraft Roadmap

FigCraft is a clean-room, open-source, pure-Rust reimplementation of the Figma design workflow. It runs on macOS, Windows, Linux, FreeBSD and the web (WASM), and agents can drive it completely through the CLI, a JSON control channel and MCP.

This file tracks how far we are and what's left. Time estimates are wall-clock hours of continuous Claude Opus 5.5 agent work (including builds and the CI gate), for one agent and for 4–6 parallel agents on disjoint crates. They are counted from the remaining work in the parity table below and updated as work lands.

Last updated: 2026-10-09 (end of day 1: foundation, renderer, engine, UI3 shell).

Where we are

Dimension Status
Infrastructure (crates, command registry, undo, renderer, formats, control channel, tests) ~70%
Look & feel vs the incumbent's 2026 UI (measured side by side) ~65%
Menu/command breadth (docs/parity.md) 96% of the catalogued menu tree has a command
Feature depth (weighted rubric below) ~40%
Parity including interaction fidelity and hardening ~25–30%
Time to feature parity ~260–380 h one agent · ~70–110 h with 4–6 agents
Time to full parity (feature parity + fidelity pass + hardening) ~420–600 h one agent · ~110–170 h with 4–6 agents

Honest assessment (2026-10-09)

In one line: the architecture is complete end to end (document model → commands → renderer → UI, CLI/MCP and control channel), and the everyday core (frames, shapes, text, auto layout, components with overrides, variants, styles, variables, effects, booleans, prototyping basics, SVG/PNG/JPG export) works. What's missing is depth: vector editing, rich text editing, the long tail of auto-layout and component behaviours, real-file interop and a fidelity pass against the incumbent.

How much to trust the numbers: scores are self-graded by the agents that built the features from public documentation and black-box observation. Treat them as upper bounds. Look & feel is the only dimension measured side by side.

Where we're lacking (priority order)

  1. Vector edit mode (Enter on a vector): vertex/handle editing, bend, paint bucket, lasso, cut/erase, vector networks with branching. 25–35 h.
  2. Text editing depth: mouse selection inside text, styled range editing UI, lists polish, OpenType features panel, variable font axes, font picker with previews. 20–30 h.
  3. Auto layout depth: on-canvas padding/gap handles, drag-reorder polish, min/max UI, baseline alignment, absolute positioning UI, grid tracks (fr/fixed), wrap polish. 15–25 h.
  4. Components depth: component properties panel (create/edit/bind), instance swap UI, nested instance overrides, slots, library publishing (local files), Assets panel drag-to-canvas. 20–30 h.
  5. Prototyping depth: on-canvas noodle editing, overlays/scroll/fixed elements, smart animate (matching layers), variables-driven interactions, device frames. 20–30 h.
  6. Interop: .fig import (best effort), PDF export (in progress), image crop/adjustments UI, paste from other apps, Figma REST JSON import. 25–40 h.
  7. Look & feel and interaction-fidelity pass: tool by tool, panel by panel against the incumbent (cursors, modifier keys, hover states, menus, popovers). 40–60 h.
  8. Hardening and performance: real-world file corpus, perf budgets at 50k layers (tile cache, incremental re-render), Windows/Linux/browser QA, accessibility. 40–60 h.

Where we're going

  • Next: vector edit mode (1) and text depth (2) in parallel with the fidelity pass (7).
  • Then: auto layout/components/prototyping depth (3–5), interop (6).
  • Alpha: release builds on every push to release (packaging in progress), demo files, docs.

Shipped so far

  • Architecture: 13 crates with enforced layering (cargo xtask layers): geom, color, doc, layout, text, pathops, render, format, svg, engine, ui-egui (+ mcp, pdf in progress). Every action is a command (~250); undo is unlimited via structural sharing (Arc node snapshots); gestures are one undo step; command.batch runs several commands as one step.
  • Document model: pages, frames, groups, sections, rectangles, ellipses (arcs/rings), polygons, stars, lines/arrows, vector networks, text with styled runs, boolean groups, components, component sets (variants), instances with per-layer overrides, slices; fills (solid, linear/radial/angular/ diamond gradients, images with fill/fit/crop/tile + adjustments), multiple strokes with inside/center/outside alignment, per-side weights, dashes, caps/arrowheads, joins; effects (drop and inner shadow with spread, layer blur, background blur, noise, texture); corner radii with smoothing; constraints; auto layout (horizontal, vertical, wrap, grid; hug/fill/fixed; min/max; absolute children); layout grids; export settings; prototype interactions, flows and transitions; paint/text/effect/grid styles; variables with collections, modes and aliases.
  • Renderer: CPU (tiny-skia) scene renderer used for canvas, export and the web: isolated layers for opacity/blend/effects, clip content, masks, booleans (linesweeper), text (harfrust shaping, skrifa outlines, font fallback), aligned strokes with caching.
  • Engine: pointer tools (move/marquee/deep select/resize/rotate/Alt-duplicate with smart-guide snapping, frame/section/slice/shapes/line/arrow with Shift/Alt, text, pen, pencil, hand, eyedropper), text editing (caret, selection, words, lines), auto layout reorder by dragging, drop into frames, align/distribute/tidy, z-order, flip/rotate, scale tool, booleans, flatten, outline stroke, components (create, instances, sync with overrides, reset, detach, push changes, variants, properties), styles and variables, prototype commands, find/replace, batch rename, copy/paste (internal + SVG/text), file new/open/save/import/export (native .figcraft, SVG in/out, PNG/JPG/WebP), version snapshots.
  • UI (egui, swappable): the incumbent's 2026 layout: tab strip, icon rail, file header, pages and layers tree (rename, visibility/lock, drag to reorder/reparent), Assets panel, floating bottom toolbar with flyouts and mode switcher, Design / Prototype / Inspect (CSS) panels, colour picker (HSB square, hue/alpha, hex, gradient stops, image fills), main menu generated from the catalog, context menu, Actions palette (⌘K), keyboard shortcuts from the catalog, presentation player with transitions, light and dark themes, home screen, About/Preferences/shortcuts/variables dialogs.
  • Automation: desktop control channel (--control <port>: execute commands, inspect document/UI, synthetic pointer/keys/typing, menu invocation, screenshots, renders).
  • Tests: ~120 automated tests including a junk-parameter sweep over every command.

Parity estimate (weighted rubric)

Scores by behaviour, 0–100%. Hours are what remains (one agent).

Area Weight Score Remaining work Hours
Canvas & navigation 6 60% rulers/guides dragging, pixel preview, minimap-free perf at scale 8–12
Selection & transform 8 55% rotated multi-select handles, scale tool polish, measure hover polish, nudge-resize 12–18
Layers panel 5 55% search/filter, multi-select ranges, collapse all, thumbnails, drag polish 8–12
Shapes & vector 8 30% vector edit mode, bend/paint bucket, live boolean editing, arc handles on canvas 30–40
Paint 7 55% gradient handles on canvas, image crop mode, document colours, colour models 12–18
Strokes 3 55% arrowhead set, dash/gap UI, per-side UI, stroke styles 5–8
Effects 4 60% effect styles UI, glass/texture fidelity, shadow spread on non-rects exactness 6–10
Frames, groups, sections, masks 5 55% section tooling, mask types (luminance/outline), frame presets UI 6–10
Auto layout & constraints 9 45% canvas handles, baseline, grid tracks, nested hug/fill edge cases 15–25
Text 8 35% in-text mouse selection, styled ranges UI, lists, OpenType, variable fonts 20–30
Components & variants 9 40% properties UI, swap UI, nested overrides, libraries, slots 20–30
Styles & variables 5 45% style picker everywhere, variable binding UI, aliasing UI, scoping 10–16
Prototyping 6 30% noodle editing, overlays, scrolling, smart animate 20–30
Import/export 6 45% PDF (in progress), .fig import, export panel polish 20–35
Dev mode / inspect 2 35% measurements on canvas, code variants (Swift/Compose), assets 6–10
Comments, versions, misc 3 25% comments, version history UI, plugins (WASM) 15–25

Weighted feature depth ≈ 43%.

Milestones

Milestone Status
M0 Foundation: workspace, model, renderer, engine, UI shell, app, control channel done (2026-10-09)
M0.9 CLI + MCP, web build, release packaging, PDF export in progress
M1 Core editing completeness (tools, panels, menus, clipboard, files) ~60%
M2 Layout depth ~45%
M3 Components & styles depth ~40%
M4 Vector & text depth ~30%
M5 Prototype & present ~30%
M6 Interop & dev mode ~35%
M7 Release (signed builds for all platforms, README screenshots) started