# Changelog ## Unreleased — weather review - On 3D Tiles, draw a 4096×2048 detail window around the view on each observed-weather shell except global infrared, sampled by the shell's own surface. It follows the view on camera move end, keeps its place while the view stays near its centre, and hides until its image is ready after a move; an older frame's detail stays over at most one newer frame. The image proxy accepts a 2:1 `bbox` inside the product bounds, rounded to 0.25°. Lightning's whole-extent image is now 4096×2048; each shell caches up to 128 MiB of decoded images. - On 3D Tiles, show observed weather and the wind color field as raised, translucent shells (5.0–6.6 km, lightning highest) with one full-extent image per frame instead of draping onto tiles; they show at any camera height. Globe hosts are unchanged. The weather image proxy serves every product (radar and regional infrared up to 4096×2048, lightning and global infrared up to 2048×1024) with a size parameter and a 16 MiB cap. Accept bounded tile sizes in the proxy with separate immutable cache entries. - Cache exact-time weather images and tiles for 24 hours. Retain up to 6 decoded global mosaics per renderer and warm the next observation during playback; tile prefetch is bounded to eight requests and cancels when suspended. - Move weather times, coverage, legends and cyclone advisory details into keyed right-rail cards; left rows keep status and configuration. Use one native observed-history timeline with local preview and coalesced drag commits. - Add reusable rail card and timeline components. Keep panel collapse, count, hidden-empty behavior and first-appearance expansion. - Show wind unit controls beside speed legends and inside inspection readings; changing units preserves the sampled location and open reading. - Name satellite imagery Satellite clouds, with Clouds only / Full image modes and explicit regional coverage. Existing share parameters are unchanged. - Share one observed history clock across radar, infrared and lightning. Step through their union timeline with bounded nearest-at-or-before selection; hide products without an eligible frame. Latest uses each product's newest observation; playback waits for all frame loads to settle before advancing. - Label wind as a forecast that does not follow observed history. Keep history transient and product readouts synchronized. - Keep Google 3D Tiles drawing while draped weather imagery loads and retain the old observation until the replacement has rendered. - Decode one bounded global infrared mosaic per frame on both map hosts, then crop local tiles to avoid request-dependent brightness seams. - Add Clouds only / Full image controls and share-link state. Filtered mode uses a soft linear-brightness alpha ramp from 0.40 to 0.70 around the old 0.55 cut. - Dock the weather summary in the right rail with standard panel collapse and drag chrome. - Filter infrared brightness so cold cloud tops stand out; this is a display filter, not a cloud mask. - Retry throttled weather tiles up to three times per tile. - Cull regional wind batches per frame, fade curves below 60 km, and stop idle rendering when no curve is visible. - Fade the wind color field below ~1,200 km camera height and hide it at 200 km. On 3D Tiles, update alpha in 0.1 steps only at camera move end or installation; globe imagery keeps its smooth per-frame fade. - Hide cyclone markers, labels, tracks and cones beyond the horizon on every map source. - Reserve stable weather status space and coalesce panel refreshes per frame. - Add keyless NOAA/NHC cyclone advisory positions, coherent forecast tracks and uncertainty cones, plus NOAA's observed 15-minute lightning density imagery. Preserve source clocks, basin coverage and explicit pending/stale states. - Make wind default to trails, preserve earlier share-link appearance, retain geometry across scalar changes, and show a compact weather summary with a location marker and selected-field emphasis for forecast inspection. - Add keyless NOAA observed rain radar and infrared satellite layers to Weather, with explicit coverage/freshness, recent observation playback and native Cesium tiles. - Increase desktop wind density to 7,200 paths and improve temperature contrast while retaining the 1,200-path narrow-screen budget and unchanged forecast values. - Expand Wind into a surface-weather prototype: globe-draped speed shading, optional same-run 2 m temperature and mean sea-level pressure, GFS/ECMWF model selection, a numeric legend, wind units, Pause, and a dismissible map-center reading. Keep wind visible when an optional field is unavailable; respect reduced motion and stop animation while hidden or disabled. Bake bounded forecast-following curves once per field and animate their phase on the GPU, with a canvas fallback and globe view lighting owned only while Wind is enabled. Display lift does not change the 10 m forecast level; this adds no cloud volume, radar or forecast-time playback. Native hardware GPU behavior remains unverified. Add feed provenance to analyst/view answers and HUD context while retaining existing response fields and runner ownership (Matt Van Horn, #347). Analyst records for loaded satellites, datacenters and dams, with explicit bounded count/rank coverage (Matt Van Horn, #351). - Remove the spurious scrollbars that appeared on both panel stacks at narrow widths (720px and below) as soon as a panel was expanded. The stacks scroll vertically there, and each panel's decorative glow, absolutely positioned with a negative inset, became 18–20px of scrollable overflow on both axes: a horizontal scrollbar band under the expanded CCTV, Context, Data Layers or Scenes panel plus a vertical scrollbar that scrolled nothing but glow. The narrow-screen rules now pin the glow to its panel box; the stacks still scroll for genuinely tall content such as an expanded DISPLAY panel, and the Context radio popover is not clipped. `src/ui/panelRails.test.mjs` pins the rule against every 720px media block. - Enable responsive trackpad pinch zoom on the globe. Browser pixel-mode `Ctrl+wheel` pinch gestures now reach Cesium with bounded amplification, while ordinary wheel, line-mode and touch-pinch inputs retain their existing behavior; the listener is removed with the application scene. - Report AIS speed and course that carry the standard "not available" code as unknown instead of 102.3 knots and 360 degrees. Genuine readings, including a stopped vessel's zero and the highest encodable values, are unchanged. - Render native `