2026-02-28 08:38:27 +00:00
|
|
|
# Roadmap
|
|
|
|
|
|
|
|
|
|
## Phases
|
|
|
|
|
|
|
|
|
|
### Phase 1: Core Engine ✅
|
|
|
|
|
|
|
|
|
|
SceneGraph, Skia rendering, basic shapes, selection, zoom/pan, undo/redo.
|
|
|
|
|
|
|
|
|
|
**Delivered:**
|
|
|
|
|
- Scene graph with flat Map storage and parent-child tree
|
|
|
|
|
- CanvasKit WASM rendering for all shape types
|
|
|
|
|
- Click/shift/marquee selection with resize handles and rotation
|
|
|
|
|
- Zoom/pan with keyboard shortcuts and trackpad gestures
|
|
|
|
|
- Undo/redo wired into all operations
|
|
|
|
|
- Snap guides with edge and center snapping
|
|
|
|
|
|
|
|
|
|
### Phase 2: Editor UI + Layout ✅
|
|
|
|
|
|
|
|
|
|
Properties panel, layers panel, toolbar, Yoga layout integration, text editing.
|
|
|
|
|
|
|
|
|
|
**Delivered:**
|
|
|
|
|
- Vue 3 + Reka UI panels (properties, layers, toolbar)
|
|
|
|
|
- Properties panel split into sections (Appearance, Fill, Stroke, Typography, Layout, Position)
|
|
|
|
|
- ScrubInput component for all numeric inputs
|
|
|
|
|
- Color picker (HSV, hex, opacity)
|
|
|
|
|
- Layers panel with tree view, drag reorder, visibility toggle
|
|
|
|
|
- Auto-layout with Yoga WASM (direction, gap, padding, justify, align)
|
|
|
|
|
- Inline text editing with CanvasKit Paragraph API
|
|
|
|
|
- System font loading via Local Font Access API
|
|
|
|
|
- Canvas rulers with selection highlight
|
|
|
|
|
|
2026-02-28 14:57:59 +00:00
|
|
|
### Phase 3: File I/O + Visual Features ✅
|
2026-02-28 08:38:27 +00:00
|
|
|
|
2026-02-28 14:54:56 +00:00
|
|
|
.fig import/export, Kiwi codec, clipboard, sections, pages, advanced rendering.
|
2026-02-28 08:38:27 +00:00
|
|
|
|
|
|
|
|
**Delivered:**
|
|
|
|
|
- .fig file import via Kiwi binary codec
|
2026-02-28 14:54:56 +00:00
|
|
|
- .fig file export with Kiwi encoding, Zstd compression, thumbnail generation
|
|
|
|
|
- Save (⌘S) and Save As (⇧⌘S) with native OS dialogs
|
|
|
|
|
- Zstd compression via Tauri Rust command (deflate fallback in browser)
|
2026-02-28 08:38:27 +00:00
|
|
|
- Vendored kiwi-schema with ESM + sparse field ID patches
|
|
|
|
|
- Figma-compatible clipboard (bidirectional fig-kiwi binary)
|
|
|
|
|
- Pen tool with vector network model
|
|
|
|
|
- vectorNetworkBlob binary encode/decode
|
|
|
|
|
- Group/ungroup (⌘G/⇧⌘G)
|
2026-02-28 14:54:56 +00:00
|
|
|
- Tauri v2 desktop app with native menu bar (macOS/Windows/Linux)
|
|
|
|
|
- Sections (S key) with title pills, auto-adopt, luminance-adaptive text
|
|
|
|
|
- Multi-page documents with pages panel, per-page viewport
|
|
|
|
|
- Hover highlight with shape-aware outlines
|
|
|
|
|
- Tier 1 rendering: gradients, image fills, effects, strokes (cap/join/dash), arcs
|
|
|
|
|
- Fill type picker with solid/gradient/image tabs and gradient stop editing
|
|
|
|
|
- Canvas background color per page
|
|
|
|
|
- Fig-import unit tests, layout unit tests, layers-panel E2E tests
|
2026-02-28 08:38:27 +00:00
|
|
|
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
### Phase 4: Components + Variables ✅
|
2026-02-28 08:38:27 +00:00
|
|
|
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
Components, instances, overrides, variables, collections, modes, image export.
|
2026-02-28 08:38:27 +00:00
|
|
|
|
2026-02-28 16:48:19 +00:00
|
|
|
**Delivered:**
|
|
|
|
|
- Component creation from frame/group or multi-selection (⌥⌘K)
|
|
|
|
|
- Component sets from multiple components (⇧⌘K) with dashed purple border
|
2026-02-28 19:20:16 +00:00
|
|
|
- Instance creation from components with child cloning and componentId mapping
|
|
|
|
|
- Live component-instance sync with override preservation
|
2026-02-28 16:48:19 +00:00
|
|
|
- Detach instance back to frame (⌥⌘B)
|
|
|
|
|
- Go to main component (cross-page navigation)
|
|
|
|
|
- Always-visible purple component/instance labels with diamond icon
|
|
|
|
|
- Opaque container hit testing (click selects component, double-click enters)
|
|
|
|
|
- Right-click context menu with clipboard, z-order, grouping, component, visibility, lock, move-to-page actions
|
|
|
|
|
- Z-order manipulation (] bring to front, [ send to back)
|
|
|
|
|
- Toggle visibility (⇧⌘H) and lock (⇧⌘L)
|
|
|
|
|
- Move nodes between pages via context menu
|
|
|
|
|
- Viewport culling, Paint reuse, RAF render coalescing
|
2026-02-28 19:20:16 +00:00
|
|
|
- Effects panel UI (drop shadow, inner shadow, layer/background/foreground blur)
|
|
|
|
|
- Independent corner radius controls (per-corner toggle in Appearance section)
|
|
|
|
|
- GitHub Actions CI/CD for Windows (x64, arm64) and macOS (x64, arm64) builds
|
2026-02-28 20:25:57 +00:00
|
|
|
- Polygon and Star drawing tools with pointCount and starInnerRadius
|
|
|
|
|
- Resizable left/right panels via reka-ui Splitter (persistent layout)
|
|
|
|
|
- @/ import alias, shared types module (src/types.ts, src/global.d.ts)
|
|
|
|
|
- Codebase lint-clean: 0 oxlint warnings, 0 tsgo type errors
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
- Variables: COLOR type with collections, modes, bindings, VariablesPanel, FillSection variable picker, .fig import
|
|
|
|
|
- Image export: PNG/JPG/WEBP with ExportSection (scale, format, live preview), ⇧⌘E shortcut, context menu
|
|
|
|
|
- Splash loader during WASM initialization
|
2026-02-28 16:48:19 +00:00
|
|
|
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
**Remaining (deferred to Phase 6):**
|
2026-02-28 08:38:27 +00:00
|
|
|
- Variant switching
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
- Variable types: FLOAT, STRING, BOOLEAN editing UI
|
|
|
|
|
- Variable-driven theming
|
|
|
|
|
|
|
|
|
|
### Phase 5: AI Integration & Tooling 🟡
|
2026-02-28 08:38:27 +00:00
|
|
|
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
Core extraction, CLI, MCP server, design guidelines, screenshot verification loop.
|
2026-02-28 08:38:27 +00:00
|
|
|
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
**Delivered:**
|
|
|
|
|
- @open-pencil/core extracted to packages/core/ (zero DOM deps, Bun workspace)
|
|
|
|
|
- @open-pencil/cli with headless .fig operations (info, tree, find, export), CanvasKit CPU rasterization, --json output
|
|
|
|
|
- npm publishing preparation for core and cli packages
|
2026-02-28 08:38:27 +00:00
|
|
|
|
|
|
|
|
**Planned:**
|
|
|
|
|
- Port MCP server from figma-use (117 tools)
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
- Attached mode: WebSocket to running editor for eval, create, export, screenshot
|
2026-02-28 08:38:27 +00:00
|
|
|
- Design guidelines system
|
|
|
|
|
- AI-driven design workflow via MCP
|
|
|
|
|
- Screenshot verification loop
|
|
|
|
|
|
|
|
|
|
### Phase 6: Polish + Distribution 🔲
|
|
|
|
|
|
|
|
|
|
Prototyping, comments, desktop distribution, documentation, public launch.
|
|
|
|
|
|
|
|
|
|
**Planned:**
|
|
|
|
|
- Prototyping (frame connections, transitions)
|
|
|
|
|
- Comments (pin, threads, resolve)
|
2026-02-28 19:20:16 +00:00
|
|
|
- Linux Tauri builds (macOS and Windows already covered by CI)
|
2026-02-28 08:38:27 +00:00
|
|
|
- PWA support
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
- Documentation site (VitePress)
|
2026-02-28 08:38:27 +00:00
|
|
|
- Performance optimization (Lighthouse > 90)
|
|
|
|
|
- Full Figma compatibility test suite
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
- Deferred from Phase 4: variant switching, FLOAT/STRING/BOOLEAN variable UI, variable-driven theming
|
2026-02-28 08:38:27 +00:00
|
|
|
|
|
|
|
|
## Timeline
|
|
|
|
|
|
|
|
|
|
| Phase | Estimated Duration | Status |
|
|
|
|
|
|-------|-------------------|--------|
|
|
|
|
|
| Phase 1: Core Engine | 3 months | ✅ Complete |
|
|
|
|
|
| Phase 2: Editor UI + Layout | 3 months | ✅ Complete |
|
2026-02-28 14:57:59 +00:00
|
|
|
| Phase 3: File I/O + Visual Features | 2 months | ✅ Complete |
|
Sync specs & docs: variables, image export, CLI, core extraction
- Update specs: scene-graph (variables/collections/modes/bindings/.fig import),
editor-ui (VariablesPanel, ExportSection, splash), canvas-rendering
(variable resolution, image export, sceneVersion/renderVersion),
desktop-app (monorepo), tooling (Bun workspace), testing (variable tests)
- Create cli spec: info, tree, find, export commands
- Update docs: features, figma-comparison (79/150), roadmap (Phase 4 ✅,
Phase 5 🟡), keyboard-shortcuts (⇧⌘E), contributing (monorepo structure)
- Restore vitepress devDependency lost during merge
- Archive sync-variables-export-cli change
2026-02-28 23:17:48 +00:00
|
|
|
| Phase 4: Components + Variables | 2 months | ✅ Complete |
|
|
|
|
|
| Phase 5: AI Integration & Tooling | 2 months | 🟡 In Progress |
|
2026-02-28 08:38:27 +00:00
|
|
|
| Phase 6: Polish + Distribution | 2 months | 🔲 Planned |
|