Web performance: light animation, gestures on a compositor layer, no forced layouts
Deploy web Studio / deploy (push) Successful in 3m46s
Deploy web Studio / deploy (push) Successful in 3m46s
Measured with the new tools/bench_web.py on the web Studio's house demo, CPU slowed 6x:
- Idle: running CSS animations repainted the whole drawing every frame (99% of the main
thread in a window). Animations now step on about ten times a second by default
("light", 5% idle); the new toolbar button switches light / smooth / off and the browser
remembers it; [build] animation sets the default for built pages; view.animation().
Pan and zoom gestures pause them. Status LEDs pause off-screen and with the rest now.
- Pan 28 -> 10 ms, zoom 69 -> 11 ms per step: gestures move the drawing as one compositor
layer (transform) and set the viewBox once they end; --iso-k is set on the tags group
only and only when it changes; the stage box is read once per frame.
- Hover 22 -> 15 ms per move: the tooltip is placed once per frame on its own layer and
measured only when its text changes; the Studio's x/y readout updates ten times a second
in a contained box; hover work in the Studio runs once per frame.
- Long object lists skip layout of rows out of sight (content-visibility).
- WASM built with opt-level 3: engine render 11.7 -> 9.4 ms for 10% more download.
Checks: Studio 102/102 (animation modes, pan as a layer, contained readout), web 87/87.
This commit is contained in:
1 parent
19f4c83ae8
commit
a202283a60
15 files changed
+476
-31
No files matched your search
@@ -192,6 +192,12 @@ the footprint, and `rot` turns the object in 90° steps. Levels: `site` (or any
|
||||
other id) shows buildings closed, while `gf`, `1f`, `2f` … cut them open at that
|
||||
storey.
|
||||
|
||||
Animations (fans, smoke, fish, traffic) step on about ten times a second by
|
||||
default ("light"): running CSS animations repaint the whole drawing every frame,
|
||||
which keeps a slow laptop busy. The ▷ button in the view toolbar switches
|
||||
between light, smooth and off, and the browser remembers the choice. In
|
||||
`isokit.toml`, `[build] animation = "smooth"` sets the default for built pages.
|
||||
|
||||
## Commands
|
||||
|
||||
| Command | |
|
||||
@@ -241,6 +247,7 @@ ISOKIT_LLM_URL=http://127.0.0.1:7932/v1 ISOKIT_LLM_KEY=test-key ISOKIT_CONFIG_DI
|
||||
uv run --with playwright python tools/check_studio.py <shot-dir> http://127.0.0.1:7890 # GUI + MCP + agent window end to end (Edge)
|
||||
cargo clippy -p isokit-wasm --target wasm32-unknown-unknown -- -D warnings
|
||||
python tools/build_web.py && uv run --with playwright python tools/check_web.py <shot-dir> # web Studio end to end
|
||||
uv run --with playwright python tools/bench_web.py --rate 6 --headed # timings on a CPU slowed 6x (low-power stand-in)
|
||||
```
|
||||
|
||||
The agent window checks run on `tools/mock_llm.py`, a scripted stand-in for an
|
||||
|
||||
Reference in new issue
Block a user