Juggling Lab change notes

Release 0.6.2 (May 20, 2014)

> New features | None
> Bug fixes | Fixed bug in "exclude these expressions" part of siteswap generator. Fixed performance issue in PatternList.
> Other changes | Included Windows native executables (`Juggling Lab.exe` and `j2.exe`) in the Windows distribution. Added more informative help message, and documentation, for command-line siteswap generator. Distributing the source code as a simple directory instead of a jar file. Added dialog explaining that saving animated GIF is only available in Simple view.

Release 0.6.1 (October 11, 2011)

> New features | Added user interface support for right-to-left languages such as Hebrew and Arabic. User interface elements invert when the default system language is right-to-left. This behavior can be explicitly triggered by for example launching Juggling Lab with: `java -Duser.language=he -jar JugglingLab.jar` Added support for UTF-8 encoded properties files, to make localization into non-Roman scripts easier. Added `locale` setting to applet configuration, to override the system default languge. Changed JML syntax to make it fully XML-compliant; new version is called JML 1.2. Added Convert JML menu item to application, which converts JML files to version 1.2.
> Bug fixes | Added better error-checking to prop color assignment parser (1362999). Improved quality of error message on siteswap parsing errors (2878097). Refactored UI messages and error messages to use templates, improving our ability to localize them. Passing patterns now default to Simple view instead of Edit view, since the latter doesn't properly work with passing patterns (3160246). Moved grip location of rings from geometrical center of the ring (the hole) to the edge, to appear more natural. Fixed auto-scaling of the animation, so the props and jugglers are better sized and positioned within the view. For patterns with more than 3 jugglers, increased the default spacing between jugglers to eliminate overlaps in the hands. Fixed bugs in Save As HTML output. Fixed internal error when animating siteswap patterns containing only 1s, along with a defined hand movement like half shower (1032779 -- bug logged in 2004!). Fixed uncaught exception from parsing lexical errors due to unrecognized characters (2837873).
> Other changes | Removed idx3d library and 3d rendering mode, making Juggling Lab fully open source. Removed Jakarta regular expression library; using Java regular expression library instead. Removed AElfred XML parser; using Java XML parser instead. Removed Acme labs IntHashtable class; using Java Hashtable instead. Removed support for legacy parameters `mat_style`, `mat_HR`, and `mat_DR`. Added bookmarklet to home page.

Release 0.6 (March 25, 2010)

> New features | None.
> Bug fixes | Fixed bug under Windows XP: Application could not be quit using the traditional method of clicking the close icon ("red X") in the corner of the main window. (Herve Nicol)
> Other changes | Changed `siteswap.php` to generate animations with ladder diagrams. Removed support for Java 1.1. Removed `old_siteswap` notation. Removed experimental functionality to directly upload JML files to a wiki. The preferred approach is to use the `<juggle>` tag used by JuggleWiki. Reorganized a lot of the documentation.

Release 0.5.3 (September 19, 2004)

> New features | Complete rewrite of the siteswap parser, incorporating the following new features: (1) mixed asynch/synch notation, (2) sub-pattern repeats, and (3) simplified passing notation. See the updated siteswap notation documentation for more details. (For now, the old siteswap parser has been retained as "Siteswap_old", available from the Notation menu.) Ability to select a prop type in the siteswap input panel. (Jason Haslam)
> Bug fixes | None.
> Other changes | Added zip-formatted distribution for Windows users. Created source code documentation using Doxygen. (Johannes Waldmann) Moved source code and source code documentation into a separate distribution file.

Release 0.5.2 (July 16, 2004)

> New features | Preview of new ring prop type, accessible from the "Define prop..." popup menu item in the visual editor. Example in the demo area. (Jason Haslam)
> Bug fixes | Fixed internal errors when doing regular expression filtering in siteswap generator, introduced in version 0.5.1 as result of code restructuring. Fixed problem with animated GIF saving -- feature was inadvertently disabled. Fixed internal errors caused by potential security restrictions when accessing remote images in the image prop.
> Other changes | When running as an application, the siteswap generator now sends its output to a new window rather than the "Pattern List" tab. This restores the capability to save generator output as text or JML files. (Thanks to Sean Gandini for this catch.)

Release 0.5.1 (July 10, 2004)

> New features | New "Image" prop type, which displays user-specified bitmapped image as a prop. Accessible from the "Define prop..." popup menu item in the visual editor. (Jason Haslam) Added support for Ben Beever's '*' notation to repeat a synch pattern with switched hands. For example, `(6x,4)*` is now identical to `(6x,4)(4,6x)`. (Rupert Millard) Siteswap generator now allows period ranges to be entered, e.g. "1-5", "-5", "5-". An upper limit must be specified unless searching for prime patterns. Leave the "period" field empty to find all patterns, regardless of period. Also, you can now leave the "max. throw" field empty to turn off the max. throw restriction. Siteswap generator now runs in the background, so that the user interface isn't blocked during long searches. (Jason Haslam)
> Bug fixes | Fixed internal errors caused by bug in ladder diagram portion of visual editor. (Jason Haslam) Fixed internal errors caused by specifying a negative "max throw" generator setting. Fixed internal errors caused by out-of-range juggler and path numbers when reading JML files.
> Other changes | Replaced Jack's lame bouncing-ball audio sample with a much better one from Vincent Bruel. Added a "siteswap2" notation to the "Notation" menu, currently nonfunctional and for development purposes only.

Release 0.5 (April 2, 2004)

> New features | Applet can upload a JML file to a server, enabling the Juggling Lab Wiki. Applet can load and display pattern-type JML files, in addition to JML pattern lists. Applet can launch an editing window that contains menus and nearly the full functionality of the standalone application.
> Bug fixes | Fixed bug in siteswap generator code to find starting and ending sequences; bug was responsible for internal error messages. Fixed bug in siteswap parser that caused some bounce throws to be read incorrectly.
> Other changes | Added "side by side" body position to siteswap input panel. Changed the applet calling parameters, and updated the applet documentation accordingly.

Release 0.4.1 (February 22, 2004)

> New features | Created translations of GUI text for Spanish (Jason Haslam), Portuguese (Jason Haslam), and French (Xavier Verne); the software determines the language based on your system (typically OS) language settings. Added antialiased drawing in the 2d renderer for Java installations that support it (Java 1.2 and higher). Added regular expressions package to siteswap generator, allowing the user to specify more sophisticated exclusion/inclusion search criteria. This feature and the next three are discussed in the siteswap generator documentation. Added siteswap generator option to generate only passing patterns that are connected. Added siteswap generator option to generate only multiplexing patterns containing at least one true multiplex throw. Siteswap generator by default now avoids generating duplicate passing patterns where the jugglers have simply been permuted, unless requested by the user.
> Bug fixes | Fixed bug in siteswap generator that displayed rotations of composite passing siteswaps as distinct patterns.
> Other changes | Used Java internationalization framework to isolate all language-specific user interface elements into external properties files (called `GUIStrings.properties` and `ErrorStrings.properties` for GUI text and error messages, respectively). (Jason Haslam) Removed "exclude these passes" element from siteswap generator control panel; this functionality is now provided by the new improved exclusion/inclusion search capability.

Release 0.4 (January 10, 2004)

> New features | Multiple simultaneous catches in the same hand are now staggered in time. Multiple catches occur in some multiplexed patterns; see this example. The transitions in the visual editor ladder diagram are now colored the same as the balls they represent. (Jason Haslam) Added optional sounds for catching and bouncing. By default, bounce sounds are on and catch sounds are off; these settings can be adjusted in the "Animation Preferences" dialog, or in an applet call via the `catchsound` and `bouncesound` animation variables. (Note: These sounds are not available within `JugglingLabAWT`.) Rewrote siteswap generator code that finds start/end sequences for excited state patterns; the shortest possible sequences are now generated in all cases. Added "manual settings" entry box on siteswap input panel, and updated documentation accordingly. On Mac OS X application version, double-clicking JML files in the Finder now opens them in Juggling Lab (and starts the application, if it isn't running).
> Bug fixes | Fixed the artifacts that sometimes appeared in the top border of the visual editor ladder diagram on throws to the same hand. (Jason Haslam) Fixed `bouncefrac` setting bug with bounced siteswap patterns, which caused other bounce parameters (e.g., number of bounces) to be overridden. Fixed physical placement of new events manually added to ladder diagram (using Edit View popup menu). Fixed internal errors caused when user enters incorrectly-formatted text in siteswap generator control panel.
> Other changes | Removed siteswap generator limitation that the max throw height could not be smaller than the number of balls, a reasonable situation when searching for multiplexed patterns. The applet `patternfile` parameter used to specify a JML pattern file is now specified relative to the HTML page, not the JAR file.

Release 0.3.11 (December 27, 2003)

> New features | Added support for "hyperlift" and "hyperforce" bouncing; see the siteswap notation documentation for an explanation of how to use these within siteswap patterns. Added support for bounced throws with more than one bounce. Added a PHP front end to Juggling Lab, and added a page of instructions.
> Bug fixes | Fixed `-n` and `-no` flags in `j2` command-line siteswap generator. Fixed internal error in ladder diagram code when user deselects the pop-up menu (Jason Haslam).
> Other changes | Made check for Java 1.2 in `ballProp` more efficient.

Release 0.3.10 (November 23, 2003)

> New features | None.
> Bug fixes | Fixed clipping of event location graphic (the green box) in the animator, when using the visual editor.
> Other changes | Included MS-DOS/Unix scripts for running the siteswap generator from the command line; these are called `j2` and are available in the `bin` directory. Clarified the terms of the Juggling Lab license, most importantly the provision to make source code available. Included `build.xml` for building Juggling Lab using the Apache Ant cross-platform Java build tool. Included files to build the Mac OS X version of Juggling Lab into the Mac distribution. Reorganized directory structure.

Release 0.3.9 (November 2, 2003)

> New features | Balls now have transparent background, rather than square white background, when running on Java 1.2 or higher. Added "highlight" parameter for balls, accessible from "mod" setting of JML <prop> tag, or in the visual editor under "Define Prop...". Added menu option to save pattern lists as text (existing save option writes in JML format). This feature is probably most useful for saving lists of generated siteswaps.
> Bug fixes | Fixed problem with `JugglingLabAWTApplet` in Internet Explorer when using Microsoft's VM. Problem caused by upgrade to JDK 1.4 compiler, which is not backward-compatible with Microsoft's VM unless compiler target setting is used properly. Fixed bug when animating passing siteswap patterns -- '<' and '>' characters in pattern title were confusing the JML parser. Made the generator "Run" button the default button when in the "Generator" panel. (The default button is the one activated by hitting the return key.)
> Other changes | Added list of Juggling Lab contributors to main page.

Release 0.3.8 (September 23, 2003)

> New features | None
> Bug fixes | Fixed bug that affected multi-line patterns (i.e., those containing carriage returns or linefeeds); solution required slight adjustment to handling of output from the siteswap generator.
> Other changes | None

Release 0.3.7 (September 19, 2003)

> New features | Added stereo display mode, which shows a pair of images that give depth perception to the animation under "cross-eyed" viewing (i.e., cross your eyes slightly so that the images appear to merge). This feature is available in the Animation Preferences panel, or in the "animprefs" setting. See the examples. Added support for more than 9 jugglers in siteswap patterns; notation is to use 'a' for juggler 10, 'b' for juggler 11, and so on, for a maximum of 35 jugglers. Made file open/save dialogs default to the Juggling Lab directory on first use, and the last directory on subsequent uses. Allow carriage returns and linefeeds in applet "pattern" parameter, so that text for hands, body, etc. settings can extend across multiple lines.
> Bug fixes | Fixed major bug in siteswap "hands" setting when 't' and 'c' specifiers are used. Fixed problem with legacy "mat_style" setting when used with synchronous patterns. Added error check to ensure that throw/catch coordinates are specified in "hands" setting. Turned off ladder diagram for passing patterns (ladder diagram does not currently support passing). Fixed a startup problem that caused the Java 2 version of the applet (`JugglingLab.class`) to not initialize the animation correctly on some JVMs. Fixed a problem when lists of passing siteswap patterns were saved and reloaded; required a change to the pattern list JML format (see below).
> Other changes | Changed the pattern list JML format substantially. Added "animprefs" and "pattern" attributes to the "line" tag. This allows you to change the animation settings on a pattern-by-pattern basis, and also ensures that the patterns display identically under both the application and the applet. The applet "animprefs" parameter is now ignored when loading a patternlist. Under Mac OS X, using java.awt.FileDialog class instead of javax.swing.JFileChooser in order to look more like a native application. Adjusted default spacing between bodies in passing patterns with many jugglers, in order to reduce physical overlap.

Release 0.3.6 (August 21, 2003)

> New features | Expanded format of "hands" setting in siteswap notation, to allow for multiple jugglers and increased time resolution. Updated documentation accordingly. Created new "body" setting in siteswap notation, to set locations of jugglers in time. Updated documentation accordingly. Added "Body movement" input box on siteswap notation control panel to make it easier to experiment with the "body" setting. Eliminated creation of new objects while animating in 2d mode by using an object pool. Now causes fewer garbage collects under normal operation.
> Bug fixes | Fixed bug in calculating the physical center of the pattern, which resulted in strange behavior during camera rotation.
> Other changes | Changed format of "hands" setting to be more compact, readable, and consistent with the new "body" setting. Made XYZ coordinate axes visible in camera-drag mode display only after mouse drag begins.
> Known issues | Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back 3d display mode is relatively slow; likely an opportunity to optimize polygon count. Juggler head vanishes or displays strangely when exactly edge-on.

Release 0.3.5 (August 5, 2003)

> New features | Created the `JugglingLabAWT` applet class, requiring only Java 1.1 to run. This provides a simple viewer applet that doesn't require a download of the Java plug-in from Sun. Various updates to other classes, especially `jugglinglab.core.Animator`, to remove all Swing (Java 2) dependencies from the core animation code. Created new documentation for the siteswap input panel and the applet calling convention. Added back capability to pause/unpause animation. Click within the animation view to toggle (click+drag is interpreted as a change in camera angle; click+no drag pauses/unpauses the animator). Made juggler bodies opaque in 2d rendering mode, using a "painter's sort" algorithm. Props also now display in correct z-sorted order relative to one another. Added mechanism to define starting hands for asynch siteswap patterns, documented in the siteswap notation page. Changed default camera angle for passing patterns. Added support for JuggleAnim input parameters to the siteswap notation component.
> Bug fixes | Added support for force-bounces back into siteswap notation component (`'F'` modifier). Fixed "start paused" feature. Fixed bug that caused interference between multiple applets on a single page, caused by global variables in the singleton `mhnNotation` class.
> Other changes | Updated documentation for siteswap notation and the siteswap generator. Made double-buffering on by default. Changed coordinate format in siteswap `hands` setting from (x,y,z) to (x,z,y), to give shorter hands strings (y coordinate is front-to-back and is often 0).
> Known issues | Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back 3d display mode is relatively slow; likely an opportunity to optimize polygon count.

Release 0.3.4 (July 17, 2003)

> New features | Support for passing siteswap patterns: arbitrary number of jugglers, synch or asynch rhythm, and multiplexing Full support for passing in siteswap generator Option to disallow "clustered" throws (e.g., `[33]`) in siteswap generator Ability to change camera angle in 2d rendering mode (hold down mouse button over animation and drag mouse to change view) XYZ coordinate axes added to both 2d and 3d rendering modes, when camera angle is being changed "Snap to grid" feature when camera angle is being changed
> Bug fixes | Many improvements to GIF-writing code; now writes GIFs correctly in 3d rendering mode Occasional pattern centering errors in the display, in 2d rendering mode Internal errors caused by leaving "version" attribute out of <jml> tag Internal errors associated with <position> tag Disabled Edit View when there is more than one juggler (ladder diagram isn't working yet in this case)
> Other changes | Removed "passing leader slot number" input to siteswap generator; passing leader is assumed to be juggler #1
> Known issues | Elbow positions are goofy for some hand positions, e.g., when a hand is behind the back

Release 0.3.3 (June 21, 2003)

> New features | Added 3d rendering capability using Peter Walser's idx3d III 3d library; option is accessible from Animation Preferences panel Added ability to animate passing patterns; new <position> tag in JML defines juggler body positions and angles (Note: Juggling Lab does not yet have notation components for any of the common passing notations, so passing patterns require one to hand-code JML as of this release)
> Bug fixes | None major
> Other changes | Moved GIF-writing code into main distribution (the GIF patent expired in the USA on June 20, 2003) Changed JML coordinate system to simplify 3d rendering: X coordinate is right/left, Y coordinate is in/out, Z coordinate is up/down

Release 0.3.2 (January 9, 2003)

> New features | Added "find pattern rotations" option to siteswap generator Added graphical indicator for "switch" symmetry type in visual editor
> Bug fixes | Siteswaps with 0's/2's look funny because the hands swing too wide `(siteswapNotation.java)` Siteswap generator prints cyclic rotations of some patterns in "all compositions" mode `(siteswapGenerator.java)` Internal error caused by left/right click combination in visual editor `(EditLadderDiagram.java)` Internal error caused by some invalid siteswaps (e.g., `46500`) `(siteswapNotation.java)` `<holding>` transitions missing from some siteswaps when converted to JML (e.g., `[92]22`) `(siteswapNotation.java)` "Switch" symmetry type not working `(EventImages.java)` Internal error caused by some JML parsing errors `(JMLView.java)` Internal error caused by rescaling pattern timing `(EditLadderDiagram.java)`
> Other changes | Changed default listing options in siteswap generator Created page of change notes (this page)