Commit Graph
100 Commits
Author SHA1 Message Date
Sameh Khamis 03201451c0 Merge pull request #1463 from bilawalsidhu/sameh/security-audit-fixes
chore(deps): update Vite and Puppeteer, and remove the unused screenshot helper
2026-10-28 22:44:07 -07:00
Sameh Khamis f2c6ff082d Merge pull request #1459 from bilawalsidhu/sameh/hud-google-lookups
Cut the Google requests the HUD summary makes on its own
2026-10-28 17:43:25 -07:00
Sameh Khamis 7914370b14 Merge branch 'main' into sameh/hud-google-lookups 2026-10-28 17:37:20 -07:00
Sameh Khamis 72eb3fdc73 Merge pull request #1439 from bilawalsidhu/release/v0.3.0
chore(release): prepare v0.3.0
2026-10-27 22:17:54 -07:00
Sameh Khamis 15de9d738c fix(i18n): mark style labels without loading the catalogs (#1421)
The style shaders and visualPresets imported msg() from src/i18n/index.js,
which loads every locale catalog. The share-view codec reads the styles'
defaults, so a server bundling the codec carried about 0.9 MB of
translations it never uses. They now import the catalog-free marker, as
other portable modules do; the codec's bundle drops from about 1 MB to
130 KB.
2026-10-26 16:54:01 -07:00
Sameh Khamis 6152f9f311 fix(search): keep a missed location query in the field so it can be corrected (#1420)
A location search that found nothing or failed now keeps its query, the open field and focus (text selected), and shows a persistent role=alert message under the search row instead of a toast. Typing, a new search or closing the emptied field clears it. HAL-727.
2026-10-26 16:44:34 -07:00
Sameh Khamis 3d9f153bc0 feat(share): export the share-view codec and link-path helpers (#1419)
* feat(share): export the share-view codec for host servers

Add `@gods-eye-view/core/share/view-codec` (src/share/viewCodec.js) as a
package export with its own boundary group. The codec is pure (no DOM, no
Cesium, no external dependencies), so a host's server can decode a
/share/<code> link, for example to describe the view in link previews.

* feat(share): export the share-link address helpers

Add `@gods-eye-view/core/share/link-path` (src/share/shareLinkPath.js), so a
host's server reads /share/<code> addresses the way the app does.
2026-10-26 16:20:23 -07:00
Sameh Khamis da02fd8645 feat(share): short /share/<code> links with a compact versioned view format (#1418)
* feat(share): add compact versioned share-view codec

Add a standalone codec for `#s=<base64url>` share links: a version byte
followed by protobuf-style tag-length-value fields. Settings equal to
their default are omitted and refilled from the same table on decode;
unknown fields are skipped by wire type, so new fields never break
older apps. Views are a place (camera) or a thing (an aircraft,
military aircraft, vessel or satellite to follow, with camera offset
and last-known fix); an unknown kind falls back to the camera.

The decoder bounds its input and rejects malformed payloads with a
reason instead of throwing. A converter maps the long form's parsed
state to and from the codec state; the long form is unchanged.

* fix(share): tighten codec decoding after review

Unknown detection mode and allocation names now fall back to their
defaults instead of reaching the lenient long-form migration. Future
panel values and style-parameter tokens are skipped rather than applied
or rejected, and layer options are accepted only under their owner
layer. Wrap longitudes before scaling, normalize negative zero, reuse
the layer-state tracking ID grammar, and align the format doc with the
decoder.

* feat(share): let a host share the link its own way

ShareLinkManager.buildLink() returns the current share link without
copying it, and copyLink() now copies exactly that. The share button
passes the link to an optional services.shareLink(url), which resolves
to 'shared', 'copied', 'cancelled' or false; 'cancelled' shows no toast
and 'shared' shows the new "Link shared" (es, ru, zh-CN). Without the
service the button copies as before.

* feat(share): open and make short /share/<code> links

The share button now makes `<app>/share/<code>` links with the compact
share-view code, and the app opens them at start-up through the same
restore pipeline as long links. Once the app next writes the address, the
share path is replaced (no new history entry) by the app's own address and
the live long-form hash, so a reload follows the live view. A host can pass
the code as `initialShareCode` instead. A code that fails to decode restores
nothing and shows "This share link can't be opened".

The code gains a trailing CRC-8 check byte, so any single mistyped
character is rejected instead of opening a different view. Thing views no
longer store a camera: it is derived from the entity's last-known fix and
the follow offset on a sphere, the entity kind is implied by the id's
field, and the followed entity's layer bit is implied; an aircraft followed
from the app's own camera is a 42-character code. The `#s=` hash form is
gone.

While the camera follows an aircraft, military aircraft or satellite, the
link is a thing view with the camera's offset and the entity's position.
Opening one turns the layer on and follows the entity through the existing
shared-follow restore, then swings the camera round to the shared offset; a
vessel view selects the vessel once the vessel feed has it. If the entity
is not reporting within its window, the view stays at its last-known fix
and says so. The panel and style-parameter tables now come from the codec,
and a host share hook that returns a plain value or throws still gets a
toast.

* fix(share): encode style settings against the style's own look

Settings a style applies when selected (bloom, sharpen, HUD, detection,
celestial ring and the style's shader parameters) now default, per field,
to what that style applies in a fresh session, read from the tables the
app applies (the first-load baseline, the style presets and the shader
defaults). The encoder compares against the view's style and the decoder
fills omitted settings from the decoded style, so a view that keeps its
style's look costs only its camera and style. The previous defaults did not
match a fresh session (sharpen, HUD and detection were off), so every link
paid for them, and a style's own shader parameters were always written.

A test pins the per-style defaults as frozen v1 meanings. A followed
aircraft in Noir is now 44 characters and the real long-link example 39.

* docs: changelog for #1418
2026-10-26 15:31:51 -07:00
Sameh Khamis fefd5cdcf1 fix(layers): make Clear All clear the saved and shared layer selection (#1417)
* fix(layers): make Clear All clear the saved and shared layer selection

After Clear All every layer control was off, but the share URL could keep
listing layers (for example l=e.f) and a reload switched them back on.

The URL and local preferences are written from the committed layer
state, which only explicit visibility changes update. Clear All issued an
explicit OFF only for layers it found on at the start of the batch and
whose turn was not superseded. A layer already off for a passive reason
(isolated by Contacts or another context mode, or released by Contacts'
own teardown while the batch ran) never received one, so it stayed in the
committed state. Clear All also discards the context snapshot that would
have restored those layers, leaving the screen and the URL out of step.

Clear All now publishes the set of layers still on once its batch
settles, and the layer-state coordinator commits that selection: every
saved layer not in it is dropped and its passive restore is cancelled,
while a layer a newer explicit request turned back on is kept. A context
restore interrupted by Clear All no longer brings its snapshot back after
Contacts settles.

* docs: changelog for #1417
2026-10-26 14:07:58 -07:00
Sameh Khamis b7ece1d4d1 fix(share): restore a share link opened in an already-open tab (#1416)
* fix(share): restore a share link opened by hash navigation

Opening a different share link in an already-open tab (pasting it into
the address bar, following a link, or Back/Forward) changed the URL but
left the camera, visual style, map, panels and layers on the old view
until a reload.

The share manager now listens for hashchange and popstate. A new hash
that parses as a share and differs from the last hash the app read or
wrote runs the start-up restore pipeline: lane authority is reserved, URL
writes are held (including a pending debounced write of the old view),
the camera restore takes a new navigation generation, and the layer
coordinator replaces any in-flight layer restore with the new share's
layers through the passive share origin. A newer navigation supersedes an
older restore end to end; only the newest one releases URL writes. The
app's own replaceState writes never restore. Listeners are removed on
destroy.

Returning to the Normal style and resetting an already-active preset now
also apply when a share is restored after start-up, so the result matches
a fresh load of the same link.

* docs: changelog for #1416
2026-10-26 13:56:19 -07:00
Sameh Khamis 301bc2e0b3 feat(voice): add preview and settings panel (#1299)
Add the shared Voice Preview and Settings panel with browser-local preferences, inactivity controls and visible cost warnings.

Contribution by @manjunath22466.
2026-10-26 09:03:04 -07:00
Sameh Khamis 2b2dad5bbe Harden Vite fs.deny for local logs and cache (#948)
Deny local logs, cache, and repository build output from Vite development file serving.

Contribution by @blowing-a-raspberry.
2026-10-25 19:00:20 -07:00
Sameh Khamis 76311e36d4 feat(docker): add a HEALTHCHECK to the image (#1394)
Report Docker application health using a bounded loopback HTTP probe.

Contribution by @14traits.
2026-10-25 17:46:52 -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
Sameh Khamis 5103ff672c fix(gbfs): exclude stations with invalid coordinates (#1232)
Reject invalid bike-share station coordinates while preserving genuine zero coordinates and numeric aliases.

Contribution by @Bortlesboat.
2026-10-25 16:47:51 -07:00
Sameh Khamis 5ae22ac333 fix(awareness): wrap north-bound bearings (#1390)
Wrap awareness bearing and course labels at north and register the formatting helper in package boundaries.

Contribution by @rudycelekli.
2026-10-25 16:21:50 -07:00
Sameh Khamis 8886e063e6 fix(local-adsb): show a 359.7° track as TRK 0°, not TRK 360° (#1396)
Wrap rounded local ADS-B track labels at north.

Contribution by @rudycelekli.
2026-10-25 14:14:28 -07:00
Sameh Khamis 405c7f0d20 fix(cockpit): show wind from 359.6° as 0°, not 360° (#1389)
Wrap rounded cockpit wind direction to zero degrees at north.

Contribution by @rudycelekli.
2026-10-25 12:30:37 -07:00
Sameh Khamis db74129eb0 fix(draw): show a 999.6 m line as 1.0 km, not 1000 m (#1388)
Select drawn-line distance units after rounding metres.

Contribution by @rudycelekli.
2026-10-25 12:26:14 -07:00
Sameh Khamis 5b6c52437e fix(awareness): show a 999.6 m contact as 1.0 km, not 1000 m (#1387)
Choose awareness distance units after rounding so nearby contacts never display as 1000 metres.

Contribution by @rudycelekli.
2026-10-25 09:07:36 -07:00
Sameh Khamis 81af549ad7 fix(directions): show a 996 m leg as 1.0 km, not 1000 m (#1386)
Choose route distance units after rounding so near-kilometre legs display in kilometres.

Contribution by @rudycelekli.
2026-10-25 09:01:26 -07:00
Sameh Khamis 3f9b44ecc8 fix(directions): show a 59.6-second leg as 1 min, not 60 s (#1385)
Choose route duration units after rounding so near-minute legs display as one minute.

Contribution by @rudycelekli.
2026-10-25 08:55:17 -07:00
Sameh Khamis f6e7f63a63 fix(voice): keep FIRMS and ALPR entity labels English in voice data (#1207)
Keep FIRMS and ALPR entity data labels in English and localize their presentation.

Contribution by @daikaginza.
2026-10-25 08:21:25 -07:00
Sameh Khamis abd81155f9 Merge pull request #1379 from bilawalsidhu/perf/aircraft-label-candidates
Reduce repeated work in aircraft detection candidates
2026-10-24 23:48:30 -07:00
Sameh Khamis 8dec9eaa10 perf(terrain): evict from the front of the point cache instead of sorting it (#1326)
Preserve oldest-fetch terrain cache eviction without sorting the full cache on each overflow.

Contribution by @daikaginza.
2026-10-24 23:27:37 -07:00
Sameh Khamis 86d52a0f7a fix(cyclones): label NHC classification codes by their published meanings (#1349)
Correct NHC cyclone classification labels and document their published meanings.

Contribution by @rudycelekli.
2026-10-24 23:21:04 -07:00
Sameh Khamis 6b458c897d Merge pull request #1378 from bilawalsidhu/fix/touch-zoom-aircraft-performance
Improve touch zoom and aircraft update performance
2026-10-24 22:55:14 -07:00
Sameh Khamis a888e0fa22 Merge pull request #1353 from rudycelekli/fix/transit-ninety-second-age
Correct the transit report-age label and document its rounding rule.
2026-10-24 22:46:45 -07:00
Sameh Khamis f2ee3c984f Merge pull request #1352 from rudycelekli/fix/cockpit-destination-heading
Reviewed display correction with its runtime documentation update.
2026-10-24 22:33:05 -07:00
Sameh Khamis 5d23a874b1 Merge pull request #1354 from rudycelekli/fix/firms-frp-ten-megawatts
Reviewed display correction with its runtime documentation update.
2026-10-24 22:27:34 -07:00
Sameh Khamis 7a8ba29186 Merge pull request #1351 from rudycelekli/fix/ais-static-keeps-motion
fix(ais): keep a tracked vessel's motion when static data arrives
2026-10-24 21:45:40 -07:00
Sameh Khamis 2fc9ca8516 Merge pull request #1350 from rudycelekli/fix/cyclone-movement-knots
fix(cyclones): convert NHC movement speed from mph to knots
2026-10-24 21:39:26 -07:00
Sameh Khamis 19ed82af07 Merge branch 'main' into fix/cyclone-movement-knots 2026-10-24 21:33:20 -07:00
Sameh Khamis 88803f16e8 Merge pull request #1303 from quanticsoul4772/upstream/wind-stale
fix(tools): flag stale wind forecasts in get_wind
2026-10-24 21:31:01 -07:00
Sameh Khamis 4ba0a1b57f Merge branch 'main' into upstream/wind-stale 2026-10-24 21:26:18 -07:00
Sameh Khamis 2a48e1d186 Merge pull request #1244 from KnottyDyes/fix/terrain-test-cache-isolation
test(terrain): give every terrain-heights proxy in the bounds tests its own cache
2026-10-24 21:26:11 -07:00
Sameh Khamis aa33bb5ec3 Merge branch 'main' into fix/terrain-test-cache-isolation 2026-10-24 21:20:50 -07: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
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
Sameh Khamis d48b9c4df9 Merge pull request #1325 from bilawalsidhu/feat/phone-drawer
feat(ui): phone layout with a bottom tab bar and one panel sheet at a time
2026-10-22 22:26:49 -07:00
Sameh Khamis 224745bd0a Merge pull request #1321 from bilawalsidhu/chore/dead-code-cleanup
chore: remove dead code across the repository
2026-10-22 20:54:09 -07:00
Sameh Khamis 7be5937fc3 Merge pull request #1317 from bilawalsidhu/fix/provider-response-hardening
Harden provider response handling and camera source validation
2026-10-21 16:18:50 -07:00
Sameh Khamis 713285b554 Merge pull request #1205 from manjunath22466/fix/cctv-tool-routing
fix(voice): report actual cctv toggle results
2026-10-20 10:15:33 -07:00
Sameh Khamis 23feb16b0f Merge pull request #1235 from manjunath22466/fix/location-resolution
fix(analyst): disambiguate region names and retain boundary provenance
2026-10-20 10:05:27 -07:00
Sameh Khamis 93c1f6cd45 Merge pull request #1220 from manjunath22466/codex/openai-typed-send-rejection
fix replies after rejected openai typed commands
2026-10-19 14:06:19 -07:00
Sameh Khamis 2f171c7d79 Merge pull request #872 from manjunath22466/feat/gemini-voice
add Gemini Live as an alternative voice provider
2026-10-19 13:10:47 -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 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 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 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 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 1df2a272cf Merge pull request #1111 from Rohilalala/fix/map-fallback-retry
fix(maps): retry the real imagery and terrain provider after a fallback
2026-10-16 17:16:52 -07:00
Sameh Khamis cc84ab11b1 Merge pull request #1071 from cj-vana/feature/geo-uri-search
feat(search): resolve two-dimensional geo URIs offline
2026-10-16 17:10:53 -07:00
Sameh Khamis 79176667b0 Merge pull request #973 from Sunil56224972/fix/tomtom-cross-site-gate
fix(traffic): refuse cross-site requests before they spend the TomTom budget
2026-10-16 17:01:31 -07:00
Sameh Khamis e15b169e3d Merge pull request #1135 from djabhi31/fix/director-scene-results-971
fix(director): keep scene results and save status accurate (#971)
2026-10-16 16:10:16 -07:00
Sameh Khamis 9898058fa5 Merge pull request #1142 from ariannamethod/codex/fix-antimeridian-polygon-containment
fix(perimeters): handle antimeridian queries and incident card anchors
2026-10-16 16:04:17 -07:00
Sameh Khamis 2189e9c512 Merge pull request #1136 from djabhi31/test/rocket-launches-edge-cases
test(launches): add finiteCoordinate and stage normalization edge-case coverage (#938)
2026-10-16 15:58:26 -07:00
Sameh Khamis 5a79a4d246 Merge pull request #1173 from Rohilalala/fix/geo-distance-dateline
fix(geo): wrap longitude differences across the antimeridian
2026-10-16 15:46:27 -07:00
Sameh Khamis bd4f5a6af9 Merge pull request #1172 from omerbberk/fix/cctv-missing-numbers
fix(cctv): keep missing numbers unknown instead of reading them as zero
2026-10-16 15:40:39 -07:00
Sameh Khamis ec7823daad Merge pull request #1171 from Rohilalala/fix/director-goto-shot
fix(director): land on the requested shot
2026-10-16 14:59:40 -07:00
Sameh Khamis e5ee6696b1 Merge pull request #1097 from Rohilalala/fix/overpass-failure-phrases-in-data
fix(overpass): read failure phrases from the remark, not element tags
2026-10-16 14:48:24 -07:00
Sameh Khamis bb00a13b03 Merge pull request #1096 from Rohilalala/fix/military-sticky-track
fix(military): hold the last track and speed when a poll omits them
2026-10-16 14:43:59 -07:00
Sameh Khamis e2274bbf0c Merge pull request #634 from cliph/feat/transit-ontario
Add nine Ontario transit feeds, with per-feed mode and route naming
2026-10-15 19:19:49 -07:00
Sameh Khamis 978b8e9c88 Merge pull request #452 from ch-bas/feat/cctv-model-spec-enrichment
feat(cctv): enrich identified cameras with datasheet FOV + specs
2026-10-15 19:14:04 -07:00
Sameh Khamis ec844c2ca2 Merge pull request #359 from MiguelGFerreira/feat/brazil-gbfs-cities
feat: add seven Brazilian Bike Itaú cities to the GBFS bikeshare layer
2026-10-15 19:08:49 -07:00
Sameh Khamis f91dfc4b8f Merge pull request #636 from cliph/feat/webapp-icons
feat: ship a web app manifest and home-screen icons
2026-10-15 19:03:40 -07:00
Sameh Khamis 8202230683 Merge pull request #644 from ch-bas/feat/wsdot-camera-pack
feat(cctv): WSDOT highway camera source pack (Washington State)
2026-10-15 16:21:45 -07:00
Sameh Khamis ffc6e0f84f Merge pull request #595 from ulihhhh/feature/catalonia-cctv-cameras
feat(cctv): add the Open Catalonia camera pack
2026-10-15 16:16:42 -07:00
Sameh Khamis 584a95fbec Merge pull request #607 from Reloded/feat/lithuania-cctv
feat(cctv): add Lithuania Eismoinfo road cameras
2026-10-15 16:10:15 -07:00
Sameh Khamis 28501ddee3 Merge pull request #645 from ch-bas/feat/king-county-camera-pack
feat(cctv): King County road camera source pack (Washington State)
2026-10-15 16:03:02 -07:00
Sameh Khamis 4deafbb589 Merge pull request #640 from cliph/feat/cctv-toronto
feat(cctv): add the City of Toronto RESCU camera pack
2026-10-15 15:55:44 -07:00
Sameh Khamis 79b9de07d8 Merge pull request #208 from SM-26/docker-support
feat: add a Docker install path
2026-10-15 14:10:36 -07:00
Sameh Khamis a5a361f79e Merge pull request #568 from rileygramlich/feat/aqhi
feat(air-quality): add the Air quality layer to the Weather group
2026-10-15 13:59:17 -07:00
Sameh Khamis c6f92da962 Merge pull request #641 from cliph/feat/bikeshare-toronto-and-failure-fix
feat(bikeshare): add Bike Share Toronto, and fix the layer-wide failure it exposes
2026-10-15 13:47:08 -07:00
Sameh Khamis 1710c83463 Merge pull request #581 from Mikejr314159/fix/cap-remaining-upstream-reads
fix(providers): bound the remaining upstream body reads
2026-10-15 13:34:45 -07:00
Sameh Khamis 614b207c32 Merge pull request #937 from daikaginza/fix/overpass-cache-tracks-upstream
fix(overpass): do not serve cached answers from a different upstream (#932)
2026-10-15 11:10:36 -07:00
Sameh Khamis 37dfb79e32 Merge pull request #1082 from jeffblakely/feat/bikeshare-detroit-mogo
feat(bikeshare): add Detroit, Pittsburgh, Aspen and Kona & Hilo
2026-10-15 10:59:50 -07:00
Sameh Khamis f0a1b22dc8 Merge pull request #1047 from rudycelekli/contrib/gods-026-map-subscription-ownership-20261011-reviewed
fix(maps): stop delivering settled state to detached subscribers
2026-10-14 21:28:08 -07:00
Sameh Khamis 871523593f Merge pull request #1046 from rudycelekli/contrib/gods-025-asset-stream-cancellation-20261011-reviewed
fix(director): reject cancellation during the final asset stream read
2026-10-14 21:11:42 -07:00
Sameh Khamis 84bfba8d39 Merge pull request #1044 from rudycelekli/contrib/gods-023-firms-coordinate-evidence-20261011-reviewed
fix(firms): reject missing and out-of-range detection coordinates
2026-10-14 19:43:39 -07:00
Sameh Khamis 7661cd349c Merge pull request #1040 from rudycelekli/contrib/gods-019-terrain-warm-batch-lru-20261011-reviewed
fix(terrain): refresh cache recency when resolving warm batches
2026-10-14 19:02:26 -07:00
Sameh Khamis fc798969ec Merge pull request #1036 from rudycelekli/contrib/gods-015-imagery-box-missing-edge-20261011-reviewed
fix(recent-imagery): reject absent box edges instead of inventing zero degrees
2026-10-14 18:54:24 -07:00
Sameh Khamis 197e5ee855 Merge pull request #1032 from rudycelekli/contrib/gods-011-street-level-unique-tiles-20261011-reviewed
fix(street-level): deduplicate overlapping dateline tile halves
2026-10-14 18:43:48 -07:00
Sameh Khamis 0265ad4c19 Merge pull request #1030 from rudycelekli/contrib/gods-009-route-cap-truthfulness-20261011-reviewed
fix(directions): report truncation only when a maneuver was actually omitted
2026-10-14 17:03:41 -07:00
Sameh Khamis 81cf437ee5 Merge pull request #1027 from rudycelekli/contrib/gods-006-weather-missing-observations-20261011-reviewed
fix(weather): keep absent observations unknown instead of reporting clear skies
2026-10-14 16:14:00 -07:00
Sameh Khamis 58f4a71f22 Merge pull request #1026 from rudycelekli/contrib/gods-005-tool-schema-codepoints-20261011-reviewed
fix(tools): enforce string schema lengths by Unicode code point
2026-10-14 16:03:36 -07:00
Sameh Khamis 1d9d7c71d5 Merge pull request #1023 from rudycelekli/contrib/gods-002-director-dateline-seek-20261011-reviewed
fix(director): seek camera longitude across the shortest dateline arc
2026-10-14 15:48:41 -07:00
Sameh Khamis 6a1432d3c0 Merge pull request #917 from kvnloo/fix/recent-imagery-qa-relative-layout-20261003
test: make Recent Imagery live gate rail-reflow safe
2026-10-14 14:40:05 -07:00
Sameh Khamis 7725a8fafb Merge pull request #1062 from quanticsoul4772/fix/qa-stale-mutation-anchors
fix(qa): repoint stale mutation anchors after the September refactors
2026-10-14 14:28:52 -07:00
Sameh Khamis 22241550ae Merge pull request #789 from kvnloo/docs/pinokio-browser-performance
docs(pinokio): distinguish embedded-browser stutter from hardware limits
2026-10-14 12:43:56 -07:00
Sameh Khamis a190b6024f Merge pull request #772 from daikaginza/docs/voice-backend-contract
docs: add the realtime backend to the voice ownership table
2026-10-14 12:33:39 -07:00
Sameh Khamis eae16e08fb Merge pull request #792 from daikaginza/fix/unit-runner-discovers-server-tests
fix(build): discover unit tests under server/, not only src/
2026-10-14 12:12:03 -07:00
Sameh Khamis 95d376f13d Merge pull request #918 from kvnloo/fix/right-rail-css-hidden-panel-20261003
fix(ui): ignore CSS-hidden panels in right rail layout
2026-10-14 11:37:40 -07:00
Sameh Khamis 5209421973 Merge pull request #1022 from rudycelekli/contrib/gods-001-coordinate-empty-components-20261011-reviewed
fix(search): refuse empty coordinate components instead of silently dropping them
2026-10-14 11:27:26 -07:00
Sameh Khamis 18f58e278b Merge pull request #950 from PoBruno/fix/cctv-hls-insecure-context
fix(cctv): start live HLS on plain-HTTP LAN pages
2026-10-14 11:20:01 -07:00
Sameh Khamis 591f299d11 Merge pull request #986 from bilawalsidhu/fix/healthy-empty-vessel-coverage
Handle healthy empty vessel coverage without an outage
2026-10-09 20:59:43 -07:00
Sameh Khamis 89e566aa9b Merge pull request #985 from bilawalsidhu/fix/street-level-provider-sharing
Preserve custom Street Level provider switches in shared state
2026-10-09 20:03:02 -07:00
Sameh Khamis 7ed47a2b79 Merge branch 'main' into fix/street-level-provider-sharing 2026-10-09 19:56:27 -07:00
Sameh Khamis 90a1442c9c Merge pull request #984 from bilawalsidhu/refactor/route-imagery-sources
Separate Directions and Recent Imagery acquisition sources
2026-10-09 19:56:17 -07:00
Sameh Khamis 7acf55e187 Merge branch 'main' into refactor/route-imagery-sources 2026-10-09 19:47:09 -07:00