figcraft/docs/ui-parity.md

5.7 KiB
Raw Blame History

UI and interaction parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-11 · Change: minor (outlines for the selection, mask outlines; arc fields, live boolean editing, shape builder on strokes, one-sided widths) · Target: Figma Design UI3 (desktop app 126.10.7)

Fine canvas control is what Figma users feel first: handles, snapping, nudging, modifier keys, drag behaviour, numeric precision. This checklist covers the tools, gestures and panels. Status: done (built and checked against Figma's documented behaviour or by eye), partial, missing. Nothing here has been compared tool by tool against the running Figma yet; that pass is the main remaining work (40–60 h, gaps #4).

Summary (estimated): UI/UX fidelity ~58%. Layout and look of UI3 compared side by side (~65%); interaction feel not yet compared.

Window and panels

Item Status Notes
UI3 layout: tab strip as title bar, icon rail, file header, pages + layers, floating bottom toolbar with flyouts, Design / Prototype / Inspect panels done frameless window on Windows/Linux with drawn buttons
Light and dark themes done colours from theme::Tokens
Minimize UI (Cmd+\) done
Resizable panels partial check widths and snap points against Figma
Actions palette (Cmd+K, Cmd+/) done commands; no assets search parity
Context menus done canvas and layers; keyboard access to the layers context menu missing
Main menu from the logo done generated from catalog.rs; popups sized to content
Keyboard shortcuts panel done docked, tabbed by group, searchable, per-platform keycaps
Multiplayer avatars, Share button missing waits for multiplayer

Selection and transform

Item Status Notes
Click, Shift-click, marquee, Shift-marquee toggle done
Deep select (Cmd/Ctrl-click, Cmd/Ctrl-marquee) done
Select layer menu (every layer under the click) done
Enter / Shift+Enter (children / parent), Tab / Shift+Tab (siblings) done Tab renames the next layer while renaming
Resize handles: Shift keeps proportions, Alt from centre, constraints-aware done
Rotate just outside a corner; Shift in 15° steps done rotated handle box when layers share a rotation
Flip, rotate 90° done
Alt-drag duplicate done
Scale tool (K): handles about an anchor, live factor, panel done
Nudge 1 / Shift 10 (preference), Cmd+arrows resize done arrows reorder auto layout children
Smart guides: edges, centres, spacing labels, parent, layout grid, ruler guides done red, snap.rs; thresholds not yet compared with Figma's
Ctrl to suspend snapping while dragging (macOS) missing
Measure (Alt hover, Cmd+Alt nested, Shift+Alt padding/gaps) done labels never overlap
Pixel grid snapping, pixel preview, 2x preview done
Numeric fields: arithmetic, scrubbing by dragging the label, mixed values partial check scrub speed and Shift/Alt steps
Keyboard box selection missing

Tools

Tool Status Notes
Move, hand (Space), zoom (hold Z, Alt out, drag area) done
Frame (presets panel, swap orientation), section, slice done
Rectangle, ellipse (arc handles and Design panel arc fields), polygon, star, line, arrow; Shift/Alt done
Pen: vector networks, branch, close, bend; pencil done no pen pressure
Vector edit mode: bend, paint bucket, lasso, cut, eraser, transform box, point snapping, mirroring done
Shape builder (Shift+M) on fills, strokes and open paths; variable width (Shift+W), one side with Alt done
Boolean groups: double-click or Cmd/Ctrl-click into operands, live results while dragging or editing points, per-operand operations done hit-tested by the operands, not the result
Text: point, auto height, fixed; caret, words, lines, IME done no spell check
Eyedropper (I) done
Comment (C), Shift+C to show/hide done local only
Brushes, text on a path (Figma Draw) missing
Image crop handles done

Canvas

Item Status Notes
Pan/zoom: wheel, pinch, Space-drag, Shift+0/1/2, Cmd+0, +/- done
Rulers and guides (drag out, move, remove; rotated frames; frame guides) done
Frame labels (rotated, right-to-left), size badge done
Outline mode done Outlines, outlines for the selection, mask outlines
Layout grids (Ctrl+G) done
Gradient and padding/gap handles on the canvas done
Hover outline, selection colours, handle sizes done measured from UI3 screenshots
Cursors per tool and modifier partial not compared
Multiplayer cursors, cursor chat, spotlight missing

Accessibility (ours vs Figma's)

Item Status Notes
Screen-reader names, roles, values, states (AccessKit) done on desktop browser: eframe doesn't send the tree yet
Keyboard navigation: F6 regions, Tab within, focus ring done
Reduced motion done system setting or preference
WCAG AA contrast of secondary and accent text done
Tested with VoiceOver, NVDA, Narrator, Orca missing human QA

Revision history

Date Change Summary
2026-10-11 minor Outline mode done: outlines for the selection (the selected layers draw as outlines, the rest normally) and mask outlines
2026-10-11 minor Design panel arc fields, live boolean editing (operands on the canvas, live results, per-operand operations), shape builder on strokes and open paths, one-sided widths (Alt-drag a width handle)
2026-10-10 major Created from the ROADMAP's look-and-feel and interaction items, the keymap and the canvas code