12 KiB
Changelog
This changelog records public product changes. For the authoritative description
of current runtime behavior, see docs/CURRENT-STATE.md.
[Unreleased]
Fixed
-
Street Traffic no longer remains in
SYNCING ROAD NETWORKwhen the public Overpass mirrors are unavailable. Exact bounded traffic road queries now use OpenStreetMap's standard map endpoint first, translate its XML response into the existing Overpass-shaped payload, and retain the generic Overpass mirror rotation as a fallback. TomTom flow tiles and their attribution remain unchanged. -
Mapped-site outages show their scheduled retry countdown and distinguish known Overpass rate limits, timeouts, and query failures. Search feedback no longer claims a refresh succeeded while the layer is unavailable or loading.
-
Mapped installations retain valid ways and relations that provide bounds but no center. Invalid, inverted, and excessively wide bounds are rejected.
-
Clicking a selected installation again or clicking elsewhere clears its selection; later refreshes no longer reclaim it after a click-away.
-
Visual presets explain their effects on hover. Unavailable map sources name missing credentials and Provider Settings, while configured-but-failed Google 3D routes explain the failure without asking for another key.
-
The Overpass proxy now rotates to the next mirror on any non-2xx upstream response, not only on 5xx.
overpass-api.deand itslz4alias answer 406 to the proxy's User-Agent while two of the configured mirrors answer 200 to the identical request, so the fan-out stopped at the first refusal with healthy mirrors untried. The refusal was also cached to memory and disk and served as data — boundary-class queries hold a month-long TTL — which affected every Overpass-backed feature: road geometry, annotation outlines and place lookup. -
Existing cached refusals are now ignored immediately, including during stale-data fallback. Concurrent identical requests share the same last-good fallback when all mirrors refuse, without duplicating upstream requests.
[0.1.1] — 2026-09-01 — Installation and live-data fixes
Changed
- Tightened the README opening around keyless setup, source freshness, modeled experiences, and the accessibility of the provider stack.
Fixed
- Pinokio now recognizes its nested successful-install marker, so a completed one-click install exposes Start instead of returning to Install.
- The keyless
dev-fresh.shstartup summary now names Esri World Imagery with keyless terrain and identifies OpenStreetMap as the fallback. - All three VIIRS sources now reach the Active Fires layer. Merging a source's detections used argument spread, which exceeds the engine's argument limit on the two largest sources and dropped them entirely — leaving roughly a third of global detections while reporting each dropped source twice, once as successful with its real count and once as failed.
./scripts/dev-fresh.shno longer crashes on stock macOS bash 3.2 when no provider keys are exported: expanding the empty external-keys provenance array underset -uwas fatal there. Launches with exported keys are unchanged.
Security
- GBFS proxy body-size cap now measures the response in bytes
(
Buffer.byteLength) instead of JavaScript string length, so theGBFS_MAX_BODY_BYTESlimit holds for multi-byte payloads and cannot be overrun by non-ASCII upstream responses.
[0.1.0] — 2026-08-31 — One-click install, keyless boot, Provider Settings
Added
- One-click install via Pinokio. Keyless boot lands on a live Esri World Imagery satellite globe with keyless terrain; OSM takes over automatically if Esri is unreachable, and the globe continues without terrain if its source is unavailable.
- Provider Settings (the POWER UP panel): add, replace, or remove API keys inside the app. Credential files are made owner-only before any secret is written — verified on macOS and Windows — and keys configured outside the panel are shown read-only, never rewritten.
- Keyless capability responses: the optional HUD summary and place-search endpoints return a deliberate "not configured" success instead of errors, and never consume rate-limit quota.
.gitattributesnormalizes line endings, so Windows clones pass the full test suite out of the box (#81 — thanks @ethanstoner).
Changed
- README rewritten keyless-first around the provider ladder: zero keys → free Cesium ion (eligible personal, non-commercial use) → billing-enabled Google Maps.
- Browser-built data modules no longer import
node:fs; a repo-wide boundary scan test keeps it that way (#83 — thanks @ethanstoner). - Aircraft-identity voice answers explicitly cover operator, type, and route, and say so plainly when enrichment is unavailable instead of guessing.
Security
- Provider Settings answers only local, unproxied requests and disables itself entirely whenever the server is shared. Public datacenter and dam datasets omit contact-oriented fields (see the dataset READMEs).
Pre-release development history
The dated entries and internal milestone numbers below predate the first tagged GitHub Release. They are retained as project history and do not represent previously published GitHub Releases.
[Unreleased] — 2026-08-24
Added
- Added honest aircraft identity narration: callsign, operator, registration, type, and route come only from selected-contact context, and missing operator, route, or type enrichment is named explicitly.
- Added local, publication-compatible copies of the two README PNGs, with source
records and third-party-license boundaries in
docs/media/README.md. - Added regression coverage for aircraft identity narration and optional-key loading feedback.
Changed
- First-run presentation now opens with Detection
DENSEat 75%,ELASTICallocation, Fade 7%, Outside 1%, scope feather 11%, and aircraft 3D models inPROXIMITY. Stored state and share links still override these baselines. - The 17 selected README GIFs remain unchanged and are documented separately from the two owner-published PNGs.
- Bundled datacenter and dam snapshots now omit contact-oriented fields and note values containing email or phone identifiers. Feature geometry, names, operator/capacity/river metadata, counts, and ODbL terms are unchanged.
- Public documentation and the L9 release matrix no longer reference non-public planning material or repository history.
Fixed
- A missing optional FIRMS key no longer turns the complete Environmental
mission into
LOAD FAILED. The FIRMS row still reportsKEY REQUIRED, while earthquakes continue to load. Real lifecycle and fetch failures retain failure priority. - The mapped-installations layer retries after an unavailable request when it is enabled or the camera settles.
- Aircraft trails attach to the rendered aircraft transform and remain near the rear center across headings. Parked aircraft do not draw a moving head segment.
- Grounded aircraft keep validated floor evidence through temporary terrain outages and wait for measured photoreal-surface evidence before a 3D model takes over from its billboard.
- Cockpit altitude uses aviation MSL data rather than Cesium render height.
Security
- Production transitive dependencies resolve to patched DOMPurify and protobufjs releases without changing the Cesium version or application APIs.
- Production dependency audit reports no known advisories; remaining audit findings are confined to development and QA tooling.
[Unreleased] — 2026-08-23
Added
- Added a first-run mission launcher for Contacts, Space Missions, Environmental, and manual exploration.
- Added terrain-validity gating and bounded last-known placement for grounded aircraft models.
Changed
- Environmental consistently presents both earthquakes and NASA FIRMS fires, with honest optional-key degradation.
- The tracked aircraft trail acceptance bar is visual: roughly rear-center, stable across headings, with minor hull overlap allowed and no conspicuous top, bottom, or lateral projection.
[Unreleased] — 2026-08-18 to 2026-08-22
Added
- Added the four-source Map Source tray, share-link v2 state, cockpit/context voice parity, MSL altitude readouts, and close-range tracked aircraft models.
- Added the L9 release-candidate matrix, AIS feed watchdog, voice cost controls, satellite classes, and the shared world-overlay host.
- Added deterministic first-run, map-source, floor, overlay, tracking, and aircraft-model regression harnesses.
Changed
- Consolidated world labels, cards, tracked readouts, CCTV thumbnails, cable labels, mission labels, and detection presentation under shared allocation and lifecycle rules.
- Reduced idle rendering through the render governor and explicit scope mask.
- Improved cockpit layout, context restoration, keyless feed honesty, and aircraft 2D/3D handoffs.
Fixed
- Fixed degenerate depth picks, map-source restore states, route-camera motion, bright-ground label readability, grounded display flooring, and cross-layer tracking cleanup.
- Fixed stale overlay callbacks, parked-idle render leaks, cable-label sweep starvation, and several share-link state conflicts.
[Unreleased] — 2026-08-02 to 2026-08-16
Added
- Added Global Context modes, Cockpit briefing surfaces, Radio context, satellite mission replay, and real per-class aircraft models with adjacent provenance records.
- Added a shared screen-space overlay system with bounded allocation for labels, cards, callouts, detection brackets, and selected-object presentation.
Changed
- Unified right-side product controls and responsive cockpit/map layouts.
- Migrated public-safe neighborhood geometry to DataSF and tightened safe local development defaults.
- Improved proxy resilience, annotation outline bounds, CCTV enable pacing, contact de-emphasis, and deterministic visual stacking.
[Unreleased] — July 2026
Added
- Added live NASA FIRMS fires, optional live TomTom traffic, Caltrans and TfL CCTV packs, CCTV viewsheds and direct-manipulation calibration, citywide CCTV cards, Natural Earth regions, analyst queries, and voice routing QA.
- Added the end-to-end vertical-datum system for aircraft, vessels, CCTV, annotations, trails, and terrain-aware rendering.
- Added aircraft class silhouettes, path-derived display heading, ADSBDB enrichment, cached CelesTrak TLE lookup, and next-ISS-pass prediction.
Fixed
- Fixed elevated-airport aircraft placement, vessel sea-surface placement, close-zoom FIRMS anchors, antimeridian region framing, annotation resolution, cross-layer tracking ownership, and CCTV projection lifecycle issues.
[Unreleased] — June 2026
Added
- Added OpenAI Realtime voice control, scene-aware entity context, viewport image grounding, the AI HUD summary, live AIS vessels, infrastructure layers, map source switching, free-text navigation, and server-side data proxies.
- Added hybrid map annotations, 3D aircraft, panoptic detection, tracking harnesses, and public data attribution.
- Added MIT source licensing, security guidance, contribution guidance, data source notices, and third-party asset boundaries.
Changed
- Removed the experimental AI video-edit style and retained seven deterministic visual styles.
- Moved Realtime text-history trimming to the server-side retention policy while keeping only the latest viewport image in conversation context.
[0.7.0] — 2026-02-18
- Added the Bikeshare Pulse layer and panoptic label improvements.
- Improved tracked-item boxes, post-render alignment, and CCTV projection quality.
- Removed the experimental shift-drag CCTV calibration interaction.
[0.6.0] — 2026-02-10
- Added the initial multi-layer 3D globe experience, visual styles, live aircraft, satellites, earthquakes, CCTV, traffic, FIRMS, infrastructure, and performance controls.
- Added entity inspection, tracking, scenes, keyboard controls, and shareable views.
[0.1.0] — 2026-02-09
- Initial project version.