Commit Graph
1596 Commits
Author SHA1 Message Date
ulihhhhandClaude Opus 5.5 93ea088f45 docs(gbfs): note that overflow bikes can exceed dock capacity
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 42e45e8fbe docs(changelog): add the Spanish city bike systems entry
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 5508caa174 docs: credit and document the Spanish city bike systems
- dataCredits `gbfs`: names the seven PBSC operators, with BiciMAD's
  required "Powered by EMT de Madrid" linking to emtmadrid.es.
- dataCredits `jcdecaux-gbfs`: adds Valenbisi and Sevici.
- DATA_SOURCES.md: a BiciMAD row (Madrid's open-data catalogue publishes
  the feed under EMT's terms, attribution required), one row for the other
  six PBSC feeds (no licence published; attribution to the operator), and
  the JCDecaux row widened to Valencia and Seville.
- CURRENT-STATE.md: the Bikeshare row, and the underscore and
  geofenced-capacity rules in "GBFS upstream bounds".

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 23df776374 feat(bikeshare): add nine Spanish city bike systems
Adds the station-based public bike systems of seven Spanish cities on
PBSC and two on JCDecaux, 1,843 stations in all (live feeds, 2026-10-17):

- PBSC (`<city>.publicbikesystem.net`, GBFS v2 like Bicing): BiciMAD
  (Madrid), Bizi Zaragoza, BIKI (Valladolid), BiciCoruña, Dbizi
  (Donostia-San Sebastián), Bilbao Bizi and BicinRivas (Rivas-Vaciamadrid).
- JCDecaux (`api.cyclocity.fr/contracts/…`, like Lillestrøm): Valenbisi
  (Valencia) and Sevici (Seville).

Both hosts are already allowed by the proxy. Every system uses a 40 km
load radius; the farthest station is 11.7 km from its centre (BiciMAD).
The radius also keeps out what two feeds list away from their city:
Sevici's workshop at (0,0) and lab in Madrid, and BiciCoruña's planned
stations with no position yet.

spainCitiesSystems.test.mjs checks the registry and proxy for each feed,
that the outermost live stations activate their system and sit inside
its radius, that central Madrid activates BiciMAD and BicinRivas, that
the far-away stations are not loaded through the real ingestion path,
and that JCDecaux names arrive without underscores and PBSC capacities
as docks.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 53cda29be4 fix(gbfs): count docks, not PBSC's geofenced area, as station capacity
PBSC adds the bikes a station accepts in the geofenced area around its
docks to `capacity`, and reports that part as `geofenced_capacity`, which
is not a GBFS field. Bilbao Bizi publishes 39 docks as capacity 839 with
geofenced_capacity 800, so its stations would read as nearly empty: red,
drawn at maximum size, and carded "39 avail · 0 docks · 839 cap".
BiciMAD (671 of 678 stations, about twice the docks) and Dbizi (11 of 70)
do the same.

The shared parser now reads `capacity − geofenced_capacity` when the
extension is present and no larger than the total, so the layer, its
colour ratio and get_bike_share all see the docks. No registered system
changes: none of the 52 publishes a geofenced capacity above 0 (live
feeds, 2026-10-17, all 13,397 capacities identical).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
ulihhhhandClaude Opus 5.5 ee686a3207 fix(gbfs): read underscores in station names as word breaks
JCDecaux's Spanish contracts prefix every station name with "_", and
Valenbisi joins its words with it ("_PLAZA_MUSICO_LOPEZ_CHAVARRI"), so
the card and HUD would show the raw identifier. The shared parser now
reads a run of underscores, with the spaces around it, as one word break
and trims the ends. It applies to `name`, the `short_name` fallback and
GBFS v3 localized names, so the layer and get_bike_share both read it.

No registered system changes: run over all 52 live station_information
feeds on 2026-10-17, the old and new parsers give identical names for
all 13,397 stations. Other spacing stays as the operator published it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 22:33:57 +01:00
quanticsoul4772 661e1d7fa3 Merge remote-tracking branch 'origin/main' into feat/tools-area-breakdowns 2026-10-17 14:32:52 -07:00
quanticsoul4772andClaude Opus 5.5 aec4f67ca9 feat(tools): count aircraft in an area by airline
OpenSky, the default civil feed, reports no operator, so group_by: operator
said "no operator reported". aircraft_in_area now also takes
group_by: 'airline', read from the ICAO designator in each callsign: three
letters followed by a flight number that starts with a digit (SWA1234,
UAL12A). Registrations used as callsigns (N123AB) count as unknown. Rows are
unchanged; the designator is derived for the breakdown only.

Live, Texas: "785 aircraft ...; most by airline: AAL (89), SWA (65), UAL (52);
283 unknown."

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 14:32:46 -07:00
Sameh Khamis dd079db9b3 Merge pull request #1101 from VG31OP/fix/tle-catalog-matching
fix(satellites): reject TLE pairs with mismatched catalog numbers (#906, #936)
2026-10-17 14:00:30 -07:00
Sameh Khamis df5ad4ca4a Pair TLE lines through the shared decoder and add the changelog fragment 2026-10-17 13:46:00 -07:00
Sameh Khamis 155f5165d5 Merge branch 'main' into fix/tle-catalog-matching 2026-10-17 13:45:09 -07:00
Sameh Khamis 84da1b9606 Merge pull request #287 from onionviolet/codex/shared-geodesy
refactor(geo): share great-circle distance utility
2026-10-17 13:44:03 -07:00
Sameh Khamis aa52ab2eca Merge branch 'main' into codex/shared-geodesy 2026-10-17 13:37:28 -07:00
Sameh Khamis 5ce56bddd4 Merge pull request #767 from hneogy/fix/alpha5-norad-id
fix(satellites): decode Alpha-5 catalog numbers in the layer and the satellite tools
2026-10-17 13:31:26 -07:00
Sameh Khamis 6a7935c49e Merge branch 'main' into fix/alpha5-norad-id 2026-10-17 13:25:19 -07:00
monwiss 743ed639e5 fix(dev): stop the dev server watching .gev-cache and .gev-logs (#761)
Providers write cache files and logs into .gev-cache and .gev-logs while the app runs. A serve-only standalone plugin adds both to server.watch.ignored, so the dev watcher no longer stats them; source changes still reload.
2026-10-17 12:18:32 -07:00
Daniel Slay 5a87fb3b15 docs(changelog): credit the stills aspect fix 2026-10-17 15:15:09 -04:00
Nurstar 2f4b84600b fix(deps): bump dompurify, sharp and source-map-js for disclosed advisories (#1094)
Update DOMPurify 3.4.15 -> 3.4.17, Sharp 0.35.4 -> 0.35.5 (with its @img platform packages) and source-map-js 1.2.1 -> 1.2.2 in package-lock.json for GHSA-p98j-92pf-mc4p, GHSA-6688-9rhm-gjv2, GHSA-wq5f-xc86-pv6w and GHSA-68fv-2mgg-jv7q. npm audit reports no vulnerabilities.
2026-10-17 12:13:47 -07:00
Daniel Slay 548e7f23d1 docs(changelog): credit the live camera color 2026-10-17 15:10:49 -04:00
Sameh Khamis 200a83465b Merge pull request #839 from dajiaohuang/docs/fix-adsbdb-cache-ttl
docs: correct ADSBDB cache TTL note
2026-10-17 12:07:42 -07:00
Sameh Khamis 0977cfc9cb Merge branch 'main' into docs/fix-adsbdb-cache-ttl 2026-10-17 12:02:43 -07:00
Sameh Khamis 710f2e9710 Merge pull request #1196 from HyperionBurn/docs/qa-gate-npm-alias-list
docs: list every npm alias for the qa gates
2026-10-17 12:02:40 -07:00
Sameh Khamis eb10f7ab0c Add the changelog fragment and document the shared distance contract 2026-10-17 11:43:23 -07:00
Sameh Khamis 64d7ed3c61 Merge branch 'main' into codex/shared-geodesy 2026-10-17 11:42:58 -07:00
Sameh Khamis 7ec84ac316 Decode catalog numbers strictly and add the changelog fragment
Route tleCatalogNumber() and noradIdFromSatnum() through one decoder that
accepts only plain digits or a valid Alpha-5 field. parseInt and Number()
read '2554A', '255 4', '-1234', '0x1F0', '1.5' and blank as numbers; they
now return null/NaN. Digit satnums of any length still decode, so OMM
satrecs numbered past 99999 keep working.

Add a layer test that several Alpha-5 satellites survive ingestion dedupe,
the changelog fragment for #767, and note in CURRENT-STATE that this is
Alpha-5 TLE compatibility and malformed fields are rejected.
2026-10-17 11:40:30 -07:00
Sameh Khamis 6ae854c121 Merge branch 'main' into fix/alpha5-norad-id
# Conflicts:
#	src/layers/satellites/ingestion.js
2026-10-17 11:36:21 -07:00
Sameh Khamis 761953b0bf Correct the remaining permanent-cache comments
The adsbdb proxy keeps successful and 404 answers for 24 hours; two policy comments and the provider's doc comment still said forever.
2026-10-17 11:30:46 -07:00
Sameh Khamis 7828f69038 Name the two QA gates CI runs
The CI callout said no qa-*.mjs gate runs in CI; the workflow runs the Street Level fixtures and panel-resize gates against the built preview.
2026-10-17 11:30:38 -07:00
Sameh Khamis 84cd4d7f99 Merge branch 'main' into docs/fix-adsbdb-cache-ttl 2026-10-17 11:30:30 -07:00
Sameh Khamis 7a63afe659 Merge branch 'main' into docs/qa-gate-npm-alias-list 2026-10-17 11:30:29 -07:00
Kevin Rajan daff74fe04 test(navigation): read trackable nouns from canonical packet owner
World Packet #880 removes the duplicate tracking table from gevActions; the Cockpit refusal source-scan test should inspect the actual exported source of truth instead of assuming the previous file position. Fix failing Node 24 exact-head CI without duplicating runtime definitions.
2026-10-17 13:17:43 -05:00
Daniel Slay a1bd7ff37c feat(cctv): draw stills at source aspect, pillarboxed 2026-10-17 14:14:55 -04:00
Daniel Slay 672191497a feat(cctv): color live video cameras apart from stills 2026-10-17 14:14:55 -04:00
Kevin Rajan 1c4c903ac6 fix(agent): align World Packet with reviewer feedback and voice parity
Reuse one context/contacts/tracking owner in voice and World Packet. Compare voice outputs after stripping presentation fields; remove the unconsumed fingerprint API pending an actual caller. Document the exported packet boundary and reject null options safely.

Review guidance: asturksever on origin #880; Windows parity diagnosis by quanticsoul4772. Existing source ownership retained.
2026-10-17 13:12:46 -05:00
Daniel Slay c09865e582 feat(cctv): FL511 Florida camera pack (stills, opt-in) 2026-10-17 13:50:33 -04:00
Said Turksever 73aec2e6b2 Merge pull request #867 from djabhi31/test/earthquake-records-validation
test(earthquakes): add unit test coverage for earthquake snapshot normalization and space requests
2026-10-17 17:28:20 +01:00
Said Turksever d64028d7ff Merge branch 'main' into test/earthquake-records-validation 2026-10-17 17:15:39 +01:00
Said Turksever 30976f917e Merge pull request #1186 from rudycelekli/contrib/gods-next-36-launch-null-coordinates-20261016
fix(launches): keep null pad and landing coordinates unknown instead of 0
2026-10-17 17:14:19 +01:00
wasif 243e84150c docs: list every npm alias for the qa gates
CONTRIBUTING.md said "Only a couple (`qa:map-source-tray`, `qa:transit`) have
an `npm run` alias". package.json defines five: `qa:map-source-tray`,
`qa:panel-resize`, `qa:street-level`, `qa:street-level:fixtures` and
`qa:transit`.

The two missing names are not incidental -- .github/workflows/ci.yml already
invokes `npm run qa:street-level:fixtures` and `npm run qa:panel-resize`, so a
contributor reading the guide is told to reach for `node scripts/<gate>.mjs`
for gates the project itself runs through npm.

Verified against package.json scripts and .github/workflows/ci.yml on main
(1df2a27).
2026-10-17 19:53:02 +04:00
VG31OP 40442ab854 style: fix whitespace formatting in tle.js and space.test.mjs 2026-10-17 17:01:13 +05:30
Kevin Rajan 83fc895442 fix(agent): own portable i18n marker in World Packet boundary 2026-10-17 05:14:43 -05:00
Kevin Rajan e4f526415d style(agent): apply pinned Prettier output and remove temporary probe
Restore the main branch formatter unchanged and use byte-exact Prettier 3.9.6 formatting on the World Packet parity regressions.
2026-10-17 05:12:15 -05:00
Kevin Rajan f4a4df5044 test(agent): retrieve exact pinned formatter output for #880 (temporary) 2026-10-17 05:10:37 -05:00
Kevin Rajan 3e23b4cd39 style(agent): wrap long test declarations to Prettier policy 2026-10-17 05:08:15 -05:00
Kevin Rajan cefbad3c2a refactor(agent): preserve compact voice contract in World Packet extraction
Reconcile #880 with current main. Delegate the view-state builder while keeping enabled-only layers, disabledLayerCount, provenance, context semantics, and existing voice behavior. Add parity and roster-read regressions; retain package export, boundaries and changelog fragment.

Preserve original GEV voice, layer and packet contributor credit.
2026-10-17 05:04:55 -05:00
Kevin Rajan c1dd4171db fix(ui): verify real PanelChrome rail ownership of compact Radio
Carry reviewed #816 onto current main without conflicts; preserve i18n updates, replace obsolete changelog edit with a fragment, and add a constructor-wiring regression alongside the owner and rail tests.

Credit: raysung-2026 (report), asturksever (review), quanticsoul4772 (Windows diagnosis).
2026-10-17 04:56:07 -05:00
Sunilanddaikaginza c7ff33ac2e fix(server): admit reverse-proxied same-origin terrain requests
Review follow-up on #975. The shared same-site gate refuses any forwarding header, which is right for routes that spend a key, but terrain is keyless and needed for rendering: behind the reverse proxy the README documents, every /api/terrain/heights chunk got 403 and fell back to the geoid. Terrain now uses admitSameSiteKeyless, which keeps the Sec-Fetch-Site and exact-Origin checks (comparing Origin against a single X-Forwarded-Proto scheme) but does not refuse forwarding headers. The shared admitSameSite gate is unchanged for every other route. The changelog entry moves to changelog.d/975-terrain-cross-site-gate.md.

Co-authored-by: daikaginza <[email protected]>
2026-10-17 14:36:24 +05:30
Sunil56224972 77768e9fff Merge remote-tracking branch 'upstream/main' into fix/terrain-same-site-gate-on-686
# Conflicts:
#	CHANGELOG.md
#	docs/CURRENT-STATE.md
#	scripts/format-scope.json
2026-10-17 14:32:33 +05:30
Sunil56224972 5d0c367315 Merge remote-tracking branch 'upstream/pr-686' into fix/terrain-same-site-gate-on-686
# Conflicts:
#	CHANGELOG.md
2026-10-17 14:30:09 +05:30
Rudy Celekli 4690a5bea9 docs(launches): describe unknown-coordinate and flight labels
Signed-off-by: Rudy Celekli <[email protected]>
2026-10-16 23:20:07 -04:00