mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 19:04:02 +00:00
Merge branch 'main' into fix/multipart-cable-feature-ownership
This commit is contained in:
commit
c1b12a6aa4
1214 files changed
+106591
-22945
No files matched your search
@@ -0,0 +1,4 @@
|
||||
- Director clock listeners, interaction observers and scene release failures
|
||||
no longer leave the director inconsistent: each scene is released once, and
|
||||
a phase error is kept (with the release failure logged) when cleanup also
|
||||
fails (deepeshbind, #1014).
|
||||
@@ -1,12 +0,0 @@
|
||||
- `aircraft_in_area` and `vessels_in_area` take `group_by` and `stats`, so an
|
||||
MCP client can ask which airlines, countries, aircraft types or ship types
|
||||
dominate an area, or the average altitude or speed, over every match instead
|
||||
of estimating from the returned rows. Airlines come from the ICAO designator
|
||||
in each callsign (SWA1234 counts as SWA), so the breakdown works on feeds
|
||||
that report no operator; operator and type are counted only where the feed
|
||||
reports them. Ship types count by family, so AIS codes 70 to 79 are all
|
||||
cargo; type 0 ("not available") and the reserved codes 100 to 255 count as
|
||||
unknown. Altitude and speed stats cover airborne aircraft only, so parked
|
||||
aircraft do not pull the means down. Every vessel answer, `find_vessel`
|
||||
included, now reads AIS ship-type codes as their family and a destination
|
||||
with no letters as unknown (quanticsoul4772, #1056).
|
||||
@@ -1,4 +0,0 @@
|
||||
- On Windows, `npm run doctor` and the Pinokio install no longer print Node's
|
||||
DEP0190 warning ("Passing args to a child process with shell option true can
|
||||
lead to security vulnerabilities"): npm.cmd's fixed subcommand is now part of
|
||||
the shell command string instead of an argument array (quanticsoul4772, #1057).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Location search accepts two-dimensional WGS84 `geo:` URIs offline, with
|
||||
the existing coordinate framing and label. Unsupported URI fields are passed
|
||||
to the remaining search providers unchanged (cj-vana, #1071).
|
||||
@@ -0,0 +1,4 @@
|
||||
- FIRMS fire data loads on hosts where IPv6 is unreachable and IPv4 is slow to
|
||||
connect: a request whose every address fails to connect retries once over
|
||||
IPv4, and FIRMS warnings name the underlying connection errors instead of
|
||||
only `fetch failed` (jeffblakely, #1078).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Update DOMPurify to 3.4.17, Sharp to 0.35.5 and source-map-js to 1.2.2 for
|
||||
GHSA-p98j-92pf-mc4p, GHSA-6688-9rhm-gjv2, GHSA-wq5f-xc86-pv6w and
|
||||
GHSA-68fv-2mgg-jv7q; `npm audit` now reports no vulnerabilities (NurstarK,
|
||||
#1094).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Military aircraft keep their last heading and speed when an adsb.lol row omits
|
||||
`track` or `gs`, instead of turning north and stopping; a grounded row without
|
||||
a speed still reads 0 (Aditya, @Rohilalala, #1096).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Overpass data whose element tags contain a failure phrase ("timed out",
|
||||
"runtime error", "too many requests" and similar, e.g. a place named "Timed
|
||||
Out Escape Rooms") is returned as data instead of being refused and putting
|
||||
the endpoint on cooldown; upstream failures are read from the remark (Aditya,
|
||||
@Rohilalala, #1097).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Skip TLE sets whose line 1 and line 2 carry different catalog numbers, so a
|
||||
spliced catalog cannot pair one satellite's elements with another's; the next
|
||||
valid set still parses (VG31OP, #1101).
|
||||
@@ -1,5 +0,0 @@
|
||||
- A failed Esri Satellite or keyless terrain load still shows OSM or flat terrain
|
||||
at once, but no longer lasts the whole session: while the fallback is on
|
||||
screen, the real provider is retried in the background (30 seconds, doubling
|
||||
to a 10-minute cap) and replaces it live once it loads. Map switches never
|
||||
wait for a retry (Aditya, @Rohilalala, #1111).
|
||||
@@ -1,2 +0,0 @@
|
||||
- Exclude aircraft without a reported altitude from requested altitude bands;
|
||||
unfiltered aircraft queries still retain them (rudycelekli, #1115).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Release superseded Google Street View open waits and suppress metadata
|
||||
requests whose viewer was unmounted while the service loaded (rudycelekli,
|
||||
#1117).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Label camera-tool Street View fallbacks as historical Google imagery rather
|
||||
than the current camera view; keep unknown frame provenance explicit
|
||||
(rudycelekli, #1118).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Scenes keep the "Scene not saved" status when a capture, update, append or
|
||||
import cannot be saved, and an unreadable saved project no longer overwrites
|
||||
the recovery checkpoint. `startScene()` resolves to its documented result,
|
||||
`afterShotId` works without an explicit scene, and `scenesRun` counts the
|
||||
distinct scenes queued (djabhi31, #1135).
|
||||
@@ -1,6 +0,0 @@
|
||||
- Fire-perimeter queries handle outlines and holes crossing the antimeridian:
|
||||
areas enclosed near ±180° are included, areas at the opposite meridian are
|
||||
excluded, and returned perimeter coordinates stay near the dateline. Incident
|
||||
cards use the same circular longitude mean and compare multipart outline
|
||||
areas along short longitude edges, keeping the card on the largest polygon
|
||||
(Arianna Method, @ariannamethod, #1142).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Director shot actions land on the requested shot. A seek to a shot's start
|
||||
could round a hair below it and select the end of the previous shot for some
|
||||
shot counts and durations (Aditya, @Rohilalala, #1171).
|
||||
@@ -1,13 +0,0 @@
|
||||
- Keep missing CCTV numbers unknown instead of reading them as zero. `Number`
|
||||
turns null, blank strings and booleans into 0 or 1, and the camera source
|
||||
list sends an unknown number as JSON null, so a source-pack camera that left
|
||||
out its pose reached the browser as zeros clamped to each field's floor —
|
||||
facing north, pitch −2°, FOV 20°, range 120 m, mount 6 m and ground 0 m —
|
||||
instead of the defaults (id-hash heading, −17°, 74°, 700 m, 24 m and the
|
||||
city's ground); a null or blank position placed the camera at 0,0. The
|
||||
server's `toFiniteNumber` and the browser's `safeNumber` now treat absent,
|
||||
blank and boolean values as missing. The same conversion also stops a
|
||||
Tallinn row with a null heading reading as a confident north-facing camera,
|
||||
a Caltrans camera with a blank elevation losing its 150 m ground prior, and
|
||||
a TfL or Catalonia camera with a null or blank coordinate being kept at 0,0
|
||||
or on the zero meridian (omerbberk, #1172).
|
||||
@@ -1,10 +0,0 @@
|
||||
- Flights' ground floor works across the antimeridian. The viewer-distance
|
||||
check behind the 150 km floor radius and its copy in the photoreal mesh-floor
|
||||
sampler subtracted longitudes without wrapping, so two points 21 km apart
|
||||
across 180° measured about 38,000 km and low or grounded aircraft just across
|
||||
the line from the viewer were never floored. A contact's display corridor
|
||||
walked a segment across 180° the long way round, spending its cell budget on
|
||||
ground behind the contact, and a contact on the seam lost its cell hysteresis.
|
||||
SEARCH NEARBY SITES on a view across 180° searched Google Places around
|
||||
longitude 0, on the far side of the globe, with a radius sized from the view's
|
||||
height alone; it now searches the view (Aditya, @Rohilalala, #1173).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Keep missing launch-pad coordinates unknown so launches use the location
|
||||
fallback or stay off the map instead of appearing at 0°N 0°E. Missing stage
|
||||
flight numbers no longer show "FLIGHT 0"
|
||||
(Rudy Celekli, @rudycelekli, #1186).
|
||||
@@ -1,6 +0,0 @@
|
||||
- Add nine Spanish city bike systems to Bike Share and `get_bike_share`: BiciMAD
|
||||
(Madrid), Valenbisi (Valencia), Bizi Zaragoza, Sevici (Seville), BIKI
|
||||
(Valladolid), BiciCoruña, Dbizi (Donostia-San Sebastián), Bilbao Bizi and
|
||||
BicinRivas, about 1,840 stations. Station names read underscores as word
|
||||
breaks, and station capacity counts docks rather than PBSC's geofenced area
|
||||
(ulihhhh, #1190).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Share Launch Library request cache keys across installations refreshing in the
|
||||
same UTC minute, identify the app to the provider, and explain that standard
|
||||
space-missions access needs no key. Optional higher-rate LL2 tokens are paid
|
||||
upgrades; existing local cache and server-only token handling are unchanged
|
||||
(rudycelekli, #1197).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Keep Space Missions marked STALE when Launch Library 2 falls back to cached
|
||||
launch data, and return to NOMINAL after a fresh response without discarding
|
||||
retained missions (rudycelekli, #1199).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Color CCTV cameras with a video feed violet. Cameras with an HLS, MP4 or
|
||||
WebM feed were the same cyan as stills, so a DelDOT or Statens vegvesen
|
||||
video camera could only be found by opening it. Stills stay cyan and the
|
||||
active camera stays amber, and focus de-emphasis fades the violet the same
|
||||
way (Danielslay86, #1200).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Draw CCTV stills at their source aspect on the monitor plane instead of
|
||||
stretching them to the 16:9 canvas. Most DOT cameras publish 4:3 frames, so
|
||||
every still was widened; they are now centered and pillarboxed on the dark
|
||||
the placeholder already ends on (Danielslay86, #1201).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Report actual outcomes when voice enables or disables CCTV through the shared
|
||||
layer lifecycle, including failed and cancelled changes (manjunath22466,
|
||||
#1205).
|
||||
@@ -0,0 +1,5 @@
|
||||
- Keep Directions route errors, the Local ADS-B receiver error and Global
|
||||
Context cohort reasons English in layer data; the Layers panel, Radio card
|
||||
and awareness panel still show them in the interface language. The route
|
||||
proxy's "routing busy" and "route proxy error" refusals are now translated
|
||||
too (daikaginza, #1209).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Avoid starting or queuing a reply when the local channel rejects a typed OpenAI
|
||||
command, while preserving an earlier accepted deferred input
|
||||
(Manjunath, #1220).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Load Ontario 511 cameras again. 511on.ca's camera endpoint now requires a
|
||||
free developer key; set `ONTARIO_511_API_KEY` to enable the pack, which is
|
||||
otherwise skipped with one log line saying where to get a key
|
||||
(quanticsoul4772, #1228).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Harden the Tarktee (Estonia) DATEX2 camera catalog fetches: refuse redirects,
|
||||
cancel both response streams when either response fails or overflows the 4 MB
|
||||
byte cap, and deduplicate camera IDs before per-pack prioritization
|
||||
(yaka0007, #1233).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Serve the camera catalog while it refreshes. An expired catalog made every
|
||||
camera request wait for the slowest pack to reload; it is now answered at
|
||||
once while one background refresh runs, so only the first load waits. Estonia's
|
||||
slow Tarktee feeds get 30 s instead of 15 s, so the pack no longer drops out
|
||||
on about a third of loads (quanticsoul4772, #1234).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Require a geocoded containment anchor for ambiguous analyst region names,
|
||||
preserve boundary provenance and cancellation safety, and retain exact-name
|
||||
precedence for natural outlines (manjunath22466, #1235).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Add Taiwan's national freeway cameras from the Freeway Bureau, MOTC to CCTV:
|
||||
~1,800 cameras read at runtime from the official MOTC 2.0 open-data table,
|
||||
with on-demand snapshots and attribution. No API key is required; set
|
||||
`CCTV_TAIWAN_ENABLED=0` to skip it (419vive, #1237).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Replace the blocky JPEG sky around the globe with the 9,096 stars of the
|
||||
Yale Bright Star Catalogue, drawn as sharp points where they are at the
|
||||
scene time, over a soft Milky Way from ESO/S. Brunier (CC BY 4.0). The Sun
|
||||
and Moon stay; the anime style hides the Milky Way. Assets: 296 kB (gekh,
|
||||
#1243).
|
||||
@@ -1,9 +0,0 @@
|
||||
- Prevent malformed Overpass filters from blocking the local server, and reject
|
||||
cross-site or excessive query requests before reading their bodies
|
||||
(asturksever, #1264; fixes #1248).
|
||||
- Release unread responses from the optional Google-token probe so keyless
|
||||
browser validation can settle; the Overpass gate recognizes only that probe's
|
||||
expected 404 as an unavailable capability (asturksever, #1264).
|
||||
- Make tracking arrival checks respect the aircraft update cadence while checking
|
||||
orientation on the first reveal, avoiding false failures at faster render
|
||||
rates (asturksever, #1264).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Report cached CelesTrak satellite records as stale in the Data Layers row,
|
||||
preserving separate core and dense catalog provenance through refresh,
|
||||
removal and lifecycle cleanup (rudycelekli, #1283).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Keep aircraft route labels on the scheduled airport leg instead of accepting
|
||||
its distant great-circle extensions, preserving generous endpoint tolerance
|
||||
across the signed-angle branch cut (rudycelekli, #1284).
|
||||
@@ -1,4 +0,0 @@
|
||||
- The Street Level SINCE note sits on the value's line, in its type and a
|
||||
size smaller: with KartaView lit it reads ANY DATE (by upload date). It
|
||||
had lost its size variable in the Street Level slim-down and rendered
|
||||
larger than the value, on a line of its own (asturksever, #1286).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Give ordinary sliders a shared native control and consistent track, thumb,
|
||||
value, focus and disabled styling while preserving feature behavior and
|
||||
specialized controls (mazy1998, #1287).
|
||||
@@ -1,5 +0,0 @@
|
||||
- Unify segmented selectors for model coverage, detection allocation, drawing
|
||||
shape, Street View and imagery comparison while preserving their existing
|
||||
behavior. Keep compact labels such as FILL and FLAT on one line, and let
|
||||
collapsed Weather release space to the open rail panel. Reserve the full mode
|
||||
button height in Recent Imagery so keyboard focus is not clipped (mazy1998, #1301).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Give ordinary Scene and CCTV actions shared native buttons with consistent
|
||||
default, destructive and compact styling while preserving their existing
|
||||
behavior and specialized controls (mazy1998, #1302).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Share native dropdown and numeric-field styling across Scene, CCTV, Display
|
||||
and Radio controls, with a shared CCTV number-input builder that preserves
|
||||
existing precision, validation and commit behavior (mazy1998, #1305).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Share read-only status badge presentation across CCTV source/frame labels,
|
||||
calibration provenance and Weather coverage, preserving status meanings,
|
||||
palettes, translations and announcements while preparing the view contract
|
||||
for a future Vue migration (mazy1998, #1306).
|
||||
@@ -1,3 +0,0 @@
|
||||
- Clarify shared field CSS ownership: CCTV owns calibration editor sizing,
|
||||
while Radio and Cyber supply explicit field palettes without changing the
|
||||
current appearance or native control behavior (mazy1998, #1309).
|
||||
@@ -1 +0,0 @@
|
||||
- Validate provider response formats, strengthen camera source checks, and apply consistent API response protections (samehkhamis, #1317).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Pause the HUD's camera readout while the page is hidden, as polled layers
|
||||
already do. An app embedded inline in a panel keeps both updating, because the
|
||||
panel's host can report the page as hidden while it is on screen (nu-stats,
|
||||
#1344).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Restore a shot's declared layer visibility when seeking within it after manual
|
||||
layer changes, including toggles still in flight. Only changed layers are
|
||||
reconciled; refused restoration reports a failed seek and keeps the last
|
||||
position, while undeclared operator layers are preserved (@oneill9, #1374).
|
||||
@@ -0,0 +1,2 @@
|
||||
- A "place, region" search such as "Paris, Texas" now lands on the place in
|
||||
that region instead of a namesake elsewhere (quanticsoul4772, #1401).
|
||||
@@ -0,0 +1,5 @@
|
||||
- The terrain proxy stops asking the upstream for a while after a 429
|
||||
(its Retry-After, at most 10 minutes, or 60 s) instead of retrying on every
|
||||
page request, and a Retry-After longer than its 10 s retry budget now ends
|
||||
the retries at once instead of sleeping the budget out (quanticsoul4772,
|
||||
#1402).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Fire Perimeters and `get_fire_perimeters` say when WFIGS is unreachable and
|
||||
the last snapshot is being shown (STALE, its age, "data may be stale"), and
|
||||
that snapshot is served for at most 24 hours (quanticsoul4772, #1404).
|
||||
@@ -0,0 +1,3 @@
|
||||
- The Traffic layer reads STALE instead of LIVE when the TomTom proxy serves
|
||||
cached flow tiles (budget spent or TomTom failing), and the row dates them by
|
||||
the oldest cached tile (quanticsoul4772, #1405).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Add Traditional Chinese (zh-Hant) with language selection and localized
|
||||
Chinese readouts: the Simplified Chinese catalog written in Traditional
|
||||
characters, based on translations by @abiyeenzo (#914) and @EDIT-Aeterna
|
||||
(#979) (German, @gekh, #1430).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Show a vessel course of 359.5° or more as 0°. Vessel cards and the AIS HUD
|
||||
rounded the course without wrapping, so a ship with no reported heading on
|
||||
a 359.7° course read "360°" and "HDG: 360DEG" (Aditya, @Rohilalala, #1432).
|
||||
@@ -0,0 +1,6 @@
|
||||
- Show a Contacts marker 999.5 m or more away as 1.0 km. The on-globe marker
|
||||
chose metres before rounding, so 999.6 m read "1000 m" while the panel read
|
||||
"1.0 km" (Aditya, @Rohilalala, #1433).
|
||||
- Distance labels share one formatter that takes each unit cut after rounding,
|
||||
so the Contacts panel and markers, the drawn-line measure and the Cockpit
|
||||
show 9.96 km as 10 km rather than 10.0 km (#1433).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Selecting the nearest aircraft by voice no longer says "0 feet" for a contact
|
||||
whose feed reported no altitude; the reply and card leave the altitude out
|
||||
(Aditya, @Rohilalala, #1434).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Military aircraft whose transponders report a GNSS vertical rate now carry it
|
||||
in analyst and tracked-aircraft data instead of null (Aditya, @Rohilalala,
|
||||
#1436).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Show a CCTV camera facing 359.5° or more as HDG 0°. The HUD heading token
|
||||
and the camera panel rounded the bearing without wrapping, so a camera
|
||||
facing 359.6° read "HDG 360°" (Aditya, @Rohilalala, #1441).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Keep Street Traffic's flow status honest at the edges. A few TomTom-matched
|
||||
dots among hundreds rounded to 0% and read "(no matches)", and a few
|
||||
simulated dots rounded to "100% cov"; coverage now stays within 1–99% while
|
||||
both are shown (Aditya, @Rohilalala, #1442).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Run Space Missions' Replay Ascent countdown from T−10 after the five-second
|
||||
tile hold; the hold ran 10 s and the countdown started at T−05 (Aditya,
|
||||
@Rohilalala, #1443).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Keep Space Missions' replay countdown in real time when the replay speed
|
||||
changes before liftoff; 0.25× had stretched T−8 to T−32 (Aditya,
|
||||
@Rohilalala, #1444).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Label a route, arrow or drawn line of 995 m or more as 1.0 km, and of
|
||||
9,950 m or more as 10 km. The placed label picked the unit before rounding,
|
||||
so it read "1000 m" and "10.0 km" (Aditya, @Rohilalala, #1445).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Show a drawn area of 9,999.5 m² or more as 1.0 ha, and of 999,500 m² or
|
||||
more as 1.00 km². The draw hint picked the unit before rounding, so it read
|
||||
"10000 m²" and "100.0 ha" (Aditya, @Rohilalala, #1446).
|
||||
@@ -0,0 +1,6 @@
|
||||
- Local ADS-B decoder feeds now carry a GNSS-sourced vertical rate
|
||||
(`geom_rate`) when no barometric rate is sent, so the card shows V/S
|
||||
instead of a dash (Aditya, @Rohilalala, #1448).
|
||||
- Local ADS-B, military and the adsb.lol flight fallback read the vertical
|
||||
rate through one shared readsb field reader, so all three prefer the
|
||||
barometric rate and fall back to the GNSS rate the same way (#1448).
|
||||
@@ -0,0 +1,3 @@
|
||||
- List each submarine cable once in find_submarine_cables. TeleGeography
|
||||
splits 17 cables (2Africa, Echo, Hawaiki) into several features, so a
|
||||
search for Echo read "3 submarine cables" (Aditya, @Rohilalala, #1449).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Show a route of 9.95 km or more as 10 km. The Directions row and step
|
||||
cards kept one decimal until the raw distance reached 10 km, so 9.96 km
|
||||
read "10.0 km" (Aditya, @Rohilalala, #1450).
|
||||
@@ -0,0 +1,2 @@
|
||||
- Show an ALPR camera's mapped bearing of 359.5° or more as DIRECTION 0°
|
||||
rather than DIRECTION 360° (Aditya, @Rohilalala, #1451).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Show a transit vehicle's reported bearing of 359.5° or more as 0°. The
|
||||
selected-vehicle card rounded it without wrapping, so a bus heading 359.6°
|
||||
read "reported hdg 360°" (Aditya, @Rohilalala, #1452).
|
||||
@@ -0,0 +1,6 @@
|
||||
- Space Missions no longer shows an older satellite with a similar name and a
|
||||
different known launch year as a new payload's orbit: the launch-year check
|
||||
on loaded satellites now runs (Aditya, @Rohilalala, #1453).
|
||||
- Satellite launch years come from one TLE designator parser for both the
|
||||
loaded catalog and the active-TLE fallback; a blank designator is an
|
||||
unknown year instead of 2000 (#1453).
|
||||
@@ -0,0 +1,5 @@
|
||||
- Describe a selected flight or military contact on 359.5° or more to the
|
||||
voice assistant as heading 0°, not 360° (Aditya, @Rohilalala, #1454).
|
||||
- Heading and bearing readouts share one rounding helper, so the Cockpit's
|
||||
TRACK ACQUIRED course no longer reads 360°, and a negative bearing wraps
|
||||
instead of printing a minus sign (#1454).
|
||||
@@ -0,0 +1,5 @@
|
||||
- Cut the Google requests the HUD's AI summary makes on its own. It no longer
|
||||
looks up place names when no OpenAI key is configured, reverse-geocodes at
|
||||
most two points instead of up to four, and looks up again only once the view
|
||||
shows a different area, not after every small pan, so a small pan no longer
|
||||
asks OpenAI for a new summary either (samehkhamis, #1459).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Update the development tools to Vite 6.4.4 and Puppeteer 25.16.0, which
|
||||
clears the open npm advisories for the dev server and the browser test
|
||||
tooling, and remove the unused local screenshot helper `scripts/shot-sink.mjs`
|
||||
(samehkhamis, #1463).
|
||||
@@ -0,0 +1,5 @@
|
||||
- Give the side panels one look. Every panel title now uses the command dock's
|
||||
label type in a brighter colour; a panel's edge and title light up on hover,
|
||||
as the dock's trays do; and in the default theme each collapse button sits
|
||||
19px from its panel's edge (plus the scrollbar's width in an open, scrolling
|
||||
panel where the system always shows scrollbars) (asturksever, #1466).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Remove the Operator HUD layout. Display > HUD > Layout and the HUD voice
|
||||
action now offer Tactical, Minimal and Cyber; share links, scenes and saved
|
||||
views that name Operator open in Tactical (asturksever, #1467).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Remove the Snow visual preset. Visual Presets, keyboard shortcuts, the
|
||||
Cockpit vision carousel and the visual-style voice action now offer Normal,
|
||||
CRT, NVG, FLIR, Anime and Noir; share links and scene shots that name Snow
|
||||
open on Normal (asturksever, #1468).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Add Ukrainian (uk) to the language picker: the whole interface in Ukrainian,
|
||||
with its four plural forms and Cyrillic HUD units. Based on the Ukrainian
|
||||
translation by @meirm (#312) (German, @gekh, #1470).
|
||||
@@ -0,0 +1,7 @@
|
||||
- Remove the Radio icon from the Context panel header, along with the compact
|
||||
Radio player it opened; Radio stays in Context as its own section, and
|
||||
Cockpit's compact Radio is unchanged. Context is also easier to read: the
|
||||
Contacts / Space Missions modes are one segmented control, labels and
|
||||
guidance are larger and higher contrast, the standby hint is plain text
|
||||
instead of a dashed box, and the panel draws no glow halo. Cyber keeps its
|
||||
own framed buttons and red titles (asturksever, #1471).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Rename the Scenes panel to Authoring and lay it out in steps (Scene, Shots,
|
||||
Preview, Save & share) with larger, higher-contrast text, numbered shots, a
|
||||
tooltip on every action and buttons that are disabled when they would do
|
||||
nothing (asturksever, #1472).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Add Italian (it) to the language picker: the whole interface in Italian,
|
||||
with Italian plural forms and labels shortened to fit the panels. Based on
|
||||
the translation by @abiyeenzo (#912) (German, @gekh, #1473).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Add Brazilian Portuguese (pt) to the language picker, with every screen
|
||||
translated and Portuguese plural forms. The CCTV summary line now names its
|
||||
calibration, source and view in the page language. Based on translations by
|
||||
@abiyeenzo (#909) (German, @gekh, #1475).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Add French (fr) to the language picker, with French typography and plural
|
||||
forms. With nine languages the picker now shows its search field. Based on
|
||||
the translation by @abiyeenzo (#907), checked against @meirm's French
|
||||
catalog (#312) (German, @gekh, #1476).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Add German (de) to the language picker, with a full translation of the
|
||||
interface and a German style guide in docs/translations/de.md. Based on
|
||||
translations by @abiyeenzo (#908) (German, @gekh, #1477).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Add Japanese (ja) to the language picker, with year-first dates, Japanese
|
||||
counters, unit words joined to their numbers (5分前, 1時間5分) and CJK label
|
||||
rules for Japanese text. Based on translations by @abiyeenzo (#913)
|
||||
(German, @gekh, #1478).
|
||||
@@ -0,0 +1,5 @@
|
||||
- Add Arabic (ar), the first right-to-left language: the title, rails, dock and
|
||||
corner row mirror, numbers keep Western digits, and plurals use all six
|
||||
Arabic forms. FIRMS cards and Space Missions landing labels are now
|
||||
translated in every language. Based on translations by @abiyeenzo (#915)
|
||||
(German, @gekh, #1479).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Draw only the CCTV cameras in view, and thin them to one per ground cell when
|
||||
zoomed out. Dragging the globe with the default 4,000-camera catalog no
|
||||
longer stalls, and the camera picker lists the cameras in view with a count
|
||||
of the ones outside it (samehkhamis, #1485).
|
||||
@@ -0,0 +1,3 @@
|
||||
- Let a GNSS integrity source set the layer's evidence window (`windowMs`). A
|
||||
missing or invalid value keeps the 30-minute default, and the layer row now
|
||||
names the window in use instead of a fixed "30 min" (samehkhamis, #1491).
|
||||
@@ -0,0 +1,4 @@
|
||||
- Let a weather source describe its own products through an optional
|
||||
`display` object in each manifest (source, credit, units, coverage, info,
|
||||
legend and extent). Each valid field replaces the built-in value, and
|
||||
manifests without it render as before (samehkhamis, #1494).
|
||||
@@ -0,0 +1,205 @@
|
||||
- The language picker switches language in place instead of reloading the
|
||||
page. Views re-render; code that publishes translated text words it again
|
||||
through `onLocaleChange` (`src/i18n/index.js`), and `<html lang>`/`dir` and
|
||||
the page's `data-i18n` markup follow. `persistLocale` replaces
|
||||
`persistLocaleAndReload`, and `registerUnsavedWork` and the switch's
|
||||
unsaved-work prompt are removed, since a switch no longer loses anything
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- A map source's `unavailableReason` may be a function, read when the reason
|
||||
is shown so it follows the locale; the sources from `createDefaultMapSources`
|
||||
(`./maps/defaults`) give functions. `MapSourceController` reads either form
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- The application views translate their text with `t()` as they render,
|
||||
so it follows the active locale; they no longer carry `data-i18n*`
|
||||
attributes, and `npm run i18n` rejects those in a Vue template. The boot
|
||||
pass (`applyDocumentTranslations`) still translates static page markup
|
||||
such as the loading screen and a host's own markup (samehkhamis, #1499).
|
||||
|
||||
- The page's locale lives in a vue-i18n instance installed in every
|
||||
application view, and `t()`, `tn()` and the Intl formatters read it from
|
||||
there, so a view that translates while rendering renders again when the
|
||||
locale changes. `bindLocale` (`src/i18n/index.js`) keeps the locale in a
|
||||
given ref; Core's Vite config builds vue-i18n without its message
|
||||
compiler. Catalogs, messages and call sites are unchanged
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- Cockpit's Display popover shows the Display panel's own HUD, Detection,
|
||||
Parameters and 3D groups through Vue teleports: `CockpitDisplayPortal`
|
||||
publishes the popover's slots (`publish`, with `afterRender` to lay out once
|
||||
they have moved) instead of moving the groups itself (samehkhamis, #1499).
|
||||
|
||||
- The Cockpit utility strip's measured layout renders from the `gev-cockpit`
|
||||
store: the layout pass publishes `utilityLayout` (the HUD's
|
||||
`--cockpit-utility-*` lengths, `primaryOnly` and `hideCollapsed`), and a host
|
||||
constructing `CockpitController` passes `publish.utilityLayout` beside its
|
||||
other publishers (samehkhamis, #1499).
|
||||
|
||||
- The Cockpit Contact and briefing cards' collapse renders from the
|
||||
`gev-cockpit` store: the controller publishes `contextCollapsed` and
|
||||
`signalCollapsed` in its presence, and each card's `data-collapsed` and its
|
||||
toggle's state, words and icon follow it (samehkhamis, #1499).
|
||||
|
||||
- The panels' own state classes (`collapsed`, `dock-pinned`, `dock-pinned-top`,
|
||||
`layout-auto-collapsed`, `accordion-collapsed`) render from the
|
||||
`gev-panel-chrome` store: the shell, the rails and the accordion present each
|
||||
panel's state there instead of writing its classes. `layoutLeftPanelRail` and
|
||||
`layoutRightPanelRail` (`./ui/layout`) now call
|
||||
`onCollapse(panel, {collapsed, auto})` and leave drawing it to the host.
|
||||
Without a shell to own the panels, the voice tools' `set_panel_open` now
|
||||
reports that there is no panel to open instead of writing its classes
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- The shell's panel chrome no longer writes the panels' collapse buttons, the
|
||||
dock tray toggles' names or the dock pins' pressed state: it presents each
|
||||
panel's open and pinned state to the `gev-panel-chrome` store, and the
|
||||
buttons, now views, call it there. `bindPanelDisclosure` (`./ui/panels`) binds
|
||||
only a panel's Escape; it no longer takes `buttons` or `onChange`. `UiButton`
|
||||
joins the component kit (samehkhamis, #1499).
|
||||
|
||||
- `SceneControls` (`./ui/scenes`) no longer takes `elements` or writes the Scene
|
||||
panel's buttons, status, progress or runtime chip: it presents them to the
|
||||
`gev-scenes` store and the panel's buttons call its actions there.
|
||||
`sceneElements`, `presentSceneButtons`, `presentSceneProgress` and
|
||||
`presentSceneRuntime` give way to `sceneButtonsDisabled` and `scenePercent`.
|
||||
It no longer stands down when the page has no Scene panel: ESC still stops a
|
||||
playing scene and the runtime chip still shows (samehkhamis, #1499).
|
||||
|
||||
- `initFirstRunExperience` (via `./application/chrome`) no longer writes the
|
||||
launcher's classes, attributes or text, or removes the card: it presents them
|
||||
to the welcome view's `gev-first-run` store (its new `store` option) and
|
||||
connects the controls the view's buttons call (samehkhamis, #1499).
|
||||
|
||||
- `IntelHUD` (`./ui/hud`) no longer builds or writes `#intel-hud`: it hands its
|
||||
readouts, visibility, layout variant and style colors to its `publish` option,
|
||||
and Core's `intel-hud` view renders them. A page places that view with
|
||||
`<div class="gev-view" data-gev-view="intel-hud">` instead of a bare
|
||||
`#intel-hud` element. `./layers/vessels` shows the selected vessel's HUD
|
||||
readout through `services.readouts.presentSelectedVessel()` instead of writing
|
||||
`#hud-ais-vessel`; the application passes `src/hudReadouts.js`, which IntelHUD
|
||||
follows (samehkhamis, #1499).
|
||||
|
||||
- `LocationControls` (`./ui/location`) no longer builds the city and landmark
|
||||
pills or writes the mini status: it presents the tray, including the search
|
||||
error (`setSearchError()`), and hands it to its `publish` option, and Core's
|
||||
dock renders it and calls `chooseCity()` and `choosePoi()`. Its `elements` are
|
||||
now only `search`: `resetButtons` and `searchToggle` are gone, and the reset
|
||||
buttons and the search toggle call its new `reset()` and `toggleSearch()`. It
|
||||
presents the search field's open and searching state too (`searchExpanded`,
|
||||
`searching`; a `searchExpanded` option starts it open), set through
|
||||
`setSearching()`, `settleSearch()` and `closeSearch()`, and a host renders the
|
||||
field's `expanded` and `searching` classes from it; `LocationSearch` takes a
|
||||
`setSearching` option in place of writing the field's class, and
|
||||
`NavigationController` a `settleSearch` option in place of `searchInput`.
|
||||
`createOrbitIndicator()` is replaced by `showOrbit(active)`, which adds the
|
||||
ORBIT indicator to the presented tray as `orbit: { active }` (null until
|
||||
offered) (samehkhamis, #1499).
|
||||
|
||||
- `createMapSourceControls()` (`./ui/maps`) no longer renders the map source
|
||||
chips into a `container` or writes a `statusElement`: it presents the chip row
|
||||
and status badge and hands them to its `publish` option, and Core's dock
|
||||
renders them and calls `select()`. `renderMapStackChips`, `syncMapStackChips`
|
||||
and `MAP_STACK_CHIP_CLASS` are removed (samehkhamis, #1499).
|
||||
|
||||
- `./layers/launches` no longer writes the Space Missions roster or the selected
|
||||
mission panel into `#space-mission-panel-host`: the layer publishes both
|
||||
through `subscribePanel(listener)` and Core's Space Missions views render
|
||||
them, calling the layer's panel commands (`selectMissionAt`,
|
||||
`selectPreviousMission`, `selectNextMission`, `deselectMission`,
|
||||
`focusSelectedLaunchSite`, `startSelectedReplay`, `toggleReplayPause`,
|
||||
`cancelReplay`, `setReplaySpeed` and the `roster*` preview inputs). The
|
||||
`bindMissionRosterItemKeyboardPreview`, `captureMissionRosterFocus` and
|
||||
`restoreMissionRosterFocus` helpers are gone; the roster keeps focus itself
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- `./layers/awareness` no longer writes the Contacts panel into
|
||||
`#military-awareness-panel`: the layer publishes a plain panel view through
|
||||
`subscribePanel(listener)` and Core's Contacts view renders it, calling the
|
||||
layer's `navigatePrevious`, `focusCurrent`, `navigateNext` and `focusTarget`.
|
||||
The `awarenessPanelControlKey`, `captureAwarenessPanelFocus` and
|
||||
`restoreAwarenessPanelFocus` helpers are gone; the view keeps focus itself
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- `./ui/cctv` and `./ui/radio` import Vue and Pinia: their controllers publish
|
||||
the panel's state to a store that the CCTV and Radio views render, instead of
|
||||
writing the panel's markup themselves (samehkhamis, #1499).
|
||||
|
||||
- `./ui/display`'s `bindDisplayControls` is gone: the Display panel's controls
|
||||
and the dock's style buttons call their owner through the display store's
|
||||
`connect`/`act`, and its allocation and 3D model choices are the kit's
|
||||
`UiSegmented`. `initDrawTool` takes `connect(actions)`, which returns their
|
||||
disconnect, and no longer listens on the Draw controls; its view publishes
|
||||
`color` and `label` too, and the shape choice is a `UiSegmented`.
|
||||
`initGeoFileImport` takes `connect(actions)` the same way and no longer
|
||||
listens on the Import button, picker or list, nor restores focus itself: the
|
||||
`GeoImport` view does both, and its `publish` need not settle once the list
|
||||
renders. Street Level's fit and panorama filters and Recent Imagery's mode are
|
||||
`UiSegmented` too: the Street Level store's owner answers `setPano` and
|
||||
`setRenderMode`, and `RecentImageryReadout` takes `onSetMode`. The Radio
|
||||
panel's and Cockpit's internet radio controls and the tuner slider's events
|
||||
call `RadioControls`, and the local RTL-SDR card's controls
|
||||
`LocalSdrControls`, through the radio store's new `connect`/`act`; the card
|
||||
labels its gain options itself. `act` returns what the answering action
|
||||
returned. The Display, Radio, RTL-SDR, Cockpit, mission replay, style
|
||||
parameter, rail card, observation timeline, imagery opacity, Street Level date
|
||||
and Bhote Koshi sliders are the kit's `UiSlider`, a native range input that
|
||||
emits numbers, and the pressed toggles are the kit's `UiButton`, which gains
|
||||
`pressedClass`; so are the rail card chips, map source chips and location
|
||||
pills (which now report `aria-pressed`), and the voice card's chips are the
|
||||
kit's new `UiChip`. The selects are the kit's new `UiSelect`, the status
|
||||
badges its new `UiBadge` and the one-line empty states its new `UiEmpty`. The
|
||||
top-center clear, share, tilt, north-up and reset buttons, and the cockpit's
|
||||
reset, call the shell through the new globe actions store, which also carries
|
||||
the camera's tilt and compass heading. The recording safe frame renders what
|
||||
`RecordingControls` publishes to the new recording store. `syncScopeControls`
|
||||
(`./ui/display`), `shouldHideCollapsedRightPanels` (`./ui/layout`),
|
||||
`bindClearLayersControl` (`./ui/layers`) and `createStyleParameters`
|
||||
(`./ui/input`; the Display panel renders the style parameters VisualSettings
|
||||
publishes to the display store) are deprecated: the Display view, the rail and
|
||||
the globe actions view now own what they did. `./ui/input` imports Vue
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- `./scenes` presents the scene sharing dialogs and the EDIT DETAILS / SHARE
|
||||
SCENE bar through a store that the scene panels view renders, so a page that
|
||||
omits `layer-panels` shows neither (samehkhamis, #1499).
|
||||
|
||||
- `./voice/control`'s `createVoiceControl({ panel })` returns the voice
|
||||
control's presenter instead of element handles: owners write it by part
|
||||
(`update('detail', { text })`) and listen with `on('button', fn)`, and the
|
||||
command dock renders it from a store. `createVoiceCommands`' `createControl`
|
||||
and `VoiceCardControls` (`{ ui }` instead of `{ root }`) take the same
|
||||
presenter; the `reset` option is gone, since a newer control replaces the
|
||||
previous one (samehkhamis, #1499).
|
||||
|
||||
- Pages place each view with a `<div class="gev-view" data-gev-view="NAME">`
|
||||
host and write their own loading screen; the `build/html` template expansion
|
||||
and its `gev:template` markers are gone. `createApplication` takes `omitViews`
|
||||
(for example `['provider-settings']`) for views an application leaves out
|
||||
(samehkhamis, #1499).
|
||||
|
||||
- The page's panels, dock, cockpit and dialogs are Vue views with the same
|
||||
markup as before. Hosts that do not initialize Core's locale pass
|
||||
`localePicker: false` to `createApplicationControls` to drop the language
|
||||
picker, and Node tests that import application modules register the component
|
||||
loader with `--import=<core>/build/register-vue` (samehkhamis, #1499).
|
||||
|
||||
- The Data, Authoring, Weather, Recent Imagery, Context, CCTV, Street Level and
|
||||
Radio panels are one component, `UiPanel` (`src/ui/kit/`), with the same
|
||||
markup plus the kit's `ui-panel` classes, their titles translated by `t()`
|
||||
rather than `data-i18n`; `RailPanel` binds it to the panel chrome store.
|
||||
`PanelCollapseButton` drops its `initial` and `initialTitle` props and takes
|
||||
`startCollapsed`, so before startup presents a panel its button already shows
|
||||
that state's glyph, words and `aria-expanded` (samehkhamis, #1499).
|
||||
|
||||
- The Authoring, shot list and CCTV buttons and Street Level's nearest button
|
||||
are the kit's `UiButton` (danger buttons in the `alert` tone, primary ones the
|
||||
`primary` variant), keeping their classes; the CCTV on/off, coverage,
|
||||
auto-hop, projection and adjust toggles now say their state with
|
||||
`aria-pressed` (samehkhamis, #1499).
|
||||
|
||||
- Each desktop sidebar has an icon rail that lists every panel on that side and
|
||||
opens one with a click. One panel is open per side in every HUD layout, so the
|
||||
collapsed panel headers no longer take up the sidebars. Phones keep the bottom
|
||||
tab bar. The rail is the first view built with Vue and Pinia, which now ship
|
||||
with the app; see docs/VUE-MIGRATION.md (samehkhamis, #1499).
|
||||
@@ -0,0 +1,4 @@
|
||||
- `build/register-vue` loads components on the test thread and keeps compiled
|
||||
components between test processes in a per-user cache directory, so Node
|
||||
tests that import views run about twice as fast. `GEV_VUE_CACHE=0` compiles
|
||||
every time (samehkhamis, #1500).
|
||||
@@ -0,0 +1,3 @@
|
||||
- The side panel rails show each panel as a labelled pill while no panel on
|
||||
that side is open, and fold to icons once one opens. `UiRail` takes
|
||||
`collapsible` for this (samehkhamis, #1501).
|
||||
@@ -1,5 +0,0 @@
|
||||
- The client's great-circle distances now come from one shared
|
||||
`src/geoDistance.js` (`greatCircleKm`/`greatCircleMeters`, `{lat, lon}`
|
||||
points). The Earth radius is standardized on 6371.0088 km, so distances shift
|
||||
by about 1.4 ppm and region areas by about 2.8 ppm, and missing or
|
||||
out-of-range points return `Infinity` (onionviolet, #287; Rajojha-1, #749).
|
||||
@@ -1,9 +0,0 @@
|
||||
- Add FL511 (Florida DOT) traffic cameras as an opt-in CCTV source pack:
|
||||
the statewide ArcGIS catalog, read a page at a time under a byte cap with
|
||||
redirects refused, and frames pinned to FL511's two image hosts over HTTPS.
|
||||
FL511's terms limit its content to individual, personal use, and any other
|
||||
use (a public deployment included) needs FDOT's express written consent, so
|
||||
the pack stays off unless `CCTV_FLORIDA_ENABLED=1`. Headings come from the
|
||||
catalog's direction codes, and camera ids come from the image channel, since
|
||||
the catalog's ID column repeats across regions. `CCTV_FLORIDA_MAX_SOURCES`
|
||||
sets the cap (Danielslay86, #605).
|
||||
@@ -1,9 +0,0 @@
|
||||
- Bound what a caller can grow through `/api/terrain/heights`. Every distinct
|
||||
5-decimal point was a permanent in-memory entry, a permanent line in an
|
||||
uncapped `.gev-cache/terrain-heights.json`, and a live upstream call, with
|
||||
nothing limiting the rate. The point cache now holds at most 50,000 entries
|
||||
and evicts oldest-first, a cache file above
|
||||
24 MB is not read back, and the route is limited to 90 requests/minute per
|
||||
client (270 global). Evicting a point costs one refetch, never a wrong
|
||||
answer, since terrain does not move. Ordinary use is unaffected: a full
|
||||
`test:track` run drives 10 requests, peaking at 8/min (daikaginza, #686).
|
||||
@@ -1,5 +0,0 @@
|
||||
- The dev server no longer watches `.gev-cache` and `.gev-logs`. Providers write
|
||||
cache files and logs there while the app runs, and none of it is source, so
|
||||
the watcher now skips it; this guards against the DNS-lookup delays heavy
|
||||
cache writes have caused, though no difference was measured on current main
|
||||
(monwiss, #761).
|
||||
@@ -1,11 +0,0 @@
|
||||
- Read satellite catalog numbers written in Alpha-5, the TLE spelling of
|
||||
numbers above 99999: a letter for the first two digits, skipping I and O
|
||||
(`A0000` is 100000, `Z9999` is 339999). The satellites layer converted such a
|
||||
field to `NaN`, so every Alpha-5 satellite shared one catalog entry and all
|
||||
but the first were dropped as duplicates; the satellite tools read the same
|
||||
field as no number, so such a satellite could not be found by it. The layer
|
||||
and the tools now decode the field in `src/sources/tle.js`, and reject a
|
||||
malformed one (a sign, decimal point, hex, embedded space or stray letter)
|
||||
instead of reading part of it as a number. This is Alpha-5 TLE
|
||||
compatibility: CelesTrak's TLE feed carries no satellite above 99999, which
|
||||
needs the OMM feed (#1191) (Honorius Neogy, #767, fixes #751).
|
||||
@@ -1,7 +0,0 @@
|
||||
- Changelog entries are now one file per pull request. A change adds
|
||||
`changelog.d/<pull request>-<slug>.md` instead of editing the top of
|
||||
`CHANGELOG.md`, which two pull requests in flight could not share — it was the
|
||||
most frequent merge conflict in the open queue, and for six of them the only
|
||||
one. `npm run changelog` splices the directory into `CHANGELOG.md` at release
|
||||
time and empties it; `npm run changelog:check` reports the batch and changes
|
||||
nothing. Fragment text is copied through unchanged (daikaginza, #787).
|
||||
@@ -1,7 +0,0 @@
|
||||
- Close the compact Radio disclosure when an adaptive tactical right-rail
|
||||
restore directly expands Context, before Space Missions can be covered.
|
||||
A repeated Context-open request also clears stale disclosure state.
|
||||
Real PanelChrome constructor wiring and the rail reflow path are covered
|
||||
by focused regressions. Credits: kvnloo (#816), raysung-2026's original
|
||||
#804 report, asturksever's review, and quanticsoul4772's independent
|
||||
Windows diagnosis.
|
||||
@@ -0,0 +1,7 @@
|
||||
- Let the scene idle with AIS vessels enabled. Vessels no longer hold the
|
||||
continuous render loop; they request frames for new data and selection, one
|
||||
trailing frame after the camera stops, and hold the loop only while focus
|
||||
emphasis animates or a vessel stays dimmed under a tracked target. A parked
|
||||
vessels-only scene went from continuous rendering to 0 frames in 5 s. While
|
||||
anything is tracked, the vessel focus pass skips hidden sprites at rest:
|
||||
about 4 ms to 1.2 ms per pass over 12,000 vessels (waar19, #871).
|
||||
@@ -1,4 +0,0 @@
|
||||
- Add optional Gemini Live voice to the standalone app, with a provider chooser,
|
||||
server-held API key, microphone streaming, shared map actions and captions.
|
||||
Switching providers ends the old conversation and preserves the input mode
|
||||
(Manjunath, #872).
|
||||
@@ -1,6 +0,0 @@
|
||||
- Extract a reusable model-free World Packet from the existing voice
|
||||
`get_current_view_state` owner without restoring disabled layers to the
|
||||
model context. Keep the enabled-only payload, disabled-layer count, source
|
||||
provenance, action result and view-state contract; read the layer roster once
|
||||
per packet; voice retains the speech/card envelope at its own boundary.
|
||||
Credits: original GEV voice/layer contributors and #880 implementation.
|
||||
@@ -1,17 +0,0 @@
|
||||
- Give each Statens vegvesen camera its own ground height from Kartverket's
|
||||
keyless point-height API (CC BY 4.0) instead of one flat 150 m prior, so
|
||||
mountain-pass cameras no longer sit hundreds of metres below the terrain
|
||||
where neither the point-height prior nor the ground snap resolves. About 850
|
||||
of ~855 cameras get a height; the rest keep the old prior. Requests carry 20
|
||||
points, the most the API answers from its 1 m terrain model, eight at a
|
||||
time; a cold lookup takes about 6–13 s. Cameras over water use the water
|
||||
surface rather than the sea-floor depth the API returns there; for bridge
|
||||
cameras that is still below the deck. Heights are cached for good and misses
|
||||
for 6 h, so a refresh only asks about new or moved cameras. After a
|
||||
failing request (a 408, 429 or 5xx, a network error, a request over 10 s or
|
||||
an unreadable body) the lookup stops and backs off (Retry-After, else
|
||||
30 min, longer than the refresh). The lane waits at most 12 s from its
|
||||
start, and only on a cold cache; a slower first lookup leaves the cameras it
|
||||
had not reached on the flat prior until the next 15-minute refresh, and
|
||||
keeps filling the cache meanwhile.
|
||||
`CCTV_VEGVESEN_HEIGHTS=0` turns it off. Follow-up to #929 (trygvehhh, #945).
|
||||
@@ -0,0 +1,8 @@
|
||||
- Add the Autostrada del Brennero (A22, Brenner–Modena) motorway webcams as a
|
||||
CCTV pack, the first Italian cameras. The 13-camera list is one keyless
|
||||
request to the Open Data Hub (NOI Techpark) tourism API, which republishes
|
||||
Autobrennero's own list with coordinates; frames are the operator's stills,
|
||||
refreshed about once a minute and pinned to each camera's own `km<N>.jpg`.
|
||||
Each camera's ground elevation comes from a per-kilometre DEM table, since
|
||||
the road climbs from the Po valley to the Brenner Pass. `CCTV_A22_ENABLED=0`
|
||||
disables the pack (Jibran Tahir, @jibraaan, #956). Closes #155.
|
||||
Loaded 100 of 1214 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user