Cider Release 2.6.0

What's New?

The infamous 'Genten Rewrite':

  • Rewritten backend for Linux and macOS containing better integration with both operating systems:
    • Introduction of System Accent, where you can get Cider to follow your systems theme.
    • Implemented a CLI client with Cider, where launching it with --help will show you available options.
    • A rewritten authentication flow allowing for use of Security Keys with your Apple Account.
    • Rewritten protocol handling allowing for Apple Music links to be easily opened in-app.
    • Restructured the menubar for macOS users.
  • The Linux and macOS clients are now in-line with Windows in terms of WebSocket usage, client-options and various other areas.
  • Partly rewritten interop library between the clients and frontend:
    • This adds better update checking for issues.
    • Also adds more stability and clearer errors for plugin developers.
  • Several improvements to the Windows backend containing more cli flags, better audio enhancements and more.
  • Electron now has the 'fluent' scrollbars that Windows has.

UI Changes

  • A rewritten Out-of-Box Experience (OOBE) bringing a cleaner and sleeker UI. (That actually works now!)
  • Improved album view, with the banner moved into a clearer position.
  • The tray icon now has much more interactivity across all platforms.
  • Added separate options for lyrics in immersive to make configuring easier.
  • Several tweaks to the lyrics styling and spacing.
  • Added 'Fyre' lyric styling preset.
  • Added our own MusicKit source to prevent Apple updates breaking the app.
  • Added support for showing quick actions in the comfy layout.
  • Protocol support is matched across both apps, allowing for iTunes/Apple Music links to be opened in Cider wherever.
  • Enhanced the DiscordRPC customization to its own window.
  • Improved image quality in several areas.
  • Settings editorial layout drag-and-drop system has been improved.
  • Changed several more icons to our newer 'Nucleo' icons
  • Add option to show/hide album name in Discord presence
  • Added miniplayer keybind.
  • Improve window position for multi-monitor setups.
  • Add options for keeping completed lyrics and enabling static lyrics
  • Improved the fade on the 'powerswoosh' element.
  • LastFM module was rewritten for better logic and error handling.
  • Volume icon was improved to a clearer alternative.
  • Errors with MusicKit are now shown to the user.
  • Added further troubleshooting options to disable plugins
  • Recently played playlists will now show as up at the top of the 'Add to Playlist' menu.

Audio Changes

  • Added 'Maikiwi 2024' spatial profile.
  • Enhanced compatibility in Cider Adrenaline Processor (CAP) with planar and non-dynamic headphone drivers Note: Electrostatic headphone users should still leave CAP disabled.

Bug Fixes

  • The common 'A JavaScript Error Occured' dialog should no longer appear in the Electorn client due to the changes in auth flow.
  • Storefront and language functionality was fixed to default to auto, this was causing a lot of issues in the previous release, so this should fix it. I highly recommend leaving this setting.
  • Cycled out more of legacy Tauri, Firebase and Connect content to prevent any errors occuring.
  • Fixed an issue where new playlist folders could not be created.
  • Fixed rating and library buttons to function correctly.
  • Fixed delay on returning to albums page in the library.
  • Fixed an issue with DiscordRPC where iCloud uploads would not display correctly.
  • Added missing volume percentage in miniplayer.
  • Fixed credits section in lyrics to scroll correctly.
  • Several classes and components have been migrated to Typescript and more reactive-friendly approached, making the app less prone to errors
  • Fixed search suggestions menu to display correctly.
  • Improved miniplayer handling and functionality in the Linux/macOS backend.
  • Fixed an issue where playlists would infinitely download.
  • Fixed an issue where 'ghost'/empty playlists would be displayed. (Make sure you do not have legacy fetching enabled in Experiments.)
  • LastFM settings no longer affect everything.
  • LastFM now scrobbled iCloud uploads correctly.
  • Playlist artwork now displays correctly in 'short' items.
  • Home page was rewritten to fix issues with changing order and layout.
  • Fixed the height of the titlebar in settings.
  • Fixed the background of the compact player when HDR is enabled.
  • Fixed an issue where artwork would continue to display from a previous song.
  • Fixed an issue where 'hero' items would show empty items.
  • Incognito/Private mode is now respected in LastFM, Discord and in-app playback history.
  • The user no longer gets notified for an update if they are on a build later than the latest.
  • Fixed an issue where removing an item from your library would remove it from the album you are in.
  • The logic behind the Replay feature was redone to better handle the data.
  • Fixed language issues with non-supported languages in the getPlural lib.
  • Fixed an issue where playing an item next in a playlist would queue the whole playlist over the item.
  • When shuffling an album, a random song is played first over the first one.
  • Fixed an issue with Musixmatch translations failing to get matched without all attributes being present.

API Changes

Plugin Changes

  • MDNS support for PluginKit was added.

RPC Changes

  • + clearQueue added to client RPC
  • + removeFromQueue added to client RPC

Client API Changes

  • + /shuffle-mode added to get the shuffle mode.
  • + /autoplay added to get the autoplay mode.
  • + /repeat-mode added to get the repeat mode.
  • + /library-status route added to get the current song status.
  • + (POST) /queue/remove-by-index route added with index params to remove item from queue.
  • + (POST) /queue/clear-queue route added to clear the queue.

Notices

  • AirPlay and Chromecast has been depreciated and removed from the new backend for Linux and macOS. This decision was made due to the state of the codebase on these features. This will make a return at a later date, however its current state is borderline non-functional.
  • The main application data directory for all platforms has been changed to the following:
    • %appdata%/sh.cider.dotnet (Windows)
    • $HOME/sh.cider.genten (Linux)
    • $HOME/Library/Application Support/sh.cider.genten (macOS)
    • %localappdata%/packages/27554FireDevElijahKlauman.CiderEA_270bejk4xgzqp/LocalCache/Roaming/sh.cider.dotnet (Microsoft Store)

The Technical Changes

Adding this part for the people who are interested on whats going on behind the scenes.

  • A new streamlined plugin system for the backend making it easy for us to add in new features for the Electron client.
  • Migrated to ElectronForge from a 'bootstrap' version of Electron-Builder.
  • Implemented a new CI workflow allowing us to easily publish builds to Taproom whenever.
  • We migrated from Yarn to PNPM usage and implemented Nx for easier monorepo handling.
  • Biome was also implemented to have a universal styling, over using eslint/prettier everywhere
  • We have now fully typed our config, making it easier to stick to a schema.
  • Bumped version of essential all deps.
  • Added a new settings handling system to make it easier to add new settings.
  • We implemented a new 'storefront handler' that deals with all storefront functionalities, this is a much better approach than previously.
  • We also migrated the majority of plugins to our interop library codenamed 'Izanami', so its easier for updating.
  • Redone the user-agent to reflect standard format.
  • We have also improved logging in the Izanami library to be clearer for debugging purposes.