Changelog
---------

0.41.3 (2022-03-04)
 - FIXED: python 3.10 compatibility

0.41.2 (2018-02-07)
 - FIXED: Make jPlayer work again in master branch (merge 0.41.1 into master)
 - FIXED: '--setup' now works for CherryPy 12 and upwards  (thanks to TangoSierraAlfaVI)
 - FIXED: UnicodeError when transcoding non-ASCII URLs (thanks to evetsso)
 - IMPROVEMENT: Added Bandcamp album cover fetching (thanks to its-wednesday)

0.41.1 (2017-10-10)
 - FIXED: reverted jPlayer update, because it broke everything

0.41.0 (2017-10-09)
 - FIXED: Installing CherryMusic via pip (thanks to rjsberry)
 - IMPROVEMENT: updated jPlayer to 2.9.2, improved mobile compatibility (thansk to Max Leiter)
 - IMPROVEMENT: Increased List Directory Item Size (thansk to Max Leiter)
 - IMPROVEMENT: Made usernames case-insensitive (thanks to Max Leiter)
 - IMPROVEMENT: Changed download zip archive name (thanks to Max Leiter)

0.40.0 (2017-04-08)
 - FEATURE: Added option to select Album Art Source for manual searches
 - FIXED: Server refused to start when not able to detect cherrypy version
 - FIXED: No more blinking page title in Chrome
 - FIXED: Corrected redirect after logout when for custom "server.rootpath"
 - IMPROVEMENT: Using iTunes as default method to fetch album art
 - IMPROVEMENT: Session duration can now be set in the config (thanks regisb)

0.39.1 (2016-10-09)
 - FIXED: broken import

0.39.0 (2016-10-09)
 - FEATURE: ... new feature here!
 - FIXED:
 - IMPROVEMENT:

0.38.0 (2016-09-17)
 - FEATURE: Use file metadata when album art fetching (thanks mattss)
 - IMPROVEMENT: Switch to iTunes API for album art fetching (thanks mattss)
 - IMPROVEMENT: Better filtering of directory names when fetching album art (thanks mattss)

0.37.2 (2016-08-07)
 - FIXED: more fixes for cherrypy detection (thanks Isgar)

0.37.1 (2016-07-30)
 - FIXED: crash on start when not able to detect cherrypy version

0.37.0 (2016-07-09)
 - FEATURE: support for reading MP4 tags
 - FIXED: unicode crash when using cherrypy > 5.4
 - FIXED: running the server directly on port 80
 - FIXED: transcoding of OGG files with other samplerates than 44khz
 - IMPROVEMENT: documented --deleteuser and --changepassword switches
 - IMPROVEMENT: don't show remaining time in shuffle mode

0.36.0 (2015-11-21)
 - FIXED: *Security* CVE-2015-8309 Download of arbitrary files by logged in users (thanks 
feedersec)
 - FIXED: *Security* CVE-2015-8310 XSS attack by logged-in users (thanks feedersec)
 - FIXED: OGA files are now correctly recognized as ogg-audio files
 - FIXED: Sorting tracks by track number correctly
 - FIXED: Cannot load playlists containing single quotes
 - FEATURE: allow reverse-sorting of playlists (thanks pando85)
 - FEATURE: Enabled support of ffmpeg to decode ALAC files
 - FEATURE: Added optional support for Pillow as Image Library
 - IMPROVEMENT: disabled confirm-to-quit message for playlist downloads
 - IMPROVEMENT: Updated TinyTag to version 0.10.1 (much faster ID3 parsing)
 - IMPROVEMENT: Predictable selection of album-art images (thanks lzh9102)
 - FIXED: Removed restrictions for passwords created in CLI

0.35.2 (2015-04-20)
 - FIXED: server not starting on windows

0.35.1 (2015-04-10)
 - FIXED: server not starting for python versions below 3.3

0.35.0 (2015-03-22)
 - FEATURE: Opus transcoding support (thanks to qqueue)
 - FEATURE: Support for media keys (thanks to cheese83)
 - FIXED: File browser crash, when listing unreadable files (thanks to Tom Clegg)
 - FIXED: Album art fetching breaking for very file paths (thanks to Che-Huai Lin)
 - FIXED: Broken file listing if basedir does not end with a slash
 - FIXED: Proper cover art display in safari (thanks to yukip)
 - FIXED: Searching for terms ending in non ASCII-characters
 - FIXED: keyboard shortcut settings for unrecognized keys (thanks cheese83)
 - IMPROVEMENT: devel git version detection (thanks to MartijnRas)
 - IMPROVEMENT: More transcoding quality settings (thanks to Druneau)
 - IMPROVEMENT: Show first track after loading playlist
 - IMPROVEMENT: Allow indexing of symlinked files

0.34.1 (2014-12-17)
 - FIXED: Queue not visible due to outdated jPlayer

0.34.0 (2014-12-08)

 - FEATURE: sorting of queue and open playlists via dropdown menu
 - FEATURE: option to display active album art in player (thanks to @lzh9102)
 - FEATURE: enable intertial scroll on mobile (thanks to @tkafka)
 - FIXED: updated jPlayer to version 2.7.1 to fix playback on android
 - FIXED: workaround for CherryPy (>=3.3.0) bug when releasing session locks
 - FIXED: authentication for /serve resource (thanks to @susnux for spotting)
 - FIXED: album art search works with new amazon and bestbuy web sites
 - FIXED: udated tinytag to v0.7.2 to decode ID3 tags from latin1
 - FIXED: admin GUI can again create new users as admin
 - FIXED: restore "change password" functionality
 - FIXED: various problems when filecache entries no longer exist on disk
 - FIXED: some quirks in playlist age display were forcefully retired
 - FIXED: server handles bad basedir configuration gracefully
 - FIXED: updated jquery-ui to 1.11.1, does not ruin the js-compression anymore
 - FIXED: localhost_only bind address respects server.ipv6_enabled setting
 - IMPROVEMENT: transcoded tracks have a duration in player (thanks to @lzh9102)
 - IMPROVEMENT: "folder" items are now easier to click
 - IMPROVEMENT: request meta data for one track at a time to reduce server load
 - IMPROVEMENT: expand CI tests to include Python 3.4 and PyPy3
 - IMPROVEMENT: expand CI tests to more versions of CherryPy
 - IMPROVEMENT: easier pypi releases via auto-conversion of README.md -> .rst


0.33.0 (2014-09-15)

 - FEATURE: showing audio meta-data in file browser
 - FEATURE: showing the number of files and folders inside each folder
 - IMPROVEMENT: automatically hiding notifications after 5 seconds
 - IMPROVEMENT: updated jplayer to version 2.6
 - IMPROVEMENT: sorting playlists by age by default
 - FIXED: mp3 playback on newer versions of chrome
 - FIXED: search engine bug that degraded search quality immensely
 - FIXED: incorrect length reported for long flac files
 - FIXED: special characters in playlist names (thanks to marianosimone)
 - FIXED: in browser setup not properly saving all the settings
 - FIXED: config and data location in OSX
 - FIXED: playback failure leading to too much recursion


0.32.0 (2014-04-05)

- FEATURE: built-in meta tag display in playlists for all platforms
- FEATURE: playlist scrolls to follow added an newly playing tracks
- FIXED: current track is always displayed in player area
- FIXED: album art cache works reliably
- IMPROVEMENT: better search for names containing umlauts
- IMPROVEMENT: generally improved UI usability
- IMPROVEMENT: stability and performance of album art fetching
- IMPROVEMENT: faster playlist loading
- IMPROVEMENT: faster loading of client through gzip compression

0.31.2 (2014-02-16)

- IMPROVEMENT: bump version number above 0.31.0
- IMPROVEMENT: update changelog

0.31.1 (2014-02-15)

- FEATURE: display track metainfo in web client
- FIXED: recover gracefully when update notifications can't be fetched
- FIXED: display default image when no album art found

0.31.0 (2014-02-11)

 - FEATURE: export all playlists at once in a zip file (pls or m3u)
 - FEATURE: force lower audio bitrate via transcoding (nice for mobile users)
 - FEATURE: switch between list and cover view of folders
 - FEATURE: Album art fetcher supports google image search (thanks to Lord-Simon!)
 - FEATURE: ready for tag support in python 2 using mutagen (thanks to endlesscoil!)
 - FEATURE: internationalization support for back-end
 - FEATURE: German translation for back-end
 - FEATURE: locate tracks from playlist in the file browser
 - FEATURE: showing current track title in title of the browser tab
 - FIXED: fixed zip export of playlist having wrong CRC (thanks to johnhe00!)
 - FIXED: playlists were always saved as public upon first save
 - FIXED: not showing hidden files anymore in file listings
 - FIXED: repeat mode now repeats the whole playlist, instead of last track
 - FIXED: album art fetcher works again with images from amazon
 - IMPROVEMENT: improved mobile layout (nav bar padding and cover size)
 - IMPROVEMENT: showing default folder image, when fetching album art fails

0.30.0 (2013-12-15)

 - FEATURE: Change album art in media browser
 - FEATURE: Play WMA files via live transcoding (needs ffmpeg)
 - FEATURE: Update notifications for admins in web client
         config key `update_notifications = [True] | False`
 - FEATURE: `--version` switch for main script displays useful info
 - FIX: !!! SSL config: relative paths are now relative to location of config file
 - FIX: Resolve some unicode issues when playing tracks containing non-ASCII characters
 - FIX: autoplay when adding first track now works for all playlists
 - FIX: CherryMusic shuts down cleanly when parent process dies
 - FIX: `media.basedir` can now handle trailing path separator
 - FIX: Can change and delete playlists again
 - FIX: Can delete users again
 - FIX: Online indicator in admin dialog works again
 - IMPROVEMENT: online tracking of test coverage at https://coveralls.io/r/devsnd/cherrymusic
 - IMPROVEMENT: audioread failure no longer pretends to be a serious error

0.29.0 (2013-11-10)

 - FEATURE: confirm dialog when closing browser while music is playing
        can be disabled in the options dialog
 - FEATURE: tracks names with a leading number are now always ordered correctly
 - FEATURE: update notifications for server admins
 - FIXED: resources not found after distutils install on debian based distros
 - FIXED: tracks playing accidentally after sorting a playlist
 - FIXED: playlists not being closed properly
 - FIXED: playlists public/private state not changable
 - FIXED: remove-played-tracks button resulting in jumping over tracks
 - IMPROVEMENT: more code documentation

0.28.0 (2013-11-05)

 - FEATURE: playlists can be searched by title or contained tracks
 - FEATURE: playlists can be sorted by age, user or name
 - FIXED: playing track not bein highlighted in playlist
 - FIXED: in browser setup works with new bootstrap 3 layout
 - FIXED: message of the day is bein displayed again
 - FIXED: tray icon app crashing when displaying about dialog
 - IMPROVEMENT: logout button is disabled when using auto-login (less confusing)

0.27.2 (2013-11-03)

 - UPDATE: man pages reflect recent changes

0.27.1 (2013-11-03)

 - HOTFIX: fixed download button not working
 - FIX: shuffle and repeat buttons are visible now

0.27.0 (2013-11-02)

 - FEATURE: brand new UI using bootstrap 3:
        panels can be scrolled independently
        redesigned media browser (unified playlist manager)
        unified navigation & search bar
 - IMPROVEMENT: faster client load times (less-css-compilation & js minification)
 - FEATURE: downloading all tracks of a playlists as zip file
 - IMPROVEMENT: limiting maximum size of downloadable playlists
 - FEATURE: creation of playlists containing random tracks
 - FEATURE: IPv6 support
 - FEATURE: improved search for non-ascii characters
        requires optional dependency "unidecode"
 - FEATURE: new tray icon program "cherrymusic-tray" to start/stop CM comfortably
        requires optional dependency "gobject-python"
 - IMPROVEMENT: browser setup now shows details for missing dependencies
 - UPDATE: updated jPlayer to version 2.4.0
 - FIX: playback problems when using firefox on windows
 - FIX: fetching of local album art works now as it should
 - FIX: playback works now when CM is run with another rootpath but '/'
 - FIX: playback in chrome randomly stopped, works now
 + a lot of other stuff, as always!

0.26.0 (2013-07-15)

 - IMPROVEMENT: search quality, rare words are considered more important
 - FEATURE: M4A transcoding support
 - FEATURE: playlist saving menu
 - FIX: playlist backward compability
 - FIX: audioread path backward compability fix

0.25.1 (2013-05-14)

 - FIX: Error on first startup when not using the browser setup

0.25.0 (2013-05-11)

 - FIX: serving files with non-ASCII names (CherryPy monkey-patch)
 - FEATURE: database versioning support
 - FEATURE: busy indicator only occupies busy parts of the interface
 - IMPROVEMENT: warn user about database updates before perfoming them
 - FEATURE: CLI configuration override: --conf KEY=VALUE
 - FEATURE: --port switch for overriding server port on start-up
 - FEATURE: autoplay on adding first track to playlist (optional)
 - FIX: minor corrections for various messages and help files
 - FIX: correctly adding tracks to playlist after clearing it before
 - FIX: preventing python 3 module stagger to be imported in python 2
 - FIX: automatically indexing music on first start after setup
 - FIX: playlist deletion button only visible for admins and owners
 - FIX: track transcoding is determined on the fly (playlist portablity)
 - IMPROVEMENT: switched to nosetest for automatic testing
 - CHANGE: removed open search plugin
 + a bunch of internal changes, clean-up & stability

0.24.1 (2013-03-01)

 - FIX: logout works also with previous request containing post-data

0.24.0 (2013-02-28)

 - FEATURE: reworked UI using bootstrap (pretty & shiny!)
 - FEATURE: new --setup switch enables first configuration in browser
 - FEATURE: album art resizing (requires opt-depend ImageMagick)
 - FEATURE: man pages!
 - FEATURE: backward compatibility down to python 2.6
        supporting now python 2.6, 2.7, 3.0+ and pypy
 - FEATURE: users can change their password in the option menu
 - IMPROVEMENT: search speed *and* quality greatly improved
 - IMPROVEMENT: rewrite of transcoding module (works more reliably now)
 - IMPROVEMENT: using HTML5 & Flash at the same time to reduce need to transcode
 - IMPROVEMENT: playlist visibility can be changed in playlist browser
 - IMPROVEMENT: users can change their passwords in the option menu
 - IMPROVEMENT: flash block detection for opera
 - IMPROVEMENT: better IPv6 support
 - CHANGE: honoring XDG Base Directory Specification,
        move the files like this to migrate:
        $ mv ~/.cherrymusic/config $XDG_CONFIG_HOME/cherrymusic/cherrymusic.conf
        $ mv ~/.cherrymusic/* $XDG_DATA_HOME/cherrymusic
 - CHANGE: M3U & PLS download buttons hidden by default, can be reactivated in options
 - CHANGE: removed unidecode from package, is now opt-depend
 - FIX: Album art fetching doesn't stall interface anymore
 - FIX: user online time display is now correct independent of the client time
 - FIX: Loading or creating a playlist no longer interrupts playback
 - FIX: Workaround for older cherrypy version on python 3.3
 - FIX: users can no longer modify other user's public playlists
 - FIX: invalidating session of deleted users
 - FIX: local autologin works again
 + a lot more (like every time)!

0.23.0 (2013-01-23)

 - FEATURE: New 2 Column Layout (Search and Playlists side by side)
 - FEATURE: Manage multiple playlists in tabs
 - FEATURE: OpenSearch for adding cherrymusic to browser search bar
 - FEATURE: user changeable colors for the interface
 - FEATURE: responsive design for mobiles (switch between playlist and search view)
 - FEATURE: display remaining time for playlists
 - FEATURE: added --dropfiledb switch for reinitialization of file db
 - FEATURE: local cover art is loaded automatically
 - FEATURE: remotely fetched cover art is now cached in ~/.cherrymusic/albumart
 - FEATURE: customizable keyboard shortcuts
 - FEATURE: advanced search syntax: prefixes "!f" and "!d" only files or directories respectively
 - CHANGE: --update only performs an update anb does not start the server anymore
 - CHANGE: renaming of config options:
        dyndns_address -> dynamic_dns_address
        enable_ssl -> ssl_enabled
 - FIXED: execution from another work dir lead to not finding local resources
 - FIXED: fixed jerky control buttons in webkit browsers
 - FIXED: API accessible when not authenticated
 - FIXED: SSL not working due to wrong IP parsing
 - FIXED: symlinks being resolved not correctly
 - FIXED: flashblock taken into account, users can activate player on demand
 - FIXED: playlist duration longer than one hour not properly displayed
 - FIXED: admin tab not visible anymore for non-admin users
 - FIXED: being able to create new admin users from the GUI
 - FIXED current track not being highlighted after changing anything in playlist
 - UPDATE: updated jQuery to version 1.8.3
 - DEPRECATED: Themes aren't used anymore
 + many more internal changes (dynamic db layout, decreased verbosity, etc.)

0.22.0 (2012-11-29)

 - FEATURE: drag'n'drop sortable playlist
 - FEATURE: partial updates. cherrymusic --update /path/to/changed/directory
 - FEATURE: python 3.1 downward compatibility for debian users 
 - FEATURE: cherrymusic tries to automatically fetch album covers
 - FEATURE: new layout for mobile devices
 - FEATURE: --update switch now runs in background, immediate server start
 - FEATURE: compactly listed folder paths are now autocompleted if listed
            directory names overlap for more than one letter
 - FEATURE: Added dependency installer, so that cherrymusic can be run on
            any system without any preinstalled dependencies
 - FEATURE: see online users in the admin panel
 - FEATURE: delete users
 - IMPROVEMENT: shuffle uses algorithm to play possibly unplayed tracks first
 - IMPROVEMENT: Configuration interface overhaul. new or deprecated
                options are now listed on startup
 - IMPROVEMENT: search speed
 - FIXED: removed configdb, proved to be unnecessary
 - FIXED: jPlayer doesn't play mp3s when no codecs installed on server
 - EXPERIMENTAL: cherrymusic can be started as a daemon using cherrymusicd
 - UPDATE: jPlayer updated to version 2.2.0

0.21.1 (2012-10-26)

 - IMPROVEMENT: updates run smoother, better progress report (server startup doesn't trigger update anymore)
 - IMPROVEMENT: playlists remembered in session retain track order
 - FEATURE: updates are triggered using the --update switch
 - FEATURE: --newconfig switch creates a new config file (config.new) in the home dir
 - FEATURE: show playtime of tracks and of playlist (requires ffmpeg)
 - FEATURE: unfinished search terms also yield results
 - IMPROVEMENT: search result weight algorithm takes partial matches into account
 - FEATURE: auto-login on localhost
 - EXPERIMENTAL: live transcoding of flac, ogg, mp3
 - FIX: cherrypy not shutting down cleanly
 - FIX: being able to create duplicate playlist names
 - FEATURE: Made playlists deletable
 - FEATURE: Added "update database" button in admin panel
 - FEATURE: Added "remove played tracks" button
 - FIX: browser showing compact entries multiple times
 - FIX: bug that prevents listening to music when no codec is installed on host
 - FEATURE: exporting playlists as PLS or M3U (take this, edna!)
 - + MANY MORE...

0.2.0 (2012-09-18)

 - FEATURE: https encryption support
 - FEATURE: option to listen only on localhost
 - FIX: config and databases now reside in the user's home directory
 - FEATURE: savable playlists
 - FIX: added GPL license
 - FEATURE: salted user passwords
 - FEATURE: admin user can be created inside web-interface on first start
 - FEATURE: playlists are periodically saved in the session, so they're
   not lost when browser or tabs are closed etc.
 - FEATURE: theming support
 - FEATURE: configurable server port 
 - FEATURE: admin panel for creating new users
 - FEATURE: welcome screen for CLI and web-interface

0.1.0 (2012-08-16)

 - Initial Release
