## Version 5.4.0 - 2004-11-9

- Radio Plugins:
  - New plugin: Slim Devices Picks.
  - New plugin: Live365 Internet Radio is now part of the default installation (thanks to Jim Kneply).
  - radioio plugin: fixed branding and wrong port for Acoustic station.
  - Added an "Internet Radio" link in the "Help" section of the SlimServer home page. Besides information on radio options, it presents a simple web UI to play a radio stream if you know its URL, without having to create a playlist file.
- RSS Reader Plugin: Dave Cohen contributed an RSS Reader plugin that is now part of the release. It can be used to browse a configurable set of RSS feeds. It can also be set as a screensaver to present a ticker of articles. The list of feeds can be changed by browsing to Slim Server > Plugins through the SlimServer web interface.
- Menu system changes:
  - Simplified home menu structure. The top-level items are Now Playing, Browse Music, Search Music, Playlists, Internet Radio, Settings and Plugins.
  - Plugins are now placed in different menu categories - Games, Screensavers, Internet Radio, etc. The Internet Radio plugin category is now at the top-level.
  - Remove Browse Songs from Browse Music submenu (it's too slow to be useful.)
  - When in Browse Music, use a dynamically generated menu.
  - kdf reimplemented much of the home menu system to be more flexible using INPUT.List.
  - Added a way to run an upgrade script on a per-client basis. Added a script that replaces Shoutcast in the home menu with Internet Radio.
- Remote Streaming and Formats:
  - Based on a submission from Craig Eales, added the ability to do format conversion/transcoding of a remote stream. This enables Ogg radio streaming!
  - Support for the mms: protocol (on Windows only for now) using wmadec's ability to deal with URLs.With ASX support already added, we should be able to play WMA radio streams...on Windows only for now, unfortunately.
  - Added support for parsing WPL (submitted by Danny Rego) and ASX playlists. Also made playlist handling a little bit more contained so that adding support for a new type requires adding code to just Parse.pm.
  - When streaming remote streams, start when the buffer is 75% full or after 5 seconds and at least 5% full. This allows rate limiting streams to start faster.
  - Support for mono streams in wmadec
  - Updated WMA code to handle sample_rate.
  - Fixed proxy support for remote streams.
  - bug552: DRM protected WMA files are now reported as such in songinfo and trackinfo playback of a DRM WMA will produce an error on the player display and server will skip to next song in the playlist.
  - Bugs #388, 447, 581 Add binaries for flac 1.1.1, and update convert.conf to enable --skip and --until Also add oggdec binaries.
  - Fixed problem where oggdec to lame transcoding was not correctly byte-swapping on some platforms (PowerPC specifically).
- SoftSqueeze 1.10 (thanks to Richard Titmuss)
  - Music search contributed by Brian Hein (alpha status).
  - Simpler configuration dialog.
  - An error is reported if Softsqueeze is not correctly installed.
  - Reset window positions if the window has been lost off the screen.
  - Display a warning if Softsqueeze needs upgrading to work with the slimserver.
  - Fixed configuration of non standard slimserver http port.
  - Fixed window dragging for OS X, use Option key to drag windows.
  - Fixed error reported by java web start on OS X.
  - Fixed music restarting when connection to server is lost.
- Firmware 40:
  - Fix a problem with 32 character long SSIDs.
  - When reconnecting, the player tells the server if it rebooted. The server will now only restart streams if the player has rebooted.
  - Updated squeezebox firmware to ignore unknown frame types, rather than getting confused. When squeezebox connects, slimserver sends the latest version number of the server.
- Add some nice text explaining to folks what they can do if the server doesn't find their player. (HTTP streaming, SoftSqueeze, fix their player)
- Improved scanning performance:
  - Optimized reading of ID3 tags in Perl.
  - Moved scanning of ID3 tags within files into the same step as getting metadata from iTunes. This makes the scan take a bit longer, but subsequent operations are much faster, since we don't have to read tags from the files on-the-fly. This only applies to the iTunes case.
- Nicolas Guillemain updated the french translations. German updates from Pascal Berger...
- Various bug fixes:
  - Fixed problem where proxys were blocking access to settings pages.
  - For Fishbone skin: fix bug 655: IE reports problems loading javascript
  - Fixed problem where we weren't detecting iTunes file changes in some cases.
  - Don't require a trailing slash when specifying skins.
  - fix bug 368, move image in songinfo of fishbone skin to bottom and now display unscaled.
  - Fix for bug 366. Directories that consist of just spaces do not cause the scan algorithm to fall into an infinite loop.
  - Fix for bug 640 - We could get into situations where going left from the home menu would crash the server.
  - fixed an infinite loop in INPUT.List for empty lists.
  - fix a bug where volume bar is rendered incorrectly when activated from another INPUT.Bar mode
  - fix a bug in fishbone skin that made all searches into search for artist
  - Added postulated fix for WMA files that have broken headers with block lengths that are shorter than possible.
  - Fixed a problem where the spinning cursor animation while blocked on long operations (like entering a LARGE directory) was broken.
  - fix bug626 - add persistence for search choice in Fishbone skin. fix cookies and page loading so that forms are reset properly on submit
  - Fix logic in how we trigger rescans... Rescanning should happen at the right time now.
  - Fix pulldown menus in Fishbone skin for Safari.
  - Move history load at startup to happen, so plugins that install protocol handlers do it sooner, before we start dealing with non-standard URLs.
  - Fixed a problem where sometimes iTunes and Moodlogic background checking might not start automatically. At startup, now always start checking the libraries. Remember the last import time across server restarts.
  - When adding a playlist to a current shuffled playlist, make sure we keep the curent song when playing or paused
  - Fix bug561 fix mute handling so that players no longer unpause to muted
  - Fix a problem where the slimproto port was not bound to the specified interface when starting with command line options.
  - Windows installer fixes: it doesn't need stuff from other platforms. When installing a nightly, make sure we update the slimserver.exe file, even if it doesn't have a new verison number.
  - bug 592 and 450: APEtags were being ignored in MPC files. excessive sanity checks caused the tags not to be read convert keys to all caps for better matching with slimserver fix TRACK tag mapping in Formats::Musepack to get the correct track number.
  - Bug 588: M3U and PLS files that SlimServer writes should use file paths, not file: URLs.
  - bug593: fix a bug where fishbone undock link only opened first player now opens a window for the current player, each player can have its own undocked window

## Version 5.3.1 - 2004-09-24

- Fixed problem that stalled the installer on Windows 98/ME.
- Fixed performance issue while browsing folders containing large numbers of subfolders.
- Fixed missing title string on built-in Help web page.
- Improved startup performance.
- Don't check for new version more than once a day. Previously we checked every time the server started.
- Fixed missing strings used when changing obscure iTunes setting.
- Fixed issue where title display for filenames with "." in the middle would get trimmed.
- Fixed an issue where WMA files would report the wrong bitrate to the user.
- New server titleFormats are added as options without requiring a restart in settings.
- Fixed an incompatibility in the new server with existing plugins, including the Lyrics plugin.
- Fixed an issue in settings where web streaming clients should be able to modify their title format settings.
- Bug 567: Fixed a problem where the contents of iTunes or MoodLogic playlists may not show correctly.
- Bug 207: Fix problem where the same album was always first when shuffling by album.
- Bug 563: When starting playback from web interface and player is powered off, force power on.
- Bug 582: Fix a crash when scrollRate is set to zero on a Squeezebox G. Zero now properly results in no scrolling
- Bug 580: Fix a bug where browsing through music folder to shortcuts would open root folder.
- SoftSqueeze v1.5: Fixes problem where the monitor refresh rate may be to high in full screen mode.
- Bug 588: M3U and PLS files that SlimServer writes should use file paths, not file: URLs.
- Squeezebox Firmware v39
  - Fixed a problem where it may be impossible to enter an explicit SSID for a wireless network.
  - Fixed a cosmetic bug displaying the wireless signal strength in the player setup screens.
  - Fixed a cosmetic problem with some animations.
  - Fixed a couple of cases where navigating wildly in setup could caused a reboot.
  - Fixed default settings to be wireless (if a card is installed) and DHCP.

## Version 5.3.0 - 2004-09-20

- Security
  - Added a referrer check for settings pages, to patch a theoretical security problem where a thirdparty web page could cause your browser to trigger changes to setup. This problem also extends to any changes via the web interface, but the setup is the most problematic.
  - Added registry keys for Windows XP that allow SlimServer ports and protocols access through the XP firewall.
- SoftSqueeze
  - Updated to version 1.4
  - Updated Softsqueeze to work with modified slimproto
  - Fixes sample rate bug that caused bad mp3 playback
  - Refactored UI code, and added a fullscreen mode with album art and playlist
  - Make SoftSqueeze launch page easier to launch softsqueeze.
  - Fixed broken background images in Softsqueeze.
- Web User Interface
  - Making the home menu settings per-player.
  - Modified patch from KDF to enable choosing fonts from the settings page. Also updates web setting for alarm. Reorganized player settings to be less intimidating.
  - Adding Jacob Potter's ExBrowse skin to the standard release. Included a patch that he needs to display some info in his skin.
  - Show percentage after the signal strength in the web interface.
  - Suppress skins that start with 'x' from the setup pages, like xml and xul, as they aren't fit for human consumption, browserwise. Rename the Default skin to Default for human consumption.
  - Show year support for Fishbone, Default and EN skins.
  - Fix blank playlist page when clients first connect
  - Fix naming on web interfaces. Not SLIMP3 Home or Squeezebox Home anymore, just Home.
  - Fix crash in getting player settings on HTTP clients.
  - Textsize settings fixed, selectable from the available fonts for each player.
  - Bug 314: Highlight the closest volume setting in the default skin.
  - Bug 446: Patch from KDF to fix sorting issue in cover art.
  - Bug 466: Support for ID3 BPM Tag (TBPM, TBP) includes support in EN, Fishbone, and Default skins.
  - Bug 490: Fix search field in handheld skin
- Internet Radio
  - Fix a problem with the path to radio stations imported from iTunes.
  - Jim Knepley pointed out a problem where internet radio stations that had redirects and only gave title information on the redirected response lost that title information.
- Player User Interface
  - Timing problem resolved with autodim and screensaver timing.
  - Tweak the note symbol to be prettier
  - add a space at the edge of the overlays.
  - FROM and BY weren't really being replaced in Title Format strings. Now they will be.
  - Fix problem when doing pushes from screens without overlays. (For example, the Search screen...
  - Don't use "turbo" brightness levels, which cause ghosting
  - When squeezeboxen reconnect, restart the current track if we were playing before.
  - KDF found a problem with centered large font text on non-graphics players. Fixed.
  - Fix scrolling timing
  - Fix static ip menu
  - Fix warning and cosmetic bug when brightness is set to zero when powered off
  - Make it possible to adjust pitch, treble and bass with a remote. Fix a bug that was causing some warnings if you adjust treble/bass
  - Fix Shooter and SlimTris to work with SqueezeboxG.
  - Fix missing moodlogic icon on bitmapped displays.
  - Found bug where sometimes on non-G players we'd see blank double-high lines where we should see the content.
  - If we're stopped and somebody sends a an unpause command, then let's start playing the current track.
  - Bug 135: Include YEAR when listing ALBUMS for ARTIST. There is a performance hit, so this is a server-formatting setting that is disabled by default
  - Bug 140: Playlist starts at top of list when pressing down to access next song caused by the "now playing (jump back)" screensaver. fix this by staying in "now playing" when jump back is the enabled screensaver.
  - Bug 477: Now playing screensaver scrolling restarts.
  - Bug 513: trim playlist count when viewing the end of the list and tracks are deleted. also partly fixes Bug 505 by preventing 17 of 16 display.
- Audio
  - Fixed volume curve for squeezebox when in fixed-digital mode. It's not exactly the same as when in variable volume mode, but it's much closer.
  - Fixed pitch control to preserve pitch settings across songs and adjust during a song.
  - Some users are decompressing mp3s to wav. lets check the bitrate limits again before we consider a conversion command valid.
  - M4B files are the same as M4A, so add that content type.
- File Formats
  - Escape $ ` and " in file names for playback. This caused some files with these characters in the file names to not play.
  - Fix a problem using itunes with linux when the music folder is mapped to a windows root. fold multiple // in path after itunes normalisation.
  - Bug 418: #EXTINFO ignored - Persist the $title variable so that the EXTINFO can be linked to the next line (playlist item) tested and works with stream playlist. This is linked with Bug 198 and $title may still overrride the ID3.
  - Bug 489: Accepted patch from David Lutz that fixes a problem with FLAC files longer than an hour.
  - Bug 492: Accept patch from Michael the Fallen Angel for handling flac cuesheets.
  - Bug 499: flac cue sheets content type gineg overwritten
- Localization and Internationalization
  - Paulo Mannheimer updated the PT translation.
  - Nicolas Guillemain submitted some French translations.
  - French translation updated by Paul Williamson.
- Automation
  - Fix crasher when d_cli is turned on and you disconnect immediatly after sending commands via CLI.
  - Fix a bad URL in the XML skin.
  - Status.m3u HTTP response was broken.
- Documentation
  - Fix missing quote in faq, also sync up with web site.
  - Kevin updated the FAQ with some SP2 specific hints about the new XP firewall.
  - Update docs for INPUT.time for stringHeader param
  - Update remote docs to include auxiliiary functions of ADD and PLAY, etc
  - Update docs to reflect use of Template Toolkit. Still need to review parameters available to each template.
  - Docs for INPUT.Bar added to help section
- Developer Issues
  - Tweak brightness levels. Add basic font documentation.
  - Update CPAN LWP package.
  - Accepted patch for simplifying the squeezebox.version file format.
  - Adding a default package base for template toolkit plugins - "Plugins::TT" Place any Template Toolkit plugins in the <slimserver>/Plugins/TT directory.
  Package Namespace is HTML::<skinname>::<PackageName>.
- Also allow Template Toolkit plugins in the Skin Directories.
- Cleaned up internal handling of volume, treble, bass and pitch. They are now client methods rather than a mix of client methods, client prefs and module functions.
- Add comment stating that filltemplate() is obsolete.
- Add stringHeader param option for INPUT.Text
- Remove a bogus assert() from Select.pm
- Moved client default settings to the client objects for initialization, as some of them are client type specific, especially the font stuff.
- Created the notion of protocol handlers in Source.pm. These are classes that can be registered to handle specific URL schemes for remote streams. Changed most of the isHTTPURL checks to isRemoteURL. In the long run, the different codepaths for local vs. remote shouldn't exist. There should be handler for file: URLs and more should be pushed into the handler. Moved http: and icy: protocols, including shoutcast metadata handling into a separate registered handler class. Wrote a RadioIO plugin that adds a handler.
- Added --diag option which gives verbose diagnostic information (use diagnostics;) use sparingly, as it DRAMATICALLY slows down regular expression parsing.

- Player Firmware
  - Updated to version 38
  - Fixed a number of potential crashes during setup
  - fix lost contact with server message
  - re-enable ethernet link/activity signals
  - Fix crashes when changing tracks repeatedly.
  - Fix stuck pixels in display
  - accellerate internal graphics copying to make the visualizer run well at high frame rates
  - added client-side support for visualizer a/v synchronization. Some work left to do in the vis application still.
  - fixed possible data corruption in audio and graphics data
  - Fixed problems with missed or duplicate button presses
  - Notify the server more quickly when buffer is full. Synced players should start up faster.
  - Vastly improves UI snappiness. Simplified player protocol to reduce chattiness. Removed many redundant status messages.
  - Add default firmware version support to server. This should allow folks easy downgrading after this.
  - need to keep slimproto frames even length so they're aligned in memory on the client
  - Bug 495: Move to small text size when forcing upgrade.
- Performance
  - Safety check to prevent a crash when a player unexpectedly disconnects.
- Misc.
  - Fix a warning when scanning playlists pointing to streamin stations.
  - Fix a warning when streaming MP3.
  - Fixed a warning when stopping the windows service.
  - Don't crash if you try to access a player settings page for a nonexistant player.
  - Fixed a bug where date strings might cause latin1 characters to appear incorrectly in other places.
  - Bug 258: scan time summary each import hash stores the start time as the value d_info debug lines will include total time for all scans, plues individulal time for each import scan
  - Bug 417: Perl 5.6.0 uses a different syntax for ReuseAddr.
  - Bug 444: Accepted patch for default Cachedir in home directory for non-mac unix systems.
  - Bug 464: can't find itunes playlist with 'Find iTunes Library Automatically' registry check for "my music" was returning "" in one case, cannot replicate. try to check both "my music" and "personal" to try to lessen the effect of this problem
  - Bug 467: clearing of "Artwork" format string not accepted via web interface now Accepts All input, even blank.
  - Bug 468: variable artwork setting interfered with flac cue sheets
  - Bug 474: Multiple problems with INPUT.Text fixes display of right arrow in graphics module. makes use of variable display widths to control scrolling
  - Bug 476: slimserver 5.3.0b1 text size control inverted textSize got inverted for character module.
  - Bug 489: fix typo from patching
  - Bug 508: blank lines when popping back from an INPUT.List mode settings, snow and search push straight into INPUT.List, and need to pop through when exiting the input mode. PopModeRight shoudl be done in the exit handler, so only popMode is needed in setMode.
  - Bug 514: problems entering search text Search now uses INPUT.Text mode for common entry style
  - Bug 514: Text input issues set lastLetterTime = 0 on pressing right, so that character toggle is reset to the start for each new char.
  - Bug 514: reset button timer to reset character cycle on backspace
  - Bug 530: prevent a crash when there is an unexpected exit from INPUT.Text while the nextChar timer is still active
  - Bug 539: kill existing animations when a new song is opened.
  - Bug 540: rework animation in places where the new line parsing is needed.

- ## Version 5.3.0b1 - 2004-08-03

  - Added support for Squeezebox with a 280x16 graphical display:
    - Proportional fonts
    - Graphics additions to the client protocol
    - Support for animation
  - Assorted enhancements and bug fixes:
    - Support for embedded cuesheets in Flac from Michael Turner.
    - Added XML parser (SAX::PurePerl) because it's useful for lots fo plugins.
    - Significant improvements to Input modes for plugin developers.
    - Improvements to the Handheld skin from Michael Herger.
    - bug440 - fix an error in Fishbone skin that would prevent rendering in OSX with IE 5.2
    - Moodlogic: fix a bad cut/paste that would generate a playlist of 0 items, fix a crash when entering instant misx for a song fix a crash when entering mood wheel, bug 451: add moodlogic artistMixCache and genreMixCache to the storable dB.
    - Fix for bug 308, where web interface pages weren't showing up after a skin change.
    - Fix Bug 428: creating a scrollrate setting specific to Double Size text.
    - Bug 453: If you fail to upgrade in a timely manner, the web interface will nag you badly.
    - Various fixes to the Fishbone skin from kdf.
    - Plugins: added a scheduled rescan feature to the Rescan plugin using INPUT.Time
    - CLI: Bug256 adding sync commands via CLI.
    - Firmware: fix bug 398: unblock client so that the update required message will not be there when the client reboots.
    - Bug 457: Link at top of help pages was broken.
    - Bug458 Plugins in home menu are now removed temporarily if they are disabled of fail on startup. Allow browsemenu to be added to the home menu.
    - Bug 463: Crash if there's a QuickTime movie or AAC file with zero duration in your library.
    - Bug 461: discrete scrollPause setting for double height text improve scrollPause for single height as well.
    - Fix genre tag extraction from AAC files.
    - Skip 0 length PADDING block - from David Brittain.
  - Squeezebox Firmware Version 31
    - Support for graphics display.
    - Disable runtime debug, assertions, turbo 2-wire disable TCP reassembly (found a case where I could consistently cause dropouts streaming AIFF from osx - goes away when reassembly is off).
    - Increase the window in which we will accept garbage ir codes as a repeat of the previous code, from 125 to 150 ms.
    - Fixes spurious extra button press.

  ## Version 5.2.1 - 2004-07-03

  - SlimServer Bug Fixes
    - Fix Bug 424: Songinfo download link crashes server when no client found.
    - Fix Bug 423 where a bad function call would crash the server after selecting a mood.
    - Fix a problem where a truncated MP3 file could cause the server to lock up and each a lot of CPU power.
  - Documentation
    - Updated FAQ in online documentation.
  - Squeezebox Firmware Version 29
    - Fixed a problem where Squeezebox would not unpause properly if paused for a long time on some systems.
    - Fixed a problem on some players where Squeezebox would reboot if there was some spurious infrared activity.

  ## Version 5.2.0 - 2004-06-25

  - Streaming to MP3 Players
    - Added bitrate limiting - the ability to set a maximum bitrate to be streamed to a device. Based on the bitrate, we may transcode to a low(er) bitrate MP3 than the original source, if LAME is installed.
    - Preference page in Server Settings to control and view maximum bitrate and conversion settings for music formats.
    - Wired Squeezebox have no bandwidth limit, wireless ones default to 320kb.
    - Did some work on fixing the problem of some receivers not syncing up properly at the beginning of tracks. The silence mp3 data that I had created had the wrong sample rate. Now when we scan through a file or try to jump to the middle, try to line up on MP3 frame boundries. This should keep the S/PDIF receivers from dropping out.
  - Files and formats
    - Improved performance with scanning the music folder.
    - Richard Purdie added a TTL (Time to Live) field. This is used to see when the file was last checked for changes.
    - Add data sources (Moodlogic, iTunes, MusicFolder) can be used at the same time.
    - Fix several song count errors. All these changes should leave the song counters much more robust.
    - Fixed a problem where tags scanned from AAC files ripped with iTunes didn't convert UTF8 encoded tag information into Latin1.
    - Fixed bug where wmadec output needed to be byte swapped by lame.
    - Fixed problem decoding Apple Lossless encoded files.
  - Firmware: A fairly big firmware upgrade (now v.27) that should make network performance (especially uncompressed streaming over wireless) a lot better.
    - TCP changes: - enable keep alive transmissions every 60 seconds when idle. This keeps the data stream open while playback is paused (zero rx window).
    - Tweaking memory timing fixed the problem where some players would not take a firmware update if the wireless card was installed. May fix other bugs that seem to be player-specific, eg audio glitches, TCP timeouts.
    - Fixed crash when attempting to locate the server again if it disappears.
    - Changed "re-discovery" mechanism so it continues trying to contact the "last known" IP on port 3483 while also attempting discovery in case the server has moved.
    - Changed timeout on control connection to 20s instead of 10s to prevent needless re-connections if the server blocks for a little while.
    - Fixed possible channel swap in PCM mode.
    - Fix incorrect buffer emptiness calculation that was causing it to play an extra little clip when the buffer plays our or underruns.
    - Fix sporadic swapping of channels when unpausing in PCM mode. Caused by incorrect syncrhonization of the data stream with respect to the output frame clock.
    - Fix click when going between PCM tracks, caused by sometimes sending all-ones instead of all zeroes.
  - Installation
    - On Windows, slimsvc.exe and slim.exe have been replaced with a asingle executable, slim.exe which can run as a windows service or "interactively".
    - Several updates and improvements to Windows installation should make it a lot smoother when you're upgrading.
    - Fix for windows installer that correctly uninstalls the old service even if we're installing into a new location.
  - Plugins
    - Several fixes to the SHOUTcast plugin, including some crashing bugs and improvements: you can now customize the Genres you see, it works correctly with mutiple clients.
    - Plugins can now expose their own web interface. Don't be surprised if you see new home page links when you install plugins.
  - Web Interface
    - Peter Speck's alphabet patch: Miscellaneous special character improvements.
    - Kevin Pearsall noticed that web browsers were caching pages too agressively even after we change skins. Now when we first load an item into the html cache, we return a modification time of time() to force expiration of client caches after reload.
    - Decide on whether or not to show the Music Folder on the Squeezebox Home screen based on whether we have one defined.
    - Show Saved Playlists directory if the user has a playlist directory defined or they are using itunes or moodlogic.
    - Bug313 - Wireless signal strength is now shown at the bottom of the player settings page along with MAC, IP, firmware.
  - 3rd party software integration:
    - SoftSqueeze is now included in the release and better supported by SlimServer thanks to Richard Titmuss. You can launch it via Java Webstart with the URL: http://localhost:9000/EN/html/softsqueeze/webstart.html or view it as an applet with this URL: http://localhost:9000/EN/html/softsqueeze/applet.html.
    - Richard Titmuss fixed a problem where SoftSqueeze wasn't being sync'ed properly with real hardware players.
    - Moodlogic and and iTunes now have their own settings pages if they are installed.
    - KDF made extensive improvements to MoodLogic integration, including exporting user and auto playlists, more control over remixing, support for multiple file types in playlists, rescan interval setting.
    - Improved iTunes interaction: unchecked iTunes tracks are not ignored, better autolocation of the iTunes library,
    - Apple broke the importing of protected AAC files, so we disable that file type. :-(
    - Fix bug 299, allowing rescan button to work even for moodlogic, itunes.
    - Slimserver will no longer issue a message if audiodir is blank, so long as either moodlogic or itunes import are in use.
    - John Bent sent a patch for xPL: The patch prevents xPL instances from appearing on the network with spaces in them.
    - Change Zeroconf/Rendezvous names to be legal for HTTP and CLI interfaces, now: _slimhttp._tcp and _slimcli._tcp as well as the existing _http._tcp
  - Localized versions:
    - Michael Herger provided us with a German translation.
    - Nicolas Guillemain updated the french translation.
  - Skins:
    - KDF made several changes and fixes to the Fishbone skin, including updates for web-enabled plugins.
    - Michael Herger and others made several fixes to the Handheld skin.
    - There is a new experimental skin based on Macromedia Flash called Gordon. This is based on work from Ian Bigelow.
  - Lots o' bug fixes and improvements:
    - Fix bug 393: When pressing ADD after doing a search, there are some garbage characters displayed temporarily.
    - Fix bug 396: When powered off, pressing PLAY sometimes did not power on player.
    - Fix bug 394: Reset last-button-pressed state when using left arrow while editing text from the remote in search.
    - Fix bug 384: When entering text on the remote, pause only one second before moving right, don't insert right arrows randomly and reset the last button pressed value when auto advancing.
    - Don't crash when trying to download a music file from the web interface when there's no player connected.
    - Fix bug 328, play from the web interface now does an unpause when paused.
    - Fixed mov123 to correctly deal with error cases.
    - Fixed HTTP 1.0 keepalive.
    - Fixed some leaks in HTTP handling.
    - Fix bug 343: songs requiring transcoding fail if lame isn't installed.
    - Fix for bug 341. Got rid of ugly hack in SlimServer.exe for showing main window that was dependent on the number of frames in a skin.
    - Fixed a problem where we weren't calculating the end of the MP3 file correctly.
    - Fix a possible crash error in Source.pm if we tried to read a negative segment length.
    - Patch from Jason to fix CUE sheet parsing.
    - Patch from Peter Speck to fix problems of ignoring punctuation in names and sorting.
    - Patch from Guy Albertelli to fix problems with regular expression characters in separator characters.
    - Peter Speck submitted a patch to fix native aiff/wav playback if lame is not installed.
    - fixed a couple of problems with browsing playlists and directories with diacritical characters in the name.
    - Fixed a problem with page refreshes in Firefox.
    - Michael Herger fixed some issues in the Handheld skin.
    - Bug 316. songinfo.html was crashing, wont any more.
    - Richard Purdie made a change to handle all files as URL's - the code is a lot more consistent.
    - Move the Mac OS X log to ~/Library/Logs where people can find it.
    - Fix a problem where OSX below 10.3 wouldn't start from the pref pane because we were stripping out the wrong arch directories.
    - Added patch from Lars Kellogg-Stedman to resolve the problem of Slimserver being unable to find songs on a Linux host.
    - Fixed the problem where UNC paths to SMB shares weren't workign on windows. Lars Kellogg-Stedman discovered that we don't scroll doublesized lines correctly sometimes.

  ## Version 5.1.5 - 2004-4-21

  - Peter Heslin updated SHOUTcast browser to group together the same stations with multiple bitrates into a single item.
  - Fixed a pair of bugs where iTunes and Moodlogic might miss songs or show empty playlists.
  - Fixed some problems with the persistant Music Library database.
  - Fixed a problem where the alphabetical index in large lists might show punctuation characters where they should be ignored.

  ## Version 5.1.4 - 2004-4-19

  - The SHOUTcast browser is now improved, with alphabetical sorting and more details about individual radio stations.
  - Fixed a serious bug where song time progress was often incorrect.
  - Fixed a serious bug where the Web interface might reload constantly.
  - Vidur Apparao fixed a bug where settings for plugins might not display properly in the web interface.
  - KDF fixed a bug in cover art processing.
  - KDF fixed a bug where the current playlist might show incorrect artist/album information in the web interface.
  - Clarified some text in the TCP/IP settings
  - Richard Purdie reduced memory usage by combining some data structures in the song library database.
  - KDF added a setting to allow plugins to be loaded after the server started.

  ## Version 5.1.3 - 2004-4-16

  - Plugins
    - The SHOUTcast brower plugin, originally written by Peter Heslin is included in the standard release.
    - We added a few more modules from CPAN, including libwww, File::Temp and Compress:Zlib to our release, which should make it easier for folks to write plugins
    - Plugins can now be configured to reside at the Home menu level if desired. Default to doing so with the SHOUTcast pluging for new users.
  - Localization & Internationalization
    - Added contributed patch by Peter Speck for some Danish characters.
    - Peter Nou updated the Swedish translations. Thanks, Peter!
    - Frederic Miserey updated the french localized images, fixed a bug in the remote documentation.
    - More updates from Frederic Miserey on the default skin, including moving the power on/off button up a bit, placing the french remote help in the right folder and cleaning up the html in the Default skin.
    - Frederic Miserey fixed some problems with the French localization of the installer.
    - Another patch from Frederic for iTunes names' suffixes and prefixes.
    - Frederic Miserey did some internationalization work to fix how colons are displayed, added some more localized images, and fixed some problems with iTunes XML file's paths.
    - Adding contributed Dutch localization by Paul Roomberg
    - Frederic Miserey submitted some localized images for the default skin. Added a patch to try to open these first and if they aren't there, open the default one.
  - Player Interface
    - Accepted patch that reduce custom character flicker from Phil Barrett
    - Fixed a problem where the bitrate displayed for some songs was not rounded properly.
    - screensaver was not jumping to proper screensaver while playing. Only ongoing animation, power off, and blocking should stop screensaver.
    - screensaver was not jumping to proper screensaver while playing. Only ongoing animation, power off, and blocking should stop screensaver.
    - Fixed several problems with FFWD and REW trick modes. Seems better about jumping to random locations, but occasionally still won't go back to 1x when we're towards the end of a song.
    - Fixed a problem where players wer resyncing after restart even if master was powered off. Check the power state for masters as well, and only resync if they are on. For temporary unsync, save settings before issuing the stop command.
    - Can now add by artist name again.
    - Fix a problem with a deadlock that could cause buffer underruns or stalls with short songs to not get played if the server hits the end of the song while waiting to fill the buffer.
    - fix lists and sorting created by 'ALL_ALBUMS' and/or 'ALL_SONGS' while browsing using the remote.
  - iTunes Support
    - Added a server setting to allow folks to set the minimum wait time between iTunes library importing. The default is (and was) 60.
    - Peter Timofejew submitted a patch to not import songs marked as disabled in iTunes.
    - Peter Timofejew submitted a patch to fix a problem with automount paths in iTunes XML files.
  - File Formats
    - Contributed patch by Guy Albertelli to handle multiple artist and genre names in ID3 tags.
    - Accept John Harding's patch to WMA.pm to fix parsing of Track numbers (and probably more). Dan, please review.
    - Updated patch for AIFF files and AIFC files from Caleb Epstein. We now can extract metadata and play many more AIFF and AIFC files.
    - Rob Funk submitted a patch that ignores punctuation for the purposes of sorting.
    - Extract more ID3 tag information from QuickTime movies and AAC files, especially those ripped with iTunes.
    - Fixed a problem for files that have [ and ] chars in filename
    - Split multi-value ID3 tags by / as well as the ; and \0 we had before
    - Add multiple tag support for Composer and Band
    - Frederic Miserey noticed that we weren't extracting the number of discs in a set from Movie/AAC metadata. Fixed.
    - Accepted Peter Speck's patch for fixing the bug in that failed to detect missing binaries used in transcoding. Also, Peter patched up some problems in the AIFF parser:
      - The sample rate is an 'extended', which is 10 bytes. Only first 6 bytes was read, so $encoding was always garbage.
      - Chunks are always an even number of bytes, even if the chunkSize entry is odd (it is null-byte padded). All my AIFF files have an even chunk size for all chunks except the last chunk, which is an ID3 entry lacking the null-padding. So it have not been a problem for me, just noticed it...
      - Removed the redundant tell($f) statements and made the chunk-seeking logic a simple while() loop, which makes the diff big.
      - I have renamed chunkoffset to dataoffset, as it is the offset of the sound data, and not the offset of the chunk.
    - Updated the convert.conf file so that when LAME is invoked to encode into MP3, we force to resample at a 44.1k sample rate. Some non-standard sample rates were causing LAME to fail.
    - Kevin Pearsall found that convert.conf file had some extraneous "1" options in the oggdec entries, which breaks under the latest oggdec.
    - Reformatted types.conf to remove tabs to make it easier for folks to edit.
    - Applied patch for FLAC cue files to play to the end.
    - We now check to see if the appropriate binaries are available and skip any configurations that require specific binaries. The syntax of the convert.conf file has been changed slightly, now binaries are expressed as [binaryname] instead of $binaryname$
    - Older config files that use the $binaryname$ format should still work, but won't get run-time checks for the presence of the binaries.
    - Squeezebox also "prefers" MP3 conversion when possible on wireless, uncompress when wired. Use the File Formats page in Additional Server Settings to override this behavior. All of this is to make life easier for new customers who are trying to get AAC and other non-MP3 formats working with the least amount of messing. Out of the box, the behavior is similar as it was, but if you install LAME, it will try to use it unless you disable that line in the configuration.
    - Jason Holtzapple submitted a patch that makes cue sheets for FLAC work. Requires the very latest FLAC to work.
    - Accepted patch from Henry Mason that uses MovieExport data procs in mov123. This supports more file types under QuickTime.
    - More sanity checking in the WAV package to handle some malformed WAV files.
    - Fixed a problem where we sometimes weren't switching between PCM and MP3 modes between different file types.
    - Track current directory and artwork during scan. Don't search if we already know the cover and thumb in that dir.
    - Robert Moser noted that we don't need to uppercase everything twice.
    - Victor Brilon submitted a patch for a more thorough list of artwork filenames
  - Web Interface
    - The built-in webserver is now HTTP 1.1 compliant, thanks to Dan Sully, so page reloads should be much quicker and overall performance improved
    - Stefan Christiansson updated the Touch skin to include settings and an about page.
    - Cover artwork images now search large-to-small for cover and small-to-large for thumb sizes.
    - We've updated our HTML skins system to use the excellent Template Toolkit. Visit http://www.template-toolkit.org for documentation on Template Toolkit.
    - Script for converting homebrew templates to Template Toolkit compatible ones.
    - There was a conflict between the parameter used to declare a page title and the parameter used to declare a song title. Changed the page title to "pagetitle" from just "title".
    - KDF suggested a patch that fixes errant arrows in the search pages.
    - Check to make sure Cache directory is writable or creatable. If not, just cache in RAM.
    - Override uri filter when creating new template objects rather than universally.
    - Fixed a problem where all_subfolders link was accidentally included when browsing playlists too
    - The ability to create variable artwork filenames is in there, but for full compatibility, there needs to be an option to store them all in a central location. This is now added. Windows and Linux, by default use $bin/Artwork, while OSX will use $ENV{'HOME'}/Music/Artwork
    - Make use of title tag on images in default skin, since we're working on it.
    - Eliminated mysterious extra <html>...</html> from status.html
    - Took out the dead playlist add/play links for Music Folder top level.
    - Added a whitespace in songinfo to keep give the location url a bit of room.
    - Status and Status Header don't need to show the mute button for non-players, since there is no volume control.
    - Clean up some overlapping elements in Player Settings
    - Group sync settings to help avoid overlapping again.
    - Bring Titleformats back for http players, stream title will show standardTitle so its nice to be able to configure it.
    - Fix a missing image in the upgrade page for the Default skin.
    - Clarify the upgrade explanation in case of failure.
    - Also, reordered the repeat buttons on the default skin to make more sense. (Another from Fred)
    - Dean suggested changes to the scrollrate and scrollpause descriptions.
    - changed the setup values to allow zero scrollpause, since it should be working now.
    - duration and durationseconds got mixed together at some point. This broke the progressbar in Touch and Fishbone. durationseconds is now the duration in seconds, while duration is the song duration in minutes and seconds.
    - Added settings page for enabling/disabling convert.conf entries. Useful if you want to force LAME transcoding if you have a slower network.
    - Another patch from Frederic for power status in the Default skin.
    - Fixed a problem where the song duration wasn't passed correctly to the XML skin.
    - use proper countdown number for sleep time in status
    - cleanup songinfo to fit comments in readable space
    - tidy up alignment of status_header code
    - add support for editing playlists in Fishbone, cleanup the code tabbing.
    - Felix Mueller submitted some improvements to his playlist editor. I modified it a bit to make it work for all saved M3U and PLS playlists.
    - Throw a 404 if requested setup page doesn't exist, as in setup.html?page=bogus
    - Throw a 404 if a requested skin does not exist.
    - Throw a 404 if no handler found in generateHTTPResponse.
    - Add content_type of text/html to error responses, and close socket after sending them.
    - constrain image sizes in main views. default to using 100x100 and 200x200 images.
    - songinfo artwork is now a link to the raw full size image.
    - A surprising number of the HTML files had DOS line endings, which messes with cvs diff sometimes. Reverted them to unix line endings.
    - {'sleeptime'} and {'sleep'} can be more useful as different values. use {'sleeptime'} for the sleep setting, and {'sleep'} for the time remaining
    - Disabled Animation setting because it just confuses folks, breaks stuff, and doesn't really improve things.
    - Make guessTags a server formatting setting, user able to add more or re-order
  - Streaming to MP3 Players
    - Trying to reduce latency in the HTTP streaming. Clearing the buffer if the song stops or changes.
  - Command Line & Debugging
    - d_itunes_verbose is a valid debug flag, so it should be accepted from the command line as well.
    - Safety check on buffersize to prevent crashes from clients that misbehave.
    - Fix an errant tab in the strings.txt file that was causing a warning.
    - Add --d_http_verbose debugging flag.
    - Fixed a harmless warning noticed by Kevin Pearsall.
    - Added cli command displaynow to return the contents of the display including any animated and size activity.
    - Fix alignment of usage message in slimserver.pl
    - Move iTunes artwork scan debug msgs to d_artwork
    - Fixed a warning I was seeing sometimes when using the web interface before a player was discovered.
    - Add d_artwork debugging option
  - Documentation
    - Updated FAQ from Kevin Pearsall.
    - Updated FAQ to distinguish Wired from Wireless hardware.
    - Updated FAQ with a bunch of new questions.
    - Fixed another problem in the example in the CLI documentation.
    - Minor tweaks to owner's guide.
    - Added cover art information from Pat Farrell to docs.
  - Macintosh
    - Move tag database to ~/Library/Caches/SlimServer under Mac OSX
  - Windows
    - Added a couple of additional Windows registry keys in the installer to help find the Music library.
    - Moodlogic: Thanks to Chris at Moodlogic, we now have a bit more information on what we can make available. Now added two settings to the moodlogic server settings:
      - instantMixMax - sets the maximum songs for a playlist.
      - varietyCombo - from 0-100 where Lower number means a wider selection of songs and a higher number means a closer match to the song picked.
    - Moodlogic: Some info that the server uses was not being provided by Moodlogic (ie Bitrate), so use readTags and let moodlogic alter info as it requires. readTags also handles artwork, so its no longer needed in Moodlogic.pm
    - Adding artwork scanning for Moodlogic
    - We now include flac.exe and oggdec.exe for windows in the release for yummy FLAC and Ogg playback.
  - Unix/Linux
    - Pat Farrell updated the unix Installation.txt file.
  - Squeezebox Firmware - Experimental
    - Updated default Squeezebox Firmware to v.10 - no changes from version 8, except that it can be updated to versions 20 and above.
    - Firmware v.21 is included for testing, but is not installed by default. To enable, edit the file Firmware/squeezebox.version and remove the # signs on the last two lines. The following changes are for version 21:
    - This firmware update uses a new mechanism for downloading the firmware and storing it in flash memory. Due to the extent of these changes, this is a one-way upgrade. - Current SlimServer version is required
    - TCP has been enhanced to respond better under packet loss conditions. This should dramatically reduce dropouts when streaming uncompressed audio over wireless. Also, interactive performance is improved. In particular, this should eliminate any small delays in screen updates during an animation sequence (eg push animation, slimtris).
    - There is a new mechanism for transferring firmware upgrade images, which uses slimproto instead of a separate data connection. This provides for a few things, 1) firmware updates may now be installed over NAT and through firewalls and 2) display updates and status messages can still be communicated during the update process, so we now show a nice progress bar during the download. 3) updates which are interrupted during download or during installation no longer require the failsafe update mode. Instead, the squeezebox will boot normally using the previous image.
    - "Raw" infrared codes are now transmitted to the server. This means that the server will now receive ANY 39KHz infrared signals that the squeezebox receives. This feature is not currently utilized by the server, but is available for potential applications such as keyboard interfaces (webtv keyboards, for example, should work), macros, and controlling the squeezebox in response to other events (eg receiver being turned on).
    - Other internal changes: updated OS and drivers, new flash and sram organization, increased ethernet and TCP rx buffers, reduced CPU usage
    - Fix buffer overrun condition when streaming from Windows XP machines using Intel ethernet cards that use TCP segmentation offloading
    - JVC infrared codes now work correctly
    - Fix problem where firmware updates over wireless could occasionally fail.
    - Fixed "Can't alloc netpages for dll" message during setup
    - Fix problem where WLAN scan results would disappear if the user backs up through the setup menu after selecting a wireless network.
    - New firmware will report buffer size and fullness rather than read and write pointer. Account for this in the server.
    - Don't complain about the server being gone except when pressing up/down/left/right/power buttons. Before, we would nag about the server on receiving any kind of NEC-compatible IR signal.
    - Adding support for raw IR pass-through so that somebody can make an ssh client using a webtv keyboard.
    - Upcoming firmware revisions will use a new update mechanism. We're going to jump to from rev 8 to 20 for the new SDK5-based firmware and that'll be how we tell the difference for the purpose of loading a firmware image.
    - Instead of the server connecting to the squeezebox and uploading the image, the new mechanism will use slimproto. This means, among other things, that the control channel stays connected, and we can display a nice status screen during the update. Some changes to slimproto:
    - Deprecated client->server opcode: BYE!. We might use this later for something else. In the mean time, it is still of course supported for older firmware revs.
  - Lots of bugs listed in the bug database were fixed:
    - Bug 197 - Add 'All Subfolders' link under browse music folder. To make it simple, its still a link, but it does nothing. It allows access to playlist commands to add/play/remove/insert the entire library.
    - Bug 212 - Missing Documentation. Adding title tags and filling out the alt tags will give the tooltips requested for the graphic buttons.
    - Bug 233 - I accidentally swapped scrollpause and scrollrate EN text
    - Bug 208 - titleformat description was out of date. Used updated string suggested by Kevin Pearsall
    - Bug 41 - add 'includeArtist' and 'includeAlbum' to browse_list so that search can show more detailed info for when simpler titleformats are used. This is a dupe of the status_list feature.
    - Bug 219 - Phil Barrett suggested a patch to make the # sign more attractive when in double size.
    - Bug 227 - Some dirs can look too much like a URL.
    - Bug 97 - player specific option for transcoding bitrate, validates mp3 bitrates only.
    - Bug 27 - make the transcoding to HTTP streams able to be specified in the URL: http://slimserver:9000/stream.mp3?bitrate=128
    - Bug 33 - smart bandwidth limitation, transcode only when necessary
    - Bug 45 - scroll rate player preference
    - Bug 189 - Sync lost between players when powering off one of them sync is now restored when players are powered on. permanent unsyc now from player settings only.
    - Bug 37 - sync POWER commands. There's a new player option to sync power settings. Players will power off and on as a group. changing this setting will affect all players in the group. Turning this off, will unsync all players that are currently powered off, though they will resync as they are powered back on.
    - Bug 185 - Set Last-Modified header, honor If-Modified-Since, etc.
    - Bug 221 - Fixed a problem where HTTP clients had some inappropriate player settings in the web interface.
    - Bug 46 - the location URL on the song info page should be a full URL This seemed to need to be case insensitive so that windows users who type in an audiodir in lower case, will still match with the songpath, which has uppercase drive letters
    - Bug 122 - allow the user to control the timeout when connecting to remote sites.
    - Bug 213 - repeating playlist when synched checksync wasn't paying attention to the playmode, so when players were ready, it would skip head. Now it checks for playmode-stop and will stop the playback. playmode-play will allow the playback to continue for the next song, or the repeat loopback.
  - Experimental
    - Added support for a "silent" setting that should allow slave players that don't actually have audio streamed to them. This has not been thoroughly tested.
    - Added a prototype pitch control. It only works on Squeezebox now and only with MP3 files, and only after a song is restarted. But it's a start.

  ## Version 5.1.1 - 2004-3-3

  - Added built-in support for WMA audio on Windows. (Note: DRM protected WMA files aren't supported...)
  - Fix a couple missing alarm strings and translations, with an additional DE string change suggested by Michael Herger.
  - Web setting for Alarm was parsing 12hr time format incorrectly. Now fixed.
  - Victor Brilon submitted a patch to not strip binaries going into the RPM.
  - Remove a number of annoying, but harmless warning messages.
  - Fixed bug in mov123 caused AAC audio on Windows to come out in little endian format, causing lots of noise.
  - There was a sanity check in AIFF file scanning to make sure that the top level chunk size header was smaller than the file size. Unfortunately, iTunes for Windows creates AIFF files that are insane.
  - Bumping copyright to 2004
  - Fixed a bug that would cause AAC files to appear twice when using iTunes and cover art scanning.
  - Fixed a problem where items in playlists would appear as MP3 even if they weren't.
  - Added a few FAQ entries from Kevin Pearsall
  - Fixed the layout on the song info page on the Default skin.
  - We're calling Cover Art just Artwork now.
  - Added Frederic Miserey's French localization for the Mac installer and prefpane.
  - Numerous bug fixes and improvements to the Fishbone skin by KDF.
  - SLIMP3 version 2.3 firmware with ethernet collision fix.
  - Added some sanity checks to handle some insane WMA files.
  - Modified a patch from KDF that speeds up iTunes scanning substantially.
  - Fixed a problem where we were calculating the elapsed time incorrectly when synced.
  - Added the iTunes naming convention to the tag guessing from path names list.
  - Updated the FAQ.
  - Michael the Fallen Angel found a bug in the NBMU skin and fixed it.
  - Fix a misleading warning in the screensaver.
  - Accepted a patch that makes iTunes XML importing work better under Linux.
  - Fix the format of the Expires header for images.
  - Fixed a number of problems with internet radio streams.
  - Fixed a problem with the alphabetical list of first letters on web pages that contain tracks that have sort tags associated with them.
  - Michael Herger updated the German translations.
  - Skins have access to the full query parameters, as well as the the magnitude of the currently playing rate.
  - It turns out that iTunes, when ripping AIFF files tosses ID3 tags in there. Now we know how to look for them.
  - Performance improvements to scanning cover art when using iTunes.
  - Stefan Christiansson created the Touch skin, appropriate for large touch-screen displays.
  - Add the sleep info to the skins, including the XML skin.
  - Make sure we reset the pause time when appropriate. Should fix one problem with bogus progress times on radio stations.
  - Make sure we block align offsets into URL fragments (used with CUE files) .
  - Michael, the fallen angel, patched the NBMU skin to do basic cover art.
  - Fixed some problems with MoodLogic that could cause the server to stop when turning on MoodLogic support.
  - Patch to fix the old Mac Remote app.
  - Add a couple of sanity checks to make sure we don't crash in some rare cases.
  - There were some situations where the SlimServer could make it hard to delete a music folder on Windows. Follow a few opendir() calls with corresponding closedir() calls.
  - Vidur Apparao needed an init and shutdown function for his upcoming plugin, so we'll add these. Vidur added another neat feature for plugins. You can create a packaged plugin with lots of dependent files by putting it in a folder in the plugins folder. It simply loads the file Plugin.pm in that folder.
  - Up the remote stream timeout. Should make some streams more reliable.
  - Use hard spaces in double height characters to fix centering problems.
  - Nicolas Guillemain updated the french translation.
  - Fix crash if Radio Station.pls doesn't exist.
  - There's no reason (that I can think of) to not accept commands on a stream.mp3 URL. For example: http://locahost:9000/stream.mp3?p0=play is very useful.
  - Patch from KDF to make sure we only worry about images that have coverart when doing the iTunes coverart scan.
  - Remove duplicate call to Command::execute for streaming connections.
  - Fix a problem transcoding AAC to MP3 on Windows machines. Props to Kevin Pearsall for regressing...
  - Fix a couple missing alarm strings, with an additional German string change suggested by Michael Herger.
  - Web setting for Alarm was parsing 12hr time format incorrectly. Now fixed.
  - Victor's patch to not strip binaries going into the RPM.

  ## Version 5.1 - 2004-02-05

  - Kevin Deane-Freeman added a great Browse By Artwork facility.
  - Fixed a number of bugs with Internet Radio
  - The types.conf and convert.conf files can now be customized by the user.
  - Tuned the audio output levels a bit to optimize headphone performance.
  - Caleb Epstein fixed a problem with cue file parsing.
  - Fixed a problem where we'd often say Disk 1 of 1. That's unnessary.
  - Distinguish in the debugging output between when a squeezebox disconnects and when an HTTP client disconnects.
  - Make sure that the currentsongindex is reset to zero appropriately to fix a warning.
  - After a forced upgrade in squeezebox, unblock the client to avoid a glitch.
  - Victor submitted a fix for the RPM to make it complain less during installs. Fixes an old bug.
  - You can choose to have the volume control affect both the analog and digital outputs, or keep the digital outputs fixed.
  - Richard Purdie contributed a patch that re-enables the caching of the Music Library information across restarts.
  - Squeezebox Owners Guide had some minor improvements.
  - Patch from Victor to fix warning with rpmnew in RedHat RPM.
  - Fixed a couple of cosmetic bugs associated with the Now Playing screen when STOPPING or hitting the end of a playlist.
  - Skip undefined track numbers when checking for duplicate ones.
  - Upgraded Inno Setup installer tools to latest version.
  - Various updates to the Plugins documentation.
  - Numerous performance improvements when dealing with long playlists.
  - Fix broken easter egg animation.
  - Use templates instead of hard coded HTML for error pages.
  - Sort players by name in the web interface.
  - Fix the problem with Squeezebox not working with security turned on. Generate a one-time pad everytime we tell the player to connect and use that as our password.
  - Preference Pane tester hadn't been updated to reference the new name for the server. Corrected this, and some header comments.
  - Synchronization is vastly improved.
  - Caleb Epstein contributed a patch to fix up shorten support.
  - Added support for the RIFF INFO tags in WAV files. The only software that I know that supports this is Turtle Beach's AudioStation software. Now we do too.
  - Andreas posted a CLI command to get the count of genres, artists, albums,etc
  - [bug #9] player UI display gets corrupted if its displaying the last plugin, and the web UI disables some plugins. for this case, set the curr_plugin to the last in teh list if the curr_plugin is found to be higher than the list size.
  - Fix swapped channels in PCM mode. oops.
  - Olaf Lenzmann submitted a neat patch to guess artist, album, title and track number information from paths, in the absense of tags.
  - Disabled processing M4P files, since we can't really support them. Yet.
  - Send 404 Not Found responses when appropriate.
  - Added Richard's great start at the slimproto documentation.
  - Fix a warning when sorting tracks that don't have track numbers.
  - Improved performance during animation.
  - FLAC support is greatly improved.
  - Added screensavers, including one that snows.
  - Fixed a problem where firmware updates didn't work on Win98SE.
  - I added a shell for parsing QuickTime movies. Alas, I don't know what I"m looking for. Docs coming from Apple, in theory.
  - John Bent added a setting for enabling xPL
  - Phil Barrett noticed that the solid block is a standard character in both modules and so we should use it. Requires remapping an unused character (0x1f) to that char.
  - KDF added a player web setting for the built in server alarm clock
  - Peter Speck found that we still shouldn't mix buffered and unbuffered IO. Use sysseek instead of seek and tell.
  - Caleb Epstein added an option to treat multi-disk sets as a single album.
  - KDF fixed problems and made significant improvements to the Fishbone skin.
  - Handle invalid/0 length Ogg files better.
  - Frederic Miserey submitted a patch to use the system locale to localize the time/date.
  - Added a default transcode to uncompressed (no LAME) for AAC files on Squeezebox.
  - The FAQ has been expanded.
  - Sort the players by name on the home page.
  - Give queued incoming SLIMP3 UDP packets an opportunity to be handled. They are top priority.
  - Tweak some overly verbose debug messages.
  - Tim Long pointed out some inconsistencies in the CLI documentation and API.
  - Buffer fullness in the place of progress indicator is now available as an option under Performance.
  - There were a number of curcumstances where songs would be cut out at the beginning or end. Not anymore.
  - Added the plugins directories to the path for finding modules. This way you can drop CPAN modules right into the plugins folder to use them.
  - Add finer granularity to the msg time printed.
  - Poll the SLIMP3 UDP socket when we check timers so that we don't timeout on packets that we've already received. This should improve the probelm with SLIMP3 streaming packet loss when handling web requests.
  - Added a fix to calculate time correctly when pausing streams or transcoding.
  - Olaf Lenzmann contributed a patch to handle UTF16 ID3 tags, mapping them to Latin1. Unmappale characters appear as ?
  - Fix click between PCM streams.
  - Fix dimming so if its set to automatic, that it dims even if playing.
  - French localization improved by Frederic Misery and Nicolas Guillemain.
  - Fixed a bug where we didn't think we stopped playing at the end of a playlist.
  - Default Plugins menu item to be turned on.
  - Fixed a problem where we might get misaligned on WAV and AIFF files.
  - Fixed a problem where MP2 files and streams wouldn't play properly.
  - Grab and display the bitrate header from shoutcast streams.
  - Fixed a problem where MoodLogic was broken due to missing meta information.
  - Cue files use base 75 for the finest resolution, not base 100.
  - Support for reading from named pipes/fifos.
  - Fixed a problem where we would get stuck when playing back files stored on a HTTP server.

  ## Version 5.0.1 - 2003-11-28

  - Fixed a couple of problems with the Windows installer where it wasn't possible to set the service to start automatically.
  - Fixed a couple of problems where some streaming radio stations wouldn't work.
  - Fixed a problem where the SlimServer web interface would be really really slow.
  - Added a "Go" button to the Handheld skin search page.
  - Suppress a warning on tracks that have a disk number but not a size of set tag.
  - Fix a bug where the current time isn't displayed properly for transcoded files.
  - KDF updated the Fishbone skin.
  - KDF fixed an undefined warning with Squeezebox when starting up.
  - Fixed a bug where we wouldn't go on to the next song sometimes.
  - Jason Holzapple fixed up FLAC support.
  - Updated the FAQ to be in sync with the web site.
  - Added slimserver.strings.txt support. Add a file by this name to your server folder (or your Library/SlimDevices folder on Mac OS X) to override strings.
  - Fixed a confusing warning when doing Squeezebox firmware updates.
  - Fixed a typo where ID3v1 tags would include a genre called bebob.
  - Added back missing TIme::HiRes libraries for some Unix platforms.
  - Fixed a problem where some non-standard JPEG cover images in ID3 tags wouldn't show up.
  - Fixed a problem where the Music Library path might be reset to empty when iTunes was installed.
  - Nicolas Guillemain updated the French localization.
  - Michael Herger updated the German localization.
  - Robert Moser improved the Information plugin and added some neat new button mapping tricks.
  - Restored the installer to run the SlimServer Windows Service as the SYSTEM user, since that's the only account that has the appropriate permissions.
  - Updated the Squeezebox firmware to handle radio stations much better.
  - Building the Windows versions with the latest tools from ActiveState, which should fix the problem of the service stopping when the user logs out.
  - Fixed some problems where the server could get into a CPU hogging state.
  - The RedHat RPM now obsoletes SliMP3 appropriately.
  - Fix version number in windows installer.
  - All platforms should try harder when looking for valid MP3 data in MP3 files.
  - Fix a problem with FLAC cover art.
  - The server now tries harder to locate iTunes music library information on Windows.
  - Removed some harmless command line warnings.

  ## Version 5.0.0 - 2003-11-18

  - Renamed SLIMP3 Server to SlimServer to indicate that it works with more than one device! Namely, added support for Squeezebox, Slim Devices' latest creation
  - Added support for iTunes on Windows
  - New on-the-fly transcoding framework, use the convert.conf file to modify the behavior, can transcode arbitrarily depending on client type, client id and file type.
  - Restructured the source code into new directories. There's a tool for updating plugins in the tools directory called "whack.pl" and another one for updating skins called "skinjob.pl"
  - Robert Moser sped up double-size rendering significantly
  - Kevin Walsh's Information Plugin is now part of settings and includes wireless signal strength for Squeezebox.
  - The Save Playlist plugin is now installed by default and can be accessed quickly by pressing and holding PLAY while viewing the current song in the current playlist.
  - Built-in firmware updater for Squeezebox. Press and hold BRIGHTNESS to force a firmware update.
  - Substantial layout fixes in the Default skin
  - Fast-forward and rewind are more reliable
  - Built-in HTTP web server sped up significantly
  - Kevin Deane-Freeman added substantial fixes to the Fishbone Skin...
  - Some changes to the XML skin to improve XML-cleanliness. Added some more player info tags. Added status_header.xml if you just want the player status and not the whole playlist.
  - Added in contributed skin by Mark Erichsen for small displays called Handheld.
  - Added a preference for refresh rate in the web interface. Will try to update sooner if the song is going to end.
  - Windows server is now built with the latest tools from the fine folks at ActiveState (ActivePerl 5.8.1 and PDK 5.3). Should see some performance improvements.
  - Using the new ActivePerl has the side effect of fixing a bad memory leak in the Web server under Windows.
  - Added patch submitted by Jason Holzapple to allow priority setting from command line.
  - Added basic support for AIFF, WAV and FLAC.
  - Documentation updated, especially the FAQ.
  - Windows installer now installs the service running under the user installing the software. Makes it easier to access mounted volumes and iTunes libraries.
  - Using a suggested tweak to the oggdec parameters to work around a bug in that program.
  - Mac preferences are now saved in Home->Library->SlimDevices->slimserver.pref
  - Windows preferences are now saved in C:\Program Files\SlimServer\server\slimserver.pref
  - Unix preferences are now saved in ~/.slimserver.pref or /etc/slimserver.pref (if the latter exists)
  - Fixed a problem using the wrong CLI port on windows.
  - Fixed a crash if zapped playlist can't be opened for writing
  - AAC transcoding works on Windows, not just Macs.
  - Dave Nanian updated the Mac installer and preference pane to be ready for SlimServer. It was a lot of work, mostly because Dean was breaking things.
  - Mac specific code is now built in XCode and is Panther friendly.
  - SLIMP3 Firmware Updater is a separate Mac application now, rather than built in to the preference pane.
  - Rod Nayfield submitted a patch to handle automounts in iTunes under Panther better.
  - Added support for icy: URLs which are what NiceCast uses.
  - Robert Moser made the button framework much more flexible, with wildcards, etc...
  - Fixed a problem in settings in some languages where the iTunes choice was a bit scrambled
  - Fixed the windows installer/uninstaller to uninstall SLIMP3 Server when installing SlimServer. When uninstalling SlimServer (why would you ever do that?), it cleans up more better.

  ## Version 4.2.6 - 2003-10-06

  - Fixed problem of odd length MP3s causing hiccups while synced.
  - Fixed leading double slashes in pageheader for some skins.
  - Fixed scrolling problem in playlists when using the remote.
  - Added French localization improvements by Nicolas Guillemain.
  - Reordered the shuffle links on the EN and Default skins to match the remote..
  - Under panther, the archname has changed. Allow for both darwin and darwin-thread-multi-2level as the dir name for finding binaries.
  - Fixed a problem where WAV, MOV, Ogg and AAC files were being cut off.
  - The progress indicator and remaining time still isn't correct, but the audio works.
  - Quick And Dirty solution to moving iTunes Music Libraries around.
  - Handle multiple and corrupted ID3 v2.1 PIC tags.
  - Fix a debugging message for the timers.
  - Fix a divide by zero error (though I'm not sure how to trigger it...)
  - Added feature to control display size when powered off, separately from the size when powered on. Added player setting for this to menu.
  - Submitted fix for some versions of oggdec.
  - Fixed a potential memory leak (in some versions of Perl) in the ID3 parser. Should be faster too.
  - Make sure we use the default port (9090) for CLI under Windows.
  - Adding submitted Dutch localization from Paul Roomberg.
  - Supress warning on zero length WAV files.
  - Danish translations courtesy Morten Fischer-Madsen.
  - Accepted patch to sort albums properly when shuffling by album.
  - Do more error checking when trying to obtain local IP addresses.
  - Accepted patch for improved slimp3.pl script.

  ## Version 4.2.4 - 2003-09-10

  - Norwegian translation improvements, courtesy Georg Engstrand.
  - The MP3::Info library didn't handle the unsynchronization bit in the ID3 standard. Now it does. Should fix a few broken MP3 files.
  - Fixed a problem where the Windows service would stop if the user logged out.
  - Some debugging code re-enabled for debugging streaming.
  - Added some version string information to the Windows executables.
  - Build using the perferred ActiveState releases: perl 5.6.1 (build 635) and perl dev kit 5.2.0 (build 520). ActiveState Perl 5.8 has a serious bug in opening remote streams.
  - Fixed a bug in the scan code that caused scanning recursively through windows shortcuts to fail the second time.
  - Updated Swedish from Johan Hubner and Andreas.
  - Updated the FAQ.
  - Dark Side of the Moon is a great album. Don't put clicks and pops between the "tracks" if using a cue file. It turns out that seek() won't seek to a fractional byte.
  - Fixed another problem with CUE files. We were inserting the occasional space character between songs. This forces the MP3 decoder in SLIMP3 to resync, which is usually fine, except with CUE files. So now, we do some extra work to send an even number of bytes of contiguous data.
  - Another fix for the number button functions when browsing the music library from the remote.
  - Fixed a problem where we should reset at the beginning of the current playlist when we've reached the end even if we've got repeat off.
  - Make sure we are non-blocking on outgoing HTTP streams for all platforms.
  - Point the update code to the new domain so it doesn't interfere with our web logs.
  - Make the fade resolution a bit higher which should make pausing and unpausing a bit smoother.
  - Fixed a problem where the audio would continue if we're buffering while we try to pause.
  - If we're scanning and you hit pause, don't bother fading.
  - Added a bunch of obscure Mac file type codes.
  - If itunes has a song and it is missing some id3 tag information, the content type could have been lost. Reuse it if we need to.
  - Default to 320kbps transcode bitrate for all transcoding. It's cheaper (computationally) and transparent to all but the most golden of ears.
  - When we restore the saved playlist at startup, restore the play position.
  - Added a path to LAME installed with the iTunes LAME encoder, which is a neat bit of software.
  - Don't close a streaming HTTP connection if there's just no data. Close it if it's not connected.

  ## Verison 4.2.3 - 2003-08-08

  - Localization
    - German localization patch from Gernot Ficker.
    - Craig Brannan submitted a patch which I rewrote to allow the user to override the strings files (with files named strings.txt, slimp3-strings.txt and .slimp3-strings.txt) in the executable, home or OSX library directories.
    - Nicolas Guillemain updated the french translation for us.
  - Player Interface
    - Fixed nasty display problem when browsing an album.
    - If you have the sort by filename option turned on, then you can use the number buttons to jump alphabetically when browsing the file system from the remote. Funny windows quote characters can be mapped to apostrophes.
    - When showing search results, we were sometimes doing funny things to the titles.
    - Rework the rewind and scanning code. Press and hold to start scanning FWD or REW. Press and hold again ( or continue holding) to speed up the scan. Press PAUSE or PLAY or the opposite direction to end scanning. Max out ffwd at 256x
    - When we get to the end of the playlist and repeat is turned off, stop playing, then reset at the beginning.
    - Fixed a problem where choosing to play an album in the path: Genre -> All Albums -> specific album wasn't playing the right thing.
    - Fixed a problem where long, doubled, briefly-displayed lines were jumpy.
    - Added a player setting (available from the Player Settings web page) to have volumes synced as well as the playlist.
    - Felix Mueller discovered and fixed some rounding errors in the progress bar.
  - Windows
    - Postulated fix for windows shortcuts not being recursed properly during scans and recursive plays.
  - Debugging
    - Give some more warning about missing items requested from HTTP server.
    - Remove an extraneous print command used for debugging.
    - Try harder to update CVS for nightly builds.
    - Use portable strftime formats. Fixes crasher on 10.1.5 and bogus logging on many platforms.
  - Networking
    - Don't open up our old port of 1069 anymore. Use the latest client.
  - Formats
    - Fixed ogg a bit. Use oggdec instead of ogg123, as it's part of the standard ogg release. Fixed a problem where we weren't quoting the path to ogginfo...
    - The reliable i2c support is, well, unreliable. Turning it off to address the problems we're seeing with player lockup.
    - Improved performance of transcoding to work on windows.
    - Append .exe to the executable name when looking for the binary.
    - Fix the WAV parser to read and ignore unknown chunks, rather than crapping out.
    - Temporarily added -x option to the LAME command for Ogg playback, as most of this happens on x86 machines. This will be cleaned up later.
  - Streaming
    - We may not know if a stream is a playlist or a file or what, so we need to check to see if it's an HTTP URL when browsing and do the right thing.
  - Performance
    - Simplify doublesizing. All characters are handled through the hash now. Added accessor functions to add new characters to the hash or update existing ones. Kerning has not changed, except to avoid it if the last character was a digit. Added back in the newTimer return value so that timers can be killed specifically.
    - Fixed the problem that was locking up players. We were sometimes sending volume commands too often. Now we throttle at 10 per second.
    - Reworked the fade_volume parameters to give a overall time rather than a fade amount per tic.
    - Reworked the persistent syncing code. Fixes a couple of problems including the doubling of playlists upon every server restart.
    - Only select on streaming sources, not pipes because it's not appropriate and it doesn't work on windows.
    - Get rid of the die() calls in stream.pm to keep the server from crashing. We've got a rare bug that was causing death while synced, usually after many hours. It will spew out some diagnostic information so maybe we can figure out what's going on here.
    - We don't need to clear the caches if we are just forgetting about a single item.
    - Ignore reserved folder names if they are indeed only folders.
    - Jason Holtzapple submitted fixes for YEAR and TRACKNUM tags.
    - Sync states are now preserved across server restarts.
  - Web Interface
    - Many, many from Kevin for Fishbone.
    - Fixed problems with cue files.
    - Put a link to our website so folks that are trying out the software can buy the darned thing.
    - Fixed a small layout problem in the default status header.
  - Linux
    - RPM version numbers can't have - in them, but they can have _
  - Automation
    - The button command was only accepting function names, not button names. Now it accepts button names, and if that doesn't work, looks for the appropriate button function.
    - Fixed a logic bug in the "listen" cli command.
    - When asking for a player name or address via the CLI, you can pass the ID or the index to get a valid answer.
    - Added CLI command "player ip" to return the ip address.
    - KDF fixed a problem in the CLI where the player name command could crash the server crash.
  - Firmware
    - Added a command line option to the firmware updater to change the player's MAC address (which is only really useful if you have the wrong kind of display in your player). Usage: update_firmware.pl --newmac=00:01:02:03:04:05
  - Documentation
    - Make sure the button list is consistent in the HTTP and CLI docs.
    - Point the FAQ at the corporate website for information about wireless.
    - Rober Moser documented his text input module saying: What is this? Docs before code, what could that maniac be thinking?!?
    - I clarified the CLI and HTTP docs to reflect that fact that we usually use MAC addresses to identify players these days.
    - Tweaked the FAQ layout and updated the questions themselves.
  - MoodLogic
    - Patches to fix MoodLogic from Gerald at MoodLogic. Do make sure you have updated to the latest version of MoodLogic if you are using it.

  ## Version 4.2.2

  - Mac OS X
    - Fixed a problem where the installer wouldn't start on pre-Jaguar OS.
    - Apple's protected AAC files (.m4p) can't be played, so they shouldn't show up.
  - Web Interface
    - Fixed a problem where some pages were getting truncated.
    - Improved performance of loading playlists in the web inteface.
    - Fixed a problem where blank titles might appear in the web browser.
    - Fixed a problem where radio station titles might have reverted to the URL.
    - Fixes to the Fishbone skin.
  - Player Interface
    - In double-size mode, show more feedback, especially when you press PLAY or ADD.
    - Fixed a problem with alignment in double-sized clock.
  - General
    - Fixed a problem where the server might unexpectedly stop.

  ## Version 4.2.1

  - Mac OS X
    - Fixed a problem where certain iTunes playlist would appear empty.
    - Fixed the ability to set your rendezvous name to nuthin' to disable rendezvous.
  - Unix
    - Victor came through with a fix to the RPM for default file ownership.
  - Player Interface
    - Plugins are sorted like everything else.
    - Added shuffle by album to the shuffle menu.
    - Fixed the crasher in the Information.pm plugin by disabling the code that assumes there's only one directory with Plugins in it.
    - Gave some version numbers to the standard plugins.
  - Web Interface
    - Added support for ID3v2.2 cover art.
    - iTunes lies about cover art and says it's JPEG when it's clearly PNG. We see through this.
    - Don't look up cover art if we're browsing a playlist.
    - Fixed a problem where the metadata from streaming stations was getting lost.
    - Patch from KDF to fix a problem with Fishbone.
  - Streaming
    - Some web servers lie about content types and call everything text. We guess the content type from the suffix in this case. Fixes a bunch of streaming stations.
  - Localization & Internationalization
    - Updated French translation from Nicolas Guillemain.
  - Misc
    - Also, updated the reference from Extras to Plugins.
    - Consistent handling of IP addresses. We only cache the paddr for a client, rather than the ipaddress and the paddr. When a player's IP address changed, they were getting out of sync and could actually crash the server. As a side effect, it's a bit more efficient in packet handling.
    - Abstract out the defaultName from the given name for a player so we can give it a default name and know if it's using its default name. Looking right at IP addresses isn't the right way Don't keep duplicate (IP address and MAC address based) entries in the client hash.

  ## Version 4.2

  - Mac OS X
    - Added support for AAC (.m4a) and QuickTime Movie files under Mac OS X. Requires the installation of LAME to work. Due to restrictions from Apple, Apple Music Store files (.m4p) do not work.
    - To work around a bug in the Mac OS X System Preferences application, make the Firmware Updater description field a bit bigger so it doesn't get cut off.
    - iTunes now expresses the current Music Library folder, so we use that as a default.
    - The 60's playlist has a very funny apostrophe in it, which didn't get converted from unicode properly. Now it does.
    - Mac users can now install plugins in ~/Library/SlimDevices/Plugins and /Library/SlimDevices/Plugins. They can also install skins in ~/Library/SlimDevices/html and /Library/SlimDevices/html, helper executables (such as LAME) in /Library/SlimDevices/bin and ~/Library/SlimDevices/bin and IR files in ~/Library/SlimDevices/IR and /Library/SlimDevices/IR.
    - iTunes playlists with slashes (and other funny characters) in the titles now work correctly.
    - If you specify an empty Rendezvous name for your server, it won't start the mDNS responder and thus not appear via Rendezvous.
  - Windows
    - Problems with Windows shortcuts have been improved.
  - Unix
    - Log files specified from the command line are now appended by default.
    - Log file format includes time as well as date.
    - RPM has been improved to install server as root, run by the user named "slimp3".
    - SIGHUP causes the server settings file to be reloaded.
    - Victor Brilon fixed several issues with the RPM.
  - Player Interface
    - Fixed the doublesized search entry page nastiness.
    - Jacob Potter fixed the Shooter Plugin.
    - Fixed a problem with reloads on the SenseMaker skin.
    - We now identify players by MAC address, not IP address, so if the IP address changes, the player settings follow it. This change may require you to adjust your player settings again.
    - Robert Moser fixed the dreaded cursor flicker bug! Stud!
    - Added ability to use menu function to go to arbitrary plugin. Example: button = menu_PLUGIN.SlimTris
    - Added function to invoke arbitrary function in an arbitrary mode. Example: play.hold = modefunction_PLUGIN.SavePlaylist->save
    - You can now shuffle by album or by song. Press the shuffle button to rotate through these settings. Courtesy Guy Albertelli II.
    - Press and hold the ADD button to play the selection next instead of at the end of the playlist.
    - The Information plugin has been updated with a lot more information.
    - Don't always jump to the top of Home whenever you navigate there.
    - When using the number buttons when browsing the music library, they should scroll proportionally (1 to the top, 0 to the bottom, 2-9 proportionally in between.)
    - Added an additional player setting to disable auto brightness control altogether. This will reduce annoyance in some wives.
    - Fixed a problem in song title search results where they weren't sorted. Now they are.
    - Fixed a bug where pressing play on Browse Genres->SomeGenre->All Albums->All Songs would fail.
    - When the screen saver kicks in, it should jump to the currently playing song if you are already in the Now Playing playlist.
    - Fixed a problem where the current song might be thought to be after the last song.
    - Improve the plainTitle to be more friendly for songs that don't have ID3 titles defined. _ are turned to spaces, HTTP urls are cleaned up and displayed.
    - The clock display is centered correctly when in double-height mode.
  - File Formats
    - A bit of work trying to make ogg playback more robust.
    - Note: LAME doesn't know about every sample rate, nor does it handle mono input well. Transcoding files with these characteristics (11.025ksamples/sec, mono) won't work.
    - Fixing Ogg support on the Mac. For some reason, the byte order was being swapped from native order. Now we use native order in both LAME and ogg123.
    - Fixed the problem where transcoded songs (Ogg, WAV, AIFF, M4A, etc...) were getting cut off.
    - Improved (but not fixed completely) progress information for transcoded songs.
    - Did you know that WAV files can have ID3 tags in them? I didn't, until this morning, cover art and all. Neat.
    - Adding composer tag from id3 v2.4 support.
    - When available, support for the TSOP, TSOT, TSOA ID3v2.4 tags to provide explicit sorting information for artist, title and album names.
    - Fix some path handling code for both windows and unix. Look for binaries like ogg123 and lame in the path and some well known places. Under windows, use the File::Which::which() routine to dig it up.
    - We now add a tag to the cache which indicates whether we've loaded the tags from the file. Don't bother reloading if it has been done before.
    - We weren't displaying the composer information from ID3 v2.2 tags, just 2.3.
  - Web Interface
    - Adding contributed Fishbone (Kevin Deane-Freeman) and xml skins (Fred Thomas).
    - There is now a built-in debug log facility, available from the web interface. View the log at: http://server:9000/log.txt by default the last 100k of log is kept around for viewing.
    - There is now an option to disable the adding of composer, band and orchestra entries from ID3 tags to the Artists list.
    - Songs can be deleted matching specific genres artists albums or song titles from the current playlist. This is available in some skins.
    - Skins can now tell if the player is off.
    - Custom file names can be specified for cover art in the settings.
    - Fred Thomas cleaned up the skin files to do the escaping of the player id's in the files themselves instead of in the perl code.
    - Removed translation of \ to / in M3U parsing. This was causing duplicates in song counts and the info database.This was REALLY old code, so I'm not sure if it will break any playlists, but I expect not.
    - Case-insentivity and article handling has been speed up and made more consistent.
    - File URLs displayed when getting song info under iTunes fixed.
    - PLS files can now be renamed from the web interface.
    - Statistics changes: Performance improvements in calculations of statististics. We don't calculate the per-list-item statistics unless the skin specifically requests them. We don't display the statistsic in the web interface unless they are available. The Stats aren't available until the scan is complete.
    - Display the ethernet MAC address and IP address on the player settings page.
    - Kevin Deane-Freeman updated Fishbone skin.
    - Removed some restrictions in the names of playlists. Now you just can't have control characters, slashes, backslashes or dots in the names.
    - Moved transcoding settings to their own settings page.
    - Robert Moser updated the button mapping documentation.
    - The total time statistic wasn't being reset at the beginning of a rescan.
    - Added the ability to adjust parameters for all html (and xml and text pages) in a skin. Create a template file called "include.html" at the root of your skin. This file is parsed for every html and xml response. Put a line in it like:
      [SET itemsPerPage 10000000]
      in there to set the items per page to be essentially unlimited. You can also put [EVAL ] items in there if you want to do some calculations or other adjustments for every page.
    - Guy Albertelli II submitted a patch that allows us to display artist, album and song counts while browsing by genre artist and album. Neat.
    - Improved the consistency in the UI for handling sync groups in the player settings page. Synced players appear as one virtual player.
    - Added cover art to missing places in the EN and Default skin, including the browse browse music folder view.
    - Clicking on the currently playing song title in the Default skin bring up the song info page
    - Don't truncate suffixes in folder names.
    - Wake up the brightness if the player starts or stops from the web interface.
    - Add All Songs to Album browse page.
    - Added Thorston Faltings' Purple skin, which is quite nice.
    - Added hitlist page to EN skin.
    - Remove the border around the cover art in the default skin.
    - The server now checks (by default) every day for software updates and notifies the user. There's an option to disable this feature in the Additional Server Settings are.
  - Streaming
    - Robert Moser updated the streaming code to improve blocking under Perl 5.8 on Windows and to make it cleaner all around.
    - The URL for streaming from the server to an MP3 player can be "http://server:9000/stream.mp3" or just "http://server:9000/stream"
    - CPU usage for streaming has been reduced through optimization.
    - Added a SliMP3::Protocol::idle() routine that is safe to call in order to give audio streaming some time while blocked in other areas, such as loading up long song search results. Used for in browseid3 and playlist page generation now. Could be used elsewhere.Any incoming IR data is queued up later, but other UDP packets are processed immediately. Don't use this routine if you are in the middle of modifying the playlist.
    - Don't allow sync between HTTP and SLIMP3 clients, as it doesn't work.
    - Some protocol, i2c and decoder cleanup from Sean.
  - Localization & Internationalization
    - French localizations have been improved.
    - Lieven Hollevoet also provided us with a strings.txt localization tool.
    - Some more German improvments, courtesy Thorston.
  - Automation
    - Significant improvements and updates to Fred Thomas' XML skin. There is now XML skin documentation available in the technical documentation area.
    - The commands "playlist play <item>", "playlist add <item>" and "playlist insert <item>" now work on songs, playlists or directories. The "playlist append" and "playlist insertlist" commands are now depricated.
  - Documentation
    - The printed User Manual has been updated.
    - The FAQ has been updated substantially.
    - A remote streaming instructions page has been added to the documentation.
  - Misc
    - Added some additional feedback if firmware update fails.
    - The option --d_server prints out details about the stages of startup and shutdown so we
      can see what's taking so long.

  ## Version 4.1b1

  - Mac OS X
    - Fixed support for iTunes 4.0 library importing. (Note: This fixes support for MP3s, AAC is not supported yet.)
    - Fixed a problem with firmware updates on Mac OS X version 10.1.5.
    - Update the iTunes rescanning to trigger on the file modification date changed and 60 seconds passing since we last finished scanning.
  - Windows
    - The Windows installer will stop the SLIMP3 service before upgrading.
    - Cosmetic improvements to the installer.
    - Fixed a problem where Moodlogic could cause the server to stop unexpectedly.
    - Fixed a problem where the server could exit if it found a corrupted WAV file during the startup scan.
    - Robert Moser provided a fix for a problem with leading slashes in some web links for songs when UNC paths were used to specify a music folder.
  - Unix
    - Added Rendezvous support for i386-freebsd and i386-openbsd, courtesy Mark Langston.
  - Player Interface
    - Made sorting a bit smarter for lists of songs (search results and the like) so the songs are now sorted by the title when appropriate.
    - Rob Funk suggested a fix to the problem where shuffled playlists didn't shuffle the first track.
    - The PAUSE button wasn't properly disabled when the player was off. This meant that you could resume playback without turning on the SLIMP3. Fixed by adding pause.single and pause.hold in the Default.map file.
    - Patch accepted to fix time slippage in alarm clock and to fix volume display in alarm clock when in double-height mode.
    - When the player is off and the brightness is set to dark, don't reset the brightness unless the user presses the brightness button or turns the player on.
    - Performance improvements to fix a problem that was causing server slowdown when double-height text was being displayed.
    - Press and hold ADD when browsing the Now Playing playlist to delete the song and move it to the Zapped Songs playlist for further inspection.
  - Web Interface
    - Added the display of cover art to the song information and browse album screens for the Default and Lite skins. If there's an image in the ID3 tag, use it. If not, then look for a file called cover.jpg, then one called albumartsmall.jpg, then one called folder.jpg in the same folder as the file in question.
    - Fixed a problem where jumping to an album title that began with an article would jump you to the wrong place.
    - Help pages now have the appropriate look and feel for the default skin.
    - There were a couple of extra spaces in popup menus in the setup pages sometimes. Not anymore.
    - Rob Funk also suggested that we do allow recursing into playlists in the saved playlist folder, but not in the music folder. He's smart.
    - Fixed a dumb problem where LT and GT functionally were switched.
    - Adding facility for plugins to have preferences on the plugins page of setup. Plugins using this facility will need a setupGroup procedure which returns a hash ref to the group parameters desired and a hash ref to the preferences to be controlled.
    - Added an CSS entry for <code> in the Default css style sheet.
  - Streaming
    - Fixed a number of problems that were causing some streaming stations to fail.
    - If an icy-name: header is sent in a remote stream, use that as the name.
  - Localization & Internationalization
    - Improved German translation from Thorston Faltings.
    - Removed some extra spaces from the strings.txt file.
  - Automation
    - Added the suggested "playlist save" command to save playlists from the command line. Also, added a syntax to load a saved playlist by it's simple name "jazz" instead of "__playlists/jazz.m3u" for simplicity and brevity.
    - Added a --d_command option to watch the command execution.

  ## Version 4.0

  - Mac OS X
    - User Wolfgang Rutter found that iTunes importing breaks if you have perl 5.8 installed and provided a fix.
  - Windows
    - The Windows options to stop server when quitting are only useful and enabled when not using the Windows service version of the SLIMP3 server software.
    - The Windows service would sometimes not respond if there were no players connected. Now we force the server to wake up every second to make sure it's responsive.
    - The installer won't prompt for a Library or Playlists folder when upgrading.
  - Linux
    - Fixed a problem where the /etc/sysconfig/slimp3 file was rewritten badly in an upgrade.
  - Player Interface:
    - Fixed a number of bugs with the new Alarm Clock feature.
    - Fixed a minor issue with buffer calculations for streaming.
    - Non-moodlogic users can now press and hold PLAY to play.
  - Web Interface
    - Fixed some cosmetic issues with the SLIMP3 Standar skin.
    - Fixed some cosmetic issues with the SenseMaker skin.
    - The XML skin is now hiddend from the user interface, but is still available.
    - CSS for the Default skin now are inlined for faster loading and better rendering.
    - Hashed passwords are no longer displayed.
    - Password protection settings are now grouped together to reduce confusion.
    - When you switch skins, now provide a link to reload the whole page to see the new skin.
    - Song info now shows last modified date for song files.
  - File Formats
    - Made parsing invalid CUE files more robust.
    - Fixed a warning that happened when you tried to get info on an MP2 stream or file.
    - Fixed a problem where some WAV files were confusing the server. WAV files are completely ignored unless LAME transcoding is turned on.
  - Streaming
    - The server sends an iTunes-like identifier to streaming stations in order to get them to send to SLIMP3. This fixes many problems with streaming stations.
  - Localization & Internationalization
    - Improved localization in the Default skin.
    - Improved translations for German.
  - Automation & Networking
    - The no longer crashes when scanned by a port scanner.
  - Player Firmware
    - Firmware is now officially version 2.2, which is identical in function to 2.2a1.

  ## Version 3.1b5

  - Mac OS X
    - Fixed a bug in the installer where the user could end up with two copies of the software installed.
  - Windows
    - Improvements to the installer to make it easier to set up your music library folder and playlist folder preferences.
    - The MoodLogic support now handles the case where the MoodLogic database is in an inconsistent state. Relaunch the MoodLogic software and it will fix the database automatically, then re-enable the MoodLogic support from the SLIMP3 server settings.
    - There was a memory leak happening in the SLIMP3 Windows service for each page that was reloaded via the web interface. This has been fixed and as a side effect, the web serving should require less CPU load.
  - Linux
    - Fixed a problem where the /etc/sysconfig/slimp3 file was rewritten badly in an upgrade.
  - Player Interface:
    - There is now an Alarm Clock setting, available from the player remote interface! Choose a time and a playlist to start and turn it on to wake up to your favorite tunes. Thanks to Kevin Deane-Freeman for his great work on this!
  - Web Interface
    - If the user powers off while playing an HTTP stream, stop the stream.
    - Fixed a problem in sorting when displaying a long list of albums as the result of a search.
    - Cosmetic improvement to the display of song and album information on the default home page.
    - Nick Balestra has submitted a new skin: SenseMaker.
  - File Formats
    - Sped up reading and writing of M3U and PLS files.
  - Plugins
    - Some improvments to the Plugins architecture, making it easier to build complex plugins.
  - Player Firmware
    - Fixed a problem where the player wouldn't arp for the server address often enough.
    - Updated IP packet format to conform to RFC3514
    - Firmware is now version 2.2a1.

  ## Version 3.1b4

  - Mac OS X
    - The DMG image automatically opens up when mounted. Easier to find.
  - Windows
    - The SLIMP3 software is now distributed with a Windows-friendly installer thanks to help from Chris Eastwood.
    - Fixed some bugs in the SLIMP3 Server application when it connects to a windows service. It now won't try to shut down the service when it quits.
    - The Moodlogic support doesn't work with the server when it's run as a Windows service. Moodlogic disabled at service startup. This will be addressed, but in the mean time, use the SLIMP3 Server application to start the server.
  - Player Interface:
    - Press and hold the PAUSE button to put the player in stop mode.
    - Show the file type on the song info area for a song.
    - Fixed some problems with strange text displayed in double-height mode.
    - Pressing LEFT while editing a search string shouldn't repeat unexpectedly.
    - Fixed a problem that would cause flickering if the display brightness was previously set to zero.
  - Web Interface
    - Show the file type in the song info page.
  - File Formats
    - If LAME is installed, then you can transcode and stream uncompressed AIFF and WAV files now.
    - There is a Server Settings->Behavior setting for enabling and disabling AIFF, WAV and Ogg Vorbis transcoding. You'll need to enable this to support transcoding. If disabled, AIFF, WAV and Ogg Vorbis files are ignored.
  - Linux/Solaris/Unix:
    - RPM installs pipe the error log to /tmp/slimp3.log to aid in debugging.
  - Player Firmware
    - The player only displays ping information for ICMP ping messages (and no other ICMP messages.) It also filters out ping messages that aren't sent to the player's specific IP address.
    - Firmware is now version 2.1a2.

  ## Version 3.1b3

  - General
    - Fixed some issues related to virtual and absolute paths. This fixes some issues where some files wouldn't play correctly on Windows.
  - Mac OS X
    - Added a settings field for Rendezvous name. Requires restart of server.
    - Fixed a cosmetic problem with the Slim Devices logo in the System Preferences pane.
    - Daniel Klein submitted a fix to speed up iTunes import performance and to wait three minutes between rescans.
  - Internationalization and Localization
    - Improved Swedish localization from Andreas.
    - Removed unused Russian translation, as it never did work. We'll resurrect this when we add Unicode support.
    - French localization from Serge Froment and Fred Thomas.
    - Searching and sorting ignore diacritics and case in text.
    - Updated Swedish localization from Andreas and Johan.
  - Security
    - There is now a security section of the Additional Server Settings area. We now support IP address range blocking for HTTP and CLI connections, as well as HTTP basic authentication.
  - Windows
    - Moodlogic added support for their product. Download and install Moodlogic version 2.5 or later and start the SLIMP3 server software. Make sure that Moodlogic is chosen from the Server Settings page and you should be able to browse through your MoodLogic music library, create instant playlists and use the MoodLogic "mood" features. Neat!
  - Player Interface:
    - The current playlist is preserved across server restarts.
    - Fixed a bug where if you pressed the Search button on the remote when in double height mode, it wouldn't update.
    - The text on the display didn't show the playlist length when paused, like it does when playing or stopped.
    - Reworked the custom character code and the VFD output code. Now you can mix and match custom characters in a given string, setting up their bitmaps only once ever.
    - Added support for a new VFD module that has slightly different brightness controls. We'll detect the type of display based on the MAC address.
    - Cleaning up the discovery protocol and client creation. There were some cases where players would get stalled and the time would never increase above zero.
    - Bump right animation now works in double-height mode.
    - Now ignoring duplicate IR packets.
  - Web Interface
    - The SLIMP3 web interface has a new look, designed by Igor Gasowski, coded by Nick Balestra and Dean Blackketter. The old interface is still available as "SLIMP3 Light" from the Additional Server Settings area.
    - Added basic support for serving an XML skin.
    - Fixed a problem with the Olson skin where it wasn't showing the list of lettters correctly.
    - Added synchronize to player setup.
    - Skin authors now have all of the ID3 information that we retain on a per-song basis available from the status.html page.
    - Added option to automatically reshuffle when restarting a repeating playlist.
    - Skin authors now have [GT] and [LT] template directives to determine greater-than and less-than.
    - Fixed a bug where secondary settings pages would have the wrong player sometimes.
    - index.html and home.html both include the same param information so that we can build frameless skins.
    - We now don't send "expires: 0" headers with images.
    - Upped the maximum number of tcp connections and connections to scan each time through the main loop. Needed to support the new skin, which is substantially more complicated.
    - Reload the right side of the screen when the preferences have changed.
  - Documentation and Online Help
    - Tweaked the upgrade instructions all around to warn not to attempt an upgrade over wireless.
  - File Formats
    - Fixed a bug where we weren't handling songs of zero length or zero duration properly.
    - Added WAV transcoding patch submitted by Felix Mueller. Requires LAME to be installed and currently works only on a Unix or OS X system. You can use LAME 3.92 with OSX with this patch. LAME 3.93 is broken.
  - Automation
    - Added support for command-line command: "listen 1" which allows CLI clients to watch the SLIMP3 server events. This includes "raw" infrared codes in this feedback.
    - Added support for XML files in the web interface and a future XML skin. You can add .xml files to the html directory and they will be processed using the template mechanism. If you want to create XML for use in the dynamically created pages, replace the .html files with XML equivalents (but retain the .html suffix in the files). Then refer to the files from the HTTP interface with .xml suffixes to ensure that they come back with the right content type.
    - Added playerpref commandline/http command to set player preferences.
  - Linux/Solaris/Unix:
    - Non-mac users can save their "iTunes Music Library.xml" file in their home directory on Unix machines or in the server directory on windows. Make sure the file paths are right, though.
    - Patch to add command line option to set user and group if launching as root.
    - You can now specify a logfile for error and debugging logging. Mac OS X has this go to /tmp/slimp3.log by default.
  - Player Firmware
    - The player firmware is now version 2.1a1 which fixes a bug in the (h) packet. Upgrade is not required.
  - Streaming
    - Now sending Icecast track meta-information with outgoing HTTP streams.

  ## Version 3.1b2, Released 2003-02-14

  - General
    - The Games menu has been replaced by the Plugins menu where we can install other extra features in the Plugins folder. Enable the Plugins menu from the "Additional Server Settings" Interface section and configure it from the Plugins section.
    - Moved the datasheets to the Slim Devices website, saving the user 700k of storage space and download time.
  - Mac OS X:
    - Fixed a problem on Mac OS 10.1 where the preference pane wouldn't install or stop the server properly.
    - Added a workaround for a problem with Safari where it would take two clicks to load a page or an error panel would be displayed.
  - Player Interface:
    - Don't restart the current song when appending a single song while browsing the file system.
    - Added a center mark for Treble and Bass controls.
    - Added a plugin localized string mechanism. Just add a strings() functionto your plugin. It should return localized strings in the same format as the strings.txt file
    - Added Rescan plugin.
  - Web Interface
    - Add two new skins: Olson (courtesy Eric Olson) and NBMU (courtesy Nick Balestra)
    - Fixed a number of skins that had customized status.html templates.
    - Robert Moser signficantly updated his skin.
    - Fixed auto-refresh on the status page.
    - Added preference for when you press PLAY on a selected song if it plays just that song or all the songs in that context, starting with that song.
    - Updated songinfo HTML page to include a link to server the song via http.
    - Fixed a problem where navigating in some windows systems would cause an error.
    - Updated plugin framework to enable/disable the UI, not the loading. This makes it possible to enable/disable without restarting.
  - Documentation and Online Help
    - Updated some of the docs for the new remote.
    - Updated the faq to include DAB/Psion/DABBAR information.
  - File Formats
    - Fixed a warning generated with some malformed cue files.
  - Linux/Solaris/Unix:
    - Mike Arnold gave me some RPM and Solaris fixes.
    - Added Kevin's patch to include $Bin in the path, which is useful for running the server from a different cwd.
  - Player Firmware
    - The player firmware is now version 2.0 final.

  ## Version 3.1b1, Released 2003-02-05

  - General
    - SliMP3 is no longer spelled SliMP3. With our new identity, it will be SLIMP3.
  - Mac OS X:
    - The server is now installed as Preference Pane, thanks to Dave Nanian, instead of an Application and now has support for automatically starting up at boot or login time.
    - Fixed a bug that didn't display the correct title for URLs and iTunes playlists on the top line when browsing saved playlists and the music library.
    - New installations will default to having the CLI turned on. Useful for things like the OSX Remote.
    - A German customer found that some of the content in the iTunes Music Library.xml file is localized. We were using the 'Kind' field to determine what kind of data it was. Not good. So now we look at the Mac file type long and the URL and hazard a guess.
    - Added a new SLIMP3 Remote application for controlling the playback of the SLIMP3 from a Mac OS X desktop. Thanks to Dave Camp for this contribution.
  - Player Interface:
    - Added a screen dimming feature. If the player is on, but not playing and not animating, dim the screen until the next IR input. Even though we've never seen any burn-in, this should make some folks more comfortable.
    - Optimize playing the Nth song in a playlist from the remote. It was really slow.
    - Fixed a a bug where the server could crash when two players are synced and a new song starts.
    - Add All Albums and All Songs browsing so you can see a list of all the albums associated with a given Genre or all of the songs listed for a given artist. Particularly useful for compilation albums.
    - Default to having a second level Search menu. You can also disable this from the prefs and put the individual search menus back on the top level.
    - When displaying the file length, put in commas/periods to make large numbers readable.
    - Corrected separators in short date formats.
    - When the user browses with the remote and chooses a song in the context of an album, we start playing the whole album starting at that song. To be consistent, we now also play all of the songs in a given directory if you browse in that directory, choose a song and press PLAY. (Note: we don't recurse in this situation, we only look at songs at the current level. If you want to recurse, choose the directory and press PLAY.)
    - Added support for pressing PLAY or REC when in the search screens. It will now automatically play or add the search results to the playlist.
    - Richard Purdie's cool fix for the streaming CPU hogging bug.
    - Added basic support for fast forward and rewind by pressing and holding the FWD and REW keys.
    - Included the submitted patch from Gregory Smith that ignores leading articles (The Le Les La Las Los...) for sorting only. You can change which articles to ignore in the advanced settings area.
    - Added a volume area to settings. Now you can almost completely control the IR interface with six buttons: UP, DOWN, LEFT, RIGHT, PLAY, REC
    - Added support for multiple IR code sets, including the codeset for our new remote.
    - Added BASS and TREBLE controls to the Settings menu, based on a patch from Richard Purdie.
    - When browsing an album or a directory via the remote and you press play on a song, it plays the whole album, starting at that point.
    - Reworked the IR settings file. There's one file per remote IR code set, so we can handle multiple remotes by adding new .ir files. These files contain IR code to button mappings. New remotes that respond to new codes should have corresponding .ir files created for them.
    - There's a new file, Default.map, in the IR directory that contains the button to function mappings. Intrepid users who want to remap the buttons on their remote can modify this file to their liking.
  - Web Interface
    - Add All Albums and All Songs browsing so you can see a list of all the albums associated with a given Genre or all of the songs listed for a given artist. Particularly useful for compilation albums.
    - Added a facility to serve the raw music files via HTTP: Like this: http://myserver:9000/music/virtual/path/to/song.mp3 Only works with songs.
    - Fixed many cases where you'd get the funny nested frame problem due to bugs in Opera and Safari.
    - Added an HTML template directive: [INCLUDE html/path/here.html] will include the parsed contents of the file in html/path/here.html in the output. Subroutines!
    - Hide directory entries that start with __ including our __current.m3u file
    - Fixed a couple of it's that should have been its.
    - When displaying the file length, put in commas/periods to make large numbers readable.
    - Added support for mDNS/Zeroconf/Rendezvous advertising of the SLIMP3 services. Initially supports OS X and one flavor of Linux.
    - Changing playlist request through stream.mp3 to match regular syntax. Now use: http://slimserver:9000/stream.mp3?p0=playlist&=load&=playlistpath.m3u& The final & is so that WinAmp doesn't choke on it and is ignored by us. Playlistpath can be an URL escaped full path, an iTunes playlist URL (URL escaped), or a naked playlist name from the Saved Playlist directory.
    - Added x-p0 through x-p4 to the HTTP headers in responses to that you can query and get information using the executecommand() syntax, also used by the CLI.
    - Added a "Previous" button on the status page.
    - Sorting of artists albums and song titles ignores articles like "The" and "La". You can change which articles to ignore in the advanced settings area.
    - Added ability to move items in the playlist around in the Moser skin.
    - Added new advanced settings page for setting debug variables
    - When looking at song information from the web interface, return a valid URL for songs, even if they are file URLs.
    - Return the values of p0 through p4 as headers in HTTP responses. Useful for using HTTP for interactive control. Also return the selected player name and id
    - When you start to play music from the web interface, power up if it's powered off.
    - You can download music files from the server using a path like: http://server/Music/path/to/song.mp3
    - Added support for multiple skins simultaneously. http://server:9000/Moser/ will show the Moser skin automatically.
  - Documentation and Online Help
    - Updated FAQ and documentation
    - Updated the HTTP documentation for new and previously undocumented commands.
    - The technical documentation had references to a command called appendalbum, but it's really called addalbum.
    - First pass at merging the FAQ on the website with the FAQ in the documentation. This will also appear on the web site. Needs a new index and more organization.
    - Added a FAQ entry identifying the ports that are used so that folks can configure their firewalls more easily.
    - Updated the FAQ with a bunch of, you guessed it, frequently asked questions.
  - File Formats
    - No longer recursing into playlists during scans. We may need a power-user option for this, but the new behavior will help more people than it hurts.
    - Improved Ogg Vorbis transcoding support. You need to have the Ogg tools and LAME installed for this to work. Only tested on Unix.
    - Adding support for the ID3 tags that describe the album number and number of albums in a multi-disc set, in the same manner that we do for iTunes importing.
    - The IR code format was messed up in the previous release, it's fixed, but if you've created custom IR files, you'll have to update them.
  - Internationalization and Localization
    - Swedish and Danish localizations from Andreas Olsson and Morten Fischer-Madsen
    - Andreas found some strings that weren't localizable.
    - Improved Dutch Localization courtesy Carel Blast
  - Linux/Solaris/Unix:
    - Fixed an occasional warning from the Animation module.
    - Added FreeBSD notes to the Installation.txt docs.
    - Patch from datavortex: changed account to a system account and shell to nologin. - don't add user with default name if the admin changed it.
    - When running the server in daemon mode, rename the process "slimp3d"
  - Command-line interface:
    - Added and documented the "exit" command to the CLI. Closes the connection.
    - Added new command line argument, --stdio, which enables CLI interface on standard in/out. Now you can safely put the server into the background from a shell.
  - Player Firmware
    - Added command line options to update_firmware to specify IP and MAC in interactive mode.
    - Calling the latest firmware 2.0b2.
    - SliMP3's MAC is now in bytes 12..17 of our UDP header
    - Added support for multiple IR code sets, including the codeset for our new remote.
    - Pressing and holding the POWER button for a long time (15 seconds) will reboot the player now, so you don't have to unplug the unit to reconfigure.
    - Improved the user interface for network settings on the player. You can use the number buttons to enter digits in IP values, use UP/DOWN/LEFT/RIGHT consistently throught the interface, use FWD and REW to skip forward and back a screen at a time.

  ## Version 3.0 final, Released 2002-11-12

  - Mac OS X:
    - Fixed a problem where URLs in iTunes playlists were being ignored.
    - Fixed a problem where we were showing internal "iTunesPlaylist:" URLs where we shouldn't.
  - Player Interface:
    - The sleep button wasn't working properly in double-height mode. The text was on the top line, so you wouldn't see it.
    - When displaying a file name, correctly separate file and extension.
  - Web Interface
    - Added a FAQ to the online documentation.
    - Improved the Moser skin. Now the arrow links look like buttons. Note that the button appearance looks a ton better in Mozilla 1.1 and IE 5.5 than it does in IE 5.01.
    - Added an additional server setting to allow sorting and browsing by file name instead of ID3 tag information. (This was added in b7, but the release notes weren't updated.)
    - Fixed some problems in HTML with the documentation.
    - Fixed some problems in HTML with the "page bar" listings.
    - Fixed a capitalization issue with "Player Settings"
    - Minor editing to some of the other help documents.
    - Redid the Getting Started help document based on the new getting started flyer.
    - Added a {webroot} parameter to the templates for easier absolute references. This is set to "/SLIMP3" if a request comes in with /SLIMP3 as the start of the path. This eliminates the need to use updirs ".." in the on-line documentation. It also corrects some invalid (to people using the /SLIMP3 prefix) absolute references which were pre-existing.
    - Fixed all color references in CSS files.
  - File Formats
    - Fixed a problem where only "http://" URLs were working in PLS files.
    - Fixed a problem where songs referenced in a playlist often didn't have all their metadata loaded. We now check and load it if it isn't there. If there's a title in the playlist, that overrides any other found.
  - Internet Radio/Streaming
    - Fixed a problem where redirected URLs for streams were losing their title.
    - Fixed a problem where URLs redirected through PLS files were losing their title.
    - Fixed a problem where if a shoutcast station sent an empty title, we'd throw away a perfectly good title.
  - Linux/Solaris/Unix:
    - Updated the Unix installation.txt file.
  - Command-line interface:
    - Added --nosetup startup parameter. This disables setup from the web pages, as well as anything that uses Playlist::executecommand with a p0 of pref. When --nosetup is used on the command line, the settings pages are not linked from home, and if they are explicitly requested a 403 Forbidden is returned.
  - Player Firmware
    - Firmware 1.3 final version. This version is the same as 1.3b4, just updated the version number.

  ## Version 3.0b8, Released 2002-10-28

  - Mac OS X:
    - Fixed importing of iTunes playlists.
    - Improved the handling and display of multi-disc disc numbers.
  - Player interface:
    - The shuffling algorithm has been improved to be more random.
    - MP2 files weren't being recognized correctly.
  - Web Interface
    - Arrows added to the Moser skin.
    - Added an additional server setting to allow sorting and browsing by file name instead of ID3 tag information. (This was added in b7, but the release notes weren't updated.)
  - File formats
    - Some valid "file:" URLs were being ignored, but no longer.
    - Fixed a bug where M3U files with title information in them weren't appearing properly.
  - Internet Radio/Streaming
    - Fixed a problem where HTTP streaming from the SLIMP3 server would often disconnect unexpectedly or have other errors.
  - Linux/Solaris/Unix:
    - Updated the Unix installation.txt file.

  ## Version 3.0b7, Released 2002-10-23

  - Windows:
    - Fixed a problem with international characters in ID3 tags.
    - We weren't handling file URLs with C: in them properly...
  - Mac OS X:
    - New users are given more reasonable defaults for their playlist and library folders.
    - Fixed a problem with firmware updates on OS X 10.1.5.
    - Fixed a problem where no playlists would show up if an iTunes user didn't have a playlist directory defined.
    - If a song in an iTunes playlist doesn't have a "location" just ignore it. This previously would cause a crash.
    - iTunes users need their imported international characters translated from Unicode to LATIN1.
    - Added support for multi-disc sets in iTunes.
  - Player interface:
    - Substantially improved directory loading times when browsing the music library by inlining some routines, removing some unnecessary checks, and special-case shortcutting sorting of non-music items (directories, playlists, shortcuts, etc...)
    - Stop playing if we haven't heard back from a player in 30 seconds or more.
    - Reset the screensaver timer when we come out of Block'ed mode.
  - Web Interface
    - If a user doesn't have a playlist directory specified, don't let them try to save.
    - When browsing the music library, don't try to show a sorted navigation bar in large directories, as the sorting can be quite confused.
    - Added a user warning when renaming a playlist fails.
    - Fixed a bug where deleting tracks from shuffled playlists wasn't cool.
    - Improved sorting when browsing music library.
    - Added an additional server setting to allow sorting and browsing by file name instead of ID3 tag information.
  - File formats
    - Trim white space from the beginnings and ends of entries in playlist files as appropriate.
    - Fixed several problems handling CUE files.
  - Networking
    - Fixed two problems that caused pausing synchronized players to get out of sync.
    - Unsync when we power off.
  - Internet Radio/Streaming
    - Fixed a bug in shoutcast streams that caused the title obtained from the metadata to be cleared out occasionally. It stays put until updated explicitly again.
    - Fixed a bug where the scrolling animation was killed everytime new metadata came in even if it hasn't changed.
    - Fixed problem where using the http streaming from the server could hog the CPU.
  - Linux/Solaris/Unix:
    - Mike Arnold found a problem where upgrading the RPM could cause problems because we deleted the slimp3 user. We don't do this anymore.
  - Command Line Options & Debugging Tools
    - Firmware updates run in interactive mode will wait for the user to press return at the end. Good for GUI invocation of CLI application.
    - Only die if we are debugging, otherwise fail but don't crash.
  - HTTP and Command Line Interface Automation
    - Clarify the documentation and fix bugs with "pause" and "mode pause" commands in CLI.
  - Firmware
    - Updated to 1.3b3 firmware, which uses an appropriate source port for UDP packets from the player.
  - Miscellaneous
    - Even if the players are starved for data, run background tasks at least once a second.

  ## Version 3.0b6, Released 2002-10-15

  - Windows:
    - The SLIMP3 Server executable couldn't kill the server process on Win98 because 98 puts the process name in all upper case. It can now.
  - Mac OS X:
    - Enable support for Composer field (as an additional artist) for iTunes users.
    - When we are scanning the iTunes library, don't tell the user they can browse the music library, because they can't.
    - Fixed a problem with the ID3 library where iTunes has some ID3 tags that have spaces in the tag name. We now allow a space.
    - Fixed a problem in iTunes where multi-line comments would cause the parser to get confused.
    - New users get a reasonable default for the path to their Music Library and their Playlist folder. (Namely: /Users/name/Music/ for both).
  - Player interface:
    - Fixed a problem where pressing STOP didn't always stop the playback immediately.
    - Some work on the garbage display bug. We now correctly force the display back into 8 bit mode with every display update. If the bug happens in a particular frame, it will be repaired in the next frame.
    - When a new song starts, stop any scrolling and animation for all synced players so that the correct song information is displayed.
    - Fixed a cosmetic bug that happend with double-sized characters when the first character was an S.
    - Improved the display code to reduce the amount of processing, and number of bytes sent (especially when there's a cursor). There's still a bug somewhere (maybe in the VFD display itself) where the cursor flashes randomly on the screen occasionally.
    - Fixed the Welcome To SLIMP3 screen to work again when the server or the player restarts.
    - Fixed a problem where changing the brightness when in double-sized broke.
    - Fixing the double-height right arrow, K and N characters.
    - Fixed (I think) a problem where we were sometimes dropping stop and pause commands.
    - Clean up the custom character code to handle all possible bitmaps, improve performance (a bit), and never send bogus data to the player.
  - Web Interface
    - If the songs in a specified album have duplicate track numbers, then sort by artist first. This makes "Greatest Hits" work out better. If there are not duplicate track numbers, then sort by track number first, which makes compilation albums sort properly.
    - If there are two albums with the same title, sort the songs by artist first.
    - Removed Games setting in Advanced Server settings, as it isn't needed. Use the new Home menu editing facility.
    - Don't show duplicate songs in albums.
    - Fixed a broken link to the CLI documentation.
    - Fix a typo that made searching for songs via the web interface crash the server.
    - Fixed a missing space in the playlist template for songs.
  - File formats
    - Included the patch to support YEAR GENRE and COMMENT in CUE files.
    - Clean up of caching of track data to make CUE files work a little better.
    - CUE file entries weren't going into the genre cache. Now they are.
    - There are a couple of situations where we mean to merge in new meta information not replace it altogether. So now we do that.
  - Internet Radio/Streaming
    - Fixed shoutcast metadata display.
    - Fixed HTTP streaming (from the SLIMP3 server) to work reliably.
  - Linux/Solaris/Unix:
    - Included submitted solaris build information by Mike Arnold.
    - Included submitted patch for relocatable RPM support by Mike Arnold.
  - Command Line Options & Debugging Tools
    - Added better backtrace output.
  - HTTP and Command Line Interface Automation
    - Return a content type for status.txt of text/plain
  - Firmware
    - Updated firmware to version 1.3b2 to fix possible problems with corrupted display data
    - Removed display init on sleep wakeup
    - Removed LCD_CLEAR when displaying ICMP unreachable
    - Changed LCD packet parsing to check for ==0x02 or ==0x03, instead of just checking the two last bits. Removed support for the wait command.
  - Miscellaneous
    - The ends of songs were being cut off when we had mulitple players synced. We should allow for quite a few chunks of silence to be pre-queued when resyncing at the end of song.
    - Fixed the display of all LATIN1 characters. We don't have a full character set in the player, so we map as closely as possible.
    - Disabling UTF8 support for now. It wasn't making things much better.
    - Calculate the content type from the path name unless we've already got one. This fixes some problems with saving playlists.
    - A variety of performance optimizations to reduce overall CPU usage.

  ## Version 3.0b5, Released 2002-10-01

  - Windows:
    - Fixed a problem where Windows .lnk files wouldn't work properly.
    - The Windows shell application now can quit and leave the server running. There's a new preference for this as well as a menu choice to set it. This choice is confirmed if you have confirm turned on.
    - Use the "Bagpuss" look as the default on Windows.
  - Mac OS X:
    - The OS X application now shows the status of the server (on or off) by changing the icon on the dock and on the SLIMP3 Server main window.
    - Fixed a problem where if a user was using the iTunes importing feature,they couldn't browse their saved playlists unless they turned off iTunes support and then turned it on again.
    - The OS X application menus were cleaned up. There's now a menu choice and keyboard equivalent to start and stop the server.
    - The OS X application automatically starts the server when it launches.
    - iTunes users now get their iTunes playlists along with the other saved playlists. These are read-only, due to the one-way importing of the iTunes library information.
    - Somehow the firmware updater menu got disabled in the OS X application. Re-enabled it.
    - The OS X application displays the server status more reliably.
    - iTunes gets unhappy (and starts ripping songs as "Uknown" if you keep its library file open when it tries to write to it. So we open it and read the whole darned thing in at once and then parse it from memory. Which is faster anyways.
    - Warn the user that scanning is still happening for iTunes too.
  - Player interface:
    - Bingo! Killed the garbage character bug that was plaguing 1.3b4 firmware. The problem wasn't in the firmware, rather the server was sending a control code t that was causing some problems on the client. Removed that code and as a bonus, cleaned up how we send brightness commands.
    - Jeff Bain submitted some tweaks to the double-size characters and layout. Lookin' good!
    - Fixing bugs in synchronization: Unsyncing the master was broken, unsyncing sometimes didn't stop the audio right away.
    - Rework the 1.3 streaming code to stall out less often. We also stop scanning (and other background tasks) if the client's buffer runs below half full.
    - Disable repeated buttons, including Volume when the player is "off".
    - Fixed a problem where pressing pause in quick succession would cause things to lock up badly.
    - Saved Playlists should come right after Music Library from the remote.
    - Fade out when we sleep...
    - Disable the syncing of HTTP clients, as it doesn't really work.
    - Add song information about which ID3 tags we are using.
    - Improved animation behavior under load. We now skip frames when appropriate and check the timers before and after handling client streaming.
    - Turn the timeout used by the streaming protocol for the 1.3 firmware way down so the queue doesn't stall for so long when we drop a packet.
  - Web Interface
    - Fixed a problem added in 3.0b5 that would sometimes show a "please set up your playlists" screen when trying to save the current playlist.
    - Updated the sorting used when browsing the music library so it sorts by artist, album, track number and title, in that order.
    - We no longer throttle the scan, so we shouldn't tell the user that we do in the advanced server settings.
    - Fixed a word in the text displayed when the server doesn't know about any player.
    - You can now customize the Home menu int the "Additional Server Settings" area, courtesy RMoser.
  - Internet Radio/Streaming
    - On occasion, streaming radio connections were left open for a long time. Consolidated the closing of open files and streams to fix this.
  - Linux/Unix:
    - RPM: make sure the new slimp3 user doesn't have a home directory
    - SLIMP3 lives in /usr/local not /usr/local/bin for the RPMs
    - Try and load a system Time::HiRes before the local version.
    - We keep around the server scripts when building a release for zipping and tarring.
  - Command Line Options & Debugging Tools
    - Added --streamaddr and --playeraddr command line options to allow the caller to specify which interface to listen on for remote streaming and player UDP.
    - Fixed a bug where we weren't keeping track of the last time we went through the idle loop properly.
    - Added a bunch of additional debugging output to make monitoring of timing and performance easier.
    - Include the d_stream debug flag for debugging the new streaming protocol.
    - --d_sync Added a synch debugging flag.
    - Added the ability to turn on/off debugging flags from the command line interface. This isn't useful from the remote interface but is very useful from stdio.
    - Expose --d_stream_v for verbose stream debugging info. --d_usage shows a 0-9 digit in the rightmost part of the display on 1.3 and a 2 byte hex code on the left on 1.2. We also spit out a percentage to stderr on 1.3
  - HTTP and Command Line Interface Automation
    - Updated the CLI documentation to explain the "rescan" (old) and "path" (new) commands. Added the path command to the CLI.
    - Fixed a bug that was causing us to ignore parameters after the pause command which we hardly ever used.
    - If you put up some text on the screen with the HTTP or CLI interface for longer than a few seconds, the screen would blank and possibly get corrupted. Not anymore.
  - Miscellaneous
    - Firmware files now include version number.
    - Updated the pronto CCF file.
    - Fixed harmless warning about empty responses when we were sending empty reponses.
    - Basic unicode support is enabled.
    - Sometimes we were giving some warnings with bad ID3 tags when we tried to get the utf8 version of strings.
    - We weren't caching unknown file types, so we would keep trying to figure it out over and over even though we tried once already. This could slow us down a lot.
    - Richard Purdie submitted a patch to use a file called ~/.slimp3-strings.txt (on unix) or slimp3-strings.txt (on windows, in the same directory as your prefs file) to override some or all of the standard strings in the strings.txt file. Uses the same format.
    - Spanish localization courtesy Sr. Andy Spiers.

  ## Version 3.0b4, Released 2002-09-11

  - Windows:
    - A Windows Service is now available for use. See the Getting Started.txt file for details.
    - Fixed a bug where the server was hogging lots of CPU time.
    - Removed a harmless warning about mas3507d.
    - No longer display the .lnk suffix for Windows shortcuts.
    - The server process is now launched with high priority from the shell application.
  - Mac OS X:
    - Fixed a bug in the built-in firmware updater that could cause the application to hang if the user didn't type in an IP address.
    - iTunes shows up defaulted on in the server settings the first time properly.
    - Removed warnings about no valid mp3 directory in settings even if the user was using iTunes
  - Player interface:
    - Returning to "Now Playing" from viewing song details often would return to the wrong song.
  - Web Interface
    - The playlist renaming button is now more clearly lableled as "Rename" or "Save".
    - If the user names their player, then show that name prominently.
    - Fixed bug: 605484, where bad entries in playlists made playback of individual songs from that playlist often wrong.
    - Cleaned up the layout of the song information page.
    - Fixed major performance problems when streaming HTTP audio from the SLIMP3 server at: http://server:9000/stream.mp3
  - Internet Radio/Streaming
    - Added support for password protected (basic authentication) HTTP streams.
  - Linux/Unix:
    - Updated the RPM to be relocatable, and defaults back to installing the server in /usr/local/bin/slimp3
    - Include the firmware updater with Linux/Unix releases.
    - Set the execute bit for the slimp3.pl and update_firmware.pl executables.
    - Fixed bad version information for several architectures, including i586-linux
  - Command Line Options & Debugging Tools
    - Made the scanning debugging flag available from the command line.
    - Use the existing file: URL parser in Scan.pm whenever possible.
    - Made a warning about bad URLs a debugging string.
    - Made the backtrace dumper go back even farther.
    - Fixed the warnings that appeared when starting the server for the first time without a preferences file.
    - The --volume option is obsolete and was removed from the usage information.
  - HTTP and Command Line Interface Automation
    - Fixed a bug where if you didn't give a value for a pref, it would complain.
  - Miscellaneous
    - Fixed a problem where bad ID3 tags could cause the server to use insane amounts of memory.
    - Updated the CPAN MP3::Info module to the latest release.

  ## Version 3.0b3, Released 2002-09-06

  - Windows:
    - Updated version information correctly.
  - Mac OS X:
    - Added a firmware upgrader to the SLIMP3 Server application. Choose "Update firmware..." from the "File" menu to update your player's firmware.
  - Player interface:
    - Fixed a major problem where searching for individual songs and then trying to play them didn't work.

  ## Version 3.0b2 Release 2002-09-04

  - Windows:
    - Fixed a problem where the SLIMP3 Server application wouldn't launch under NT.
    - Windows 98 prefers 16 color icons, so we provide one now.
  - MacOS X:
    - 10.2 Server compatibility bugs have been fixed in the OS X standalone application.
    - The server now automatically detects when the iTunes library has changed and reloads it.
  - Linux:
    - Updated RPM to fix dependency issues.
    - Updated RPM to make slimp3 user have appropriate home directory.
    - Moved installed code to /opt instead of /usr/local/
    - Also building a source RPM.
    - Fixed a problem with the Time::HiRes module on i586 not having the right version number.
  - Command line:
    - Several additional debugging command line items were omitted from the --help information.
    - The server.pl executable is now called slimp3.pl
  - Internet Streaming:
    - Funny characters like ' now work in the metadata that's included with icecast streams.
    - Fixed a problem where HTTP streaming from the server was consuming too much CPU power.
  - Player interface:
    - Show some feedback on the display when we fail to open a stream or file.
  - Web Interface:
    - There is now an advanced server setting for adjusting the maximum UDP data payload size.

  ## Version 3.0b1 Release 2002-08-29

  - Windows:
    - There is a standalone application for upgrading the SLIMP3 player firmware.
    - Windows users now have a standalone application. They no longer need to install ActiveState Perl.
  - MacOS X:
    - 10.2 compatability bugs have been fixed in the OS X standalone application.
    - MacOS X: The SLIMP3 server software will automatically sync with the iTunes 3.0 music library.
  - Linux:
    - Added a RedHat RPM.
  - Bugs:
    - Fixed a problem where zero length MP3 files would crash the server.
    - Fixed several bugs related to the use of URLs in playlists.
    - Fixed several problems where the server would hog processor time.
  - Command line:
    - Debugging flags have been changed to be clearer. ./slimp3 --help for more information.
    - Several important command line items were omitted from the --help information.
    - Commands can be sent to the server from the command line after the server has started.
  - Internet Streaming:
    - Streaming Internet radio station playback is much more robust.
    - The SLIMP3 server can now stream to HTTP-streaming capable programs. Use: http://server:9000/stream.mp3 as the URL. You can control the stream from the web interface. Note: The latency can be quite high, depending on the size of the buffers on th e receiving applcation.
  - Localization:
    - Added Finnish strings.
  - Other:
    - Multiple player synchronization is more robust now.
    - Infrared codes are configured within the IR directory.
    - Sparc Linux support added
    - The server supports a command-line style interface, useful for home automation installations, including Crestron. See the online technical documentation for details.
  - Player Interface:
    - Moved the items in the "Browse Music" menu to the top "Home" level.
    - The Music Library is now called the Music Folder.
    - There is now "Settings" area available from the player interface.
    - You can adjust the time or cancel sleep with the Sleep button on the remote.
    - You can navigate right into the Artist, Album or Genre from within a song.
  - Web Interface:
    - There is a rescan button on the server settings page. Pressing this button will rescan your music library folder.
    - Fixed a problem with relative URLs that confused Opera.
    - The documentation is now available via the web interface.
  - Firmware V1.3a4 (new since V1.2):
    - The server now has robust support for the new player firmware (version 1.3).
    - Fixed a bug which was causing problems with Linksys DHCP servers
    - Fixed sporadic resets when the player loses contact with the server
    - New streaming protocol - provides the server with greater control over buffering
    - New kiosk mode lets the player start up instantaneously, skipping the splash screen and setup menus
    - Added timeout on the setup screen. If nothing is pressed for 15 seconds, the player continues with startup.
    - Player now ignores Slim Protocol packets coming from anyone except its designated server.
    - Changed the text on the splash screen

## Version 2.3 Release 05/19/02

- Multiple players can now synchronize their audio outputs to within 1 millisecond of each other. This allows you to play the same music in more than one room, without any "reverb" effect. If the server knows about more than one client, there is a Sync hronization choice in SLIMP3 Home. Press RIGHT to enter that area. Scroll through the other players and press RIGHT to sync up. Press right again to unsync.
- Dean has created a new MacOSX tool for starting and stopping the SLIMP3 server. We are now distributing a MacOSX version of the server in .dmg format. Just drag the icon to your hard disk to install. You can also put it in the dock. The server keeps running after you log out.

## Version 2.2 Release 04/17/02

- Split large playlists into multiple pages in the web interface
- Background scanning no longer slows down the user interface
- Eliminated UI lag when playing remote shoutcast streams
- Added status indicator when building huge playlists
- Fixed bug where timer events would get duplicated if the system's clock is moved backward

## Version 2.1 Released 3/15/02

- Added some new skins to the web interface: Bagpuss, Ruttenberg, Dark, and Experimental
- New search feature: search for artists, albums or songs, both from the web interface and the remote
- Java volume slider allows real-time control of the SLIMP3's volume from the web interface (Ruttenberg and Experimental skins only)
- New double-size display mode (screenshot coming)
- Can save playlists from the web interface
- Song titles sent with Shoutcast streams are used if present
- The format of the display's second line can now be changed easily from the web interface or by editing .slimp3.pref
- Mute button on remote works
- On Windows, added support for Windows shortcuts
- On Windows, prefs are now saved in the same directory as the application, to prevent issues where c:\winnt is not writeable on some systems
- Removed the setup.pl utility. Setup is now done using the web interface.
- GAMES! go to the server setting menu to enable the games: Space Shooter and SlimTris

## Version 2.0 Released 2/16/02

- The server now scans the mp3 files at startup, and builds an index of all the ID3 information
- There are three new browsing hierarchies:
  - Genres/Artists/Albums/Tracks
  - Artists/Albums/Tracks
  - Albums/Tracks
- New web interface features:
  - Easily customized "skins" (screenshot)
  - Localization
  - New pop-up menu to choose between multiple players (screenshot)
- New setup interface:
  - setup.pl is no longer needed. Now, you can do all the setup (choosing language, etc.) from the web interface.
  - new "advanced settings" menu (screenshot)

## Version 1.8 Released 1/1/02

- Volume control is now supported on the remote (see README.REMOTE)
- New top level to choose between browsing and playlist view
- Improved setup.pl
- Added Italian and Portuguese, for a total of nine languages
- Fixed server crash when TCP stream target unreachable
- Fixed yen sign instead of slash on Windows
- VFD can now dim all the way down, even when playing
- No longer displays track number when it's zero

## Version 1.7 Released 12/2/01

- UI improvements,
- live365 streaming,
- localization,
- improved playlist management,
- display scrolling.

## Version 1.6 Released 10/16/01

- Dan Sully's rewrite, Dean's HTTP server,
- shoutcast streaming,
- ID3 support.

## Version 1.0.1 Released 9/20/01

- Fix OS detection on Win 2000 and NT.

## Version 1.0 Released 9/16/01

- First Release