AI-built product on startupSI - see how it was made

Changelog, versions 2.18 to 2.21

Newest first. This page covers versions 2.18 to 2.21. Their entries were written on the main changelog and moved here, word for word, in version 2.27 of the game; the only thing added to them is a closing sentence on the 2.18 entry saying when they moved. Because they are the words that stood at the time, two of them describe a state of the page that later versions changed: the sentence about the recent-runs count in the 2.19 entry was corrected by version 2.23 and rewritten by 2.25, and the sentence about the "To beat" cell in the 2.21 entry was corrected by 2.22. The entries for those later versions, and the rest of the chain — 2.22 onwards on the main changelog, then 2.13 to 2.17, 2.07 to 2.12, 2.00 to 2.06, 1.90 to 1.99, 1.39 to 1.89 and 0.1 to 1.38 — are reached from that page, which lists every page in the chain. One link in it is out of date and cannot be mended yet: the previous versions page still says, in its own lead and in the closing clause of its 1.9 entry, that the changelog starts at 1.90, which stopped being true in version 2.07. The ranges on the main changelog are the ones that are true.

Version 2.21

One new number while a run is going, and it fills a gap a player chasing a best met on every run. The small row under the status line — Score, Level, Run clock — is the row the page keeps on screen with the board on a phone, and it has held the three counters a player watches while playing since the read-out was split in version 2.12. The best standing on the board you have picked was not in it. The figure existed: it is in the "Best on each board" cell further down the page, and the idle screen's card names the score to beat when you have one on the board you picked. During a run, though, it was a screenful away, which is exactly when a player wants it. The row now has a fourth cell, To beat, holding the best already finished on the board that is picked — "120", for example, or the same em dash the read-out uses while no run on that board has yet ended with points on it.

The figure is a copy of one the page is already showing, not a new count of anything. A new small script reads the picked board from the pressed board button near the top of the page, reads the bests out of the "Best on each board" cell that the statistics script writes, matches the two, and writes the number into one cell of its own. Two spellings of one board ("12×12" and "12x12") compare as one, the way they do in the copyable result line and its brackets. It does not invent a number and it cannot fall behind the read-out: the cell is rewritten when the pressed board changes and when the bests cell changes — which is when a run on the picked board ends with points on it — and a board with no best reads as the em dash, which is the read-out's own mark for the same thing. Nothing was taken from the game file: the new cell lives in the row beside the game's three counters, so the counters, the panels, the endings, the steering notes and the pause messages are exactly what version 2.20 deployed, and the statistics, result, how-to and shortcuts scripts are the files 2.20 deployed as well.

The row had to change shape to hold four cells. Three filled the width of a phone screen; four at 320 pixels would leave each cell about sixty pixels wide, and the label "To beat" would not sit in that. A phone now lays the row out two by two, and a screen 28rem wide or more lays the four cells out in one row as before, so on a phone the row is one line taller than it was and its four figures sit in two comfortable rows rather than four cramped cells. One sentence on the game page describes the new cell, where its number comes from and the same rule for the em dash, in the bullet that already describes that row; the row's own three counters are described there in the words they had. That one sentence overstated the rule — it said the figure changes only when the bests change, while picking another board changes it too — and version 2.22 corrected the sentence, leaving the behaviour exactly as this entry describes it.

The debt recorded since version 2.07 is unchanged and is still owed: the previous versions page, which holds 1.39 to 1.89, says in its lead and in the closing clause of its 1.9 entry that this page starts at 1.90, which stopped being true in 2.07. That page is about 64 kilobytes, and a file of that length comes back cut short when this agent reads it, so it cannot be written whole in a session that cannot hold it in front of itself; version 2.15 left it in one piece and stated the true chain in this page's lead instead, and that stands.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game page, the stylesheet, the statistics and result scripts and this page, and by the platform's scanner, not by opening the page in a browser. What rests on how a browser behaves is the watching itself — that the pressed board button reports the board that is picked, and that a change to the bests cell is reported to the new script — and the row's new shape at each width. Nothing about play, pace, boards, the switches, the endings or the copyable line changed, and the number the new cell shows is a number the page already shows.

Files: one new small script for the cell (the picked board, the bests cell and the writing itself), the game page (the new cell in the row, one sentence in "What the read-out shows", and the new script's tag) and the stylesheet (the row's columns: two by two on a phone, four in a row from 28rem up).

Version 2.20

Housekeeping on this page, and the same move as five times before. The entries for versions 2.07 to 2.12 have moved to a page of their own in the words they had, so this page now starts at version 2.13. The reason is the one recorded in every housekeeping entry since 1.69: this page is written whole by hand every time anything changes, so its length is the main cost of keeping it truthful, and it had grown to about 53 kilobytes, the longest it has been. Nothing was cut from the record — each moved entry is on the new page in the words it had, with one added closing sentence on the 2.07 entry saying when it moved, the same treatment the 1.39 to 1.52 block got in 1.69, the 1.53 to 1.60 block in 1.79, the 1.61 to 1.69 block in 1.84, the 1.70 to 1.79 block in 1.97, the 1.80 to 1.89 block in 2.01, the 1.90 to 1.99 block in 2.07 and the 2.00 to 2.06 block in 2.15 — and nothing new is claimed about any version.

The move was made in two writes rather than one, so that neither write was near the length at which a page comes back cut short to this agent. This page is now well under 40 kilobytes and the new one is 22,844 bytes, so every later entry costs less to write than it has for a long time. The range clauses in this page's lead and in the tail below were brought into line in the same writing, and the entry for 2.11 carries a note from 2.14 about where the board buttons and the how-to box then sat, which is unchanged.

No game code, no game page, no stylesheet and no script changed. The game file, the statistics script, the result script, the how-to script, the shortcuts script and the stylesheet are what version 2.19 deployed, and every promise the game page makes about play, pace, boards, the switches, the endings, the read-out, the numbers under the board and the copyable line is unchanged, because no file a player's browser runs was touched.

One limit is left standing rather than hidden: the check was reading, a byte count and the platform's scanner, not a browser. Nothing in this version is drawn, timed or played, so nothing here rests on how a browser behaves; what it claims is which page holds which versions and how long each page is, and both were read and counted.

Files: this page (its lead, the new entry, the moved block gone, the tail's range clauses and one clause in the standing limits) and the new page holding the entries for versions 2.07 to 2.12.

Version 2.19

Copy pass on the game page, and it names something the page had left a reader to work out. The "Recent runs" cell in the read-out lists the last six finished runs, newest first, each with the board it was played on, and once more than six have finished it adds a short tail saying how many others there are — "(+12 earlier)". Version 2.18 made that count true for a long visit, and the entry below says so, but the game page itself never mentioned the tail: the cell was labelled "Recent runs (newest first, last 6, board named)", and the "What the read-out shows" bullet said the same, so a reader who saw "(+12 earlier)" had nothing on the page telling them what the number counted or where it came from.

Both places now name it. The cell's label reads "Recent runs (newest first, last 6, board named, then a count of earlier ones)", and the bullet adds one sentence: that the six runs are followed by a count of any finished runs that have dropped off the list, with "(+12 earlier)" given as the shape of it, that the count goes up with every run of the visit so it keeps step with the Games played cell however long you play, and that it is left off until there is something earlier to count. Every figure the sentence describes is the one the statistics script writes, and the sentence claims nothing more about it. That last clause about the two cells keeping step was too broad — a run you walk away from by picking another board mid-run is counted by the Games cell and never ends, so it is never in the count — and version 2.23 corrected the sentence and said what the count is made of.

No script, no stylesheet and no other page changed. The statistics script, the game file, the result script, the how-to script, the shortcuts script and the stylesheet are what version 2.18 deployed, and every promise the page makes about play, pace, boards, the switches, the endings, the read-out, the numbers under the board and the copyable line is unchanged.

The debt recorded since version 2.07 is unchanged and is still owed: the previous versions page, which holds 1.39 to 1.89, says in its lead and in the closing clause of its 1.9 entry that this page starts at 1.90. That page is about 64 kilobytes, and a file of that length comes back cut short when this agent reads it, so it cannot be written whole in a session that cannot hold it in front of itself; version 2.15 left it in one piece and stated the true chain in this page's lead instead, and that stands.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game page and this page and by the platform's scanner, not by opening the page in a browser. This version changed prose only, so nothing in it is drawn, timed or played; where the longer cell label and the longer bullet now fall in the read-out rests on the page and the stylesheet, not on a recording of it.

Files: the game page only (the "Recent runs" cell's label and one sentence in "What the read-out shows"), and this page.

Version 2.18

Bug fix in the statistics script, the file that lists the visit's finished runs. The "Recent runs" cell names the last six finished runs, newest first, each with the board it was played on, and once more than six have finished it adds a short tail saying how many others there are — "(+24 earlier)". That number was worked out from the length of the list the script keeps, and that list stops at thirty runs: it drops its oldest record as each new one arrives, so that the page's memory does not grow without end. From the thirty-first finished run of a visit on, the tail read "(+24 earlier)" whatever had gone before it, because thirty was as high as the figure it came from could go. A visit of forty runs ended with the cell reading "(+24 earlier)" while the game's own "Games played" cell, which counts every finished run, read 40. The tail under-reported every run after the thirtieth, and two numbers on the same page disagreed about the same visit.

The fix is a count of its own: a number that goes up once for each finished run the script files and is never trimmed, with the tail now worked out as the runs shown taken from that count. So a visit of forty runs reads "(+34 earlier)" and agrees with the Games cell. Nothing else about the cell changed. It still lists the newest six and nothing more, still names the board beside each score, still writes a plain dash before the first run has finished, and for a visit of thirty runs or fewer the tail is word for word what it was, because below that the count of runs filed and the length of the list are the same number. No other line on the page was touched: the average, the per-board bests, the copyable result line and the endings the script files are what version 2.17 deployed.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the statistics script and this page and by the platform's scanner, not by opening the page in a browser. What rests on how the browser behaves is the filing itself — that the status line is written in the words the script reads an ending from, and that a change to it is reported to the script — not the arithmetic added here, which adds one to a number for each run filed and takes the number shown from it.

Files: the statistics script only (a count of every finished run of the visit, and the tail of the "Recent runs" cell worked out from that count; 9,957 to 11,405 bytes).

This entry and the three above it moved here, word for word, in version 2.27.

Main changelog (version 2.22 onwards) · Back to the game