The status bar ends with "isokit <engine version>"; the web build adds
the commit (linked on Gitea), its date as a tooltip and a "+" when built
from a tree with uncommitted changes (build_web.py writes a
<meta name="isokit-build"> from GITHUB_SHA or git). /api/meta now carries
"engine". studio/favicon.svg (isometric cube in the accent green) is
served by `isokit studio` (also on /view) and copied into the web build.
check_web.py and check_studio.py check both.
A standalone "Rust stable GNU" install ahead of ~/.cargo/bin made cargo
fail with E0463 (no wasm32 std). The script now puts CARGO_HOME/bin first,
checks for rustup and the wasm32 target, and says what to install.
- isokit-wasm: wasm-bindgen build of the engine; a project in memory behind
the same JSON API as `isokit studio`, plus the MCP tools
- isokit-project: Store trait (FsStore folder, MemStore memory) under a
generic Workspace; Project::from_files; shared Studio API module (api.rs)
used by serve.rs and the WASM build; web_time for clocks in the browser
- studio.js runs on a pluggable backend (window.IsoKitBackend); no Studio
keys while a dialog is open
- web/: projects in IndexedDB, new/demo/delete, zip export/import (stored and
deflated), folder import by drop or picker, folders opened live via File
System Access with outside edits followed, code editor, page build and
preview, two tabs in step, isokit.mcp() and WebMCP registration
- tools/build_web.py -> dist/web (static), tools/check_web.py (44 checks)