- Removed runtime dependency on Poko annotations (see drewhamilton/Poko#328) for an explanation on why this is happening in the first place.
- Using the latest Gradle/Kotlin version. Should have no impact.
- Some enhancements to testing though these wont actually impact the release besides giving me more confidence I dont break anything.
- Removed dependency on
kotlinx-datetime. Implemented similar enough true anomaly calculation without it.
This release uses the now stabilized time API from the Kotlin stdlib. Therefore, it requires Kotlin 2.3.0. The Instant/Clock types provided from kotlinx-datetime are no longer present in newer versions of kotlinx-datetime.
- Added height for solar calculations.
- Removed js-joda/timezone npm package dependency from js and wasmJs targets. This was only used for testing and should not have been a dependency for consumers.
- Various version updates. Eagerly awaiting a stable
kotlin.time.Instantimplementation. Planning to publish a 1.0-alpha soon which features no kotlinx-datetime dependency!
- Added
wasmJstarget.wasmWasicannot be added yet as kotlinx-datetime does not supportwasmWasi. Once kotlinx-datetime supportswasmWasiI plan to add support for it! - JS compilation now targets ECMAScript 2015.
- All sequences are now reversible with the
reverseparam. 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
Sequenceand 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
BlueHourDuskEndandBlueHourDawnEnd. The golden hour events were conspicuously missing. - Now compiled down to JRE 8 (1.8). Can be used with much older JVMs.
- Renamed
TwilightPhasetoSolarPhaseand made it soTwilightPhasesrepresent actual twilight phases rather than things likeSolarPhase.DayorSolarPhase.Night. This was misleading. - Broke
SolarPhaseinto distinct Dawn and Dusk phases. This really simplified a lot of things including documentation. Also, this means thatSolarState.solarPhasereturns the correct phase based on whether it's dawn or dusk. - Did the same thing as above with
LightStateandLightPhase. LunarEvent.anglewas renamed toLunarEvent.phase. See below.LunarIllumination.phasenow 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.phasewas inaccurate. It was based on theLunarIllumination.angleinstead ofLunarIllumination.phaseas it should be. - Spelling and grammar corrections in API docs.
- Fixed bug where
SolarEventSequence.limitwas 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.INFINITEas the intended functionality is to run "forever" when technically the limit defaults to365.days LightStatenow implementsLightPhase- Bumped js-joda/timezone to 2.18.3
Initial Release