Engine changelog

Semantic versioning (MAJOR.MINOR.PATCH). MAJOR for breaking changes. MINOR for new features. PATCH for fixes that do not change existing outputs.

v2.2.0 — 2026-04-29 (current)

Milestone L2 + L3 + L4 + L6++ — Full solar system, stellar atlas, small bodies.

  • VSOP87D full for the 7 planets (Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune): 31577 raw terms pulled from IMCCE, 12104 preserved after truncation at 1e-7 rad / 1e-9 AU. Validated against Meeus 32.a (heliocentric Venus) with 3.3 arcsec error.
  • core/astro/ephemeris/PlanetEphemerisVSOP87.php: class that computes geocentric position with iterative light-time (3 passes), ecliptic-equatorial conversion, apparent magnitude Meeus 41.
  • Pages /laboratorio/planeta/{name}: 7 individual pages for each planet with real-time position.
  • Hub /laboratorio/planetas: live table of the 7 planets with RA, Dec, magnitude, phase, elongation.
  • API /api/v1/planeta: REST endpoint for any planet.
  • core/astro/StarCatalog.php: access to the top 80 bright stars (HIP) + 88 IAU constellations.
  • Pages /laboratorio/atlas, atlas-estrela, atlas-constelacao: navigable catalogue with names in PT, EN and Latin, genitive forms, RA/Dec J2000.
  • core/astro/charts/LunarGlobe.php: SVG of the lunar globe with terminator and libration.
  • core/astro/charts/EclipseMap.php: world map to show eclipse visibility.
  • core/astro/ephemeris/KeplerEphemeris.php: Kepler solver for small bodies (asteroids + comets).
  • 22 numbered asteroids with JPL SBDB osculating elements: Ceres, Pallas, Juno, Vesta, Hygiea, Eros, Ida, Apophis, Bennu, Ryugu, Itokawa, Didymos, etc.
  • 10 historic comets: Halley, Hale-Bopp, NEOWISE, Hyakutake, Churyumov-Gerasimenko, Tempel 1, Borrelly, Wild 2, Tsuchinshan-ATLAS, Borisov.
  • Pages /laboratorio/asteroides + individual asteroid: real-time geocentric position, orbital elements, editorial context.
  • Visual endpoints /laboratorio/lunar-globe, /laboratorio/sky-chart: SVG server-rendered.
  • 16 planetary VSOP87 tests (test_phase16_planets.php), all pass. Adds to the existing total.
Total laboratory pages: hub + 5 docs + Moon + 7 planets + planets hub + sky-chart + lunar-globe + atlas + ~50 stars + 88 constellations + asteroids hub + 22 individual asteroids. ~180 auditable pages.

v2.1.0 — 2026-04-28

Milestone L0+L1+L5+L6+L8 — Astronomical Laboratory launched.

  • Structure /laboratorio/ created with hub, docs pages (precision, methodology, sources, glossary, changelog).
  • Hub /astronomia/ created for the fast-intent public trail.
  • IAU 2006 P03 precession implemented in core/astro/frames/PrecessionIAU2006.php (Capitaine, Wallace & Chapront 2003).
  • Frame Bias matrix B in core/astro/frames/FrameBias.php (IERS Conventions 2010 Eq. 5.18).
  • NPB chain (Nutation x Precession x Bias) in core/astro/frames/NPBChain.php: ICRS <-> true of date.
  • Besselian eclipses in core/astro/eclipse/BesselianElements.php: classifies solar (partial/annular/total) and lunar (penumbral/partial/total) eclipses with gamma and magnitude.
  • Server-rendered SVG charts: SvgChart, SkyChartPolar (stereographic), AltitudeTrack (altitude vs time).
  • Endpoint /laboratorio/sky-chart: sky map for any date + location.
  • Internal REST API at /api/v1/: lua, sol, health, version. Restricted to localhost / X-OC-Internal for now.
  • InputValidator with scientifically justified limits (latitude, altitude, pressure, temperature, refraction, ΔT, UT1-UTC, TAI-UTC, datetime).
  • PT/EN i18n with hreflang on every laboratory page.
  • 21 IAU 2006 tests (test_phase12_iau2006_frames.php), 15 chart tests (test_phase14_charts.php), 9 Besselian tests (test_phase15_besselian.php). Total: 45 new tests, 100% pass.
  • Validation against NASA Espenak: gamma with 0.001 error on solar eclipses, lunar magnitude with 0.02 error.

v2.0.0 — 2026-04-27

Refactor into SSOT (Single Source of Truth) layers.

  • Layered architecture: engine reorganized into core/astro/ with 30+ specialized classes (TimeScales, Coordinates, MoonPosition, SunPosition, ObserverModel, TopocentricTransformer, RiseSetTransitSolver, PhaseGeometryCalculator, etc).
  • ELP-2000/82B full: 36 series loaded in elp_all.php (8467 terms preserved after truncation at 0.0001 arcsec). Reproduces Meeus 47.a with error < 0.02 arcsec.
  • VSOP87D Sun: 58 truncated terms (35 L + 7 B + 16 R), replacing the previously simplified series.
  • IAU 2000A nutation opt-in: full 1365 terms available via observer.nutation_model = 'iau2000a'. Default stays IAU 1980 for compatibility.
  • 3 refraction models: Bennett 1982 (default), Saemundsson 1986, None (astrometric mode).
  • Espenak-Meeus ΔT: full polynomial in 9 historical branches covering 4000 BC – 3000 AD.
  • Topocentric transformer: parallax via WGS84 ellipsoid (optional, default sphere for compatibility).
  • Time scale bundle: UTC, UT1, TAI, TT, TDB explicit in every output.
  • Multicultural calendars: Gregorian, Julian, Hijri, Hebrew, Chinese.
  • Lunar folklore: Full/New Moon names by month (Algonquin) + Tupi-Guarani phase terms.
  • Birth date metrics: lunations lived, days, years.
  • Validation suite: 30+ test_phase*.php scripts covering each layer.
  • JPL Horizons benchmark: 322 seed points, 9/9 metrics within tolerance.
Editorial milestone: creation of /laboratorio/ with pages /precisao, /metodologia, /fontes, /glossario and this changelog.

v1.x.x — 2026-04 and earlier

Earlier versions before the layered refactor. Monolithic implementation in MoonPhaseCalculator.php with low-order approximations (sufficient for simple recreational/educational use but not for scientific validation). Kept in lua/data/MoonPhaseCalculator.php for compatibility with public pages that do not need v2 precision.

Roadmap for upcoming versions

v2.1.0 — IAU 2006 frames

  • IAU 2006 P03 precession (replaces IAU 1976)
  • Frame bias matrix B (ICRS → J2000 mean equator)
  • Chain ICRS → BCRS → GCRS → CIRS → ITRS
  • Complete TT-TDB relativistic difference

v2.2.0 — Solar system

  • VSOP87D FULL for 7 planets (Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune)
  • Individual pages per planet at /laboratorio/planeta/{name}
  • Prediction of oppositions and greatest elongation

v2.3.0 — Stellar atlas

  • Hipparcos top 5000 catalogue
  • 88 IAU constellations + Tupi, Yanomami, Chinese, Indian cultures
  • Pages /laboratorio/atlas/constelacao/{name} and /laboratorio/atlas/estrela/{HIP}

v2.4.0 — Small bodies

  • 5000 asteroids with Keplerian osculating elements
  • 100 numbered historic comets
  • Prediction of upcoming apparitions

v2.5.0 — Besselian eclipses

  • Complete Besselian elements
  • Global visibility map
  • Exact local magnitude for any city

v2.6.0 — Graphical outputs

  • 2D polar stereographic SVG sky chart
  • All-sky panoramic SVG
  • Lunar globe with terminator
  • Eclipse path maps
  • Solar system top-down view

v3.0.0 — DE440 with lazy load

  • SPK reader in PHP
  • DE440 support (1550-2650, 114 MB binary)
  • Toggle engine=elp (default) vs engine=de440
  • Meter precision instead of arcsec

Compatibility policy

  • MAJOR (X.0.0): may break API or change existing outputs. Announced 90 days in advance.
  • MINOR (x.Y.0): new features or new output fields, without breaking existing ones.
  • PATCH (x.y.Z): bug fixes or precision improvements that do not change contracts.

See the current methodology, precision validation, and full bibliography.