Development history and release notes for WindMar.
Stability release. Routing simplified to a single fuel objective with operator wave-height and wind-speed ceilings as hard walls (the graduated “safety weight” and multi-objective Pareto target are gone; per-leg seakeeping is now advisory). Shaft generator removed from routing — routing is propulsion-only; the PTO model is retained for noon-report calibration. Five operator-selectable engines: Isochrone (default, weather wavefront) plus Cython A* and Cython A* VISIR as the production workhorses, with the legacy pure-Python A* / Dijkstra kept as fallbacks — pure-Python search was retired for the grid engines in favour of Cython for convergence at scale. Optimization moved onto a dedicated task-queue worker, fixing long-route hangs (a 16-day passage now converges in ~1 min and can never block the app). Weather sampling clamped to physical bounds, fixing field overflow past ~day 10; continuous 20-day forecast/analogue horizon (CMEMS 0–240 h + ERA5-analogue to day 20). Cross-validated against a commercial reference (geometry + weather agreement). Documentation refreshed.
Two-stage vessel calibration (sea-trial anchor + noon-report weather fit), per-condition laden/ballast factors, shareable .wmmodel ship-model serialization. RPM-keyed Stage-1 performance predictor. Shaft-generator (PTO) modeling with per-leg on/off decision. Corridor-width floor on A* leg-classified optimization, MCR ceiling lifted 90% → 100%. Engine-log Stage-1b calibration alternative to Syroco. Render: dark CARTO Matter basemap, Windy-style cold→hot-via-violet wave ramps, nullschool-derived currents/tidal palette, hourly client-side timeline interpolation, walk-forward date-from picker.
Server Edition. Global CMEMS weather ingestion (wind, waves, currents, SST, ice — chunked download with lat-band splitting), AI assistant, health status indicator.
Local-first deployment with ERA5 weather scenario reconstruction, regional weather download by configurable areas, Caddy reverse proxy, automated ingestion subprocess, Qdrant vector search for documentation.
Standalone Docker distribution. Pre-loaded weather data, engine logs, and noon reports. No-credential install: docker compose up. Documentation site launch.
Open-source public release. Apache 2.0 license, demo mode, public GitHub repository.
Global weather coverage (7 layers, ±60° lat, raster tiles → client-side canvas), WMO-standard wind barbs (calm circle, pennants, half/full barbs), calm wind zone coloring, double-buffered canvas rendering, gzip weather cache, ice land masking, SST coastline bleed fix, currents-over-land fix, settings page 2-column card layout, ~72K LOC.
Dedicated Settings page with optimization engine configuration and educational content, per-leg variable speed optimization (fuel ~ speed³), session persistence (sessionStorage-backed React Context), demo mode hardening (locked viewport, hidden uploads, frozen weather), Dijkstra node budget reduction.
Weather pipeline fixes: wind DB rebuild, SST black holes, wave OOM crash, weather debug endpoint, cache versioning, NaN sentinels, viewport margin & latitude cap widening (±55° → ±60°).
Commercial compliance (CII, FuelEU Maritime, charter party tools, voyage reporting) + production optimizer (GSHHS coastline, 9 strait shortcuts, Pareto front, course-change penalty, safety fallback, A*-primary with optional VISIR) + security hardening (pickle RCE fix, input bounds, CORS, rate limits, NaN/Inf sanitization), ~67K LOC, 734 tests.
Modular architecture refactoring (6,922→281 LOC main.py, 9 domain routers, 37 Pydantic schemas), calibration improvements (ME-specific fuel, laden/ballast detection from ME load %, widened bounds), engine log deduplication, 426 tests passing.
Vessel model upgrade (SFOC calibration fix, Kwon + STAWAVE-1 dual wave methods, bisection performance predictor), engine log analytics (CSV/Excel upload, 5 KPIs, 6 charts, calibration bridge), weather pipeline refactoring (user-triggered overlays, viewport-aware resync, deferred supersede), Dijkstra cost formula fix, hard avoidance limits (Hs ≥ 6m, wind ≥ 70kts), 79 API endpoints.
Two-mode architecture (Weather/Analysis), 7 weather layers with WMO color ramps, forecast timeline for all layers, analysis panel + detail page with per-waypoint passage plan, route save/load, current & wave direction in results, Monte Carlo P10/P50/P90, vessel speed sync.
ECDIS-style UI redesign, dual speed-strategy optimization (Same Speed / Match ETA), voyage baseline gating, wave crest rendering with polar diagram, GFS wind DB ingestion, turn-angle path smoothing.
Weather DB architecture, temporal weather provisioning, Monte Carlo with correlated perturbations, CII compliance, PostgreSQL persistence.
Frontend refactor, Monte Carlo simulation, grid weather provider.
Data sources docs, credential setup, modernize pyproject.toml.
GFS near-real-time wind data + 5-day forecast timeline.
Initial public release.