Commit Graph
7 Commits
Author SHA1 Message Date
Bilawal Sidhu b3f1e17733 feat: port PR #351 analyst records to current layer owners 2026-09-15 02:18:39 -05:00
Bilawal Sidhu 9fc8d1966b feat(annotations): draw on the world by hand (#547)
Supersedes #235 by @cora-fresh-labs, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Future work (not in this PR): hand-drawn marks do not persist across a reload today, and neither do spoken annotations; there is no storage layer for marks. The natural home is Scenes: a drawing that belongs to a shot and persists per shot, so a scene animation can carry its own marks. Needs an owner.
Co-authored-by: Clint Borle <[email protected]>
2026-09-14 19:59:26 -05:00
Bilawal Sidhu 499e1168a7 fix(layers): release bundled GeoJSON entities on toggle-off instead of hiding them
Toggling datacenters, dams, or submarine cables off only set `show = false`
on their data sources. Cesium's DataSourceDisplay still walks every
visualizer of a hidden source each frame, and the ~11.5k hidden entities
(hundreds of MB) stayed resident, so the whole scene rendered ~2x slower
for the rest of the session after a single on/off round trip (owner field
test 2026-09-13).

disable() now removes the data sources from the viewer and drops the built
records; the parsed dataset (NDJSON features / TeleGeography JSON) is cached
so enable() rebuilds without a refetch or re-parse. A disable that lands
while a load is in flight releases the finished build instead of parking it
hidden. destroy() clears the cache.

Measured with a headful Chrome harness (flights+military+satellites on,
camera rotating, 250-frame windows), before -> after:
- entities resident after OFF: 11,537 -> 0
- DataSourceDisplay.update per frame after OFF: 1.09 ms -> 0.02 ms
- scene.render per frame after OFF: 13.9 ms (control 6.6 ms) -> 5.2 ms
  (fresh baseline 5.0 ms in the same run)
- JS heap 30 s after OFF: 1.6 GB and climbing -> 342 MB after GC

Tests: the GeoJSON lifecycle and cables suites assert disable leaves zero
sources/contexts and re-enable rebuilds with fetch called once.
2026-09-13 17:08:23 -05:00
Cursor AgentandMatt Van Horn 923cb0b5bb feat(data): analyst records for satellites and infrastructure
Expose getAnalystRecords() on the CelesTrak satellites layer and on
createLocalGeoJsonLayer (datacenters/dams) so analyst_query / voice can
answer counts and nearest queries from in-memory client data, matching
the existing flights/ships/fires/earthquakes seam.

Co-authored-by: Matt Van Horn <[email protected]>
2026-09-12 15:56:08 +00:00
Sameh Khamis f70b5a3631 style: format the reusable infrastructure component 2026-09-11 16:07:53 -07:00
Sameh Khamis ed15c5b38e style: remove inherited trailing whitespace from extracted layer 2026-09-11 13:35:52 -07:00
Sameh Khamis 142bf583f8 refactor: export infrastructure layers with explicit application callbacks 2026-09-11 13:21:22 -07:00