- Direct COP fix hemisphere disambiguation —
linearSeednow picks the 2-circle intersection candidate closest to the assumed position instead of always selecting the northernmost. Fixes incorrect fix selection for southern-hemisphere navigators.
- Added full Standish paper citation to
PLANET_ELEMSsource comment
- Offline map — fully offline base layer using Natural Earth 50m data (coastlines, country borders, lakes, rivers, country labels, 1251 cities), cached by service worker on first visit
- Lat/Lon graticule — toggleable grid overlay with adaptive spacing, enabled by default
- Lakes and rivers — 328 lakes and 447 rivers rendered on the offline map
- Country labels — zoom-dependent labels with population-based filtering (large countries visible from zoom 2)
- City labels — 1251 cities with zoom-dependent visibility, capitals shown in gold
- Star Finder panel moved above LOP Plot panel in layout
- Leaflet attribution control re-enabled with proper source credits for all tile providers
- Service worker cache bumped to v17
- AP marker now remains visible on map when all sights are cleared
- LOPs disappearing when switching to offline base layer (custom pane z-ordering)
- Labels not updating when panning map (moved label layer out of nested layerGroup)
- Wider benchmark range — reference data now spans 2000–2050 (was 2020–2035) with 400 cases per category (2000 total). Per-decade error breakdown added to all benchmark sections. Tested 1900–2100 during development: stars hold to 0.27' across 200 years; planetary ephemeris (Standish mean elements) degrades beyond ±30 years from J2000 — Venus reaches 100'+ by 2090s.
- Polaris latitude no longer overrides LS fix — when 2+ intercept sights give a well-determined position, Polaris a0/a1/a2 latitude (which can be 20-30' off) is shown as supplementary info instead of replacing the LS latitude. Polaris still provides the primary latitude when fewer than 2 intercept sights are available.
- Stale confidence ellipse in Direct mode — switching from LS to Direct mode now clears the LS confidence ellipse from the map
- Map resize on mode switch — Leaflet map now calls
invalidateSize()when toggling between Intercept LS and Direct fix modes, preventing tile rendering gaps
- Lunar distance method — new sight mode for determining longitude from Moon-body angular distance. Includes clearing (Young's method), GMT interpolation via bisection, and longitude derivation
- Southern hemisphere star finder — NCP/SCP toggle for polar stereographic sky chart, with adapted equatorial grid and pole marker
- End-to-end fix tests — Polaris latitude, LS intercept fix, and COP direct fix verified against Florence demo session
- Expanded benchmarks — lunar distance, moon phase, end-to-end fix, and rise/set reference data generated from Skyfield/DE440s (850 total benchmark cases)
- Service worker cache bumped to v15
- Benchmark output now shows dynamic case counts
- Test suite expanded to 203 navigator tests + 97 almanac tests
- IAU 1980 nutation —
nutation()with top 5 terms applied to ghaAries (equation of equinoxes), precessStar (Meeus Eq. 23.1), and all position functions - Hipparcos proper motion catalog — 58 navigational stars upgraded from pre-precessed SHA/Dec to J2000.0 RA/Dec + proper motion (pmR/pmD arcsec/yr)
- IAU 1976 precession matrix — Lieske 1979 3-rotation matrix replaces simple linear precession for sub-arcminute star accuracy across decades
- Moon phase display —
moonPhase()from ecliptic elongation with illumination %, age, and phase name - Moon phase icon on sky chart — rendered with lit/dark halves and ellipse terminator curve, replacing the plain dot
- Moon phase in body selector — phase name, illumination %, and age shown when Moon is selected
- Moon phase in almanac — phase info in daily metadata block alongside Eq. of Time and Sun SD
- Body rise/set times —
riseSet()with polar disambiguation,bodyRiseSet()for Sun/planets,moonRiseSet()with 13-sample altitude sweep + bisection - Moon & Planet Rise/Set table — new almanac section with rise/set times for Moon, Venus, Mars, Jupiter, Saturn across 14 latitudes
- Rise/set in body info panel — rise and set times shown for all bodies in the navigator body selector
- Planet positions in almanac —
planetPosition()andhelioPos()ported to almanac.html for rise/set computation - Skyfield benchmark —
bench.pygenerates random reference data from Skyfield/DE440s,benchmark.jscompares against our engine (398/400 typical pass rate) - Almanac test suite —
test-almanac-page.jswith 97 tests covering almanac.html functions - Version label — version number and date displayed in both index.html and almanac.html headers
riseSet()polar ambiguity — now returns{neverRises:true}vs{neverSets:true}instead of both returningnullsunTimes()updated to handle new riseSet return format with proper polar day/night detection
test-almanac.jsrenamed totest-navigator.jsto reflect that it tests index.html, not the almanac- Star tolerances tightened from 0.3° to 0.05° (except Polaris at 0.3°) after nutation + proper motion improvements
- Nutation computation unified across solarPosition, moonPosition, planetPosition, and ghaAries via shared
nutation()function
- COP fix on map — green diamond marker showing the direct circle-of-position fix on the Leaflet map, matching the LOP plot overlay
- Intercept lines — dashed azimuth lines from AP to each LOP foot on both the LOP plot and map, showing intercept direction and distance
- Residual error heatmap — toggleable overlay on the LOP plot visualizing RMS residual error across the plot area (blue = low, red = high), showing why the fix is where it is
- LOP plot perpendicular direction was incorrect at non-cardinal azimuths — sign error in canvas Y component caused lines to not be truly perpendicular to the azimuth bearing
- LOP plot fix marker now matches the map's blended fix position when Polaris or transit sights override LS fix components
- COP fix marker on map now appears on initial load in LS intercept mode
- Map markers (fix, AP, LOPs, confidence ellipse, COP fix) no longer persist after deleting all sights
- Moon support — Meeus Ch.45 lunar ephemeris with horizontal parallax, semi-diameter, and upper/lower limb corrections in the Hs-to-Ho pipeline
- Save / Load sessions — auto-save to localStorage, JSON export/import, CSV sight log export, GPX waypoint export
- Star finder — interactive north polar stereographic sky chart with zoom, pan, horizon line, and switchable azimuthal/equatorial grid overlays
- Sight planning — suggests 5-7 optimal bodies with best azimuth spread for current position and time
- LOPs on Leaflet map — intercept lines of position drawn on the nautical chart with celestial body labels
- Confidence ellipse — 95% error ellipse from fix covariance matrix, displayed on both LOP plot and Leaflet map
- Sight averaging — average multiple sights of the same body to reduce random error, with standard deviation display
- LOP plot collapsible — click header to toggle visibility
- Live UTC toggle — highlighted button shows active state on desktop and mobile
- Map bottom half not rendering — switched to absolute positioning with ResizeObserver
- Session restore overwriting longitude direction — moved toggle button property setup before autoRestore
- Restore confirm dialog blocking initial page render — deferred after first paint
- Single-sight LOP no longer incorrectly labeled as "FIX"
- showWorkings crash for intercept sights without AP
- editSight preserves negative Hs sign
- Reduction workings use plain text labels instead of Unicode symbols
- Body selector dropdown cleaned up (removed star markers)
- Suggested bodies label updated (was "SUGGESTED STARS")
- Duplicate tile layer creation removed from map init
- Sky plot "above horizon" count excludes auxiliary constellation stars
- Magellan route screenshots
- Sanlúcar de Barrameda screenshot
- PWA manifest and service worker for offline support
- Sun position (Meeus Ch.25)
- Planet positions (Venus, Mars, Jupiter, Saturn)
- Running fix with dead reckoning
- Fix quality labels (Good / Moderate / Poor)
- Daily almanac page generator
- Leaflet map with dark/satellite/standard tiles and nautical overlay
- Initial release
- Intercept method (Marcq St. Hilaire)
- Direct COP fix (Gauss-Newton)
- Polaris latitude
- Meridian transit longitude
- 58 navigational stars (J2000.0)
- Sextant corrections (IE, dip, refraction)
- Interactive LOP plot