Sameh Khamis
1fb0fdad71
Merge pull request #1662 from bilawalsidhu/sameh/contacts-follow-world-clock
...
feat(live): flights, military and vessels follow the world clock; vessels keyed by source id; share a selected vessel
2026-11-10 18:35:44 -08:00
Sameh Khamis
c45d9cfb03
Merge branch 'main' into sameh/contacts-follow-world-clock
2026-11-10 18:26:22 -08:00
Sameh Khamis
cb414a1671
Merge pull request #1661 from bilawalsidhu/sameh/gemini-error-locale
...
fix(voice): Gemini voice messages follow a language change
2026-11-10 18:20:57 -08:00
Sameh Khamis
962f7293c6
Merge pull request #1660 from bilawalsidhu/sameh/gemini-keyless-mic-hint
...
fix(voice): keyless Gemini voice drops the microphone hint
2026-11-10 17:20:20 -08:00
Sameh Khamis
9560a6dcd1
Merge pull request #1599 from bilawalsidhu/fix/keyless-voice-key-hint
...
fix(voice): keyless mic says where to add the OpenAI key
2026-11-10 16:22:58 -08:00
Sameh Khamis
775e9df120
Merge pull request #835 from kvnloo/feat/viewport-context-decision-upstream
...
feat(voice): reason-code viewport context escalation
2026-11-10 16:04:54 -08:00
Sameh Khamis
49edc31879
Merge branch 'main' into feat/viewport-context-decision-upstream
2026-11-10 15:54:49 -08:00
Sameh Khamis
4442243749
Merge pull request #1659 from bilawalsidhu/sameh/detection-occlusion
...
Hide street-vehicle brackets and labels behind buildings and terrain
2026-11-10 15:45:56 -08:00
Sameh Khamis
126616ac6c
Merge pull request #1657 from bilawalsidhu/sameh/photo-without-credit
...
feat(flights): show a Planespotters photo even when it names no photographer
2026-11-10 14:32:17 -08:00
Sameh Khamis
c068dc2290
Merge branch 'main' into sameh/photo-without-credit
2026-11-10 14:23:06 -08:00
Sameh Khamis
e5bf072f6c
Merge pull request #1583 from IMBrandao/feat/shipwrecks
...
feat(layers): add shipwrecks layer (EMODnet + Wikidata)
2026-11-10 14:19:54 -08:00
Sameh Khamis
85b1694bad
Merge pull request #1656 from bilawalsidhu/sameh/signal-lost-followups
...
fix(flights): a stalled feed dims the tracked aircraft as STALE
2026-11-10 13:13:14 -08:00
Sameh Khamis
c87510fd2e
Merge pull request #1574 from IMBrandao/feat/transit-icon-heading
...
feat(transit): give vehicle icons a readable front, and none without a course
2026-11-10 12:36:09 -08:00
Sameh Khamis
05daaf267a
Merge branch 'main' into feat/transit-icon-heading
2026-11-10 12:24:46 -08:00
Sameh Khamis
3da4204e97
Merge pull request #1655 from bilawalsidhu/sameh/route-corridor
...
fix(flights): a long flight keeps its route up to 15% of its length off the great circle
2026-11-10 11:53:33 -08:00
Sameh Khamis
d1cd7f63ef
Merge branch 'main' into sameh/route-corridor
2026-11-10 11:45:29 -08:00
Sameh Khamis
9947c6b2e5
Merge pull request #1654 from bilawalsidhu/sameh/flight-trails
...
feat(flights): trails split at gaps and follow the aircraft; a lost aircraft coasts, then reads SIGNAL LOST
2026-11-10 11:43:22 -08:00
Sameh Khamis
66a8ff06cb
Merge pull request #1650 from bilawalsidhu/sameh/firms-window-label
...
fix(firms): label a snapshot that ends at a set time with that time, not LIVE
2026-11-10 10:44:53 -08:00
Sameh Khamis
bb45aacb24
Merge branch 'main' into sameh/firms-window-label
2026-11-10 10:27:01 -08:00
Sameh Khamis
bb40ac5e54
Merge pull request #1647 from bilawalsidhu/sameh/flight-photo
...
Show the tracked aircraft's Planespotters photo in Contacts
2026-11-09 21:21:22 -08:00
Sameh Khamis
9fe27c2d75
Merge branch 'main' into sameh/flight-photo
2026-11-09 21:13:16 -08:00
Sameh Khamis
c620fac9dc
Merge pull request #1645 from bilawalsidhu/sameh/traffic-lines-one-build
...
perf(traffic): build road lines one set at a time
2026-11-09 20:41:55 -08:00
Sameh Khamis
78c5b6c245
Merge pull request #1641 from bilawalsidhu/sameh/draw-shape
...
Applications can take the pointer for their own tool
2026-11-09 17:38:26 -08:00
Sameh Khamis
28907caf7b
Merge branch 'main' into sameh/draw-shape
2026-11-09 17:30:15 -08:00
Sameh Khamis
da134328ef
Merge pull request #1642 from bilawalsidhu/sameh/transit-floor-fix
...
Keep vehicles off rooftops and bridge decks by reading the 3D-tile surface where each vehicle is
2026-11-09 15:12:25 -08:00
Sameh Khamis
027c9616a5
Merge pull request #1637 from bilawalsidhu/sameh/orbital-followups
...
Orbital cockpit follow-ups: sensor strip through zoom, one owner-flag sheet, place names in the loading status
2026-11-08 20:21:29 -08:00
Sameh Khamis
1453794573
Merge pull request #1636 from bilawalsidhu/feat/draw-mark-actions
...
Draw rows take an application's own actions
2026-11-08 18:27:04 -08:00
Sameh Khamis
eb1969e874
Merge branch 'main' into feat/draw-mark-actions
2026-11-08 18:20:47 -08:00
Sameh Khamis
4ee617cf42
Merge pull request #1580 from ZloyS/denis/gev-orbital-focus
...
feat(cockpit): keep the orbital camera on a ground target
2026-11-08 17:21:27 -08:00
Sameh Khamis
745c11969b
Merge pull request #1560 from ZloyS/denis/gev-sensor-zoom
...
feat(cockpit): zoom the orbital view to the imaging sensor's swath
2026-11-08 16:53:41 -08:00
Sameh Khamis
a274d10038
Merge pull request #1559 from ZloyS/denis/gev-orbital-view
...
feat(cockpit): ride a tracked satellite in an orbital view
2026-11-08 16:27:41 -08:00
Sameh Khamis
e944f75275
Merge pull request #1558 from ZloyS/denis/gev-satellite-classes
...
feat(satellites): file satellites under six classes with a toggle each
2026-11-08 16:17:12 -08:00
Sameh Khamis
30fbfe238f
Merge pull request #1557 from ZloyS/denis/gev-ship-bridge
...
feat(cockpit): ride the selected vessel from its bridge
2026-11-08 16:03:54 -08:00
Sameh Khamis
922712121c
Merge pull request #1634 from bilawalsidhu/fix/layer-state-registered-only
...
Layer state keeps only layers the application registered
2026-11-08 14:28:48 -08:00
Sameh Khamis
7ee7dc26b8
Merge pull request #1513 from bilawalsidhu/sameh/world-timeline-launches
...
Move launches with the timeline, choose its speed, and wait for data while it plays
2026-11-08 12:32:37 -08:00
Sameh Khamis
ff0b4d8449
Merge branch 'main' into sameh/world-timeline-launches
2026-11-08 12:24:39 -08:00
Sameh Khamis
424bcb0843
Merge pull request #1512 from bilawalsidhu/sameh/world-clock
...
Keep one world clock, with a timeline to move it
2026-11-08 12:23:12 -08:00
Sameh Khamis
6cadfc9583
Merge pull request #1620 from bilawalsidhu/fix/cctv-initial-nearest-camera
...
CCTV opens on the camera nearest the viewer, not the first in the catalog
2026-11-07 04:04:38 -08:00
Sameh Khamis
c0a5d4141d
Merge pull request #1616 from bilawalsidhu/fix/chat-tool-schema-patterns
...
fix(chat): send OpenAI chat tool schemas Chat Completions accepts
2026-11-06 22:21:05 -08:00
Sameh Khamis
6e4da23cf7
Merge pull request #1609 from bilawalsidhu/feat/traffic-lines-toggle
...
Street Traffic: Lines and Dots toggles; hosts choose which road modes they offer
2026-11-06 13:46:00 -08:00
Sameh Khamis
a33bc379cb
Merge pull request #1595 from bilawalsidhu/fix/traffic-flow-error-labels
...
Traffic: name an account's traffic limit instead of a daily budget
2026-11-05 21:29:09 -08:00
Sameh Khamis
ad009ea1eb
Merge pull request #1591 from lyehe/pr/wildlife-sightings
...
feat: Wildlife Sightings layer from iNaturalist and Acartia
2026-11-05 17:32:05 -08:00
Sameh Khamis
93d495b0e5
Merge branch 'main' into pr/wildlife-sightings
2026-11-05 17:24:06 -08:00
Sameh Khamis
3650dd818b
Merge pull request #1532 from manjunath22466/fix/globe-free-look-orbit
...
fix(camera): keep the globe in view from orbit
2026-11-05 17:23:37 -08:00
Sameh Khamis
d807c3007e
Merge branch 'main' into pr/wildlife-sightings
2026-11-05 17:15:10 -08:00
Sameh Khamis
d00ced38bf
Merge pull request #1520 from manjunath22466/manjunath/hal-695-voice-tilt
...
Fix voice camera tilt from a top-down view
2026-11-05 17:07:42 -08:00
Sameh Khamis
2470b39f88
Merge pull request #1556 from ZloyS/denis/gev-cockpit-entry
...
feat(cockpit): enter Cockpit with only the ridden aircraft's layer on
2026-11-05 14:11:28 -08:00
Sameh Khamis
e3f668831c
Merge branch 'main' into denis/gev-cockpit-entry
2026-11-05 14:01:31 -08:00
Sameh Khamis
0ff48ba059
Merge pull request #1546 from manjunath22466/fix/chat-provider-switch-keeps-context
...
fix(voice): keep chat's view across a provider switch and clear stale errors
2026-11-05 13:50:48 -08:00
Sameh Khamis
a75b495cf9
Merge branch 'main' into fix/chat-provider-switch-keeps-context
2026-11-05 13:43:40 -08:00
Sameh Khamis
73c14ac749
Merge pull request #1507 from manjunath22466/feat/typed-ai-chat
...
feat(voice): add typed AI chat beside voice
2026-11-03 16:14:58 -08:00
Sameh Khamis
7322ce5ebd
Merge pull request #1125 from mvanhorn/fix/houston-cctv-pack
...
feat(cctv): add Houston TranStar camera pack
2026-11-03 15:17:33 -08:00
Sameh Khamis
6fd072bf79
Merge pull request #1086 from mvanhorn/fix/drone-airspace
...
feat(layers): add FAA drone restrictions airspace layer
2026-11-03 14:52:24 -08:00
Sameh Khamis
1facc09f8d
Merge pull request #1519 from manjunath22466/manjunath/hal-769-gev-ux-improve-visibility-of-the-250-km-radius-circle
...
feat(awareness): add calm sonar pulses that flash the range ring and echo contacts
2026-11-03 11:13:29 -08:00
Sameh Khamis
a4e1763b53
Merge pull request #1518 from manjunath22466/manjunath/hal-769-range-ring-visibility
...
fix(awareness): make the 250 km range ring readable on any ground
2026-11-03 10:59:48 -08:00
Sameh Khamis
acc9531b3f
Merge pull request #846 from bilawalsidhu/feat/voice-geometry
...
feat(voice): voice geometry — reusable areas, drawn-area counts, recent imagery by voice
2026-11-03 09:58:58 -08:00
Sameh Khamis
48146f8e5b
Merge pull request #1522 from bilawalsidhu/fix/zoom-out-runaway
...
fix: keep the globe on screen when zooming out from a tilted view
2026-11-03 09:42:53 -08:00
Sameh Khamis
93804d5dbd
Merge pull request #1527 from bilawalsidhu/sameh/restore-format-scope
...
fix(tooling): restore 97 format-scope entries dropped by a merge
2026-11-03 09:04:26 -08:00
Sameh Khamis
0e27d69fcc
Merge pull request #1514 from bilawalsidhu/sameh/hud-honest-comment
...
Say which HUD readouts are real camera values and which are styling
2026-11-02 14:35:43 -08:00
Sameh Khamis
b847ba5508
Merge pull request #842 from bilawalsidhu/feat/voice-outlines
...
feat(outlines): voice outlines without Overpass - bundled places, guarded Nominatim and shared OpenFreeMap tiles
2026-11-02 14:12:27 -08:00
Sameh Khamis
4c94f202d7
Merge pull request #210 from gaurav7902/main
...
docs: fix stale reference, document Shinjuku pilot pack, clarify test prerequisites
2026-11-02 08:05:35 -08:00
Sameh Khamis
a61f6fb1bd
Merge pull request #1457 from ZloyS/denis/hal-728-dock-icon-only-wings
...
fix(dock): show only icons on the narrow dock wings so labels stop covering the voice control
2026-11-02 07:54:57 -08:00
Sameh Khamis
bab5157989
Merge pull request #1427 from Sunil56224972/security/cross-site-gate-overpass-military
...
fix(security): add cross-site gate to military-installations proxy
2026-11-02 07:45:16 -08:00
Sameh Khamis
0088df95ca
Merge pull request #980 from johnleshan/docs/add-codespaces-deployment
...
docs(readme): add GitHub Codespaces setup path
2026-11-02 07:35:00 -08:00
Sameh Khamis
ebd8439868
Merge pull request #1093 from Aliciawque/fix/multipart-cable-feature-ownership
...
fix(cables): preserve feature ownership across multipart geometry
2026-11-02 07:26:36 -08:00
Sameh Khamis
720260af58
Merge pull request #1462 from quanticsoul4772/upstream/voice-alias-hint-budget
...
fix(voice): leave aliases a layer id already spells out of the alias hint
2026-11-02 07:17:49 -08:00
Sameh Khamis
fb06eab03f
Merge pull request #1447 from Rohilalala/fix/e-bikeshare-derived-capacity
...
fix(bikeshare): re-derive a station's missing capacity on every poll
2026-11-02 07:06:39 -08:00
Sameh Khamis
151ce3dee7
Merge pull request #1448 from Rohilalala/fix/e-local-adsb-geom-rate
...
fix(local-adsb): show a decoder feed's GNSS-sourced vertical rate
2026-11-02 00:18:11 -08:00
Sameh Khamis
abe138884e
Merge pull request #1436 from Rohilalala/fix/d-military-geom-vertical-rate
...
fix(military): read a GNSS-sourced vertical rate when no baro rate is sent
2026-11-02 00:09:05 -08:00
Sameh Khamis
dc261025ea
Merge pull request #1453 from Rohilalala/fix/e-satellite-launch-year
...
fix(satellites): stop matching a mission to a namesake from another year
2026-11-02 00:01:39 -08:00
Sameh Khamis
5a2bd8d9f9
Merge pull request #1449 from Rohilalala/fix/e-cable-tool-duplicates
...
fix(tools): list a split submarine cable once in find_submarine_cables
2026-11-01 23:51:06 -08:00
Sameh Khamis
bd4f10b225
Merge pull request #1442 from Rohilalala/fix/e-traffic-coverage-rounding
...
fix(traffic): stop a few matched roads reading as "no matches"
2026-11-01 23:42:28 -08:00
Sameh Khamis
c40f67a345
Merge pull request #1434 from Rohilalala/fix/c-unknown-altitude-speech
...
fix(voice): leave out an unreported altitude instead of saying 0 feet
2026-11-01 23:35:07 -08:00
Sameh Khamis
7e952d031c
Merge pull request #1444 from Rohilalala/fix/e-replay-speed-countdown
...
fix(missions): keep the replay countdown real-time when the speed changes
2026-11-01 23:25:32 -08:00
Sameh Khamis
0c67f54d2b
Merge pull request #1443 from Rohilalala/fix/e-replay-countdown-ten
...
fix(missions): run the full T-10 replay countdown after the tile hold
2026-11-01 23:15:58 -08:00
Sameh Khamis
a38c9a6b22
Merge pull request #1433 from Rohilalala/fix/b-awareness-marker-km
...
fix(awareness): show a 999.6 m contact marker as 1.0 km, not 1000 m
2026-11-01 23:06:33 -08:00
Sameh Khamis
4ef37d44c5
Merge pull request #1502 from bilawalsidhu/sameh/core-leftovers
...
Keep the timing test's Vite cache out of the package tree
2026-11-01 22:53:51 -08:00
Sameh Khamis
e8d5e8793e
Merge pull request #1501 from bilawalsidhu/sameh/rail-pills
...
Show the panel rails as labelled pills until a panel opens
2026-11-01 22:47:03 -08:00
Sameh Khamis
6acaa01ca8
Merge pull request #1445 from Rohilalala/fix/e-route-label-kilometre
...
fix(annotations): label a 996 m line or route as 1.0 km, not 1000 m
2026-11-01 22:40:05 -08:00
Sameh Khamis
561141fe55
Merge pull request #1450 from Rohilalala/fix/e-route-distance-ten-km
...
fix(directions): show a 9.96 km route as 10 km, not 10.0 km
2026-11-01 22:30:48 -08:00
Sameh Khamis
27000cf6da
Merge pull request #1454 from Rohilalala/fix/e-context-heading-north
...
fix(flights): read a 359.6° track as 0° in the voice context, not 360°
2026-11-01 22:22:14 -08:00
Sameh Khamis
0c28dc78a5
Merge pull request #1500 from bilawalsidhu/sameh/vue-loader-cache
...
Cache compiled components and load them on the test thread
2026-11-01 21:56:55 -08:00
Sameh Khamis
13a04a8957
Merge pull request #1441 from Rohilalala/fix/e-cctv-heading-north
...
fix(cctv): show a camera facing 359.6° as HDG 0°, not HDG 360°
2026-11-01 21:41:39 -08:00
Sameh Khamis
ebb726c03c
Merge pull request #1432 from Rohilalala/fix/b-vessel-course-north
...
fix(vessels): show a 359.7° course as 0°, not 360°
2026-11-01 21:28:31 -08:00
Sameh Khamis
87e5cf3f93
Merge pull request #1451 from Rohilalala/fix/e-alpr-direction-360
...
fix(alpr): show a 359.6° camera bearing as 0°, not 360°
2026-11-01 21:16:18 -08:00
Sameh Khamis
07094d9be2
Merge pull request #1452 from Rohilalala/fix/e-transit-heading-north
...
fix(transit): show a reported 359.6° bearing as hdg 0°, not hdg 360°
2026-11-01 21:04:18 -08:00
Sameh Khamis
92bb1d6a89
Merge pull request #1479 from bilawalsidhu/german/hal-644-ar
...
i18n: Arabic (ar), the first right-to-left language
2026-11-01 20:44:13 -08:00
Sameh Khamis
accfa1fa85
Merge pull request #1499 from bilawalsidhu/sameh/core-vue
...
Move the application UI to Vue and Pinia
2026-11-01 20:04:46 -08:00
Sameh Khamis
0d1a68160e
Merge pull request #1494 from bilawalsidhu/sameh/weather-product-metadata
...
Let a weather source describe its own products
2026-10-31 23:07:08 -07:00
Sameh Khamis
3824a47df8
Merge pull request #1493 from bilawalsidhu/sameh/firms-test-localhost
...
test(firms): stop the all-addresses connect test depending on how localhost resolves
2026-10-31 17:58:29 -07:00
Sameh Khamis
8978801dfd
Merge pull request #1491 from bilawalsidhu/sameh/gnss-source-window
...
Let a GNSS integrity source set the layer's evidence window
2026-10-31 16:48:51 -07:00
Sameh Khamis
423ca3ca5f
Merge pull request #1485 from bilawalsidhu/sameh/cctv-view-lod
...
perf(cctv): draw only the cameras in view, thinned when zoomed out
2026-10-29 21:42:23 -07:00
Sameh Khamis
03201451c0
Merge pull request #1463 from bilawalsidhu/sameh/security-audit-fixes
...
chore(deps): update Vite and Puppeteer, and remove the unused screenshot helper
2026-10-28 22:44:07 -07:00
Sameh Khamis
f2c6ff082d
Merge pull request #1459 from bilawalsidhu/sameh/hud-google-lookups
...
Cut the Google requests the HUD summary makes on its own
2026-10-28 17:43:25 -07:00
Sameh Khamis
7914370b14
Merge branch 'main' into sameh/hud-google-lookups
2026-10-28 17:37:20 -07:00
Sameh Khamis
72eb3fdc73
Merge pull request #1439 from bilawalsidhu/release/v0.3.0
...
chore(release): prepare v0.3.0
2026-10-27 22:17:54 -07:00
Sameh Khamis
15de9d738c
fix(i18n): mark style labels without loading the catalogs ( #1421 )
...
The style shaders and visualPresets imported msg() from src/i18n/index.js,
which loads every locale catalog. The share-view codec reads the styles'
defaults, so a server bundling the codec carried about 0.9 MB of
translations it never uses. They now import the catalog-free marker, as
other portable modules do; the codec's bundle drops from about 1 MB to
130 KB.
2026-10-26 16:54:01 -07:00
Sameh Khamis
6152f9f311
fix(search): keep a missed location query in the field so it can be corrected ( #1420 )
...
A location search that found nothing or failed now keeps its query, the open field and focus (text selected), and shows a persistent role=alert message under the search row instead of a toast. Typing, a new search or closing the emptied field clears it. HAL-727.
2026-10-26 16:44:34 -07:00
Sameh Khamis
3d9f153bc0
feat(share): export the share-view codec and link-path helpers ( #1419 )
...
* feat(share): export the share-view codec for host servers
Add `@gods-eye-view/core/share/view-codec` (src/share/viewCodec.js) as a
package export with its own boundary group. The codec is pure (no DOM, no
Cesium, no external dependencies), so a host's server can decode a
/share/<code> link, for example to describe the view in link previews.
* feat(share): export the share-link address helpers
Add `@gods-eye-view/core/share/link-path` (src/share/shareLinkPath.js), so a
host's server reads /share/<code> addresses the way the app does.
2026-10-26 16:20:23 -07:00
Sameh Khamis
da02fd8645
feat(share): short /share/<code> links with a compact versioned view format ( #1418 )
...
* feat(share): add compact versioned share-view codec
Add a standalone codec for `#s=<base64url>` share links: a version byte
followed by protobuf-style tag-length-value fields. Settings equal to
their default are omitted and refilled from the same table on decode;
unknown fields are skipped by wire type, so new fields never break
older apps. Views are a place (camera) or a thing (an aircraft,
military aircraft, vessel or satellite to follow, with camera offset
and last-known fix); an unknown kind falls back to the camera.
The decoder bounds its input and rejects malformed payloads with a
reason instead of throwing. A converter maps the long form's parsed
state to and from the codec state; the long form is unchanged.
* fix(share): tighten codec decoding after review
Unknown detection mode and allocation names now fall back to their
defaults instead of reaching the lenient long-form migration. Future
panel values and style-parameter tokens are skipped rather than applied
or rejected, and layer options are accepted only under their owner
layer. Wrap longitudes before scaling, normalize negative zero, reuse
the layer-state tracking ID grammar, and align the format doc with the
decoder.
* feat(share): let a host share the link its own way
ShareLinkManager.buildLink() returns the current share link without
copying it, and copyLink() now copies exactly that. The share button
passes the link to an optional services.shareLink(url), which resolves
to 'shared', 'copied', 'cancelled' or false; 'cancelled' shows no toast
and 'shared' shows the new "Link shared" (es, ru, zh-CN). Without the
service the button copies as before.
* feat(share): open and make short /share/<code> links
The share button now makes `<app>/share/<code>` links with the compact
share-view code, and the app opens them at start-up through the same
restore pipeline as long links. Once the app next writes the address, the
share path is replaced (no new history entry) by the app's own address and
the live long-form hash, so a reload follows the live view. A host can pass
the code as `initialShareCode` instead. A code that fails to decode restores
nothing and shows "This share link can't be opened".
The code gains a trailing CRC-8 check byte, so any single mistyped
character is rejected instead of opening a different view. Thing views no
longer store a camera: it is derived from the entity's last-known fix and
the follow offset on a sphere, the entity kind is implied by the id's
field, and the followed entity's layer bit is implied; an aircraft followed
from the app's own camera is a 42-character code. The `#s=` hash form is
gone.
While the camera follows an aircraft, military aircraft or satellite, the
link is a thing view with the camera's offset and the entity's position.
Opening one turns the layer on and follows the entity through the existing
shared-follow restore, then swings the camera round to the shared offset; a
vessel view selects the vessel once the vessel feed has it. If the entity
is not reporting within its window, the view stays at its last-known fix
and says so. The panel and style-parameter tables now come from the codec,
and a host share hook that returns a plain value or throws still gets a
toast.
* fix(share): encode style settings against the style's own look
Settings a style applies when selected (bloom, sharpen, HUD, detection,
celestial ring and the style's shader parameters) now default, per field,
to what that style applies in a fresh session, read from the tables the
app applies (the first-load baseline, the style presets and the shader
defaults). The encoder compares against the view's style and the decoder
fills omitted settings from the decoded style, so a view that keeps its
style's look costs only its camera and style. The previous defaults did not
match a fresh session (sharpen, HUD and detection were off), so every link
paid for them, and a style's own shader parameters were always written.
A test pins the per-style defaults as frozen v1 meanings. A followed
aircraft in Noir is now 44 characters and the real long-link example 39.
* docs: changelog for #1418
2026-10-26 15:31:51 -07:00