SLIMP3 Server Release Notes

# SLIMP3 Software Release Notes

## 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

Copyright © 2001 Slim Devices, Inc. All Rights Reserved.