-
The workspace has been rebuilt around the map. A fixed status bar, compact command rail, docked panels, and one shared playback band keep weather data visible while every existing surface stays directly reachable. The layout holds at compact sizes, larger text settings, light mode, and increased contrast.
-
GIF encoding now runs in a worker instead of freezing the map while it reduces colours and compresses frames. Shared GIFs use a 960-pixel cap, bounded palette sampling, and chunked byte storage, which cuts the peak memory held for a full loop while keeping the radar scale and burned-in caption readable.
-
The release command now runs the frontend, native, and headless browser gates before it builds. It verifies the updater signature against the configured public key, records the exact commit and artifact hashes, refuses a stale skipped build, and creates the version tag from that proved commit when publishing.
-
The compact layout keeps Commands visible, including at 130 percent text size. Commands now reaches Storm Cells, ProbSevere, Wind, and radar products, so a control hidden to make the window fit does not make that part of the app unreachable.
-
Layer and panel states tell the truth while data is loading or unavailable. Enabled-layer failures appear in Layers, Alerts and Tropical no longer show a false empty result, stale forecast, search, tide, route, and history results are cleared when the question changes, and only a road-router failure offers a straight-line estimate.
-
Map tools work from the keyboard at the map centre and report results through a live status region. Reduced-motion preferences now remove camera animation, radar legends scroll inside short windows, alert severity is written as text, and the timeline slider announces the selected timestamp.
-
Radar and export controls now preserve what they say they control. Loop export restores the prior frame and playback state even after a failure, Composite Reflectivity leaves single-site mode, a comparison with too little history says so instead of relabelling the first frame, and a guidance comparison cannot be reduced below two models.
-
Lightning refreshes share one in-flight native request, and the latest history selection wins if two archive files finish in reverse order. Forecast icons now match the reported weather. Startup, notification actions, and large counts also follow the saved language and locale.
-
GIF loops can now be saved by the installed app. Every export is written beside its destination, flushed, and then replaced in one step, so a failed save cannot truncate the last good file. Disk-cache work also runs away from the async workers that carry network replies and desktop commands.
-
Workspace backups now include an imported GeoJSON overlay as well as settings. Restoring one moves the map to the saved camera, and Undo puts both the settings and the prior overlay back. Files from newer builds also name unfamiliar nested settings instead of quietly dropping them.
-
A colour table is not reported as applied until the desktop renderer accepts it. Empty GeoJSON collections are refused instead of enabling a blank layer and calling the upload successful.
-
German radar now works in the installed app, not only in a browser preview. The desktop cache route knew to send DWD tiles through the native side, but that side refused the same host when the request arrived.
-
Weather files, byte-range replies, and compressed grids are bounded while they are being read. Truncated or hostile provider data is refused with an error instead of being allowed to panic, overflow, or grow memory until the whole reply has arrived.
-
The desktop window no longer receives unused permissions for opening web addresses or changing unrelated store keys. It keeps only the file reveal and settings operations the interface calls.
-
Camera moves no longer save an older copy of the rest of the settings a moment later. A theme, layer, or unit changed while the map was settling now remains changed after restart.
-
Forecast opens correctly under React's development safeguards. Its first request used to be cancelled and then mistaken for one that had already finished, leaving the panel on its loading line forever.
-
Alert monitoring keeps its national damage-threat read alive when the map moves, starts at a new watched place without waiting for the next poll, and falls back to an in-app notice if Windows notifications fail.
-
The newest radar refresh wins when two requests overlap. A cached reply from a failed source also stays with that source instead of making a live fallback say it came from the last-view cache.
-
Links supplied by remote overlay data are opened only when they are credential-free HTTPS addresses. Removing an imported overlay from its notification now switches the layer off as well as clearing its shapes.