@@ -4,6 +4,130 @@ All notable changes to ADOS Mission Control are recorded here.
44Format follows [ Keep a Changelog] ( https://keepachangelog.com/en/1.1.0/ ) ;
55the project follows [ Semantic Versioning] ( https://semver.org/ ) .
66
7+ ## [ 0.34.3] - 2026-06-19
8+
9+ This desktop build is a patch over 0.34.2 (same 0.10.6 through 0.34.x feature
10+ set) that fixes bundled-asset loading in the installed app. Highlights below,
11+ grouped by area.
12+
13+ ### Added
14+
15+ - ** Mission planning, reworked.** The Plan tab now drives every map tool from a
16+ single interaction mode with one labeled toolbar, so select, waypoint, draw,
17+ measure, geofence, and rally no longer fight each other. A persistent hint
18+ reminds you that a select-click drops a waypoint. Search patterns get an
19+ explicit Set Datum tool. Rally placement is a sticky tool. Undo is unified
20+ across waypoints, geofence, rally, and drawn shapes. Each waypoint keeps its
21+ own altitude reference frame through upload, export, and import. Missions
22+ export losslessly to ` .altmission ` and ` .kmz ` . Offline tile download follows
23+ wherever you have panned the map. A Center Map Here action and working
24+ geofence-clear and rally-clear buttons round it out.
25+ - ** Mission upload feedback.** Uploading a mission to the flight controller now
26+ reports success or failure instead of finishing silently, and each waypoint's
27+ altitude frame is sent exactly as drawn.
28+ - ** Simulation playback.** The simulator runs from a single clock, shows only
29+ the values it actually models, labels its HUD as a preview rather than live
30+ telemetry, and preserves the flight duration when you rewind.
31+ - ** Fleet dashboard, one card per agent.** Each agent renders as a single card
32+ derived from its device id, so an agent and the flight controller behind it
33+ collapse into one entry instead of duplicating. The detail panel adapts to
34+ the node's profile (drone, ground station, or compute) through a surface
35+ registry that shows only the tabs that node supports. A new node grid view
36+ puts live video tiles side by side, with a grid or overview toggle. Stale
37+ local nodes show a clear re-pair or remove prompt.
38+ - ** Black Box log viewer.** Read the agent's durable on-device log and
39+ telemetry store straight from the GCS, including history that survives an
40+ agent restart, with an option to push it to the cloud backend.
41+ - ** Software Update card.** The System tab shows live over-the-air update
42+ progress through each phase as the agent updates itself.
43+ - ** Radio and pairing visibility.** The radio panel shows the rendezvous and
44+ current channel and band, whether the drone is transmitting, the peer-link
45+ and hop state, and the regulatory domain when set. It adds link tuning
46+ controls with auto-calibration, the live FEC ratio and adaptive mode, a
47+ warning when the radio adapter enumerated on a slow USB port (advancing its
48+ transmit counter while emitting no usable RF), a power-floor (muted PHY)
49+ badge, a coarse radio-stack rollup that names why a link is not
50+ transmitting, a video transmitter stall indicator, and bind
51+ injection-adapter readiness on the pairing card.
52+ - ** Camera and video health.** The fleet card surfaces a missing or recovering
53+ air-side camera, including a USB power-contention diagnostic, even for a
54+ drone paired only over the LAN. Local-node video plays from the agent IP that
55+ is actually reachable.
56+ - ** Per-drone plugins.** Plugins install against a specific drone, with the
57+ drone detail panel carrying a Plugins tab scoped to that drone (install,
58+ enable, disable, configure, uninstall). The list now shows each plugin's
59+ service readiness and per-plugin model-delivery status. Plugins can
60+ contribute a per-drone tab through a ` drone.detail.tab ` UI slot.
61+ - ** Vision navigation surface.** Drones running the vision navigation plugin
62+ gain a Navigation tab with live optical flow rate and quality, rangefinder
63+ reading and health, the active EKF source set, and an arm-readiness summary.
64+ Backed by new ` OPTICAL_FLOW_RAD ` , ` VISION_POSITION_ESTIMATE ` , and ` ODOMETRY `
65+ decoders, a ` MAV_CMD_SET_EKF_SOURCE_SET ` encoder, and a pre-arm parameter
66+ batch. The detection overlay carries lock-state and association confidence.
67+ - ** One connect modal.** A single dialog connects a flight controller or a
68+ companion agent, and the Pair New Node dialog shows the exact agent install
69+ command. Pair-by-code resolves over the LAN with no cloud round-trip.
70+ - ** Firmware flashing.** A complete in-app firmware flashing workflow.
71+ - ** Ground station surfaces.** The uplink card shows cloud-relay forwarding
72+ state and surfaces a failed share-uplink apply, and you can trigger on-device
73+ touch calibration from the ground-station panel.
74+ - ** Agent reach-back visibility.** The GCS surfaces agent management-link
75+ health, the management-link reach-back mode, and the USB-rehome self-heal
76+ state.
77+
78+ ### Changed
79+
80+ - ** Native desktop title bar** on macOS and Linux.
81+ - ** Authenticated MAVLink link.** The MAVLink WebSocket proxy is ticket
82+ authenticated, and the GCS prefers the authenticated endpoint whenever the
83+ agent advertises it.
84+ - ** Nodes, not drones.** Sidebar terminology moved from "drone" to "node",
85+ since an agent can run as a drone, ground, compute, relay, or receiver, with
86+ each row labeling its specific type.
87+ - ** Local-first pairing throughout.** Pair flow (probe, claim, unpair) routes
88+ through the Mission Control proxy so ` .local ` hostnames resolve even in
89+ browsers without mDNS, an unreachable LAN probe explains itself instead of
90+ returning a bare 502, and a pairing code the cloud does not know returns a
91+ calm "pair on this network" prompt instead of a console error.
92+ - ** Cloud relay hardening.** The relay forwards radio fields generically and
93+ records transmit-rate and churn counters, and its auth, retention, and
94+ heartbeat contract are tightened. Agent polling is bounded with clean aborts,
95+ and failed cloud command acknowledgements surface in the UI.
96+ - ** Tooling.** Continuous integration now gates on lint and type-check,
97+ enforces a test-coverage floor, adds dependency scanning, and the codebase
98+ gained protocol and pairing state-machine test coverage.
99+
100+ ### Fixed
101+
102+ - ** Desktop fonts and map icons load.** The packaged app now serves its bundled
103+ fonts, and the Leaflet map control icons, from the correct asset path instead
104+ of 404ing, so the interface renders in its intended typefaces.
105+ - ** Desktop app no longer crashes on launch.** The Convex client provider is
106+ always mounted, so a build with no cloud backend configured, and any screen
107+ that uses Convex, renders normally instead of dropping into the global error
108+ screen.
109+ - ** Cloud features in the desktop app.** The desktop build now includes the
110+ cloud backend, so the community pages, sign-in, and cloud relay for remote
111+ drones work in the installed app, matching the web version.
112+ - ** Geofence data loss.** The geofence editor is bound to the geofence store,
113+ so an edited fence is no longer dropped.
114+ - ** Stuck and mis-gated panels.** Fleet video gating, bounded diagnostics, and
115+ recovery for stuck panels, plus corrected MAVLink routing, command
116+ correlation, and mission and mode handling.
117+ - ** Local pairing edge cases.** A locally-paired node routes through one
118+ LAN-versus-cloud connect path, deleting a local drone purges its stored
119+ entry, and local-first mode no longer wipes pair state on sign-in.
120+ - ** Desktop release pipeline builds the Windows installer.** The packaging
121+ step no longer rebuilds native node modules that the desktop wrapper never
122+ ships, so the Windows build no longer needs a C toolchain on the runner.
123+ All three platforms (macOS, Windows, Linux) package again.
124+
125+ ### Removed
126+
127+ - ** ROS tab.** The ROS sub-tab, its store, API client, types, and the related
128+ capability and heartbeat fields are gone, since the agent no longer ships a
129+ ROS environment.
130+
7131## [ 0.34.2] - 2026-06-19
8132
9133This desktop build re-ships the 0.34.1 feature set (rolled up from web versions
0 commit comments