Ilia Denisov a37b784452
Tests · UI / test (push) Has been cancelled
Tests · UI / test (pull_request) Successful in 3m11s
perf(ui): F8-12 — toggle responsiveness on 700-planet legacy reports (#55)
Profiling KNNTS041 (700 planets, 1283 primitives, 29 LOCAL fog
circles) flushed three independent costs out of the toggle path:

* `setVisibilityFog` rebuilt the inverse mask + 29 × 9 paint ops on
  every effect run, even when the input was identical. Caches a
  fingerprint of the circles + wrap mode and bails on a no-op
  call — knocks ~1 ms off every flip, more on heavier maps.
* `paintLabelEntry` was split into `paintLabelLayout` (hit-area /
  line positions / frame geometry — runs on every content change)
  and `paintLabelSelection` (text fills + frame visibility — runs
  only when the selection identity actually flips). The incremental
  path now skips the 6300 redundant `Text.style.fill = ...` writes
  it used to perform on every `planetNames` flip, which is what
  forced Pixi to invalidate the underlying text textures.
* `applyLabelContent` no longer blanks `nameText.text` when the
  toggle hides the name — it just flips `visible`. The cached text
  texture survives, so the next paint frame skips ~700 texture
  rebuilds.

Also enables Pixi-side culling on every per-copy primitive / outline
/ label container. With 9 torus copies × ~700 planets the scene
graph holds thousands of nodes, most of which sit outside the
visible viewport at any moment — the cullable flag lets Pixi skip
them in the per-frame traversal.

The legacy `KNNTS041` probe (chromium-desktop, headless) shows
`applyVisibilityState` collapsing from ~24 ms to ~5 ms after a
cache-warm flip; `app.render` drops from ~46 ms to ~22 ms. Reading
the toggle delay end-to-end inside the browser still measures
~460 ms in headless, which is consistent with the runner's RAF
cadence — owner can confirm on the real machine where the previous
~1 s delay was reported.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 14:10:29 +02:00
2026-05-11 01:10:32 +02:00
2026-05-28 08:53:27 +02:00
2026-05-11 22:18:16 +02:00
2026-05-11 01:10:32 +02:00
2026-04-09 15:16:36 +03:00
2026-05-23 16:55:02 +02:00
2026-05-23 16:55:02 +02:00
S
Description
No description provided
34 MiB
Languages
Go 52%
TypeScript 38.1%
Svelte 8.8%
Go Template 0.3%
Makefile 0.3%
Other 0.3%