Feature Status
Last updated: 2026-03-11 · 1,457 tests passing across 96 files
Drawing & Editing
| Feature | Status | Tests | Notes |
|---|---|---|---|
| Pen tool | Shipped | ~30 | Bezier curves, straight lines, click + drag modes |
| Rectangle | Shipped | ~10 | Corner radius via shape params |
| Ellipse | Shipped | ~8 | |
| Polygon | Shipped | ~6 | Configurable sides |
| Star | Shipped | ~4 | Inner radius control |
| Line tool | Shipped | — | Straight line segments |
| Boolean operations | Shipped | ~87 | Union, subtract, intersect, exclude (Paper.js headless) |
| Selection | Shipped | ~25 | Single, multi (Shift+click), marquee, lasso, crossing-segment |
| Transform | Shipped | ~30 | Move, scale (8 handles), rotate, flip H/V, nudge with modifiers |
| Node editing | Shipped | ~20 | Double-click isolation, smooth/corner toggle, handle editing |
| Scissors tool | Shipped | — | Split path at segment (K), De Casteljau subdivision |
| Anchor tool | Shipped | — | Named anchor points |
| Curve assist | Shipped | 21 | Harmonize, supersmooth, dekink, tunnify (Alt+H/S/D/T) |
| Curvature visualization | Shipped | — | Speed Punk-style comb overlay, green→red hue |
| Stem measurement | Shipped | ~15 | Hover ray-cast, perpendicular wall-pair thickness readout |
| Alignment & distribution | Shipped | ~12 | Cmd+Shift+Arrow align, Cmd+Shift+[/] distribute, node-level |
| Snap to grid | Shipped | ~10 | G toggle, configurable density |
| Alignment snap guides | Shipped | — | Cyan guides, 3px threshold |
| Groups | Shipped | ~15 | Cmd+G / Cmd+Shift+G, recursive transforms, expand/collapse |
| Custom guides | Shipped | — | Drag from rulers, Cmd+; toggle, lock/delete/clear |
| Tuner | Shipped | ~10 | Continuous interpolation/extrapolation between snapshots |
| Context menu | Shipped | — | Right-click for common operations |
Visual Properties
| Feature | Status | Tests | Notes |
|---|---|---|---|
| Fill (solid color) | Shipped | ~8 | Per-path fill, currentColor export |
| Stroke | Shipped | ~6 | Weight, cap, join, alignment |
| Per-path opacity | Shipped | ~4 | Renderer per-path alpha |
| Group opacity | Shipped | ~6 | Composite layer (beginLayer/endLayer or offscreen fallback) |
| Color picker | Shipped | — | Hex input, set-level palette |
| Semantic tokens | Shipped | ~20 | Named design tokens, icon picker, CSV import, round-trip export |
Organization
| Feature | Status | Tests | Notes |
|---|---|---|---|
| Layer panel | Shipped | — | Auto shape detection, SVG thumbnails, drag reorder with reparenting |
| Grid view | Shipped | — | Browse all icons, search by name/tag, category chips |
| Icon naming | Shipped | 4 | Validation indicator (known/unknown), suggestions from taxonomy |
| Tags | Shipped | ~15 | Auto-suggest from taxonomy, frequency badges, ghost chips |
| Categories | Shipped | ~15 | Auto-derive from taxonomy, frequency indicator |
| Icon status workflow | Shipped | — | Draft → review → production → deprecated |
| Diagnostics | Shipped | 48 | 9 checks (kink, near-vert/horiz, short segment, duplicate node, open path, zero area, fractional coord, tiny path), severity dot |
| Coverage dashboard | Shipped | — | Per-category progress bars in sidebar |
| Working set | Shipped | — | Multi-select → double-click opens working set, Cmd+Left/Right cycles |
| Search & filter | Shipped | 42 | Inverted index, trigram fuzzy search, compound predicates |
Save & Sync
| Feature | Status | Tests | Notes |
|---|---|---|---|
| Save to GitHub | Shipped | ~20 | Cmd+S, GraphQL batch commits, auto-install CI workflow |
| Save to file | Shipped | ~8 | .justdraw JSON download |
| Conflict resolution | Shipped | ~10 | HeadOid mismatch → ConflictModal → merge |
| Multi-tab sync | Shipped | — | BroadcastChannel + GitHub HEAD polling |
| Per-icon revert | Shipped | — | Restore from savedState or GitHub |
| Discard all changes | Shipped | — | Full reload from GitHub |
| Dirty flag tracking | Shipped | — | Content-aware reconciliation, stale flag cleanup |
| Undo/redo | Shipped | 15 | Snapshot-based, 300ms coalesce, bulk ops single entry |
Import
| Feature | Status | Tests | Notes |
|---|---|---|---|
| SVG files | Shipped | ~40 | Full CSS cascade, attribute inheritance, group hierarchy, clip-path |
| SVG sprites | Shipped | 5 | Extract <symbol> elements |
| .glyphs files | Shipped | ~15 | GlyphsApp format, browser-safe core |
| Font files (.otf/.ttf/.woff) | Shipped | 8 | opentype.js, cubic/quadratic conversion |
| Smart corner detection | Shipped | — | Auto-unbake arc patterns on import |
| Import naming enrichment | Shipped | — | Linting + alias-aware semantics |
Export Pipeline
| Feature | Status | Tests | Notes |
|---|---|---|---|
| SVG optimization | Shipped | ~30 | currentColor, aria-hidden, viewBox, minified paths |
| AVD XML generation | Shipped | ~15 | Android VectorDrawable, dp sizing |
| Export manifest | Shipped | ~10 | Aggregated metadata JSON |
| Consumer browse page | Shipped | ~16 | Self-contained HTML, search, category chips, copy snippets |
| Changelog page | Shipped | 14 | Diff-based, added/removed/modified |
| Deprecation tracking | Shipped | 4 | 90-day grace period, auto-undeprecate on re-add |
| A11y export | Shipped | 56 | ARIA injection, WCAG contrast, touch targets |
| Iconify JSON | Shipped | 8 | Compatible with @iconify/json spec |
| Framework adapters | Shipped | 18 | React, React Native, Vue, Svelte, Web Component |
| npm package gen | Shipped | 10 | Tree-shakeable ESM, barrel, metadata.json |
| SPM package gen | Shipped | 5 | Package.swift, Icon enum, IconView (SwiftUI) |
| Gradle package gen | Shipped | 5 | build.gradle.kts, VectorDrawable resources, Icons.kt |
| GitHub Actions workflow | Shipped | — | Auto-trigger on push, validate → export → deploy |
| GitHub Pages CDN | Shipped | — | Auto-deploy SVG + AVD + manifest |
| Color-aware export | Shipped | — | Multi-color icons preserve per-path fills |
Developer Tools
| Feature | Status | Tests | Notes |
|---|---|---|---|
CLI (@justdraw/cli) |
Shipped | ~20 | v0.3.2, 161KB, zero deps. validate, export, npm-gen, iconify-gen, framework-gen, notify |
MCP server (@justdraw/mcp) |
Shipped | ~10 | v0.1.0, 21 tools, 2 resources, 4 prompts. 736KB bundle |
| Consumer SDK | Shipped | 16 | createIconSet() client, manifest/SVG cache, search, injectIcons() DOM helper |
| Dynamic render API | Shipped | — | /api/render/{owner}/{repo}/{icon}?color=&sz=&dl= on Vercel |
| Taxonomy engine | Shipped | 117 | 11,657 icons, 116 categories, tag/category suggest, name validation, gap analysis |
| Icon matching | Shipped | 160 | Visual + structural matching for WhatTheIcon |
| Webhook notifications | Shipped | 10 | Slack + Discord + generic, Block Kit / embed payloads |
Ecosystem
| Feature | Status | Tests | Notes |
|---|---|---|---|
| VS Code extension | Built | — | v0.1.0. Icon picker, token search, semantic display. Not yet published |
| Figma plugin | Built | — | v0.1.0. Sync between JustDraw and Figma. Not yet published |
| CDN Worker | Built | — | v0.1.0. Cloudflare reverse proxy. Not yet deployed |
| WhatTheIcon | Built | — | Visual icon search app |
| Icon registry | Built | — | v0.1.0. Concept registry build tools. Not yet published |
| Reference ghost | Shipped | — | CDN overlay of 6 icon sets (Lucide, Phosphor, Tabler, Bootstrap, Feather, Material) |
| Demand intelligence | Shipped | — | Signal ingest + CDN worker endpoints, instrumented in editor/VS Code/MCP |
UI & Platform
| Feature | Status | Tests | Notes |
|---|---|---|---|
| Touch input | Shipped | — | Pinch-to-zoom, two-finger pan, single-finger tool forward |
| Keyboard shortcuts | Shipped | — | 60+ shortcuts, searchable overlay (? key) |
| Toast notifications | Shipped | — | Typed messages, auto-dismiss, color-coded |
| Settings panel | Shipped | — | Grid, drawing, canvas, behavior, export sections |
| Loading/error/empty states | Shipped | — | Spinner, error with retry, canvas hints |
| Security hardening | Shipped | ~25 | SVG sanitization, CSP, SSRF, rate limiting, httpOnly auth |
| Icon info panel | Shipped | — | 11,657 taxonomy entries, search/filter, add-to-set |
| Reference ghost | Shipped | — | 6 set overlays, three-tier cache |
| Component refs | Shipped | — | Reusable drawing elements, visibility/lock, SVG export flattening |
Launch Readiness
| Item | Status | Notes |
|---|---|---|
| Landing page | Shipped | index.html, why.html, compare.html, privacy.html |
| Surface pages | In Progress | features, docs, packages, changelog, status |
| Build pipeline (md→html) | Planned | scripts/build-pages.ts + content.css |
| Repo public | Blocked (Wolf) | Prerequisite for all launch channels |
| Product Hunt | Planned | After repo public |
| HN / Dev.to | Planned | After repo public |
| MCP directory listings | Planned | Smithery, Glama, PulseMCP |
| Iconify registration | Planned | First published set needed |
| VS Code Marketplace | Blocked (Wolf) | Extension built, needs account |
| Figma Community | Blocked (Wolf) | Plugin built, needs account |
| npm @justdraw/icon-registry | Blocked (Wolf) | Package built, needs publish |
Planned
| Feature | Target | Notes |
|---|---|---|
| Animation (JustMove) | Post-MVP | Spec written (13). Sidebar authoring, SMIL/CSS SVG export. Panel hidden, code preserved |
| Accessibility audit | Post-MVP | Keyboard nav, screen reader, contrast, reduced-motion |
| Offline editing | Post-MVP | Create/edit/switch/undo all offline |
| Offline→online sync | Post-MVP | Edit offline, reconnect, Cmd+S |
| editor.ts decomposition | Backlog | 4,900+ line monolith → deep sub-modules |
| shadcn adapter | Backlog | Tree-shakeable npx shadcn format |
| GitHub Actions marketplace action | Backlog | justdraw/export-action |
| Cross-set search | Backlog | |
| Preview blur | Backlog | Shift+B legibility test |
| Variation axis extrapolation | Future | AI-assisted weight/size/style generation |
Summary
| Count | Tests | |
|---|---|---|
| Shipped | 72 | ~1,457 |
| Built (not published) | 5 | — |
| Planned | 10 | — |
| Total | 87 | 1,457 |