## 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.
  - bug 552: 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 bug 626 - 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 bug 561 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.
  - bug 593: 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.
    - bug 440 - 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: Bug 256 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.
    - Bug 458 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.
    - Bug 313 - 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. <l>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.