UI that can't flake
A virtual clock makes every frame a pure function of the input tape. Golden tests compare whole framebuffers, byte for byte — the same on CI, desktop and hardware. Scrub backwards, replay any session, on a real PSP.
input tape
→
frame 1487
hash 7f3a9c01
The wall above? Nine of these tapes, replayed headlessly against the core.
Compiled styling
Tailwind literals become numeric style records at build time. No parser, no cascade, no utility runtime on the device.
Deterministic flexbox
taffy 0.11 lays out in the Rust core — identical positions on every target, provable in goldens.
Baked text
Coverage atlases with sub-pixel positioning. Runtime text is compositing, not font rasterization.
Native motion
Tweens, springs and keyframe timelines tick in Rust at a fixed 1/60 s. JS declares; the core animates.
Real input, system-wide
D-pad focus, analog nub, touch, a virtual cursor — and a system on-screen keyboard any app can summon with one call.
Time-travel DevTools
Every session records itself. Step to any frame, inspect the native tree, diff against a golden — over USB to real hardware.
3D, same discipline
Pocket3D runs BSP worlds with PVS through sceGu on PSP and wgpu on desktop — OpenStrike holds a locked 60 FPS with a Solid HUD on top.
One core, many devices
The no_std core needs a framebuffer and a few buttons; a pocket.json contract decides where a bundle may ship.
- Sony PSP
- PS Vita
- macOS
- iOS
- Nintendo 3DS
- Steam Deck
- Android
- Embedded Linux
shippingin progressplanned