mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
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.
This commit is contained in:
1 parent
6d83bb6008
commit
b6da93b8ac
170 files changed
+5800
-853
No files matched your search
@@ -664,7 +664,7 @@ This is the current runtime/source-of-truth snapshot for the project.
|
||||
> shared Parameters surface moves into Cockpit Display for the session and
|
||||
> returns on exit, with slider values contained by the panel at its supported widths;
|
||||
> the bottom Visual Presets tray owns the MAP SOURCE label, centered status,
|
||||
> and four-tile source row. Its compact wing is a keyboard disclosure:
|
||||
> and five-tile source row. Its compact wing is a keyboard disclosure:
|
||||
> Enter/Space opens and focuses Map Source, Escape closes and returns focus,
|
||||
> and unavailable sources remain tabbable with their reason exposed. Expanded left-panel
|
||||
> headers use the same container-owned background treatment without changing
|
||||
@@ -2177,11 +2177,11 @@ silently demoting every later lookup for the session.
|
||||
|
||||
### Map Stack Switcher (June 2026)
|
||||
|
||||
- `src/mapStackController.js` switches between Google Photorealistic 3D (`photoreal`, default), Bing Aerial / Aerial-with-Labels via Cesium ion world imagery (require `CESIUM_ION_TOKEN`), and OSM tile fallback. Bing Road is **retired**: it is gone from `MAP_STACKS`, from the `set_map_stack` enum, and from the voice aliases (road phrasings now resolve to OSM, the one shipped road basemap). An old `map=bing-road` link is simply an unknown id and takes `setStack()`'s existing photoreal fallback with the Google 3D tile lit — pinned live in `scripts/qa-map-source-tray.mjs`.
|
||||
- The bottom Visual Presets tray presents a **four-tile MAP SOURCE row** (`#map-stack-chips`, `src/mapStackChips.js`): Google 3D, Bing Aerial, Bing Labels, and OSM. The duplicate left `#stack-panel` is retired. The four tiles share one row on desktop and two rows on narrow screens, carry `aria-pressed` on the active source, and remain keyboard-reachable with a visible focus outline.
|
||||
- `src/mapStackController.js` switches between Google Photorealistic 3D (`photoreal`, the default when a Google or ion key is present), keyless Esri World Imagery (the zero-key default landing, with keyless terrain), Bing Aerial / Aerial-with-Labels via Cesium ion world imagery (require `CESIUM_ION_TOKEN`), and OSM tile fallback. Bing Road is **retired**: it is gone from `MAP_STACKS`, from the `set_map_stack` enum, and from the voice aliases (road phrasings now resolve to OSM, the one shipped road basemap). An old `map=bing-road` link is simply an unknown id and takes `setStack()`'s existing photoreal fallback with the Google 3D tile lit — pinned live in `scripts/qa-map-source-tray.mjs`.
|
||||
- The bottom Visual Presets tray presents a **five-tile MAP SOURCE row** (`#map-stack-chips`, `src/mapStackChips.js`): Google 3D, Esri Satellite, Bing Aerial, Bing Labels, and OSM. The duplicate left `#stack-panel` is retired. The five tiles share one row on desktop and two rows on narrow screens, carry `aria-pressed` on the active source, and remain keyboard-reachable with a visible focus outline.
|
||||
- The lit tile follows controller state, not the click: a rejected switch (no ion token) or a superseded one (rapid A→B) leaves the genuinely active source lit, and the tray heading keeps its short-label status readout (`...` while switching, amber on `lastError`).
|
||||
- Ion stacks remain visible and keyboard-focusable when no ion token is configured, but expose `aria-disabled="true"` and do not switch. Their accessible label and tooltip quote `getStacks().unavailableReason` — the same string `setStack()` puts in the toast. OSM works keyless. The `ION` badge is gated on the stack's own `requiresIon`, so a `photoreal` chip unavailable because the Google tileset failed says so instead of falsely demanding an ion token.
|
||||
- Stack choice participates in share links (`src/sharelink.js`) and falls back to OSM when Google 3D tiles fail to load. Share-link restore, the `set_map_stack` voice tool, and the chip row all land on the same `_setMapStack()` path.
|
||||
- Stack choice participates in share links (`src/sharelink.js`) and falls back to the best available stack when the requested one is unavailable (keyless boots land on Esri; OSM takes over automatically if Esri is unreachable). Share-link restore, the `set_map_stack` voice tool, and the chip row all land on the same `_setMapStack()` path.
|
||||
|
||||
### Voice Map Whiteboard / Annotations (June 2026)
|
||||
|
||||
|
||||
@@ -4,8 +4,7 @@ Updated: July 8, 2026
|
||||
|
||||
This file tracks active runtime issues only.
|
||||
|
||||
This file records current known issues; historical planning material is not part
|
||||
of the public release.
|
||||
For the roadmap and open backlog, see the repository issue tracker.
|
||||
|
||||
---
|
||||
|
||||
@@ -50,8 +49,8 @@ Related keys (current versions):
|
||||
|
||||
---
|
||||
|
||||
### Height-datum residuals
|
||||
Status: Open (accepted 2026-07-08, documented)
|
||||
### Height-datum residuals (branch `feat/height-datum`, pending merge)
|
||||
Status: Open (owner-accepted 2026-07-08, documented)
|
||||
|
||||
- **Cold-start floor latency:** at a freshly-visited airport, grounded/low aircraft
|
||||
float low for ~1–2 poll cycles (30–60 s) and rise as terrain floors resolve;
|
||||
@@ -60,7 +59,7 @@ Status: Open (accepted 2026-07-08, documented)
|
||||
data renders at the geoid for ≤1 poll until its floor cell warms.
|
||||
- Full context, improvement ideas, and the verification oracle
|
||||
(`scripts/qa-floor-verify.mjs`):
|
||||
the height-datum section in `docs/CURRENT-STATE.md`.
|
||||
`docs/superpowers/reports/2026-07-08-height-datum-handover.md`.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ Reference: OpenSky REST API docs recommend OAuth2 Client Credentials flow.
|
||||
Import credentials from JSON (`clientId`/`clientSecret` or `client_id`/`client_secret`) into Keychain:
|
||||
|
||||
```bash
|
||||
./scripts/opensky-import-client.sh /path/to/credentials.json
|
||||
# or: npm run opensky:import -- /path/to/credentials.json
|
||||
./scripts/opensky-import-client.sh ~/Downloads/credentials.json
|
||||
# or: npm run opensky:import -- ~/Downloads/credentials.json
|
||||
```
|
||||
|
||||
Then launch:
|
||||
@@ -32,7 +32,7 @@ Expected startup lines:
|
||||
## Optional: Launch With File (No Keychain Import)
|
||||
|
||||
```bash
|
||||
OPENSKY_CREDENTIALS_FILE=/path/to/credentials.json ./scripts/dev-fresh.sh
|
||||
OPENSKY_CREDENTIALS_FILE=~/Downloads/credentials.json ./scripts/dev-fresh.sh
|
||||
```
|
||||
|
||||
Launchers resolve OAuth creds in this order:
|
||||
|
||||
Reference in new issue
Block a user