v0.3.0 — Pocket DevTools
Pocket DevTools. Time travel + inspection as framework primitives —
read the deep-dive, design in
DEVTOOLS.md.
- Component inspector with on-device highlight — a desktop panel
(/devtools) shows the component tree with semantic names (debugName
prop,<Named>wrapper; all demos annotated); hovering a node draws a
highlight overlay on the device screen — the core emits it into the
DrawList, so real PSP hardware, the wasm rasterizer and wgpu all render
it. Switching nodes glides the box across the screen. - Time travel on an always-on flight recorder — every bundle records
its input tape (oneu16/frame, 10 min ≈ 70 KB); sessions replay
byte-exactly. Pause / single-step freeze the whole world in the core;
click the tape strip to seek (reload + deterministic fast-forward).
bun run tapereplays headlessly: per-frame hashes,
first-divergent-frame asserts (session goldens,bun run tape:check),
PNG of any frame, component tree as JSON at any frame. - Real PSP debugging over the PSPLINK USB cable — a
host0:file
mailbox (the trace/bench channel, formalized): REPLevalinto the
running handheld, the first workingconsole.logon PSP, frame-stamped
error reports, and on-demand 📷 screenshots (raw VRAM rides usbhostfs;
the desktop bridge encodes the PNG). Verified on hardware. - One command —
bun run devtools [app]runs the panel, WS hub, USB
bridge and (optionally) the whole PSP session; detects an existing
psplink/hw link and bridges into it. Also via the CLI:pocket devtools. - Breaking: the
@pocketjs/clibinary is renamedpocketjs→pocket. - New spec ops 18–22 (
debugInspect/RectXY/RectWH/Pause/Step), all
debug-only and default-off — shipped rendering is byte-identical.
npm: @pocketjs/framework@0.3.0 · @pocketjs/cli@0.3.0 · full changelog