Skip to content

v0.3.0 — Pocket DevTools

Choose a tag to compare

@doodlewind doodlewind released this 13 Jul 15:46
· 273 commits to main since this release
4c09b04

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 (one u16/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 tape replays 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): REPL eval into the
    running handheld, the first working console.log on PSP, frame-stamped
    error reports, and on-demand 📷 screenshots (raw VRAM rides usbhostfs;
    the desktop bridge encodes the PNG). Verified on hardware.
  • One commandbun 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/cli binary is renamed pocketjspocket.
  • 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