mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-26 03:16:53 -06:00
* Release prep: bump to 0.3.0; add linux-riscv64 release job - release.yml: new linux-riscv64 job (cross-compiled on ubuntu-24.04 against ports.ubuntu.com riscv64 libraries, tar.gz only, CLI smoke-tested under qemu-riscv64), ported from GridCraft; the release job needs it so SHA256SUMS covers its tarball. - packaging/linux/package.sh: CROSS_ARCH / CROSS_TARGET / CROSS_COMPILE / EMULATOR support. - Version 0.2.0 -> 0.3.0 (cargo xtask version set), Cargo.lock refreshed. - docs/releasing.md, docs/hardware-parity.md: list the riscv64 tarball. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * CI: tell actionlint about the org's github-ubuntu-16core runner label Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
3.2 KiB
Markdown
54 lines
3.2 KiB
Markdown
# Hardware and platform parity
|
||
|
||
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (created) · **Target:** Figma Design (desktop app 126.10.7)
|
||
|
||
How FigCraft uses hardware and which platforms it runs on, against Figma. Figma's desktop app is
|
||
Electron with a GPU helper process; its canvas renders on the GPU (WebGL, with WebGPU rolling out
|
||
since 2025). FigCraft renders the canvas on the CPU and presents it through wgpu.
|
||
|
||
**Summary (estimated):** hardware ~50%, performance ~60%, platforms ~75%.
|
||
|
||
## Hardware
|
||
|
||
| Feature | Figma | FigCraft (macOS / Windows / Linux / web) | Hours |
|
||
|---|---|---|---|
|
||
| Canvas rendering | GPU | CPU (tiny-skia), banded across cores, retained (re-renders only what an edit or pan touches), levels of detail below 50% zoom; shown through wgpu (WebGPU or WebGL2 in the browser) | 30–60 for a GPU path |
|
||
| Effects (blurs, glass, noise) | GPU | CPU | in the above |
|
||
| HiDPI / Retina | yes | yes (all) | — |
|
||
| Wide-gamut display (Display P3) | yes, on capable displays | colours stored and exported in P3; the screen shows sRGB (egui) | 3–6 |
|
||
| Trackpad pinch zoom and two-finger pan | yes | yes (egui zoom delta, smooth scroll) | — |
|
||
| Pen tablet pressure (pencil, Figma Draw brushes) | yes (forum reports of regressions in 2025) | no | 3–6 |
|
||
| Several windows / multi-monitor | yes (a window per file; presenter in its own window) | one window with file tabs; presenter inside it | 4–8 |
|
||
| Screen readers | partial | AccessKit tree on desktop (names, roles, states), never tested with a real screen reader; none in the browser | 4–8 + human QA |
|
||
| Keyboard layouts (non-US) | yes | keymap uses logical keys; not checked on AZERTY/QWERTZ/JIS | 1–2 |
|
||
|
||
## Performance (measured by `cargo xtask bench`, synthetic files, owner's Mac)
|
||
|
||
| Case | FigCraft | Figma |
|
||
|---|---|---|
|
||
| 50k-layer page, zoomed out, full render | ~8 ms (levels of detail) | not timed side by side |
|
||
| 10k layers: full 1440×900 render | 7–15 ms | not timed |
|
||
| 10k layers: move one layer, re-render | ~0.2 ms | not timed |
|
||
| Design system of ~300 components × 2,000 instances: recolour a main used ~900 times | 4–18 ms | not timed |
|
||
| `.figcraft` at 50k layers: save / load | ~0.09 s / ~0.16 s | n/a |
|
||
| Idle window | 0 frames, ~0% CPU | — |
|
||
|
||
Nothing has been timed against Figma on the same document (needs `.fig` import).
|
||
|
||
## Platforms
|
||
|
||
| Platform | Figma | FigCraft | Notes |
|
||
|---|---|---|---|
|
||
| macOS | desktop app (Intel and Apple silicon) | universal `.dmg`, signed and notarized (v0.2.0) | where nearly all QA happens |
|
||
| Windows x64 / arm64 | desktop app | `.msi` and portable zip for x64, x86 and arm64 | built in CI; little hands-on QA |
|
||
| Linux | none (browser only) | AppImage, `.deb`, `.rpm`, Flatpak, tarball, x86_64 and aarch64; riscv64 tarball | CI tests run here |
|
||
| FreeBSD | none | tarball | |
|
||
| Web | primary (figma.com) | `figcraft-web` (WASM, WebGPU/WebGL2), web zip | no accessibility tree; file access through the browser |
|
||
| iOS / Android | apps: view, comment, mirror prototypes | none (the web build is not touch-first) | 20–40 h for a viewer |
|
||
|
||
## Revision history
|
||
|
||
| Date | Change | Summary |
|
||
|---|---|---|
|
||
| 2026-10-10 | major | Created from the 2026-10-10 re-measure |
|