FireflyClient - a Java Firefly Client client to Firefly Media Server

#--------------------------------------------------------------
# Firefly Client CHANGELOG
#--------------------------------------------------------------
------------------------
Version 0.9 b
------------------------
- Enhanced applet configuration
- read more in fireflyclient.html file when fireflyclient-applet(.zip or .tar.gz) has been uncompressed
- Added the possibility to set a separator for genre and artist tag
- Ex: if genre tag contains "Classical; [C]Classical; Orchestral;Symphony" and that
';' character has been set as genre separator in preferences dialog, 4 genres
are extracted for this song (the song matching the four of them:
- Classical
- [C]Classical
- Orchestral
- Symphony
Same functionnality for artist tag.
When changing separators, application must be restarted.
- Enhanced keylistener on genre, artist and album lists
- When genre, artist or album list has the focus, you can type the first letters to go to the first matching item.
- Weakly crypted passwords (library and lastfm) in configuration file (needs library saving)
------------------------
Version 0.8 b
------------------------
- Added library autoloading option (activated by default if only one library exists or in applet mode)
- can be changed in the preferences dialog
- Added a splash screen on startup (Might be usefull in autoload mode when app takes time to contact the server)
- Added an optional "Genre" panel (activated by default, might need to reload the remote library)
- Search by criteria feature (all, genre, artist, album or title)
- Added shortcuts to control the player (play/pause, next and previous)
- Added an applet version of the application (allows server-side installation)
- fireflyclient-applet(.zip or .tar.gz) must be uncompressed in admin-root directory or server
- the URL to load the applet is then : http://server:port/applet/fireflyclient.html
- applet should work well with Firefox and IE if Java runtime plugin is installed
- This works because those two browser manage 'jnlp_href' param in <applet> tag
- For those that don't (Safari, Chrome), workaround can be found but jar file (FireflyClient.jar) must be served by
another web-server than the built-in Firefly Media Server web-server.
Indeed, as built-in FMS web server doesn't send HTTP header 'Content-Length',
classic java plugin behaviour (as opposed to JNLP behaviour) is unable to
cache the resource (jar file) which can be pretty inconvenient.
- Added IT translation file (thanks to Christian)
- Added a right-click menu on editable playlist songs to remove songs from it
- [FIXED BUG] Window title unicode support
- [FIXED BUG] Now manage EOFException when seeking too close to the end of track
- minor bug fixes
------------------------
Version 0.7 b
------------------------
- Added multiple column sorting functionnality (CTRL+click to sort on more than one column)
- sorting criteria are persisted through application restart
- Make amazon cover search ignore accent (search with accents give no result)
- Authorized multiple artist/album selection
- Added NL translation file (thanks to William)
- Added DE translation file (thanks to Thorsten)
- Added the possibility to filter on media type to hide unsupported filetypes
- comma-separated list of extension to ignore in Preferences dialog (persisted through app restart)
- library has to be fully reloaded from server (don't forget to save it after) for this to work
- Added optional last.fm scrobbling support (default: deactivated)
- Check checkbox in preferences and enter last.fm username/password.
- Supports following functions :
- NOWPLAYING : each time a song changes (not persisted in last.fm profile)
- SUBMISSION : Songs are submitted regarding last fm criteria (more than 30 seconds long,
have been played over half of the song's length or more than 240 seconds)
- [FIXED BUG] Correct time display for tracks over 1 hour
- [FIXED BUG] Correct first track selection in shuffle mode (it was always the first one before)
- minor bug fixes
------------------------
Version 0.6 b
------------------------
- Added editable static playlists management (readwrite) for firefly media server over svn-1488 (previous version make server crash)
- create/rename/delete static playlists (confirmation before deleting)
- rename smart playlists
- add songs to playlist by drag and drop from song list (if playlist has been previously loaded)
- delete songs from playlist list (DEL button once a song is selected)
- Added a preference option to sort static playlists (default: yes)
- Display server version in window title when not playling song
- Added optional usage of amazon webservice cover support for missing covers
- option in preference (default: no)
- Rework of info panel around track slider
- added volume slider
- icons for status
- song info, redesigned track slider (now seek to the click position)
- Tries to skip invalid frames when reading mp3
- Switched back HTTP compresion default to false
- [FIXED BUG] Correct time display for all time zone
- [FIXED BUG] Correct the artist display in frame title when unknown
- [FIXED BUG] When you paused a song, and unpause, it played the selected song and didn't continue the previous song: now fixed.
- [FIXED BUG] Playlists were being loaded correctly, however browsing them was broken.
- It always selected ALL songs from a given artist or album, and not only those in the playlist: now fixed.
- [FIXED BUG] When encountering playlist names with special character, could crash: now fixed.
- [FIXED BUG]: Seeking was not available anymore after having changed look 'n feel: now fixed
------------------------
Version 0.5 b
------------------------
- Playlists management (readonly)
- Playlists names are loaded remotely whenever loading a library (local/remote/update)
- Playlists songs are lazily loaded when clicking on the playlist item
- Smart playlists are displayed first, then static ones (all sorted alphabetically)
- Playlists items are not cached locally when quitting the application (always remotely loaded)
- Smart library update, just request new songs present on the server
- removed songs are not detected while the update which may lead to invalid songs in the current playlist
-> So, when the player tries to open an invalid song (HTTP status 404), it is automatically removed from the list
- Modifiy search box to search on the current playlist
- Made left panel resizable (size persisted)
- Change window title to display song played
- Now closes current open library if any before opening new one (without confirmation)
- Exit confirmation popup opens only if changes are detected (new songs, removed songs, password changed)
- Added the firefly client store directory in about dialog (beside/below the client version)
- Bug fix about sorting with unknown artists (when loading remote songlist)
- Minor improvement on dialogs sizing/navigation
- Improved cover management (for all size/ratio)
- Minor bugs fixes
------------------------
Version 0.4 b
------------------------
- Rearranged left panel for next release playlist management
- Moved song info below cover
- Moved random button to status bar
- Added a 'reflect' effect for covers
- Added a default cover when none available
- Added support for native look and feel ('Normal') - needs to be restarted after having applied it.
- Add a 'Save and quit' + 'Save password and quit' buttons when asking close confirmation
- Corrected bug for cover smaller than 200x200 (led to infinite loop)
- Restored java 1.4 compatibility (still no support for notification popup though)
- Enhanced error popup to provide error details (stacktrace)
- Enhanced management of Unknown artist/album (best detection, displayed at the end of the songlist)
- Filter remote songlist to skip control character (avoid some parsing error -> invalid characters in ID3 comment tag)
- Corrected song sorting
- Backend rework (load/save functionnalities)
- Minor bug fixes
------------------------
Version 0.3 b
------------------------
- Ogg vorbis playback support (no seeking, no cover, just playback) (thanks to Javazoom OGG Vorbis SPI)
- Flac playback support (no seeking, no cover, just playback) (thanks to JFlac)
- Manage 'Unknown Artist' and 'Unknown Album'
- Fix the seeking to 0 problem for MP3 files
- Made HTTP compression option default value to 'true'
- Better cover display (scaling quality, manage multi covers and display first one) for MP3
- Made 'open saved library' easier:
- made a submenu with the list of libraries instead of a dialog
- now tries to connect with the configured password (if any) and displays authentication dialog only if authentication fails
- Made 'delete library' easier:
- made a submenu instead of a dialog (+ separator and delete all)
- Updated 'About box'
- added a 'Contact' tab
- updated the 'Resources' tab
------------------------
Version 0.2 b
------------------------
- Use of RSP Roku Server Protocol) instead of DAAP XML.
- Optional use HTTP compression (gzip) functionnality of RSP protocol (can be configured in the Preferences - default: deactivated)
- HTTP compression can slow down traffic when server is not powerful enough (ex: NSLU2)
- New functionnality : clear all saved libraries
- Added licence to 'About' box
------------------------
Version 0.1 b
------------------------
- Can connect to a Firefly Media Server wherever on the network/internet given the host name and the port
- Optional proxy configuration
- Use of DAAP XML request
- Authentication management for password protected libraries
- MP3 + WAV playback support (thanks to Javazoom MP3 SPI, Tritonus and JLayer)
- Cover display through ID3v2 MP3 tags if any (thanks to JAudioTagger)
- Shuffle mode
- Seeking is supported for MP3
- Loads the whole bunch of songs at startup and display them
- artist panel + album panel + songs pannel
- Compilation grouping
- Songs are sorted by: artist > album > disk number > track number > song title
- Search feature (search in artist+album+title)
- Sublists are displayed by selecting either artist, albums, or to display a search result
- Possibility to save the library locally to load it later (much faster)
- Warning when remote songlist does not have the same number of songs as locally cached one
- Different languages managed: english and french
- Skin support (thanks to SkinLF)
- Application settings are automatically saved locally (language, proxy, skin, window position)
- As songlists, app parameters are saved in ${user.home}/.firefly-client
- When application does not have the focus and a song changes, a notification popup fires with new song info (optional)