mirror of
https://github.com/nyakang/nyaterm.git
synced 2026-10-05 00:01:00 +00:00
The remaining three snapshots turned out to be a closed loop, so the whole publish path goes. `WorkspaceSnapshot` and `SessionSnapshot` were read only by `published_core_store_snapshots_are_current`, which decided whether to republish them. `OverlaySnapshot` was a same-render round-trip: `Render` published it in its prologue and `overlay_host` read it back a few calls later, falling back — when the store was empty — to an expression that recomputed every field from the same `self` fields. `overlay_host` now evaluates those flags directly into a local `OverlayFlags`, which is exactly what the fallback did. None of it had an observer. `AppShell` deliberately does not observe the stores; the comment there records that store-observe was amplifying each publish into an extra shell paint. So every `cx.notify()` in the publish path was landing on nothing. Gone with it: `publish.rs`, the publish throttle (`should_publish_store_snapshots`, `store_snapshot_publish_due`, `STORE_SNAPSHOT_HEARTBEAT`, `last_store_snapshot_publish_at`), `WorkspaceStore`, `SessionStore`, and the snapshot half of `OverlayStore`. The runtime tick loses a per-tick snapshot build and comparison; the two slow-tick diagnostic fields that reported on it are dropped, and `output_pressure` is still computed for the rest. The four surviving stores each own something `NyaTermApp` does not: `Runtime` (app runtime and native services), `WindowRuntime` (the pump), `StartupRestore` (the restore queue) and `Overlay` (quick switch state). `entities/` drops from 959 to 412 lines and the projection layer is gone. Ten entity tests covered only the deleted stores; 548 tests become 538.