- Added
wasmJs
target.wasmWasi
cannot be added yet as kotlinx-datetime does not supportwasmWasi
. Once kotlinx-datetime supportswasmWasi
I plan to add support for it! - JS compilation now targets ECMAScript 2015.
- All sequences are now reversible with the
reverse
param. This means you can request events going backwards in time- This can be useful when you want to know the current solar state or lunar state. You can request a reverse
Sequence
and find the most recent event that occurred prior to a given start time. - This lets you answer questions like "When was the last full moon" in a more straightforward way.
- This can be useful when you want to know the current solar state or lunar state. You can request a reverse
- Upgraded Kotlin to 2.0.10
- Upgraded kotlinx-datetime to 6.0
- Added Poko to make dealing with public "data" classes easier. Should be completely passive from a user perspective.
- Upgraded Gradle to 8.10. Fixed some deprecated Gradle config
- Added iOS/Mac targets. This can now be used in KMP projects targeting those platforms!
- Added GoldenHourDuskEnd and GoldenHourDawnEnd to be consistent with
BlueHourDuskEnd
andBlueHourDawnEnd
. The golden hour events were conspicuously missing. - Now compiled down to JRE 8 (1.8). Can be used with much older JVMs.
- Renamed
TwilightPhase
toSolarPhase
and made it soTwilightPhases
represent actual twilight phases rather than things likeSolarPhase.Day
orSolarPhase.Night
. This was misleading. - Broke
SolarPhase
into distinct Dawn and Dusk phases. This really simplified a lot of things including documentation. Also, this means thatSolarState.solarPhase
returns the correct phase based on whether it's dawn or dusk. - Did the same thing as above with
LightState
andLightPhase
. LunarEvent.angle
was renamed toLunarEvent.phase
. See below.LunarIllumination.phase
now represents the same concept asLunarEvent.phase
.- Prior to this change there was
angle
(0..360) andphase
(-180..180). These have been combined into a single concept calledphase
(0..360). Having two similarly named numeric types was a recipe for confusion.
- Prior to this change there was
- Made kotlinx-datetime an api dependency
- Fixed bug where
LunarPosition.phase
was inaccurate. It was based on theLunarIllumination.angle
instead ofLunarIllumination.phase
as it should be. - Spelling and grammar corrections in API docs.
- Fixed bug where
SolarEventSequence.limit
was not respected in certain situations and the resulting sequence could contain values beyond the specified limit.
- Bumped Kotlin version to 1.9.23
- Adjust coroutine readme example to use
Duration.INFINITE
as the intended functionality is to run "forever" when technically the limit defaults to365.days
LightState
now implementsLightPhase
- Bumped js-joda/timezone to 2.18.3
Initial Release