M-egui037: reconcile current main and document hidden-frame deadlines

This commit is contained in:
skylar taylor-barrick
2026-10-25 16:05:48 +01:00
4 changed files with 30 additions and 26 deletions
Generated
+21 -21
View File
@@ -1457,7 +1457,7 @@ checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693"
[[package]]
name = "figcraft"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"arboard",
"craft-window",
@@ -1483,7 +1483,7 @@ dependencies = [
[[package]]
name = "figcraft-cli"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-doc",
"figcraft-engine",
@@ -1497,7 +1497,7 @@ dependencies = [
[[package]]
name = "figcraft-collab"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"chrono",
@@ -1513,7 +1513,7 @@ dependencies = [
[[package]]
name = "figcraft-collab-net"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"figcraft-collab",
@@ -1536,7 +1536,7 @@ dependencies = [
[[package]]
name = "figcraft-color"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"kurbo",
"serde",
@@ -1545,7 +1545,7 @@ dependencies = [
[[package]]
name = "figcraft-doc"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-color",
"figcraft-geom",
@@ -1557,7 +1557,7 @@ dependencies = [
[[package]]
name = "figcraft-engine"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"craft-docpath",
@@ -1585,7 +1585,7 @@ dependencies = [
[[package]]
name = "figcraft-format"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-doc",
"figcraft-pathops",
@@ -1600,7 +1600,7 @@ dependencies = [
[[package]]
name = "figcraft-geom"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"kurbo",
"serde",
@@ -1608,7 +1608,7 @@ dependencies = [
[[package]]
name = "figcraft-layout"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-doc",
"figcraft-geom",
@@ -1616,7 +1616,7 @@ dependencies = [
[[package]]
name = "figcraft-mcp"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"figcraft-collab-net",
@@ -1632,7 +1632,7 @@ dependencies = [
[[package]]
name = "figcraft-pathops"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-doc",
"figcraft-geom",
@@ -1641,7 +1641,7 @@ dependencies = [
[[package]]
name = "figcraft-pdf"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-color",
"figcraft-doc",
@@ -1658,7 +1658,7 @@ dependencies = [
[[package]]
name = "figcraft-plugin"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-color",
"serde",
@@ -1671,7 +1671,7 @@ dependencies = [
[[package]]
name = "figcraft-render"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"crc32fast",
"figcraft-color",
@@ -1689,7 +1689,7 @@ dependencies = [
[[package]]
name = "figcraft-server"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"crc32fast",
"ctrlc",
@@ -1713,7 +1713,7 @@ dependencies = [
[[package]]
name = "figcraft-svg"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"figcraft-color",
@@ -1729,7 +1729,7 @@ dependencies = [
[[package]]
name = "figcraft-text"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-doc",
"figcraft-geom",
@@ -1743,7 +1743,7 @@ dependencies = [
[[package]]
name = "figcraft-ui-egui"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"base64 0.22.1",
"chrono",
@@ -1769,7 +1769,7 @@ dependencies = [
[[package]]
name = "figcraft-web"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"eframe",
"egui",
@@ -5878,7 +5878,7 @@ checksum = "9440ea3e5aeabb0ac63af70daf835274065238cdd0cec83418f417eae38bacee"
[[package]]
name = "xtask"
version = "0.10.0"
version = "0.11.2"
dependencies = [
"figcraft-engine",
"serde_json",
+3 -2
View File
@@ -6,7 +6,7 @@ exclude = ["plugins"]
# default-members = ["crates/*", "apps/figcraft", "apps/figcraft-cli", "xtask"]
[workspace.package]
version = "0.10.0"
version = "0.11.2"
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.95"
@@ -125,7 +125,8 @@ codegen-units = 4
# wasm32-unknown-unknown always aborts on panic, so panic = "abort" changes nothing there.
[profile.web-release]
inherits = "release"
opt-level = "s"
# "z", not "s": 1.9 MB smaller (24.0 MiB -> 22.2 MiB after wasm-opt, 0.11.1), back under the gate.
opt-level = "z"
lto = "fat"
codegen-units = 1
debug = false
+3 -2
View File
@@ -1,6 +1,6 @@
# Hardware and platform parity
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-18 · **Change:** minor (zoom previews; hidden windows answer control requests; macOS file opening, the Windows start-up message, Linux packaging; copy and paste in the browser; Windows QA pass; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; pen pressure for the Pencil and brushes on Windows and from browser styluses; macOS: quitting ends the process once everything is kept, avoiding the Touch Bar teardown crash (#781); Linux and BSD clipboard: images under Wayland, reads time out; minimised windows under Wayland; window controls on Wayland without server decorations; canvas textures on device pixels; copy and paste in the browser; Windows QA pass; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; pen pressure for the Pencil and brushes on Windows and from browser styluses) · **Target:** Figma Design (desktop app 126.10.7)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-25 · **Change:** minor (hidden-window screenshot deadlines; zoom previews; hidden windows answer control requests; macOS file opening, the Windows start-up message, Linux packaging; copy and paste in the browser; Windows QA pass; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; pen pressure for the Pencil and brushes on Windows and from browser styluses; macOS: quitting ends the process once everything is kept, avoiding the Touch Bar teardown crash (#781); Linux and BSD clipboard: images under Wayland, reads time out; minimised windows under Wayland; window controls on Wayland without server decorations; canvas textures on device pixels; copy and paste in the browser; Windows QA pass; Display P3: gamut warning and soft-proof (true P3 blocked upstream); several windows; pen pressure for the Pencil and brushes on Windows and from browser styluses) · **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
@@ -18,7 +18,7 @@ since 2025). FigCraft renders the canvas on the CPU and presents it through wgpu
| Wide-gamut display (Display P3) | yes, on capable displays | colours stored and exported in P3; the screen shows sRGB: eframe/egui-wgpu 0.36 configure an 8-bit sRGB surface with no colour space option, although wgpu 30 can present Display P3 or extended sRGB on Metal, DX12, Vulkan and WebGPU (see gaps #18). The colour picker warns about colours outside sRGB and View ▸ Soft-proof sRGB stripes them on the canvas | 2–5 |
| 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) | Windows pens (winit pointer input) and browser styluses that send touch events with a force (an Apple Pencil in Safari); the Pencil records it as the stroke's width profile. A mouse, macOS and Linux tablets and pens sending only pointer events in a browser report none: constant width | 1–3 |
| Several windows / multi-monitor | yes (a window per file; presenter in its own window) | desktop: File ▸ New window, a tab's Open in new window or a tab dragged off the strip; each window has its own tabs, panels and canvas, draws only when it needs to and asks about unsaved changes when it closes; a minimised or covered window still answers control and MCP requests, while screenshots and input fail at once until it is on screen (#313, #332, #720). Only the main window has a screen-reader tree (eframe 0.36), so files stay tabs while a screen reader runs; positions aren't restored at the next start; the presenter stays inside its window; one window in the browser | 1–2 |
| Several windows / multi-monitor | yes (a window per file; presenter in its own window) | desktop: File ▸ New window, a tab's Open in new window or a tab dragged off the strip; each window has its own tabs, panels and canvas, draws only when it needs to and asks about unsaved changes when it closes; a minimised or covered window still answers control and MCP requests, while screenshots with hidden or unknown visibility request a hidden paint and expire at their 60-second admission deadline if unfinished; injected pointer/key/text input waits for a real UI frame (#313, #332, #720). Browser and Wayland hidden-paint behavior remain unqualified. Only the main window has a screen-reader tree (eframe 0.36), so files stay tabs while a screen reader runs; positions aren't restored at the next start; the presenter stays inside its window; one window in the browser | 1–2 |
| 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 |
@@ -50,6 +50,7 @@ Nothing has been timed against Figma on the same document (needs `.fig` import).
| Date | Change | Summary |
|---|---|---|
| 2026-10-25 | minor | Hidden or unknown-visibility screenshots request a hidden paint and expire at their 60-second admission deadline if unfinished; injected pointer/key/text input waits for a real UI frame. Browser and Wayland hidden-paint behavior remain unqualified. Numbers unchanged. |
| 2026-10-15 | minor | Community fixes (#290, #306, #312, #313, #328, #332, #346, #474): coarse zoom previews when renders from scratch are slow; a minimised or covered window answers control and MCP requests (screenshots and input fail at once while it is hidden); `.figcraft` files open from Finder on macOS; a message box when the window can't open on Windows; on Linux the window id matches the desktop entry, the RPM requires glibc 2.35 and user fonts under `XDG_DATA_HOME` are found. Numbers unchanged |
| 2026-10-18 | minor | macOS quit crash (#781): on Macs with a Touch Bar the app could crash as it quit (an exception in AppKit's Touch Bar support while the window's content view, which the accessibility adapter subclasses, was torn down). Quitting now keeps everything (preferences, this run's recovery copies, live sessions ended) and then ends the process before that teardown. Quit from the menu bar ends the app without the unsaved-changes question, so unsaved files' recovery copies now stay and reopen at the next start instead of being removed. Numbers unchanged |
| 2026-10-17 | minor | Linux row: clipboard reads on Linux and the BSDs time out after 2 s on a helper thread, images copied in other apps paste under Wayland (arboard's data-control feature, #693), a minimised window can't be detected under Wayland, so frame-only control requests may still wait there (#720), and Wayland compositors without server-side decorations give the window Adwaita controls (#592, checked by its author on GNOME, not by the maintainers; KDE not run); compiled in CI, not run on a Linux desktop. HiDPI row: native-density canvas images placed on whole device pixels (#359, geometry tests; not judged by eye). Numbers unchanged |
+3 -1
View File
@@ -19,7 +19,9 @@ fi
TMP_BASE="${RUNNER_TEMP:-${TMPDIR:-/tmp}}"
TMP="$(mktemp -d "${TMP_BASE}/figcraft-signing.XXXXXX")"
trap 'rm -rf "$TMP"' EXIT
# Remove only the decoded certificate: the keychain lives in the same directory and codesign
# needs it until the workflow's "Remove temporary keychain" step deletes it.
trap 'rm -f "${CERT:-}"' EXIT
KEYCHAIN="$TMP/figcraft-signing.keychain-db"
CERT="$TMP/figcraft-signing.p12"
KC_PASS="${KEYCHAIN_PASSWORD:-$(openssl rand -hex 24)}"