Commit Graph
177 Commits
Author SHA1 Message Date
Bilawal Sidhuandrileygramlich 409e27d7f9 feat(cctv): add the Open Calgary camera pack (#514)
Supersedes #438 by @rileygramlich, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: rileygramlich <[email protected]>
2026-09-14 19:45:52 -05:00
Bilawal Sidhuandvegettto a04502559e docs(cctv): correct the panel reset instructions to the current storage key (#509)
Supersedes #408 by @vegettto, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: vegettto <[email protected]>
2026-09-14 19:42:24 -05:00
Bilawal Sidhuandmichaelhan1208 94f5e4dd45 fix(windows): isolate the ACL verifier from the PowerShell 7 module path (#508)
Supersedes #161 by @michaelhan1208, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: michaelhan1208 <[email protected]>
2026-09-14 19:38:28 -05:00
Sameh Khamisandmanjunath22466 87629ac175 Port ALPR camera visuals into the shared layer
Add camera badges, gradient direction wedges and animated tactical selection cards while preserving bounded loading and layer lifecycle. Align the ALPR data-layer header and retain native pick ownership for overlay badges.

Co-authored-by: manjunath22466 <[email protected]>
2026-09-14 17:35:24 -07:00
Bilawal SidhuandPedro Lobato 70dca86bc1 fix(pinokio): disclose incoming changes before Update pulls and installs (#507)
Supersedes #356 by @Lob26, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: Pedro Lobato <[email protected]>
2026-09-14 19:34:23 -05:00
Bilawal SidhuandSurefireStudios b00f835341 ci: pin GitHub Actions to commit SHAs (#505)
Supersedes #309 by @SurefireStudios, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: SurefireStudios <[email protected]>
2026-09-14 19:29:45 -05:00
Bilawal Sidhuanddajiaohuang 1c9a55e2f9 docs: drop two retired CCTV client flags from the env template (#503)
Supersedes #283 by @dajiaohuang, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: dajiaohuang <[email protected]>
2026-09-14 19:26:19 -05:00
Bilawal SidhuandMemel 8702458cf6 perf: subset the icon font and drop the unused second family (#513)
Supersedes #239 by @mml-studio, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: Memel <[email protected]>
2026-09-14 19:21:38 -05:00
Bilawal SidhuandMaher Kurdi da700be77f fix(cctv): bound the Range header and release abandoned camera streams (#512)
Supersedes #253 by @Maher-Reven, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: Maher Kurdi <[email protected]>
2026-09-14 19:17:52 -05:00
Bilawal SidhuandPedro Lobato 428a6d7332 docs(cctv): state what the app does with camera frames (#511)
Supersedes #357 by @Lob26, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: Pedro Lobato <[email protected]>
2026-09-14 19:13:39 -05:00
Bilawal Sidhuanddaikaginza 687edc4da7 test: check the destination preset table as data (#506)
Supersedes #168 by @daikaginza, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: daikaginza <[email protected]>
2026-09-14 19:08:00 -05:00
Bilawal Sidhuandraiyan22 e6deeaeca8 chore: remove the unwired annotation GeoJSON interchange (#502)
Supersedes #293 by @raiyan22, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: raiyan22 <[email protected]>
2026-09-14 19:02:31 -05:00
Bilawal SidhuandVassago DevTeam a1d0a42450 fix(test): resolve the macOS temp root through its symlink in the launcher and preview tests (#501)
Supersedes #301 by @VassagoDevteam, ported onto the current component layout with fixes from review.

Verified before merge: format, package boundaries, unit suite, build, and the browser tracking suite; a browser harness for the change where one applies; adversarial review applied.

Co-authored-by: Vassago DevTeam <[email protected]>
2026-09-14 18:55:24 -05:00
Sameh Khamis bdc026e50a Separate vessel records and acquisition from scene resources 2026-09-14 16:37:41 -07:00
Sameh Khamis 9e84b03c5e refactor: separate military-flight records and rendering 2026-09-14 16:17:06 -07:00
Sameh Khamis 4cb7334da5 refactor: separate civil-flight records and rendering 2026-09-14 15:55:37 -07:00
Sameh Khamis dc81cf585c refactor: separate application UI state owners 2026-09-14 15:29:10 -07:00
Sameh Khamis 2d68841783 refactor: separate layer lifecycle from presentation 2026-09-14 15:04:28 -07:00
Sameh Khamis ac977bd8bc refactor: own application request operations and surface caches 2026-09-14 14:49:04 -07:00
Sameh Khamis 8160ac5fe4 refactor: construct application layers from supplied sources 2026-09-14 14:20:01 -07:00
Sameh Khamis c3de679c61 refactor: supply application catalogs explicitly 2026-09-14 13:56:51 -07:00
Sameh Khamis fb8f9e1c49 refactor: expose portable FIRMS CSV helpers 2026-09-14 12:58:57 -07:00
Rehaan Delmotra ac4a17bebe feat(satellites): flag naked-eye visible passes
- Add Sun position and Earth-shadow checks
- Add visible to pass results
- next_iss_pass prefers a visible pass, falls back with visible: false
2026-09-14 22:50:15 +05:30
Rehaan Delmotra 096f533efe feat(satellites): precise pass rise/set and peak times
- Add satellitePass.js: bisected rise/set, parabolic peak fit
- Add getNextSatellitePass for any loaded catalog satellite
- Keep findNextIssPass as a wrapper
2026-09-14 22:49:48 +05:30
Gustavo Beneduzi bb18e39b7d feat(wind): add ECMWF IFS as a second wind model
Add ECMWF IFS 10 m wind alongside NOAA GFS, selectable at runtime.

The /api/wind proxy becomes a model dispatcher: `?model=gfs|ifs` (default gfs,
unknown → 400), cached per model+cycle+grid. IFS reads the keyless ECMWF Open
Data JSON Lines `.index` (note: `<stem>.index`, not `<grib2>.index`), byte-range
fetches only the `10u`/`10v` messages, decodes them with the same ecCodes WASM
path, and resamples with the existing grid code (ECMWF grids start at lo1=180;
the resampler already wraps columns).

The client layer gains a `model` parameter (setParams/getParams) with a
generation guard so a model switch aborts and refetches exactly once. Registered
as an enabled+options layer with a `model` enum.

Validated end-to-end against the real 2026-09-14 06z IFS cycle on Node 25
(180x91 grid at 2°, 131,040-byte payload, plausible mean |u|/|v|), and GFS
still passes the same check.

Attribution: contains modified Copernicus/ECMWF IFS forecast data, licensed
under CC BY 4.0. Verified: npm test (3412 pass, 0 fail), check:boundaries.
2026-09-14 13:04:35 -03:00
Gustavo Beneduzi deb34ebe35 feat(wind): add keyless NOAA GFS wind layer with animated particles
Add a Wind layer animating the global 10 m wind field from NOAA GFS.

The /api/wind proxy selects the latest available 0.25° cycle, reads its .idx
inventory, byte-range fetches only the UGRD/VGRD 10 m GRIB2 messages (~1 MB
each instead of the whole ~500 MB file), decodes them with ecCodes (WASM),
resamples to a compact grid (1° default), and serves a manifest plus a Float32
U/V payload cached per cycle for an hour (single-flight, last-good on failure).

The client renders nullschool-style particles in a canvas overlay: bilinear
field sampling with longitude wrap, per-frame advection, Cesium camera
projection, and globe-occlusion culling via EllipsoidalOccluder.

Validated end-to-end against the real 2026-09-14 06z cycle on Node 25
(180x91 grid at 2°, 131,040-byte payload, plausible mean |u|/|v|). The WASM
decoder requires Node >=24, which the repo already requires.

Registered as `wind` (token k) with attribution and docs. Verified: npm test
(3412 pass, 0 fail), npm run check:boundaries.
2026-09-14 12:59:18 -03:00
Sameh Khamis 6d5478ffa9 refactor(tools): support an explicit project directory 2026-09-14 07:35:38 -07:00
Sameh Khamis a67bc60a29 refactor(app): share application components and request services 2026-09-13 22:41:11 -07:00
Sameh Khamis 1a1cbadf5b refactor: separate voice controls and configurable Realtime connections 2026-09-13 21:54:51 -07:00
Sameh Khamis 8b36c28b06 refactor: compose configurable geocoding and route services 2026-09-13 21:23:13 -07:00
Sameh Khamis bcba7c5c01 fix: use globe terrain when framing an ALPR camera 2026-09-13 20:42:48 -07:00
Sameh Khamis fe1aa3b6f6 fix: clarify nearby ALPR counts and help locate cameras 2026-09-13 20:35:38 -07:00
Sameh Khamis 7068ee7dc7 Merge current main into ALPR camera candidate 2026-09-13 20:08:54 -07:00
Sameh Khamis 9547658dc7 fix: keep ALPR camera markers stable during rotation 2026-09-13 20:04:38 -07:00
Bilawal Sidhu 41c416e329 docs(cctv): describe the ground-height data plainly (#443)
Follow-up to #433.
2026-09-13 21:54:29 -05:00
12790b36c6 feat(cctv): seven camera packs, semantic labels, terrain-clear monitor planes (#433)
Seven contributed CCTV camera packs (Ontario 511, Fintraffic Finland, DriveBC, TxDOT Texas, Estonia Tallinn + Tarktee, Warendorf, Live Traffic NSW) on a fair per-pack catalog cap; semantic camera labels; monitor planes lifted clear of the terrain from a precomputed, bundled ground-height dataset. Default catalog 800 → 3,446 cameras. Full context in PR #433.

Co-authored-by: sendmebits <[email protected]>
Co-authored-by: avocadoAgent <[email protected]>
Co-authored-by: Alex Harvey <[email protected]>
Co-authored-by: Jason Meredith <[email protected]>
Co-authored-by: Daniel Smith <[email protected]>
Co-authored-by: Vladimir Sobolev <[email protected]>
Co-authored-by: Matthias Schneider <[email protected]>
Co-authored-by: Cyber Knight <[email protected]>
Co-authored-by: NovaSoft Australia <[email protected]>
2026-09-13 21:48:33 -05:00
Sameh Khamis 211eb70eed Merge remote-tracking branch 'origin/main' into refactor/alpr-camera-source
# Conflicts:
#	package.json
#	scripts/format-scope.json
#	scripts/package-boundaries.json
2026-09-13 19:21:57 -07:00
Sameh Khamis e59282dc9c refactor(maps): separate source factories and scene coordination 2026-09-13 18:59:29 -07:00
Sameh Khamis 3ce5d2e454 refactor(geography): separate cable sources and bundled lookup modules 2026-09-13 18:36:33 -07:00
Sameh Khamis 41b3cc1705 refactor(radio): separate directory and playback components 2026-09-13 17:28:35 -07:00
Tom-NeverwinterandBilawal Sidhu 4374c0fa60 feat: add mapped ALPR cameras with bounded source loading
Adapt the ALPR camera contribution to reusable layer components, retaining source attribution, bounded queries, selection and voice controls.

Co-authored-by: Bilawal Sidhu <[email protected]>
2026-09-13 17:21:42 -07:00
Sameh Khamis 9f0159343e docs: describe infrastructure disable and rebuild lifecycle 2026-09-13 16:26:08 -07:00
Sameh Khamis 519bc6c362 refactor(cctv): separate camera source and scene components 2026-09-13 15:02:32 -07:00
Sameh Khamis bf6c401e27 feat(ui): toggle rendered frame rate with backtick 2026-09-13 14:51:24 -07:00
Sameh Khamis 0732f8f95c fix(traffic): recover road loading after city navigation 2026-09-13 14:47:26 -07:00
Sameh Khamis 903fe6ba37 refactor: separate traffic and bikeshare components 2026-09-13 14:10:38 -07:00
Sameh Khamis 3b77277883 refactor: separate installation and proximity context components 2026-09-13 13:36:32 -07:00
Sameh Khamis ce0568983a refactor(space): separate satellite and mission layer components 2026-09-13 13:12:34 -07:00
Sameh Khamis 6a9f13eab8 refactor(fires): separate source, rendering and interaction components 2026-09-13 12:48:26 -07:00
Sameh Khamis d1d938babe refactor: separate earthquake source and display ownership 2026-09-13 12:14:44 -07:00