Backend rewrite
I made the first version of ShelfPlayer about two years ago and have rewritten it in its entirety sometime since then. With 2.5.0 I redid most of the front end, but there is still some work to do.
Even though 2.5.0 has been tested for months, some crashes still got into the release version. They are (as far as I can tell) caused by concurrently executing code. Arrays are probably the root cause, as they are not thread-safe. However there are some other shortcomings of the current backend, and I want to address them.
So I decided to rewrite it. I already finished SPFoundation & SPNetwork. So SPPersistence and SPPlayback remain. For anyone curious, the progress can be seen here.
Among other things, this should allow for and improve:
- Multi-user support
- Intents
- More efficient downloads
- Less crashes & hangs
- More complex features
- Lots of small things
This might be a personal thing, but I learned a lot over the last two years (ShelfPlayer v1 was the first application entirely written in Swift I ever developed), and it shows. The new code I write is a lot better, which improves performance, but it's just nice in general to have clean, well-written, and easy-to-maintain code, Which is what I am trying to achieve.
But doing this takes time. I worked for two days on the new connection add/manage views and am still not done. So, if you are affected by the crashes or are really waiting for Widgets, etc., you will need some more patience. Since it's the new year, I also need to do my taxes now, which is essentially a large, inefficient, poorly documented, convoluted black hole for my time.
That's it, I just wanted to share what I am up to because there won't be a release in the foreseeable future and merge all issues related to mysterious crashes.
Happy New Year!