Kotlin port, angle helpers, and tested migration guides

Almanac 0.8.1

Release Sky

Almanac 0.8.1 provides shared angle conversion helpers and tested migration guides, with the public astronomy API available in TypeScript, Swift, and Kotlin.

  • degreesToRadians and radiansToDegrees preserve signed angles and full turns without wrapping. Non-finite inputs and conversion overflow raise validation errors.
  • The SunCalc guide and Astronomy Engine guide cover event windows, polar crossings, refraction, phase conventions, and supported-range boundaries, with tested examples.
  • The native Kotlin/JVM port shares the public contract and fixture corpus with TypeScript and Swift. It supports Java 8 bytecode and Android API 26+, and is consumed through a pinned source checkout; no Maven artifact is published.
  • Equinox and solstice searches, lunar perigee and apogee searches, and the equation of time are available in all three ports. The accuracy contract records their evidence and limits: measured worst errors are 79 seconds for seasons through 2050, 14.8 minutes and 54 kilometers for lunar apsides, and 1.0 second for the equation of time.
  • The packed npm package is checked with static ESM imports, dynamic imports, and synchronous CommonJS loading on Node 22.12 and 24.

Local validation for the conversion helpers and guides passed 245 TypeScript tests, 204 Swift release tests, and 79 Kotlin tests, with 100% handwritten Kotlin line coverage. The release workflow runs all three suites, fixture checks, and independent npm and SwiftPM consumers before publishing.

npm install @openwaters/almanac@0.8.1
.package(url: "https://github.com/openwatersio/almanac.git", exact: "0.8.1")

Angle helpers and migration guides: #73. Kotlin port: #70. Seasons, apsides, and equation of time: #68. Benchmarks: #69. Release preparation: #74.

Full changelog.