http://www.jempeg.org/jemplode20-area51.jar

I'm not keeping backups of the preprereleases, so if you're concerned, keep a copy around.

Changes in Pre 3:
1) Fixed a bunch of border cases with on-empeg soups. I'm curious to get comments from people who just run this on their existing soups -- Does it cause problems? Does it just clean up? If you have problems, remember you can turn off soup updating in Optiosn, quit and reload, and delete all your soups, turn the option back on, and restart and they will regenerate.

2) "refs" dynamically updates (so if you have a refs = 0 soup, it will keep in sync as refs change)

3) fixed all sorts of tricky problems with layered soups (hopefully will fix zero-ref playlists that a couple people saw)

4) you can delete from soups now

5) added new "auto-sort on import" options. This makes it so that if you import into a playlist, it will automatically resort all affected playlists by whatever tag you want. The tag input right now is a textfield -- i'll switch to a combobox later.

6) "Force Check Media" under Tools ... I honestly am not sure if this is working. It calls the Empeg API for fscking, so I assume it is, but sinec I don't have anything to clean up, it returns almost immediately. I'm too lazy to actually leave the drive "unclean". So if you care about this feature, try it out and let me know.

7) Selection foreground hopefully will be light or dark enough everywhere. I use tms's HSB calculation to figure out the luminance of the default selection foreground and adjust the colorized selection foreground accordingly.

8) Optimizations added to getContainerChild(String _name) because the soup containers are sorted.

9) Added "First Letter Tag Layer" to Add Soup Playlist ... This will create a layer in soups whose name is the first letter of the selected tag, so if you wanted a soup that was:
By Artist=>A=>Aerosmith, you would do "Add First Letter Tag Layer=>Artist","Add Tag Layer=>Artist". If you just add the first one (i.e. just a first letter layer), you will end of with a soup "Soup=>A=>Aardvark Tune" where all your tunes whose artist start with "A" are in the A playlist. Adding a second By Artist layer will subdivide it further with the actual full artist name.

Known Issues:
1) "refs" dynamically updates, but if you copy-and-paste from a soup playlist that has a search based on refs, and by pasting you change the refs and the nodes are removed, the copy-and-paste has issues (since it is actually updating while you're pasting, so the selection is changing behind the scenes). For instance, if you have a refs = 0 soup and you copy-and-paste out of it into a normal playlist, the refs increase thus changing the selected nodes so that they are ref = 1. I'll work on this -- probably backwards copy-paste will work.

2) Soups foreground color is always dark gray.