Commit Graph
1817 Commits
Author SHA1 Message Date
Said Turksever 32125384fe Drop Snow from the new catalogs and migrate saved Snow shots
The it, pt and uk catalogs merged from main still carried the two Snow
button strings, which the catalog tests report as stale. They are
pruned with npm run i18n -- --prune.

A Scene Director shot saved with Snow now normalizes to Normal when the
project loads, so the shot list shows NORMAL rather than an untranslated
SNOW for a shot that plays on Normal. The README's style keys read 1-6.
2026-10-29 14:04:11 +00:00
Said Turksever 3bcdc16dde Merge branch 'main' into fix/remove-operator-hud-layout 2026-10-29 13:55:54 +00:00
German KhokhlovandClaude Opus 5.5 f9af9e758c i18n(fr): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 17:55:01 +04:00
German Khokhlov 727825b576 Merge remote-tracking branch 'origin/main' into german/hal-638-fr
# Conflicts:
#	docs/CURRENT-STATE.md
#	docs/TRANSLATORS.md
#	scripts/package-boundaries.json
#	src/i18n/i18n.test.mjs
#	src/i18n/index.js
#	src/i18n/locale.js
#	src/i18n/same-as-english.json
#	src/scenes/recipes.js
#	src/ui/localePicker.test.mjs
#	src/ui/templates/context.html
2026-10-29 17:55:01 +04:00
Said Turksever 1990228889 Merge branch 'main' into fix/remove-snow-preset 2026-10-29 13:53:35 +00:00
German Khokhlov 4ed06fac22 Merge branch 'main' into fix/remove-operator-hud-layout 2026-10-29 17:45:40 +04:00
German Khokhlov 4877be7f9b Merge branch 'main' into fix/remove-snow-preset 2026-10-29 17:45:25 +04:00
German KhokhlovandClaude Opus 5.5 b0f0837c10 i18n(it, uk): translate the cyclone source errors
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 17:42:05 +04:00
German Khokhlov 95ded4c6b9 Merge remote-tracking branch 'origin/main' into german/hal-640-pt
# Conflicts:
#	docs/CURRENT-STATE.md
#	docs/TRANSLATORS.md
#	scripts/package-boundaries.json
#	src/i18n/i18n.test.mjs
#	src/i18n/index.js
#	src/i18n/locale.js
#	src/i18n/same-as-english.json
#	src/scenes/recipes.js
#	src/scenes/sceneTitleDisplay.test.mjs
#	src/ui/localePicker.test.mjs
2026-10-29 17:42:05 +04:00
quanticsoul4772 3772aaed0a Merge branch 'main' into upstream/voice-alias-hint-budget 2026-10-29 06:13:18 -07:00
German Khokhlov 59f06c9918 Merge remote-tracking branch 'origin/main' into german/hal-641-it
# Conflicts:
#	docs/CURRENT-STATE.md
#	docs/TRANSLATORS.md
#	src/i18n/index.js
#	src/i18n/locale.js
#	src/ui/localePicker.test.mjs
2026-10-29 17:05:28 +04:00
Said Turksever 97b7307b14 Fix the format gate and the Cyber Context styling, and pin the redesign
CI failed at format:check: the format scope still listed the deleted
panelChrome.radioOwnership test, and panelRails.test.mjs needed Prettier
after its glow list shrank.

The new Context title colour outranked Cyber's red panel titles, and the
collapsed Context launcher came out brighter than its siblings; the rule
now applies only to the expanded panel outside Cyber. Cyber's layout-focus
standby card had relied on the old dashed border and centring, so it
drew a 3px frame with its text off the radar art; it now names its own
1px frame, padding and centring. Cyber also drops the shared segmented
track, which drew a third frame around its already framed mode buttons.

Tests now pin the Context header to its title and collapse control, the
segmented control, 10px type, the missing halo and the scoped title
colour, plus the Cyber standby and track overrides. Each fails on the
previous CSS or markup.

qa-radio enables Radio and starts the first Play from the visible
controls, expanding Context and Radio the way a person must, then puts
the panels back. The Escape test and its mutation describe what they
still protect. CURRENT-STATE no longer describes the removed Radio icon
or compact player.
2026-10-29 12:55:47 +00:00
Said Turksever 8de75b172a Keep two shot rows visible in Authoring on shorter windows
The step headings make the panel taller, so the left stack squeezed the
shot list down to one row at about 1000px of window height. Its minimum
now holds two rows; the panel scrolls when space is short.
2026-10-29 12:29:11 +00:00
Said Turksever 4192a6f87d Keep Authoring within its stack and theme, and cover its wiring
- Keep the documented 72px / flex-grow 1 action sizing and the 360px
  panel width; the larger type applies to the Authoring panel only, so
  CCTV and Street Level buttons are unchanged.
- Scope the primary and file-row styles to the panel so Cyber's shared
  button surface no longer overrides them.
- Shorten the scene PLAY in Spanish and Russian so it does not break
  mid-word, and fix two translation inconsistencies.
- Map the spoken name "authoring" to the panel.
- Clear the has-shots marker when the controls are destroyed.
- Test the idle button states through published changes, the PLAY
  translation context, and where the sharing row is placed.
2026-10-29 11:48:52 +00:00
Said Turksever 3b6111be06 Open views naming the retired Snow style on Normal
createView threw on style 'snow', so an embed host or a
show_in_gods_eye_view call holding a view from before Snow was retired
was refused outright, camera and layers included. viewFromParams read
style=snow as the recipient's own style, while the app opened the same
link on Normal.

Both now read a retired style as Normal; truly unknown names still
throw. The retired list moves to a browser-free module shared by the
view API, the share codec and visual settings.
2026-10-29 11:34:19 +00:00
Said Turksever 2b1129c10e Rename the Scenes panel to Authoring and lay it out in steps
The panel reads AUTHORING and groups its controls under SCENE, SHOTS,
PREVIEW and SAVE & SHARE headings, with the EDIT DETAILS / SHARE SCENE
row moved beside EXPORT / IMPORT. Text is larger with more contrast,
shots are numbered, every action has a tooltip and the status line is a
live region. Outside playback, buttons that would do nothing are
disabled. New labels are translated in every shipped language; PLAY
uses its own catalog context apart from the radio's PLAY.
2026-10-29 11:31:53 +00:00
Said Turksever e12614a13a Pin the retired Operator code and test the live HUD fallback
qa-radio cycles Minimal, off, on, then Tactical, so the HUD toggle must
restore a non-default layout, and expects that sequence instead of the
removed Operator step.

The share-link test pins the exact hudVariant codes, so dropping or
moving operator's reserved code fails it. A live IntelHUD test checks
that a retired Operator layout falls back to Tactical, and the Cyber
test stub themes from the normalized value.

The share-link table marks operator as retired, and the zh-CN glossary
drops the removed string.
2026-10-29 11:29:20 +00:00
Said Turksever 66e19f0c50 Drop the Radio icon from Context and make the panel easier to read
The Context header carried a Radio icon that opened a second, compact
Radio player on top of the panel, duplicating the Radio section that
already lives inside Context. Remove the icon, the compact player and
everything that kept the two in step. Radio stays in Context as its own
section with one Enable control; Cockpit's compact Radio is unchanged.

Context itself was hard to read: 7-8 px labels at low contrast, a dashed
placeholder box, and a glow halo. The two modes are now one segmented
control, labels and guidance are 10 px at higher contrast, the standby
hint is plain text, section titles use --text-secondary, and the panel
draws no glow.

Unused translations are pruned, tests and QA harnesses that pinned the
compact player are updated or retired, and CURRENT-STATE and the
changelog describe the new header.
2026-10-29 11:28:56 +00:00
Said Turksever 39a60b4034 Remove the Snow visual preset
Snow is no longer offered anywhere a style can be chosen: the Visual
Presets tray, keyboard shortcut 7, the Cockpit vision carousel, and the
set_visual_style voice action. The shader and its labels go with it;
weather snowfall and the SNOW weather condition are unaffected.

Share links keep working. Snow's enum code (6) stays reserved, so a
compact or long-form link that names it opens on Normal and drops the
Snow shader parameters without reporting them as unknown. A Scene
Director shot saved with Snow plays on Normal too. Snow's frozen share
defaults matched Normal's apart from those parameters, so no other
setting in an old link changes meaning.

The legacy voice-schema pins restore Snow before hashing, so the
unchanged pins still prove nothing else moved; the complete Realtime
payload digest is re-derived.
2026-10-29 11:20:49 +00:00
German KhokhlovandClaude Opus 5.5 04481ef202 i18n(ar): address code review findings
Mirror the dock trays and their pin, the compact Radio window and the
phone top-bar actions in right-to-left; keep the Cyber cockpit's Data
Layers stack on the left edge. Isolate the Space Missions counter,
landing coordinates and CCTV summary parts, format their numbers with
the locale's numerals, decide pack shot titles by the marker binding,
and place Bhote Koshi media cards between the panels on either side.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 15:20:47 +04:00
German KhokhlovandClaude Opus 5.5 f8e96e1484 i18n(it): address code review findings
Localize a bootstrap shot title without a source pack only when the
Nepal pack marker binds that title to the shot's id, so an operator
shot renamed to a bootstrap title in the built-in scene stays as typed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:54:44 +04:00
German KhokhlovandClaude Opus 5.5 0e45bcdf14 i18n(de): address code review findings
Localize a legacy Nepal base shot only when the applied pack marker binds
that title to this exact shot id, so a user shot renamed to a built-in
title stays as typed in every locale.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:52:45 +04:00
German KhokhlovandClaude Opus 5.5 eab345a465 i18n(pt): address code review findings
A pack marker with shotBindings now vouches only for the shot bound to a
legacy bootstrap title, so a user shot typed with the same title keeps its
text instead of showing the localized built-in name.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:50:08 +04:00
German KhokhlovandClaude Opus 5.5 d034e7355d i18n(fr): address code review findings
Localize a pack shot title only for the shot the pack marker binds to that
title, so an operator's shot named like a pack shot shows as typed. Markers
saved without shotBindings keep the title-only check.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:48:09 +04:00
German KhokhlovandClaude Opus 5.5 a1d9847976 i18n(ja): address code review findings
Japanese has no letter case, so the HUD summary keeps units as the
catalog writes them (13 km), matching the cockpit and the ja HUD CSS.
The ja '{value} KM', '{value} KM/H' and '{value} KM/S' strings are now
lower-case like zh-CN.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:47:58 +04:00
Said Turksever 8b2c699370 Remove the Operator HUD layout
Display > HUD > Layout and the set_hud voice action now offer Tactical,
Minimal and Cyber. The Operator option, its CSS and its QA coverage are
removed, and the unused "Operator" translations are pruned.

Share-link codes are append-only, so operator keeps its hudVariant code.
A link, scene or saved state that names it restores the default Tactical
layout. The voice schema pins keep their legacy digests by restoring the
retired value before comparing; the full-payload digest is re-derived.
2026-10-29 10:41:58 +00:00
Said Turksever d2647f35ba Give the side panels one title style, hover and toggle inset
Every rail panel title uses the command dock's label type and colour,
collapsed or open, instead of three sizes at 30% opacity. Panels answer
hover as the dock trays do, with a blue edge, a soft glow and an accent
title. In the default theme each panel's title and collapse button sit
19px from its edge; Context's toggle no longer shrinks beside the radio
button. The cyber theme keeps its own colours and insets.
2026-10-29 10:40:14 +00:00
German KhokhlovandClaude Opus 5.5 d383f25bb3 i18n(it): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:31:56 +04:00
German KhokhlovandClaude Opus 5.5 e451b496ae Merge remote-tracking branch 'origin/main' into german/hal-641-it
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:31:56 +04:00
German KhokhlovandClaude Opus 5.5 6c524b229c i18n(pt): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:24:50 +04:00
German KhokhlovandClaude Opus 5.5 8c291d8a0c i18n(ar): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:24:27 +04:00
German KhokhlovandClaude Opus 5.5 8f8e6776bc Merge remote-tracking branch 'origin/main' into german/hal-644-ar
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:24:27 +04:00
German KhokhlovandClaude Opus 5.5 eab9632738 i18n(ja): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:23:04 +04:00
German KhokhlovandClaude Opus 5.5 eb76d5265b i18n(uk): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:19:24 +04:00
German KhokhlovandClaude Opus 5.5 ec3932718e Merge remote-tracking branch 'origin/main' into german/hal-645-uk
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:19:01 +04:00
German KhokhlovandClaude Opus 5.5 ed26fa12d8 i18n(fr): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:18:40 +04:00
German KhokhlovandClaude Opus 5.5 a0c8b6f893 i18n(de): translate strings new in main
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:12:10 +04:00
German KhokhlovandClaude Opus 5.5 2f12cbf5c8 Merge remote-tracking branch 'origin/main' into german/hal-639-de
Conflicts in es, ru, zh-CN and zh-Hant catalogs: both sides appended keys
at the end (cyclone errors from this branch, routing refusals from main);
kept both.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:12:08 +04:00
German KhokhlovandClaude Opus 5.5 494c2b6029 Merge remote-tracking branch 'origin/main' into german/hal-640-pt
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:11:56 +04:00
German KhokhlovandClaude Opus 5.5 c493eb0126 Merge remote-tracking branch 'origin/main' into german/hal-642-ja
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:11:56 +04:00
German KhokhlovandClaude Opus 5.5 a60ba928cc Merge remote-tracking branch 'origin/main' into german/hal-638-fr
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 14:11:35 +04:00
quanticsoul4772andClaude Opus 5.5 45ae1095da fix(voice): leave aliases a layer id already spells out of the alias hint
The set_layer_visibility layerId hint listed aliases such as "dams" for
local-dams and "weather radar" for weather-radar, which the id in the
enum already says. Leaving those out, and a layer with no other alias,
cuts the Realtime prompt from 52,000 to 51,695 characters. Aliases the id
does not spell (aqhi, hurricanes, clouds) stay, and the runner still
accepts every alias. Refs #1363.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 20:11:55 -07:00
quanticsoul4772andClaude Opus 5.5 da2a3c3379 fix(sky): read the Milky Way faces by file path in the paint-out test
The test passed URL.pathname to sharp, which is /D:/... on Windows, so the
faces were not found and npm test failed on every Windows clone.
fileURLToPath gives a path that works on every platform.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 20:08:10 -07:00
Said Turksever 1c0a30adaf Merge branch 'main' into perf/vessels-idle-render 2026-10-29 01:18:39 +00:00
Sameh Khamis 7914370b14 Merge branch 'main' into sameh/hud-google-lookups 2026-10-28 17:37:20 -07:00
Said Turksever 6847bc1433 Merge branch 'main' into upstream/traffic-layer-stale 2026-10-28 22:07:37 +00:00
Sameh Khamis c1f60cb7e7 Cut the Google requests the HUD summary makes on its own
The HUD builds place context for its AI summary whenever the camera
settles, and each build paid for up to four reverse geocodes plus a Nearby
Places search, even when no OpenAI key was configured to use them.

- Ask GET /api/openai/hud-summary/status once; with no summary configured,
  or after an unconfigured reply, make no place lookups for the page.
- Reverse-geocode at most two points: the view center and one viewport
  point.
- Reuse a lookup until the view center moves a quarter of the visible
  width, the camera's distance to it doubles or halves, or the camera
  crosses a lookup height. The reused points are asked again, so only a
  timeout, failure or empty answer spends.
- Repaint the last AI reply when a small pan leaves the context unchanged.

Cached-only hosts and voice context lookups are unchanged.
2026-10-28 14:59:33 -07:00
German KhokhlovandClaude Opus 5.5 df8dd2adf2 i18n(ar): apply review round 5
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 00:07:40 +04:00
German KhokhlovandClaude Opus 5.5 8da577dab7 i18n(ja): apply review round 4
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 00:04:33 +04:00
German KhokhlovandClaude Opus 5.5 0511153bad i18n(ar): apply review round 4
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 00:00:14 +04:00