Commit Graph
829 Commits
Author SHA1 Message Date
German KhokhlovandClaude Opus 5.5 eee905e787 fix(i18n): translate visual preset parameter sliders
The slider labels (Sensitivity, Bloom, Pixelation, …) live in the shader
modules and were rendered raw, so they stayed English in every locale.
Mark them with msg() and render them through t(); add es and ru entries.
WHOT/BHOT and Ironbow keep their names. Russian Bloom is now «Свечение».

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 18:11:20 +04:00
German KhokhlovandClaude Opus 5.5 70936b58b9 feat(i18n): ship Spanish
Register es next to ru (selector shows EN | ES | RU) and complete the
catalog against the current English: the 13 messages added since #602,
the "many" plural form Intl.PluralRules('es') selects for exact millions,
and fixes where the English had changed (e.g. "hace hace" in LIVE ·
updated, minutes written as metres). Terminology made consistent (buque,
aeronave, incendio activo); key names stay in English. Meir's wording is
kept everywhere else. Adds docs/translations/es.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 14:33:43 +04:00
Meir MichanieandGerman Khokhlov 47cfdb823e feat(i18n): Spanish catalog
Meir Michanie's Spanish translation from #602 (9d69e11, 4ba5d69), converted
to the English-keyed format: one entry per English message in
src/i18n/locales/es.json, translations unchanged. Also carries the es-only
CCTV control-row wrap rule.

Co-Authored-By: German Khokhlov <[email protected]>
2026-10-12 14:26:08 +04:00
German KhokhlovandClaude Opus 5.5 acac88ee49 docs(i18n): move the Russian glossary to docs/translations/ru.md
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 14:12:01 +04:00
German KhokhlovandClaude Opus 5.5 5d1c43bfaf docs(i18n): clarify where a placeholder may go
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 14:08:38 +04:00
German KhokhlovandClaude Opus 5.5 4dcbf7fbfa docs(i18n): add a developer guide for t, tn, msg and data-i18n
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 14:03:30 +04:00
German KhokhlovandClaude Opus 5.5 13efd411b6 refactor(i18n): key messages by English text; add Russian
Replace the semantic keys with the English source text, so code reads as the
UI does and English needs no catalog: t('Save keys'), tn(count, one, other)
for plurals, msg() for text stored in data, and bare data-i18n* markup that
translates the element's own English. Other languages are one flat JSON each.

- Simplify src/i18n: drop namespaces, the configurable locale pair
  (GEV_DEFAULT_LOCALE / GEV_SECONDARY_LOCALE) and its build defines. Locale
  comes from ?lang=, the stored choice, then browser languages.
- Add scripts/i18n.mjs (npm run i18n): extracts every message from t/tn/msg
  and markup, and fails on missing, unused, placeholder-mismatched or
  wrongly-shaped plural entries. npm test runs it via catalog.test.mjs.
- Add Russian (src/i18n/locales/ru.json, 833 messages), started from the
  community catalog in #312 and reviewed against the current English.
- Fix data-i18n placed on parents that would wipe their children (cockpit
  LEVEL and local weather cells, first-run EXPLORE MANUALLY tile), and a
  doubled degree sign in the TRACK ACQUIRED signal.
- Rewrite docs/TRANSLATORS.md for the new workflow; drop sections the earlier
  merge resurrected in docs/CURRENT-STATE.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-12 13:48:56 +04:00
Meir Michanie dfbaeafbd8 i18n: sync catalogs with upstream key-setup and vision-style additions
- keySetup.unlocks.openai follows the registry's new wording
  ('API key or ChatGPT OAuth')
- add keySetup.unlocks.mapillary for the new Mapillary client-token key
- add vision.styleNameAnime/styleNameSnow for the new anime/snow cockpit
  vision modes
- add layers.meta.dataSourceUnavailable for the unavailable-layer tooltip
  fallback introduced upstream
2026-10-10 23:28:10 +02:00
Meir Michanie 71f7a58169 Merge remote-tracking branch 'upstream/main' into core-rb2
# Conflicts:
#	CHANGELOG.md
#	build/vite.js
#	scripts/package-boundaries.json
#	server/standalone/vite.config.js
#	src/app/scene.js
#	src/layers/vessels/queries.js
#	src/standalone/application.js
#	src/tooling/viteBuild.test.mjs
#	src/ui/cockpitInstruments.js
#	src/ui/layerPanel.js
#	src/ui/panelPositionControls.js
2026-10-10 23:15:54 +02: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 27a986f40f Accept authoritative empty vessel coverage without an outage 2026-10-09 20:50:19 -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
Sameh Khamis 2fe70f63f8 Merge pull request #983 from bilawalsidhu/feat/optional-catalog-sources
Make catalog feeds optional and configurable at startup
2026-10-09 19:47:03 -07:00
Sameh Khamis f289a1ce03 Merge branch 'main' into feat/optional-catalog-sources 2026-10-09 19:37:39 -07:00
Sameh Khamis e626137a7a Merge pull request #982 from bilawalsidhu/fix/optional-street-level-providers
Fix startup with optional Street Level providers
2026-10-09 19:37:14 -07:00
Sameh Khamis eacfc1b06a Persist explicit provider toggles through the layer state coordinator 2026-10-09 19:09:30 -07:00
Sameh Khamis 3ba8c6d61b Use a neutral compact switch codec and clarify provider size limits 2026-10-09 18:47:04 -07:00
Sameh Khamis fbe118aab9 Merge branch 'refactor/route-imagery-sources' into fix/street-level-provider-sharing 2026-10-09 18:44:12 -07:00
Sameh Khamis 8d7c47ec39 Merge branch 'feat/optional-catalog-sources' into refactor/route-imagery-sources
# Conflicts:
#	CHANGELOG.md
2026-10-09 18:44:07 -07:00
Sameh Khamis 161a3a796a Keep source availability in the catalog and cover absent military acquisition 2026-10-09 18:43:44 -07:00
Sameh Khamis 7b1b2df764 Preserve custom Street Level provider switches in shared state 2026-10-09 17:53:47 -07:00
Sameh Khamis 3b840ebdf3 Merge branch 'feat/optional-catalog-sources' into refactor/route-imagery-sources
# Conflicts:
#	CHANGELOG.md
#	docs/CURRENT-STATE.md
2026-10-09 17:50:12 -07:00
Sameh Khamis b78ff7a915 Use shared availability for an empty Street Level provider list 2026-10-09 17:49:58 -07:00
Sameh Khamis 0d9bfdf9de Merge branch 'fix/optional-street-level-providers' into feat/optional-catalog-sources 2026-10-09 17:49:41 -07:00
Sameh Khamis 893294c7d4 Assert Street Level expansion timeout and document provider precedence 2026-10-09 17:49:26 -07:00
Sameh Khamis 99988cb348 Separate route and recent imagery acquisition from application assembly 2026-10-09 17:42:00 -07:00
Sameh Khamis 5756ae92a8 Make catalog feed configuration optional and explicit 2026-10-09 17:35:38 -07:00
Sameh Khamis 1ee07468c4 Explain empty imagery configuration in Street Level controls 2026-10-09 17:21:31 -07:00
Sameh Khamis 940b277460 Allow optional Street Level provider composition 2026-10-09 17:18:49 -07:00
Sameh KhamisandSmokeDev 6be25595b1 Merge pull request #621 from devv-shayan/codex/chatgpt-realtime-oauth
feat(voice): add optional ChatGPT OAuth for Realtime voice

Builds on the credential handling from #653.

Co-authored-by: SmokeDev <[email protected]>
2026-10-08 11:31:48 -07:00
Sameh Khamis cb1d008505 docs(state): scope caption metering to API-key voice sessions 2026-10-08 11:20:03 -07:00
Sameh Khamis 30cc16052a docs(changelog): credit #621 and #653 for ChatGPT OAuth voice 2026-10-08 11:03:23 -07:00
Sameh Khamis 8979d159bb docs(voice): note the Windows Codex login workaround 2026-10-08 11:03:18 -07:00
Sameh Khamis d32cc71682 docs(security): document the Codex sign-in boundary for OAuth voice
Add the Codex auth.json credential to the secrets table and describe the
loopback-only OAuth routes, the codex login launch and its limits.
2026-10-08 11:03:12 -07:00
Sameh Khamis d587249ce9 fix(setup): stop presenting ChatGPT OAuth as the default voice fallback
Doctor and dev-fresh told every user without an OpenAI key that voice could
use ChatGPT OAuth, whether or not Codex was installed. Say voice is off
until a key is added or a Codex sign-in is selected, and mark that path
experimental.
2026-10-08 11:02:52 -07:00
Sameh Khamis 3fa5bb7f5f fix(voice): start codex login without the server's provider secrets
The login child inherited the whole server environment, including
OPENAI_API_KEY and every other provider credential. Pass only what Codex
needs to find its home, open a browser and reach OpenAI through a proxy.
2026-10-08 11:02:12 -07:00
Sameh Khamis c99653047f fix(voice): count OAuth caption transcriptions instead of pricing them
Voice-card captions from main priced transcription usage into the API-key
dollar meter. In a ChatGPT OAuth session that could trip the $2 warning or
$5 cap while the readout said COST UNKNOWN. Count them with the session's
other OAuth usage instead.
2026-10-08 11:01:43 -07:00
Sameh Khamis fb1596d2f1 Merge main into PR #621 (ChatGPT OAuth for Realtime voice)
Resolve conflicts with the voice-core captions, panel resize and MCP
panel key changes by keeping both sides.
2026-10-08 11:00:54 -07:00
Sameh Khamis 06b5ac7d12 Merge pull request #935 from daikaginza/fix/tile-origin-follows-tilejson
fix(tiles): derive the tile origin from the configured TileJSON (#933)
2026-10-08 10:52:10 -07:00
Sameh KhamisandClaude 4f2b304ea3 docs: note tile origin follows tileJsonUrl and credit #935
Co-Authored-By: Claude <[email protected]>
2026-10-08 10:44:56 -07:00
Sameh Khamis 563ca10d26 Merge main into PR #935 2026-10-08 10:44:12 -07:00
Sameh Khamis 95fa816232 Merge pull request #958 from jibraaan/fix/mcp-shared-panel-key
fix(mcp): share one panel key across an install's stdio servers
2026-10-07 15:34:17 -07:00
Sameh Khamis 64a0200ea8 Merge main after MCP port correction 2026-10-07 15:24:15 -07:00
Sameh Khamis 6423d60d0b Merge pull request #934 from xiehuanyi/docs/mcp-default-port
docs(mcp): align client setup with the default app port
2026-10-07 15:21:56 -07:00
Sameh Khamis acda360cf0 fix(mcp): serialize shared panel key repair and credit report 2026-10-07 15:12:44 -07:00
Sameh Khamis 7592718415 Merge remote-tracking branch 'origin/main' into integration/mcp-panel-key-pr958 2026-10-07 15:10:44 -07:00
Sameh Khamisandshirunjies8-png 2d3d99864b docs: credit both contributors for MCP port correction
Credit the equivalent contribution in PR #959 alongside PR #934, while preserving the original PR author's commits.

Co-authored-by: shirunjies8-png <[email protected]>
2026-10-07 14:37:10 -07:00