Overlord 0.2.0 — performance + stability
Major performance and stability update, hardened over two multi-hour live sessions with 15 concurrent viewers.
Performance
- Map capture rebuilt on async GPU readback: the per-frame GPU stall is gone (avgRenderMs 3-18 → 0) and JPEG encoding moved off the main thread
- State sync no longer scans the whole map per viewer; change detection is tiered (hot fields per cycle, slow fields sampled) and gated on real time, so 3x game speed no longer triples sync cost
- Multi-viewer frame spikes capped; O(1) colonist-bar lookups
Fixes
- Save-corruption fix: tapping apparel in the gear list used the weapon-equip job, stuffing hats into the pawn's equipment tracker — pawns "collected hats", became uncontrollable (suppressed tick), and saves loaded with tracker errors. Apparel now uses the proper Wear job, and a self-repair sweep heals already-affected saves automatically on load
- Pawns no longer freeze at attention after a move/attack command (auto-undraft when the order finishes)
- Trait purchases resolve correctly (labels, not defNames; degreed traits no longer collide)
- Gear panel shows a complete "Wearing now" list — worn items can no longer be hidden by slot collisions
- Map scroll: horizontal scroll pans instead of phantom-zooming; pinch zooms; vertical zoom unchanged
- Honest UI states: missing data shows as "no data" instead of fabricated 100% health / 50% mood; payload freshness stamp
- Claim toasts: dismissable, FIFO, inline Reject, bell cooldown; assignment board shows owner · HP · job on assigned rows
- Admin page: pending claims replay on connect, explicit disconnected state, attributed failures
- XSS hardening in the viewer panel
Requires Harmony. Streamers self-host the relay — see docs/SELF_HOST.md.
🤖 Generated with Claude Code