Build 1388
- significant performance improvements for LifeViewer Pro
	- HROT von Neumann 2-state 7x
	- HROT von Neumann N-state 7x

Build 1387
- fixed issue when pasting RLE with x and/or y set to 0

Build 1386
- significant performance improvements for LifeViewer Pro to the following 2-state HROT neighbourhoods (tested at R7)
	- Star 5.4x
	- Hash 4.6x
	- Cross 3.0x
	- Saltire 4.5x
	- Checkerboard 3.5x
	- Aligned Checkerboard 3.4x
	- L2 2.6x
	- Circular 2.5x
	- Hexagonal 2.2x
	- Asterisk 4.2x
	- Tripod 4.5x

Build 1385
- improved LifeViewer Pro performance: 
	- 2-state HROT Moore
	- [R]Super Moore
	- Generations
	- Cell Age Shader
	- 2-State Shader
	- Render Grid (no rotate)
	- 2-state hash for Identify

Build 1384
- fixed missing error message
- fixed Change Rule adding extra bounded grid specification

Build 1383
- fixed AutoFit when all cells die

Build 1382
- fixed some more hex and triangular rendering issues

Build 1381
- fixed some hex rendering issues

Build 1380
- fixed cell information for hexagonal bounded grid top-left and bottom-right cells
- fixed PCA Icons inital colours

Build 1379
- show Icons in Draw menu if Icons available (even if not displayed)

Build 1378
- fixed HROT von Neumann grid growth issue

Build 1377
- fixed missing pixel in Cell Period Map

Build 1376
- fixed UI layout for Photosensitivity and Help Topics

Build 1375
- use concise photosensitivity warning when window height is small

Build 1374
- improved hexagonal Cell Period Maps and Cell Frequency Maps
- slight adjustment to hexagon coordinates

Build 1373
- fixed HROT rule string validation issue

Build 1372
- fixed a crash in the HROT von Neumann interator

Build 1371
- changed the Cell Period Map and Cell Period Table to use up to 20 predefined subperiod colours

Build 1370
- disable Auto Start and Auto Identify when photosensitivity throttling enabled

Build 1369
- fixed tooltips for step forward and step back

Build 1368
- trigger window resize on start

Build 1367
- new script command [[ MAXIMIZE ]] which will maximize the PopUp Viewer when it opens

Build 1366
- close Settings menu when displaying photosensitivity dialog

Build 1365
- added photosensitivity warning and screen update dialog
	- safe mode only renders the cell grid every 400ms during playback
	- high-speed mode renders the cell grid at the monitor refresh rate (when possible)
	- Settings>General>Photosensitivity (hotkey Shift F1) will display the dialog any time
	- your choice will be remembered for the current browser

Build 1364
- replace hotkey Tab with Backslash to allow page navigation

Build 1363
- fixed a bug in Paste from external clipboard

Build 1362
- fixed Help>Info>Grid>Last Delete not being reset on pattern load
- fixed Icon rendering

Build 1361
- fixed a bug in the range 1 von Neumann iterator (Pro)

Build 1360
- fixed displaying ignored Icons in Help>Pattern
- fixed State List not appearing in PopUp for [R]History rules

Build 1359
- fixed border colour for Cell Period Map and Cell Frequency Map with Bounded Grid
- state list will now resize with window

Build 1358
- improved drawing on Hexagonal grid

Build 1357
- fixed a crash in @ICONS decoding

Build 1356
- improved Hexagonal and Triangular Bounded Grid borders

Build 1355
- fixed cells not rendering correctly after hitting grid boundary at some zooms
- added Help>Info>Grid>Last Delete which shows number of cells and generation of the last time cells were deleted

Build 1354
- fixed some scaled icons having black pixels again
- fixed icons sometimes not being drawn in top right or left column

Build 1353
- fixed missing border on colour icons in Help>Pattern and Draw state display
- improved the Show Help Topics button symbol
- only use primary mouse button and mouse wheel for mouse control

Build 1352
- fixed Population Graph forgetting history during Step Back when using PASTE

Build 1351
- fixed some scaled icons having black pixels incorrectly

Build 1350
- fixed rendering issue when zoomed out on Hexagonal grid

Build 1349
- fixed Cell Period Table and Cell Frequency Table height

Build 1348
- fixed Cell Period Map and Cell Frequency Map legend height

Build 1347
- made some improvements to Full Screen mode

Build 1346
- fixed [R]History rendering issue (Pro)

Build 1345
- Step Back was not Pasting immediately after a Snapshot

Build 1344
- fixed iterator issue in Generations and multi-state HROT rules (Pro)
- switched to custom dialog box to prevent navigating away from page without prompting

Build 1343
- fixed Golly Theme for [R]History

Build 1342
- displayed Zoom value is now rounded towards zero
- fixed AUTOSTART and AUTOIDENTIFY not being disabled when pattern is too big
- fixed size calculation when new HROT pattern opened over original one
- fixed Annotation horizontal centering on Hex grid
- fixed Full Screen mode not always adjusting window height

Build 1341
- fixed Annotation positioning on Hex grid again

Build 1340
- [[ STEP ]] sizes from 65-96 are now capped to 64 when using LifeViewer Standard
- fixed crash in HROT von Neumann rules without Bounded Grid

Build 1339
- fixed crash in Help>Info when icons are defined in non-square grids

Build 1338
- fixed using grid detection if rule is invalid

Build 1337
- fixed Rotate Selection not being allowed in a Bounded Grid with an infinite dimension
- fixed Population calculation for HROT patterns in Bounded Grids

Build 1336
- fixed crash in HROT von Neumann rules with Bounded Grid

Build 1335
- fixed displaying GRIDMAJOR information from Help>Themes for hexagonal and triangular grids
- fixed using GRIDMAJOR as a period multiplier for TRACKLOOP for hexagonal and triangular grids
- fixed Nudge Selection boundary checking in Bounded Grids
- fixed Annotation positioning again on Hex grid

Build 1334
- fixed PopUp Window height check when using window scaling
- added text substitution #Z which outputs the edition name (Pro or Standard)
= fixed "Going to generation" persisting for empty patterns
- fixed Help>Info>Gridlines display excess information for hexagonal and triangular grids
- fixed deleted cell visual issue for PCA rules
- fixed Help>Info>Identify having incorrect information for off-deathforcer cells
- fixed #CXRLE Pos y axis checking
- fixed Identify Cell Period Table and Cell Period Map not disappearing with AUTOHIDEGUI

Build 1333
- fixed incorrect colour in Help->Info->UI->FullBG
- improved PopUp Viewer title bar Full Screen and Close buttons

Build 1332
- fixed Annotation positioning on Hex grid

Build 1331
- added [[ COLOR FULLSCREENFOREGROUND r g b ]] and [[ COLOR FULLSCREENBACKGROUND r g b ]] script commands

Build 1330
- improvements to Full Screen mode

Build 1329
- added Full Screen toggle button to PopUp Viewer title bar

Build 1328
- added Full Screen toggle button for PopUp Viewer to Settings menu
- improved rendering performance on iOS
- Zoom slider can be wider in Full Screen mode

Build 1327
- improved Identify hash function to reduce chance of false positives

Build 1326
- fixed crash when opening hex pattern after larger square pattern
- fixed crash after drawing cells in von Neumann HROT patterns

Build 1325
- fixed crash when drawing causes grid to grow
- minor performance improvement to HROT Moore (Pro)

Build 1324
- improved offset square grid drawing performance
- POI buttons are now disabled when Identify results are displayed
- fixed cell history fading in range 1 algo (Pro)
- ensure Identify message appears on high refresh rate monitors
- fixed crash when PopUp loads different grid-sized HROT patterns

Build 1323
- fixed an issue with the RuleTable iterator (Pro)

Build 1322
- fixed a crash deleting gliders near the grid boundary

Build 1321
- fixed a crash when consecutively loading different sized patterns with HISTORYFIT

Build 1320
- experimental LifeViewer crash detection

Build 1319
- fixed another KILLGLIIDERS boundary issue
- fixed history states overwriting bounded grid border when zoomed out
- fixed extra row and column rendering (Pro)
- fixed [R]History Identify symmetry issue (Pro)
- Snow speed is now independent of monitor refresh rate

Build 1318
- fixed KILLGLIDERS boundary

Build 1317
- fixed dead cells when using Cell Age and Themes with no history

Build 1316
- fixed dead cells when using Shaders other than Cell Age
- fixed range check for [[ STARTFROM ]]

Build 1315
- Save Pattern will now always save the entire pattern (regardless of any selection)
- fixed another Rule Table cache issue in Pro

Build 1314
- fixed Paste from system clipboard

Build 1313
- fixed hexagonal grid not displaying final row
- disable Identify when PASTEs are defined
- fixed Rule Table rules not reloading correctly from cache in Pro

Build 1312
- fixed Cell Frequency Map legend missing final entry

Build 1311
- fixed Identify Page Up button greying out
- fixed SHADER error message case

Build 1310
- fixed [R]History state 2 with PASTE
- fixed STARTFROM being executed with invalid patterns
- fixed STARTFROM not starting when initial pattern empty and pending PASTEs

Build 1309
- fixed Advance Outside issue after Reset

Build 1308
- fixed issue with RuleTables and B0

Build 1307
- request confirmation if refreshing or navigating away from the LifeViewer home page

Build 1306
- fixed [R]History bounding box with Identify

Build 1305
- further guesswork to fix touch issue on specific device

Build 1304
- hotkey F7 will now copy the current selection as headerless RLE including blank cells
	- hotkey Ctrl F7 will do the same but all in one line

Build 1303
- fixed [R]History Bounding Box for state 2 cells

Build 1302
- fixed Select All and Shrink Selection for [R]History rules

Build 1301
- include original failure reason in Show Pattern Error message

Build 1300
- automatically switch to Select mode on Select All
- fixed Shrink Selection in Bounded Grid
- fixed crash when reading invalid @TABLE sections
- fixed TRACKLOOP

Build 1299
- added two new variable substitutions for Labels
	- #F births
	- #E deaths
- fixed [R]History bounding box for Identify (include state 6 but exclude dead marked states)

Build 1298
- disable passive handling of touch and mouse events
- phase 1 of Shader change at Waypoints
- fixed PASTE with [R]History and [R]Super

Build 1297
- fixed Identify not reporting all cells dead after first time
- fixed Fit Zoom ignoring [R]History cells with Hexagonal grid

Build 1296
- fixed Identify cells killed persisting
- phase 1 of Identify Snapshots

Build 1295
- fixed PASTE drawing cells outside Bounded Grid
- Identify will now quit if cells are killed due to hitting the grid boundary during period detection

Build 1294
- fixed Selection position with CXRLE Pos and specified size different than actual size
- fixed RuleLoader rules not creating canonical Bounded Grid definitions

Build 1293
- fixed saving empty patterns
- fixed patterns with embedded @RULEs failing to Change Rule after an invalid pattern

Build 1292
- increased generation display up to 1T
- increased Go To Gen / STARTFROM generation limit

Build 1291
- improved hash algorithm for Identify further to reduce hash collisions for very high period oscillators
- fixed stuttering at high T values

Build 1290
- fixed missing Spaceship title
- don't show window colours for embedded Viewers

Build 1289
- improved Cell Period Map and Cell Period Table performance

Build 1288
- fixed Identify issue when started at T>0

Build 1287
- improved hash algorithm in Identify to reduce chance of hash collisions
- added one decimal place to gps display after Go To Gen benchmark
- reduced Identify memory usage
- increased Go To Gen / STARTFROM generation limit
- fixed Gaussian rules with invalid ranges causing out of memory error

Build 1286
- Identify can now handle oscillators with very large periods (work in progress)
- fixed SHOWGENSTATS being ignored until AUTOIDENTIFY complete
- improved Help>Info performance with Identify results

Build 1285
- fixed Selection on Reset

Build 1284
- fixed Help>UI not displaying custom Popup window colours correctly
- improved embedded Viewer fit to browser window width
- fixed Select with CXRLE Pos

Build 1283
- fixed Reset not restoring T=0 edits

Build 1282
- fixed hung playback issue

Build 1281
- added Settings>Advanced>Refresh Rate button which allows you to override the monitor refresh rate detection
	- specify a refresh rate from 25Hz to 500Hz or Auto (the default)
	- the setting will be saved for the current browser on the current device

Build 1280
- fixed "Life ended at" with PASTE
- [[ STARTFROM ]] generation can now be postfixed with "B" for benchmark mode
- fixed HROT von Neumann pattern grid boundary detection
- PopUp Close Window button colours now match title bar close button
- PopUp Title and Close Button colours are now displayed in Help>Info>UI
- added [[ SNOW ]] and [[ COLOR SNOW r g b ]] script commands
- fixed Reset after Advance Selection or Advance Outside
- embedded Viewers now fit browser window width

Build 1279
- fixed clipboard context box not updating after cut from the box itself
- moved Back colour to Cell Period Map table in Help>Info>Identify
- fixed Comments persisting when new pattern has no comments defined
- PopUp window title bar and close button colours can be customised:
	- COLOR TITLEFOREGROUND R G B
	- COLOR TITLEBACKGROUND R G B
	- COLOR CLOSEFOREGROUND R G B
	- COLOR CLOSEBACKGROUND R G B

Build 1278
- fixed Change Rule and New Pattern with embedded @RULE definition

Build 1277
- fixed issue with switching Themes for Generations rules

Build 1276
- clear history cells when switching from Theme with history to one without
- fixed an issue with loading comments when pattern is invalid

Build 1275
- fixed Step Back with Advance Selection or Advance Outside

Build 1274
- remove comment prefixes from Comments

Build 1273
- Help>Comments now respects line breaks
- improved Layer brightness when Layers disabled

Build 1272
- added Help>Comments to display any pattern comments (hotkeys H then C)
- fixed Selection position in Bounded Grids

Build 1271
- fixed an issue with PASTE when the grid grows

Build 1270
- fixed PCA killed cells statistics

Build 1269
- fixed grid lines not extending to right hand column
- fixed TRACKLOOP loop calculation
- disable Layers when in Draw or Edit mode or when Selection or Paste box is active
- make Triangular Bounded Grid thicker

Build 1268
- fixed PCA killed cells state and statistics
- worked around compiler optimizer bug for [R]Super WASM

Build 1267
- fixed error message for alternating HROT rules using B0
- fixed PCA pattern cells not being killed when they reach the grid boundary
- work in progress fixes to Select All
- work in progress fixes to Step Back with Advance Selection or Advance Outside

Build 1266
- fixed PopUp window size after pattern failed to load due to invalid rule
- fixed survival calculation for Weighted states rules with negative counts
- fixed Help>Info>Cells for Basic shader

Build 1265
- fixed pattern positioning in Bounded Grids

Build 1264
- fixed Inf when using [[ TIME ]] command
- fixed AutoFit for Generations patterns on Pro

Build 1263
- fixed Cell Frequency Maps with only one Frequency

Build 1262
- fixed Torus with vertical shift for multi-state rules
- fixed HROT/LtL 2-state rules with B0

Build 1261
- use Basic Shader if AGESTATES and HISTORYSTATES are both zero
- fixed cell state for cells killed by grid boundary for multistate HROT/LtL patterns

Build 1260
- fixed Identify oscillator rotor and stator calculation when not calculating strict volatility

Build 1259
- fixed Identify not detecting Mod for [R]History oscillators
- fixed showing AliveRamp in Help when AGESTATES is zero
- fixed displaying both greyed out Identify results page up and down buttons
- fixed HROT/LtL multi-state patterns not being cleared when they hit the grid boundary

Build 1258
- Cell Period Map and Cell Frequency Map legends are now scrollable
- fixed Identify not detecting Mod for [R]Investigator oscillators
- fixed rendering choice when Quality enabled and Tilt is non-zero
- fixed HROT pattern size on Save
- fixed Cell Map border for Hex oscillators

Build 1257
- mouse wheel will now scroll Identify Table results
- setting Identify results type (Period or Frequency) will automatically select Map when Results are displayed
- fixed Identify not resetting UI

Build 1256
- fixed Identify results tooltips
- fixed Save Pattern on forum

Build 1255
- fixed Identify results UI issues

Build 1254
- fixed Save Pattern removing new lines
- improved Identify output for Oscillators:
	- you can select a display mode (hotkey E to cycle):
		- results (summary data): Res button
		- periods (cell periods): Per button
		- frequencies (cell frequencies): Frq button
	- you can select a display type (hotkey Alt E to cycle):
		- table (display as a table): Tbl button
		- map (display as a cell map): Map button

Build 1253
- disable [[ AUTOIDENTIFY ]] in [[ THUMBLAUNCH ]] viewers

Build 1252
- fixed decoder for lifelib HROT hex format rules
- [[ NOREPORT ]] will now suppress "Cells killed after hitting boundary" notification

Build 1251
- fix KILLGLIDERS with [R]History clearing marked states
- fixed missing Cell Frequency Map entry

Build 1250
- added Cell Frequency Map to Identify results
	- hotkey E will cycle between Identify results, Cell Period Table, Cell Period Map and Cell Frequency Map
	- hotkey D will download the Cell Period Map or Cell Frequency Map as an image when displayed
- fixed cells disappearing sometimes when changing Themes

Build 1249
- fixed HROT/LtL weighted neighbourhoods

Build 1248
- fix support for RuleTables without transitions

Build 1247
- fix Step Back running KILLGLIDERS for HROT/LtL rules
- ensure HISTORYSTATES is > 0 for [R]History patterns

Build 1246
- after page load scroll to the anchor location if one was provided in the URL

Build 1245
- fixed HROT/LtL clashing with the Basic shader
- improved the error message when patterns contain invalid characters

Build 1244
- added script command [[ SHADER shader ]] to set the Cell Shader
	- shader is one of RAINBOW, NEIGHBOUR, NEIGHBOR or BASIC
- re-enabled [[ KILLGLIDERS ]] for HROT/LtL range 1 rules
- reordered Shader buttons
- fixed an issue with the Basic shader on pattern reset when in Cell Age mode

Build 1243
- automatically use the Basic shader in place of Cell Age shader when the current Theme has no history
- fixed [[ NEIGHBOR ]] keyword being ignored

Build 1242
- added Cell Shaders that control how cells are coloured for Life-like patterns
	- there are now four shaders which determine the cell colour:
		- Cell Age (default)
			- determined by cell longevity and history
		- Rainbow
			- based on the cell position on the grid
		- Neighbour Count
			- calculated from the number of neighbours
		- Basic
			- one colour when alive and another when dead
	- the shader can be set via the UI:
		- Settings>Display>Age|Rain|Nbr|Bas
		- hotkey Alt-W will cycle through the shaders
	- or set with script commands:
		- [[ RAINBOW ]], [[ NEIGHBOUR ]], [[ BASIC ]]
	- note: switching away from the Cell Age shader resets cell history and longevity
- fixed HROT multi-state rules including fully faded dead cells in the bounding box
- fixed Nudge Selection going into the bounded grid border
- fixed Triangular Cell Period Map size
- fixed Cell Period Map legend background for >2 columns

Build 1241
- fixed alternating Wolfram rules
	- only the bottom row is kept alive since the alternating rules will adjust earlier rows

Build 1240
- added Safe Mode which helps on low memory devices
	- toggle with Settings>Advanced>Safe Mode (hotkey Shift F9)
		- this setting is saved for the current browser on the current device
	- will not add SHOW IN VIEWER link when pattern uses MAXGRIDSIZE 14
	- will not Launch Thumbnail when pattern uses MAXGRIDSIZE 14
		- instead, RLE can be copied by clicking on the Thumbnail
			- this can be disabled with [[ NOCOPY ]]

Build 1238
- WASM acceleration of pattern load functions

Build 1237
- don't reduce the height of the forum code box if it also contains an @RULE definition

Build 1236
- hotkey F9 will now maximize/restore the PopUp Viewer window

Build 1235
- fix crash when decoding invalid @TABLE sections

Build 1234
- improvement to page scan for THUMBLAUNCH patterns

Build 1233
- further improvements page scan and load speed

Build 1232
- improved pattern load speed

Build 1231
- improved page scan speed
- reduce height of code boxes with SHOW IN VIEWER links to use less real estate

Build 1229
- fixed consistency in [R]Investigator Hex and von Neumann neighbourhoods

Build 1228
- fixed the population count with [R]Super Hex and von Neumann neighbourhoods

Build 1227
- added a progress bar to show buffer usage during Identify period detection
- Themes Help topic is now accessed via hotkey E
- improved bailout when STEP > 1 and performance target is missed

Build 1226
- fixed a regression with HROT/LtL
- fixed a rendering issue with [R]Super at zooms >= -2 and < 1

Build 1225
- fixed progress bar during [[ STARTFROM ]]
- fixed boundary not always displaying during rotation
- fixed RuleLoader rule name check being case-insensitive
- improved short range HROT/LtL von Neumann performance

Build 1224
- fix Icon handling for compatibility with older browser version

Build 1223
- gracefully handle New Pattern errors

Build 1222
- Go To Gen now remembers last valid input

Build 1221
- gracefully handle Change Rule errors

Build 1220
- prevent PopUp Viewer close box being translated

Build 1219
- keep original selection size on Paste when using external clipboard
- while there is a Selection or Paste active hotkeys X and Y will flip it (Golly hotkey compatibility)

Build 1218
- drawing cells as Icons now supports cell borders
- improved refresh rate detection

Build 1217
- you can now set the default playback speed
	- the default playback speed is 60 generations per second and displays as 1X in the UI
	- Settings>Playback>Save Speed (hotkey Ctrl-E) makes the default playback speed the current playback speed
		- this will be remembered for the current browser on the current device
		- setting this will also automatically switch on Use Saved
	- Settings>Playback>Use Saved (Shift-E) allows you to toggle whether to use the saved playback speed or the default playback speed
	- if a pattern contains a script command that sets the speed ([[ GPS ]] or [[ STEP ]]) then this takes priority until Save Speed or Use Saved are used

Build 1216
- further performance improvement when drawing cells as Icons

Build 1215
- fix Icon borders

Build 1214
- performance improvement when drawing cells as Icons

Build 1213
- support + and = keys on Firefox

Build 1212
- enforce 60Hz as minimum monitor refresh rate

Build 1211
- enforce RLE header format

Build 1210
- added option to force 60Hz refresh rate (hotkey Shift-E)
	- typically only needed for slow computers where refresh rate detection doesn't work
	- this setting is saved for the current browser on the current device

Build 1209
- attempted fix for RS browser

Build 1208
- fixed X script command for hexagonal grid

Build 1207
- fixed HistoryFit with hexagonal grid

Build 1206
- improved handling of different monitor refresh rates

Build 1205
- fixed size 7 icons not being created

Build 1204
- improvements to Multiverse prototype

Build 1203
- prototype of new Multiverse mode

Build 1202
- fixed KILLGLIDERS safe border size

Build 1201
- made hexagonal Cell Period Map bounding rectangle a rhobmus

Build 1200
- fixed KILLGLIDERS history cells for HROT 2-state patterns

Build 1199
- fixed Copy As MAP for hexagonal rules

Build 1198
- fixed issue with decoding embedded RuleLoader rules with Bounded Grids

Build 1197
- when window height is too small for menus and Thumbnail defined replace greyed out Settings button with Shrink button

Build 1196
- improved hexagonal Cell Period Maps

Build 1195
- fixed Icons not being consistently disabled for Hex and Triangular grids

Build 1194
- disable B0 support for HROT weighted and gaussian rules

Build 1193
- fixed Cell Period Map rendering for Hex patterns on window resize

Build 1192
- fixed drawing outside Bounded Grid when grid grows
- updated aliases

Build 1191
- fixed Copy Nhood for 2-state triangular rules

Build 1190
- fixed Copy as MAP issue

Build 1189
- fixed Fit Zoom for 2-state hexagonal RuleLoader rules
- updated aliases

Build 1188
- fixed Hexagon colours for 2-state RuleLoader rules

Build 1187
- fixed triangular Cell Period Map height

Build 1186
 - fixed issue with Evolve Selection and selection direction

Build 1185
- fixed Step Back issue

Build 1184
- fixed issue with RuleLoader decoding
- fixed rendering issue with [R]History rules

Build 1183
- fixed issue with Step Back and Paste

Build 1182
- fixed issue with line feeds when decoding RuleLoader rules

Build 1181
- fixed hexagonal Cell Period Map with even number of rows

Build 1180
- fixed Paste regression

Build 1179
- fixed Paste in HROT/LtL 2-state patterns
- new colours for Wolfram RuleTable emulation

Build 1178
- changed Wolfram RuleTable emulation colours
- disable [R]Super/[R]History/[R]Investigator when using Wolfram RuleTable emulation
- change image smoothing rule to make hexagonal and triangular Cell Period Maps less blurry

Build 1177
- Wolfram 1D rules now use RuleTable emulation when needed

Build 1176
- fixed Open Pattern for Popup Viewer
- first phase of Wolfram RuleTable emulation

Build 1175
- Change Rule dialog now remembers last valid rule

Build 1174
- clear Help cache when window resizes

Build 1173
- added emulation for odd numbered Wolfram codes

Build 1172
- fix Hex offset for Waypoints

Build 1171
- enable Paste button when External Sync enabled

Build 1170
- don't use user selectable paste buffer for Advance Outside

Build 1169
- triangular and hexagonal Cell Period Maps now have correct vertical scaling

Build 1168
- handle blank font definitions in HTML elements after Google translated

Build 1167
- fixed offset square gridline position
- disable major gridlines for hexagonal and triangular grids when using rectangular cells

Build 1166
- fixed Cell Period Map legend width for deathforcer cells

Build 1165
- fixed offset square Cell Period Map
- fixed Cell Period Map legend width

Build 1164
- fixed some gridlines not being drawn when grid rotated
- fixed major gridline position in Icon renderer
- fixed Icon toggle not being greyed out after rule with icons loaded
- narrowed the Cell Period Map legend slightly
- temporarily disabled offset square Cell Period Map

Build 1163
- show notification when cells are deleted after hitting boundary
- use two columns for Cell Period Map legend if required

Build 1162
- improve PCA icon rendering

Build 1161
- improve RuleLoader icon rendering

Build 1160
- fix rendering Generations rules with no history state and Layers

Build 1159
- add icons to state list in Draw mode

Build 1158
- improve grid line positioning and draw performance when drawing icons

Build 1157
- sharper rendering of icons
- PCA icons now use Theme colours

Build 1156
- Identify now uses offset square grid for hexagonal Cell Period Maps

Build 1155
- clear grid during startup timing measurement

Build 1154
- added icons for PCA rules

Build 1153
- initial work on @ICONS rendering

Build 1152
- fix AutoIdentify persisting across viewers

Build 1151
- fixed Identify with LtL/HROT >2 state patterns

Build 1150
- fixed line break handling

Build 1149
- improve HTML entity handling

Build 1148
- fixes to #R support

Build 1147
- improve RLE header detection (RLE header must have a space or = after x)
- support #R in headerless RLE or Life 1.05 to define rule

Build 1146
- changed Advance Selection so the selection box is static
- added Advance Selection and Advance Outside buttons
- Paste from system clipboard now works with unknown rules
- added error checking when attempting to write to system clipboard

Build 1145
- improved automatic Paste conversion when pasting from system clipboard
	- now handles conversions between [R]Standard, [R]History, [R]Super and [R]Investigator

Build 1144
- fixed automatic Paste conversion

Build 1143
- new script command [[ AUTOIDENTIFY ]] will automatically Identify pattern on load
- Paste from system clipboard will now automatically convert [R]Super and [R]History to [R]Standard
- fixed Random Pattern not correctly respecting RANDWIDTH and RANDHEIGHT

Build 1142
- initial work on paste from system clipboard

Build 1141
- fixed fps overlapping box at fps >= 100
- fixed Advance Outside clearing issue

Build 1140
- fix disappearing notifications that are being cleared from restarting disappear phase

Build 1139
- fix paste mode OR for [R]Investigator

Build 1138
- disable Rand All button for RuleTable rules

Build 1137
- fixed an issue with tokenizing custom rule names containing commas

Build 1136
- check that embedded @RULE definitions match the rule name in the pattern header

Build 1135
- fixed randomizing a non-deterministic HROT pattern

Build 1134
- draw cells above bounded grid border at Zoom < 1

Build 1133
- fixed Custom nighborhood display in Help->Pattern->N'Hood

Build 1132
- fixed HROT Custom neighbourhood orientation

Build 1131
- allow Angle and Tilt to be set by script commands for none rule

Build 1130
- fixed a layer rendering issue at Zoom < -16x

Build 1129
- improved layer rendering when layers go through multiple 2^-n zoom ranges

Build 1128
- performance improvement for 2-state patterns when drawing tiles containing only dead cells
- always switch to Pan mode when Population Graph opened
- fixed a [[ KILLGLIDERS ]] crash
- fixed layers sometimes rendering previous generation
- fixed layers with bounded grid rendering removing cells at distance zooms
- fixed Population Graph being a cell behind updates at T=0

Build 1127
- do not display Settings menu titles if display height is too low

Build 1126
- fix spurious "Show Pattern Error" link on forum
- fix Golly Theme colour for HROT multi-state and two state rules

Build 1125
- fix Golly Theme colour order for HROT multi-state rules

Build 1124
- fix display issue when drawing stars without gridlines with High Quality rendering
- fix Golly Theme colour order for 2 state rules

Build 1123
- minor performance improvement for colour history

Build 1122
- don't AutoFit with zero population

Build 1121
- set bounded grid tiles on Reset since the grid may have grown during playback
- close the Graph if mode changed
- ensure changes to population at the current generation are reflected when the Graph is opened
- ensure AutoFit is respected when window resized
- Identify now displays results of period detection before classification begins

Build 1120
- fixed pattern extent on Save for LtL/HROT patterns

Build 1119
- the LifeViewer home page now supports dragging and dropping pattern files onto the LifeViewer window

Build 1118
- first phase of pinch zoom support for touch devices

Build 1117
- preserve leading whitespace in comments

Build 1116
- fix too many alternates error message
- first part of [[ KILLGLIDERS ]] improvement

Build 1115
- Y coordinate direction (display only) can now be toggled with Settings>Advanced>Y Direction (hotkey F9)
	- the default is that the Y coordinate increases down the screen
	- this setting is saved for the current browser on the current device
	- note: this only changes how the Y coordinate is displayed and script commands that take
	cell locations (for example [[ PASTE ]]) always use Y increasing down the screen

Build 1114
- fix scale issue on displays with low resolution and browser zoom

Build 1113
- support scale x and y

Build 1112
- try alternate method of reading CSS scaling

Build 1111
- fix updateMe only updating the first embedded Viewer

Build 1110
- fix cursor position when CSS scaling used

Build 1109
- prevent keyboard events from propagating when handled

Build 1108
- don't put error links in forum codeboxes that look like they contain Python

Build 1107
- ignore comma after rule name
- fail pattern load if there is whitespace after RLE count
- fail pattern load if there is a leading zero in RLE count

Build 1106
- allow comment line in RLE pattern body

Build 1105
- performance improvements when loading pattern

Build 1104
- report alternating RuleLoader rules as not supported

Build 1103
- fixed Identify issue with Margolus period 2 oscillators

Build 1102
- fixed some Chrome warnings about getImageData
- improved Snapshot performance

Build 1101
- performance improvements when loading patterns
- embedded viewers with too big [[ WIDTH ]] specified will now attempt to keep aspect ratio rather than flag an error

Build 1100
- improved copy to clipboard compatbility on Safari mobile
- do not prompt when Randomizing the pattern if the only edit was playback from T=0
- fixed CSP issue with getting build number

Build 1099
- improved copy to clipboard compatibility

Build 1098
- fixed Identify on Margolus period 2 oscillators
- fixed Identify for alternating [R]Investigator states

Build 1097
- improved random fill performance at T=0
- fixed Cell Period Map rendering from website

Build 1096
- switch to using internal format for UI icons

Build 1095
- use Cmd in Help and tooltips on Safari

Build 1094
- support Mac Command key for keyboard shortcuts

Build 1093
- fixed nudging selection with HROT/LtL rules in Bounded Grids

Build 1092
- alert if memory is exhausted
- improve LifeViewer home page button handling

Build 1091
- fixed a Paste issue

Build 1090
- fixed Cell Period Table not always allowing scrolling when required

Build 1089
- improved Help->Info->Gridlines
- PCA, Margolus, Triangular and Hexagonal rules now only support Plane or Torus Bounded Grids

Build 1088
- fixed an issue with history cells for HROT rules

Build 1087
- fixed Margolus iterator issue

Build 1086
- improved alignment of Paste overlay

Build 1085
- enable Kill Gliders button for range 1 HROT rules
- treat [R]Investigator kill cells as dead for Identify
- fixed HROT pattern erasing cells leaving history
- fixed PASTE creating history cells when no alive cells died

Build 1084
- further performance improvement to Identify when calculating Strict Volatility

Build 1083
- improved Identify performance when calculating Strict Volatility

Build 1082
- added script command [[ LABELALIGN CENTER|LEFT|RIGHT ]] to set the text alignment for subsequent [[ LABEL ]] definitions
- added an alias

Build 1081
- improved multiverse handling

Build 1080
- fixed an issue with Advance Selection and growing the grid

Build 1079
- fixed [R]Super state 6 cells not always appearing in Identify Map

Build 1078
- fixed rendering issue when changing zoom levels

Build 1077
- fixed Select All with 2-state RuleLoader patterns
- fixed Select All in Bounded Grid with incorrect pattern size specification

Build 1076
- fixed RuleLoader range from grid boundary when cells are killed
- fixed Mod case for Identify
- fixed population calculation for HROT patterns that get killed at the grid boundary

Build 1075
- added support for some [R]Investigator named rules
- enabled Layers for 2 state RuleTree/RuleTable rules
- fixed an issue with Identify, Bounded Grids and [R]Investigator

Build 1074
- fixed [[ KILLGLIDERS ]] for Range 1 HROT rules

Build 1073
- fixed Paste resetting history

Build 1072
- fixed alive count with [R]Investigator patterns on bounded grids
- fixed some error validation messages for [[ COLOR ]]
- fixed speed slider position on Reset
- allow Niemiec states to be translated into [R]Super states
- fixed [R]Investigator range from grid boundary when cells are killed
- fixed which [R]Investigator states get killed when they hit the grid boundary
- fixed showing some Identify results when script errors are shown

Build 1071
- non-deterministic HROT rules can now randomize a parameter value by specifying # for the value
	- e.g. R1,C2,S2-3,R3,P100,#,55
		- survival% is 100%
		- birth% is random
		- immunity% is 55%

Build 1070
- fixed crash with HROT patterns hitting grid boundary

Build 1069
- fixed Identify for [R]Super

Build 1068
- fixed pattern validation for [R]History, [R]Super and [R]Investigator
- fixed Select All position when incorrect pattern size specified

Build 1067
- small performance improvement for [R]Investigator iterator

Build 1066
- fixed [R]Investigator alive state handling

Build 1065
- fixed rectanglur cells offset

Build 1064
- fixed selections
- fixed not cancelling current selection when new one is started via drag

Build 1063
- non-deterministic HROT rules now support an additional parameter
	- R1,C1,S23,B3,NM,P[survival%[,birth%,[immunity%]]]
	- survival% is the chance that a cell actually survives when the rule specifies it should
	- birth% is the chance that a cell is actually born when the rule specifies it should
	- immunity% is the chance that a cell survives when the rule specifies it should die
	- if only survival% is specified then that value is also used for birth%, and immunity% is set to 0%
	- if none are specified then a random value is used for survival% and birth%, and immunity% is set to 0%
- fixed a tiling issue with 1D RuleTable rules

Build 1062
- allow choosing a new drawing state during Change Cell State
- fixed RANDSEED not checking if it has an argument

Build 1061
- non-deterministic HROT rules now support defining the percentage chance of surviving a death, and chance of being born:
	- R1,C1,S23,B3,NM,P[survival%[,birth%]]
	- if the birth chance is not specified then the survival chance is used for both
	- if neither are specified then birth and survival chances are randomized

Build 1060
- added Change Cell State button to Selection menu (hotkey Alt-K)
	- prompts to click on a cell and then replaces all cells of that state with the current drawing state

Build 1059
- fixed playback speed from script commands

Build 1058
- fixed invalid Mods for Identify

Build 1057
- PCA and Margolus rules now show the engine generation in Generation Statistics when in Relative mode
- fixed Step Back not triggering AutoFit when enabled
- improved AutoFit for large Zoom values

Build 1056
- improved selection box rendering accuracy
- fixed playback speed slider initial position

Build 1055
- fixed more drawing with [R]Investigator rules

Build 1054
- fixed drawing with [R]Investigator rules

Build 1053
- fixed dead cell state choice during PASTE

Build 1052
- fixed deletion when HROT patterns hit the grid boundary

Build 1051
- minor performance improvement for [R]Investigator

Build 1050
- fixed Fast Lookup calculation happening if pattern was invalid

Build 1049
- fixed deletion when patterns hit the grid boundary

Build 1048
- fixed a sequencing issue with Undo/Step Back and PASTE

Build 1047
- fixed repository load with Investigator postfix

Build 1046
- renamed [R]Extended to [R]Investigator

Build 1045
- fixed dead cell handling in [R]Extended
- fixed handling of pattern dimension -1

Build 1044
- fixed Identify not displaying Life ended message when LOOP defined
- fixed Fast Lookup not being triggered for RuleTable patterns with 5 to 7 states
- fixed Identify with multi-state patterns
- improved Identify performance for [R]History patterns
- fixed Identify and Bounded Grids
- fixed COLOR error for [R]History lower case state names
- fixed state 3 cells for [R]Extended in Identify
- fixed [R]History no-trail states that get killed at the grid boundary
- fixed AutoFit on Bounded Grids with an infinite dimension
- Settings->Advanced->State Number now toggles displaying raw state number
- fixed dead Triangular cells not drawing at grid edge
- fixed HistoryFit for patterns with just pasted cells
- fixed minimum delete radius for HROT and [R]Extended algos

Build 1043
- allow negative time delta for slow salvos
- fixed Bounding Box for Identify [R]History patterns with state 6

Build 1042
- added experimental syntax for slow salvos
	- [[ PASTET t PASTE rle x y XT dx1 dt1 dx2 dt2 ... dxn dtn ]]
	- [[ PASTET t PASTE rle x y YT dy1 dt1 dy2 dt2 ... dyn dtn ]]

Build 1041
- fixed HROT bounding box calculation

Build 1040
- fixed drawing with [R]Extended

Build 1039
- fixed [R]Extended for Hex neighbourhoods

Build 1038
- fixed RuleLoader algo issue

Build 1037
- fixed a crash in Help

Build 1036
- added B0 support to [R]Extended rules

Build 1035
- fix [R]Extended Y axis

Build 1034
- reduce memory usage when reading comments
- added experimental support for [R]Extended rules
- fixed Mod for [R]Super with state 6
- fixed vertical positioning on Hexagonal grids
- fixed [R]History state 6 cells at grid edge
- Fast Lookup now supports RuleTree rules with up to 16 states
- fixed THUMBLAUNCH when used with RANDOMIZE or RANDOMIZE2

Build 1033
- made T Min/Max mod the period for Help->Info->Identify

Build 1032
- added the generation at which Identify finds the minimum and maximum Spaceship or Oscillator population and bounding box to Help->Info->Identify

Build 1031
- made hexagons more regular

Build 1030
- fixed Nudge Selection boundary for HROT/LtL rules

Build 1029
- fixed Layer colours for dead cells in Generations rule
- fixed Bounding Box when cells cleared at grid boundary

Build 1028
- New Pattern and Change Rule will now detect rule name from pasted RLE
- allow Snow to fall through cell borders

Build 1027
- fixed Nudge Selection boundary for 2-state rules

Build 1026
- further improvements to illegal state handling

Build 1025
- fixed overlay Bounding Box calculation when not overlay cells exist

Build 1024
- improved COLOR validation
- fixed illegal state error handling

Build 1023
- Fast Lookup now gets created automatically in the background and will be enabled as soon as ready

Build 1022
- Fast Lookup now supports @TABLE hexagonal neighbourhoods

Build 1021
- performance improvements for Fast Lookup

Build 1020
- disable Copy as MAP for B0 rules
- improved Fast Lookup initialization performance

Build 1019
- display last benchmark time in Help->Pattern
- display progress bar during Fast Lookup initialization with Cancel button

Build 1018
- added more information to Help->Info->Pattern about Fast Lookup

Build 1017
- fixed issue when switching Fast Lookup off for RuleTree rules

Build 1016
- added Settings->Advanced->Fast Lookup (hotkey F7) to toggle Fast Lookup for supported RuleLoader rules

Build 1015
- added experimental faster algo for RuleLoader @TREE and @TABLE rules
	- currently enabled with [[ FASTLOOKUP ]] script command
	- supports Moore neighbourhood rules with 2 to 8 states
	- supports von Neumann neighbourhood rules with 2 to 32 states
	- note: it can take several seconds to initialize for 5 to 8 state Moore @TABLE rules

Build 1014
- improved COLOR validation error messages

Build 1013
- align Help->Scripts->Colours with current rule

Build 1012
- further improvements to COLOR element validation

Build 1011
- improved COLOR element validation

Build 1010
- fixed AutoFit for empty Hex patterns
- fixed Triangular selections being one cell too wide
- fixed [R]History state colours not being able to be changed with state numbers
- fixed creating a Custom Theme when an invalid state number specified for a colour
- fixed COLOR dead and COLOR DEAD sometimes referring to different states
- fixed not creating a Custom Theme when some [R]History colours changed
- fixed DEAD vs DEADRAMP order for [R]History

Build 1009
- added Strict Volatility support for 2-state RuleLoader rules
- fixed incorrect births and deaths count for 2-state VN RuleTree rules
- added Settings->Clipboard->Copy as MAP (hotkey Alt-M) to copy to the clipboard the MAP equivalent of a 2-state RuleLoader rule
- fixed AutoFit not updating after all edits

Build 1008
- fixed HROT rules not rejecting Bounded Grid with shift
- improved Spaceship detection for single cell ships

Build 1007
- fixed an edge case for Klein Bounded Grid definition
- make canonical form of Torus Bounded Grid shift modulo width or height
- limit maximum specified Torus shift to +/- 1000000

Build 1006
- reduce maximum HROT Gaussian range to 50

Build 1005
- fixed PASTE not pasting multi-state cells in left or right tile of the grid
- improved Cell Period Table paging
- removed Bounding Box from Identify results for Hexagonal or Triangular grids

Build 1004
- fixed PASTE not pasting 2-state cells in left or right tile of the grid
- always include both height and width in Bounded Grid canonical format (excluding Sphere)
- Page Up and Page Down buttons on the Cell Period Table now scroll multiple lines at a time

Build 1003
- you can now scroll the Cell Period Table by dragging with the mouse/touch
- increased maximum major grid line interval to 32
- Undo/Redo now triggers AutoFit if enabled

Build 1002
- fixed greyed out colour for Grid button grid lines

Build 1001
- fixed allowing too small Bounded Grids for HROT/LtL rules
- fixed patterns with CXRLE Pos being allowed too close to grid boundary

Build 1000
- fixed a crash on LifeViewer home page when "View" clicked during pattern identification
- fixed making a selection with zero population
- fixed selection box on square grid at Angle 0
- fixed Close Errors button not being hidden when Settings displayed
- AutoFit now reacts to cell drawing when enabled
- fixed Nudge overwriting current paste buffer

Build 999
- fixed Fit Zoom with odd dimension Bounded Grids
- fixed Errors being hidden after toggling Settings on and off
- fixed Hexagonal grid not always drawing top or bottom row of cells
- fixed cell drawing and Undo with cells drawn because of clipping a Bounded Grid
- fixed [R]Super bounded grid cell colour at ZOOM < 1

Build 998
- fixed grow grid trigger for HROT rules
- fixed Undo/Redo records after grid grows
- fixed starting drawing outside a bounded grid

Build 997
- added buttons to scroll the Cell Period Table if it is too long to fit in the window
- fixed Klein Bounded Grid with shift
- fixed vertical alignment of legend boxes on Cell Period Table and Cell Period Map
- disable Tilt when in Draw or Edit mode or when Selection or Paste box is active

Build 996
- fixed COLOUR command allowing invalid state numbers
- fixed RLE decoder when size specified but no rule

Build 995
- fixed Help->Themes for multistate patterns with 255 or 256 states
- fixed AutoFit on STOP
- fixed Triangular grid cell location
- fixed [R]History custom marked states being used with all Themes and not just Custom
- fixed error message if [R]Super used with HROT rule definition
- fixed PCA rules in Bounded Grid with infinite dimension
- fixed incorrect range in rule neighbourhood tooltip

Build 994
- added notification when Cell Borders switched on or off via hotkey
- fixed potential crash when drawing triggering a grid growth
- moved "Info Bar" button from "Settings->Display" to "Settings->Advanced"
- moved "Integer Zoom" button from "Settings->General" to "Settings->Display"
- added "Settings->General->Fit Selection" (hotkey Ctrl+F) to fit the selection to the display
- fixed pattern AutoFit after Identify with Track enabled
- fixed Still Life detection for Margolus rules
- fixed Bounding Box issue if pattern died during Identify analysis

Build 993
- fixed Identify for Margolus rules that have an identical pattern in two consecutive generations

Build 992
- several fixes for Identify Mod for Margolus rules

Build 991
- hide Help->Script->Colours items that are not relevant to the current rule
- fixed Undo not restoring dead states for PCA rules

Build 990
- fixed odd period case for Margolus rules

Build 989
- fixed period 1 case for Margolus rules

Build 988
- added Strict Volatility for Margolus rules

Build 987
- only draw Bounded Grid in the bottom layer

Build 986
- fixed PASTE overwriting dead cells with empty cells

Build 985
- addded Copy Position and Copy View buttons to Settings->Clipboard menu
- fixed "Life ended at" messages not appearing consistently

Build 984
- fixed Layers for RuleTable rules
- all Themes now compute history

Build 983
- fixed Undo/Redo and Reverse Playback buttons

Build 982
- ignore THEME command for rules that don't support Themes
- fixed background colour brightness on multi-state patterns with Layers
- fixed an issue with Thumbnails

Build 981
- fixed pattern border checking for loading, drawing, and PASTE

Build 980
- fixed incorrect error message when local @RULE in pattern RLE is invalid

Build 979
- fixed issue with PASTE on HROT/LtL patterns being ignored for first and last tile in a row

Build 978
- undo now restores [R]History and [R]Standard dead cells

Build 977
- fixed issue with Zoom and enabling Waypoints

Build 976
- disable Kill Gliders button for unsupported rules
- draw off grid regions for Triangles and Hexagons

Build 975
- fixed Custom theme being locked if only Grid or Grid Major colour changed

Build 974
- map Niemiec states to [R]Super: x -> 15, y -> 17, z -> 19

Build 973
- only exclude multi-state RuleTable rules from Heat and Temperature
- use [R]Super for patterns containing Niemiec states "x", "y", and "z"

Build 972
- fixed KILLGLIDERS deleted state for [R]History patterns
- removed support for Niemiec state 'y' since there is no [R]History state to map to
- hide Heat and Temperature for multi-state patterns
- fixed a crash when the pattern is a single 'x'

Build 971
- lock Zoom control and disable Pan and Zoom if AutoFit is enabled
- fixed AutoFit with empty patterns
- made a minor adjustment to Cell Period Map colour contrast

Build 970
- reduced safe border for HROT/LtL patterns
- disable KILLGLIDERS for HROT/LtL patterns
- adjusted Cell Period Map period colour contrast
- fixed Triangle Paste overlay

Build 969
- fixed spaceship Mod issue

Build 968
- fixed Mod for two cases
- ignore PASTE for 'none' rule

Build 967
- fixed another KILLGLIDERS edge case
- fixed grid growth not being triggered correctly by HROT large range patterns
- fixed PASTE with 3 states

Build 966
- better align Triangular with Rectangular cells on Triangular grid

Build 965
- fixed COLOR dead not referring to just died colour for 2-state rules
- fixed Identify Rot90 detection
- fixed drawing near the grid boundary causing a crash when pattern run for HROT rules
- fixed an edge case in KILLGLIDERS

Build 964
- fixed another case of Identify allowing Rot90 with a Mod that ins't quarter of the period
- fixed COLOR BACKGROUND not setting the background colour in all rules
- fixed COLOR setting for states 0-2 of the 'none' rule
- disable Save button if invalid pattern loaded
- fixed Shrink Selection and Select All for [R]History rules
- fixed AutoFit for Margolus patterns in Bounded Grids
- fixed AutoFit for patterns on Bounded Grids with an infinite dimension
- fixed Triangular grid horizontal alignment on AutoFit

Build 963
- fixed incorrect cell Y coordinate display

Build 962
- fixed more [R]Super cell states killed at the grid boundary
- fixed "Life ended at" message when CXRLE Gen defined

Build 961
- clip drawing to Bounded Grid
- fixed [R]Super cell state killed at the grid boundary
- fixed Identify allowing Rot90 with a Mod that isn't quarter of the period
- fixed Cross Surface allowing infinite dimension
- moved Bounded cell colour in Help->Info->Identify

Build 960
- ensure Klein shifts are 1 if set
- disable KILLGLIDERS for patterns in Bounded Grids
- fixed Bounded Grid AutoFit

Build 959
- fixed non-canonical Klein bounded grid format on save
- fixed dying state for 2-state patterns when pattern killed at grid boundary

Build 958
- fixed AutoFit stuttering in some cases

Build 957
- added Bounded Grid border to Cell Period Map
- added State 6 period count to Help->Info->Identify

Build 956
- fixed empty hexagonal patterns with Bounded Grids not centering properly

Build 955
- KILLGLIDERS now respects state 4 in [R]History
- remember camera zoom when all cells die in HistoryFit mode
- fixed AutoFit for Hexagonal grids

Build 954
- disable Identify for Bounded Grids with an infinite dimension
- Identify now considers all cells in a Bounded Grid (so only Oscillators or Still Life patterns are recognized)

Build 953
- change "Saved" to "Pattern Saved"

Build 952
- fixed Klein bottle with twist and shift
- don't pause playback when all cells die if LOOP defined and enabled
- when selection saved display "Selection Saved"
- for cell info use [bounded] for Bounded Grid cells and [boundary] outside

Build 951
- ensure State 6 label fits in Cell Period Map legend
- fixed Rot180 not being detected by Identify
- disable Heat and Temperature for Identified patterns in Bounded Grids
- make canonical version of Klein Bounded Grid show both dimensions

Build 950
- fixed PASTE not working at T=0 for HROT/LtL rules

Build 949
- allow Bounded Grid definitions with missing or all infinite dimensions
- check for illegal pattern states in @TABLE rules
- allow comments in @ICONS colour definitions
- scale Cell Period Map legend to text
- remove RuleTable patterns when they hit the grid boundary
- cell info now shows cells outside a Bounded Grid as [bounded]

Build 948
- fixed RuleTable B0 error
- fixed population calculation for RuleTable rules in Bounded Grids
- ensure @TABLE and @TREE header values are read as integers

Build 947
- fixed RLE with initial Niemec state not being recognized
- fixed [R]History with Bounded Grids

Build 946
- fixed Identify issue with grid growth when computing occupancy for spaceships
- fixed Clear Outside bounding box issue for [R]History rules
- added support for RuleTable B0 rules in Bounded Grids
- fixed Life ending during Identify analysis

Build 945
- fixed Identify failing

Build 944
- fixed crash when resizing Cell Period Map in PopUp Viewer after reset

Build 943
- added state 6 [R]History and [R]Super cells to Cell Period Map
- remove dimensions from "Pattern too big" message
- only allow even Bounded Grid shifts for Margolus rules

Build 942
- fixed digonal spaceship Mod orentiation
- state 6 [R]History and [R]Super cells are now included in Identify detection

Build 941
- fixed diagonal spaceships diagonal flip

Build 940
- fixed spaceships allowing Rot180

Build 939
- fixed an issue with Clear Selection not fully removing state 6 cells

Build 938
- fixed initial population issue with HROT patterns

Build 937
- added more composite transformations

Build 936
- renamed some more transformations and added FlipDiag

Build 935
- fixed Identify not checking for assymetric state6 cells in [R]History patterns
- renamed some transformation types
- fixed valid transformation types for spaceships

Build 934
- fixed a crash during pattern load

Build 933
- performance improvements to Identify

Build 932
- fixed initial population count for multi-state rules
- performance improvements for HROT/LtL 2-state Identify

Build 931
- improve Show Pattern Error detection for forum

Build 930
- handle repository rule files with missing final end of line

Build 929
- further fixes for KILLGLIDERS

Build 928
- added period detection time to Help->Info->Identify

Build 927
- fixed an issue with KILLGLIDERS

Build 926
- further small performance improvement to Identify

Build 925
- small performance improvement to Identify strict volatility calculation
- Identify search time is now shown in Help->Info->Identify

Build 924
- regenerate Cell Period Map image on resize
- fixed some invalid patterns not generating "Show Pattern Error" message on forum

Build 923
- improved KILLGLIDERS when two or more gliders are diagonally aligned in the same direction
- only allow even shifts in bounded grids for Triangular rules
- fixed an issue with HROT Custom Neighbourhoods with Triangular or Hexagonal neighbourhoods
- show Esc button if there are script errors
- update Population Graph if pattern edited at T=0

Build 922
- fixed pattern size check
- enable Density for Margolus Still Life
- fixed issue with HROT multi-state bounding box for Identify

Build 921
- Population Graph vertical axis scale now based on selected data types

Build 920
- fixed population count issue for HROT/LtL patterns with HISTORYSTATES

Build 919
- fixed issue with canonical Klein bounded grid string

Build 918
- fixed population calculation (again) for [R]History state6 cells
- fixed population calculation for [R]Super state6 cells

Build 917
- performance improvement for computing rotor and stator for 2-state Life-like patterns

Build 916
- added an extra digit to Density display
- fixed population calculation for [R]History state6 cells

Build 915
- fixed a potential crash when growing the grid

Build 914
- add State 2 Rotor % to Cell Map Table and Help->Info->Identify
- fixed bounding box for Still Life patterns
- align Gen menu statistics at bottom of display when not all are displayed
- fixed population calculation for Super rules in Hex or von Neumann neighbourhoods with state 6 cells

Build 913
- show Density as a value from 0 to 1
- only show current population for Still Life patterns that start not as a Still Life

Build 912
- add Density to Still Life statistics

Build 911
- fixed an issue with KILLGLIDERS

Build 910
- fixed Strict Volatility for periods > 65535
- increased maximum search generations for Identify
- improved Identify for alternating rules

Build 909
- fixed issue with Identify and [R]History bounding box
- fixed diagonal spaceship Mod
- fixed Mod for alternating rules
- maximum period for Strict Volatility calculations is now based on memory needed

Buid 908
- fixed spaceship Mod transformations
- fixed issue with grid growing during spaceship Mod calculation
- fixed bounded box size with state 6 [R]History cells

Build 907
- fixed switched Rot90 labels

Build 906
- fixed missing Mod transformation for [R]Super spaceships
- ensure spaceship Mod calculation takes into account each generation bounding box size

Build 905
- fixed compound Mod transformations

Build 904
- handle Mod detection when multiple transformations are valid
- fixed PCA rotor and stator calculation

Build 903
- remove symmetry for spaceship full period

Build 902
- fixed Oscillator detection issue

Build 901
- add ActiveCells, Temperature and Volatility calculations to Identify for multi-state rules or periods > 65536

Build 900
- fixed crash with odd sized bounded grid
- fixed notification background persisting across Viewers
- fixed starfield colour persisting across Viewers
- fixed [R]History states not being updated correctly when rendering hexagons or triangles

Build 899
- fixed issue with Generations population with 192 states
- removed "Type" display for Identify since the type is in the header
- fixed an issue with [R]History state2 cells not rendering on pattern load if there are PASTE commands

Build 898
- moved Last Identify button to Pattern submenu

Build 897
- new Identify engine
- fixed a typo in Help
- fixed pattern decoder searching beyond the first line for a rule name
- initialize all state colours to white (so there aren't transparent cells if illegal states used in a pattern)
- fixed Triangular and Hexagonal Bounded Grid border colour

Build 896
- fixed issue with computing 2-state Mod
- renamed some Mod symmetries

Build 895
- fixed more issues with computing Mod

Build 894
- fixed issue with computing Mod

Build 893
- fixed issue with Identify and orthogonal spaceships

Build 892
- improved Identify spaceship detection

Build 891
- fixed HROT/LtL default custom theme
- fixed Generations issue with 192 states
- improved 100% representation in Cell Period Table and Help->Info->Identify
- changed "FlipXorYorRotCWorCCW" to shorter "FlipXorYorRot"

Build 890
- fixed Klein and Cross-Surface Bounded Grids for Triangular rules
- disable Sphere Bounded Grid for Triangular rules
- fixed playback stopping after 1 generation if initial pattern was empty

Build 889
- fixed step being locked to 1 after all cells die
- fixed [R]History state6 cell processing with Bounded Grids
- fixed [R]Super patterns hitting the boundary not always being visually deleted
- fixed Random Fill not correctly overwriting state 6 [R]History cells

Build 888
- fixed issue with custom colours for RuleTree or [R]Super rules

Build 887
- show cell as [boundary] if outside grid
- display "No live cells" if Go To Gen used with no alive cells
- improve Undo handling at T=0
- fixed Margolus patterns not displaying "Life ended at" if stepping back

Build 886
- fixed Spherical Bounded Grids for PCA rules
- fixed specifying history state colour for [R]History rules

Build 885
- draw the Population Graph below Identify results
- fixed Waypoint AutoFit issue with Margolus rules
- fixed custom PCA colours being persisted

Build 884
- fixed crash when PCA patterns hit grid boundary
- changed "Empty Pattern" message for Select and Identify

Build 883
- show DYINGRAMP for 3-state Generations rules in Help->Themes
- fixed not being able to specify custom PCA N colour
- fixed Icon state numbering in Help->Info->Pattern

Build 882
- increase maximum STARTFROM generation to 4194304
- "Life ended at" message now includes PASTEs
- fixed COLOR dead to refer to Dead colour and not Background

Build 881
- don't display "Life ended at" if there are pending PASTEs
- remove unused colour from Help->Themes for 3-state Generations patterns
- added script command [[ NOSNOW ]] to disable secret snow

Build 880
- adjusted Dying colour for Mono and Inverse Themes
- playback will now stop when Life ends (unless there are pending PASTEs)

Build 879
- fixed Alt GridLines button not having correct visual state
- only apply custom colours when Custom Theme active

Build 878
- disable Alt GridLines if GRIDMAJOR is not 2
- Custom Themes are now based on the default Theme for the rule type

Build 877
- don't show Waypoint toggle message from UI control
- re-enable STOP
- improve error message when illegal PCA state name specified for COLOR
- fixed a crash when Waypoints enabled at first Waypoint
- fixed an issue where Generations was fading at double speed
- added Mod FlipXorYorRot90or270

Build 876
- hide Cell Period Map and Cell Period Table if Help or Settings open
- fixed bounding box issue with Strict Volatility

Build 875
- ensure PCA rules continue to process history when all alive cells die
- don't persist PCA state colour
- fixed setting state colour with a number or state name not creating a Custom Theme
- fixed issue with Help displaying colour boxes or icons incorrectly when UIBACKGROUND and HELP colours are the same
- fixed "Life ended at" message after Undo
- fixed Mod calculation for HROT Generations patterns

Build 874
- fixed "Life ended at" message when Step Back causes cells to become alive after all dead
- show @ICONS definitions in Help->Info->Pattern
- moved Help->Info->Stars above Help->Info->Randomize
- Help->Info->Themes now correctly shows GRIDMAJOR as 2 for Margolus Themes that have a non-zero GRIDMAJOR

Build 873
- fixed "Life ended at" message for Generations patterns
- don't display GRIDMAJOR colour in Help->Themes if GRIDMAJOR is 0
- updated Help->Info->Engine

Build 872
- only display "New Pattern" when there are no cells in the pattern
- updated MCell Theme
- fixed Generations patterns being deleted at the grid border

Build 871
- ensure "none" rules report neighbourhood as "none"

Build 870
- fixed random cell generation for PCA rules

Build 869
- fixed Generations patterns hitting grid extent
- fixed Identify when patterns die
- fixed StartFrom when patterns die

Build 868
- change how DYING is reported for 3 state Generations patterns

Build 867
- fixed reverse playback for PCA alternating patterns
- fixed DYINGRAMP for a few Themes

Build 866
- enable Strict Volatility for [R]Super rules

Build 865
- re-enabled Mod for Spaceships
- fixed Identify for [R]Super spaceships

Build 864
- fixed issue with Dying colours not being defined correctly
- when constrasting colours are automatically generated for Themes ensure they are visually different
- always display grid line settings in Help->Themes

Build 863
- ensure PASTE is processed even when all cells die in the same generation
- don't show "Life ended at" if there were no alive states originally in the pattern

Build 862
- fixed an Identify issue with PCA rules and Rot180

Build 861
- fixed Go To Gen not displaying generations when a Theme with no history is selected
- fixed clearing patterns hitting the boundary population calculation
- fixed Identify showing symmetry for Mod when it is the same as the Period

Build 860
- fixed issue calculating Mod for Identify

Build 859
- fixed [R]Super population statistics with state 6 cells
- fixed [R]Super not displaying "Life ended at" message when all cells die

Build 858
- fixed VIEWONLY and Error label width when THUMBNAIL used

Build 857
- fixed issue with metrics being forgotten when toggling Stats
- handle final generation for Generations rules when all cells die during Identify

Build 856
- improved error message for alternating rules with nested alternating aliases

Build 855
- fixed Select All for multi-state patterns in Bounded Grids
- fixed Reset and Step Back to T=0 clearing [R]History state 2 cells
- Identify with alternating or Margolus rules no longer shows period 2 cells as part of the Rotor

Build 854
- fixed issue with Select All and multi-state patterns

Build 853
- fixed Major GridLines button state when interval 0 used

Build 852
- fixed a cosmetic issue with Step Back

Build 851
- fixed Rainbow rendering after Step Back to T=0

Build 850
- fixed PCA rules not calculating deaths correctly

Build 849
- fixed Custom Theme being greyed out when only GRIDMAJOR customised

Build 848
- fixed Density calculation for PCA rules in Bounded Grids

Build 847
- hide population data selection buttons for all Bounded Grid types

Build 846
- improve handling of Waypoint messages at T=0

Build 845
- editing cells in Rainbow mode was drawing new cells in a single colour in Bounded Grids
- Tilt hotkeys now skip dead zone

Build 844
- fixed Fast Identify not being disabled for relevant rules
- fixed Identify and Fast Identify being disabled if a non-deterministic and then deterministic pattern is loaded

Build 843
- fixed rainbow mode being allowed for unsupported rules
- fixed reset when rainbow switched on/off

Build 842
- added PCA Themes
- made Help->Themes specific to the rule
- fixed small rounding issue when creating cell colours

Build 841
- re-enable Themes Help topic for Margolus rules

Build 840
- fixed Niemec cells in [R]Super patterns
- fixed bounding box issue with [R]Super patterns

Build 839
- stop scaling Population Graph when maximum samples reached
- show a message on the Population Graph if no data selected to display
- don't allow the Population Graph with the none rule
- hide Themes Help topic if not relevant to current rule
- fixed error message for PCA rules with History postfix
- added a shadow to the colour boxes displayed in Help

Build 838
- fixed Margolus/PCA rules T counter not changing after pattern died
- fixed playback delay after an undo which causes history calculation

Build 837
- fixed regression in Identify calculating Mod for PCA patterns

Build 836
- hide statistics during pattern load

Build 835
- made remaining shadow colours use the UI background colour
- fixed the T button looking selected during pattern load

Build 834
- made more shadow colours use the UI background colour

Build 833
- fixed an issue with Icon shadow colour when UI background colour is white

Build 832
- frame rate warning now uses the Error colour
- re-ordered some Help->Info->Identify entries

Build 831
- use UI background colour for dimming when Help or Settings menu displayed
- better error message if [[ TITLE ]] argument is not a quoted string

Build 830
- added Population Graph data selection to Help->Info->Graph
- fixed issue with VIEWONLY label appearing in the wrong place
- add hotkey Ins to show Help sections within a topic
- further performance improvement for Identify with 2-state patterns
- fixed newlines not being converted in waypoint labels

Build 829
- further improved categorisation of some Help->Info items

Build 828
- improved categorisation of some Help->Info->Theme and Help->Info->UI items

Build 827
- improved Identify performance for 2-state patterns

Build 826
- disable Identify for non-deterministic rules
- improve Cell Period Map fit

Build 825
- added data toggles to population graph
	- hotkey Shift F3 to toggle population
	- hotkey Shift F4 to toggle births
	- hotkey Shift F5 to toggle deaths

Build 824
- fixed an issue with computing strict volatility with patterns with many cells

Build 823
- fixed an issue with HROT rules and bounded grids

Build 822
- added Cell Period Map background and grid colours to Help->Info->Identify
- fixed Identify Mod for Generations rules again

Build 821
- fixed Identify Mod for Generations rules
- added period legend colour information to Help->Info->Identify

Build 820
- fixed snapshot issue every 64 generations

Build 819
- fixed stars not drawing outside actual grid extent during Theme change involving background colour change

Build 818
- fixed an issue with two line notifications
- improved the progress bar for Go To Generation
- if Rainbow mode specified in script commands then make it the default on hard reset

Build 817
- added Settings->General->Last Identify to display last Identify results (hotkey Shift F6)

Build 816
- improve contrast for some Cell Period Map values
- prevent hotkeys from switching to Cell Period Map or Cell Period Table when strict volatility not calculated

Build 815
- changed Cell Period Map style

Build 814
- improved position and style of Cell Period table
- improved style of Cell Period Map legend
- fixed pattern information for too big patterns

Build 813
- added cell period table to Identify results for Oscillators with strict volatility

Build 812
- use a smaller cell size for large cell period maps

Build 811
- use larger zoom for scales < 1 for cell map display

Build 810
- improved cell and border rendering for cell map display

Build 809
- improved cell period map display
- hotkey Shift-D to download cell period map
- fixed crash with Identify and 2-state RuleTable rules

Build 808
- draw cell period maps that are less than 1 cell per pixel
- performance improvements when computing strict volatility

Build 807
- hotkey Shift-F6 will now display any previous Identify result
- hide Identify controls when Settings menu open

Build 806
- fixed cell period map legend for strict volatility 1
- fixed cell period map legend text positioning
- fixed cell period map for alternating rules (including B0)
- fixed loading triangular rules

Build 805
- added legend to cell period map

Build 804
- added cell period map display option in Identify results for Oscillators
	- hotkey D to toggle

Build 803
- fixed most selection issues

Build 802
- fixed issue when too big patterns were crashing the Viewer

Build 801
- if strict volatility not available show it as N/A in results
- don't use fixed point for integer values in Identify results
- fixed custom Themes
- fixed selection being in the wrong place when actual pattern size is different than specified size
- fixed CXRLE Pos with bounded grids

Build 800
- fixed annotation coordinates in bounded grids
- fixed Arrow and Polygon view distance fading

Build 799
- fixed drawing multi-line Labels without shadows

Build 798
- added [[ POLYSHADOW (OFF) ]], [[ LABELSHADOW (OFF) ]] and [[ ARROWSHADOW (OFF) ]]
	- enable/disable shadows for subsequent annotation definitions
- fixed issue with KILLGLIDERS executing during reset
- fixed GRID AND GRIDMAJOR colours being ignored when THEME specified
- fixed incorrect pattern size when repository rule downloaded

Build 797
- fixed bounded grid cell placement

Build 796
- added cell counts for identified oscillators to Help->Info->Identify
- reduced memory usage for computing strict volatility
- increase maximum allowed period for strict volatility calculation to 65535

Build 795
- make Strict Volatility use fixed-point notation
- fixed issue with Help not closing properly when Identify launched

Build 794
- Identify will now compute Strict Volatility for oscillators in 2-state patterns (excluding RuleTable and Margolus rules)

Build 793
- fixed issue with initial display after RAINBOW disabled and pattern reset

Build 792
- clear animated notification when touch released outside Viewer
- faster animated notification

Build 791
- fixed issue with Rainbow mode and Themes without history
- added "#S" to strings as a substitution for random seed
- all HROT neighbourhoods now support non-deterministic births and survivals by adding ",P" (for probabilistic) to the end of the rule

Build 790
- fixed issue with step back

Build 789
- fixed issue with RuleTable and none rules ignoring [[ COLOR BACKGROUND ]]

Build 788
- added non-deterministic rule specified with LtL/HROT NR neighbourhood
	- the neighbourhood is Moore but each birth and survival is based on probability
	- the probabilities are randomly generated and can be made repeatable by specifying a [[ RANDSEED ]]

Build 787
- fixed an issue with rule name validation
- don't show cell display workaround for chromium builds >= 107

Build 786
- hide priority notifications when Settings or Help are opened
- made "Life ended at..." notification consistent

Build 785
- colour animated notifications now use UI Foregrount and Selected colours

Build 784
- hotkeys in tooltips used the Help colour
- Help menu uses the UI locked colour for disabled items

Build 783
- added [[ COLOR HELP ]] to define a custom help text colour

Build 782
- VIEWONLY label now uses the UI foreground colour

Build 781
- add shadow to greyed out icons

Build 780
- fixed the wrong grid icon being used for square neighbourhood
- UI controls with icons now have a shadow

Build 779
- fixed issue with KILLGLIDERS

Build 778
- fixed problem with reset after Rainbow mode switched on
- restructured some Settings menu options with new General category
- added Settings->General->Save View and Settings->General->Restore View to save and restore the camera

Build 777
- allow T menu in VIEWONLY mode

Build 776
- extend cell display workaround warning to Brave browser

Build 775
- fixed initial population count for HROT generations rules

Build 774
- fixed setting custom colours for Generations and HROT rules

Build 773
- add OK button to Help warning to permanently hide the warning

Build 772
- make warning message specific to Windows Chrome

Build 771
- fixed an issue with [[ PASTEMODE ]] interfering with UI paste

Build 770
- improve Wolfram validation message
- give warning message if on a version of Chrome that needs a workaround to display cells

Build 769
- ensure major grid lines start at cell 0, 0 (for unbounded grids)
- grey out Snap Angle if grid type doesn't support rotation

Build 768
- revert Chrome 103 cell display fix due to slowdown in Chrome 106

Build 767
- improved repository error reporting

Build 766
- improved performance when fitting long labels to UI controls
- fixed an issue with detecting duplicate alternates for LtL/HROT rules
- untoggle Kill Gliders UI control when locked

Build 765
- fixed an issue with HROT rule validation

Build 764
- spherical bounded grid now supports flipping the axis
	- adding a '*' after the definition flips the axis (e.g. :S30*)

Build 763
- fixed an issue validating alternating rules

Build 762
- added B0 emulation to HROT 2-state rules

Build 761
- disable dragging in when UI disabled

Build 760
- added two new range-1 triangular neighbourhoods:
	- Triangular Biohazard (postfix LB)
	- Triangular Radiation (postfix LR)

Build 759
- ignore pattern specified width and height for bounded grid position

Build 758
- more accurate cell location when using hexagons
- report different custom or weighted neighbourhoods as an error for alternating rules

Build 757
- more accurate cell location when using rectangles on triangular grid
- hide notifications when Help or Settings opened
- add rectangular grid icon

Build 756
- fixed issue reading hex colour specification for some elements

Build 755
- new script command [[ RANDCELLS W H ]] defines a box of random cells
	- must be used after [[ RLE ]] or [[ PASTE ]] commands
	- W and H specify the width and heigh of the box (from 1 to 4096)

Build 754
- [[ COLOR ]] command now accepts hexadecimal colour specification (must be # followed by six hex digits)

Build 753
- rule label tooltip now includes neighbourhood
- [[ TITLE ]] and waypoint text now support #D for neighbourhood name

Build 752
- added new UI controls in Settings->Advanced:
	- Stop All: stops all running LifeViewers (hotkey Shift Z)
	- Stop Others: stops other running LifeViewers (hotkey Z)
	- Reset All: resets all LifeViewers (hotkey Shift R)
	- Snap Angle: snaps camera angle to nearest 45 degrees (hotkey Alt /)
- hotkey Alt < rotates the camera left 45 degrees
- hokey Alt > rotates the camera right 45 degrees

Build 751
- improved selecting cell accuracy on hex grids

Build 750
- fix Hexagonal empty pattern zoom and camera position

Build 749
- fix deaths and population when [R]Super cells killed by state 6

Build 748
- disable [R]History and Hex Tripod or triangular neighbourhoods

Build 747
- report [R]Super does not support Hex Tripod
- fix [R]Super hexagon display
- report rules with multiple neighbourhoods defined
- fix [R]History state 6 for hexagonal and von Neumann neighbourhoods
- fix [R]Super hex state 6 issue

Build 746
- fixed an issue with grid growing during PASTE

Build 745
- added script command [[ RANDOMIZE2 ]] to create a random 2-state pattern

Build 744
- remove Mod information in Identify for Margolus and alternating rules

Build 743
- improve handling when rule fails to load
- add dead zone to Tilt slider

Build 742
- process any script commands when rule fails to load

Build 741
- hide cell info and selection boxes during initialization
- extended Tilt so range is now -5 to +5
- added hotkey @ to reset Tilt to 0

Build 740
- fixed an issue with Go To Gen in benchmark mode not growing the grid

Build 739
- fixed blank PCA patterns not showing "New Pattern" message
- fixed issue with redo

Build 738
- fixed Triangular rules with Torus bounded grid

Build 737
- Grid UI control now changes grid background when Themes change
- fixed PCA paste not working
- fixed invert selection for [R]Super rules

Build 736
- fixed PCA paste in OR mode
- fixed undo/redo with PCA double buffering

Build 735
- Grid UI control now uses grid colour for background grid

Build 734
- fixed "none" rule custom colours not displaying in Help
- fixed Identify sometimes failing with alternating HROT rules

Build 733
- fix died generation for HROT patterns hitting boundary

Build 732
- added [[ COLOR SELECTED R G B|name ]] to define the colour of selected cells during paste

Build 731
- clear history states when switching to Rainbow mode
- fix selections with #CXRLE Pos

Build 730
- don't show Bounded colour when bounded grid not defined

Build 729
- add UI colours to Help->Info->UI

Build 728
- added Settings->Advanced->Clear Drawing to clear all cells in the current drawing state

Build 727
- mark UI controls that are toggles with +/- in top right

Build 726
- added Settings->Clipboard->Copy All to copy the selection with comments
- added Settings->Clipboard->Paste To Seln to paste the clipboard into the current selection

Build 725
- created new Clipboard category in settings menu:
	- Open Clipboard: opens the clipboard as a pattern
	- Copy Original: copy the last loaded pattern to the clipboard
	- Copy Rule: copy the rule definition to the clipboard
	- Copy Nhood: copy a CoordCA neighbourhood definition to the clipboard

Build 724
- added two missing UI controls
	- Settings->Display->Integer Zoom (hotkey Shift 1) sets the Zoom to the nearest integer
	- Settings->Display->Center Pattern (hotkey Ctrl M) centers the pattern on the Viewer without changing the Zoom
- centered UI controls in Settings->Playback

Build 723
- temporary fix for [R]Super static tile issue

Build 722
- fix "Life ended at" message with [R]Super patterns
- don't allow Generations and Super to be defined together

Build 721
- experimental fix for blank canvas issue

Build 720
- improved [R]Super performance for some patterns

Build 719
- fixed issue with converting patterns to [R]History that are already [R]History

Build 718
- fix issue with undo/redo and cell states >= 128
- fixed allocation issue with HROT von Neumnann neighbourhoods

Build 717
- improve PASTE performance with blank cells

Build 716
- don't change camera if all cells die during Identify

Build 715
- implement [R]Super sub-pixel renderer

Build 714
- fixed issue with Advance Selection when all cells die in selection

Build 713
- [[ STOP ]] will now always define initial stop generation unless specified at a [[ POI ]]
- fixed Waypoint target when playback throttled

Build 712
- fix died generation

Build 711
- enforce WIDTH and HEIGHT limits

Build 710
- fix population graph screenshot height

Build 709
- Save Image and Save Graph will now download a png file

Build 708
- Go To Gen now supports trailing B for benchmark mode in the generation specification (e.g. 250B)

Build 707
- performance improvement when rendering 2-state patterns using Themes with no history

Build 706
- disable Identify, Fast Identify, Go to Gen and [[ STARTFROM ]] for [[ VIEWONLY ]] patterns
- don't assume Generations rule for multi-state patterns if pattern failed to decode

Build 705
- grey out rather than hide Settings Menu button when window too short
- disable Major Gridlines button when [[ GRIDMAJOR 0 ]] set

Build 704
- don't use alias names for rules when saving RLE

Build 703
- maximum grid boundary is now always drawn

Build 702
- fixed an issue with copying Themes

Build 701
- fixed issue with stop generation and Themes with no history

Build 700
- allow extra parameters in <meta> setting

Build 699
- the optional rule name postfix specified with the <meta> tag now allows postfixes beginning with "?"
	- <meta name="LifeViewer" content="/myrepository/rules/ ?action=raw">

Build 698
- fix overlay rendering glitch after ZOOM < 16x
- only show grid borders when both height and width at maximum

Build 697
- new LtL/HROT neighbourhood 'ND' for aligned Checkerboard

Build 696
- new LtL/HROT neighbourhood 'NF' for far corner/far edges rules
	- rule R parameter sets the default range for Corners and Edges
	- override R by specifying C<number> and/or E<number>
	- example: FarCorners rule would be: R2,C2,S2-3,B3,NFE1 (i.e. corners 2, edges 1)
- new script command [[ PLAYTIME ]] will show duration of last playback

Build 695
- further performance improvement for HROT Triangular rules

Build 694
- fixed a potential crash for unbounded LtL/HROT von Neumann neighbourhoods
- improved performance for HROT Checkerboard rules

Build 693
- added "Text" and "Error" colours to Help->Info->Theme when not customized
- improved performance for HROT Triangular rules

Build 692
- when a pattern fails to decode add a "Show Pattern Error" link which pops up the error details when clicked

Build 691
- show in which directions there are more states on the state UI slider in Draw mode
- fixed edit actions for 2-state RuleTable/RuleTree rules on odd generations

Build 690
- added a small dead zone in the speed slider to make it easier to select 1x speed
	- you can also set 1x by clicking the button to the left of the slider
- fixed CellBorders UI control not being set when CELLBORDERS script command specified
- added Hex RGB values to Help

Build 689
- you can now zoom out to -32x
	- hotkey Shift-3 now sets zoom to -32x

Build 688
- fix Tilt issue during frame rate measurement
- prevent script commands from altering camera controls not supported by the current rule
- align "Empty Pattern" messages
- step forward after step back was being ignored for the first step
- sort outer-totalistic Triangular aliases alphabetically

Build 687
- only show Age states in Help for rules that have them
- restore Hex grid support for LtL rules
- fixed issue with Triangular rules and grid alignment

Build 686
- fixed Alive cell count for "none" rules

Build 685
- fixed issue with UI controls being hidden after error report

Build 684
- restore Hex grid support for HROT rules

Build 683
- ensure frame rate is no lower than 60Hz

Build 682
- add extra frame time measurement information to Help->Info->Display

Build 681
- prevent flickering during frame rate measurement

Build 680
- don't jump to Script Help Topic if Help requested with script errors displayed

Build 679
- don't override GPS definition when STEP is 1x

Build 678
- fix incorrect speed setting in initial UI control

Build 677
- handle different refresh rates
	- measured frame rate is shown in Help->Info->Display

Build 676
- added Cancel Selection button to Select mode
- added Rand Pattern button to Settings->Pattern menu which randomizes the pattern but keeps the current rule

Build 675
- fix issue for Safari 12 on iOS

Build 674
- various fixes for Edit operations and [R]History state 6

Build 673
- fix Select All for [R]Super patterns

Build 672
- fixed a crash with multi-state HROT patterns hitting the grid boundary
- disable selection for none rules
- added Shrink Selection button to Edit mode (hotkey Shift-A)
- fix crash with grid growth
- when playback STEP size can not be reached show actual STEP attained in playback speed UI control

Build 671
- fixes to Waypoint playback speed

Build 670
- fixed Bounded cell colour in Help
- fixed state names when patterns have more states than the rule

Build 669
- fixed step size rounding

Build 668
- combine generations per step and steps per second controls and add 1x Speed button
- allow blank RLE to mean empty pattern
- fix menu colours when invalid pattern loaded
- LifeViewer window is 40px wider

Build 667
- Select All for Generations now ignores history states
- 2-state Random Fill (selection and paste) now use the current drawing state

Build 666
- don't show Heat for Margolus or alternating rules (including B0)
- fix state names for none rule
- fix neighborhood info for none rule
- increased the width of the current cell display
- disable Layers and Depth for none rule

Build 665
- fixed LOOP

Build 664
- fix elapsed time not being calculated for T >= 16384 with Identify
- fix Annotation positions
- [R]Super patterns were not loading

Build 663
- don't expand THUMBNAILs on Touch devices unless touch is released over Viewer
- ignore extra states for 2-state patterns when computing number of alive cells at pattern load
- disable [[ KILLGLIDERS ]] for non-2-state patterns
- fixed [[ STARTFROM ]] when multi-state patterns die
- don't create undo record if no selection is made
- add AGESTATES to Theme Help
- fixed an infinite loop when invalid [[ COLOR ]] element specified
- improve invalid Theme error message
- default grid size is now 512x256 (used to be 512x512)
- grid can now grow independently in X and Y direction
- fixed elapsed time not being calculated for T >= 16384 with [[ STARTFROM ]]
- enforce even bounded grid width and height for triangular LtL/HROT rules
- Select All was including bounding box for 2-state HROT/LtL patterns
- Cells outside a bounded grid are shown as "[Boundary]"
- when patterns are killed by hitting the grid boundary update the population and death statistics
- hotkey "m" will display Memory topic when in Help topics menu
- rectangular cells for triangular patterns were not being used for paste overlay
- fixed clear [R]History/[R]Super tooltips
- [[ STARTFROM ]] now stops if all cells die
- fixed rotate selection for hex rules
- fix janking during normal playback

Build 662
- ignore history states for Select All on PCA rules

Build 661
- Select All with an empty pattern now cancels any selection
- stop Identify iterating first generation with an empty pattern
- Identify now displays generation that pattern died

Build 660
- allocate TILT buffer on first use

Build 659
- annotation position now works with camera tilt

Build 658
- added experimental support to tilt the camera for square grids
	- script command [[ TILT <0.0..5.0> ]] defines tilt amount (can be used in POIs and Waypoints)
	- hotkeys ' and / to increase and decrease tilt
	- new range control in Settings menu to set tilt amount
- hotkey ? now toggles cell shape (for hex and triangular grids)

Build 657
- added hotkeys Ctrl-[ and Ctrl-] to tilt image

Build 656
- experimental mode7 support
- hotkey ; toggles tilt mode on/off

Build 655
- fix LifeSuper patterns with only dead cells stopping generating

Build 654
- revert create canvas for now

Build 653
- potential fix for flickering on Chromebook

Build 652
- extend TRACK range to +/- 8
- create canvas if it doesn't exist
- disable STARTFROM notifications if NOREPORT is enabled

Build 651
- don't reset playback direction on soft reset

Build 650
- fixed an issue when all cells died during Identify

Build 649
- Labels support variable substitution with #I for relative generation and #J for relative reversible generation
- fixed an issue with Margolus rules incrementing generation count when Stats display enabled

Build 648
- Labels support variable substitution with #H for reversible generation (for PCA and Margolus rules)

Build 647
- fixed an issue with edited state 6 [R]History cells not working after Reset

Build 646
- make 2-state HROT selection box consistent with Life-like equivalent

Build 645
- fixed an issue with inline Viewer window resizing incorrectly when loading rules from repository

Build 644
- fixed thumbnail mode on touch devices

Build 643
- fixed alive ramp on Step Back to generation 0
- fixed "Life ended at..." message not displaying if pattern died and then during playback new cells are added which all die

Build 642
- add #P for population to Label variable substitutions

Build 641
- Labels support variable substitutions with #G for current generation

Build 640
- fix bounded grids with RuleTree rules

Build 639
- Annotation zoom range visibility is now defined in separate script commands:
	- [[ LABELZOOMRANGE MINZOOM MAXZOOM|OFF ]]
	- [[ ARROWZOOMRANGE MINZOOM MAXZOOM|OFF ]]
	- [[ POLYZOOMRANGE MINZOOM MAXZOOM|OFF ]]
	- the "OFF" keyword defaults to a visible zoom range of the Annotation ZOOM/4 to Annotation ZOOM*4
	- these commands specfiy the visible zoom range for subsequent Annotation definitions
- new Annotation script commands to specify Annotation visibility based on distance in cells from viewpoint center:
	- [[ LABELVIEWDIST D|OFF]]
	- [[ ARROWVIEWDIST D|OFF]]
	- [[ POLYVIEWDIST D|OFF]]
	- the "OFF" keyword means no distance limit
	- these commands specify the visible distance from the viewpoint center for subsequent Annotation definitions
- Annotation visibility target script commands have been deprecated:
	- [[ LABELTARGET X Y D ]]
	- [[ ARROWTARGET X Y D ]]
	- [[ POLYTARGET X Y D ]]

Build 638
- fixed visual issue after deleting cells for RuleTable rules

Build 637
- [[ LABEL X Y ZOOM MINZOOM MAXZOOM ]] was ignoring ZOOM parameter

Build 636
- URLE move to 6bit format for 2-state patterns
- convert "Conway's Life" alias to "Life" to prevent compatibility issues with other tools

Build 635
- performance improvements to experimental URLE decoder

Build 634
- alternative experimental URLE decoder

Build 633
- fixed [[ KILLGLIDERS ]]

Build 632
- alternative experimental URLE encoder

Build 631
- fixed popup viewer scaling issue when loading rules from Repository

Build 630
- experimental new URLE encoder can now encode duplicate non-sequential rows

Build 629
- experimental new URLE encoder can now compress non-sequential duplicate rows

Build 628
- experimental new URLE encoder now has a state by state mode which gives better compression for most multi-state patterns

Build 627
- changed default B3/S23 alias to "Life"
- Select All and Save now work with Generations dying states
- experimental new URLE encoder detects used states in pattern for better compression

Build 626
- experimental new URLE encoder now supports up to 256 states

Build 625
- experimental new URLE encoder now uses two methods for [R]History rules

Build 624
- experimental new URLE encoder now supports up to 16 states

Build 623
- fixed Identify so [R]Super rules are as fast as 2-state rules for detection

Build 622
- improved compression of the experimental URLE 2-state pattern encoder (hotkey Ctrl-E will display statistics)

Build 621
- fix Identify statistics for oscillators that take some generations to form

Build 620
- bounding box was sometimes not being correctly sized when dead cells drawn
- experimental new URLE encoder (hotkey Ctrl-E) [no decoder]

Build 619
- fix error reporting after failed Repository lookup

Build 618
- don't create links for patterns that are too big

Build 617
- new [[ STARTFROM <generation> ]] script command to fast-forward to the specified generation on pattern load
- Settings->Playback->Go To Gen or hotkey Shift+N to navigate to the specified generation
	- a relative generation can be specified by prefixing the generation number with + or -
- new Cancel button (hotkey Esc) to stop Identify or Go To Gen

Build 616
- Step Back and Undo should now work correctly with [R]History states

Build 615
- experimental performance improvement for RuleTree von Neumann neighbourhood rules

Build 614
- better handling during repository rule load
- add missing QUALITY command description to Help

Build 613
- experimental performance improvement for RuleTree Moore neighbourhood rules
- Help toggle was not clearing if Help closed with Backspace

Build 612
- state names can now be used with the [[ COLOR ]] script command (part 1)
- re-enable Ctrl-C to copy Help
- fixed an issue with the Population Graph at sample limit
- increased maximum number of Population Graph samples to 524288

Build 611
- add keyboard shortcuts to tooltips for POI buttons and Universe buttons
- adjust states slider when picking states
- small performance improvement for von Neumann LtL/HROT rules
- state names are now displayed
- added support for @NAMES section in RuleTable/RuleTree rules

Build 610
- new menu button Settings->Pattern->Save Image will save an image of the current pattern in a new browser window
- new menu button Settings->Pattern->Save Graph will save an image of the current population graph in a new browser window
- remove canvas focus on touch devices
- if GRIDMAJOR is specified but is the same as the current Theme then don't create a CUSTOM Theme

Build 609
- remove blue border on Safari after copy

Build 608
- hotkey Shift+B now toggles the clipboard library in Edit mode
- added hotkeys to clipboard library tooltips
- mouse cursor no longer changes when moving over greyed-out controls

Build 607
- fixed [R]History colours

Build 606
- Identify now detects Mod transformations where the pattern is identical when rotated either CCW or CW as "RotCWorCCW"
- remove legacy colour management

Build 605
- Help topics can now be selected with hotkeys
- hotkey "Backspace" will close a Help topic

Build 604
- fix click or tap occasionally being ignored

Build 603
- CUSTOM theme button was not responding correctly

Build 602
- Identify now detects Mod transformations where the pattern is identical when flipped in either the X or Y direction as "FlipXorY"

Build 601
- fix Mod calculation for Identify

Build 600
- "Hexagons"/"Triangles" button is now "Use Rectangles"
- fixed "Einstein" alias
- added hotkey "Backspace" to Settings menu "Close" and "Back" buttons
- fixed Hexagonal grid camera positions
- fixed "Life ended at" message when KILLGLIDERS kills all live cells
- fixed population metrics for KILLGLIDERS

Build 599
- add Fast Identify button to Settings->Pattern
- fix issue with Fast Identify mode persisting

Build 598
- fix a crash with Identify if grid grows

Build 597
- fix missing highlight on range controls with touch devices

Build 596
- use case-insensitive match when loading rules from repository

Build 595
- tooltips now use a different colour for hotkeys
- hotkey Ctrl-P to toggle pause playback while drawing
- hotkey Alt-U to toggle autohide UI during playback
- hotkey Ctrl-D to toggle states display

Build 594
- fix snapshot missing last frame of history states
- hide selection size information when Help displayed
- added keyboard shortcuts to tooltips

Build 593
- improved graph rendering for smoother scaling

Build 592
- double digit Weighted neighborhoods were not showing correctly in Help->Info->Pattern

Build 591
- fix issue with HROT Weighted neighborhoods with negative counts

Build 590
- fix rendering issue for [R]History rules

Build 589
- fix rendering issue that caused an extra initial row and column of cells to be drawn at edge of grid
- fix when turning waypoints back on tracking the camera to the right location

Build 588
- fix issues with editing [R]History patterns

Build 587
- 20% performance improvement for LifeSuper algo (Moore)

Build 586
- fixed population count for [R]History rules with state 6 cells

Build 585
- display Weighted or Custom neighbourhood grid in Help->Info->Pattern
- fix issue with vertical UI sliders

Build 584
- [[ LABEL ]] and [[ ARROW ]] now support three ways of defining the zoom and zoom range:
	1. [[ LABEL X Y Z "text" ]] : zoom is Z, min zoom is Z/4 and max zoom is Z*4
	2. [[ LABEL X Y Z MAXZ "text" ]] : zoom is Z, min zoom is also Z, and max zoom is MAXZ
	3. [[ LABEL X Y Z MINZ MAXZ "text" ]] : zoom is Z, min zoom is MINZ, and max zoom is MAXZ

Build 583
- add missing space for T in Copy Position to clipboard

Build 582
- improved [[ KILLGLIDERS ]]

Build 581
- fix blank grid display when [R]Super pattern dies

Build 580
- cells on a Triangular grid can now be drawn as Triangles (the default) or Rectangles (faster)
	- toggle with hotkey / or Settings->Display->Triangles
	- override the default with script command [[ SQUARECELLS ]]

Build 579
- new script command [[ POIADDLABELS ]] will automatically create a POI from each Label definition
- new script command [[ AGESTATES <0..63> ]] defines the number of age states to display for a live cell when using Themes

Build 578
- hotkey Ctrl+J to copy rule definition to clipboard
- fix [[ KILLGLIDERS ]] deleting gliders one step too early in some cases

Build 577
- Settings->Pattern->Copy Rule will now copy the rule definition to the clipboard
	- note the rule definition will have blank lines removed

Build 576
- "B3/S23History" rule name is copied as "LifeHistory"

Build 575
- you can now fix the size of a Label so it doesn't scale with zoom [[ LABELSIZE <size> (FIXED) ]]

Build 574
- prevent clicks between States slider and Smart Drawing button from drawing on the background

Build 573
- fix UI slider range on scaled Viewers

Build 572
- hotkey Alt+G switches [R]Standard or [R]History to [R]Super
- hotkey Alt+H swtiches [R]Standard or [R]Super to [R]History
- hotkey Alt+J switches [R]History or [R]Super to [R]Standard
- kill gliders toggle is now on hotkey Ctrl+L
- [R]Super colours can now be customised with [[ COLOR <0..25> R G B|name ]]
- [R]Super paste can now paste and valid state with [[ PASTEMODE COPY ]]
- Help->Scripts->Colours was sometimes showing an incorrect number of states for the [[ COLOR ]] command

Build 571
- documented rainbow mode toggle hotkey in help (Alt+W)
- fixed a tiling issue for RuleTable rules

Build 570
- fixed issue with drag to select text not working after PopUp Viewer

Build 569
- fix PASTET in COPY mode for [R]History

Build 568
- add Rainbow toggle button to Settings->Display

Build 567
- ensure random fill% stays in range

Build 566
- new [R]Super colours
- abbreviate [R]Super state names in Help->Info->Theme

Build 565
- ensure paste can't create invalid states

Build 564
- fixed a bug with initial AutoFit on hex patterns

Build 563
- fixed a bug in Hash neighbourhood

Build 562
- fixed B0 with native triangular rules

Build 561
- fixed some bugs in [R]Super

Build 560
- new script command [[ EXCLUSIVEPLAY ]] will pause other Viewers when playback is started
- new script command [[ IGNOREEXCLUSIVE ]] will ignore pause requests from other Viewers

Build 559
- fix broken 8-bit rules

Build 558
- [R]Super support for Moore, Hexagonal and von Neumann neighbourhoods
- [R]Super cells can be displayed as 2-state pattern:
	- Settings->Display->[R]Super to toggle cell display
	- hotkey Alt+H to enable [R]Super cell display, hotkey Alt+J to disable [R]Super cell display
	- while [R]Super display is disabled Copy will copy 2-state pattern
- [R]Super cells can be cleared from a Selection in the editor with the [R] button or hotkey Ctrl+Del
- fixed maximum Bounded Grid size (depending on rule at least 6 less than max grid size)
- rainbow rendering now works with hexagons and triangles

Build 557
- improved [[ RAINBOW ]] rendering performance
- hotkey Alt+W to toggle rainbow rendering mode (only available for 2-state Life-like patterns)
- [[ RAINBOW ]] works with layers

Build 556
- Help->Aliases now marks aliases with duplicate names
- added Weighted Generations aliases
- new script command [[ THUMBSTART ]] will start playback when a thumbnail is expanded
- new script command [[ RAINBOW ]] will draw 2-state Life-like patterns in rainbow colours
- improved performance for range 1 Weighted and Weighted Generations rules

Build 555
- added optional state weights to Weighted rules
	- add a comma after NW specification and then one hex digit per state
	- state weight values are 0 - 15 (decimal) = 0 to f (hexadecimal)

Build 554
- added Gaussian neighbourhood for generations

Build 553
- hotkey Ctrl+B will now create a Weighted neighbourhood from a selection if the pattern is multi-state

Build 552
- fixed HROT S limit issue

Build 551
- added the majority of Weighted aliases from MCell's built-in Weighted Life rules

Build 550
- added weighted rules
	- specify with NW and then hex digits for each cell in the neighbourhood
	- single hex digit for range from -7 to +7
	- double hex digit for range from -127 to +127
	- hexadecimal representation has MSB as sign bit
		- 0 to 7 represent 0 to 7
		- 8 to f represent 0 to -7
		- 00 to 7f represent 0 to 127
		- 80 to ff represent 0 to -127
	- e.g. -3, 0, 1
	       5, 0, -4
		   1, 3, 2
		   becomes NWb0150c132
	- e.g. -10, 5, 20
           4, 100, -2
		   -11, 6, -20
		   becomes NW8a05140464828b0694
	- can postfix with "H" for hex grid or "L" for triangular grid
		- triangular grid will cause weightings to be treated as a triangular neighbourhood and flip verticall on alternating cells
- added Gaussian rules (specify with NG)
- fixed an issue with bounded grids on tile boundaries
- fixed initial zoom for empty patterns
- don't capture F11 while LifeViewer has focus
- fix an error decoding HROT rules with empty B or S sections
- embedded viewer can now resize with the browser window
	- enabled with "fullscreen" keyword in <meta name = "LifeViewer"> content section
- triangular display is now correctly stretched for ZOOM < 4x
- allow & and : in alias names

Build 549
- close settings submenus when settings closed with hotkey

Build 548
- Waypoints now do not lock controls if there are no camera commands
- added support for triangular neighbourhoods for LtL and HROT rules
	- specify with NL
- clicking or dragging the pattern during Waypoint playback (when controls are locked) will pause playback
- improved Goucher LtL format detection
- external and internal clipboard Sync is now enabled by default (to make Copy more intuitive)
	- disable to use internal clipboard only for faster cut/copy/paste
- fix annotation position when drawing with triangular grid
- fixed Advance Selection for non Life-like patterns
- clipboard buttons tooltip now contains cell count

Build 547
- fixed an issue with waypoint timing

Build 546
- Identify works better with multi-state rules

Build 545
- "Click to control" doesn't show controls if AUTOHIDEGUI active
- can now drag background during AUTOHIDEGUI
- better synchronization of Annotation positions during performance throttling

Build 544
- Custom neighbourhoods now allow a postfix of "L" to specify triangular grid
- Random Pattern no longer randomizes Custom neighbourhood

Build 543
- Custom neighbourhoods now allow a postfix of "H" to specify hex grid

Build 542
- hotkey Ctrl+B converts the selection to a CoordCA neighbourhood and copies it to the external clipboard
	- selection must be square and have a odd side length from 3 to 99

Build 541
- improved Custom neighbourhood performance for large ranges

Build 540
- added support for Asterisk and Tripod hexagonal neighbourhoods for LtL and HROT rules
	- specify with NA and N3

Build 539
- improved random rule choice for HROT rules
- added support for Custom neighbourhood for LtL and HROT rules
	- specify with N@ and then hex digits
- added support for range 1 Hex Tripod neighbourhood
	- specify with HT
- added support for range 1 Triangular Inner and Triangular Outer neighbourhoods
	- specify with LI and LO

Build 538
- added support for Hash neighbourhood for LtL and HROT rules
	- specify with N#
- added hotkey Ctrl+Shift+O to open clipboard as pattern on some browsers

Build 537
- added support for Checkerboard neighbourhood for LtL and HROT rules
	- specify with NB

Build 536
- fixed "New pattern" message for non-RLE format patterns

Build 535
- added more aliases

Build 534
- hex display was incorrect from ZOOM 1x to 4x when High Quality Rendering enabled
- improved text wrapping in Help->Aliases
- hotkeys "b" and "Backspace" should only step back 1 generation

Build 533
- added support for Hex neighbourhood for LtL and HROT rules
	- specify with NH
- display "New pattern" if there are only state 0 cells
- playback controls were not being reset after rule change from reversible rule
- fixed some Margolus Identify issues

Build 532
- fixed LtL L2 random rule generation
- disabled Alt Gridlines button should be off

Build 531
- added more aliases
- added support for Cross, Saltire, Star and L2 neighbourhoods for Generations LtL/HROT rules

Build 530
- added support for L2 neighbourhood for LtL and HROT rules

Build 529
- don't randomize pattern if the rule is invalid
- add some more aliases
- improved Cross performance for LtL and HROT rules

Build 528
- new script command [[ RANDOMIZE ]] will generate random pattern on start
- attempt to fix ignored touch events on iPad

Build 527
- added support for Saltire and Star neighbourhoods for LtL and HROT rules
	- specify with NX (Saltire) and N* (Star)

Build 526
- added support for Cross neighbourhood for LtL and HROT rules
	- specify with N+

Build 525
- Ctrl-C while Help displayed will copy topic to clipboard

Build 524
- attempt to fix second popup move on iPad

Build 523
- attempt to fix window positioning on iPad
- fix Load Pattern

Build 522
- fixed an issue with Selection direction and copy to external clipboard

Build 521
- fixed an issue with Nudge and Selection direction

Build 520
- annotations now support specifying the zoom range at which they will be visible
	- [[ LABEL X Y ZOOM (MAXZOOM) (FIXED) "string" ]]
	- [[ ARROW X1 Y1 X2 Y2 ZOOM (MAXZOOM) (FIXED) ]]
	- [[ POLYLINE X1 Y1 X2 Y2 .. ZOOM (MAXZOOM) (FIXED) ]]
	- [[ POLYFILL X1 Y1 X2 Y2 .. ZOOM (MAXZOOM) (FIXED) ]]
	- if MAXZOOM is specified then the annotation will be visible from ZOOM to MAXZOOM
	- if MAXZOOM is not specified then the annotation will be visible from ZOOM / 4 to ZOOM * 4
	- negative zoom value -N mean a zoom of 1/N so ZOOM -4 is the same as ZOOM 1/4 or ZOOM 0.25
- fixed Theme button position
- fixed Help->Info->Identify having info when no identification happened

Build 519
- added "BOOK" Theme

Build 518
- fix [R]History 2-state paste

Build 517
- added script command [[ PASTEDELTA X Y ]]
	- sets position delta for [[ PASTET EVERY ]]

Build 516
- fix [[ RLE ]] with multi-line pattern

Build 515
- display message if Identify reaches maximum period
- added some more aliases

Build 514
- fixed support for reversible alternating Margolus rules

Build 513
- added a new alias
- fixed a couple of aliases

Build 512
- added script command [[ REVERSESTART ]]
	- sets initial playback direction to Reverse for reversible rules
	- ignored for other rules
	- reverse playback is also set on hard Reset
- Randomize now supports alternating rules
- Margolus gridlines now alternate by default
- bounded grids were clipping Margolus patterns

Build 511
- fix STEP in Waypoints

Build 510
- fix selection box position with #CXRLE Pos

Build 509
- added new aliases
- fixed Margolus bounding box on alternate generations

Build 508
- allow custom colours for RuleTable states
- fix Mod for PCA

Build 507
- disable reverse playback for alternating Margolus rules
- fixed an issue calculating rotor and stator missing the final generation

Build 506
- grey out step back button when disabled or at Gen 0 with non-reversible rule
- PCA state 0 drawing should draw background colour
- switched Alive, Births and Deaths label and value so the value is visible when reversible rules are loaded

Build 505
- remove Identify Close button for empty patterns
- fixed inconsitency on PCA Identify
- change Speed values to canonical form
- fix Margolus Still Life detection

Build 504
- fixed PCA Invert Selection
- fixed PCA initial population count
- fixed PCA births and deaths calculation to use subcells
- fixed Change Rule incorrectly enforcing VIEWONLY
- hide Random 2-state button for PCA patterns
- check Mod values using more than 1 sample

Build 503
- hotkey Ctrl+M for middle (center pattern on display but don't change Zoom)
- check FlipX and FlipY before FlipXY in Mod detection

Build 502
- hotkey Ctrl+F will Fit Selection to the display
- remove period 1 from simplified Speed

Build 501
- better error handling for invalid LtL/HROT rules
- added more aliases
- fix Evolve Selection initial position and handling life ending

Build 500
- hotkey Ctrl+Alt+Z randomizes the pattern without changing the rule
- generations AutoFit now includes Dying states
- editor action buttons now hide when not available (rather than grey out)
- fix paste mode UI

Build 499
- new UI buttons in Select mode to nudge pattern one cell up, down, left or right
	- can also use hotkeys Alt+Up, Alt+Down, Alt+Left and Alt+Right
- fix another Slope simplification for Identify
- fix Slope /1 issue for Identify

Build 498
- Ctrl+Alt+cursor keys now nudges selection one cell in the specified direction
- fix non-reducible Slope for Identify
- added more aliases

Build 497
- fix Fit Zoom for triangular grid

Build 496
- simplify oblique speeds for Identify
- search for hex neighbourhood definition for @TREE rules
- add Close button for Identify
- added more aliases

Build 495
- [[ COLOR BOUNDED R G B|name ]] sets custom bounded grid border colour
- [[ COLOR SELECT R G B|name ]] sets custom selection colour
- [[ COLOR PASTE R G B|name ]] sets custom paste colour
- [[ COLOR ADVANCE R G B|name ]] sets custom advance selection colour
- fix button overlap
- Pick on the bounded grid border now always sets Dead cell for drawing
- added more aliases
- fix simplified Speeds and Slope for Identify

Build 494
- [[ RANDCHANCE FIXED ]] keeps the rule constant when generating random patterns
- handle non-integer Slopes
- fix colours for [R]History patterns containing illegal states
- add more aliases

Build 493
- fix Fit Zoom for hex grid

Build 492
- fix a crash while drawing graph due to no data after pattern died

Build 491
- hide Slope and Direction for Identify on non-square grid since they're not supported

Build 490
- handle selection in infinite dimension bounded grid
- hide Mod for Identify on non-square grid since it's not supported

Build 489
- fix get/set state for 2-state RuleLoader rules
- handle null for reverse alias lookup

Build 488
- fix Identify for 2-state RuleLoader rules

Build 487
- replace dynamic calls with switch
- reset died generation when new cells are drawn

Build 486
- don't eat commas when parsing script commands

Build 485
- fix one alias and add another
- add PCA states to Help for COLOR command
- hide Help section buttons that don't fit
- fixed notification size on scaled windows

Build 484
- allow PCA state names in [[ COLOR ]] command
- ensure smooth UI icons with High Quality rendering

Build 483
- resolve Alternate rule aliases from pattern
- fixed two aliases that were not in canoncial form
- Identify now reduces down displacements
- PCA colours can be set with [[ COLOR 0..15 RGB|name ]]
- added new aliases

Build 482
- Identify was not correctly identifying B0 or Alternating rule still lives
- added new aliases
- added some movement displacements to Identify output

Build 481
- added new aliases
- use grab pointer for Help

Build 480
- faster high quality rendering if none of stars, snow or grid lines are displayed

Build 479
- much faster high quality rendering

Build 478
- high quality rendering performance improvement
- don't use high quality renderer at integer zooms
- if pattern load failure is because of illegal cell state then don't assume rule is invalid
- high quality rendering now works with [R]History rules

Build 477
- new button Settings->Advanced->Render Quality (hotkey Ctrl+"Q") toggles rendering quality
	- high quality
		- cells are anti-aliased at ZOOM > 1
		- slower and uses more memory
	- standard quality (the original)
		- default rendering mode
		- faster and uses less memory
- new script command [[ QUALITY ]] enables high quality rendering
- added new aliases

Build 476
- improved pretty rendering

Build 475
- prettier rendering at ZOOM > 1
- list controls were not respecting custom background colour

Build 474
- increase update count

Build 473
- snow ignores grid lines

Build 472
- export build number

Build 471
- do not add local @RULEs to the rule cache
- fix an issue when repository load failed

Build 470
- create missing @ICONS sizes
- allow @RULE to be in pattern comments

Build 469
- improved @TABLE decode performance
- fix pattern settings not being reset when rule already in cache

Build 468
- fix quotes handling in tokenizer for script commands

Build 467
- handle built-in icon sets

Build 466
- decode RuleTable @ICONS section (no render)
- IE compatibility fixes
- fixed reading RuleTables with missing final new line
- reset pattern type flags before RuleTable decode
- fix quotes in comments for tokenizer
- allow empty @TABLE or @TREE section for -shared rules
- improved @TABLE runtime performance

Build 465
- @TABLE and @TREE matches are now case-insensitive

Build 464
- improved @TABLE runtime performance

Build 463
- added hexagonal and one dimensional neighbourhood @TABLE runtimes
- fixed colours for @TREE or @TABLE rules with only 2 states
- added improved error reporting for invalid @TREE or @TABLE rules
- allow var redefinition in @TABLE rules

Build 462
- added @TABLE support
- an optional rule name postfix may be specified with the <meta> tag on the web page hosting the Viewer
	- <meta name="LifeViewer" content="/myrepository/rules/ .rule">
	- an entry beginning with "." is used to define the postfix

Build 461
- further performance improvements to tokenizer
- improved performance of @TREE decoder
- fixed Identify misbehaving with LOOP
- handle HTML entities

Build 460
- fix an issue with Identify calculating wrong spaceship speeds after grid growth
- ensure RuleTable sections are at the beginning of the line

Build 459
- fix a grid boundary crash in RuleTree algo
- tokenizer uses less memory and is significantly faster
- added size and timing information to Help->Info->Rule Cache

Build 458
- decode Repository response faster
- use original rule name for Repository request

Build 457
- faster RuleTree performance for vonNeumann rules with <= 16 states

Build 456
- handle html line breaks in Wiki rules
- improve clear tile performance

Build 455
- neighbourhood was sometimes wrong in Help->Info for RuleTree rules
- improved tile usage in RuleTree algorithm
- only make one request per rule to the Repository
- fixed set cell for RuleTree rules

Build 454
- Identify can perform much faster since it's no longer limited by maximum STEP
- reduce chance of Identify false positives
- fix snapshot and step back issue at snapshot interval (every 64 generations)
- RuleTree algo performance improvements

Build 453
- the location of the rule Repository can be overriden with the <meta> tag on the web page hosting the Viewer
	- <meta name="LifeViewer" content="/myrepository/rules/">
	- an entry beginning with a "/" is used to define the location

Build 452
- fixed reading comments in @COLORS section

Build 451
- support colour ramp in @COLORS section
- RuleTree definitions are cached when retrieved from repository
	- cache information is in Help->Info->Rule Cache

Build 450
- fix thumbnail mode being ignored

Build 449
- initial RuleTree implementation
	- supports @TREE and @COLORS sections

Build 448
- fix false positive for Mod on some patterns
- fix rule lookup for too big patterns

Build 447
- Ctrl+F6 will now run Identify in fast mode
	- Active Cells, Mod, Temperature and Volatility are not calculated
	- performance is much faster especially for large patterns

Build 446
- added Temperature (active and rotor) to Identify output for Oscillators
- added Unsimplified Speed to Identify output for Spaceships
- fixed an issue with Mod calculation for non-square bounding boxes and rotations
- Active cell counts and Volatility now work for PCA sub-cells
- disable TRACK and LOOP during Identify

Build 445
- improved Mod calculation performance for multi-state patterns
- Mod calculation now works for PCA sub-cells
- reverse playback hotkey was not working for PCA rules
- fixed Identify for alternating rules
- fixed canonical form for Hex rules
- made step back hotkey behaviour for PCA rules match Margolus rules
- fixed step back at T=0 for reversible rules
- fixed an issue with Mod buffer not being reset when loading new pattern in Viewer
- Identify results now include:
	- min, max and average cells
	- rotor, stator, total active cells (for Oscillators)
	- min, max and average Heat (for Oscillators and Spaceships)
	- Mod transformation (for Oscillators and Spaceships)
	- bounding box size in cells

Build 444
- added Mod to Identify output

Build 443
- added Volatility to Identify output for Oscillators

Build 442
- IE11 compatibility fix

Build 441
- improved Identify hash function
- fixed bounding box for oscillators
- fix Identify not working with Themes with no history

Build 440
- Identify improvements:
	- automatically starts searching at full STEP speed
	- stops playback when finished
	- displays table of results
	- autofits display to result
	- clicking Settings->Pattern->Identify will now close Settings menu
	- Reset to hide table of results

Build 439
- Identify now adds the following metrics to Help->Info->Identify:
	- Type (Still Life [0], Oscillator [1] or Spaceship [2])
	- Cells (number of live cells) or if different:
		- Min Cells and Max Cells [1][2]
	- Bounding Box
	- Direction (Orthogonal, Diagonal or Oblique) [2]
	- Period [1][2]
	- Slope [2]
	- Speed [2]
	- Heat [1][2]
	- Generation (the start and end generation of detection)

Build 438
- fix various rendering issues for invalid patterns

Build 437
- added Oscillator and Spaceship period detection
	- toggle with Settings->Pattern->Identify (hotkey F6)
	- will detect oscillators and spaceships up to a period of 2^20 generations
	- Help->Info->Identify shows last search result
- adjusted position of close window button
- multi-state patterns with invalid rules were displaying as 2-state

Build 436
- fixed tab position on scaled window for error messages
- remove focus from embedded Viewer after THUMBLAUNCH
- fixed resizing bounding box after some editor actions

Build 435
- PASTEMODE now accepts binary truth table output (e.g. 0001 for AND and 0111 for OR)
- PASTEMODE now allows DIFF as an alias for mode 4 (0010)

Build 434
- fixed Wolfram alternate rules
- alternate rules where the alternates are duplicates now remove duplicate from rule and alias name
- [[ PASTEMODE <0..15>|mode ]] script command now supports 16 paste modes:
	- ZERO, AND, 0010, X, 0100, Y, XOR, OR, NOR, XNOR, NOTY, 1011, NOTX, 1101, NAND, ONE
	- COPY can be used instead of X

Build 433
- workround slowdown on iOS 13 devices

Build 432
- Flip X and Flip Y now flip sub-pixels in PCA cells
- Help->Info->Theme now shows PCA Theme colour labels
- fixed editor issue with PCA rules on odd generations

Build 431
- fix issue with PCA Theme for non-PCA rules

Build 430
- CXRLE Gen now accepts negative generations
- new Theme for PCA rules which has a different colour for each of the 4 sub-pixels

Build 429
- ensure PopUp Viewer size is consistent when using Randomize, New Pattern or Change Rule
- fixed PopUp title message size

Build 428
- PCA rules now support Randomize
- PCA population now takes into account the 4 parts per cell
- updated Help information for PCA rules

Build 427
- PCA rules now support LifeViewer history states

Build 426
- PCA rules now support Bounded Grids

Build 425
- support for PCA rules
	- reverse playback is supported for reversible rules
	- Bounded Grids are not yet supported and will be ignored

Build 424
- PopUp Viewer resizes with browser window and zoom level
- fix PopUp Viewer window drag scale
- pass through some browser keyboard shortcuts

Build 423
- fix cross-browser window scaling

Build 422
- improve window scaling for PopUp Viewer
- fixed PopUp Viewer controls not responding when browser scrolled

Build 421
- fix image loading issue on Firefox
- fix button scale

Build 420
- more accurate window scale for PopUp Viewer

Build 419
- fix window scale on high DPI devices on forum
- fix title bar on new Wiki

Build 418
- fixed LifeViewer title bar on new forum
- add generation to T menu

Build 417
- T button tooltip now shows generation
- Life ended notification wasn't always triggering correctly
- keep camera position when Life ends
- Randomize was discarding [R]History postfix
- ignore out of range [[ RANDCHANCE ]] specific birth or survival conditions
- Randomize was generating B0 for Generations rules

Build 416
- new script commands to customize the Randomize random pattern generator
	- [[ RANDSEED <string> ]] sets the random seed (so you can have the same random pattern each time)
	- [[ RANDWIDTH <1..1024> ]] sets the width of the randomly generated pattern (default is 64)
	- [[ RANDHEIGHT <1..1024> ]] sets the height of the randomly generated pattern (default is 64)
		- this is fixed at 1 for Wolfram patterns
	- [[ RANDFILL <1..100> ]] sets the random fill percentage for the pattern
- new script commands to customize the Randomzie random rule generator
	- Life-like rules:
		- [[ RANDCHANCE <item> <0..100> ]] - set percentage chance of <item> being generated
		- <item> can be:
			- ALL - all items
			- B - all birth conditions
			- S - all survival conditions
			- B<n> - specific birth condition
			- S<n> - specific survival condition
		- random chance defaults to 50 for all conditions except B0 which defaults to 25
	- Margolus rules:
		- [[ RANDREVERSIBLE ]] generate a reversible rule
		- [[ RANDFIXEDPOP ]] generate a fixed population rule

Build 415
- new button Settings->Pattern->Randomize (hotkey Alt+"Z") which creates a random 64x64 pattern with a random rule
	- the rule is based on the current rule family
	- the rule will have the same number of states and neighbourhood as the original rule

Build 414
- Margolus enhancements
	- made gridline colours more distinct
	- Step Forward and Step Back controls are reversed during reverse playback
	- Step Back for Margolus patterns now respects generations-per-step setting
	- hotkeys Tab and Shift+Tab step forward and back generations-per-step setting
	- hotkeys Space and "b" step forward and back one generation
	- [[ PASTE EVERY ]] is disabled when current generation is less than maximum generation reached
		- maximum generation reached is zeroed on Reset

Build 413
- new button Settings->Display->Alt GridLines to toggle Margolus alternating odd/even gridlines (hotkey Alt+"D")
- Change Rule and New Pattern now support Bounded Grid suffix
- if in Draw or Select mode when Auto GridLines is enabled then turn on GridLines
- setting [[ GRIDMAJOR ]] with no other custom Theme settings creates a Custom Theme based on the default or specified Theme with the specified grid major interval

Build 412
- fixed mouse wheel zoom so it works better with "Smooth scrolling" features

Build 411
- added a few non-totalistic aliases
- improved how Step Back works with reversible Margolus rules

Build 410
- Paste commands now allow blank cells in COPY mode

Build 409
- lock Direction button during waypoint playback
- reset playback direction to forward during waypoint playback
- thumbnail launch was only working the first time on touch devices
- added some new aliases
- Margolus patterns now show Margolus generation
	- absolute generation is shown in Generation Statistics (toggle with bottom left button or hotkey "G")
	- absolute generation is needed for Waypoint, Annotation, Stop and Loop commands

Build 408
- added new Reverse direction button to toggle playback direction for reversible Margolus rules
- improved Population Graph vertical fit

Build 407
- [[ PASTET EVERY ]] now works with Margolus reverse playback when Margolus generation >= 0
- Margolus generation number is now in Help->Info->Grid
- fixed an issue where RLE PASTEs weren't happening on step back

Build 406
- allow reverse playback for reversible alternate Margolus rules
- new script command [[ NOTHROTTLE ]] will disable playback throttling
- Margolus rules can now use right hand tile column on the grid

Build 405
- fixed alternate Margolus rules
- fixed a few Margolus aliases

Build 404
- tooltips will now split at | to improve alternating rule display
- tooltips now scale with window
- graph axes now scale with window
- reverse playback for Margolus rules (hotkey "U" to toggle direction)
- toggle UI is now on hotkey Shift+"U"
- close Help and Errors when UI switched off

Build 403
- do not dim display if settings menu open and UI is hidden because of Auto Hide UI
- Margolus alternate rules were the wrong way round
- fix colour box alignment in Help when window scaled

Build 402
- fix title bar sizing for PopUp Viewer
- handle conflicting accesskey attributes

Build 401
- ignore trailing # for string substitutions
- fixed rendering with layers
- improved handling when plugin included multiple times

Build 400
- Settings menu buttons are now more descriptive
- new Settings menu Display setting: Auto Grid (hotkey Ctrl+"G")
	- turns on grid lines when switching to Draw and Select modes
	- turns off grid lines when switching to Pan mode
- new Settings menu Pattern action: New Pattern (hotkey Alt+"N")
	- creates a new empty pattern
- new Settings menu Info setting: Relative Gen (hotkey Shift+"G")

	- when #CXRLE Gen is defined toggles the generation display between Absolute and Relative
- State Slider now hidden for Generations patterns when states fit on display
- selecting a drawing state with hotkeys Ctrl+"0" to Ctrl+"9" now scrolls state selection UI to show new state
- PopUp Viewer scales on high DPI devices

Build 399
- Settings menu now has Pattern section
	- Rule (hotkey Alt+"R") prompts for a new rule
	- Save (hotkey Ctrl+"S") saves the current pattern as RLE to the source document node
	- Load (hotkey Ctrt+"O") loads the last saved pattern from the source document node

Build 398
- fixed an issue where sometimes touch events were deferring clicks

Build 397
- fixed capitalisation on error messages
- fixed crash on attempting to load patterns that are too big

Build 396
- the PopUp Viewer Close button is back and now has a red background
- Margolus patterns now use GRIDMAJOR 2 for all Themes except Custom
- LifeViewer was broken on IE
- added a new alias
- fixed Margolus even generation tile issue

Build 395
- removed close UI button from PopUp Viewer now window close button works
- switch to Pan mode when Population Graph is turned on (since it's not visible in Draw or Select mode)
- improved touch event handling
- fixed scrolling help list on mobile devices

Build 394
- added new Margolus THEME
- added new Margolus alias
- fixed a tile boundary issue with Margolus rules

Build 393
- added support for Margolus rules
	- rule format is Mn0,n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15
		- where n0 to n15 are integers from 0 to 15
	- also supports MS,Dn0;n1;n2;n3;n4;n5;n6;n7;n8;n9;n10;n11;n12;n13;n14;n15
	- bounded grids and alternate rules are allowed
	- rules where n0 = 15 and n15 = 0 are replaced with equivalent rules that don't strobe
	- rules where n0 is not zero apart from the case above are not allowed
- using [[ GRIDMAJOR ]] creates a custom Theme

Build 392
- fixed an issue where rotate selection was incorrect when grid grew
- performance improvement for editing tasks for 2-state Life-like and [R]History patterns

Build 391
- dim screen when Settings menu displayed
- ensure window appears above other page elements

Build 390
- fixed a graphical glitch for THEMEs with no history at STEP > 1
- corrected and ordered Wolfram aliases
- disable drawing, selecting and panning while settings displayed

Build 389
- lock Layers and Depth controls if hex or triangular grid
- added Wolfram aliases
- improved multi-state pattern layers
- LifeViewer window close button now works on mobile

Build 388
- improved Settings menu
	- settings are now grouped into topics
	- new Rule button that prompts for a new rule
- clicking on a Theme that is already active just closes Theme selection
- reduced memory used by rules

Build 387
- added another alias
- Generations rules now have brightness shading when using layers
- hotkey Shift+"P" to toggle LOOP (when defined) wasn't working
- performance improvement for THEMEs without history
- START indicator now toggles AutoStart if defined
	- hotkey Alt+"O" to toggle
	- if START disabled when LOOP defined then playback stops when Loop happens at T=0
- STOP indicator now toggles Stop if defined
	- hotkey Alt+"P" to toggle
- take screenshot (hotkey "O") was not working

Build 386
- hotkey Alt+"Del" to clear [R]History marked cells
- hotkey "Esc" will cancel a Pick or Replace

Build 385
- hotkey Shift+"A" shrinks selection
- toggle kill escaping gliders is now on hotkey Alt+"G"
- replace cells of selected state with current drawing state
	- hotkey Alt+"K" prompts the user to click on a cell and then replaces cells that state with current drawing state
- clear current drawing state cells
	- hotkey Ctrl+Alt+"K"
- hotkey for random fill is now Shift+"5"
- hotkeys Ctrl+"0" to Ctrl+"9" select drawing state

Build 384
- clear outside selection
	- new button in Select mode
	- hotkey Shift+"Del"
- clear [R]History cells
	- new button in Select mode

Build 383
- selections now work with [[ XOFFSET ]] and [[ YOFFSET ]]
- added more new aliases
- performance warning toggle
	- hotkey Shift+"W" to toggle
	- new button PerfWarn in Settings menu
- undo/redo now use less memory
- LtL M0 rules will now match M1 aliases

Build 382
- added Throttle button to Settings menu
- fixed an issue with HROT/LtL patterns not correctly shrinking bounding box
- close Settings menu when switching mode
- added new aliases

Build 381
- enable Kill button for 2-state Moore range 1 HROT/LtL patterns
- fixed [R]History display for hexagons and triangles
- hotkey for clear [R]History cells is now Ctrl+"Del"
- added some non-isotropic aliases

Build 380
- hotkey Alt+"T" to toggle playback throttling
- [R]History COLOR commands were being ignored
- hexagons and triangles were ignoring [R]History colours
- updated MCell multi-state Theme

Build 379
- hide POI prev/next buttons when Settings menu is displayed
- grey out Kill button unless rule is 2-state Moore
- replaced Theme slider with a Theme button that opens a page of buttons to select the required theme
- hotkeys Alt+"0" to Alt+"9" select drawing states when in Draw mode
- hotkey "Del" clears all cells of the current drawing state when in Draw mode
- hotkey Shift+"Del" clears [R]History cells
- ensure PopUp Viewer is right aligned

Build 378
- updated out of date test
- fixed problem with colours for Generations patterns
- switching from a history THEME to a non-history THEME sometimes stepped back a generation
- added Grid colour description to "Help" -> "Themes"
- live cells drawn after all cells died would then not generate
- you can no longer switch between square grid and hexagonal or offset square grid
	- removed script commands [[ SQUAREDISPLAY ]] and [[ HEXDISPLAY ]]
	- removed hotkeys Alt-/ and Shift-/
	- removed Hex toggle button from Settings menu
	- hotkey / now toggles between hexagonal and offset square grid for hexagonal rules
- new Settings toggle button AutoHide
	- automatically hides UI during pattern playback
- Angle control now greys out when unavailable
- Theme control now greys out when unavailable

Build 377
- custom colours were reporting false errors
- fixed issue with LtL/HROT 2 state patterns and THEMEs with no history

Build 376
- added endian information and platform capabilities to "Help" -> "Info" -> "Engine"
- several performance improvements
- disable Major button for hexagonal or triangular grids
- custom Theme major grid line setting was being applied to all themes

Build 375
- increased maximum viewer size to 4096x4096
- improved rendering to window speed
- fixed B0 rules

Build 374
- performance improvement for next generation calculation (except LtL/HROT)
- population statistics were incorrect if stats were off and pattern had bounded grid
- improved allocation speed for random grid

Build 373
- performance improvement for THEMEs with history

Build 372
- performance improvement for ZOOM < 1
- performance improvement for THEMEs without history and ZOOM < 1
- [[ TIME ]] output now has one decimal place

Build 371
- performance improvement for THEMEs without history
- new script command [[ TIME ]] to trigger timing at a waypoint
- waypoint messages can now use string substitutions #0 to #9 to display timing results as average frames per second

Build 370
- performance improvement when ZOOM < -2
- not all menu items were being drawn locked when menu locked
- performance improvement for THEMEs without history and STEP size 1
- performance improvement for THEMEs without history when ZOOM < 1
- switching to a THEME without history clears history cells

Build 369
- performance improvement for cell history and longevity
- performance improvement when ZOOM < 1
- THEMEs without history (Mono, Inverse, Golly, MCell, Caterer and Life32) and PASTE commands now have improved performance at STEP sizes > 1

Build 368
- Advance Outside now works in a single step with Undo/Redo
- Advance Outside now always uses Copy paste mode
- fixed POPUPWIDTH validation

Build 367
- improved performance for hexagonal grid selection display
- improved selection and paste boxes for triangular grid
- paste bottom left and bottom right positions were the wrong way round

Build 366
- create and clear selection were missing from undo/redo
- improved selection and paste boxes for offset-square grid and hexagonal grid
- horizontal and vertical flip were not working for paste

Build 365
- selections now respect [[ VIEWONLY ]]
- fixes for undo/redo during playback

Build 364
- there are now four additional standard paste locations: Top, Left, Right, bottom
- Ctrl-C with no selection copies entire pattern to external clipboard

Build 363
- a paste (red box) may now be advanced by one or more generations
	- hotkey Ctrl "Space" to advance paste generation
		- select required cells (green box)
		- cut selection with Ctrl "X"
		- advance paste generation one or more times with Ctrl "Space"
		- yellow bounding box will show location of advanced paste
			- Ctrl+Shift "V" pastes to evolved position (yellow box)
			- left click or Enter pastes to mouse position (red box)
			- Esc cancels paste
			- Ctrl "Z" then Ctrl "X" to start paste again
- selection and paste boxes now work with camera rotation

Build 362
- hotkey Shift "L" to cycle paste location
- hotkey Shift "M" to cycle paste mode
- hotkey Alt "L" to toggle annotation display (was previously hotkey Shift "L")
- don't draw individual paste cells if zoom < 1 (just the paste rectangle)
- Paste to Selection will tile the paste if the selection is bigger than the paste
- auto-shrink no longer removes empty selections so they can be used for Paste Selection

Build 361
- auto-shrink feature will automatically shrink selections to alive cells
	- toggle button in Selection menu
	- hotkey Alt "A"
- fixed bug when growing grid during drawing
- fixed bug with undo/redo while drawing during playback
- hotkey Ctrl+Shift "V" pastes to selection

Build 360
- [R]History state 2 was being ignored on pattern load
- some patterns were failing when the grid grows
- hotkeys Alt "0" to Alt "9" makes one of 10 clipboards the active one
	- paste rectangle will update if visible to new clipboard contents
	- using hotkey when specified clipboard already selected triggers paste
- prevent selection controls from going off bottom of window
- added 2-state random fill button when multi-state pattern loaded
- fixed an issue with selection box and undo
- replaced main Copy button with Sync toggle which if set synchronises cut and copy actions with external clipboard
	- hotkey Alt "S" toggles sync

Build 359
- Select mode Copy button copies to internal clipboard unless there is no selection in which case to external clipboard
	- main menu Copy button always copies entire pattern to external clipboard (regardless of selection)
- Cut button copies to internal clipboard
- Paste button displays paste cells which can be dragged to required position and then click to paste
- when paste cells displayed flip X, flip Y, rotate CW, rotate CCW, random fill, clear and invert work on the paste cells
- hotkey "Esc" clears paste if paste displayed
- hotkey "Enter" performs paste if paste displayed
- hotkey Alt "N" prompts for rule and then creates a new empty pattern
- hotkey Alt "R" prompts for new rule for the current pattern
- new Paste Position slider defines where to paste relative to the mouse
- lock Hexagon toggle if not in hex display mode
- hotkey Ctrl+Shift "5" for 2-state only random fill
- hotkey Ctrl "O" to load original or last saved pattern

Build 358
- added selection box display
- hotkey Ctrl "I" for invert selection
- don't rotate selection if result doesn't fit in bounded grid
- fix dragging selection in bounded grid
- population count could be incorrect at generation 0 if stats off while editing

Build 357
- grow grid if required when selecting
- fix a rendering issue after some selection actions
- fixed an issue with bounding box after deleting cells
- don't rotate selection if result doesn't fit on the grid
- hotkey Ctrl "A" for select all
- hotkey Ctrl "K" for remove selection
- hotkey "Del" for clear selection
- hotkey Ctrl "5" for random fill
- hotkey ">" rotates selection or camera clockwise 90 degrees
- hotkey "<" rotates selection or camera counter-clockwise 90 degrees
- hotkey Ctrl "Y" for redo (also hotkey Ctrl+Shift "Z")
- hotkey Ctrl "X" for cut
- hotkey Ctrl "V" for paste
- hotkey "Backspace" for back one step (also hotkey "B")
- hotkey Alt "Y" for flip Y
- hotkey Alt "X" for flip X
- hotkey Alt "B" for toggle cell borders (moved from hotkey Alt "X")
- hotkey Shift "F2" for toggle smart drawing (moved from hotkey Shift "F1")
- fixed Help text wrapping
- added invert selection button

Build 356
- Draw mode was incorrectly always showing a minimum of 7 states for Generations patterns
- Select mode Random fill was only using 2 states for Generations patterns
- selection and cancel selection are now undo/redo points
- selection rotation is now consistent

Build 355
- selections now support:
	- selecting a rectangle of cells (no-selection box visible yet)
	- flip X
	- flip Y
	- rotate clockwise
	- rotate counter-clockwise
	- random fill with user defined density from 0% to 100%
	- clear cells in selection
- opening help will close settings and vice versa
- fixed an issue with redo and snapshots
- fixed draw buttons being hidden with states toggle

Build 354
- fixed selecting drawing state
- disable starting playback while mid-draw

Build 353
- hide Draw, Graph and Select menus when Settings open
- selection size display (width x height)
- sometimes playback wasn't resuming after auto-paused during drawing

Build 352
- do not draw when clicking to get window focus
- remove unneeded extra undo step
- added Smart Drawing button to Draw menu
- increased maximum number of LtL and HROT states to 256

Build 351
- redo no longer goes back to previous snapshot
- picked cell colour notification wasn't displaying
- stop playback on undo
- fix step back with undo
- added undo/redo detail to button tooltips

Build 350
- moved graph controls below top row
- fixed playback pause during editing
- new toggle button to control whether playback is paused during drawing
- improved toggle states icon
- graph hidden if drawing or selecting
- added select mode UI controls

Build 349
- pause playback while drawing
- settings menu buttons are larger and cluster better
- changed "Step back" to "Undo/Redo" in "Help"->"Info"
- icons now grey out (not just the text)
- Pick mode was not being cancelled when another mode selected

Build 348
- handle LifeViewer being loaded more than once in a web page
- hotkey F2 draw mode
- hotkey F3 pick mode
- hotkey F4 select mode
- hotkey F5 pan mode
- undo and redo buttons were not being hidden for VIEWONLY patterns
- mouse cursor changes based on action
- UI list control can now lock indidivual items

Build 347
- added "Undo" and "Redo" buttons to main menu
- improved how Reset works with Undo/Redo
- new settings icon
- added "Copy" button to copy current pattern as RLE to clipboard
- increased minimum width by 80 pixels
- locked UI controls were allowing clicks through to the background

Build 346
- fixed a bug where the playback controls were disappearing after reset

Build 345
- state 6 regression in editor
- new "[R]History" button in navigation menu to toggle [R]History display
- new previous and next POI button on main screen if POIs defined

Build 344
- fixed undo/redo records persisting across patterns

Build 343
- hotkey Ctrl "Z" for undo edit
- hotkey Ctrl+Shift "Z" for redo edit
- hotkey Alt "J" disables [R]History display and Alt "H" enables it
	- only works for [R]History rules
	- this is only a display toggle: state 6 processing still happens
	- however: copy RLE to clipboard will honour current settings
- hotkey Alt "K" toggles deleting escaping gliders
- new "Kill" button in navigation menu to toggle deleting escaping gliders
- number of deleted gliders is shown in "Help" -> "Info" -> "Grid"
- editor now works with step back

Build 342
- hotkey Ctrl "S" now saves pattern to source document node

Build 341
- [[ KILLGLIDERS ]] now fades dead gliders

Build 340
- [[ PASTET EVERY ]] now has optional end generation (as well as optional start generation)
	- [[ PASTET EVERY interval (start (end)) ]]
	- if specified then "end" must be at least "interval" + "start"
- new script command [[ RECIPE ]] creates a named list to be used by [[ PASTET ]] command
	- syntax is [[ RECIPE name <1..>+ ]]
	- [[ PASTET <0..> (name|<1..>+)* ]]
- [[ RLE ]] and [[ RECIPE ]] names can not be script command names
- display actual STEP size if specified size can not be achieved

Build 339
- new script command [[ KILLGLIDERS ]] will delete escaping boundary gliders
- better PASTE information in "Help" -> "Info" -> "Pattern"
- fixed [[ PASTET EVERY ]]

Build 338
- performance improvement to setting cells
- patterns that are too big for LifeViewer but have [[ PASTE ]] commands will ignore the pattern and just run the pastes

Build 337
- improved paste evolution performance
- don't block F5 from refreshing browser when mouse over LifeViewer window
- rle for [[ PASTE ]] and [[ RLE ]] commands can now span multiple lines

Build 336
- paste mode XOR was not working on reset or step back
- max initial default zoom if AUTOFIT or ZOOM not specified is now 32x
- [[ PASTE ]] X Y location is now optional and defaults to 0, 0
	- syntax is now [[ PASTE rle|name (X Y) (TRANS) ]]
- [[ RLE ]] syntax is now [[ RLE name (X Y) (TRANS) ]]
- [[ PASTET ]] now supports a list of deltas after the initial generation
	- syntax is now [[ PASTET <0..> (<1..>) ]] or [[ PASTET EVERY <1..> (<0..>) ]]

Build 335
- [[ PASTE ]] now works with Generations rules
- paste commands now support optional transformations:
	- [[ PASTE rle|name X Y (TRANS) ]]
		- paste the rle or named rle at X, Y with optional transformation TRANS
	- [[ RLE name rle (X Y (TRANS)) ]]
		- create named rle at optional X, Y with optional transformation TRANS
	- TRANS is one of:
		- IDENTITY
		- FLIP
		- FLIPX
		- FLIPY
		- SWAPXY
		- SWAPXYFLIP
		- RCW
		- RCCW
- state at cursor position label widens for grids > 9999x9999

Build 334
- new script command [[ PASTET ]]
	- defines the paste generation for subsequent [[ PASTE ]] commands
	- [[ PASTET gen ]] pastes once on the specified gen
	- [[ PASTET EVERY interval (start) ]] pastes every interval generations starting at start (or 0 if not defined)
	- [[ PASTE ]] command no longer has the T parameter
- adjusted snapshot interval to new maximum STEP size

Build 333
- fixed a bug where an invalid pattern could cause a crash on the PopUp Viewer if the previous valid pattern had been [R]History
- fixed a bug where T=0 could not show entire pattern on the PopUpViewer if previous pattern had smaller bounding box
- fixed a bug where drawing LifeHistory state 5 would be incorrect on one corner of 16x16 tile boundaries
- [[ RLE ]] and [[ RLEMODE ]] are now called [[ PASTE ]] and [[ PASTEMODE ]]
- new script command [[ RLE name rle ]] defines a named snippet of RLE
- [[ PASTE ]] command can take name or rle as argument

Build 332
- Generations rules were fading an extra step when all cells died

Build 331
- added new script command [[ RLEMODE (OR|COPY|XOR|AND|NOT) ]] to set rle paste mode

Build 330
- added new script command [[ RLE T X Y rle ]] which pastes the given rle at position X, Y at generation T

Build 329
- fixed script reader
- improved rule name validation

Build 328
- custom colour could not be applied to state 255
- deprecated [[ STRICT ]] validation command
- increased maximum STEP to 64
- first part of @RULE and @TREE decoder

Build 327
- global camera and view settings were being ignored when POIs defined
- disabled Themes for "none" rule

Build 326
- "none" rule default colour set is now Golly's default
- disable History for "none" rules
- Help information had incorrect sign for POI X and Y

Build 325
- added empty rule "none" which does not change cells each generation
	- can be postfixed with neighbourhood and/or bounded grid
	- default colours are generations ramp

Build 324
- custom colours for Generations rules were in reverse order
- increased maximum zoom to 64x
- hotkey Shift and "3" sets 64x zoom

Build 323
- updated Neighbourhood in Help information with triangular neighbourhood
- canonical alias names are used
- fixed Wolfram rules
- drawing on a triangular grid is now more accurate
- fixed an issue with Triangular B0 rules
- AutoFit now works better on bounded grids with an infinite dimension

Build 322
- improved hexagonal cell drawing
- fix for LV neighbourhood

Build 321
- changed neighbourhood postfixes from T, TE, TV to L, LE, LV

Build 320
- further improvements to triangular cell alignment
- triangular patterns will be padded with a blank row and/or column on copy to ensure even/odd alignment

Build 319
- added B0 support for triangular rules
- improved triangular cell alignment

Build 318
- drawing cells wasn't correctly updating tile map
- triangular rules now ignore HEXDISPLAY script command
- check bounded grid width and height are even for triangular rules
- triangular rules now support three neighbourhoods:
	- Triangular (postfix "T") with 12 neighbours (touching triangle edges and vertices)
		- neighbourhood digits are "0123456789XYZ" where X, Y and Z represent 10, 11 and 12 respectively
	- Triangular Edges (postfix "TE") with 3 neighbours (touching triangle edges)
		- neighbourhood digits are "0123"
	- Triangular Vertices (postfix "TV") with 9 neighbours (touching triangle vertices)
		- neighbourhood digits are "0123456789"
- cells can now have a border
	- "Border" button in bottom-right menu
	- hotkey Alt and "X" to toggle setting
	- new script command [[ CELLBORDERS ]] to turn cell borders on

Build 317
- support for triangular neighbourhood
	- rules with a postfix "T" have 12-cell triangular neighbourhood
	- neighbourhood digits are "0123456789ABC" where A, B and C represent 10, 11 and 12 respectively
	- generations rules are supported
- step back was not working correctly every 50 generations

Build 316
- fixed single phase Copy on Firefox
- fixed step back after pattern dies

Build 315
- could not edit patterns which had cylindrical bounded grids
- hex patterns would not display cylindrical bounded grid borders when using hexagons
- improved hexagonal grid lines drawing speed

Build 314
- fixed hexagonal grid colours
- addded isotropic non-totalistic hexagonal aliases

Build 313
- added Paul Callahan's isotropic non-totalistic hex rule format
- created annotations topic in help
- only allocate hex buffers on first use

Build 312
- ensure hexagonal grid lines are integer thickness (for speed)
- fixed an issue with pattern comments on invalid patterns causing a crash
- fixed an issue with pattern specified width and height not being ignored
- improved hexagon cell drawing speed
- grid icon now has hexagonal grid when hexagons selected

Build 311
- drawing hexagonal cells is a bit faster
- added hexagonal grid lines
- hex or von Neumann rule letter can be before Generations postfix e.g.: B23/S1H/G3

Build 310
- make hexagons more regular shaped
- hotkey Alt+"/" to toggle hexagonal/square cells for hex display
- new script command [[ SQUARECELLS ]] to set square cells for hex display
- new script command [[ HEXCELLS ]] to set hexagonal cells for hex display (the default)
- new bottom right menu button "Hexagon" to toggle hexagonal/square cells

Build 309
- annotation positions were not correct in hex display mode
- in hex display mode cells are now drawn as hexagons at zoom >= 4

Build 308
- ensure copied RLE comments end with newline
- comments found after RLE now get copied after RLE

Build 307
- added more flexibility to rule decoder for B/S style rules
- added support for #P|#R x,y in RLE to set pattern top left position
- added support for "h = nnn, v = nnn" in rule header
- new annotation polygons:
	- new script command [[ POLYLINE X1 Y1 X2 Y2 .. Xn Yn ZOOM ]]
		- draw polyline from X1, Y1, to X2, Y2, to Xn, Yn at zoom ZOOM
	- new script command [[ POLYFILL X1 Y1 X2 Y2 .. Xn Yn ZOOM ]]
		- draw filled polygon from X1, Y1, to X2, Y2, to Xn, Yn at zoom ZOOM
	- new script command [[ POLYALPHA <0.0..1.0> ]]
		- set alpha value for subsequent polygon definitions
	- new script command [[ POLYSIZE <1..> ]]
		- set line width for subsequent polygon definitions
	- new script command [[ POLYT <t1> <t2> <fade> ]]
		- sets a range of generations from <t1> to <t2> for subsequent polygons to be visible
		- <fade> specifies generations to fade polygon in/out
		- use [[ POLYT ALL ]] to specify all generations
	- new script command [[ POLYANGLE <0..359> (FIXED) ]]
		- sets the angle for subsequent polygon definitions
		- optional keyword FIXED means polygon will not rotate when camera rotates
	- new script command [[ COLOR POLY R G B|<name>]]
		- set colour for subsequent polygon definitions
	- new script command [[ POLYTARGET X Y D|OFF ]]
		- sets the target point and distance for subsequent polygon definitions
		- the viewpoint must be within the distance of the target point for the polygon to be displayed
		- [[ POLYTARGET OFF ]] turns off the target for subsequent polygon definitions
	- new script command [[ POLYTRACK DX DY|FIXED ]]
		- sets movement vector for subsequent polygon definitions
		- [[ POLYTRACK FIXED ]] turns off movement for subsequent polygon definitions

Build 306
- fixes for IE and Edge

Build 305
- arrow head size can now be zero to allow for line drawing
- arrow head size is now specified as a multiple of arrow length rather than percentage
	- [[ ARROWSIZE <1..> <0.0..1.0> ]]

Build 304
- added label and arrow definitions to help information
- toggle labels was not working if just arrows defined

Build 303
- new annotation arrows:
	- new script command [[ ARROW X1 Y1 X2 Y2 ZOOM (FIXED) ]]
		- draw arrow from X1,Y1 to X2,Y2 at zoom ZOOM
	- new script command [[ ARROWALPHA <0.0..1.0> ]]
		- set alpha value for subsequent arrow definitions
	- new script command [[ ARROWSIZE <1..> <1.0..100.0> ]]
		- set line width and head size percentage for subsequent arrow definitions
	- new script command [[ ARROWT <t1> <t2> <fade> ]]
		- sets a range of generations from <t1> to <t2> for subsequent arrows to be visible
		- <fade> specifies generations to fade arrow in/out
		- use [[ ARROWT ALL ]] to specify all generations
	- new script command [[ ARROWANGLE <0..359> (FIXED) ]]
		- sets the arrow angle for subsequent arrow definitions
		- optional keyword FIXED means arrow will not rotate when camera rotates
	- new script command [[ COLOR ARROW R G B|<name>]]
		- set arrow colour for subsequent arrow definitions
	- new script command [[ ARROWTARGET X Y D|OFF ]]
		- sets the target point and distance for subsequent arrow definitions
		- the viewpoint must be within the distance of the target point for the arrow to be displayed
		- [[ ARROWTARGET OFF ]] turns off the target for subsequent arrow definitions
	- new script command [[ ARROWTRACK DX DY|FIXED ]]
		- sets movement vector for subsequent arrow definitions
		- [[ ARROWTRACK FIXED ]] turns off movement for subsequent arrow definitions
- new script command [[ AUTOHIDEGUI ]] will hide GUI while playing
	- click while playing to pause and show GUI
	- hotkeys are still enabled
- new script command [[ NOPERFWARNING ]] removes GPS/STEP shading when performance is slow
- hotkeys Ctrl-Left, Ctrl-Right, Ctrl-Up and Ctrl-Down can be used for Page Up, Page Down, Home and End
- bottom right menu now has "Prev" and "Next" buttons to go to previous and next universe when in Multiverse mode
- copy reset position now works when in Multiverse mode

Build 302
- label positions can now be from -MAXGRIDSIZE to 2*MAXGRIDSIZE
- fps display < 10 now shows one decimal place
- clear notifications on pattern load
- Waypoint animation was incorrect at STEP > 1

Build 301
- hotkey Ctrl+Alt "C" copies current pattern with comments
- Life 1.05 decoder now ignores trailing spaces
- added support for trailing g<states> for Generations rules e.g. B3S23G10
- copying empty patterns is faster
- improved RLE generation speed
- grid automatically grows as needed when drawing

Build 300
- multiverse mode
	- new meta keyword "multi" puts the Viewer in multiverse mode
	- RLE on the page is now added to a list of Universes (patterns) that can by cycled through in a single Viewer
	- hotkey "PageUp" goes to previous universe
	- hotkey "PageDown" goes to next universe
	- hotkey "Home" goes to first universe
	- hotkey "End" goes to last universe
- Help text could incorrectly wrap because of shadow
- Copy pattern failed on full lines

Build 299
- graph and labels were not rendering during copy RLE or computing previous generations
- graph was broken when computing previous generations
- use single phase copy if time and size are below thresholds

Build 298
- copying LifeHistory RLE needs to use history bounding box
- switch off custom Theme on new pattern load
- always compute all history generations for [R]History patterns regardless of Theme
- copy now happens in two steps to support large patterns

Build 297
- hotkey Ctrl "C" now copies current pattern as RLE to clipboard
- hotkey Shift+Ctrl "C" copies original pattern as RLE to clipboard
- disable editing while in view only mode

Build 296
- multi-state drawing now supports all states
- Help sections are displayed when topic is first displayed and disappear when clicked
- added Help sections button to show Help sections when hidden
- Help sections list updates as Help topic scrolls
- label positions were being validated against screen coordinates and not cell coordinates
- patterns were not being correctly validated against maximum grid size
- view offset was not being correctly reset when grid resized to default

Buld 295
- added notifications when using Pick control or chosing a drawing colour
- added multi-state drawing (but colour selection limited to 7 states currently)

Build 294
- added Help section UI to each topic
- added alternating rule aliases
- hotkey Shift "F1" to toggle smart drawing
	- smart drawing automatically deletes cells if you start drawing on a cell whose state is the current drawing state
- always create overlay for LifeHistory patterns since states can be created by the editor
- added pick state control to editor
- added toggle states display control to editor
- [R]History patterns can now be edited

Build 293
- fixed HROT multi-state pattern runtime
- fixed Globe alias
- don't process unneeded history states
- reorganised script help
- can now define UI border colour with [[ COLOR UIBORDER R G B|<name> ]]

Build 292
- alternating rule support
	- use a | between two rule names to define even/odd generation rules
	- e.g. rule = Life|HighLife
	- does not support B0 rules
- first part of UI customization
	- can now define UI colours using [[ COLOR <item> R G B|<name> ]] where <item> is one of:
		- UIFOREGROUND for foreground colour
		- UIBACKGROUND for background colour
		- UIHIGHLIGHT for colour when mouse is over control
		- UISELECT for colour when item is selected
		- UILOCKED for colour when item is locked
- menu foreground default colour is now white
- fixed a couple of LTL alias definitions
- drawing is disabled when viewing errors or help

Build 291
- Ltl/HROT patterns now use DELETERANGE when patterns reach the grid boundary
- Zoom and Opacity sliders are wider when the Viewer is wider

Build 290
- added a Labels button to the bottom right menu to toggle label display
- added missing Help information for hotkey "K" and Shift "K"
- copy view to clipboard (hotkey Shift and "K") now uses Theme names and handles custom Themes
- allow empty patterns
- remove "Life ended at" message when grid was empty when play started
- each Help topic is now in a separate page
- Help topics page now has individual buttons for each topic

Build 289
- improved handling of custom Theme definitions
	- for all Themes:
		- if ALIVE not specified then set it to the inverse of DEAD or the inverse of BACKGROUND or white
		- if both BACKGROUND and DEAD not specified then set BACKGROUND to the inverse of ALIVE or black
		- if DEAD not specified then set it to BACKGROUND
		- if DEADRAMP not specified then set it to DEAD
	- for 2-state Themes:
		- if ALIVERAMP not specified then set it to ALIVE
	- for multi-state Themes:
		- if DYING not specified then set DYING to step 2 of ALIVE to DYINGRAMP
		- if DYINGRAMP not specified then set it to DYING
- added more aliases
- aliases with the same rule are marked with '*' in the Help information Aliases topic

Build 288
- fixed an issue with HROT/LtL von Neumann patterns not allocating a large enough border to cause grid to grow correctly
- hex coordinates were wrong
- colour Themes now have names
	- [[ THEME ]] script command can take a theme number or name
	- Help Information has a new "Themes" topic that lists the theme definitions
	- grid lines definition is also included in the Theme
	- there is a 2-state and multi-state version of each Theme
	- [[ COLOR DYING ]] and [[ COLOR DYINGRAMP ]] set the cell dying colour range for multi-state
- added a few new aliases
- improved Help information text wrapping
- COLOR DEAD is now the cell colour when it first dies and COLOR DEADRAMP is the colour it becomes after staying dead

Build 287
- new Draw and Pan buttons
- improved LtL multi-state von Neumann performance for large range patterns
- Generations population statistcs were wrong
- memory details in Help information could be negative
- reduced memory consumption for 2-state startup
- rule aliases were not appearing for HROT/LtL rules
- long rule aliases wrap across two lines in Help information
- fixed an issue with HROT rule validation
- added some more aliases

Build 286
- population data is now dynamically allocated to reduce memory footprint
- Themes can not be changed for patterns with illegal rules or states
- population graph disabled for patterns with illegal rules or states
- PopUp viewer window right alignment now happens in a single step
- pattern area display was not working in Help information
- AUTOFIT and HISTORYFIT fit now work with HROT/LtL patterns
- new HistFit button in bottom right menu to toggle HISTORYFIT mode
- don't lock ANGLE control when AUTOFIT on
- new Major button in bottom right menu to toggle major grid lines
- AutoFit works better at high zooms and step sizes > 1
- improved LtL 2-state von Neumann performance for large range patterns

Build 285
- new Stars button to toggle starfield display in bottom right menu
- new Help topics UI in Help menu
- fixed HROT canonical S8 bug again
- FPS button moved and now called "Timing"
- added Details button to bottom right menu to toggle timing details
- Help Topics list auto-updates as Help scrolls
- pattern editor now updates population
- completed HISTORYSTATE implementation
- faster HROT/LTL performance for von Neumann and Circular neighborhoods

Build 284
- Esc button to close error display in bottom right menu
- when specifying a Klein bounded grid without defining the twist edge the default is now vertical (to match Golly)
- new script command [[ HISTORYSTATES <0..> ]] to define the number of history states to use
	- default and maximum is 63 for 2 state patterns and 1 for multi-state patterns
	- set to 0 to disable cell history drawing
	- implementation not complete!!
- pattern editor now respects bounded grid
- new Info button in bottom right menu to toggle InfoBar display
- bounded grids >=8192 and <=16384 were causing a crash
- pattern died generation was not working in the PopUp Viewer for the second pattern onwards if not reset
- added aggregate memory usage information to Help information
- toolTips can now be two lines long and will try to split at a space, comma or slash
- when PopUp windows resize the right edge position will stay fixed
- bounded grid types that do not support twists were not being reported as errors when twists were specified
- PopUp viewer was not having grid size reset after MAXGRIDSIZE specified
- default grid size reduced to 512x512 to save memory for pages with multiple Viewers
	- MAXGRIDSIZE argument is now from 9 (2^9 = 512) to 14 (2^14 is 16384)
- memory for population graph is not allocated if NOGRAPH is specified or if THUMBLAUNCH is specified without GRAPH
- only allocate memory for Stars on first use
- pattern editor automatically switches temporarily to pan mode while ZOOM < 1
- HROT patterns were defaulting S8 to on
- canonical HROT patterns were not validating counts against von Neumann or Circular neighborhoods
- update display after every step back

Build 283
- added new rule aliases
- better error reporting when invalid characters in RLE
- Generations rules were not displaying Life ended message
- pattern edit mode toggle available on hotkey F1
	- only works for 2-state patterns

Build 282
- survival counts in canonical HROT form were off by 1
- improved rule validation for non-totalistic rules

Build 281
- moved Shrink button from top left to bottom right
- added support for C in generations postfix e.g. B3/S23/C3
- cell under mouse display now correctly ignores bounded grid border cells

Build 280
- rule names now support slash after generations prefix and G in generations postfix
	- prefix: G3/B3/S23
	- postfix: B3/S23/G3 or MAPFEABCD/G3
- multi-state LtL and HROT patterns now display history

Build 279
- LABELTRACK positions are now relative to T1 if defined by LABELT

Build 278
- close button in bottom right menu is available in PopUp viewers when help or errors are displayed
- fps toggle in bottom right menu is available when help or errors are displayed
- increased maximum LABELSIZE to 128
- bounded grid border colour no longer overwrites state colour for 256 state patterns
- hotkey shift and "l" is now toggle labels
	- hotkey shift and "p" is toggle loop mode
- MAXGRIDSIZE was only allowing patterns to grow to the specified size rather than start at the specified size
- new script command [[ LABELTRACK DX DY|FIXED ]]
	- sets movement vector for subsequent label definitions
	- [[ LABELTRACK FIXED ]] turns off movement for subsequent label definitions

Build 277
- multi-state Generations patterns now display history
- fixed rare incorrect B0 error report when decoding multi-state patterns
- more consistent timing for animation

Build 276
- allow Wolfram W0 rule
- allow range 1 HROT rules
- fixed an issue with decoding hex format HROT rules
- fixed an issue with canonical form of HROT rules
- Label coordinates are now relative to pattern coordinates and respect CXRLE Pos
- LABELT fading was going one step too far

Build 275
- fixed layer rendering for 2 state generations, LtL and HROT rules

Build 274
- fixed an issue with 2 state LtL HROT rules and Plane

Build 273
- 2 state LtL and HROT rules now use standard Themes

Build 272
- graph close button was not updating graph toggle button
- HROT rules now support von Neumann and Circular neighbourhoods
	- new optional neighbourhood postfix: Rr,Cc,Slist,Blist(,Nn)
- 2 state Generations rules now use standard Themes

Build 271
- new script command [[ LABELTARGET X Y D|OFF ]]
	- sets the target point and distance for subsequent label definitions
	- the viewpoint must be within the distance of the target point for the label to be displayed
	- [[ LABELTARGET OFF ]] turns off the target for subsequent label definitions
- new menu button to toggle population graph

Build 270
- labels now use non-integer font point sizes
- labels now work with TRACKBOX
- grid lines now work at all angles
- fixed an issue with custom Themes

Build 269
- updated script command: [[ LABEL X Y ZOOM (FIXED) "<string>" ]]
	- optional FIXED argument makes the position static when TRACK mode is on
- cell under mouse display was incorrect when TRACK mode is on
- cell under mouse display now works at any ANGLE

Build 268
- Labels work with non-zero angle
- new script command [[ LABELANGLE <0..359> (FIXED) ]]
	- sets the label angle for subsequent label definitions
	- optional keyword FIXED means label will not rotate when camera rotates

Build 267
- new script command [[ MAXGRIDSIZE <10..14> ]]
	- specifies the maximum grid size 2^n
	- if not specified the grid size starts at 2^10 (1024) and automatically grows as needed up to 2^13 (8192)
	- 2^14 (16384) is only available if specified with this command
- Labels now work wth [[ TRACK ]] and [[ TRACKLOOP ]]
- Label shadow is now based on label size

Build 266
- new script command [[ LABELT <t1> <t2> <fade> ]]
	- sets a range of generations from <t1> to <t2> for subsequent labels to be visible
	- <fade> specifies generations to fade label in/out
	- use [[ LABELT ALL ]] to specify all generations

Build 265
- fixed canonical HROT rule decoder
- new script command [[ LABEL X Y ZOOM "<string>" ]]
	- displays a static label at the given cell position and zoom
	- Help information contains label definitions
- new script command [[ LABELALPHA <0.0..1.0> ]]
	- sets opacity for following label definitions from 0 (transparent) to 1 (opaque - the default)
- new script command [[ LABELSIZE <4..32> ]]
	- sets the label font size for following label definitions (default is 18)
- new script command [[ COLOR LABEL <colourname>|R G B ]]
	- sets the label text colour (default is 240 255 255)
- fixed broken Torus
- fixed LtL and HROT patterns not clearing correctly on right boundary
- added support for von Neumann and Circular neighborhoods to HROT rules

Build 264
- new canonical HROT rule format:
	- R<range>,C<states>,S<list>,B<list>
	- <range> is from 2 to 500
	- <states> is from 0 to 255 (and values < 2 are treated as 2)
	- <list> is a comma separated list of counts e.g. S2,4,6-9,10,12-15
- improved validation for LTL and HROT rules

Build 263
- HROT (higher range outer totalistic) rules are now supported
- LifeViewer now accepts lifelib style rule names:
	- generations rules can be specified with "g<num>" prefix rather than "/<num>" postfix
	- r<num>b<num>t<num>s<num>t<num> is now supported for LtL
	- canonical forms remain the original formats

Build 262
- LtL now computes births and deaths
- faster Moore algorithm

Build 261
- mousewheel shouldn't zoom thumbnails
- new script command [[ THUMBZOOM ]] to set the zoom in the thumbnail
- autofit on reset wasn't centering pattern if hex/square display mode had changed
- hex UI control wasn't set correctly on hex pattern load

Build 260
- added support for Larger than Life (LtL) rules
	- Moore, von Neumann and Circular neighborhoods
	- maximum range of 500 cells
- non-totalistic rules without digits were not being marked as invalid
- LOOP with Waypoints or AutoFit now resets camera on reset
- fixed a potential crash when reading meta settings
- meta "limit" setting default is now false, not true
- displayed XY location was incorrect after grid growth
- canonical form of MAP rules with Generations now adds the generations
- UI now has a button to toggle hex display
- label UI controls under buttons no longer receive clicks
- Help information now shows neighborhood range when greater than 1

Build 259
- script commands copied to the clipboard are now prefixed with RLE comments
- with bounded grids the stats show cell density rather than births and deaths
- fixed population count for bounded grids

Build 258
- better fix for Themes without history
- hotkey "u" toggles NOGUI mode
	- will be ignored if [[ NOGUI ]] defined
- hotkey "k" copies the current position to the clipboard as script commands
	- [[ X 10 Y -5 ZOOM 3 ]]
- shift and hotkey "k" copies the current position and the view to the clipboard as script commands
	- [[ X 5 Y 13 ZOOM 2.33 ]]
	- [[ THEME 3 WIDTH 640 HEIGHT 400 ]]

Build 257
- Themes without history were causing rendering issues
- improved elapsed time calculation for multi-generation steps
- manual step forward for multiple generations no longer bails out early due to time

Build 256
- added colour sets for JvN29, Hutton32 and Nobili32
- initial zoom and fit zoom (but not autofit) will snap to integer if zoom is within 1% of an integer

Build 255
- custom colours now work with Generations rules

Build 254
- gps control was incorrectly showing 10.0 for 10
- added colour names to help information
- aligned R G B values in help information
- hotkey shift and Page Up moves to previous help topic
- hotkey shift and Page Down moves to next help topic
- hotkey control and "r" now resets the pattern (like Golly) rather than refreshing the browser
- fixed an issue with Waypoint playback that was causing stuttering

Build 253
- waypoints now work with step back
- LOOP no longer resets camera
- fit zoom UI control is now disabled when AutoFit enabled
- fixed a crash when invalid patterns have a bounded grid specification

Build 252
- fixed a display flicker with PAUSE 0

Build 251
- [[ PAUSE ]] script command can now take 0 as an argument for instant camera relocation
- removed bounded grid postfix from rule name display

Build 250
- hex neighbourhood MAP rules were not working correctly
- playback speeds < 60gps are much more accurate
- gps UI control now shows steps per second and values less than 10 show one decimal place

Build 249
- patterns larger than bounded grids are now correctly clipped to top left

Build 248
- corrected coordinate display

Build 247
- popup Viewer should not respect meta width limit

Build 246
- fixed error when STOP or LOOP defined before first waypoint

Build 245
- validation error with THUMBNAIL

Build 244
- added [[ STARS OFF ]] script command
- added [[ THUMBNAIL OFF ]] and [[ THUMBLAUNCH OFF ]] script commands
- both stars and grid display can be defined per POI
- added [[ AUTOFIT OFF ]] and [[ HISTORYFIT OFF ]] script commands
- fixed TRACKLOOP that had stopped looping
- fixed pattern position in bounded box when specified pattern size is not actual size
- LOOP and STOP definitions not at POIs change the initial settings
- pattern actual size vs specified size shown in Help information

Build 243
- added [[ AUTOSTART OFF ]] and [[ GRID OFF ]] script commands

Build 242
- added [[ POPUPWIDTH ]] and [[ POPUPHEIGHT ]] script commands

Build 241
- RLE patterns without 'rule =' now default to Conway's Life
- allowed click to work on Viewers that are not fully on the window
- maximum WIDTH and HEIGHT increased to 2048

Build 240
- mouse was behaving badly

Build 239
- previous build broke LifeHistory states 2 and 6

Build 238
- help information now marks current POI with a *
- added [[ SUPPRESS ]] which suppresses overwrite error message for duplicate definitions once
- [[ WIDTH ]] and [[ HEIGHT ]] are now checked for duplicate definitions

Build 237
- POI definitions were always inheriting X, Y, ZOOM and ANGLE
- [[ POI INITIAL ]] was not making the default POI the current POI (for next and previous POI hotkeys)
- [[ POI INITIAL ]] was not setting ANGLE or STEP

Build 236
- further enhancements to POI capability:
	- you can now specify a THEME at a POI
		- if none specified then the current THEME is not changed
	- you can specify DEPTH and LAYERS at a POI
	- you can specify STOP and LOOP generation at a POI
	- [[ POIT <generation> ]] will start the POI at the defined generation
	- added parameter value [[ INITIAL ]]
		- [[ POI INITIAL ]] makes the defined POI current on pattern load
		- [[ ALL INITIAL ]] specifies that all values for the current POI are copied from the initial camera
		- [[ X|Y|Z|ZOOM|ANGLE|LAYERS|DEPTH|GPS|STEP|THEME|LOOP|STOP INITIAL ]] copy the defined value for the current POI from its initial value
- STOP and LOOP can now take the parameter OFF to disable them (useful for POI definitions)
- non-totalistic rules with repeated neighbour counts were decoded incorrectly
- POITRANS speeds up to 200 are now valid
- MAP rules now allow base64 padding
- hotkey shift and "c" now cycles backwards through colour themes
- hotkey alt and "c" selects the default theme
- panning with the cursor keys is faster when zoomed out
- hotkey shift and "l" will toggle LOOP mode if defined
- LOOP was performing a camera reset when LOOP enabled after the LOOP generation
- Life 1.05 format patterns now support all rules including bounded grids
- Waypoint error messages were showing incorrect sign when overwriting X or Y camera positions
- if there were more script errors than could fit on the viewer then the last error could not be scrolled to
- bounded grids now work correctly with CXRLE POS

Build 235
- whitespace at the beginning of lines is now removed before copying patterns to clipboard (to be nice to Golly)
- rules in the format SnnBnn were being decoded with S and B transposed
- error could be generated about XOFFSET and YOFFSET when they weren't specified
- updated event handling for UI to handle spurious mouseleave events posted when mouseup and mousedown both happen between updates
- enhanced POI (point of interest) capability:
	- there are new script commands that allow you specify actions when switching to a POI
		- [[ POIRESET ]] will reset playback to T=0
		- [[ POIPLAY ]] will start playback (if stopped)
		- [[ POISTOP ]] will stop playback (if playing)
		- if neither [[ POIPLAY ]] or [[ POISTOP ]] are specified then playback status is unaffected
	- [[ POITRANS 0..60 ]] specifies transition speed
		- 0 means instantaneous transition
		- if not specified then the default is 12
	- hotkeys alt-1 to alt-9 will switch to respective POIs (if specified)
- STOP and LOOP tooltips now show generation

Build 234
- added support for Hex and von Neumann neighbourhoods with MAP rules
- LifeHistory patterns were not respecting Themes at generation 0
- [[ NOSOURCE ]] now also hides the "CODE: SELECT ALL" line
- copy pattern source (hotkey "c") was not working correctly in the standalone viewer

Build 233
- the RLE reader could skip rule definition if previous line was just a # character
- bounded grids are now checked to make sure they fit
- fixed MAP rules so final character is canonical
- help information now shows MAP rules on multiple lines

Build 232
- improved compatibility of copy pattern source
- renamed [[ NORLE ]] to [[ NOCOPY ]] and the link from "RLE" to "Copy"
- added [[ NOSOURCE ]] which hides the pattern source textbox

Build 231
- added [[ NORLE ]] which disables the "RLE" link when you mouse over a [[ NOGUI ]] image
- hotkey control and "c" will copy pattern source to clipboard

Build 230
- when you mouse over a [[ NOGUI ]] viewer an RLE link appears which when clicked will copy the displayed pattern's RLE into the Clipboard
- [[ NOGUI ]] minimum width and height now 64
- [[ NOGUI ]] silently disables [[ GRAPH ]], [[ THUMB ]], [[ THUMBLAUNCH ]], [[ SHOWTIMING ]], [[ SHOWGENSTATS ]] and [[ SHOWINFOBAR ]] if specified
- viewers that have [[ NOGUI ]] specified with script errors will not enforce [[ NOGUI ]] so the script errors can be seen

Build 229
- screenshots can now be generated inline in an <img id="screenshot"> tag (rather than in a separate window)
- added [[ NOGUI ]] to disable menus and hotkeys
	- also reduces [[ WIDTH ]] and [[ HEIGHT ]] minimum limit to 16
	- silently disables [[ AUTOSTART ]] if specified

Build 228
- variable substitution can now be used in waypoint messages
	- #B the LifeViewer build number
	- #N the pattern name (if defined)
	- #O the pattern originator (if defined)
	- #R the pattern rule name
	- #A the pattern rule alias name
	- #T the program title ("LifeViewer")
	- ## the # symbol
- added [[ COLOR ERROR R G B ]] to set colour for error messages
- rule decoder was failing on totalistic rules with no slash and only one of B or S
- fixed a bug with Torus bounded grids with Y shift

Build 227
- Generations does not support B0 rules
- status bar errors are now drawn in red
- generation statistics tooltips for alive, births and deaths shows full value (rather than abbreviated, e.g. 102302 vs 102K)

Build 226
- fixed an issue with canonical representation of non-totalistic rules

Build 225
- statistics generation was not being reset when new pattern loaded in existing viewer
- added script command [[ NOGRAPH ]] which disables graph
	- slight performance increase when not tracking population data

Build 224
- AUTOSTART no longer runs patterns with illegal rules
- better error reporting for MAP rules

Build 223
- graphs now display properly in thumbnail mode
- fit zoom and thumbnail mode now work together
- graph colors were incorrect on some browsers
- fixed an issue with MAP rules and bounded grids

Build 222
- fixed an issue with the allocator during startup

Build 221
- tooltips in multi-item controls now work after item clicked

Build 220
- added ability to customize graph colors:
	- [[ COLOR GRAPHBG R G B ]] to set background color
	- [[ COLOR GRAPHAXIS R G B ]] to set axis color
	- [[ COLOR GRAPHALIVE R G B ]] to set alive color
	- [[ COLOR GRAPHBIRTH R G B ]] to set birth color
	- [[ COLOR GRAPHDEATH R G B ]] to set death color
- added graph colors to help information
- fixed an issue when just COLOR BACKGROUND and COLOR ALIVE were defined which caused an invalid COLOR DEADRAMP

Build 219
- hotkey shift and "o" now opens population graph snapshot in separate window
- graph x axis limit was wrong for generations less than the graph width

Build 218
- new graph script commands:
	- [[ GRAPH ]] enables population graph display on pattern load
	- [[ GRAPHOPACITY <0.0..1.0> ]] set graph background opacity
	- [[ GRAPHPOINTS ]] draw the graph with points rather than lines
- graph data added to help information
- graph y axis label now abbreviates automatically when viewer height is small
- fixed graph scale issue if first generation deaths or births was greater than population
- added "Just Friends" to the non-totalistic aliases

Build 217
- hotkey "y" now toggles a graph display of population over time
- hotkey shift and "y" to toggle graph lines or points
- hotkey "7" to decrease and hotkey "9" to increase graph opacity

Build 216
- patterns were not correctly centered when bounded grid had a zero dimension
- Faders and Sticks aliases were incorrect
- native support for MAP rules (2 state and Generations)
- deprecated [[ FILL ]], [[ MAP ]] and [[ MAPODD ]] script commmands
- added non-totalistic rule B0 support

Build 215
- [[ TRACK ]], [[ TRACKBOX ]] and [[ TRACKLOOP ]] now scroll more smoothly at low GPS
- changed timing display to show load%
- error display wasn't hiding UI controls correctly
- added a close button to the navigation menu
- accurate "Life ended at" generation when using STEP > 1
- new script command [[ STATE1FIT ]] that forces autofit only to use state 1
	- hotkey shift and "s" to toggle

Build 214
- [[ HISTORYFIT ]] would not work correctly until pattern reset
- added another non-totalistic alias

Build 213
- resizing snapshots could leave unused buffers not resized
- numeric keypad now works as hotkeys
- changed the behaviour of speed up (hotkey "=" or num "+") and speed down (hotkey "-" or num "-") so it flows from GPS to STEP
- hotkey "0" and num "0" now reset speed and gps
- hotkey "5" now resets angle
- all COLOR recipients can now use named colours
- hex patterns now support bounded grids

Build 212
- CXRLE Pos now works with [R]History
- UI controls now step forward and back one generation
- hotkey "Space" and "b" now step forward and back one generation
- hotkey "Tab" and Shift "Tab" now step forward and back STEP generations

Build 211
- non-totalistic rules now use correct canonical form
- tooltips are now in boxes with shadows
- at some zooms the right hand grid line was not being drawn

Build 210
- added new variable to [[ TITLE ]] string
	- #A the pattern rule alias name
- number of times [[ FILL ]] used is displayed in help information
- fixed TRACKBOX so N is top and S is bottom
- fixed TRACKBOX error so it doesn't need to wrap

Build 209
- new script command [[ RANDOMSEED <string> ]] to define the random seed
	- used by the [[ MAP ]] and [[ FILL ]] script commands
	- if not specified then a seed based on the system time is used
	- random seed is displayed in help information
	- starfield uses its own random number stream
- Track mode details were sometimes incorrect in help information
- rule name is now canonical
- added tooltip for rule name and rule alias (if defined)
- rule alias is shown in help information if defined
- rule names are shown as aliases if an alias exists for the rule
- added tooltips for population statistics, elapsed time, coordinate state value, and the information bar

Build 208
- script errors are now displayed on the thumbnail (rather than just the error header)
- Viewers with a height too small to display the navigation menu were not correctly respositioning the adjacent UI controls
- bounded grids that wrap (Torus, Klein, Sphere, Cross-Surface) failed when grid edges were on tile boundaries
- Klein bottles without a twist specification now default to horizontal twist
- CXRLE Gen and Pos only displayed in help information if defined
- shift and hotkey "g" only toggles relative generation display if CXRLE Gen defined
- added support for #CXRLE Pos

Build 207
- timer was not being properly reset on the standalone viewer when a second pattern loaded
- viewer height and width were not being properly constrained when limit no in force

Build 206
- full zoom range is available again in Track mode
- improved elapsed time display
- added 19 new rule aliases
- removed a brief glitch on the zoom UI control when Track mode switched on using TRACK button
- grid UI button now reflects hex/square mode
- improved when tooltips appear

Build 205
- zoom to mouse position now works with track mode
- fixed issue with pausing playback and slow GPS tracking
- integer zoom now works with track mode

Build 204
- improved formatting of timing information
- shift and hotkey "t" toggles extended timing information

Build 203
- switching AutoFit on when playback paused would not AutoFit until playback resumed
- TRACK, TRACKLOOP and TRACKBOX now use dynamic origin rather than AutoFit
	- all controls are available
- text messages defined in scripts now appear in thumbnail mode
- "Expand" and "Launch" messages are now vertically centered
- script error indication is shown in thumbnail mode
- first Reset no longer resets camera, use hotkey "v" to do so
- you can now toggle TRACK/Waypoints and LOOP by clicking the UI indicators
	- if both are defined then they toggle together
- you can now use [[ Z ]] as an alias for [[ ZOOM ]]
- step back no longer disables LOOP if defined
- help hides population statistics overlay and navigation menu
- added Shrink button to navigation menu which shrinks the viewer back to the thumbnail
- shift and hotkey "x" toggles major grid lines (if not disabled with GRIDMAJOR 0)
- grid lines are now more accurate
- drawing grid lines is now about 10% faster
- error is raised if TRACKBOX W is greater than E or S is greater than N
- improved AutoFit and Fit Zoom icons
- added tool tips for UI controls
- improved notification when STOP point reached
- stars and coordinate display were using angle in Hex display mode (which doesn't allow rotation)
- coordinates label now disappears if coordinates aren't displayed and generation statistics are off
- [[ NOREPORT ]] now also disables STOP message
- new "FPS" button in navigation menu to toggle timing display
- timing display now positioned correctly in thumbnail mode

Build 202
- Generations rules were failing to draw some decay states at T=0

Build 201
- the vertical bounding box calculation was incorrect for AutoFit

Build 200
- fixed an issue with Fit Zoom in THUMBNAIL mode
- fixed an issue with Waypoints and AutoFit in THUMBNAIL mode

Build 199
- when playback loops only the camera position, zoom and angle are reset
- further layout improvements to the information bar
- Reset and STEP now work better together

Build 198
- changed TRACKBOX parameter order to E S W N
- improved layout on information bar
- new AutoFit engine
	- now has four modes
		- Regular (uses live cells)
		- TRACK X Y (horizontal and vertical speeds in cells/generation)
		- TRACKLOOP P X Y (loop period, horizontal and vertical speeds in cells/generation)
		- TRACKBOX E S W N (east, south, west and north box edge speeds in cells/generation)
	- additionally HISTORYFIT can be used to modify each mode to include cells that died
	- when Paused all controls are enabled
	- first Reset disables AutoFit, second Reset enables AutoFit if defined

Build 197
- shift and hotkey "i" now toggles display of the information bar which displays the camera X, Y, ANGLE and the TRACKBOX speeds
- new script command [[ SHOWINFOBAR ]] which turns the information bar on at pattern load
- ensure navigation menu appears above population statistics
- first Reset now also resets camera
- TRACKBOX mode no longer disables STEP and GPS controls
- angle, layers and depth hotkeys were not disabled when corresponding UI controls were disabled

Build 196
- fixed an edge case where the grid could grow too late based on the increase in maximum STEP size
- numeric values in scripts can now be specified as fractions [[ DEPTH 2/3 ]]
	- division by zero is treated as zero
- inverted X and Y offsets
- hotkey "w" will now toggle LOOP mode when no waypoints defined
- added UI indicators for AUTOSTART, LOOP, TRACK and STOP
- don't show "Life ended at generation" notification if LOOP defined and enabled
- reduced the font size of the generation statistics, rule, elapsed time and mouse coordinates
- Shift and hotkey "r" will reset all viewers
- new script command [[ HISTORYFIT ]] that changes AUTOFIT so it uses cells that have died as well as live cells to set the camera position
	- Shift and hotkey "h" will toggle HISTORYFIT mode
	- HISTORYFIT just defines the AUTOFIT mode, you still need to switch AUTOFIT on
- added AUTOFIT status to help information
- close button is now larger on standalone viewer
- added bounding box speed (cells/generation) N, E, S and W to help information
- new script command TRACKBOX N E S W which makes camera track the bounding box starting at the initial pattern position by applying N E S W as speeds in cells/generation to the North, East, South and West edges
- pause no longer disables LOOP if no Waypoints are specified

Build 195
- new script command [[ TRACK N X Y ]] makes tracking spaceships with the camera easier
	- N is the period and X and Y define the offset in cells at the period generation
- fixed Reset behaviour with LOOP only and no Pause
- fixed flicker while looping
- Reset notification now also shows whether AutoStart was switched On or Off

Build 194
- fixed Reset behaviour with any combination of LOOP and Waypoints so that first Reset always gives manual control and second is full reset
- Waypoint playback at < 60 GPS was not spending enough time at T=0

Build 193
- improved title bar styling
- [[ TITLE ]] string is now correctly clipped to the title bar
- new script command [[ NOREPORT ]] that disables the "Life ended at generation" notification

Build 192
- title bar styling for LifeWiki
- rle patterns beginning with "o" were being treated as Cells format and failing to decode
- patterns with Waypoints defined and no theme were defaulting to the wrong theme
- patterns with Waypoints defined were ignoring initial ZOOM

Build 191
- enable standalone viewer to work with LifeWiki
- standalone viewer should ignore WIDTH and HEIGHT validation since they are not used
- first Reset no longer enables LOOP if defined
- [[ THUMBLAUNCH ]] script command also enables [[ THUMBNAIL ]] mode (no need to use both)

Build 190
- added [[ THUMBSIZE ]] script command to define thumbnail divisor (2, 3 or 4)
- when a thumbnail is expanded briefly display hotkey to shrink
- saving (hotkey "v") and restoring (shift and hotkey "v") camera position now works with thumbnail view
- default grid line colours are based on brightness of background colour
- added [[ THUMBLAUNCH ]] script command which changes thumbnail behaviour so when clicked on launches the standalone viewer

Build 189
- hotkey "Esc" will close the standalone viewer
- standalone viewer grabs focus when open
- added support for #CXRLE Gen
- generations >= 1000,000,000 are shown as "1B+" in the UI
- shift and hotkey "g" toggles generation display between absolute generation and offset from start (these are the same unless #CXRLE Gen is defined and non-zero)
- fixed an issue with Generations algorithm when only decaying cells remain

Build 188
- fixed a visual glitch caused by a previous optimization
- [[ TITLE ]] string was ignoring text after last variable substitution
- & symbols in script strings were being converted to html friendly versions
- snapshots were not working with patterns containing no live cells
- Wolfram rule number must be even
- added B0 emulation support for totalistic rules with Hex or Von Neumann neighbourhoods
- when all cells died the STEP size was ignored
- if the STEP size is too large to allow frequent update then it will by dynamically reduced to keep the UI responsive
- initial fix for <code> tags embedded in <viewer> tags on forum

Build 187
- von Neumann neighbourhoods are now supported (e.g. B12/S1V)
- state 1 of Generations patterns with 2 states were being drawn in black
- neighbourhood is now displayed in help information
- display mode (hex or square) is now displayed in help information
- you can now specify just one dimension for bounded grids and it is used for both width and height
- shift and hotkey "/" now sets display to pattern default (hex or square)
- shift and hotkey "1" zooms to the nearest integer zoom
- added support for Wolfram 1D rules
- bounded grids with an odd height were being drawn one line off

Build 186
- points of interest would get lost if mode switched between hex and Square
- when waypoints are defined the reset state should use the first waypoint theme
- new script commands [[ LINEAR ALL|X|Y|ZOOM ]] and [[ BEZIER ALL|X|Y|ZOOM ]] that set the camera mode for X, Y and ZOOM or ALL elements at once
	- the default is bezier motion is used for camera transitions

Build 185
- added GlideLife to the aliases
- aliases in help information are now grouped by rule family
- two of the Generations aliases were incorrect
- improved rule error checking, pattern state validation and error messages
- TITLE string can contain new variable:
	- #T the program title (LifeViewer)

Build 184
- new script command [[ SQUAREDISPLAY ]] to force square display (for unknown rules that are autodetected as Hex)
- increased maximum STEP to 50
- increased step back generations to 2500
- left column of bounded box was sometimes not drawing correctly
- improved the "Auto", "Fit" and "Help" buttons

Build 183
- state display was incorrect for Generations rules
- Generations decay states were not counted in bounding box
- Generations rule patterns with scripts were marked as VIEWONLY
- angle UI slider should not display in Hex mode
- TITLE string can contain variables
	- #B the LifeViewer build number
	- #N the pattern name (if defined)
	- #O the pattern originator (if defined)
	- #R the pattern rule name
	- ## the # symbol
- performance improvements for next generation calculations and colour updates

Build 182
- added Generations aliases
- bottom line error messages were not being cleared in the standalone viewer

Build 181
- make patterns that are larger than their bounded grids invalid
- bounded grid is not valid for hex rules
- bottom line of LifeViewer window now displays "VIEWONLY" or reason why a pattern is not exectuable or valid
- [R]History is not valid with Generations rules

Build 180
- help information now includes pattern name and originator if specified in the RLE (#N and #O)
- added support for Generations rules (including Moore and Hex neighbourhoods and bounded grids)
- generation display now shows decimal places for millions
- RLE patterns without ! were missing last row

Build 179
- added support for bounded grids
	- Plane
	- Tube/Torus
	- Cross-surface
	- Klein-bottle
	- Sphere
- tile counts were only updated every even generation in help information

Build 178
- new script command [[ HEXDISPLAY ]] to switch on hex display (used for unspported rule patterns you want to show as hex)
- x coordinate display for hex rules now works correctly
- better whitespace handling for rule decoding

Build 177
- patterns of any size can now be deleted in one go when they hit the boundary
- added support for Alan Hensel's non-totalistic rule format
- added support for Mark Niemiec's x, y and z states
- added support for hex neighbourhoods
- hotkey "/" will toggle hex display (note this does not change the rule)
- added alias list to help information
- moving the mouse within a Viewer without focus will also trigger the "click to control" message
	- previously this was only triggered when moving the mouse onto the Viewer

Build 176
- state value in coordinate display now works with non-executable patterns
- multiple [[ LOOP ]] or [[ STOP ]] script commands are now flagged as errors
- added ability to define generation transition tables
	- [[ MAP <map>|<threshold> ]] defines transition for all generations
	- [[ MAPODD <map>|<threshold> ]] defines transition for odd generations (in which case MAP is used for even generations)
	- <map> is a base64 encoding of 512 bit transition map
	- <threshold> is a value <0.0..1.0>
- bounding box calculation occasionally create a box too high
- scripts can now display a message when waypoints not defined [[ "This is a message" ]]
- custom colors DEAD and DEADRAMP were switched
- notification now displayed when all cells are dead

Build 175
- creating rule lookup table is now 5x faster
- UI icons are now shared across all viewers
- "Click to Control" message now uses colour animation
- added state value to coordinate display

Build 174
- new script command [[ DELETERANGE <1..16> ]] that defines how near live cells have to be to each other to be deleted as part of a pattern
	- default is 3 cells
- RLE decoder was not failing on some invalid patterns
- removed support for LV85 format patterns

Build 173
- patterns that hit the boundary are now instantly deleted in their entirety

Build 172
- drawing starfield is now 25% faster in the general case and 4x faster at ANGLE=0
- drawing gridlines is now 3.5x faster

Build 171
- validate that patterns still fit on the grid when XOFFSET or YOFFSET specified
- only clear boundaries if pattern is near the edge of the grid
- clicking step back on a running pattern now functions identically to the pause button (i.e. looping is cancelled if defined)
- left and right boundaries are no longer 16 pixels from the edge

Build 170
- added state names to [R]History colours in help information
- modest performance improvements to boundary clear
- added custom state colours for [R]History
	- COLOR <name> RGB where <name> is "OFF", "ON", "HISTORY", "MARK1", "MARKOFF", "MARK2" or "KILL"
- hotkey ZOOM changes were resetting ANGLE to 0
- new script commands [[ XOFFSET <number> ]] and [[ YOFFSET <number> ]] to define pattern position offset on grid
- added [[ COLOR BOUNDARY R G B ]] to define custom boundary colour
- fixed an issue with the RLE pattern decoder which would ignore invalid characters in rule names

Build 169
- integration with Molly
	- add a link to "Show in Molly" on the forum for patterns that are too big or use a rule that LifeViewer can not execute
- switched Depth and Theme controls
- some invalid [R]History style rules were being marked as LifeHistory
- switched position of Layers and Depth controls to match hotkey positions
- layers now use dynamic zoom level of detail
- [R]History state 6 execution is now much faster
- fixed potential issue with initial grid size (step speed)
- better [R]History zoom out due to priority state reordering

Build 168
- smooth camera transitions
	- between POIs (hotkey "j")
	- when restoring saved View (hotkey "v")
	- when using fit zoom (hotkey "f")
	- when setting zoom to a multiple (hotkeys "1", "2", "3", "4" "6", "8")
- saved View and POIs now also remember ANGLE
- fit zoom and autofit controls disabled during waypoint playback
- further performance improvements to rendering when ANGLE=0 but clipping required
- better handling of patterns hitting the grid boundary for non-explosive rules
- [[ X ]] and [[ Y ]] script commands now allow arguments between +/- half maximum grid size rather than half current grid size

Build 167
- improved performance when computing previous generations for step back function (hotkey "b")
- script command [[ SHOWGENSTATS ]] will display the generation statistics at pattern load (hotkey "g" to toggle)
- script command [[ SHOWTIMING ]] will display timing information at pattern load (hotkey "t" to toggle)
- [[ AUTOFIT ]] keyword will now set AutoFit on at pattern load when no Waypoints are specified
- ensure AutoFit gets to target camera position

Build 166
- ability to define points of interest
	- script command [[ POI ]] followed by X, Y, and ZOOM definitions
	- hotkey "j" to jump to next point of interest
	- shift and hotkey "j" to jump to previous point of interest
	- list of POI definitions added to help information
	- notification if attempt to switch POI while AutoFit is enabled
- added "OPEN MOLLY" link for patterns that are either too big for LifeViewer or patterns that LifeViewer can display but not execute
	- currently just points to Molly on Andrew's site but will be updated to a "SHOW IN MOLLY" link once we agree a pattern passing mechanism

Build 165
- increased maximum step back generations to 1024
- when step back generations exhausted automatically compute the previous set of generations
- shift and hotkey "v" now saves the camera position, hotkey "v" restores camera position
- area outside maximum grid size is drawn in grey
- shift and hotkey "c" sets default Theme

Build 164
- improved notification message when Pause other LifeViewers is used (hotkey "z")
- faster rendering when ANGLE=0 and/or clipping not required
- shift and hotkey "2" now sets ZOOM to -2x (used to be hotkey "5" which now does nothing)
- shift and hotkey "4" now sets ZOOM to -4x
- shift and hotkey "8" now sets ZOOM to -8x
- shift and hotkey "6" now sets ZOOM to -16x
- shift and hotkey "z" now pauses all Viewers (unlike hotkey "z" which pauses other Viewers)
- population count for T=0 was incorrect in some cases
- fit zoom was incorrect for [R]History patterns that had no live cells
- RLE pattern decoder is now case-insensitive for rule names
- RLE pattern decoder can now deal with incorrect x and y values
- Life 1.05 pattern decoder now ignores non-standard # commands
- display coordinates under mouse cursor (when ANGLE = 0)
- coordinates automatically display when paused and disappear during playback unless stats are on
- [[ ZOOM ]] script command now accepts negative zoom values -16 to -1 (as well as 0.0625 to 1)

Build 163
- added a notification when AutoFit switched on or off
- improved the pattern decoder so it is less lenient on files that look like Life 1.05 but aren't
- hide the AutoFit, Fit, Zoom and Grid UI controls when help is displayed
- corrected colours on AutoFit button
- faster rendering when ZOOM < 1
- extended minimum zoom from 0.25x (-4x) to 0.0625x (-16x) and adjusted how zoom values are displayed
- removed duplicate grid clears during startup
- removed duplicate initialization during standalone viewer creation
- improved snapshot memory usage after reset
- snapshot memory now dynamically grows to reduce GC
- added coloured boxes to help information when showing colours
- increased number of stars for larger zoom out
- improved tile usage during snapshot restore and reset
- moved timing information so it no longer overlaps help button
- improved validation of rule names for RLE decoder
- when step back disabled do not allocate snapshot 0
- fixed an issue with tile clear failing causing extra tiles to be processed
- made the zoom control always available at the top of the window
- zoom control hides when help displayed
- help information now shows number of grid tiles and colour tiles
- help information also shows when grid lines are switched on but hidden (due to non-zero ANGLE or ZOOM < 4)
- added button for fit zoom
- added toggle button for grid display
- lock ZOOM UI control when AutoFit on
- display notification when ZOOM change attempted via hotkeys or mouse wheel and AutoFit is on
- display notification when X or Y change attempted via hotkeys or mouse pan and AutoFit is on
- increased the height of the standalone Viewer so area without menus is square
- UI library can now draw icons on simple buttons
- corrected the highlight on UI items that are selected
- AutoFit is now smoother
- updated help text to document "Esc" stops playback
- help display for [R]History rules now includes state colours as well as Theme colours (since Theme only defines states 0, 1 and 2)
- background drag now scrolls help information and error list when displayed
- zoom control was not being disabled during waypoint playback

Build 162
- do not run [R]History patterns with an invalid number of states
- added support for HTML5 colour names [[ COLOR ALIVE Red ]]
- added [[ COLOR TEXT R G B ]] to set colour for waypoint messages
- if help is open then hotkey "i" will move to the info section
- shift and hotkey "e" will set STEP to maximum (32)
- shift and hotkey "d" will set STEP to minimum (1)
- shift and hotkey "+" will set GPS to maximum (60)
- shift and hotkey "-" will set GPS to minimum (1)
- only allocate the [R]History overlay for [R]History rule patterns that contain cells in states >= 2
- only allocate the [R]History state 6 bitmaps when pattern contains cells in state 6
- moved stars further away to create better depth perception
- LifeHistory pattern fit zoom failed after grid grows
- pattern decoder now accepts well known rule names (2x2, Bugs, Gnarl, etc.)
- fixed a crash after failing to decode an invalid multi-state pattern
- when step back disabled (with [[ NOSTEPBACK ]]) and step back attempted display a more useful message
- help information now displays counts of cells in each state present at pattern load
- failing to decode an invalid RLE pattern (i.e. illegal number of states) could be then marked valid by another decoder
- added [R]History support which extends LifeHistory features to any supported Life-like rule
- with multiple viewers and more than one non-library rule the rule names were displayed as the first non-library rule
- added some rule aliases
- added new button (top left) to toggle AutoFit
	- shift and hotkey "f" to toggle

Build 161
- updated help text for step back and step forward hotkeys
- implemented LifeHistory state 6 execution
- added support for "life" as as rule name
- shift and hotkey "." or "," will rotate left or right in 90 degree steps
- shift and hotkey "[" or "]" will zoom in or out by a factor of 2
- zoom via hotkeys is now centered around cell under the mouse cursor
- corrected generations rule decoding
- rules without B or S prefixes were being read in the wrong order

Build 160
- improved LifeHistory display for ZOOM < 1x

Build 159
- opening a new pattern in the standalone viewer was not resetting the stars mode
- fixed minor overflow in mouse wheel zoom
- failed to read rules where one of the sections was empty
- improved support for executing LifeHistory
- added the "step back" button to the UI
- hotkey "b" will pause execution if running
- pause button image becomes "step forward" when paused
- LifeViewer build number now at top of help text
- added a help button to the UI

Build 158
- improved performance of step back function
- notification system now discards duplicate notifications
- LifeHistory patterns were not executing
- significant performance optimizations for allocating, copying and growing the grids
- rules were incorrectly decoding if no space between the equals sign and the rule definition
- the standalone viewer title was not centered correctly
- modified the standalone viewer title
- NOSTEPBACK was not being reset when new patterns were opened in the standalone viewer
- added keyword [[ TITLE ]] that allows you to specify the window title for the standalone viewer (up to 30 characters)

Build 157
- arrow keys now use the zoom level to determine how far to move the pattern
- shift key with the arrow keys now moves diagonally
- improved key handling for non hotkeys
- updated pattern decoder did not respect "Life" rule name
- patterns with x and y defined but no rule defined were not defaulting to B3/S23
- increased step back one generation (hotkey "b") to a maximum of 512 generations
- step back function now uses step size1
- added keyword [[ NOSTEPBACK ]] to disable step back function
- added snapshot details to help information

Build 156
- you can now specify THEME CUSTOM to use the custom definition at a waypoint
- added hotkey "5" for 0.5x ZOOM
- disabled THUMBNAIL, WIDTH and HEIGHT commands for standalone Viewer
- added keyword [[ STARS ]] to switch on starfield background
- hotkey "s" to toggle starfield
- added COLOR STARS R G B to set stars colour (default is white)
- toggle thumbnail mode is now hotkey "n"
- addded hotkey "0" to reset angle to 0
- the Theme UI was not extending when a custom theme was defined
- remove forum search decoration from patterns
- patterns bigger than their defined width or height were failing to decode with an exception (that was caught)
- step back one generation (hotkey "b") now limited to a maximum of 64 generations
- hex rules are no longer executable

Build 155
- enhanced the pattern decoders to support simple ASCII "." and "*" with no header
- default fit zoom display was not being updated after grid grows
- patterns in extended RLE format but with valid rule definition and two states were being treated as multi-state
- waypoint ZOOM was not working correctly in THUMBNAIL mode
- LOOP in waypoint mode was showing a single non-waypoint controlled frame
- added step back one generation (hotkey "b")
- mousewheel ZOOM was broken

Build 154
- improved error checking in Cells decoder
- grid growth had been inadvertently disabled
- further minor improvements to start up time

Build 153
- fit zoom widened a little
- added some more colour sets
- further improved styling to the standalone viewer

Build 152
- DEPTH was not being read correctly for initial waypoint
- births and deaths are now computed when stats switched from off to on (rather than just population)
- initial population statistics are remembered for faster Reset
- automatically increase grid size to ensure display doesn't wrap at 1x ZOOM
- minor (~15%) improvements to start up time
- ZOOM rate of change is now a constant factor (for smoother zooms)
- waypoint interpolation now uses Bezier curves to smooth start and stop of a camera move
- correctly handle non-breaking spaces in patterns
- waypoints with no initial zoom defined were using a default rather than the fit to zoom value
- fit zoom (hotkey "F") no longer keeps a border around the pattern and avoids the UI controls
- fit zoom and reset view are now disabled during waypoint playback (but work if waypoint playback paused)
- improved the styling on the standalone viewer window
- standalone viewer window no longer intrudes on vertical scrollbar if present
- added support for B0 rules via emulation
- manual adjustment during waypoint catch up now works correctly
- disabled manual THEME change during waypoint playback
- improved colour history display at ZOOM < 0.5x
- new script command [[ AUTOFIT ]] which can be used as a target for [[ T ]] and [[ PAUSE ]] waypoint commands
	- it is an error to use AUTOFIT not at a waypoint
	- AUTOFIT overrides any X, Y or ZOOM setting at the waypoint
- STEP size was not being respected after last waypoint or when waypoints disabled
- when waypoint playback passes the last defined waypoint the help information displays ">" at the last waypoint in the list rather than "*"

Build 151
- minimum zoom is now 0.25x
- 4x supersampling is used when 0.5x <= zoom < 1.0x
- 16x supersampling is used when 0.25x <= zoom < 0.5x
- waypoint playback was not performing smooth course correction after manual adjustment at last waypoint
- switched to smaller tile size
- it was possible to create a Viewer whose width was not a multiple of 8
- locking a UI item would not cancel any current interaction

Build 150
- only "Expand" notifications display when in thumbnail mode
- generations per step was not being reset when different patterns were opened in the standalone viewer
- gps and STEP sliders background goes red if playback is not happening in "real time" due to machine performance
- more consistent handling of playback when machine performance is low
- vastly improved reset time
- Themes with no colour history perform better playback than other Themes when STEP > 1 is used (Theme 0 and Theme 6 or any custom Theme with just an ALIVE and DEAD colour defined)
- zooms < 1 use super-sample to ensure alive cells are displayed
- display no longer appears to wrap at low zooms

Build 149
- tile-based generation engine for faster performance on sparse patterns
- increased maximum STEP to 32
- switching on or off waypoint playback (with hotkey "W") also turns on or off LOOP mode if defined

Build 148
- ensure initial standalone viewer all visible
- if the screenshot window could not be opened display a notification (usually because popups are blocked by the browser)
- initial waypoints without position information were not resetting to defaults in the standalone viewer
- only display LOOP on and off message at Pause and Reset if LOOP is actually defined
- increased the duration of error notifications
- hotkey "M" was toggling navigation menu when disabled
- prevent progress bar from drawing > 100% on systems that are not fast enough to keep up
- step slider was not being displayed in the standalone viewer if the previous pattern was VIEWONLY

Build 147
- don't display progress bar in viewonly mode
- improved the waypoint catch up algorithm after pause or waypoint playback disable/enable
- limit catch up rate to prevent race condition
- when waypoints are defined LOOP is not disabled on pause but on first Reset (to match waypoint playback mode)
- only the first 128 state colours were being displayed
- help information correctly shows subset of custom colours used
- out of range state colours are now silently ignored
- pattern decoder was too lenient
- prevent standalone viewer window from being dragged off the main window
- some pattern rule names were causing colours to be set to all white

Build 146
- opening a multi-state pattern in the standalone viewer after it previously contained an executable pattern caused the colours to be wrong
- valid patterns that are too large now display a "Pattern too big!" message rather than "Invalid pattern!"
- added step slider to ui
- hotkey "d" to decrease and "e" to increase step size

Build 145
- closing and opening the standalone viewer on the same pattern now correctly enables looping and waypoints (where specified)
- waypoint messages and system messages are now displayed on separate lines
- waypoint messages can now be two lines [[ "This is a\ntwo line message" ]]
- [[ STEP ]] can now be used in waypoints
- in some cases a third reset caused odd behaviour
- added a progress bar behind the Gen button when LOOP or waypoint playback enabled
- the Pause and Reset messages will now say if LOOP or waypoint playback have changed or if AutoStart is activated
- waypoint messages containing more than one newline are reported as errors
- startup time was being counted in the first waypoint
- waypoint messages are cleared when waypoints are switched off

Build 144
- waypoint playback can be toggled with hotkey "W"
- controls are unlocked after final waypoint
- controls are temporarily unlocked when waypoint playback paused
- first reset will disable waypoint playback (if available)
	- second reset will enable
- hotkey "Esc" will pause playback and if already paused will disable waypoints
- if you pause during waypoint playback and move the camera then restarting will glide to the correct waypoint position
- added waypoint details to help information
- angle changes always take the shortest path (e.g. 350 -> 10 degrees)

Build 143
- [[ GPS ]] and [[ THEME ]] can now be specified at each waypoint
- playback continues after the last defined waypoint at the current gps
- pan, zoom, angle, layer, depth, theme and gps controls are locked (greyed out) during waypoint playback

Build 142
- extended maximum STEP to 20
- intial implementation of Waypoint system
- script command [[ T {generation} ]] defines a waypoint at the specified generation
- script command [[ PAUSE {seconds} ]] pauses Life for the specified number of seconds
- both the [[ T ]] and [[ PAUSE ]] commands can be followed by camera setting commands
	- [[ X ]] to set the target camera X position
	- [[ Y ]] to set the target camera Y position
	- [[ ZOOM ]] to set the target camera zoom
	- [[ ANGLE ]] to set the target camera angle
	- [[ LAYERS ]] to set the number of layers
	- [[ DEPTH ]] to set the layer depth
- text in double quotes is displayed for the duration of the waypoint [[ "This is a message" ]]

Build 141
- added hotkey "Z" to stop playback in all other LifeViewers
- help information now shows number of viewers that are playing
- re-enabled scrolling the error list
- inverted cursor keys to align with Golly
- <code> blocks on phpbb will now get a "Show in Viewer" link that when clicked will open a standalone Viewer in a moveable window
- added script command [[ STEP 1..10 ]] that defines generations per step
	- the gps slider controls steps per second
	- the display is only updated at the end of each step

Build 140
- added notification if grid lines switched on or off when the grid lines can't be displayed
- menus work correctly when canvas is contained in a style="position:fixed;" div
- added missing LifeHistory state colour
- LifeHistory patterns now center correctly when in VIEWONLY mode
- existing Viewers can be reused with a new pattern
- corrected extended RLE format states > 24

Build 139
- fixed rule reader broken in build 136

Build 138
- major gridlines drawn after minor gridlines
- added Page Up, Page Down, Home and End keys to error list
- Up or Down message is greyed if help or error list at top or bottom

Build 137
- added ability to create an image of the LifeViewer in a new browser window
	- overlays are removed for the captured image (menus, population count, timing information, etc.)
	- image is saved in PNG format

Build 136
- added major grid lines to grid line display
	- script command "GRIDMAJOR <0..16>" to define interval (default 10)
	- script command "COLOR GRIDMAJOR R G B" to define colour
	- grid is now drawn with bottom layer rather than over the top
	- extended multi-state support to 256 states
	- corrected multi-state fit zoom for non-LifeHistory rules

Build 135
- added grid line diplay (disabled by default)
	- will only display at zoom levels >= 4 and angle 0
	- hotkey 'X' to toggle
	- script command "GRID" to enable on startup
	- COLOR or COLOUR GRID R G B will define grid line colour
- correctly handle ":" character in rule name
- added "shapeloop-b" and "2armshapeloop-a" to the "shapeloop" set

Build 134
- <meta> "limit" now both limits the width of the Viewer to that of the assosicate pattern element and sets it as the default width
- default width without "limit" increased to 1024
- added ability to define a custom Theme
- error list can now be scrolled with cursor keys, page up and down, and the mouse wheel

Build 133
- parameters to integrate the Viewer in a web page are now read from a meta tag
	- <meta name="LifeViewer" content="viewer textarea 30 hide limit">
	- "viewer" is the class name of the div
	- "textarea" is the embedded element name containing the pattern
	- "30" is the maximum height in px of the element containing the pattern, or -1 not to change the height
	- "hide" is optional and if present indicates that canvas element should be hidden if the browser doesn't support the viewer
	- "limit" is optional and if present indicates that the Viewer width is limited by the width of the element containing the pattern

Build 132
- RLE pattern reader now copes with blank lines between comments and header
- mouse wheel will now scroll help text

Build 131
- code block is only shortened if height is greater than 2.5 lines
- improved start up time for each Viewer
	- start up time is typically 67% of previous builds
	- viewers with the same rule as the last viewer start in 25% of previous builds

Build 130
- missing custom colours now use the corresponding state colour from the rule's set (or default set if no rule set exists)
- missing colour errors now display the RGB value substituted
- the information display shows the set name as "(default)", the rule set name (e.g. "LifeHistory"), "(custom)" where all states are custom or "LifeHistory (custom*)"
- in the latter mode the custom entries are marked with a *
- added hotkey V to reset camera view
- help and error visibility is retained across thumbnail toggle
- slightly reduced notification font size
- removed error report for STOP generation being later than LOOP generation since you can disable LOOP with pause and then continue to the STOP
- fixed a problem which allowed non-LifeHistory multistate rules to be AUTOSTART when VIEWONLY wasn't specified

Build 129
- default colour set is not Golly's default
- errors are now only generated for missing colours for states that area actually in the pattern
- missing colours are defaulted to Golly's

Build 128
- Viewer now has a list of default colour sets for a range of rules
- multi-state patterns that aren't LifeHistory are forced to be VIEWONLY if not specified
- rule name now displays correctly in the help information for multi-state patterns
- added COLOR and COLOUR script commands to define multi-state colour sets
- udpated help so only hotkeys available in the current mode are displayed

Build 127
- maximum Viewer size is now limited to maximum width of Code element
- added hotkey "S" to toggle thumbnail view

Build 126
- added THUMBNAIL script command which starts Viewer at a quarter size, click to expand to full size

Build 125
- remove 'M' from help if navigation menu unavailable
- added ZOOM and ANGLE to information display

Build 124
- fixed menus and zoom not behaving in nested scrolled panes
- play now respects the gps setting for the first generation

Build 123
- pause now temporarily disables LOOP until the next reset
- cursor up/down now work in help. page up/down now do scroll a page at a time
- added X and Y position to the information page in help

Build 122
- fixed broken X and Y

Build 121
- basic support for displaying static multi-state patterns

Build 120
- fixed zoom and menus after a change is made to browser zoom
- trim pattern text to help decoders
- report error if LOOP generation appears before STOP generation
- added new script command, VIEWONLY, to disable playback
- fit zoom display hotkey was not updating zoom control

Build 119
- added zoom to cursor position
- display 2.5 lines of "code" block

Build 118
- display two lines of "code" block

Build 117
- reduced font size for notifications
- removed "Control On" and "Control Off" notifications
- reduced minimum window height (via HEIGHT script command) to 240 pixels
	- heights below 480 pixels do not show the navigation menu
- added keys Page Up and Page Down to scroll through help text
- corrected helptext for X and Y script commands to show correct range
- added keys Home and End to go to the top and bottom of the help text
- added hotkey I to toggle information display on the pattern and Viewer
- if there is no support for the Viewer then automatically hide the rle div
- added more information
	- decoder for current pattern
	- number of running Viewers
	- number of script commands and errors

Build 116
- first plugin build (fork from main LifeViewer)
