From da6b63b6fdd95df533d7fbfce2ae0a3b65b1d21a Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Mon, 9 Nov 2026 16:45:11 +0400 Subject: [PATCH] docs(tools): tighten the heading-wrap changelog, comments and overview --- changelog.d/1524-tools-heading-wrap.md | 7 +++---- docs/CURRENT-STATE.md | 4 +--- src/tools/queries/environment.js | 2 +- src/tools/queries/space.test.mjs | 4 ++-- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/changelog.d/1524-tools-heading-wrap.md b/changelog.d/1524-tools-heading-wrap.md index 2a630f600..3647bf9a8 100644 --- a/changelog.d/1524-tools-heading-wrap.md +++ b/changelog.d/1524-tools-heading-wrap.md @@ -1,4 +1,3 @@ -- The agent and voice query tools report a direction that rounds to 360 as 0: - vessel course and heading, aircraft course, transit bearing, camera heading - and satellite azimuths now round through the shared heading helper the - layers use, which wraps into 0–359 (@quanticsoul4772, #1524). +- The agent and voice query tools wrap whole-degree directions into 0–359, so + a vessel course or heading, aircraft course, transit bearing, camera heading + or satellite azimuth that rounds to 360 reads 0 (@quanticsoul4772, #1524). diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md index 57daf7849..0ffb49ea8 100644 --- a/docs/CURRENT-STATE.md +++ b/docs/CURRENT-STATE.md @@ -398,9 +398,7 @@ perimeters, terrain height, military installations and map features, plus a combined situation brief, military awareness around a point, the app's heads-up display caption, and a link that opens the app over an area. Tools reuse the layers' portable source factories, take a shared `area` argument (place name, bounding box, or point and radius) and cap -lists at 25 rows by default. Their whole-degree directions round through -`roundHeadingDegrees`, listed with the heading readouts below. -`aircraft_in_area` and `vessels_in_area` can also +lists at 25 rows by default. `aircraft_in_area` and `vessels_in_area` can also count every match by a field (`group_by`: airline, read from the ICAO designator in the callsign, or operator, country or type for aircraft; type or destination for ships; the ten largest groups, then other and unknown counts; diff --git a/src/tools/queries/environment.js b/src/tools/queries/environment.js index 0af696e36..1f5800d53 100644 --- a/src/tools/queries/environment.js +++ b/src/tools/queries/environment.js @@ -71,7 +71,7 @@ function weatherRow(weather) { precipitation_mm: weather.precipitationMm ?? null, cloud_cover_pct: weather.cloudCoverPct ?? null, wind_kph: weather.windKph ?? null, - // Raw Open-Meteo value, like the fields above; it reports north as 360. + // Raw Open-Meteo value, so north reads 360. wind_direction_deg: weather.windDirectionDeg ?? null, visibility_m: weather.visibilityM ?? null, }; diff --git a/src/tools/queries/space.test.mjs b/src/tools/queries/space.test.mjs index 41394e305..cb12dfcbe 100644 --- a/src/tools/queries/space.test.mjs +++ b/src/tools/queries/space.test.mjs @@ -305,8 +305,8 @@ test('satellite azimuths that round to 360 read as 0', async () => { tools: coreTools, services: { satellites: satellites(), clock: CLOCK }, }); - // These points are chosen so the ISS's raw azimuths fall just below 360°; - // pin that first, so the test cannot pass on a raw value already near 0. + // At these points the ISS's raw azimuths fall just below 360°; check that + // first so the test cannot pass on a raw value near 0. const [, line1, line2] = TLE.split('\n'); const iss = twoline2satrec(line1, line2); const nearNorth = (deg) => deg > 359.5 && deg < 360;