- Selections take the playback fallback as a `playFallback` option and
set it after releasing a stale stream, instead of callers arming state
that the release then had to save and restore.
- Move the tuner `station-unavailable` release and the Pause label while
a stream connects out of this branch: both were wrong on main already
and go in a separate change.
- Share the Radio layer test setup in src/testSupport/radioLayerHarness.mjs
and fold overlapping Next/Previous tests (13 to 7).
- One-line comments and a two-line changelog entry.
Review follow-ups for HAL-722. A Next or Previous that only selects a
station now leaves nothing of the previous stream behind:
- Selecting another station without playing stops a paused or failed
stream, so the panel, Stop, voice summaries and the audio element agree
on "stopped". A fallback the caller armed for the new selection is kept.
- A silent UI step arms no broadcaster fallback, and a user Play of the
selected station drops one left by a cancelled voice step. Voice steps
pass `fallback: true` because voice starts the prepared playback later.
- A user step to another station emits a `select` playback control, and
the realtime voice handoff treats it like Pause and Stop.
- A tuner release onto a station the directory no longer has stops the
stream the drag paused, publishing one state with the gesture's origin,
so the button reads PLAY and a voice handoff is cancelled.
- The transport buttons offer Pause while a stream connects, matching
what a click does.
- The privacy note names every action that connects to a broadcaster
(play, finishing tuning, choosing a station on the globe) in all
locales.
The Next/Previous layer tests live in src/data/radioNextState.test.mjs.
Fixes the 51 P0–P2 findings from the full review of the i18n branch and
the issues found while checking every new string on screen in ru and es.
- Translate errors and statuses that still reached ru/es in English:
feed and tile errors, provider statuses, the ALPR chip, the traffic
mode chip, voice plan step labels, fire feed values, receiver bands,
scene save reasons and the Cesium attribution link.
- Show preset city names in the UI language (src/ui/placeNames.js);
data and everything sent to the model stay English.
- Share layer names between the layer panel, HUD and voice card
(src/ui/layerNames.js).
- Keep long ru/es strings whole: voice card error lines, analyst
titles, the voice tier status, the Nepal evidence button, the ALPR
retry chip. English layout is unchanged.
- Ask before a language switch drops unsaved work.
- Catalog fixes: glossary terms (пуск, пресет), gender agreement and
consistent "peticiones" in es, fewer calques in both languages.
- Fix English text that was itself wrong (e.g. "Exit cockpit to fly to
a weather", raw tool ids in voice plan steps).
Catalogs: es/ru 2535 messages each, complete.
Co-Authored-By: Claude Opus 5.5 <[email protected]>