This is a high-level list of Gamut changes. For a detailed view, see the SVN repository. * The present Added a --lang argument to Testbench, like the one Gamut has. * release 0.4.1 Fixed a race condition that would sometimes erroneously tell players that they were not authorized to play. Updated the Gamut and Testbench SVGCanvas classes to implement the getMimeTypes() method that an updated Batik 1.7b abstract class wants. Improved adherence to Jabber XEP-0115. * release 0.4.0 Table window displays the payment status of the game, as described by the payment protocol. The roster window now allows you to chat with an offline user. (The messages will be stored at the user's server until he logs on -- this is standard Jabber behavior.) Added a "demo" authorization status. Fetch game resource lists from the bookkeeper. Added a "Stats" button to the table window. If you're holding the scroll bar up in a message pane, new messages will not autoscroll you to the bottom. Added a "Chat With User..." menu option to the main Chat menu. This lets you chat with a user by JID. Timestamps on delayed invitations and private messages are now displayed correctly. Gamut now correctly responds to game_verify requests from the bookkeeper. Gamut now includes a "Volity-Identity: JID" HTTP header in all Game Finder requests. (If you're logged in.) Added a VerificationManager class, which watches for the payment-protocol RPCs (notify_game_record, verify_game, game_player_reauthorized). Only the bookkeeper is allowed to send these, and it doesn't, so there is no visible change at this time. Rearranged the org.volity.jabber RPC classes a little, so that they return an RPC fault to all unknown and illegal RPCs. (Previously, rejected RPCs could be dropped on the floor.) Moved the "volity" token table to a property file (TokenVolity.properties in the properties directory) for easier localization. Added the volity.message() RPC handler. More localization: new-table/join-table dialogs, invitation dialogs, roster-add dialog, join-MUC dialogs, contextual menus, help pane. Logging in with Unicode-based usernames works better. (This was largely due to changes we made in our fork of the Smack libraries.) * release 0.3.8 More localization: table window, chat window, roster window, connect dialog, prefs dialog. Spanish translation for all of these, as well as the menus, courtesy of Javier Diaz Reinoso. (More to come.) Very preliminary localization support. The app menus are now built from a property bundle, instead of from hardcoded strings. Only English is supported, so you won't see anything new, but the framework is there now. Upgraded to the latest Batik, and to Rhino (ECMAScript library) version 1.6. The squashed-input-pane on Win/Linux is fixed! Only now, the input pane on Mac defaults to two lines high. I declare this to be okay. (Note that the table window size preference is reset with this release, so that people don't inherit the bug from previous versions.) Cmd-I is now "Game Info". And there's a "Request Bot" button in the game window. * release 0.3.7 Added a "nicknames" field to the Seat object you get in the ECMAScript UI. So you can do info.gameseats[0].nicknames. (This puts us at ECMAScript API 3.2.) Added a "Request Bot From..." menu option, for when the bookkeeper doesn't know about your bot. Gamut now supports the new bot and bot factory API. If a parlor supplies a list of bots, Gamut will let you choose one; if the parlor supplies bot factories, the client will query them and display the bots they have available. If no bots are available, the "invite bot" menu option will be greyed out. Old-style parlors will get the old-style behavior (a single "invite bot" menu option, whether they offer bots or not). Added a "Remember password" option to connect dialog box. * release 0.3.6 Draft of code to launch a browser on Unix platforms. Display bots on your roster with a green Bot icon; you can also now invite them to games. (This is only relevant for ronin bots.) Also fixed a bug where if a parlor had bots running, it could show the wrong roster icon. Added nice icons for the two Finder buttons. Also changed the name of the first button to "Game List". When run as part of a Mac app bundle, Gamut will now receive volity: URL events. (Does not work if you run Gamut as a plain JAR file!) Better error reporting if the user fails to authenticate with Jabber. If you start Gamut with "--url volity:..." in the command-line arguments, the command will be executed. (See the wiki for the command forms; there are create-table, join-table, and join-lobby commands currently.) If Gamut is already running, the Gamut you execute will transmit the command to the existing process (and then shut down). Made scroll-wheel scrolling in the game finder (and help menu) work at a reasonable rate. Added a preference for whether the game finder always opens on startup, never opens on startup, or whether it remembers whether you had it open last time (the original behavior). The default for this preference is "remember" on Mac, "always" on Windows, "always" on Linux. * release 0.3.5 Added a "Playing This Game" menu item, which goes to a game-specified page (via the Finder). Added a "Gamut Help" menu item (under the Help menu, which is new for non-Windows users). This goes to: . Upgraded to R6-pre1 of Flying Saucer (the XHTML widget). There is a small code change involved with this, so you must download that version of FS in order to build Volity. The ReadMe_Build file has been updated to reflect this. Added support for URLs using the "volity:" scheme in the Finder, and also in game UI SVG. These can cause your client to create a new table, join an existing table, or join a lobby (MUC). Suppressed the Batik defaults of panning the SVG pane when the user types arrow keys (and zooming on ctrl-I/ctrl-O, etc.) Implemented the info.ruleset field, which returns the game's ruleset URI. (This will be helpful for UIs that support several rulesets.) In Testbench, info.ruleset will find the first volity:ruleset line in the UI's metadata. Changed the way (private) chat messages are sent. Gamut now tries to remember the last resource that sent you a message, and sends replies back to that resource. Added a "Forgot your password?" button to the Connect dialog. Fixed a bug in resizing the Finder window on Windows. * release 0.3.4 This release actually has no code changes; it addresses an issue specific to the Mac OS X version, where textflow paragraphs would flow *up* instead of down when Gamut is run with Apple's latest Java release. A change we've made to the Mac bundle's Info.plist file runs Gamut with an older Java instead. We're currently investigating a cleaner fix to this problem. * release 0.3.3 The Finder window now polls the web page periodically (every 30 seconds) to see if it has changed. Andrew Plotkin's new "blue-and-green V" icon debuts with this release. It is based on the Volity Games "playing card" logo designed by Rob Oliver, now evident at . * release 0.3.2 Starting with this release, this application is now called Volity Gamut. (It remains "Javolin" in earlier release notes.) Several improvements to the MUC window. You no longer get redundant "player has joined" messages if someone's client sends multiple presence packets. Names in the user list no longer wrap if the panel is too narrow; also, you can drag them (as per the usual JID drag-drop mechanisms.) URLs in chat windows are now recognized, colored blue, underlined, and if you click on one it's sent to your web brower. (Should this be a preference?) If you register a new volity.net account, Gamut now updates your name and email address in the Volity database, by sending a VCard. Also reworded the connect dialog help text. * release 0.3.1 All dialog boxes now have alerts like "You must enter a user name" if you leave an important field blank. Finder window has "Top" and "Reload" buttons. Added a "Stats" button in the roster window titlebar. The roster context menu is now consistent with the other popup menus. (The code has been moved out to a RosterContextMenu class.) You can drag any user into a table's seating panel; this pops up an invitation dialog. (Unless he's already sitting at the table, in which case it counts as a reseating request instead. This is surprising in some strange cases, but I don't plan to worry about it.) The invitation system has been seriously reworked. Invitations can now be sent out in Jabber message packets, which means that (1) the message can go to any client, and (2) the invitation will show up as plain text if you're not using a Volity-aware client. This means that the whole "add user to your roster before you invite him" aberration is gone. You can invite anybody. (Although if someone is on your roster, inviting him will work *better* in some ways.) User context menus now have an "Invite to Game" submenu, listing the games you're currently in. (The roster window menu doesn't have this yet, but I'll get to it.) User context menus now have an "Add to Roster..." item. (Dimmed if the person is on your roster already.) * release 0.3.0 Games that take an arbitrary number of players (Fluxx, etc) now display a nameless empty seat panel. (If there are indeed any empty hidden seats.) This panel is just a drag target; if you sit in it, you get a real seat. For games that use resources (currently Aquarius), "Select New Resource" has been added to the Game menu. "Select New Interface" is now a menu option under the Game menu. It lets you choose a new interface for the game you're playing, either from the bookkeeper list, from a disk file, or by typing in a URL. Also added "Restart Interface" under the Debug menu, and made "Reload Interface" reload the UI from the original source. ("Restart" does what "Reload" used to do. Got it?) The UI-selection interface is completely rewritten. It will mostly work like it used to, but you have preference options if you want to see an explicit "choose a UI" dialog box more often. Your seat mark now also appears in the window title bar. (After the game name.) This makes it easier to see when it's your turn in Windows, if you have the window iconified. (Would like to do something similar in the OSX Dock, but I don't know how.) Completely rewrote the Bookkeeper class to have async APIs. (This required me to write a batch equivalent of DiscoBackground, if that means anything to you.) The make-table sequence is one step closer to being completely async. The UI-selection function is all that remains; and that only blocks on user input, not on network requests. There is now a "File Bug Report" menu item in the "Debug" menu. It just sends your browser to the beta bug report page. Big menu rearrangement. Debugging items have been moved to a "Debug" menu. Keyboard shortcuts have been rethought from scratch -- many changes. There is a "Close Window" item. All contextual menus on people now have a "Game Stats" item. This sends your browser to the Volity.net page with the selected user's game standings. Name colors (finally!) change to match the seat color. Chat windows now let you pop up a contextual menu on (most) user messages. The menu currently contains only a "Chat With User..." item, but we can add more items as we think of them. Seat panels are now tinted according to the color of the seat. (The coloring is controlled by the UI file's metadata -- the "volity:seat-color" entry.) UIFileCache now accepts Zip files which don't explicitly name the directories to be created. If you click on a Finder command link when you're disconnected (or if you have your OS set to launch Javolin from stub files), you will now get a connection dialog. The command will fire when you finish connecting. The help icon (in the bottom corner of the table window) is now a button. Added the metadata() function to the ECMAScript API. * release 0.2.8 The Game Info window now has a tab for every resource file loaded by the current UI. The supported version of Smack has been upgraded. This fixes a bad interaction with iChat. Please get the latest version of Smack from Volity's SVN repository or from http://volity.org/projects/javolin/buildlib/. Javolin now reads metadata. (So does Testbench.) The Game Info dialog displays whatever metadata is present and recognized. * release 0.2.7 This is strictly a bugfix release. Actually, it is a jmac-screwed-up-the- build-last-time release. He apologizes. This release includes a game finder that works on Windows, and includes the MP3 libraries that were supposed to be included several builds ago. * release 0.2.6 The supported version of Batik has been upgraded to revision 379046. This fixes a problem with in an SVG 1.2 document. The UI cache is now much better at weird cases where someone deletes files or directories by hand. There is now a "clear interface cache" menu item. The cache now tries to send headers which will punch through overly-smart web proxies. Also, it does a HEAD request when comparing file modification times. The table window now shows dynamic help in the bottom right corner. You can hide this panel from the "Game" tab of the Preferences. The Game Finder's User-Agent will now be set to a Javolin version number followed by a Java version number. E.g.: "Javolin/0.2.5 Java/1.4.2_09" If the game finder manages to generate bad XHTML, the Finder window will show a tidy error instead of crashing and closing. This error page contains a link to the bug-report form. Bots and referees now get distinct icons in the seating chart. I also made the "ready" checkmark a distinct icon; it's no longer superimposed on the player icon. Contextual menus for players in the seating chart. You can chat with them, sit them down, stand them up. * release 0.2.5 More nasty memory leaks found, and subsequently plugged. * release 0.2.4 The ugly running-out-of-memory bug that afflicted Javolin is now -- I hope -- fixed. You can now set a system property "org.volity.bookkeeper" to choose a bookkeeper to talk to. That is to say: java -Dorg.volity.bookkeeper=foo@volity.net -ea -jar Javolin.jar The Invitation window (when you get one, not when you send one) is now a free-floating window. It appears in the Window menu, too. Lots of different alert noises. And preferences to silence them. Javolin now starts up with the Finder window open, *unless* you closed the Finder before shutting down last time. Yes, the Finder is slow. Sorry. All referee RPCs are now async. This should improve the responsiveness of the client -- it won't freeze up when you push the "ready" or "seat" buttons. MUC and table window chat logs will now show " has joined/left the chat" messages. Possibly fixed bugs with chat messages failing to appear, or appearing twice. Regularized the Join MUC process, and made it produce much nicer error messages. All dialog boxes that ask you for a JID now accept a simple name ("zarf") instead of a JID ("zarf@volity.net"). You could also type "devchat" into the Join MUC dialog instead of "devchat@conference.volity.net". Added a "Suspend Table" menu item. * release 0.2.3 The Finder window will launch any URLs that don't start with "http://{www.}volity.net/gamefinder" to the user's external browser. Launching URLs may now work on Windows, too, although I haven't tested it. (URLs can be launched from the About window, the Finder, or any UI SVG code that has a hyperlink.) The seatmark() UI function works. A UI can place a mark on any (or all) seats, to indicate whose turn it is (or whatever). Your name is marked in the seating display (by a black dot). Your current seat is also marked (by having the seat name in the same highlight color as your name). The UI can read info.version to determine what UI functions and fields are available. (Current version is 3.) * release 0.2.2 Changelog begins.