Skip to content

Releases: Endg4meZer0/lrcsnc

v0.1.2: Securing the convenience

03 Jan 09:59

Choose a tag to compare

Pre-release

This is actually a quite small release that mostly just addresses some issues I've had during the times using lrcsnc v0.1.1 this couple of months. But this time I'm also updating the AUR version the same day this releases, so... I really hope to be better.

Added

  • Ability to remove cached data for currently playing song by signaling USR2 at the lrcsnc process.

Changed

  • LrcLib provider now only sends one search request instead of multiple tries of get and search with different queries. Now, to get the best pick out of received data, there is an scoring algorithm inside lrcsnc itself that gives points for specific advantages (e.g. matching all artists or having exact duration match). Of course, that's not perfect, but it's actually better than LrcLib's get results sometimes, and on par otherwise.
  • A fatal log should now allow a graceful shutdown to proceed (e.g. deleting the UNIX socket during shutdown if launched as server with UNIX specified as protocol).
  • The default value for cache.life-span was changed from 168 (hours, so 1 week) to 720 (hours, so 1 month).

Fixed

  • The connection to LrcLib was insecure (using http) all this time (and I didn't notice T_T). That was changed (now it uses https properly).
  • Fatal log was always duplicated due to a duplicated print inside the method.
  • A proper error message for UNIX socket being busy during server's start-up that was introduced in v0.1.1 now works as intended.

Removed

  • Japanese romanization was removed due to being inconsistent and difficult to implement properly. Until I find a way to do so (preferrably not depending on outside binaries like kakasi), I will not try again. As such, the mention of kakasi required as optional dependency was removed as well.

v0.1.1: Expanding in connections

01 Nov 16:38

Choose a tag to compare

Pre-release

Added

  • Client-server communication is realized: now lrcsnc can be launched in server-only, client-only, or standalone mode. Connections are made using UNIX sockets or TCP protocol. Standalone mode remains a default option and doesn't require any connection.

    Corresponding configuration and flag options were added: the -s (server flag), -l (listen at), -p (protocol to use), and a whole [net] section in config file for consistent connection configurations (more at wiki).

Changed

  • Due to client-server communication addition, the idea of TUI was completely scrapped, and so the remnants in configuration sections: the [output] section is now called [client], and the [output.piped] section was removed completely as it is obsolete. The members of [output.piped] section were moved directly to [client] section.
  • The plain and JSON variants were replaced by templates and formats: you can do any kind of output now by using the template config option and keys like %text%, %title% and others (check wiki for more).
  • Store condition config option was changed from byte set to a more human-readable table.
    Was:
    [cache]
    ...
    store-condition = 100 # first for synced, second for plain, third for instrumental
    
    Now:
    [cache]
    ...
    
    [cache.store-condition]
    if-synced = true
    if-plain = false
    if-instrumental = true # was changed to true by default with this refactor
    

Full Changelog: v0.1.0...v0.1.1

v0.1.0: It exists...

03 May 20:00

Choose a tag to compare

v0.1.0: It exists... Pre-release
Pre-release

...and just that blows my mind already.

Full changelog is available at CHANGELOG.md.

Added

  • Some simple unit tests like cache and romanization.
  • Makefile for easier build and more control over linking stuff.
  • JSON piped output.

Changed

  • Everything is rewrote from scratch:
  • MPRIS support now works on signals instead of polling.
  • Configuration format is now TOML.
  • Japanese romanization now uses kakasi and is able to romanize kanji. Kakasi is installed as a separate dependency for it to work.
  • Romanization is now able to handle multiple languages on one line.
  • Flags usage is now handled by go-flags instead of standard library.

Removed

  • Playerctl dependency is now completely abandoned and cut from the app in favor of direct MPRIS handling using own library.
  • Terminal output in one line is removed.