feat/refactor: Materials/Iframes/Typescript + make settings easier to add + reliability (#25)
# Biggish Refactor + Materials + Multiple Frames
The devtools extension gets a TS migration, a consolidated settings pipeline, a live Materials tab, a canvas entity picker + deep entity inspector, and proper multi-frame detection. JS service worker is converted to typescript background.ts.
What changed
- Settings refactored. One settingsSchema is now the single source of truth for TS types, panel defaults + localStorage persistence, the background's per-connection defaults, and the settingsMappings the background injects onto the game. This used to be a total pain to plumb new stuff through so this will be a huge boon to future maint and improvements.
- Hardened chrome/ff extension-API defense. Every chrome.*/browser.* call is feature-checked; the heartbeat reports "no game" only after 3 consecutive failing ticks. Zero-instance / pre-first-heartbeat / connection-lost states now show a dedicated no-excalibur-overlay.
- Multi-frame detection! Finally! You can now debug your stuff in itch.io that's embedded!
- Materials tab. Browse materials, view compiled vertex/fragment GLSL, inspect textures with filtering/wrap labels, and live-edit uniforms!
- Entity picker + deep inspector. A picker (crosshair icon) and highlight overlay using only public engine API. Clicking an actor opens a full-page dialog with purpose-built editors for transform/motion/graphics/body and read-only fallback for unknown components, plus parent/child actor navigation.
- Screen debug overlay. New screen-debug-settings controls the v0.33 debug.screen.* (contentArea/unsafeArea/legend toggles + colors), with a version warning on older engines.
- Graph improvements. system-time-graph and frame-time-graph gain clickable legends (focus a series, dim others) and a dynamic y-axis that rescales to the focused series; system-stats-list keeps a 25-sample rolling window (~5s) of per-system averages.