Skip to content

Latest commit

 

History

History
650 lines (422 loc) · 19.3 KB

changelog.md

File metadata and controls

650 lines (422 loc) · 19.3 KB

Snapcast changelog

Version 0.23.0

Features

  • Client: Add PulseAudio player backend (Issue #722)
  • Client: Configurable buffer time for alsa and pulse players
  • Server: If docroot is not configured, a default page is served (Issue #711)
  • Server: airplay source supports "password" parameter (Issue #754)

Bugfixes

  • Server: airplay source deletes Shairport's meta pipe on exit (Issue #672)
  • Server: alsa source will not send silece when going idle (Issue #729)
  • Server: pipe source will not send silence after 3h idle (Issue #741)
  • Server: Fix build error on FreeBSD (Issue #752)
  • Client: "make install" will set correct user/group for snapclient (Issue #728)
  • Client: Fix printing UTF-8 device names on Windows (Issue #732)
  • Client: Fix stuttering on alsa player backend (Issue #722, #727)
  • Client: Terminate if host is not configured and mDNS is unavailable

General

  • Server: Change librespot parameter "killall" default to false (Issue #746, #724)
  • Client: Android uses performance mode "none" to allow effects (Issue #766)
  • Snapweb: Update to v0.1.0
  • Build: Update CMakeLists.txt to build Snapclient on Android

Johannes Pohl [email protected] Sun, 10 Jan 2021 00:13:37 +0200

Version 0.22.0

Features

  • Server: Add Meta stream source (Issue #402, #569, #666)
  • Client: Add file audio backend (Issue #681)

Bugfixes

  • Add missing define for alsa stream to makefile (Issue #692)
  • Fix playback when plugging the headset on Android (Issue #699)
  • Server discards old chunks if not consumed (Issue #708)

General

  • Less verbose logging during pipe reconnects (Issue #696)
  • Add null encoder for streams used only as input for meta streams
  • Snapweb: Change latency range to [-10s, 10s] (Issue #695)
  • Update Snapweb, including PR #11, #12, #13, Issues #16, #17

Johannes Pohl [email protected] Thu, 15 Oct 2020 00:13:37 +0200

Version 0.21.0

Features

  • Server: Support for WebSocket streaming clients
  • Server: Install Snapweb web client (Issue #579)
  • Server: Resample input to 48000:16:2 when using opus codec
  • Server: Add Alsa stream source

Bugfixes

  • make install will setup the snapserver home dir (Issue #643)
  • Client retries to open a blocked alsa device (Issue #652)

General

  • debian packag generation switched from make to CMake buildsystem
  • Reintroduce MACOS define, hopefully not breaking anything on macOS
  • Snapcast uses GitHub actions for automated CI/CD
  • CMake installs man files (Issue #507)
  • Update documentation (Issue #615, #617)

Johannes Pohl [email protected] Sun, 13 Sep 2020 00:13:37 +0200

Version 0.20.0

Features

  • Client: Windows support (Issue #24)
  • Client: add hardware mixer (Issue #318)
  • Client: add "script" and "none" mixer (Issue #302)
  • Client: add sharingmode for audio device (if supported)
  • Logging: configurable sink and filters (Issue #30, #561, #122, #559)
  • Librespot: add option "disable-audio-cache=[false|true]"

Bugfixes

  • Fix build failure on FreeBSD (Issue #565)
  • Fix calling lsb_release multiple times (Issue #470)
  • Client: high CPU load and crash during playback (Issue #609, #628)
  • Client: improved handling of USB audio disconnects (Issue #64)
  • Client: latency is forgotten (Issue #476, #588, Snapdroid #11)
  • Client: fix segfault on mac when playback is paused (Issue #560)
  • Client: fix bonjour on mac reports empty IP (Issue #632)
  • Client: fix buzzing tone on Android (Issue #23, #24)
  • Server: fix crash if client disconnects during connect (Issue #639)
  • Server: fix reading metadata from shairport-sync (Issue #624)
  • Server: fix crash on FreeBSD if settings.json is empty (Issue #620)
  • Server: fix warning about unknown command line options (Issue #635)
  • Readme: openWrt documentation (Issue #633)
  • Fix setting the daemon's process priority (PR #448)

General

  • Client: use less threads and thus less ressources
  • Update links to xiph externals (Issue #637, PR #616)

Johannes Pohl [email protected] Sat, 13 Jun 2020 00:13:37 +0200

Version 0.19.0

Features

  • Option to not kill all running librespot instances (PR #539)
  • Add Airplay cover art to metadata (PR #543)
  • Anroid: add support for Oboe audio backend
  • Server: configurable PID file (Issue #554)
  • Server: configurable persistant storage directory (Issue #554)
  • Server: config file options can be overwritten on command line
  • Client: PCM stream can be resampled using the "--sampleformat" option
  • Librespot: add option "autoplay=[false|true]"

Bugfixes

  • Fix Airplay metadata, port selection and device names (PR #537)
  • Fix cmake build when libatomic is needed (PR #540)
  • Control: fix random crash (PR #543)

General

  • ALSA: improved latency estimation for better sync
  • Improved audio synchronization
  • Faster initial sync after client start and reconnect
  • Less playback tempo adaptions and jitter (Issue #525)
  • Playback is robust against system time changes (Issue #522)
  • Less "resyncs" in stream reader that were causing audio dropouts
  • Control: quicker response to group volume changes
  • Server uses less memory when sending PCM data to a stalled connection

Johannes Pohl [email protected] Sat, 14 Mar 2020 00:13:37 +0200

Version 0.18.1

Bugfixes

  • Fix random server crash or deadlock during stream client disconnect
  • Fix random server crash or deadlock during control client disconnect
  • Fix airplay stream buffer allocation (PR #536)

Johannes Pohl [email protected] Tue, 28 Jan 2020 00:13:37 +0200

Version 0.18.0

Features

  • Add TCP stream reader
  • Configurable number of server worker threads

Bugfixes

  • Client: fix hostname reporting on Android
  • Fix some small memory leaks
  • Fix Librespot stream causing zombie processes (Issue #530)
  • Process stream watchdog is configurable (Issue #517)
  • Fix Makefile for macOS (Issues #510, #514)

General

  • Refactored stream readers
  • Server can run on a single thread

Johannes Pohl [email protected] Wed, 22 Jan 2020 00:13:37 +0200

Version 0.17.1

Bugfixes

  • Fix compile error if u_char is not defined (Issue #506)
  • Fix error "exception unknown codec ogg" (Issue #504)
  • Fix random crash during client disconnect

Johannes Pohl [email protected] Sat, 23 Nov 2019 00:13:37 +0200

Version 0.17.0

Features

  • Support for Opus low-latency codec (PR #4)

Bugfixes

  • CMake: fix check for libatomic (Issue #490, PR #494)
  • WebUI: interface.html uses the server's IP for the websocket connection
  • Fix warnings (Issue #484)
  • Fix lock order inversions and data races identified by thread sanitizer
  • Makefiles: fix install targets (PR #493)
  • Makefiles: LDFLAGS are added from environment (PR #492)
  • CMake: required Boost version is raised to 1.70 (Issue #488)
  • Fix crash in websocket server

General

  • Stream server uses less threads (one in total, instead of 1+2n)
  • Changing group volume is much more responsive for larger groups
  • Unknown snapserver.conf options are logged as warning (Issue #487)
  • debian scripts: change usernames back to snapclient and snapserver

Johannes Pohl [email protected] Wed, 20 Nov 2019 00:13:37 +0200

Version 0.16.0

Features

  • Control server: websocket support for JSON RPC
  • Control server: simple webserver integrated to host web UIs
  • Control server: bind-to addresses are configurable
  • Control server: streams can be added and Removed (PR #443)
  • Control server: group names can be changed (PR #467)
  • Librespot: add onevent parameter (PR #465)

Bugfixes

  • Fix build on macOS (Issue #474)

General

  • Control server uses less threads (one in total, instead of 1+2n)
  • Snapserver: Configuration is moved into a file
  • Removed submodules "popl" and "aixlog" to ease build
  • Snapcast depends on boost::asio and boost::beast (header only)
  • Tidy up code base
  • Makefile doesn't statically link libgcc and libstdc++
  • debian scripts: change usernames to _snapclient and _snapserver

Johannes Pohl [email protected] Sat, 13 Oct 2019 00:13:37 +0200

Version 0.15.0

Bugfixes

  • Snapserver: fix occasional deadlock
  • Snapclient: make systemd dependeny to avahi-daemon optional
  • cmake: fix build on FreeBSD

General

  • additional linker flags "ADD_LDFLAGS" can be passed to makefile
  • update man pages, fix lintian warnings
  • Support Android NDK r17

Johannes Pohl [email protected] Sat, 07 Jul 2018 00:13:37 +0200

Version 0.14.0

Features

  • Snapserver supports IPv4v6 dual stack and IPv4 + IPv6

Bugfixes

  • cmake: fix check for big endian (Issue #367)
  • cmake: fix linking against libatomic (PR #368)
  • Snapclient compiles with Android NDK API level 16 (Issue #365)
  • Fix compilation errors on FreeBSD (Issue #374, PR #375)

General

  • cmake: make dependency on avahi optional (PR #378)
  • cmake: Options to build snapserver and snapclient
  • cmake: works on FreeBSD
  • Update external libs (JSON for modern C++, ASIO, AixLog)
  • Restructured source tree
  • Moved Android app into seperate project snapdroid

Johannes Pohl [email protected] Fri, 27 Apr 2018 00:13:37 +0200

Version 0.13.0

Features

  • Support "volume" parameter for Librespot (PR #273)
  • Add support for metatags (PR #319)

Bugfixes

  • Fix overflow in timesync when the system time is many years off
  • Zeroconf works with IPv6
  • Snapclient unit file depends on avahi-daemon.service (PR #348)

General

  • Drop dependency to external "jsonrpc++"
  • Move OpenWrt and Buildroot support into separate project "SnapOS"
  • Add CMake support (not fully replacing Make yet) (PR #212)
  • Remove MIPS support for Android (deprecated by Google)
  • Use MAC address as default client id (override with "--hostID")

Johannes Pohl [email protected] Tue, 04 Mar 2018 00:13:37 +0200

Version 0.12.0

Features

  • Support for IPv6 (PR #273, #279)
  • Spotify plugin: onstart and onstop parameter (PR #225)
  • Snapclient: configurable client id (Issue #249)
  • Android: Snapclient support for ARM, MIPS and X86
  • Snapserver: Play some silence before going idle (PR #284)

Bugfixes

  • Fix linker error (Issue #255, #274)
  • Snapclient: more reliable unique client id (Issue #249, #246)
  • Snapserver: fix config file permissions (Issue #251)
  • Snapserver: fix crash on bye from control client (Issue #238)
  • Snapserver: fix crash on port scan (Issue #267)
  • Snapserver: fix crash when a malformed message is received (Issue #264)

General

  • Improved logging: Use --debug for debug logging
  • Log to file: Use --debug=<filename>
  • Improved exception handling and error logging (Issue #276)
  • Android: update to NDK r16 and clang++
  • hide spotify credentials in json control message (Issue #282)

Johannes Pohl [email protected] Tue, 17 Oct 2017 00:13:37 +0200

Version 0.11.1

Bugfixes

  • Snapserver produces high CPU load on some systems (Issue #174)
  • Snapserver compile error on FreeBSD

General

  • Updated Markdown files (PR #216, #218)

Johannes Pohl [email protected] Tue, 21 Mar 2017 00:13:37 +0200

Version 0.11.0

Features

  • Don't send audio to muted clients (Issue #109, #150)
  • Snapclient multi-instance support (Issue #73)
  • daemon can run as different user (default: snapclient, Issue #89)
  • Spotify plugin does not require username and password (PR #181)
  • Spotify plugin is compatible to librespot's pipe backend (PR #158)
  • Clients are organized in Groups
  • JSON RPC API: Support batch requests

Bugfixes

  • Compilation error on recent GCC versions (Issues #146, #170)
  • Crash when frequently connecting to the control port (Issue #200)
  • Snapcast App crashes on Android 4.x (Issue #207)
  • Resync issue on macOS (Issue #156)
  • Id in JSON RPC API can be String, Number or NULL (Issue #161)
  • Use "which" instead of "whereis" to find binaries (PR #196, Issue #185)
  • Compiles on lede (Issue #203)

General

  • JSON RPC API is versionized (current version is 2.0.0)
  • Restructured Android App to support Groups

Johannes Pohl [email protected] Thu, 16 Mar 2017 00:13:37 +0200

Version 0.11.0-beta-1

Features

  • Snapclient multi-instance support (Issue #73)
  • daemon can run as different user (default: snapclient, Issue #89)
  • Spotify plugin does not require username and password (PR #181)
  • Spotify plugin is compatible to librespot's pipe backend (PR #158)
  • Clients are organized in Groups
  • JSON RPC API: Support batch requests

Bugfixes

  • Resync issue on macOS (Issue #156)
  • Id in JSON RPC API can be String, Number or NULL (Issue #161)
  • Use "which" instead of "whereis" to find binaries (PR #196, Issue #185)
  • Compiles on lede (Issue #203)

General

  • JSON RPC API is versionized (current version is 2.0.0)
  • Restructured Android App to support Groups

Johannes Pohl [email protected] Sat, 04 Mar 2017 00:13:37 +0200

Version 0.10.0

Features

  • Added support process streams:
    Snapserver starts a process and reads PCM data from stdout
  • Specialized versions for Spotify and AirPlay

Bugfixes

  • Fixed crash during server shutdown
  • Fixed Makefile for FreeBSD
  • Fixed building of dpk (unsigned .changes file)

General

  • Speed up client and server shutdown

Johannes Pohl [email protected] Wed, 16 Nov 2016 00:13:37 +0200

Version 0.9.0

Features

  • Added (experimental) support for macOS (make TARGET=MACOS)

Bugfixes

  • Android client: Fixed crash on Nougat (Issue #97)
  • Fixed FreeBSD compile error for Snapserver (Issue #107)
  • Snapserver randomly dropped JSON control messages
  • Long command line options (like --sampleformat) didn't work on some systems (Issue #103)

General

  • Updated Android NDK to revision 13

Johannes Pohl [email protected] Sat, 22 Oct 2016 00:13:37 +0200

Version 0.8.0

Features

  • Added support for FreeBSD (Issue #67)
  • Android client: Added Japanese and German translation
  • Android client: Added support for ogg (Issue #83)

Bugfixes

  • OpenWRT: makefile automatically sets correct endian (Issue #91)

Johannes Pohl [email protected] Sun, 24 Jul 2016 00:13:37 +0200

Version 0.7.0

Features

  • Support for HiRes audio (e.g. 96000:24:2) (Issue #13)
    • Bitdepth must be one of 8, 16, 24 (=24 bit padded to 32) or 32
  • Auto start option for Android (Issue #49)
  • Creation mode for the fifo can be configured (Issue #52)
    • "-s pipe:///tmp/snapfifo?mode=[read|create]"

Bugfixes

  • Server was sometimes crashing during shutdown
  • Exceptions were not properly logged (e.g. unsupported sample rates)
  • Fixed default sound card detection on OpenWrt

Johannes Pohl [email protected] Sat, 07 May 2016 00:13:37 +0200

Version 0.6.0

Features

  • Port to OpenWrt (Issue #18)

Bugfixes

  • Android client: fixed crash if more than two streams are active (Issue #47)

General

  • Support Tremor, an integer only Ogg-Vorbis implementation
  • Endian-independent code (Issue #18)
  • Cleaned up build process

Johannes Pohl [email protected] Sun, 10 Apr 2016 00:02:00 +0200

Version 0.5.0

Features

  • Android client: Fast switching of clients between streams

Bugfixes

  • Server: Fixed reading of server.json config file

General

  • Source code cleanups

Johannes Pohl [email protected] Fri, 25 Mar 2016 00:02:00 +0200

Version 0.4.1

General

  • Debian packages (.deb) are linked statically against libgcc and libstdc++ to improve compatibility

Johannes Pohl [email protected] Sat, 12 Mar 2016 12:00:00 +0200

Version 0.5.0-beta-2

Features

  • Remote control API (JSON)
    • Added version information
    • Stream playing state (unknown, idle, playing, inactive) (Issue #34)
  • Android client: manually configure snapserver host name
  • Android client compatibility improved: armeabi and armeabi-v7 binaries
  • Android client: configurable latency
  • Improved compatibility to Mopidy (GStreamer) (Issue #23)

Bugfixes

  • Android client: fixed "hide offline" on start
  • Store config in /var/lib/snapcast/ when running as daemon (Issue #33)

General

  • README.md: Added resampling command to the Mopidy section (Issue #32)

Johannes Pohl [email protected] Wed, 09 Mar 2016 00:02:00 +0200

Version 0.5.0-beta-1

Features

  • Remote control API (JSON)
    • Get server status, get streams, get active clients, ...
    • Assign volume, assign stream, rename client, ...
  • Android port of the Snapclient with a remote control app (requires API level 16, Android 4.1)
  • Multiple streams ("zones") can be configured using -s, --stream
    The stream is configured by an URI: path, name, codec, sample format, ...
    E.g. pipe:///tmp/snapfifo?name=Radio&sampleformat=48000:16:2&codec=flac or file:///home/user/some_pcm_file.wav?name=file
  • Added .default file for the service in /etc/default/snapserver and /etc/default/snapclient.
    Default program options should be configured here (e.g. streams)

Bugfixes

  • Pipe reader recovers if the pipe has been reopened

General

  • SnapCast is renamed to Snapcast
    • SnapClient => Snapclient
    • SnapServer => Snapserver
  • Changed default sample rate to 48kHz. The sample rate can be configured per stream -s "pipe:///tmp/snapfifo?name=default&sampleformat=44100:16:2. The default can be changed with --sampleformat 44100:16:2
  • Snapcast protocol:
    Less messaging: SampleFormat, Command, Ack, String, not yet final
  • Removed dependency to boost

Johannes Pohl [email protected] Tue, 09 Feb 2016 13:25:00 +0200

Version 0.4.0

Features

  • Debian packages (.deb) for amd64 and armhf
  • Added man pages

Bugfixes

  • Snapserver and Snapclient are started as daemon on systemd systems (e.g. ARCH, Debian Jessie)

General

  • Snapserver is started with normal process priority (changed nice from -3 to 0)

Johannes Pohl [email protected] Mon, 28 Dec 2015 12:00:00 +0200

Version 0.3.4

Bugfixes

  • Fix synchronization bug in FLAC decoder that could cause audible dropouts

Johannes Pohl [email protected] Wed, 23 Dec 2015 12:00:00 +0200

Version 0.3.3

Bugfixes

  • Fix Segfault when ALSA device has no description

Johannes Pohl [email protected] Sun, 15 Nov 2015 12:00:00 +0200

Version 0.3.2

General

  • Makefile uses CXX instead of CC to invoke the c++ compiler

Bugfixes

  • Time calculation for PCM chunk play-out was wrong on some gcc versions

Johannes Pohl [email protected] Wed, 30 Sep 2015 12:00:00 +0200

Version 0.3.1

General

  • Improved stability over WiFi by avoiding simultaneous reads/writes on the socket connection

Bugfixes

  • Fixed a bug in avahi browser

Johannes Pohl [email protected] Wed, 26 Aug 2015 12:00:00 +0200

Version 0.3.0

Features

  • Configurable codec options. Run snapserver -c [flac|ogg|pcm]:? to get supported options for the codec
  • Configurable buffer size for the pipe reader (default 20ms, was 50ms before)
  • Process priority can be changed as argument to the daemon option -d<prio>. Default priority is -3

Bugfixes

  • Fixed deadlock in logger
  • Fixed occasional timeouts for client to server requests (e.g. time sync commands)
  • Client didn't connect to a local server if the loopback device is the only device with an address

General

  • Code clean up
  • Refactored encoding for lower latency

_Johannes Pohl [email protected] Sun, 16 Aug 2015 19:25:51 +0100

Version 0.2.1

Features

  • Arch Linux compatibility

_Johannes Pohl [email protected] Fri, 24 Jul 2015 15:47:00 +0100