mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 10:24:02 +00:00
Merge upstream/main into pr/mapillary-layer
Brings in #744 (share-link token ledger). package.json: keep the branch's sorted scripts and add layer-token:next and layer-token:check. Street Level's token moves from the provisional `3` to `0`: following CONTRIBUTING, the provisional entry was removed and `npm run layer-token:next -- street-level` assigned `0` (free digits in order). It is added to the registry and to src/data/layerStateTokenReservations.json, and `npm run layer-token:check -- --base-ref upstream/main` passes (28 published, 1 new). No link with the provisional token was ever published. Pinned token tests move with the ledger as CONTRIBUTING asks: 29 reservations, next free digit `3`, and the competing-PR and retired-digit scenarios shift up one free digit (0->3, 3->4) so they still test the same rules. The README share examples and the free-digit notes in CONTRIBUTING and CURRENT-STATE now read `0`. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
commit
ecb16b2fe2
16 files changed
+1477
-23
No files matched your search
+26
-4
@@ -2773,7 +2773,7 @@ its criteria cannot be silently ignored.
|
||||
Fire Perimeters uses capped, timed server reads with stale-on-error caching and a per-client limit. Unchanged snapshots retain geometry; link checks cancel on disable or selection change, and the row legend shows reported containment.
|
||||
|
||||
Street Level lives in the right context rail next to CCTV as an ordinary
|
||||
collapsible panel (`#street-level-panel`, share token `3`, option owner
|
||||
collapsible panel (`#street-level-panel`, share token `0`, option owner
|
||||
`street-level`) and starts collapsed. It is modelled on the iD editor's photo
|
||||
overlay: one panel, a PROVIDERS chip per registered imagery provider, shared
|
||||
360°/flat and captured-since filters (stored as relative days so a link keeps
|
||||
@@ -3573,11 +3573,33 @@ silently demoting every later lookup for the session.
|
||||
with compact fields for enabled layers, allowlisted layer options, panel state,
|
||||
and the active preset's allowlisted shader controls. An absent layer field uses
|
||||
deterministic defaults; an explicit empty field means no enabled layers.
|
||||
- The registry seals only after all 16 production layers register, and every
|
||||
layer has an explicit serialization disposition. Unknown enabled-layer tokens
|
||||
reject the layer payload; unknown option tokens are ignored. Restoration
|
||||
- The registry seals only after every production layer registers, and every
|
||||
layer has an explicit serialization disposition. Unknown, empty, or repeated
|
||||
enabled-layer tokens reject the whole layer payload (`l=` alone is the valid
|
||||
explicit-empty form); unknown option tokens are ignored. Restoration
|
||||
settles independently per layer so one failed or unavailable source cannot
|
||||
block its siblings.
|
||||
- Layer tokens are permanent public compatibility identifiers. The reservation
|
||||
JSON ledger at `src/data/layerStateTokenReservations.json` pins all existing
|
||||
one-character assignments (all letters plus `0`, `1` and
|
||||
`2` on current `main`) even if a layer is later removed. New layers allocate
|
||||
the remaining unreserved single-character digits first (`3` through `9` on
|
||||
current `main`), then the next unreserved two-character
|
||||
base-36 token (`00` through `zz`) after rebasing onto the merge-time `main`;
|
||||
the dot-delimited v2 codec accepts both widths without changing existing
|
||||
links or the schema version. The contributor
|
||||
check reads the complete published JSON ledger from `origin/main`, including
|
||||
retired reservations, so later assignments cannot silently replace published
|
||||
ones. The pre-ledger base is accepted only at its known source blob; unknown
|
||||
historical shapes fail closed.
|
||||
Pull-request CI runs this check against `origin/main`.
|
||||
- `scripts/qa-layer-token-twochar.mjs` simulates exhaustion of the earlier
|
||||
digit slots and injects a no-network `00` layer only into isolated dev-browser
|
||||
responses. It proves encoding, a cold-recipient reload, restoration, explicit
|
||||
OFF, and legacy-token compatibility. This is synthetic
|
||||
end-to-end evidence, not production allocation: `00` remains unreserved until
|
||||
the first eligible real layer receives it after the free digits through the
|
||||
normal allocation process and passes its own application share/reload check.
|
||||
- Stable visible options are limited to aircraft 3D mode, selected civilian and
|
||||
military flight IDs, Satellite catalog and selection, CCTV coverage/projection/
|
||||
auto-hop, and Radio filter/volume. Playback and tuning, live-data health,
|
||||
|
||||
Reference in new issue
Block a user