Commit Graph
546 Commits
Author SHA1 Message Date
manjunath d4434aa6d7 feat(outlines): restore voice outlines without public Overpass
use bundled place boundaries and shared OpenFreeMap tiles before a guarded Nominatim fallback

preserve multipart shapes, holes and cancellation,
and keep pending annotations visible while ground sampling finishes across frames

keep non-Latin name distinctions when selecting provider results,
and retain an outline anchor only when it lies in filled geometry
2026-10-27 13:24:02 +00:00
Aditya d58199a214 fix(vessels): show a 359.7° course as 0°, not 360°
Vessel cards and the AIS HUD rounded the direction without wrapping, so
a vessel reporting no heading and a course over ground of 359.5° or more
read "360°" on its cards and "HDG: 360DEG" in the HUD. The rounded
direction now wraps to 0°.
2026-10-27 15:54:28 +05:30
Aditya 60dad0c35e fix(military): don't treat adsb.lol's position-less rows as a partial snapshot
readsb omits lat/lon for a contact heard without a current position; about a
third of every /v2/mil response is such rows. They made every military
snapshot partial, so a contact that left the feed was retained at full
opacity for five minutes instead of fading and leaving on the missed-poll
limits. A row with a hex and no lat/lon now leaves the snapshot complete and
is listed in retainIds, as OpenSky's null-position rows already are.
2026-10-27 15:44:36 +05:30
German Khokhlov ba9db7fc41 Merge origin/main and sync Traditional Chinese catalog 2026-10-27 10:25:07 +04:00
Mazeyar Moeini Feizabadi 4da002bd42 Merge current main into S2 GhostMaps and preserve updated import and voice behavior 2026-10-26 16:25:49 +01:00
Mazeyar Moeini Feizabadi 4a18af5426 fix: address GhostMaps resource and source ownership review findings 2026-10-26 16:24:34 +01:00
quanticsoul4772 c53928ab06 Merge branch 'main' into upstream/perimeters-stale 2026-10-25 19:45:35 -07:00
quanticsoul4772 64c2af6758 Merge branch 'main' into upstream/traffic-layer-stale 2026-10-25 19:44:48 -07:00
quanticsoul4772andClaude Opus 5.5 f6244e8fef refactor(perimeters): share getSnapshotDetail without this
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 19:42:51 -07:00
nu-stats 06c51d3438 perf(weather): wake a staged frame on a 150 ms timer, not every render (#1345)
Wake staged weather imagery on a bounded timer instead of requesting every render.

Contribution by @nu-stats.
2026-10-25 19:07:12 -07:00
quanticsoul4772andClaude Opus 5.5 7981a179ea fix(traffic): the traffic layer reads STALE, not LIVE, on cached flow tiles
Once the TomTom tile budget is spent, or TomTom fails, the proxy serves
cached tiles marked STALE-BUDGET / STALE-ERROR. flowSource works out
`stale`, but the layer fetched flow through fetchFlowForBounds, which
returns only the segments, so getStats() and the sync chip still read
"LIVE · Roads: …". #1239 fixed the get_traffic_flow tool the same way; the
layer now uses fetchFlowDetail too, reports stale and oldestTileAt in its
stats, and the chip reads "STALE · Roads: <source> · Flow: cached TomTom
tiles". A source without fetchFlowDetail keeps the previous behaviour.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:01:19 -07:00
quanticsoul4772andClaude Opus 5.5 25973ade2c fix(perimeters): report a stale WFIGS snapshot as stale, and stop serving it after a day
When WFIGS was unreachable the proxy served its last snapshot, marked stale
(X-Data-Stale, body.stale), with no age limit, and the client source kept
only the rows. The layer then read healthy with a fresh update time and
get_fire_perimeters reported the perimeters as current; three days into an
outage it still said "1 mapped wildfire perimeter in the requested box."
The source now offers getSnapshotDetail ({rows, stale, fetchedAt}); the
layer reports stale with the snapshot's fetch time, the tool adds stale,
retrieved_at and "(data may be stale)", and the proxy serves a stale
snapshot for at most 24 hours, as the GNSS proxy caps its own.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 18:01:19 -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
Rudy Mizrahi Celekli 7bc86224e9 fix(route): phrase ramp and lane modifiers as directions (#1343)
Correct ramp and lane instructions consistently in server output and localized browser text.

Contribution by @rudycelekli.
2026-10-25 16:28:09 -07:00
Sameh Khamis f4b3517e9b Merge main into PR #1390 2026-10-25 16:15:38 -07:00
Rudy Celekli 315c0f5dc6 fix(local-adsb): show a 359.7° track as TRK 0°, not TRK 360°
The Local ADS-B card rounded the track without wrapping, so an aircraft
tracking 359.5° or more read "TRK 360°". The rounded track now wraps
to 0°.
2026-10-25 15:58:46 -04:00
Rudy Celekli 63866c201a fix(awareness): wrap north-bound bearings 2026-10-25 13:28:23 -04:00
Sameh Khamis ba783b4eea Merge main into PR #1387 2026-10-25 09:01:32 -07:00
Sameh Khamis 3cd795527c Merge main into PR #1386 2026-10-25 08:55:23 -07:00
Sameh Khamis d8d3ac85b6 Merge PR #1387 contribution for review 2026-10-25 08:48:36 -07:00
Sameh Khamis 5c8d371552 Merge PR #1386 contribution for review 2026-10-25 08:48:29 -07:00
Sameh Khamis 9d07e67cf8 Merge PR #1385 contribution for review 2026-10-25 08:48:22 -07:00
Rudy Celekli 6c225605c4 fix(awareness): show a 999.6 m contact as 1.0 km, not 1000 m
The Contacts panel checked the raw meters against 1000 but printed them rounded, so 999.5 m or more read "1000 m". Compare the rounded meters so the distance moves to kilometres.
2026-10-25 11:32:19 -04:00
Rudy Celekli b7e00f18a4 fix(directions): show a 996 m leg as 1.0 km, not 1000 m
routeDistanceText checked the raw meters against 1000 but printed them rounded to tens, so 995 m or more read "1000 m". Compare the rounded value so it moves to kilometres.
2026-10-25 11:32:15 -04:00
Rudy Celekli eb8b63fc62 fix(directions): show a 59.6-second leg as 1 min, not 60 s
routeDurationText checked the raw seconds against 60 but printed them rounded, so a leg of 59.5 s or more read "60 s". Compare the rounded seconds so it moves to minutes.
2026-10-25 11:32:12 -04:00
quanticsoul4772 6bbf9b94c4 fix(traffic): flag stale cached TomTom tiles in get_traffic_flow (#1239)
Report stale traffic tiles and their fetch time, and release pending freshness metadata when tile requests fail or are cancelled.

Contribution by @quanticsoul4772.
2026-10-25 08:26:26 -07:00
Sameh Khamis ad79e57028 Merge main into PR #1207 2026-10-25 08:14:59 -07:00
quanticsoul4772 91144e88ad perf(models): aircraft models skip Cesium's dynamic environment map (#1366)
Skip per-aircraft dynamic environment maps while retaining default model lighting.

Contribution by @quanticsoul4772.
2026-10-25 08:08:43 -07:00
Sameh Khamis dae03f9a11 Merge PR #1207 with current main 2026-10-25 07:54:46 -07:00
Sameh Khamis e7cf071a1c Merge remote-tracking branch 'origin/main' into perf/aircraft-label-candidates 2026-10-24 23:36:30 -07:00
Sameh Khamis 45a093fb42 perf(flights): reuse resolved models in detection queries 2026-10-24 23:36:30 -07:00
Sameh Khamis 7cdaa6044b perf(flights): cache unchanged detection label text 2026-10-24 23:36:30 -07:00
Said Turksever 5b8e6fbc38 fix(street-level): read the older {zoom, kind} zoomFor shape (#1288)
Restore legacy provider zoomFor compatibility and document supported return values.

Contribution by @asturksever.
2026-10-24 23:33:10 -07:00
Sameh Khamis fae7703b4f Merge PR #1349 with current main 2026-10-24 23:14:52 -07:00
Sameh Khamis ad3f26be2d Merge remote-tracking branch 'origin/main' into fix/touch-zoom-aircraft-performance 2026-10-24 22:48:07 -07:00
Sameh Khamis 27cfbe5562 Reuse aircraft render times and extrapolation frames 2026-10-24 22:47:20 -07:00
Sameh Khamis 77e233600a Merge main into PR #1353 2026-10-24 22:40:23 -07:00
Sameh Khamis 80cd3476bf Merge main into PR #1354 2026-10-24 22:16:42 -07:00
Sameh Khamis 023be3c189 Merge main into PR #1353 2026-10-24 22:16:41 -07:00
Said Turksever 60ec1f962b Merge branch 'main' into codex/fix-hidden-tab-polling 2026-10-24 23:51:23 +01:00
Rudy Celekli 2beef9be39 fix(firms): drop the decimal when fire power rounds to 10 MW
A 9.96 MW detection was labeled 10.0 MW because the one-decimal cutoff ran before rounding.
2026-10-24 00:23:11 -04:00
Rudy Celekli 66ea77237f fix(cyclones): label NHC classification codes by their published meanings 2026-10-24 00:17:38 -04:00
Rudy Celekli 0309a58643 fix(transit): count a 90-second report as one minute
The card kept seconds through 89s, then rounded 90s up to 2 minutes.
2026-10-24 00:10:14 -04:00
Said Turksever 39777ad173 Merge branch 'main' into fix/kartaview-impossible-timestamps 2026-10-24 01:42:59 +01:00
Said Turksever 70bdcbfd8a Merge branch 'main' into codex/fix-launch-hover-throttle 2026-10-24 01:06:07 +01:00
Rudy CelekliandCursor 9e2879c0ba fix(kartaview): reject impossible photo timestamps
Co-authored-by: Cursor <[email protected]>
2026-10-23 19:08:52 -04:00
Sameh Khamis 8d454bf7f1 fix: improve mobile contact selection and context drawers (#1338)
Improve coarse-pointer contact selection, reveal tracked aircraft through Contacts, support downward drawer dismissal, and enlarge the mobile logo.
2026-10-23 15:05:23 -07:00
6b3e8bada3 i18n: add Traditional Chinese (zh-TW)
Add a complete Taiwan Traditional Chinese catalog, locale selection,
Chinese readout formatting, translation notes and regression coverage.
Seed translations from #724 and #652 and adapt the zh-CN catalog.

Co-authored-by: caxer <[email protected]>
Co-authored-by: tbdavid2019 <[email protected]>
Co-authored-by: Enzo Abyie <[email protected]>
Co-authored-by: EDIT-Aeterna <[email protected]>
2026-10-23 22:52:48 +04:00
Sameh Khamis 8cdd184a90 feat(street-level): provider exports and a Mapillary Graph endpoint for hosts (#1324)
* feat(street-level): export the KartaView and Panoramax providers

A host that composes Street Level with its own provider list can already
import the Mapillary and Google Street View providers; KartaView and Panoramax
were reachable only through the default list, which needs a Mapillary source.
Exporting them lets a host offer the keyless providers without Mapillary.

* chore: changelog entry for the Street Level provider exports

* feat(street-level): send Mapillary Graph lookups to a source endpoint

A Mapillary source can take a graphEndpoint, a Graph API base that adds
the token itself. Its sequence lookups go there through the source's
transport, and the photo viewer uses MapillaryJS's stock GraphDataProvider
at that endpoint, so a host that proxies Mapillary needs no client token in
the page. Without it, behaviour is unchanged: direct Graph API calls with
the client token.
2026-10-23 07:47:57 -07:00
Said Turksever 8eb1029393 Merge branch 'main' into codex/fix-military-history-failures 2026-10-23 15:01:01 +01:00