The new module Cycles supports the calculation of several cycles.
The current version is build as a stand-alone module but in the future it might be integrated again in the overall Enigma application. Currently I am experimenting with separate modules and still have to decide if I will continue doing that or if I want to integrate all modules in one big application.
Back to Free Pascal
After experimenting with Java and Kotlin, I decided to return to Free Pascal. The major reason is the speed at which Java and Kotlin change. Libraries that a short time ago were pretty much standard are replaced easily. This means that these languages are very much alive and improving but it also means I need to spend a lot of time keeping up-to-date. And that I need to rebuild the main parts of the code to support new developments. This especially is a problem now Java FX seems to be replaced with Jetpack Compose for Desktop.
Free Pascal is pretty much stable and it does the job. But it is less sophisticated than Kotlin and the same goes for Lazarus: an excellent IDE but if you are used to using JetBrains IDEA it is a step back. The advantages of Free Pascal are also important: a stable product and excellent support for building the UI.
In an earlier attempt, I was not using Free Pascal in the correct way. Actually, I was over-engineering in an attempt to make Free Pascal behave like Java or Kotlin. It became a mess and I returned to Kotlin. But soon I was confronted with technical issues that took too much time. And as I am the only developer I need to solve all of them.
I decided to do an experiment: developing a separate module in Free Pascal but keeping it simple. No dependency injection, no interfaces everywhere, simple testing (combining integration tests and unit tests but no fakes or mocks). It worked. Not perfectly but good enough to make the decision to stick to Free Pascal for the foreseeable future.
Moving to GitLab
I replaced GitHub with GitLab. No special reason but in general GitLab offers more possibilities.
The source is available at https://gitlab.com/jkampherbeek/enigma-cycles
Make sure that you read the Developers Manual.
The compiled application is available at: http://radixpro.com/cycles. This download includes ephemeris files from the Swiss Ephemeris that are required to run the application and that are not saved at GitLab.