Commit Graph
3518 Commits
Author SHA1 Message Date
Said Turksever 66a5c483c2 fix: resolve review findings and refresh PR #870 against main 2026-11-03 16:17:31 +00:00
Said Turksever a0924c00d7 fix: resolve review findings and refresh PR #1518 against main 2026-11-03 16:17:30 +00:00
German Khokhlov 1773494116 Run the layer acceptance under a default-deny network policy with per-layer assertion manifests and strict switch contracts
Every scenario runs through scripts/qa-strict-harness.mjs: each page, frame and worker gets an ordered block list before it runs (paid hosts and routes first, then only the preview, declared fixtures, keyless probes and cached free tile hosts), switches with real input on the picker, and records its assertions per layer and engine. The runner reads the catalog from the live page, fails any layer without an assertion on either engine, can build and serve a keyless checkout itself, and adds rapid, hidden-tab, context-loss, failure-injection, cold-chunk and soak scenarios. The main chunk gets a 1% size budget.
2026-11-03 20:15:50 +04:00
German Khokhlov 3144169057 Draw the Navara CCTV frame and viewshed in the depth-tested opaque scene so walls hide them
Navara's transparent pass runs after the post effects without the scene depth, so a camera frame clamped in front of a wall still painted through it. scripts/qa-edge-cctv-occlusion.mjs serves a one-box tileset as a local fixture with no network and checks on both engines that the frame ends at the wall and is not visible behind it.
2026-11-03 20:11:23 +04:00
Said Turksever 2ebde97fb3 Merge pull request #1206 from m3ayush/feat/radio-country-coverage
feat(radio): add configurable priority-country coverage
2026-11-03 16:07:29 +00:00
German Khokhlov 37ea4e1f93 Keep the six map-source tiles on one row and follow the engine picker in the map tray gate
Sentinel-2 made the desktop source row wrap to two rows; the row now lays out every tile in one row (three columns on a phone, as before). scripts/qa-map-source-tray.mjs read the controller's removed imagery internals and counted five tiles between OSM and the styles; it now reads the live base provider and counts the section's tiles and engine picker. The five failures left also fail on origin/main e5d15f24.
2026-11-03 20:00:55 +04:00
German Khokhlov 31b1f27a2e Wait for the traffic refinement task by task instead of for five milliseconds
The handoff test failed under a loaded test runner when the refined pass needed more yields than a fixed 5 ms timer allowed; it now yields until the refined paint lands (bounded by a task count, not wall time).
2026-11-03 19:55:33 +04:00
German Khokhlov f2117a98f2 Ask a parked Navara globe for no frames and guard parked engines in the switch gate
The Navara look stopped requesting frames once its globe is parked. scripts/qa-app-once.mjs now fails if anything moves a parked engine's camera or asks it to draw (its own resume aside).
2026-11-03 19:54:45 +04:00
German Khokhlov 40a81c58e6 Hold the shell's inputs between two engines instead of reaching released controllers
A visual choice made while no globe is attached (a style key, a Display control, a voice command) is queued and applied to the next engine's settings after it restored the address's view, so the person's choice wins; reads answer from the released settings. The globe reset and a location lookup started without a globe do nothing, and the map-source chips and camera buttons are unbound until the next globe binds them.
2026-11-03 19:54:45 +04:00
manjunath22466 11cd0142ac Merge remote-tracking branch 'upstream/main' into feat/typed-ai-chat 2026-11-03 21:22:43 +05:30
Manjunath 3c6c342b2b perf(awareness): skip echo work for the whole frame while pulses rest
The detection overlay asked the echo field for every visible flight,
military aircraft and vessel on every frame while a subject was
selected, projecting each to the ground before learning the pulses were
resting. It now checks awarenessEchoActive once per frame and builds no
echo paths at rest, and awarenessEchoAt checks the level before the
projection.

A detectionHost test with six echo-eligible flights checks that a
resting frame asks for the level fewer times than there are contacts
and paints no echo; it fails on the per-contact path.

The pulse and echo policy doc comments are attached to their constants
again, and one long comment line is re-wrapped.
2026-11-03 21:22:36 +05:30
German Khokhlov df73c5b21a Break Contacts distance ties by identity so navigation reaches the same ID in any feed order 2026-11-03 19:50:25 +04:00
German Khokhlov c96d4ecfb1 Check that a superseded or cancelled launch flyover never takes the Navara camera back 2026-11-03 19:50:24 +04:00
German Khokhlov d5218c4722 Check that a late route answer and the previous engine's camera never take over a Directions route 2026-11-03 19:48:15 +04:00
German Khokhlov 4f8a9f2615 Cover a scene switch at a stopped satellite epoch with an edge-case test 2026-11-03 19:48:05 +04:00
German Khokhlov 1c09c90e13 Test that a late Nepal boundary after cancel leaves the live locator scene alone on both engines 2026-11-03 19:47:29 +04:00
German Khokhlov dae4011604 Pin that bikeshare systems sharing a station ID stay apart and an outage keeps the last status card 2026-11-03 19:47:04 +04:00
German Khokhlov 299a5943a0 Ignore a late image or error from a street-level provider the user switched away from 2026-11-03 19:46:31 +04:00
Said Turksever bc6af1ccd1 Merge branch 'main' into feat/radio-country-coverage 2026-11-03 15:46:24 +00:00
German Khokhlov f7cd6797ec Cover a vessel crossing an area cell during an AIS gap with an edge-case test 2026-11-03 19:46:13 +04:00
German Khokhlov 1910a3b2d5 Check that fires keep their observation sum and draw one marker kind across Navara LOD changes 2026-11-03 19:46:10 +04:00
German Khokhlov c45ec634ee Pin that an ALPR camera on a tile edge stays one record with its tagged azimuth 2026-11-03 19:45:59 +04:00
German Khokhlov d86047fe8f Release the shell from a candidate engine that fails after it attached
The shell's scene part detaches it too, so a candidate failing in a later part (a layer's drawing, Cockpit clouds) leaves the shell free for the working engine instead of refusing every later attach. StyleManager.attachScene releases what it built when it throws, and one detach runs at a time. The controls phase awaits its parts, and a failed attachment no longer forces handoff off for the parts it releases. scripts/qa-app-once.mjs now also rolls back from a Navara candidate whose layer attachment fails.
2026-11-03 19:45:34 +04:00
German Khokhlov 58c8a481ed Report an empty wind field as no reading instead of a NaN speed 2026-11-03 19:45:16 +04:00
German Khokhlov 63b2590b9f Cover an unplugged local receiver and local IDs in share links with edge-case tests 2026-11-03 19:44:55 +04:00
German Khokhlov 4a9b95e31b Pin that an empty installation answer is never reported as an unavailable source 2026-11-03 19:44:50 +04:00
Said Turksever ea69bb4ce2 Merge pull request #1435 from Rohilalala/fix/d-military-positionless-rows
fix(military): don't treat adsb.lol's position-less rows as a partial snapshot
2026-11-03 15:44:49 +00:00
German Khokhlov b977ef29e3 Split submarine cables at the antimeridian and keep their reference beside the crossing 2026-11-03 19:44:33 +04:00
German Khokhlov 293ffb2bd3 Pin that a stale GNSS zone and its refreshed neighbour stay apart and edge positions bin once 2026-11-03 19:44:16 +04:00
German Khokhlov b62f60482e Pin that a zero air-quality reading and a missing one give different cards 2026-11-03 19:43:42 +04:00
German Khokhlov b29e20632b Test that transit heading, data age and selection stay continuous through a stop, a turn and a feed outage 2026-11-03 19:43:37 +04:00
German Khokhlov 736ee8d694 Drop earthquakes older than the USGS feed window and pin duplicate and horizon edge cases 2026-11-03 19:43:07 +04:00
German Khokhlov 03cd379c0e Cover a military ICAO reported by both feeds with edge-case tests 2026-11-03 19:42:46 +04:00
German Khokhlov 57f7edc693 Test that a GhostMaps edition or engine change mid-parse shows only the selected edition 2026-11-03 19:42:10 +04:00
German Khokhlov c34a2c38fc Keep the analyst's last answer when the voice runner moves to another engine
A runner retired by an engine switch ends its in-flight writes but leaves the shared follow-up memory for the next engine's runner; ending the voice conversation still forgets it.
2026-11-03 19:41:12 +04:00
Said Turksever 3afbd0c638 Merge branch 'main' into fix/d-military-positionless-rows 2026-11-03 15:28:59 +00:00
Said Turksever 3ad3cc2ab7 Merge pull request #1308 from bilawalsidhu/codex/overpass-admission-review-fixes
fix(overpass): keyless gate behind a reverse proxy, loopback admission headroom, per-phase arrival budgets
2026-11-03 15:27:19 +00:00
German Khokhlov 8e1a3bab3e Keep the debug handle off window between engines and recover the page after a failed recovery
The application's debug handle is one object, present on window only while a globe is attached, so scripts reading __godsEyeView?.engine.kind see no null engine mid-switch. A detached application has no live components: settle no longer waits for a frame of a missing engine, and an engine that runs again after a failed recovery hides the loading screen the error showed.
2026-11-03 19:10:47 +04:00
Said Turksever 34906c9abb Merge branch 'main' into codex/overpass-admission-review-fixes 2026-11-03 15:07:08 +00:00
Said Turksever e5d15f24d5 Merge pull request #114 from Tom-Neverwinter/prereq-10-osm-overlays
feat: OpenSeaMap / OpenSnowMap overlay layers (#10)
2026-11-03 15:02:24 +00:00
Manjunath 686bc4fd0e fix(awareness): draw the 250 km range ring as an unpickable primitive
The range ring was a Cesium entity, and entities are always picked, so
a click or tap on its edge became an unowned hit: vessel selection read
it as empty space and pickContact stopped its touch search there. A
contact under the 250 km edge was hard to select.

The ring is now a polyline primitive with allowPicking false, in the
same PolylineOutline material and 4 px width the entity used, so it
draws the same. The flash while pulses run writes the material's colour
alphas from the pulses' per-frame update; under reduced motion the
colours stay at full and no listener is added. A subject that moves
250 m rebuilds the primitive and keeps the material, so a flash carries
on across the move. Viewers without a usable primitive collection
(headless tools, stubs) still get a static entity.

The ring's geometry options come from awarenessRingGeometryOptions,
tested directly, and the tests now check that the awareness visual adds
no entity and that every primitive it adds is unpickable, with and
without reduced motion.
2026-11-03 20:25:30 +05:30
Said Turksever 94e4c2176e fix(radio): canonicalize priority country aliases before querying 2026-11-03 14:50:23 +00:00
Said Turksever a6d20120a7 Merge upstream main into PR #1435 for integration review 2026-11-03 14:50:23 +00:00
Said Turksever aff540ad39 Merge upstream main into PR #1206 for integration review 2026-11-03 14:50:23 +00:00
Said Turksever 315c561a7b Restore main's catalog strings and re-pin the voice schema after the main merges
The two Update-branch merges resolved the locale conflicts by keeping
this branch's side, which dropped nine strings main had added (Utilities
panel, drawing colours, cockpit exit). Rebuild each catalog as main's copy
plus Sea Marks and Ski Pistes, and re-pin the voice tool schema length and
digests on top of main's Utilities target.
2026-11-03 14:49:54 +00:00
Manjunath 9e64d517ad Follow up voice tilt review: superseded flights, wait, globe range
- A motion waiting on a voice fly-to follows a later fly-to in the
  same reply that cancels it, within one deadline, instead of
  reporting that its flight did not arrive. A stale reply stops
  following.
- The wait is 15 s, down from 30 s: it holds the tool output, and on
  Gemini the later tools in the turn.
- Beyond 1,000 km of range a tilt happens in place instead of
  swinging thousands of km about the crosshair point.
- The tilt-nudge limits read the pivot pitch the motion starts from,
  including for a voice tilt from a tracked view, whose follow camera
  is released before it moves.
- move_camera's argument checks run before the flight wait, so a
  malformed call is refused at once.
- Tests: t.after cleanup in the fly-then-motion loop, the pitchDeg
  pin asserts the field before removing it, and the handoff-order
  pin follows the extracted argument checks.
2026-11-03 20:05:34 +05:30
Manjunath 0f56b3147b fix(awareness): stop the subject echoing itself and cover the echo wiring
Remaining review follow-ups for the sonar pulses.

No self-echo: pulses are born 5 km out (startFraction of the radius),
but contacts nearer than that, the subject included, still lit on every
pulse birth. They now never echo. Just past the birth ring, an echo is
scaled with the front's own fade-in, so a bracket no longer flashes
before a visible front reaches it. The ring flash at the full radius is
unchanged.

Older Safari: the reduced-motion listener falls back to the media
query's addListener / removeListener when addEventListener is missing,
as other modules here already do.

Echo wiring test: a detectionHost test now paints through the real
detection lane with an echo field set, and checks the echo stroke takes
the echo colour on the default style and each style's line colour under
CRT, NVG and FLIR. CURRENT-STATE notes the 5 km no-echo zone.
2026-11-03 20:04:33 +05:30
Said Turksever 8e40d2689b Merge branch 'main' into prereq-10-osm-overlays 2026-11-03 14:34:32 +00:00
Said Turksever a236504347 fix: respect camera ownership and finish outward zoom framing 2026-11-03 14:32:30 +00:00
Manjunath e4b435568f fix(voice): keep draw=true in the AREAS rule
Tightening the AREAS rule dropped "to outline it (draw=true)", and on Gemini
"Outline the state of Texas" stopped passing draw: none of 5 runs set it, so
the model drew the state again with annotate_map. With the clause back all 4
runs called resolve_area with draw. The prompt is 55,263 characters with an
operator Overpass, ~240 under the 55,500 ceiling.
2026-11-03 19:55:40 +05:30