v0.6.0 — The engine leaves the handheld
The engine leaves the handheld. The Pocket runtime's first desktop
product surface: transparent widget windows and a VRM character stack,
proven by rebuilding airi's 3D digital human as one native process at
118 MB / 3.9 % of a core — an order of magnitude below its Electron
stage on every axis, same character, same
behaviors.
- Widget windows (pocket3d):
AppConfiggrowstransparent,
decorations,always_on_top,resizable,drag_window, andmax_fps
frame pacing that sleeps between frames instead of spinning on vsync;
scenes can clear to alpha 0 for desktop-composited windows. - Morph targets (pocket3d): sparse CPU deltas + per-instance overlay
vertex buffers, flushed only when a weight changes — blend-shape faces
cost nothing at rest. Draws redirect viabase_vertex; shared index
buffers stay untouched. - Procedural poses (pocket3d):
Skeleton::sample_locals/
globals_from_localssplit plusModelInstance::pose, so hosts inject
look-at and physics edits between clip sampling and the hierarchy walk.
Joint palettes grow 128 → 512 matrices for VRoid-scale humanoid rigs. - pocket-vrm (new crate): VRM 0.x parsing (humanoid map, blend-shape
groups, spring config, MToon material info, look-at ranges), a
deterministic allocation-free spring-bone verlet solver, VRMA retargeting
with the VRM1 +Z → VRM0 −Z conversion, and bone-type eye look-at —
21 tests against the real VRoid sample fixture. - Asset diet (pocket3d):
load_glb_optsskips images no material
references and caps authoring-resolution textures
(max_texture_dim) — 413 MB of GPU memory back on the reference
character. - pocket-character:
the airi-parity widget itself — character surface + QuickJS policy
bundle, blink/saccade schedulers with airi's exact constants, headless
render harness, and the measured report. - Compatibility: no breaking changes;
AppConfigandModelInstance
gained fields (struct-literal constructors need..Default::default()).
npm: @pocketjs/framework@0.6.0 · @pocketjs/cli@0.6.0 · full changelog