v3.5.0
New functions related to light
- Add tag_stap_daily() to build stap from twilight midpoints and add read_stap() to validate/read stap files
- Add map_add_mask_water() for water masking and mask water pixels in plot.map() filtering
- Create geolight_fit_location(), refactor geolight mapping pipeline, and modularize geolight map flow
- Create twilight calibration plotting (plot_twl_calib)
Major Update
- Add era5_dataset parameter to geopressure map functions
- Fix missing variable parameter to graph_add_wind()
- Remove geosphere dependency and refactor distance/bearing computation
- Refactor geotiff downloads with future.apply + progressr
Trainset
- Major update of Trainset app
- Add experimental lifecycle badge to trainset
- Handle acceleration-only input (no pressure)
- Add modal checks/UI fixes, missing UI fix, and auto label_dir / auto-labeling fixes
GeoLightViz
- Add GeoLightViz app + modules
- Improve Shiny process handling so apps can co-exist and refactor app launcher utilities
GeoPressureViz
- Refactor GeoPressureViz map handling and map type/palette handling
- Refactor async pressure query logic
- Fix twilight grouping by stap in aggregation and fix zoom relayout triggering
Minor fixes
- Make stap filtering robust to missing columns
- Fix missing known lat/lon edge case
- Restrict merged path columns in pressurepath creation
- Move ecmwfr and ncdf4 to Suggests with runtime checks
- Use vapply and memory-focused cleanups, opt pass 1, opt pass 2
- Refine messaging / remove multiline cli text
- Switch formatting/lint workflow to air+jarl (follow-up fixes)
- Refactor plot.map() args/path plotting
- Refactor plot_path() customization/static mode
- Improve plot_graph_movement() options and annotations / visual polish