Commit Graph
14 Commits
Author SHA1 Message Date
Mazeyar Moeini FeizabadiandClaude Fable 5.2 0f4dda5cc6 perf(terrain): one shared, cached and budgeted terrain height reader for Transit, Rail, Bike Share and local data
globe.getHeight is a ray cast against the drawn tile's mesh and
scene.sampleHeight a GPU depth render; several layers asked for them
uncached and unbudgeted. The cache written for Transit moves to
src/services/terrainSurface.js and is handed to every layer through the
ground service, so layers share one cache and one read budget.

- Rail reads each train on a ~4 m grid instead of every frame.
- Local data layers read terrain floors through it and stop depth samples
  at 8 ms a frame.
- Bike Share draws stations at once and finds their heights afterwards in
  4 ms steps.

Co-Authored-By: Claude Fable 5.2 <[email protected]>
2026-11-12 23:05:24 +01:00
German Khokhlov 65f0467ad8 fix(infrastructure): sample visible ground below the ellipsoid 2026-11-03 15:10:15 +04:00
quanticsoul4772andClaude Opus 5.5 f392eecbd9 fix(infrastructure): test ground below 0 m and unknown terrain correctly
The ellipsoidal horizon test hid ground below the ellipsoid (low-geoid
coasts, the Dead Sea) from a camera near it, so it is now tested at 0 m.
With the globe hidden the ground is tested as the vertical from 0 to
9,000 m against the frustum planes, in place of a 4.5 km sphere that let
in much unseen ground.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 01:47:05 -07:00
quanticsoul4772andClaude Opus 5.5 ecc0ced47c fix(infrastructure): test the ground, not the ellipsoid, for in-view sampling
An unsampled base sits at ellipsoid height 0. Over high terrain seen at an
angle that point projects below the screen while the ground above it is in
view, so the gate skipped ground the camera could see and never sampled it.
The gate now tests loaded globe terrain when there is some, and otherwise
the whole span of heights a sample can accept (0 to 9,000 m).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 01:25:57 -07:00
quanticsoul4772andClaude Opus 5.5 6d6ad20ad3 fix(infrastructure): ground-sample only stem bases the camera sees
scene.sampleHeight reads only surface rendered for the current view. For a
data centre or dam base outside the frustum or over the horizon it read
through the Earth (about -6,344 km over Ashburn on Esri), failed the 9,000 m
check and retried every 2 s indefinitely, one offscreen render per record.
Over Ashburn that held rest frames at 58-589 ms. Unseen bases are now
skipped without being stamped, so each is sampled on the first walk that
sees it, and they no longer arm the retry render.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 00:41:30 -07:00
Sameh Khamis 2006c035d9 chore: remove four modules nothing in the app uses (#1403)
* chore: remove four modules nothing in the app uses

src/app/sourceSlot.js re-exported src/sources/sourceSlot.js, which every
caller imports directly. src/data/flowTiles.js and src/data/issPass.js were
reached only by their own tests. src/data/localGeojson.js wrapped
localGeojsonCore.js with the app's services, which the catalog already
passes itself. The local GeoJSON layer tests now build layers the way the
catalog does, so they keep covering localGeojsonCore.js; only the test of
the wrapper's own default host goes. Boundary lists, format scope and docs
drop the removed paths.

* docs: changelog for #1403
2026-10-25 17:21:41 -07:00
Sameh Khamis 04f4d54bfe test: allow line wrapping in the stem buffer regression pin 2026-09-11 16:07:53 -07:00
Sameh Khamis 106a794afa fix: preserve standalone overlay defaults for undefined overrides 2026-09-11 13:32:49 -07:00
Sameh Khamis 142bf583f8 refactor: export infrastructure layers with explicit application callbacks 2026-09-11 13:21:22 -07:00
Sameh Khamis 412ee211b5 fix(infrastructure): follow refined terrain after initial sampling 2026-09-11 09:05:41 -07:00
Sameh Khamis b5568de9fa fix(infrastructure): stop idle republishing and respect settled terrain
Skip unchanged overlay cohorts while detecting moved positions and lifecycle changes. Defer ground sampling until visible terrain settles, retain the loaded surface as a floor, and preserve roof heights and bounded retries. Keep regression and idle-render gates intact.
2026-09-11 08:59:32 -07:00
Bilawal Sidhu 6dd00d1e76 fix(infrastructure): declutter stems and correct close-up sizing 2026-09-11 08:59:32 -07:00
Bilawal Sidhu b6da93b8ac release: v0.1.0 — one-click install, keyless boot, in-app Provider Settings (#142)
The first formal release.

- One-click install via Pinokio; keyless boot lands on a live Esri World
  Imagery satellite globe with keyless terrain, with automatic OSM fallback
  and graceful degradation when terrain is unavailable.
- Provider Settings (the POWER UP panel): add, replace, or remove API keys
  inside the app; credential files made owner-only before any secret is
  written; external keys shown read-only; the panel refuses shared or proxied
  servers.
- Keyless capability responses for the optional HUD summary and place search.
- Aircraft-identity voice answers cover operator, type, and route, and say so
  plainly when enrichment is unavailable.
- README rewritten keyless-first; concise 0.1.0 changelog section; CI
  workflow included.

Gates: 2,672 unit tests pass / 0 fail, build clean, tracking regression
108/108, map-source tray QA pass, setup doctor ready.
2026-08-31 17:49:45 -05:00
Bilawal Sidhu 880a672b5e Release God's Eye View as open source 2026-08-24 17:02:16 -05:00