Changelog
- FIXED: python 3.10 compatibility
- 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)
- FIXED: reverted jPlayer update, because it broke everything
- 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)
- 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)
- FEATURE: ... new feature here!
- FIXED:
- IMPROVEMENT:
- 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)
- FIXED: more fixes for cherrypy detection (thanks Isgar)
- FIXED: crash on start when not able to detect cherrypy version
- 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
- FIXED: *Security* CVE-2015-8309 Download of arbitrary files by logged in users (thanksfeedersec)
- 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
- FIXED: server not starting on windows
- FIXED: server not starting for python versions below 3.3
- 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
- FIXED: Queue not visible due to outdated jPlayer
- 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
- 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
- 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
- IMPROVEMENT: bump version number above 0.31.0
- IMPROVEMENT: update changelog
- 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
- 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
- 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
- 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
- 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)
- UPDATE: man pages reflect recent changes
- HOTFIX: fixed download button not working
- FIX: shuffle and repeat buttons are visible now
- 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!
- 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
- FIX: Error on first startup when not using the browser setup
- 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
- FIX: logout works also with previous request containing post-data
- 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)!
- 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.)
- 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
- 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...
- 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
CherryMusic © 2012 - 2015