# Developers: to add a description of changes you have made,
# add it on a line starting with #	 below the "version=..." line

version=12.1.30

# bug fix: isosurface POCKET broken
# bug fix: isosurface MOLECULAR or SETS with DOTS gives too many dots
# bug fix: draw TRIANGLES not working
# bug fix: annoying tic label side-switching removed
# bug fix: set measurementLabels off not working for ticks
# new feature: Finnish translation
# bug fix: isosurface color mesh blue   not working
# bug fix: (modelkit) load $PCl5; assign atom ({2}) "C"  fails to place H atoms correctly
# code: Commentized WebMaker.java in prep for complete removal.  Fixes to Widgets javadocs.
# bug fix: not all translated html text was escaped in web export widgets
# code: isosurface MOLECULAR efficiencies

#version=12.1.29

# new feature: isosurface SLAB within x.y {point}
#   -- smooth circular slabbing
#   -- negative x.y --> "not within" (creates a circular hole at this position)
# code: isosurface MOLECULAR/SOLVENT x.y completed; "FULL" option removed
# code: (new concept) nonlinear Marching Cubes for IsoSolventReader
# bug fix: isosurface molecular/solvent improvements
# bug fix: logFile/logCommands/logGestures should not be saved in state
# bug fix: log file cannot be turned off by setting value to ""
# bug fix: user-defined function calls should be able to look like Jmol commands, without ()

# --------------------------------------------------------------

#version=12.1.28

# bug fix: 12.1.27 writing of script lists # /*file*/ inappropriately.
# bug fix: 12.1.27 isosurface area is 1/3 actual.
# bug fix: isosurface molecular/solvent better version, adds tripod-test logging
# bug fix: write xxx.jmol can fail if the same file is used twice in two different contexts

# --------------------------------------------------------------

#version=12.1.27

# code: System.out.println comments out
# new feature: isosurface molecular FULL
# new feature: isosurface solvent [optionalRadius default:1.2] FULL
#    -- very fast solvent excluded surface
#    -- FULL option does reduced-surface analysis, 
#    -- uses Marching Cubes to create the surface
#    -- very close fit to MSMS; slightly smaller area and volume
#    -- replaces work from 12.1.24
#    -- use isosurface SET 1 generally
#    -- irrelevant inner surface removed due to negative volume.
#       TODO: test for this with cavities
# bug fix: isosurface sets not sorted by number of vertices 
# new feature: isosurface MSMS xxxx.vert  -- creates isosurface from MSMS output files
#   -- implies xxxx.face is also present in the same directory as xxxx.vert.
#   -- if only .vert are present, only dots will be generated
# bug fix: failure to create atomicOrbital does not clear that isosurface
# new feature: QuantumEspresso reader
# bug fix: popup menu does not show load {1 1 1} options correctly
# new feature: GULP reader  
# bug fix: draw intersection/polygon without vertices does not clear existing object
# bug fix: isosurface slab for plane not working
# bug fix: space before [ not recognized as significant when following $xxx or {...}
# new feature: isosurface/draw .length (also added to 12.0.26)
# bug fix: undocumented $isosurface1[3] fixed
# bug fix: isosurface set 0  does not display all sets

# --------------------------------------------------------------

#version=12.1.26

# new feature: write SDF creates multi-model SDfile based on models of selected atoms
# new feature: write V3000 creates V3000 file; see http://www.symyx.com/downloads/public/ctfile/ctfile.pdf
# new feature: the list of languages in the popup menu  
#   -- is ordered by language code
#   -- displays each language name both in the current language and in the native language
#   -- is updated adding a new language if this is chosen via script (or maybe by the OS default)
# new feature: plane(pt1, pt2) -- returns bisecting plane
# new feature: draw SLAB $draw1 PLANE @{plane({...} {....})}
#   -- clips a drawn polygon based on a plane
#   -- $draw1 must be a draw POLYGON definition
#   -- draw draw1 SLAB $draw1... is allowed
#   -- for example:
#   draw p4 polygon 4 {1 2 3} {2 3 4} {4 5 6} {7 8 9} 2 [0 1 2 0] [2 3 0 0]
#   draw p4 slab $p4 PLANE @{plane({0 0 0}, {10 0 0})}
# new feature: measure list  -- same as show measurements
# bug fix: GenNBO reader does not read MOs properly
# bug fix: GenNBO reader does not read UHF data
# bug fix: GenNBO reader does not read xxx.31 file P orbitals not in X Y Z order
# bug fix: applying unit cell in LOAD command to XYZ file containing multiple models 
#          does not convert later model coordinates to fractional ones.
# bug fix: Web Export and write xx.jmol fail for load XXX:: forcing file type
# bug fix: write MOL creates V2000 file
# bug fix: over-run of SDF, MOL/V2000 reports error
# bug fix: assigning array elements using x[i] = pt, where pt is a 
#          variable that is a cartsian point or a plane does not copy variable
# bug fix: SMILES generator in certain cases may not return stereochem (c-C(OH)(H)-c)
# bug fix: mistyped command such as measure LIST (with LIST present) crashes Jmol
# bug fix: pop-up menu after zap 1.1 in set of two models crashes Jmol
# code: V3000Reader integrated into MolReader
# code: JUnit test for file reading GenNBO and CIF files lacks viewer object

# --------------------------------------------------------------

#version=12.1.25

# bug fix: failure to read properly data "connect_atoms" from state 
#          when struts or hbonds turned OFF
# bug fix: 12.1.16-24 fail to write state properly -- saved settings not saved
# bug fix: CIF reader does not recognize -1 for _atom_site_disorder_group
# new feature: default for loading of CIF files with GEOM_BOND records is to load them
#   -- as full molecules (symop=1 or connected to such (or within autobonding range of such)
#   -- without unit cell 
#   -- Cartesian coordinates
#   -- similar to the way CCDC Mercury loads these files
#   -- attaches H atoms and otherwise respects GEOM_BOND designations explicitly
# new feature: CIF load FILTER "MOLECULAR" 
#   -- does molecular load even when no GEOM_BOND records
#   -- defaults to {1 1 1}
# new feature: pop-up menu includes load "" FILTER "MOLECULAR" option (under SYMMETRY...)
# bug fix: VaspOutcarReader misreads file with line containing "Therefore set LREAL=.FALSE. in the  INCAR file"
# code: rename VaspReader VaspOutcarReader

# --------------------------------------------------------------

#version=12.1.24

# bug fix: isosurface t.obj should be discernable as OBJ if created by PyMOL
# bug fix: set drawPicking does not pick visible isosurfaces
# bug fix: draw * translucent does nothing
# bug fix: isosurface on frame other than first will be incorrect
# bug fix: draw with multiple models can fail to save state
# bug fix: SMILES check for c=c can fail.
# bug fix: Mopac MGF reader upgrade allows orbital subset
# bug fix: Mopac MGF reader upgrade allows filter "alpha", filter "beta"
# bug fix: isosurface OBJ pymol.obj not reading Pymol output
# new feature: streamlined STATE for appended files
# bug fix: appending data to models with unit cells can cause odd results
# bug fix: JME load append does not get saved properly in state
# bug fix: bond set variables [{1 2 3}] incorrectly shown as atom bitsets ({1 2 3}) 
# bug fix: xxx.yyy when "yyy" has been defined as a local variable using VAR fails
# bug fix: find("SMILES", smilesString) does not find Jmol atomIndex == 0
# bug fix: find("SMILES", smilesString) does not find [2H]
# bug fix: slightly better response to command line input errors (complete command in history)
# new feature: print point(3.5) -- rounds down (toward 0) to nearest integer
# bug fix: IDTF exporter inverts rotation matrix from pt1, pt2, for dx = dy = 0
# bug fix: Linux file completion from LOAD "  improperly lowers the case of file names
# new feature: Jmol SMILES generation includes stereochemistry 
#              for octahedr	al and trigonal bipyramidal 
 
# --------------------------------------------------------------

#version=12.1.23

# bug fix: labels OFF broken in 12.1.22

# --------------------------------------------------------------

#version=12.1.22

# code: efficiencies in LabelToken
# new feature: P2N reader -- see http://q4md-forcefieldtools.org/
#    -- adds "altName" auxiliary data
#    -- allows FILTER "altName"
#    -- allows label %{altName}
#
# new feature: label %{dataName}  
#    -- allows reading values from a DATA array.
#    -- case-sensitive
#    -- data are read sequencially as string data, one per data line.
#    -- if data of that name are not found, looks for data in auxiliaryInfo of that name.
#         and bases the index as atom index relative to the model.
# 
# new feature: Edit...Preferences...Clear History 
#    -- resets window positions and clear all history. 
#    -- thank you, Tami Caraballo!
# bug fix: zap 1.1 when models have cartoons or other bioshapes crashes Jmol
# bug fix: Ramachandran approximation of P straightness off by a few percent
# bug fix: SMILES matching string with ".[C@H]" reads stereochemistry incorrectly
# bug fix: load SMILES with %nn fails 
# bug fix: Jmol creating possibly ambiguous aromatic amine SMILES
#          1-H-4-methylimidazole was: n1cnc(C)c1; now: [nH]1c[n]c(C)c1 
# bug fix: {*}.find("SMILES",smilesString) does not include aromatic H
# bug fix: Smiles MF calculation for aromatic atoms N and C in error.
#    NOTE: Jmol may undercount the number of hydrogen atoms
#          for aromatic amines where the ring bonding to N is 
#          not explicit. Each "n" will be assigned a bonding count
#          of two unless explicitly indicated as -n-.
#          Thus, we take the position that "n" is the 
#          N of pyridine unless otherwise indicated.
#         
#          For example:
#            $ print "c1ncccc1C".find("SMILES","MF")
#            H 7 C 5 N 1   (correct)
#            $ print "c1nc-n-c1C".find("SMILES","MF")
#            H 6 C 4 N 2   (correct)
#          but
#            $ print "c1ncnc1C".find("SMILES","MF")
#            H 5 C 4 N 2   (incorrect)

# --------------------------------------------------------------

#version=12.1.21

# new feature: set allowMoveAtoms
#    -- automatically sets/unsets allowRotateSelected and dragSelected
#    -- ALT-left --> rotates selected set
#    -- ALT-SHIFT-left --> drags selected set
# bug fix: popup submenu "file" only enabled for application or signed applet 
# bug fix: load xxx.jmol broken in 12.1.17
# bug fix: write JMOL missing from popup menu

# --------------------------------------------------------------

#version=12.1.20

# bug fix: WRITE PDB not padding to 80 char
# TODO: WRITE PDB not adding TER records
# bug fix: PDB reader not flagging models as PDB properly when all groups are same amino acid

# --------------------------------------------------------------

# version=12.1.19

# new feature: (Application) toolbar "set picking center"
# bug fix: bad build of 12.1.18 for distribution

# --------------------------------------------------------------

# version=12.1.18

# bug fix: 12.1.17 breaks popup menu
# bug fix: relaxing single-model requirement for isosurface
#          as long as only a single model's atoms are selected

# --------------------------------------------------------------

# version=12.1.17

# new feature: "getPopupMenu" added to JmolViewer.getProperty("DATA_API","getPopupMenu","current"|null)
#    -- null --> java.awt.Container
#    -- "current" --> current menu
#
# bug fix: no callback for ZAP model=1
# new feature: isosurface ROTATE <quaternion>
#    -- rotates an isosurface based on a quaternion
#    -- a display property, like OFFSET or SCALE3D
#    -- useful if model coordinates are changed and an isosurface is present
#    -- rotations are cumulative.
#    -- rotations are about {0 0 0}, not the centroid of the isosurface
#    -- ROTATE NONE removes the rotation
#    -- for example:
# 
#          isosurface sasurface ROTATE @{quaternion({1 0 0}, 90)}
#          isosurface ROTATE @{quaternion({1 0 0}, 90)} ROTATE @{quaternion({0 0 1}, 90)}
#     
# bug fix: compare(...) with @SP, @OH, @TB gives null pointer exception
# bug fix: set picking invert stereo/delete atom  not sending pick callback
# bug fix: Argus .agl reader not setting viewpoint transform
# bug fix: load xxx where x is a flawed data file can try to load file as a script or isosurface
# new feature: VASP OUTCAR reader (xtal/VaspReader)
# bug fix: compiler function(){{ double brace error
# bug fix: compiler context { var chain=3;print chain } not recognizing context variable for "chain"
# bug fix: PDB reader not reading files with empty group name field
# bug fix: popup menu does not include measure SEQUENCE
# new feature: auxiliaryInfo.models[1].infoUnitCell
#    -- 17-element array
#    -- a, b, c, alpha, beta, gamma
#    -- Va, Vb, Vc
#    -- dimension = 1 (polymer), 2 (slab), 3 (standard)
#    -- volume (Angstrom^3)
#
# bug fix: set picking measure SEQUENCE not reporting to application console
# bug fix: (application only) distance picking not being reported in console
# bug fix: set picking chain, then mouse click does not report number of atoms selected
#
# new feature: reset STRUCTURE -- resets structure to author's after calculate STRUCTURE
#
# new feature: load OFFSET {x y z} 
#    --follows UNITCELL parameter, if present
#    --offsets the atoms in the file by a given amount
#    --may be fractional
#    --added to allow for shifts in origin for nonstandard CIF files
#    --applicable to ALL readers
#    --for example:
#         load quartz.cif {1 1 1} spacegroup "ignoreoperators" offset{0 0 2/3}
#         load caffeine.xyz offset {8.0 0 0}
#              
# bug fix: LINUX file dropper returning \r\n with name
# bug fix: DRAW $xxx reverses order of points
# bug fix: load PACKED for slab/polymer does not work 
# bug fix: load "" does not work after loading a SET of models using load DATA
# bug fix: CIF reader cannot read files with _space_group_symop_operation_xyz field

# --------------------------------------------------------------

#version=12.1.16

# bug fix: naming functions or variables after Jmol token names fails or acts unexpectedly
#          (fixing this bug required script compiler changes, and that lead to the
#           two new features below)
#
# bug fix: User variables and functions removed from state because they are 
#          no longer necessary and also indeterminant in terms of the "state".
#          Originally these were needed because ECHO and DEFINE can be dynamic
#          -- which is still true -- and because certain commands such as ISOSURFACE
#          were being saved in the state just as their strings instead of their 
#          intepreted code. But that was changed for 12.0, and this fix also changes 
#          ECHO to be saved in its current state, not its dynamic state. While 
#          dynamic DEFINE types may include variables, they aren't really
#          part of the "state" per se and aren't needed to recreate the state. So
#          they are dropped from the state with this fix as well. 
#
# new feature: function calls can look like Jmol commands (also added to 12.0):
#      function myfunc(a, b, c, d){....}
#      myfunc a b c d
#      -- these are MATHEMATICAL commands 
#      -- use just a b, not @a @b
#
# new feature: custom overloading of Jmol commands (also added to 12.0)
#      function measure(a, b) { print "measuring " + a + " " + b; measure @a @b }
#      measure {atomno=2} {atomno=3}
#      -- within function X, command X is standard Jmol; 
#      -- outside the function, it is a reference to that function
#      -- overloaded functions are not saved in the state
#
# bug fix: array variable elements cannot be changed
#
# new feature: load xxx.pdb filter "CONF 1" does a front-end filter of just
#          the first alt-loc atoms within a given residue. This leads to proper
#          formation of polymers in certain cases (2BLN, 2CI1).

# bug fix: "var chains" does not work -- i.e. a name of a "within" option. 
#          solution was to allow var ANYTHING, understanding that if you 
#          use "var CARTOONS" for instance, then CARTOONS ON is no longer
#          a command within the scope of that assignment.
# bug fix: cartoon helix in 1TF6 broken by DSSP HHHGGG run
# bug fix: not loading MOL files having no bonds
# bug fix: load append INLINE ... not working
# bug fix: max for Rasmol/chime units 499 -- should be 1000
# bug fix: show state/xxxx incorrectly case-sensitive

# code: undocumented load RANGE [i, j, k,...] removed (see load MODELS)
# code: load FILTER clean-up, standardization

# --------------------------------------------------------------

#version=12.1.15

# bug fix: QCHEM reader fails
# bug fix: CRYSTAL reader fails to read formico_opt.out
# bug fix: CIF reader not reading insertion codes (since forever!)
# bug fix: set appendNew FALSE fails
# bug fix: getproperty IMAGE (returning JPG64) doubles font size with set antialiasDisplay true
# bug fix: "configuration 1" should select all if no alternative locations
# bug fix: load FILTER does not include %x for PDB files
# bug fix: conformation n  definition changed for PDB files to be consistent with DSSP
# bug fix: isosurface "xxxx.jvxl" colorscheme "rwb" does not work (jvxl files specifically)
#
# new feature: PDB and CIF readers read helix subtypes alpha, 3/10, and pi  
# new feature: atom property substructure includes helixalpha(8), helix310(7) and helixpi(9)
# feature change:  DSSP default for "calculate structure" 
#    -- old way is now "calculate structure RAMACHANDRAN"
# feature change:  DSSP default for LOAD of PDB file with no header.
#   in previous versions, Jmol used a ramachandran-angle-based calculation
#   for secondary structure determination when a PDB file had no HELIX or SHEET records.
#   It just seems reasonable to use the industry-standard DSSP method instead.

# new feature: defaultStructureDSSP  (default TRUE)
#   --setting this FALSE gives previous behavior (see above)
#   --for the CALCULATE STRUCTURE and LOAD commands
#   --in the case of LOAD, only relevant when PDB header is missing HELIX/SHEET records
#
# code: http://jmol.svn.sourceforge.net/viewvc/jmol/trunk/Jmol-datafiles/dssp/cullpdb_pc20_res1.6_R0.25_d101001_chains1769
#         was used for DSSP validation along with checkdssp.spt in that same directory
#

# --------------------------------------------------------------

#version=12.1.14

# note: ready for release; DSSP testing is done

# bug fix: conformation n  definition changed for PDB files to be consistent with DSSP

# bug fix: hetero group protein check should not care about C CA N O file order (1YC5)
# bug fix: conformation not working when an alternate location is for key atoms such as N, C, O, CA
# bug fix: loading a multi-structure PDB file with CONECT bonding may not autobond (2q3t)
# new feature: "xxxx"%9999 == "to upper case"; "xXxX"%-9999 == "to lower case"
# bug fix: undocumented save STRUCTURE not working for initial structure state
# code: removal of unnecessary structure class in ModelCollection

# new feature: Accurate DSSP structure determination should be identical to DSSP
#              using CALCULATE STRUCTURE DSSP
#
#   Also available is a version that takes into account already-determined
#   amide hydrogen positions using SET dsspCalculateHydrogenAlways FALSE
#
#   DSSP details available using SHOW DSSP
#   DSSP debugging available with SET DEBUG
#   DSSP structure-determining hydrogen bonds available with CALCULATE HBONDS STRUCTURE
#   DSSP substructure (helix310 and helixPI) available with SELECT HELIX310 and SELECT HELIXPI
#         -- for an example of helixPI (>>555<<), see 2JC9
#
# code: Efficient Java bitset-based DSSP calculation based solely on a careful reading of
#       W. Kabsch and C. Sander, Biopolymers, vol 22, 1983, pp 2577-2637
#       with detailed quote-based comments from the article explaining the process.
#       Includes options to create the structures, just make a report, or just deliver a set of
#       hydrogen bonds. (MUCH appreciated permission by Gert Vriend to implement DSSP as open-
#       source Java code in Jmol.)
#
# new feature: show state/xxxxx   where xxxxx is any phrase. Does a line-by-line filter of the
#              state script for xxxxx. So, for example:
#
#   show state/load
#   show state/isosurface
#   show state/hbond
#   show state/draw
#   show state/measure
#   show state/connect
#        
# new feature: STRUCTURE HELIX310 ....
# new feature: STRUCTURE HELIXPI ....
#
# new feature: calculate hbonds STRUCTURE (only those that define the DSSP "HGITEB" markings)
# new feature: set dsspCalculateHydrogenAlways (default TRUE -- standard DSSP; set to FALSE
#              to ensure that file-based NH atoms are used instead of rough approximations)
# new feature: show DSSP  (just produces a report)
# new feature: calculate structure DSSP
# new feature: load reports model count and overall number and model number for MOs 
# new feature: helix310 and helixPI structures may be set using the STRUCTURE command
# new feature: select helix310 and select helixPI -- provided those have been set. 
#              Note that select HELIX only selects "4-turn" aka "alpha" helices, as previously.
#
# new feature: load SUPERCELL "2x, x+y, 2z"
#              load SUPERCELL {2 2 2}
#              load {20 20 2} SUPERCELL {2 2 2}
# new feature: new 5th parameter for measureCallback is actual, unrounded value
#
# bug fix: calculate structure only works with last model loaded
# bug fix: calculate structure after zap x.y fails
# bug fix: GAMESS reader (US) not reading full atom name such as "MOLYBDENUM"
# bug fix: load append after calculating structure recalculates structure for other models
# bug fix: calculate structure does not target selected model
# bug fix: bioshapes not clearing automatically after calculate STRUCTURE
# bug fix: switch DEFAULT not working
# bug fix: label %1 will cause exception
# bug fix: load '@x' not saved properly in state
# bug fix: arrays of hashtables and other more complex variables not being saved or created in usable form
# bug fix: isosurface MEP with multiple frames fails on second isosurface
# bug fix: //comments not searched properly for GOTO operation
# bug fix: data "connect_atoms" does not update bond diameter, order, or energy
# bug fix: %8.4VALUE still truncating in set defaultdistancelabel

# --------------------------------------------------------------

#version=12.1.13

# new feature: hide/display bonds
# new feature: hide/display [{bond set}]
# new feature: set STRUCTURE HELIX|SHEET|TURN [a, b, c, d, a1, b1, c1, d1,...]
#    allows customization of Jmol's phi/psi-based structure calculation
#    phi >= a && phi <= b && psi >= c && psi <= d 
#  || phi >= a1 && phi <= b1 && psi >= c1 && psi <= d1 
#  etc.

# bug fix: unbind unknownName unbinds LEFT mouse!
# bug fix: Safari slideZoom issue upon leaving and returning to applet (mouse MOVE not issued by OS)
# bug fix: naming a variable after a function name such as "color" should be allowed
# bug fix: "smilesString" changed to "_smilesString" and properly set
# bug fix: Application filename for $xxxx not properly set
# bug fix: language changing doesn't set tool tips
# bug fix: MEP menu item is using MOLECULAR with default range; should be using VDW with range ALL
# bug fix: unescaped spaces in load "$ethyl ether" cause fault at NIH.
# bug fix: error writing isosurface color density JVXL file
# bug fix: catch without catch(e) causes exception
# bug fix: isolated H atoms when calculating hydrogen bonds causes exception
# bug fix: Spartan reader not reading INPUT file coord -- adding filter "INPUT"
# bug fix: calculate structure requiring {xxx}

# code: deprecated "commandOption" shape property removed

# --------------------------------------------------------------

#version=12.1.12

# code: JmolViewer interface Component display --> Container display (JPanel, JFrame, JDialog)
# code: consoles work
# code: examples get proper termination upon window closing
# bug fix: reading unmapped isosurface from JVXL files broken in 12.0.13

# --------------------------------------------------------------

#version=12.1.11

# test: set testFlag3  -- reports mouse action and mode (for Eric Martz)

# new feature: set multipleBondRadiusFactor 0.75
# new feature: set isosurfacePropertySmoothingPower
#   0 (no property smoothing)
#  10 (very strong smoothing)
#   7 (default, same as Jmol 11.8)
# new feature: AppletConsole allows embedding in larger applications
# new feature: smooth on-the-fly language changes in applet and application
# new feature: integrated AppConsole for embedded Jmol -- see Integration.java
# new feature: multipleBondSpacing
#   set multipleBondSpacing = -1 (default, varies with viewing angle)
#   set multipleBondSpacing = -0.5 (half that distance; varies with viewing angle)
#   set multipleBondSpacing = 0.35 (positive ==> fixed multiple bond spacing)

# bug fix: MO NOPLANE not working
# bug fix: SmarterJmolAdapter should not read zip bytes it doesn't have to 
# bug fix: spacefill JMOL does not work
# bug fix: Jmol 12 does not read old 11.1 isosurface commands from states
# bug fix: load {i j k} RANGE x.x not expanding load box by 1 in each direction
# bug fix: applet console does not display startup message
# bug fix: console buttons do not change with new language
# bug fix: undo/redo problems in AppConsole
# bug fix: crystal reader can't read selected model
# bug fix: 3.5E+0.0 read as "3.5 0.0"
# bug fix: navY/navy color issue
# bug fix: write PDB for nonPDB files incorrect

# code: streamlined AppConsole and AppletConsole
# code: GuiMap/JmolConsole AbstractButton methods merged
# code: AppConsole now implements JmolCallbackListener, called by JmolPanel.notifyCallback

# --------------------------------------------------------------

#version=12.1.10

# bug fix: JavaScript jmolScriptWait() can fail
# bug fix: mep color range error (12.1.9, 12.0.11)
# new feature: Spartan reader filter "ESPCHARGES" for ESP charges, if available, instead of Mulliken charges
# color structure for carbohydrate fails
# new feature: reset SPIN
# new feature: set slabRange 5.0 -- a zoom-independent slabbing plane
# bug fix: reset should not reset spin (introduced in 11.7.47); new RESET SPIN includes reset spinning
# bug fix: SMILES generator allowing sp3 center in aromatic
# bug fix: storing atom properties from CrystalReader messes up model atom bitset 
# bug fix: non PDB large molecule should not change default rendering 
# bug fix: PDB large molecule default rendering flaws

# --------------------------------------------------------------

#version=12.1.9

# TODO: Check setting of other color schemes.
# bug fix: set usercolorscheme not working. 
# bug fix: color label none when already none and after rendering for multi-line labels or with antialiasdisplay crashes Jmol
# bug fix: lcaoCartoon p orbitals for CO2
# bug fix: isosurface ISSQUARED
# bug fix: PLOT command broken (Parser.parseStringInfestedFloatArray)
# bug fix: color PROPERTY x   with set rangeSelected does not work
# bug fix: isosurface contour colors
# bug fix: #....... #.... two # in one line with first in first character fails
# bug fix: isosurface plane problems
# bug fix: set drawHover isosurface hover error kills hover watcher
# code: AtomPropertyMapper isolated from IsoSolventReader
# bug fix: isosurface "t.jvxl" map property temperature nonfunctional
# bug fix: isosurface PROPERTY ("VDW 100%" implied) not working
# code: rewrite of calculateHydrogen/hybridization code
# bug fix: WRITE xxx should do SHOW not clipboard for application
# bug fix: % at end of line acts as a line continuation
# new feature: label %[shape]
# new feature: lcaoCartoons dsp3 (a,b,c,d,e), d2sp3 (a,b,c,d,e,f)
# bug fix: "sp3a" not "first bonded atom"
# bug fix: failure to read old-style JVXL files. 
# bug fix: reading nth model from a file within a ZIP collection not possible

# --------------------------------------------------------------

#version=12.1.8

# bug fix: LcaoCartoon capping/slabbing not saved in state
# bug fix: isosurface planar mapping, contours, atomic orbital speed and scaling problems
# bug fix: oops; isosurface atomicOrbital REALLY not scaling well

# --------------------------------------------------------------

#version=12.1.7

# bug fix: isosurface atomicOrbital not scaling well
# bug fix: undo and smilesurlformat tokens missing
# new feature: load SMILES to use http://cactus.nci.nih.gov/chemical/structure/..../file?format=sdf&get3d=True
# bug fix: isosurface ... map SQUARED ... nonfunctional
# new feature: zSlab, zDepth -- default 0,0 meaning "use slab and depth" settings
# new feature: slab and depth are variables and can be read and set as for any other
# bug fix: exit, quit are stopping spinning -- should just be stopping moveTo
#          unless !exit or !quit.
# bug fix: associative array problems with some auxiliaryInfo data saving to state
# new feature: Vasp reader shows enthalpy and Gibbs energy in model name
# bug fix: binary map files within zip directories cannot be read
# bug fix: mouse-based slab does not refresh
# bug fix: JME reader misreading "Br+"
# bug fix: Writing PDB file with residue number > 9999 trashes file. Now writes "0000" "0001" etc. 

# new feature: getProperty can drill down a list for a hashtable entry:
#   print getProperty("shapeInfo.isosurface.id")
#     s2
#     isosurface1

# --------------------------------------------------------------

#version=12.1.6

# bug fix: very first start of Jmol, with no history, fails.
# bug fix: QChem reader not indicating symmetry A B properly
# bug fix: QChem reader filter "BETA" fails
# bug fix: obscure error when array variable is in place of required expression
# code: ColorEncoder cleaner, no inappropriately static classes
# bug fix: ColorEncoder not allowing for override of BW and WB palette
# bug fix: GAMESS reader UHF caught on reading orbitals with LZ VALUE line

# --------------------------------------------------------------

#version=12.1.5

# bug fix: set defaults RASMOL broken
# bug fix: CRYSTAL reader FREQUENCY needs fragment numbers sorted
# bug fix: rotation QUATERNION broken by 11.9.36, Mar 25, 2009 - Does not rotation about {0 0 0}
# bug fix: CURSOR_WAIT hourglass not turning off automatically after set picking JmolScript operation
# bug fix: associative array function .keys should report sorted key list
# bug fix: associative arrays as ScriptVariables must be checked for type
# new feature: color() function:
#   color("") -- full details on current propertyColorScheme
#   color("$someID") -- full details on isosurface ID "someID" color scheme
#   color("xxx") -- full details for a named scheme where "xxx" is "rwb", for instance
#   color("myscale = [xFF0000] [	x00FF00] [x0000FF]") creation of a scheme and return of details
#   color("roygb", n) -- nth color of a standard color scheme
#   color("", x.y) -- color for a property value x.y
#   color("$someID", x.y) -- color for isosurface ID "someID" value x.y
#   color("roygb", min, max) -- color/value pairs (two arrays)
#   color("roygb", min, max, value) -- color for specific value
#   print color("myscale = [xFF0000] [x00FF00] [x0000FF]")
# colors	:
# {255.0 0.0 0.0}
# {0.0 255.0 0.0}
# {0.0 0.0 255.0}
# 
# max	:	4.0
# min	:	1.0
# name	:	myscale
# reversed	:	false
# values	:
# 1.0
# 2.0
# 3.0
# 4.0
#
# print color("myscale = [xFF0000] [x00FF00] [x0000FF]", 0, 10, 0)
# {255.0 0.0 0.0}
#
# The scheme is constructed, so it can be used later:
#
# print color("myscale", 0, 10, 5)
# {0.0 255.0 0.0}
# 
# bug fix: associative array key sorting, new line for arrayed values
# new feature: getProperty shapeInfo reports colorKey for isosurfaces:
#   getproperty shapeInfo.isosurface[1].colorKey
#
# shapeinfo.isosurface[1].colorkey.colors	*List[31]	
# shapeinfo.isosurface[1].colorkey.colors[1]	{255.0 0.0 0.0}
# shapeinfo.isosurface[1].colorkey.colors[2]	{255.0 0.0 0.0}
# ...
# shapeinfo.isosurface[1].colorkey.colors[31]	{16.0 16.0 255.0}
# shapeinfo.isosurface[1].colorkey.color	{255.0 165.0 0.0}
# shapeinfo.isosurface[1].colorkey.values	*float[32]	[50.0,48.387096,46.774193,...,0.0]
# shapeinfo.isosurface[1].colorkey.name     "roygb"
# shapeinfo.isosurface[1].colorkey.max      31
# shapeinfo.isosurface[1].colorkey.min      1
#
# bug fix: isosurface color range should not carry over to general "color property"  
# bug fix: isosurface colorscheme TRANSLUCENT "xxx" fillTriangle error
# bug fix: should not allow isosurface ... map colorscheme "xxx" TRANSLUCENT
# bug fix: CRYSTAL reader FREQUENCY when input deck is missing VIBRATION record

# --------------------------------------------------------------

#version=12.1.4

# new feature: isosurface display within 2.0 {atomset} -- renderable subset of isosurface
# new feature: isosurface display all
# bug fix: CRYSTAL reader not allowing {555 555 0} load
# bug fix: CRYSTAL reader orientation error
# bug fix: show info not showing molecule info
# bug fix: isosurface LATTICE {x y z} should be relative to current UNITCELL
# bug fix: broken selectExtended mode
# bug fix: some isosurface display properties not generalized to wildcard
# bug fix: Parallel processing not creating process-specific copies of shapes
# bug fix: load unitcell for slab/polymer should allow 0, not just -1
# bug fix: diastereomer check still checking stereochemistry 
# bug fix: SMILES generator should not produce stereochemistry for RX2R'

# --------------------------------------------------------------

#version=12.1.3

# bug fix: set picking invertStereo not working for non-ring stereocenters
# new feature: load "myfile.xxx" {1 1 1} unitcell [ax ay az  bx by bz  cx cy cz]
# new feature: x = compare({atomset1}, {atomset2}, "ISOMER")
# new feature: x = compare(smilesString1, smilesString2, "ISOMER")
# bug fix: "CCCC".find("SMILES","CCCC") should return 1 (other returns 0 and -1)
# bug fix: "CCCC".find("SMARTS","CCC") should return [1,5,8,11] (other returns [] and "?"

# bug fix: SmilesGeneration stereochemistry error 
# bug fix: "smilesString".find("smarts","pattern") should return "?" upon parsing error
# bug fix: proper "false AND"/"true OR" action where second operand is skipped

# --------------------------------------------------------------

#version=12.1.2

# bug fix: SmilesGeneration fails for double bond stereochemistry
# bug fix: documented within("SMILES",...) missing and required for SmilesGenerator
# bug fix: select within(branch,{},{}) exception
# bug fix: "sheet" token missing, so select within(sheet) fails
# bug fix: struts not restored from state
# bug fix: color STRUTS also colors hbonds
# new feature: Application Display menu item "resize" (also added to 12.0)
# bug fix: draw CYLINDER n ... where n is an integer does not give flat ends
# bug fix: PNG file state for multiple file load cannot be read
# bug fix: Jmol application not accepting -g
# bug fix: "no atoms found returns wrong error message
# bug fix: XYZ reader fails with load "filename" 3
# bug fix: "[1,3,4,5]" can be translated to [1,3,4] 
# code: Java 1.5 upgrade -- many generics still have warnings
# bug fix: slab/depth mouse action does not automatically refresh

# --------------------------------------------------------------

#version=12.1.1

# bug fix: measure search("...{X}....{X}...") does not work
# bug fix: draw arrows are being FIXED in state
# bug fix: if ( )....; single-line syntax broken
# bug fix: try/catch in functions not implemented correctly
# bug fix: SMILES nested $(...) broken
# bug fix: binary pmesh reader broken
# bug fix: better coding for isosurface file typer
# bug fix: print write("ramachandran")
# bug fix: reading background images from PNG images within zip files
# bug fix: write xxxx.jmol zip sets cannot be read
# bug fix: binary surface readers map and ccp4 can misread file type
# bug fix: isosurface "=xxx" missing check for isSyntaxCheck
# bug fix: isosurface slab for polymer/slab symmetry

# --------------------------------------------------------------

# version=12.1.0

# July 28, 2010

