Files
gridcraft/docs/hardware-parity.md
T
aiongg 5bd5d241a0 G3: a native window per workbook window
Each engine window is drawn in its own native window through craft-window's
immediate-viewport driver (desktop only; the web app keeps one window). The
root viewport shows one window and adopts another when its window closes.

- WindowUi: the cell draft, text-box draft, dialog, Backstage, message,
  toast, notice, grid state, name box, key tips, selected chart, Tab run and
  edit mode are per window. SheetApp's fields hold the active window's; the
  others are parked and swapped in when a window is drawn or activated, and
  after any command that switched windows.
- Session::show_window makes a window current for drawing without counting
  as an activation.
- The ribbon in each window acts on it; menu bar commands and scripts go to
  the window focused last. Leaving a window enters its draft as Enter would.
- A window's close button runs window.close: one of several windows on a
  workbook closes without asking, a workbook's last asks when unsaved.
  SheetApp::request_quit (macOS Quit item, Dock quit) asks about each unsaved
  workbook in its window; Cancel stops. Save Changes answers moved to
  SheetApp::answer_save_changes.
- The last window closed quits on Windows and Linux; macOS hides the root
  and keeps running until New or Open.
- Fonts are bound for every open workbook, since each may be showing.

craft-window is pinned to the aiongg/craft-libs window-list branch until it
merges into storytold/craft-libs.
2026-10-22 16:21:59 +00:00

3.5 KiB
Raw Blame History

Hardware parity

Last reviewed: 2026-10-10 · Last updated: 2026-10-22 · Change: minor (a native window per workbook window) · Target: Microsoft Excel (Microsoft 365), Excel for Mac 16.113.4

The hardware Excel uses, per platform, against GridCraft. Part of target-app-parity.md. Hardware: ~40% ready, 25–40 h (estimated).

Hardware feature Excel GridCraft (macOS · Windows · Linux · BSD · web) Gap and estimate
Multi-core recalculation Multi-threaded recalculation on all cores (Windows and Mac), configurable thread count Single-threaded everywhere (no threading in crates/calc) Parallel recalc of independent dependency chains on native builds; WASM stays single-threaded or uses workers later: 12–18 h
GPU rendering of the grid and charts DirectX / Metal accelerated drawing wgpu: Metal · DirectX 12 (default since 10-08; OpenGL when DirectX 12 has no GPU driver or fails to start; Vulkan only on request, so the Intel UHD igvk64.dll crash (#120) can't happen; shaders compiled with FXC, so no DXC runtime is needed, #339) · Vulkan/GL · Vulkan/GL · WebGPU or WebGL2 At parity in kind. Driver problems: screen flashing on Windows 11 (#76): 2–4 h
Pen and touch (Draw tab) Pen pressure and tilt, eraser end, touch mode, Ink to Shape, ink replay Pen, highlighter, eraser, Ink to Shape with mouse/pen input; no pressure or tilt, no touch mode Pressure-sensitive strokes where winit reports force; touch-friendly ribbon spacing: 4–6 h
Trackpad and mouse Smooth scrolling, pinch zoom, horizontal scroll, Magic Mouse Smooth scrolling and zoom via egui Verify pinch zoom on each platform: 1–2 h
Multiple windows and monitors One window per workbook, New Window for the same workbook, per-monitor DPI A native window per workbook window on the desktop, New Window for the same workbook; new windows cascade from the last one on its monitor (web: one window) Arrange All across monitors; verify per-monitor DPI with windows on two monitors: 2–3 h
High-DPI and display scaling yes yes (display scale matched to desktop density; View › Interface size 75–200 % on top, #230) —
Accessibility hardware (screen readers, braille displays, switch control) Narrator, JAWS, NVDA, VoiceOver AccessKit enabled in eframe; grid cells and ribbon not yet exposed as an accessible tree Counted under UI (ui-parity.md)
Printers System print with driver options Desktop submits through craft-print with printer choice, copies, duplex and grayscale; web browser printing Counted under print

Revision history

Date Change Summary
2026-10-22 minor Multiple windows: each workbook window is a native window of its own (desktop).
2026-10-12 minor Desktop File > Print now discovers printers and submits PDF jobs through pinned craft-print with printer choice, copies, duplex and grayscale; browser printing and PDF export remain available. Remaining print parity includes page ranges and driver-specific tray/options UI; physical printer fidelity needs hardware validation.
2026-10-11 trivial Windows: DirectX 12 shaders compiled with FXC, no DXC runtime needed (#339, #354)
2026-10-11 trivial Windows: OpenGL fallback when DirectX 12 has no GPU or fails to start; Vulkan never by default (#120)
2026-10-10 major Created: single-threaded calc, wgpu rendering, no pen pressure, single window