Commit Graph
1036 Commits
Author SHA1 Message Date
Rudy Celekli aacb409fbf fix(tools): limit cancellation guard to pre-execution 2026-10-14 14:17:55 -04:00
Rudy Celekli fffbe67b66 fix(tools): reject cancellation after async interception 2026-10-14 14:17:54 -04:00
Rudy Celekli 0796efe603 docs: address review scope and feature placement for #1031 2026-10-14 14:17:54 -04:00
Rudy Celekli 691be39c1b fix(tools): stop cancelled calls before execution and discard late results 2026-10-14 14:17:54 -04:00
Rudy Celekli 69815a92be docs: address review scope and feature placement for #1030 2026-10-14 14:17:52 -04:00
Rudy Celekli a140c52f84 fix(directions): report truncation only when a maneuver was actually omitted 2026-10-14 14:17:52 -04:00
Rudy Celekli 7126555acb fix: address review feedback for PR #1027 2026-10-14 14:17:48 -04:00
Rudy Celekli c86c1a4cce fix(weather): keep absent observations unknown instead of reporting clear skies 2026-10-14 14:17:48 -04:00
Rudy Celekli 615ba9a008 fix: address review feedback for PR #1026 2026-10-14 14:17:46 -04:00
Rudy Celekli 2c5fb039ce fix(tools): enforce string schema lengths by Unicode code point 2026-10-14 14:17:46 -04:00
Rudy Celekli 3b08bd7487 fix: address review feedback for PR #1023 2026-10-14 14:17:39 -04:00
Rudy Celekli 632005d221 fix(director): seek camera longitude across the shortest dateline arc 2026-10-14 14:17:39 -04:00
Sameh Khamis 6f0d1bb35f fix(ui): keep panels the right rail hides itself in its layout
Exclusive presentation hides collapsed right-rail panels with display: none.
Skipping every display: none panel also skipped those, so panels the rail had
auto-collapsed stayed collapsed after the HUD was hidden or left Tactical.
Only panels hidden by other CSS are skipped now. Adds the changelog and
current-state notes.
2026-10-14 11:07:18 -07:00
Sameh Khamis fba4517ce1 Merge branch 'main' into fix/right-rail-css-hidden-panel-20261003 2026-10-14 11:06:20 -07:00
Sameh Khamis db8e1ad7cb Merge branch 'main' into contrib/gods-001-coordinate-empty-components-20261011-reviewed
# Conflicts:
#	CHANGELOG.md
2026-10-14 11:06:17 -07:00
Sameh Khamis c34cef559d Merge branch 'main' into fix/cctv-hls-insecure-context 2026-10-14 11:06:10 -07:00
Kevin Rajan 36fcabcd89 chore: reconcile Recent Imagery gate fix with upstream main 2026-10-14 11:59:39 -05:00
Said Turksever 6dd4d0156f Merge pull request #1092 from hifiguy/fix/bing-ion-https
fix: request HTTPS tiles for ion-backed Bing imagery
2026-10-14 17:43:51 +01:00
Said TurkseverandClaude Opus 5.5 4838a64373 docs: restore NYC CCTV changelog entry below the Bing note
The merge from main replaced the NYC DOT opt-in pack entry instead of
adding the Bing entry above it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 17:13:17 +01:00
Said Turksever a09d4534a0 Merge branch 'main' into fix/bing-ion-https 2026-10-14 16:56:08 +01:00
Mazeyar Moeini Feizabadi 6c362bb0bd test: verify GNSS map clicks with production canvas pixels 2026-10-14 17:53:19 +02:00
Mazeyar Moeini Feizabadi 01a8ad7aa7 fix: address GNSS integrity and aircraft emergency review findings 2026-10-14 17:43:13 +02:00
Mazeyar Moeini Feizabadi 4240d04642 Merge current main into HAL-522 review candidate 2026-10-14 16:53:13 +02:00
Said Turksever 3ec31e599e Merge pull request #1121 from asturksever/pr/kartaview
Street Level: KartaView as the third, keyless imagery provider
2026-10-14 15:20:56 +01:00
Said Turksever 02a2efb8d4 Merge branch 'main' into pr/kartaview 2026-10-14 15:13:16 +01:00
Said TurkseverandClaude Opus 5.5 c4ecb11f75 feat(street-level): KartaView's SINCE is its upload date, noted in the panel
KartaView's server filters by upload date only, so SINCE goes by it
throughout for KartaView: the lines (as before), the photo a click opens
and the cones, the cut-off taken as its UTC day as KartaView's startDate
(passesKartaViewFilter). Providers may declare sinceBasis: 'upload'
(validated); while one is lit the panel shows "KartaView: by upload date"
under the SINCE slider, read out with it. The gate checks the note, and
step 13's picks get 60 s on a loaded machine.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:02:14 +01:00
Said TurkseverandClaude Opus 5.5 b42ab9bb02 feat(street-level): IMAGERY and SINCE filters for KartaView
KartaView filters coverage on its server only in its PNG tiles (its JSON
tiles come back empty with a filter), so a filtered tile's PNG is a mask
over the cached JSON segments: a segment stays when at least half the
points along it lie on drawn pixels. A filter change reloads the lines
(lineCoverage.reload keeps the drawn ones until the new ones are in);
masks are cached per filter and tile, and a filtered tile KartaView is
still drawing (504 or a timeout) is asked again, four tries in all.
The nearest lookup asks the photo API for the projection and date, and
the cones follow the filter like Mapillary's. The gate fixture draws
filtered PNG tiles and adds an older flat-only street; a new gate step
checks 360 and LAST YEAR thin KartaView's lines and ALL brings them back.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 15:02:14 +01:00
Said Turksever e28df70fdb Merge pull request #1085 from mvanhorn/fix/nyc-cctv-pack
feat(cctv): add NYC DOT Traffic Management Center camera pack
2026-10-14 14:35:21 +01:00
Mazeyar Moeini Feizabadi 767a7d5ae8 perf(import): reuse generated pin textures and trim unused processing 2026-10-14 15:01:47 +02:00
Said Turksever 88a3ee3d44 Merge branch 'main' into pr/kartaview 2026-10-14 13:59:37 +01:00
Said TurkseverandClaude Opus 5.5 04b3231534 fix(street-level): KartaView review P2s; budget the gate's pick search
- Viewer: resizes while a sharper photo loads start no second load (the
  last size is looked at once it lands); decoded bitmaps nobody will draw
  (an overtaken preview or upgrade) are closed.
- Cones: a photo opened while the drive's first page loads is the one
  they centre on.
- A sequence page that lands while a lost WebGL context recovers keeps
  its cones: no pose is emitted without a renderer, and a viewer error
  never rejects page data.
- Source: an answer turned away unread (HTTP error, 429, length past the
  cap) aborts its request and cancels its body, freeing the connection.
- Gate: findPickPoint no longer picks each centre five times at radius 0,
  aims step 13's cone pick at the drawn billboards, and caps each
  evaluation at 4 s, resuming from a cursor on the next poll, so a slow
  machine cannot spend a whole wait in one evaluation.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 13:09:40 +01:00
Said Turksever 40be3bc54d Merge branch 'main' into fix/nyc-cctv-pack 2026-10-14 12:52:49 +01:00
Said TurkseverandClaude Opus 5.5 e9a4dbb062 fix(street-level): KartaView marker and camera direction; remaining review P4s
Marker and direction (reported on the PR):
- KartaView has its own marker, a purple view cone (Street View's is
  blue), not GEV's default pin that Mapillary uses.
- The camera direction (marker, cones, FOLLOW, a panorama's centre) is
  the direction of travel to the next photo a few metres on. KartaView's
  heading is the device compass: whole drives read 0 (no compass) and
  others sit a steady ~110° off. Until the drive loads the compass stands
  in (0 = unknown), and the pose is sent again once the course is known.

Remaining P4s from the review of #1121:
- Segment chaining is linear (a per-point cursor) and capped at 20,000
  segments a tile and 5,000 points a line: a hostile tile of 60k segments
  sharing one point took 1.5 s, now tens of ms.
- Decoded tiles are dropped when KartaView is switched off.
- No network / a refused request says so and is not retried as a timeout;
  an unreadable answer says so.
- A docked flat photo skips the 2,560 px download until the viewer grows.
- The panel counts the drive's photos (countActivePhotos), not the thinned
  page of cones (2,250, not 217).
- After a GPU reset the viewer redraws the photo itself, so a lookup the
  user started is not cancelled; a failure is still reported.
- The gate's keyless page lights KartaView and checks it draws with no key;
  the fixture answers the sequence count; the line-click step checks the
  camera looks along the drive when the compass says 200°.
- README/CHANGELOG show the share-link form the app writes.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 12:17:33 +01:00
Mazeyar Moeini Feizabadi c58ff5c215 fix(import): keep KML points visible when remote icons are blocked 2026-10-14 13:16:10 +02:00
Said TurkseverandClaude Opus 5.5 128a689a56 fix(cctv): make the NYC DOT pack opt-in and carry DOT's disclaimer
NYC DOT asks developers who use its camera feed to sign a data-sharing
agreement, and this project does not hold one that covers downstream
installs. The pack now loads only when CCTV_NYC_ENABLED=1; unset, empty
or any other value makes no request to webcams.nyctmc.org (tested).

The NYC credit carries NYC DOT's requested application disclaimer
verbatim, and DATA_SOURCES, README, CHANGELOG, CURRENT-STATE and
.env.example describe the prerequisite.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 11:44:25 +01:00
Mazeyar Moeini Feizabadi ae51f9aee9 fix(import): share repeated KML styles before resource checks 2026-10-14 04:06:19 +02:00
Said TurkseverandClaude Opus 5.5 c99eb93174 fix(street-level): KartaView PR review — context loss mid-load, chunked reads, source switches, a11y
From the IC8 review of #1121 (2 P2, 7 P3; each with a test that fails on
the old code):

P2
- A WebGL context lost while a newer panorama loaded left a black viewer
  and a 'successful' open: the panorama now builds on the new canvas (or
  falls back to its front view).
- The streaming body read every real answer takes was tested with one
  chunk only: answers split mid-character are reassembled; the shared test
  fake now streams, so every source test runs the production path.

P3
- Lighting another source by its chip (params) now stops a running lookup
  and clears its spinner and error, as setProviderEnabled did; a restore
  that changes nothing leaves them alone.
- Panoramas decode off the main thread (ImageBitmap, RGBA upload: ~90 ms →
  ~15 ms at 4,096 px on a phone-class CPU) and are 2,048 px docked, 4,096
  once the viewer grows; a closed viewer keeps a 1×1 texture.
- The lit KARTAVIEW chip label is #8f8aff (~6:1; #635bff was 3.7:1).
- The viewer's keyboard focus ring is drawn above the photo.
- Tests: a second context loss and a drag on the new canvas; the look
  direction kept across a loss; a page's 30 s first try.
- The browser gate loses a real WebGL context in the 360° step and checks
  the 429 lookup was asked again (the fixture counter is reset first).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-14 00:36:58 +01:00
Mazeyar Moeini Feizabadi a5b21b5d0f fix(import): enforce geometry budgets and queued navigation 2026-10-14 01:02:50 +02:00
Mazeyar Moeini Feizabadi 7694c02b91 Integrate file-import contribution onto current main for HAL-526 review 2026-10-14 00:50:18 +02:00
Mazeyar Moeini Feizabadi 132b9e96dc Merge pull request #1120 from bilawalsidhu/codex/hal-529-gbfs-names
Fix GBFS v3 station names in the shared parser (HAL-529)
2026-10-14 00:39:26 +02:00
Mazeyar Moeini Feizabadi 82b8c0c850 Frame mobile GBFS QA in supported clean view 2026-10-13 23:48:21 +02:00
Mazeyar Moeini Feizabadi ddd932f0a7 Harden shared GBFS station-name parsing and add regression coverage 2026-10-13 23:46:51 +02:00
Kristóf Kékesi 16e0f35c74 Feat: GBFS v3 support for station names
GBFS v3 uses `LocalizedString` for `name` and `short_name` of the stations. This caused stations from v3 to have names like `[object Object]`.

This commit makes the code handle v3 names. It default to locale 'en' then fallbacks to the first option in the array.

Documentation for v3: https://gbfs.org/documentation/reference/#station_informationjson
2026-10-13 23:35:48 +02:00
Said TurkseverandClaude Opus 5.5 97a1a667de fix(street-level): KartaView round-2 follow-ups — context loss, size cap, slow lookups
From the second IC8 pass (launch ready; P3s closed here):
- A lost WebGL context is redrawn on a new canvas (the old one only gives
  back its lost context), through the core, and only if no newer photo is
  opening; verified live with WEBGL_lose_context, twice.
- The 16 MB answer cap counts bytes while reading: KartaView sends
  chunked answers with no Content-Length, so the header check never fired.
- A lookup gets 8 s, then 15 s once more: KartaView sometimes sits on a
  lookup for 11 s and answers the same one in 3 s.

Left as follow-ups: cancelling abandoned sequence pages; finding a page
by binary search on the index when thousands of photos are missing.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 21:03:13 +01:00
Mazeyar Moeini Feizabadi a922d71120 test: isolate GNSS first-fetch recovery from persisted fixtures 2026-10-13 21:51:41 +02:00
Mazeyar Moeini Feizabadi a1786f162c fix: recover GNSS feed startup and honor retry cooldowns 2026-10-13 21:49:25 +02:00
Said TurkseverandClaude Opus 5.5 0394a9b908 test: README now counts eighteen layers with a keyless path (Street Level via KartaView)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 20:48:41 +01:00
Said TurkseverandClaude Opus 5.5 3d4c6de21a test(street-level): harden KartaView tests (mutation score 51% → 95%)
A mutation review (91, then 130 mutants) found tests that could not fail
(quick presses with synchronous fakes, a no-flight check with a provider
that never posed), and untested paths. New and rewritten tests kill 123 of
130 mutants; the 7 survivors are equivalent or harmless redraws.

- viewer: held-back loads for quick presses, stale sharp/flat loads,
  close mid-load, ends checks for an older photo, WebGL retried per mount,
  focus handed back, look direction kept on ›.
- provider: id-ordered pages with out-of-order indexes, page and probe
  failures retried, overtaken lookups, cones re-centred on ‹ ›, leftover
  imagery filters hide no line or cone, coverage hints, tile cache.
- source: 429 backoff and Retry-After under mock timers, hang timeouts,
  the nearest query's parameters. policy: storage-host injection, FOV 360,
  longitudes past ±180. panorama: a stub WebGL context (angles, lost
  context, re-measuring). lineCoverage.test.mjs: tooHigh hint, passes().
- core: openImage({frame:false}) and openNearest leave the camera
  (with a posing provider and a default-open control), KartaView's legend
  and wording end to end; viewerHost supportsRenderModes.
- Fixed tick-count waits replaced by an until() poll.
- Browser gate fixture: odd photos archived (409 at storage2, served by
  the proxy), the first lookup rate-limited (429, Retry-After: 0); the
  line-click step asserts the camera stays and › skips the archived photo.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-13 20:43:27 +01:00
Mazeyar Moeini Feizabadi 70664c300b test: verify GNSS query center at globe scale 2026-10-13 21:19:08 +02:00
Mazeyar Moeini Feizabadi 96534df807 fix: refresh GNSS sampling automatically as the camera moves 2026-10-13 21:17:10 +02:00