Commit Graph
100 Commits
Author SHA1 Message Date
German Khokhlov a066a2d1ca Keep history entries untouched by unfinished globe picks and restore each visited entry's layers
A picked engine now lives in the switch until it runs; only then is the
address written, so a pick superseded by Back or one that fails rewrites no
entry. An engine-changing history visit holds the outgoing share link, which
neither restores nor writes the visited entry, and the running engine takes
the address back once the switch settles, restoring any entry visited while
it was held or not yet listening. Handed-off layers keep running where the
incoming address agrees with the outgoing one and follow a visited entry
where it differs. A failed recovery keeps the error on the loading screen
with an engine picker for a retry, and a failing reveal of the new globe no
longer blocks the cover removal or later requests.
2026-11-03 15:24:20 +04:00
German Khokhlov 9cc34e324f Stop scene attachments of Bhote Koshi, GhostMaps, cables and infrastructure waiting once their scene is released 2026-11-03 15:23:21 +04:00
German Khokhlov cf6d04b7db End the data startup wait when the application is torn down during a slow layer attachment 2026-11-03 15:23:21 +04:00
German Khokhlov 7fb11507d5 Bound the wait for layer attachments, park enables and explicit refreshes until the next scene binds 2026-11-03 15:23:20 +04:00
German Khokhlov 53c114965d Write a machine acceptance report and stop early when no browser or preview is available
qa-all-layer-switches.mjs now checks once that Puppeteer can start Chrome and that the preview answers, and names PUPPETEER_EXECUTABLE_PATH and npx puppeteer browsers install chrome when it cannot. Each run writes <output>/acceptance.json with the commit, dirty files at both ends, Chrome, Node, base URL, times and, per scenario, status, exit code, duration, covered layer ids and the sha256 of its log. It replaces summary.json.
2026-11-03 15:05:37 +04:00
German Khokhlov 65d41b971c Check traffic vehicles one by one against a fixed dark ground after the globe round trip
Live Sentinel-2 imagery is bright at this altitude, so a fixed crop of white two-pixel vehicles changed anywhere from 14 to 300 pixels. The scenario now serves a uniform dark ground tile, waits for the layer to settle with vehicles in view, projects each vehicle to the window and requires 90% of those above the drawn terrain to change the picture where the layer places them; in simulation nothing else may change. Vehicles below the terrain and the population left after the round trip are reported, not asserted.
2026-11-03 15:05:36 +04:00
German Khokhlov 4d2b061e3b Hand the session off on Back/Forward and roll failed globe switches back to the last working engine
The engine switch moves out of main.js into src/standalone/engineSwitch.js: every
engine change in the page hands the session off (layers, Director, Contacts,
directions and satellite cameras), whether it came from the picker or from
history. Each attempt has a generation; a failure rolls back to the last engine
that started, requests made during a switch or recovery are reconciled once it
settles, and a picked engine adds its history entry only after it starts. The
first-frame wait only lifts the cover and never fails a started engine; a
hidden tab does not wait. Nothing starts after pagehide, and a failed recovery
leaves the picker usable.
2026-11-03 14:51:17 +04:00
German Khokhlov 64c5cd25e6 Document which inputs a warm cached renderer keeps from the application that built it 2026-11-03 14:47:36 +04:00
German Khokhlov 64759c552e Release the cockpit cloud WebGL context when its controller is destroyed 2026-11-03 14:47:36 +04:00
German Khokhlov 12cd73bed9 Skip CCTV scene work when its renderer was released during a health refresh 2026-11-03 14:47:35 +04:00
German Khokhlov baabff6acf Stop a Bhote Koshi attachment that resumes after its scene was released 2026-11-03 14:47:35 +04:00
German Khokhlov 2853938df7 Detach every layer from a scene even when one fails, and let in-flight attachments stop first 2026-11-03 14:47:35 +04:00
German Khokhlov dd040b4f87 Let a failed application teardown be retried instead of repeating its rejection 2026-11-03 14:47:35 +04:00
German Khokhlov 0c190c3a15 Format the layer lifecycle, standalone application and Bhote Koshi event with Prettier 2026-11-03 14:36:31 +04:00
German Khokhlov 62296a833c Exercise every catalog layer on both planets and verify live switch continuity 2026-11-03 05:22:02 +04:00
German Khokhlov 05b646daa3 Unsubscribe removed Navara effects and models from warm view frames 2026-11-03 05:16:20 +04:00
German Khokhlov 14f7b32537 Release Navara overlay targets and sprite images on repeated globe switches 2026-11-03 05:04:38 +04:00
German Khokhlov 160e445677 Keep authored scene playback, pack media and geographic interactions across globes 2026-11-03 04:49:46 +04:00
German Khokhlov a49671a391 Preserve satellite tracking, orbit solutions and mission replay across globes 2026-11-03 04:36:49 +04:00
German Khokhlov 133ca14119 Keep CCTV playback and calibration while replacing globe projection surfaces 2026-11-03 04:25:02 +04:00
German Khokhlov 24190a3e35 Keep city stations, vehicle tracks and trail history across globe switches 2026-11-03 04:21:48 +04:00
German Khokhlov c4a97a653c Keep fire and camera selections bound to their source records 2026-11-03 04:18:53 +04:00
German Khokhlov b01f1ee7dc Preserve radio playback and imagery comparisons when switching planets 2026-11-03 04:16:00 +04:00
German Khokhlov b98cbeebf2 Keep street imagery and picked coverage across Cesium and Navara 2026-11-03 04:13:26 +04:00
German Khokhlov 75df3389f3 Keep traffic vehicles and road flow across globe switches 2026-11-03 04:09:21 +04:00
German Khokhlov 4e09559337 Carry the Nepal event images, playback and media across globes 2026-11-03 03:57:18 +04:00
German Khokhlov 811bcaff85 Retain the Nepal locator presentation and draw it on either globe 2026-11-03 03:49:39 +04:00
German Khokhlov 605b9490f3 Move Directions routes and active camera flights between globes 2026-11-03 03:44:07 +04:00
German Khokhlov 5cea3e8cbb Retain the TeleGeography dataset and render cables and landings on Navara 2026-11-03 03:38:15 +04:00
German Khokhlov 2b4955c817 Draw and inspect the same wind forecast when switching globes 2026-11-03 03:34:25 +04:00
German Khokhlov d7b3d45135 Keep local ADS-B receivers and aircraft history alive across engine changes 2026-11-03 03:30:19 +04:00
German Khokhlov c1d829ef51 Draw local infrastructure on either globe from one retained dataset 2026-11-03 03:28:26 +04:00
German Khokhlov 868d061856 Preserve cyclone bulletins, forecast geometry and storm selection across engines 2026-11-03 03:21:58 +04:00
German Khokhlov cb350fa58d Share observed weather clocks and render radar, infrared and lightning on Navara 2026-11-03 03:18:59 +04:00
German Khokhlov 11992828fb Keep GhostMaps KMZ editions and selections across native globe renderers 2026-11-03 03:13:36 +04:00
German Khokhlov 87bbe14748 Keep Contacts, active layer intents and mapped sites across globe switches 2026-11-03 03:05:47 +04:00
German Khokhlov 81bcae907f Preserve AIS observations, selection and trail across globe changes 2026-11-03 02:53:10 +04:00
German Khokhlov e08ddd787b Preserve military aircraft and classification across renderer handoffs 2026-11-03 02:47:32 +04:00
German Khokhlov 1bda760763 Preserve fire incident geometry and selection across both globes 2026-11-03 02:40:36 +04:00
German Khokhlov b7431d7823 Use cockpit readiness for voice entry on either globe 2026-11-03 02:39:27 +04:00
German Khokhlov d7ab85f5c4 Keep Vue layer rows mounted through globe switches and rollback 2026-11-03 02:38:25 +04:00
German Khokhlov 2ee09c5911 Verify renderer startup rollback keeps the flight cockpit usable 2026-11-03 02:32:19 +04:00
German Khokhlov 1930ca247a Keep GNSS history across globe changes and share the Navara ground cell pass 2026-11-03 02:30:52 +04:00
German Khokhlov 6fe5bda028 Draw air quality on both globes from one retained station model 2026-11-03 02:25:10 +04:00
German Khokhlov 99bda8a35e Exercise camera handoff behavior in the location readout regression 2026-11-03 02:23:45 +04:00
German Khokhlov c0062c4d3d Retain live flights and earthquake observations across globe switches 2026-11-03 02:14:55 +04:00
German Khokhlov a0e5f04c30 Separate flight observations and tracking from the scene renderer 2026-11-03 02:04:41 +04:00
German Khokhlov 4bd7f97cc4 Isolate globe renderer suspension from the switch cache 2026-11-02 22:42:40 +04:00
German Khokhlov 73ea608881 Hide map panels when entering the cockpit 2026-11-02 22:21:45 +04:00
German Khokhlov 2087b55b47 Open the cockpit on a tracked Navara aircraft 2026-11-02 22:04:23 +04:00
German Khokhlov 8b179a7e01 Keep Navara cinematic clouds visible at flight altitudes 2026-11-02 21:27:29 +04:00
German Khokhlov 96ce795f8c Keep Navara terrain visible on night-side descents 2026-11-02 20:58:17 +04:00
German Khokhlov 3a2a53aef9 Anchor Navara inspection sunlight to the restored view 2026-11-02 17:26:34 +04:00
German Khokhlov 0d15e80e28 Keep Navara satellite daylight through orbital zoom 2026-11-02 17:11:42 +04:00
German Khokhlov 3cbc17a926 Match Navara satellite landscapes to the Re:Earth Fuji view 2026-11-02 14:05:58 +04:00
German Khokhlov 5e658d8c9d Keep globe renderers warm across live engine switches 2026-11-02 13:45:23 +04:00
German Khokhlov f71c76c306 Restore engine-specific Cinematic sharpness across live switches 2026-11-02 13:19:21 +04:00
German Khokhlov b8f4d097c4 Merge main and switch Cesium and Navara in place through Vue
Preserve the camera, map source and layer selection across engine sessions. Restore the previous engine if startup fails and retain local history navigation.
2026-11-02 13:10:36 +04:00
German Khokhlov 1da65dc264 feat(ui): switch between Cesium and Navara in Visual Presets
Remember the chosen engine and restore the current view after navigation. Keep the standalone JavaScript UI and retire the Dioxus migration and Cesium removal milestones.
2026-11-02 11:29:55 +04:00
German Khokhlov dc7a7c4d53 perf(navara): skip redundant empty-scene resolves
Preserve pending clears, backgrounds, callbacks, shadows and real geometry. Verify exact pixels and the underground depth-clear path; add controlled original-render comparison modes.
2026-10-30 17:24:29 +04:00
German Khokhlov 15f1f9f5b6 perf(navara): submit stencil stages in one render
Preserve the native stencil draws and geometry MSAA while avoiding two intermediate MRT resolves per volume. Verify original pixels, holes, overlaps, ownership and controlled comparison modes.
2026-10-30 14:42:31 +04:00
German Khokhlov c76872dfaa perf(navara): resolve MSAA at geometry stages
Keep four-sample geometry and depth while using single-sample postprocessing buffers. Preserve forward and overlay coverage, skip empty transfers, and add matched pixel and regression checks.
2026-10-30 12:52:50 +04:00
German Khokhlov 8279af2e6d test(navara): record keyless W2 comparison and acceptance gaps 2026-10-29 21:39:20 +04:00
German Khokhlov 0df0fb8261 fix(navara): separate always-visible shader programs 2026-10-29 20:41:13 +04:00
German Khokhlov 8328aab779 fix(navara): batch contours and order ground overlays
Batch consecutive disjoint installation outlines to avoid three stencil draws
per feature. Preserve overlapping volumes, material order and local precision.
Delete the public effect handle correctly during teardown.

Keep imagery below ground classifications and glyphs in every activation order,
including minimal mode without tone mapping. Exclude fully offscreen ground
volumes from the screen candidate grid.

Full unit/allocation, boundaries, formatting and keyless builds pass. Browser
checks cover contour coverage, bounded colour differences, a missing-contour
negative control, real pass order, sprite alpha and FIRMS glows. Whole-wave
performance acceptance remains separate from this implementation checkpoint.
2026-10-29 20:27:24 +04:00
German Khokhlov ef5b44f275 changelog: Arabic (#1479) 2026-10-29 20:05:56 +04:00
German Khokhlov 62bf27ca13 i18n: landing labels in de, fr, it, ja, pt and uk; ar cyclone errors; prune FIRES and Snow 2026-10-29 20:05:03 +04:00
German Khokhlov 188a6086b8 Merge remote-tracking branch 'origin/main' into german/hal-644-ar
# Conflicts:
#	docs/CURRENT-STATE.md
#	docs/TRANSLATORS.md
#	scripts/package-boundaries.json
#	src/hudLocalityFormat.js
#	src/i18n/index.js
#	src/i18n/locale.js
#	src/i18n/same-as-english.json
#	src/layers/cctv/presentation.js
#	src/scenes/recipes.js
#	src/ui/localePicker.test.mjs
#	src/ui/unitLabels.js
2026-10-29 20:05:03 +04:00
German KhokhlovandEnzo Abyie bcabdff88d Merge pull request #1478 from bilawalsidhu/german/hal-642-ja
Japanese in the language picker: the full catalog, counters, unit words joined
to their numbers (5分前, 1時間5分), lower-case HUD units as in Chinese, and the
CJK label rules plus strict line breaking for Japanese. Based on translations
by @abiyeenzo (#913).

Co-authored-by: Enzo Abyie <[email protected]>
2026-10-29 19:58:17 +04:00
German Khokhlov 29692ac7a1 changelog: Japanese (#1478) 2026-10-29 19:48:33 +04:00
German Khokhlov 32d6ce4ea5 i18n(ja): translate strings new in main, drop Snow 2026-10-29 19:47:54 +04:00
German Khokhlov 812308d0ee Merge remote-tracking branch 'origin/main' into german/hal-642-ja
# 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/layers/cctv/presentation.js
#	src/ui/localePicker.test.mjs
2026-10-29 19:47:54 +04:00
German KhokhlovandEnzo Abyie 32ca07b70a Merge pull request #1477 from bilawalsidhu/german/hal-639-de
German in the language picker: the full catalog, neutral infinitive wording,
one/other plurals and the de style guide. Directions keep German nouns
capitalized, and layer names break at word hyphens but not inside codes.
Based on translations by @abiyeenzo (#908).

Co-authored-by: Enzo Abyie <[email protected]>
2026-10-29 19:42:40 +04:00
German Khokhlov 56ca340258 i18n: keep Upper Trishuli as a place name; drop duplicate cyclone keys 2026-10-29 19:36:02 +04:00
German Khokhlov 9ba5a3aba9 fix(navara): invalidate cached glyphs after context loss
Clear the display-resource signature used by static sprite reuse when the WebGL context is lost or restored. Cover both events and verify that caching resumes after the redraw.
2026-10-29 19:26:47 +04:00
German Khokhlov 6ab9432a2a changelog: German (#1477) 2026-10-29 19:01:00 +04:00
German Khokhlov aaadf708ba i18n: Upper Trishuli in fr, it, pt and uk; drop Snow from de 2026-10-29 19:00:19 +04:00
German Khokhlov a092933ad6 Merge remote-tracking branch 'origin/main' into german/hal-639-de
# Conflicts:
#	docs/CURRENT-STATE.md
#	docs/TRANSLATORS.md
#	src/i18n/i18n.test.mjs
#	src/i18n/index.js
#	src/i18n/locale.js
#	src/layers/cyclones/source.js
#	src/scenes/recipes.js
#	src/scenes/sceneTitleDisplay.test.mjs
#	src/ui/localePicker.test.mjs
2026-10-29 19:00:19 +04:00
aa2e5ba181 Merge pull request #1476 from bilawalsidhu/german/hal-638-fr
French in the language picker: the full catalog, French typography, one/many/
other plurals and the fr style guide. Voice plan steps join through a catalog
string so French spaces its colon, and with nine languages the picker shows
its search field. Based on the translation by @abiyeenzo (#907), checked
against @meirm's French catalog (#312).

Co-authored-by: Enzo Abyie <[email protected]>
Co-authored-by: Meir Michanie <[email protected]>
2026-10-29 18:56:49 +04:00
German Khokhlov 48a2cc0690 i18n(fr): drop the Snow strings removed in main 2026-10-29 18:36:29 +04:00
German Khokhlov f59d134928 feat(navara): render clipped recent imagery comparisons 2026-10-29 18:30:49 +04:00
German Khokhlov b84f7f346c Merge branch 'main' into german/hal-638-fr 2026-10-29 18:26:36 +04:00
German KhokhlovandClaude Opus 5.5 e44d15cd34 changelog: French (#1476)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 17:55:31 +04: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
German Khokhlov 5a8bc33fbd feat(navara): render transit vehicles and ground trails 2026-10-29 17:51:17 +04:00
German KhokhlovandEnzo Abyie 613099a34e Merge pull request #1475 from bilawalsidhu/german/hal-640-pt
Brazilian Portuguese in the language picker: 2732 strings, Portuguese plural
forms and the pt style guide. The CCTV summary line names its calibration,
source and view in the page language, markup can give text a context with
data-i18n-context, and the cyclone source errors are translated. Based on
translations by @abiyeenzo (#909).

Co-authored-by: Enzo Abyie <[email protected]>
2026-10-29 17:51:05 +04: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 01a097caae changelog: Brazilian Portuguese (#1475)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 17:42:57 +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
German KhokhlovandEnzo Abyie 15da935b8f Merge pull request #1473 from bilawalsidhu/german/hal-641-it
Italian in the language picker: 2730 strings, Italian plural forms, labels
shortened to fit the panels, and the it style guide. Based on the translation
by @abiyeenzo (#912).

Co-authored-by: Enzo Abyie <[email protected]>
2026-10-29 17:38:34 +04:00
German Khokhlov b8560e5b26 refactor(transit): isolate native rendering from playback 2026-10-29 17:12:18 +04:00
German KhokhlovandClaude Opus 5.5 cf1ef368d0 changelog: Italian (#1473)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 17:06:00 +04: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
c434664549 Merge pull request #1470 from bilawalsidhu/german/hal-645-uk
Ukrainian in the language picker: 2730 strings, four plural forms, Cyrillic
HUD units and the uk style guide. Based on the Ukrainian translation by
@meirm (#312).

Co-authored-by: Meir Michanie <[email protected]>
Co-authored-by: Meir Michanie <[email protected]>
2026-10-29 16:59:48 +04:00
German Khokhlov 694616d5c2 feat(navara): render CCTV media and calibration handles
Port camera markers, coverage, media planes, volumes and calibration to the
Navara renderer. Preserve shared source/media policy and add exact plane
picking, owned resource cleanup and idle hold handling.

Validate paired keyless dev/preview media and physical drags, native legacy,
engine contracts and full CPU/build gates. Record remaining shell, viewshed
browser and W2 performance gates; defer Dioxus and plan the transit port.
2026-10-29 16:53:27 +04:00
German KhokhlovandClaude Opus 5.5 1abe8cbb51 changelog: Ukrainian (#1470)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 15:22:15 +04: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