Commit Graph
1048 Commits
Author SHA1 Message Date
Aditya ac0e124a67 fix(flights): read a 359.6° track as 0° in the voice context, not 360°
The voice context records for a selected flight or military contact
rounded the track without wrapping, so a contact on 359.5° or more was
described to the assistant as heading "360°". Both now wrap after
rounding: 359.6° reads "0°", 359.4° still reads "359°".
2026-10-28 18:11:42 +05:30
Aditya e4a964375a fix(annotations): label a 996 m line or route as 1.0 km, not 1000 m
Placed route, arrow and drawn-line labels picked metres before rounding
to ten metres, so anything from 995 m to 1 km read "1000 m", even where
the draw hint for the same line read "1.0 km". The label now rounds
first, then picks the unit, and does the same at the 10 km cut, where
9,960 m read "10.0 km".
2026-10-28 15:34:28 +05:30
Aditya d1bbfdbca5 fix(draw): show a 9,999.6 m² area as 1.0 ha, not 10000 m²
The draw hint picked m², ha or km² from the raw area and then rounded,
so 9,999.5 m² up to a hectare read "10000 m²" and about 999,500 m² up
to a square kilometre read "100.0 ha". It now rounds first, as the line
measure already does.
2026-10-28 15:25:08 +05:30
Aditya 6364817b5b fix(directions): show a 9.96 km route as 10 km, not 10.0 km
routeDistanceText picked one decimal while the raw kilometres were under
10, then rounded them for display, so 9.95 km or more read "10.0 km".
It now picks the unit from the rounded tenth, as it already does at the
metre/kilometre boundary.
2026-10-28 15:16:45 +05:30
Aditya 065d7f4f8b fix(alpr): show a 359.6° camera bearing as 0°, not 360°
The selected ALPR card rounded a mapped camera:direction without
wrapping, so a camera facing 359.5° or more read "DIRECTION 360°". The
rounded bearing now wraps to 0°.
2026-10-28 15:15:16 +05:30
Aditya 812cdf6be7 fix(transit): show a reported 359.6° bearing as hdg 0°, not hdg 360°
The selected-vehicle card rounded the operator's reported bearing without
wrapping, so a GTFS-Realtime vehicle heading 359.5° or more read
"reported hdg 360°". The card now wraps after rounding: 359.6° reads
"reported hdg 0°", 359.4° still reads "reported hdg 359°".
2026-10-28 15:09:27 +05:30
Aditya 940050d4e5 fix(cctv): show a camera facing 359.6° as HDG 0°, not HDG 360°
The CCTV HUD heading token and the camera panel's meta line rounded the
bearing without wrapping, so a camera facing 359.5° or more (a feed
bearing, or a heading calibrated just west of north) read "HDG 360°".
Both now wrap after rounding: 359.6° reads "HDG 0°", 359.4° "HDG 359°".
2026-10-28 15:06:07 +05:30
German KhokhlovandClaude Opus 5.5 33985138ef docs(i18n): Arabic language notes and right-to-left guidance
- docs/translations/ar.md: style, Western digits and direction, units,
  the six plural forms and the glossary.
- TRANSLATORS.md and CURRENT-STATE.md list Arabic and say how a
  right-to-left language mirrors the chrome.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 13:28:52 +04:00
German KhokhlovandClaude Opus 5.5 9f71a62d12 i18n(fr): ship French in the language picker
- Register fr: catalog in CATALOGS, LOCALES and LOCALE_NAMES (Français);
  any fr-* browser tag (fr-CA, fr-BE, fr-CH) maps to it.
- package-boundaries.json lists fr.json next to the other catalogs.
- Picker and locale tests cover the new row and its local names.
- docs/translations/fr.md: style, typography, plurals and glossary;
  TRANSLATORS.md and CURRENT-STATE.md list French as shipped.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 13:00:14 +04:00
German KhokhlovandClaude Opus 5.5 ed40201481 i18n(ja): ship Japanese
- Register ja: CATALOGS, LOCALES, LOCALE_NAMES (日本語) and the package
  boundaries; ja and ja-JP tags select it.
- Japanese unit words follow the number directly, as in the catalog:
  formatQuantity writes 5分 and 1時間5分 (km and kt keep the space), and
  formatRelativeTime drops the space CLDR puts in 5 分前.
- Tests: locale tags, picker order, Intl output, durations and the
  ramp/exit/lane wording in Japanese.
- docs/translations/ja.md: style, units, plurals and glossary; ja added to
  TRANSLATORS.md and CURRENT-STATE.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:59:32 +04:00
German KhokhlovandClaude Opus 5.5 1146946207 i18n(uk): complete and ship Ukrainian
- Translate the remaining 1,895 strings for the current UI (Bhote Koshi
  event, weather, imagery, street level, directions, SDR, voice, scenes,
  import) and review meirm's 832 entries from #312: 134 edited for
  Ukrainian HUD terms (КУРС/ПЕЛ./ШЛЯХ/ПРИЗН., Л/П, ОНЛАЙН for LIVE,
  Cyrillic units КМ, ВУЗ, ФТ, МВт), vessel types, number agreement and
  the ʼ apostrophe throughout.
- Register uk: catalog, LOCALES, LOCALE_NAMES (Українська), package
  boundaries, same-as-English codes; picker and plural tests cover the
  four Ukrainian forms.
- docs/translations/uk.md: style, plurals, units and glossary.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:57:54 +04:00
German KhokhlovandClaude Opus 5.5 dfa7ac98a7 i18n(de): complete and ship German
- Translate the remaining 1,868 strings in a neutral infinitive style (no
  Sie/du), with German compounds, decimal commas and CLDR one/other plurals.
- Review the #908 entries: knots are kn everywhere, the avionics codes BRG,
  CRS and DEST stay English like HDG and SPD, expand/collapse is
  ausklappen/einklappen, the radio toggle reads EIN/AUS, density SPARSE is
  DÜNN, the Thermal style is Wärmebild, German quotes in the shot prompt.
- Register de: catalog, LOCALES, LOCALE_NAMES (Deutsch), package boundaries,
  same-as-english (codes, product names, music genres, units).
- Tests: picker order and keyboard model with Deutsch, de/de-AT/de_CH
  normalization, browser de-DE resolves to German.
- docs/translations/de.md: style, plurals, units and glossary; TRANSLATORS.md
  and CURRENT-STATE.md list German.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:53:49 +04:00
German KhokhlovandClaude Opus 5.5 8269f0e4e6 i18n(pt): complete and ship Brazilian Portuguese
- Translate the remaining 1,868 strings (pt-BR, as in #909) and review the
  contributor entries: HUD codes BRG/SPD/RANGE stay as in the other
  languages, sentence-case layer and scene names, Space key named as on the
  keyboard, short PREV/NEXT/ON/OFF chips, and the CLDR many form (exact
  millions take «de») on every plural.
- Register pt: any pt tag (pt-BR, pt-PT) maps to it; the picker shows
  «Português (Brasil)».
- Codes, units and product names identical to English go to
  same-as-english.json.
- docs/translations/pt.md: style, plurals, units and glossary.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:52:01 +04:00
German KhokhlovandClaude Opus 5.5 c4dfee6e5c i18n(it): ship Italian
- Register it: catalog in index.js, LOCALES and LOCALE_NAMES (Italiano);
  it-IT, it-CH and other it tags select it.
- List it.json with the other catalogs in package-boundaries.json.
- docs/translations/it.md: style, plurals and glossary; Italian in the
  shipped lists of TRANSLATORS.md and CURRENT-STATE.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 12:51:02 +04:00
German Khokhlov d1ba0a7b8a Merge remote-tracking branch 'origin/main' into codex/hal-646-zh-hant 2026-10-28 11:28:43 +04:00
quanticsoul4772 ea491e1603 Merge branch 'main' into upstream/perimeters-stale 2026-10-27 16:51:15 -07:00
quanticsoul4772 eef64cfb4f Merge branch 'main' into upstream/traffic-layer-stale 2026-10-27 16:51:08 -07:00
quanticsoul4772 0ba59112f9 Merge branch 'main' into upstream/terrain-429-pause 2026-10-27 16:51:00 -07:00
quanticsoul4772 702037f833 Merge branch 'main' into upstream/geocode-place-region 2026-10-27 16:50:51 -07:00
German KhokhlovandClaude Opus 5.5 51ee9ae914 i18n: write zh-Hant as zh-CN in Traditional characters
Rebuild the zh-Hant catalog from zh-CN with OpenCC s2tw glyph
conversion, so wording and terminology match zh-CN and only the
script differs. Drop Taiwan-specific vocabulary and wording notes;
zh-TW/HK/MO browser tags still select zh-Hant.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-27 23:57:25 +04:00
Aditya 83c4388e64 fix(awareness): show a 999.6 m contact marker as 1.0 km, not 1000 m
The on-globe Contacts markers picked metres before rounding, so a contact
999.5 m or more away read "1000 m" while the Contacts panel read
"1.0 km". The marker label now rounds first, as the panel does.
2026-10-27 15:55:30 +05:30
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 6d6b2e8fe9 fix(street-level): show a 359.6° bearing as 0°, not 360°
The Street Level viewer caption rounded the photo's bearing without
wrapping, so a view facing 359.5° or more read "360°". The rounded
bearing now wraps to 0°.
2026-10-27 15:52:27 +05:30
German Khokhlov ba9db7fc41 Merge origin/main and sync Traditional Chinese catalog 2026-10-27 10:25:07 +04:00
German Khokhlov 8f16cf263b i18n: use zh-Hant for Chinese (Traditional) 2026-10-27 10:20:54 +04:00
nu-statsandClaude Opus 5.5 48bfaa787a Merge main; give the HUD visibility test's camera a moveStart event
Main now listens to camera.moveStart in IntelHUD's constructor (#1384), so
the fake camera in src/hudPageVisibility.test.mjs needs that event too, as
hudAltitudeDatum.test.mjs already has. No change to the fix itself.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-26 21:56:44 -04: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 c533b1994c Merge main and preserve voice panel and GhostMaps schema coverage 2026-10-26 08:52:03 -07:00
Sameh Khamis 074e272356 fix(voice): recover idle timers and retire panel audio observers 2026-10-26 08:42:41 -07:00
Sameh Khamis aeee3652ce Merge PR #1299 with current main for validation 2026-10-26 08:39:16 -07:00
Mazeyar Moeini Feizabadi 9496ee4d64 fix: complete GhostMaps locale and voice integration with current main 2026-10-26 16:29:48 +01: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
Alex O'Neill 01c35a2c11 Merge branch 'main' into codex/fix-seek-layer-state 2026-10-26 13:06:49 +00:00
Bilawal SidhuandBilawal Sidhu a3a19883b4 feat: add Scope controls and conditional HUD text backplates (#1410)
* feat: add scope controls and conditional HUD backplates

* docs: assign scope changelog to PR 1410

* fix: stabilize title backplate and brighten secondary labels

---------

Co-authored-by: Bilawal Sidhu <[email protected]>
2026-10-26 00:24:27 -05: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
Jenil Patel a7fcb3c232 fix(maps): avoid 404 on keyless Google tiles-token probe (#1066)
Return an uncached unavailable-token response for keyless Google tile-token requests.

Contribution by @dvilrgamerz.
2026-10-25 19:13:38 -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
Sameh Khamis 292a7a9d08 Merge main into PR #948 2026-10-25 18:53:39 -07:00
NukeThemAII 3a724f055a fix(pinokio): open the app in the system browser (#1222)
Open the Pinokio app in the system browser while retaining application framing protection.

Contribution by @NukeThemAII.
2026-10-25 18:53:32 -07:00
Sameh Khamis 0dce2f8d04 fix: complete PR #948 integration and documentation 2026-10-25 18:47:57 -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
Rudy Mizrahi Celekli a15fdd3134 fix(hud): carry rounded DMS seconds into the minutes (#1339)
Carry rounded HUD coordinate seconds into minutes and degrees.

Contribution by @rudycelekli.
2026-10-25 17:59:09 -07:00
Anıl Güvenç 2a17491c8b fix(docker): let SELinux hosts read the bind-mounted checkout (#1391)
Allow the Docker checkout bind mount on SELinux hosts.

Contribution by @anilguvenc.
2026-10-25 17:54:16 -07:00
quanticsoul4772 734c74c325 Merge branch 'main' into upstream/geocode-place-region 2026-10-25 17:38:58 -07:00
Sameh Khamis 3a28dcab07 fix(docker): align health probe port parsing and document health status 2026-10-25 17:32:15 -07:00
quanticsoul4772 c13c2fc1f0 Merge remote-tracking branch 'origin/main' into upstream/geocode-place-region
# Conflicts:
#	docs/CURRENT-STATE.md
#	src/keylessGeocoder.test.mjs
2026-10-25 17:32:07 -07:00
Said Turksever 9546dba1c7 Merge branch 'main' into upstream/terrain-429-pause 2026-10-26 00:28:06 +00:00