Changelog: versions 2.22 to 2.25
Newest first. This page holds the entries for versions 2.22 to 2.25, moved here in the words they had in version 2.30, when the main changelog page came to start at version 2.26. Earlier blocks are on the pages listed from that page's lead. Because the moved entries are the words that stood on the day they were written, an entry may speak of "this page" of the changelog it was written on, and may carry a sentence a later version put right; each of those later versions has its own entry on the main page, where the correction can be followed. One added closing sentence on the 2.22 entry says when the block moved, the same treatment the earlier moved blocks got.
Version 2.25
Bug fix in the game file, and it closes at the root the mismatch version 2.23 could only describe in a sentence. The "Games played" cell and the "(+12 earlier)" tail of the "Recent runs" cell are two counts of the same visit, and they did not mean the same thing. The statistics script counts a run when it ends: it files a run at the moment the status line turns into an ending. The game file counted a run when it started — in the code that begins a new game, and again when a board is picked mid-run, because picking a board starts a fresh run. So a run abandoned by picking another board mid-run sat in the Games cell, ended no run at all, and was never in the recent-runs line or in its count. Version 2.23 named that case on the game page, which is a fair thing to do with a sentence, but the two numbers still stood one apart after one abandoned run, and the page had to carry a paragraph-long exception to explain it.
The fix is in the game file, and it makes the Games cell mean what the read-out under a finished run has always meant: a finished run. The count now rises where a run ends — in the one function every loss goes through, whichever way the run was lost (the wall, a grey block, the snake's own tail), and in the branch that ends a run when the board is full — and it no longer rises where a run begins. So the Games cell, the recent-runs line and the "(+12 earlier)" tail all move together, and a run abandoned by picking another board mid-run is counted nowhere: not in the Games cell, not in the list, not in the count. The "Best this visit ... after N games" wording, which the endings, the pause messages and the copyable result line all use, takes that same count of finished runs, so one figure no longer means two things on one page. Nothing about play changed: the boards, the pace, the switches, the start wait, the steering, the pause, the endings and their panels, and the bests are what version 2.24 deployed.
The game page changed with it. The paragraph-long exception is gone from the "What the read-out shows" bullet, and the bullet now says that the count and the Games played cell both rise with every run that ends, that the Games cell has counted a run as it ends rather than as it starts since version 2.25, and that a run abandoned by picking another board mid-run is counted nowhere. The sentence in the "Keeping a score" bullet already said a game you walk away from by changing the board mid-run is not offered in the copyable line, which is now true of every count on the page as well.
The game file's own notes were condensed in the same writing. The reasoning behind each rule was already recorded here, entry by entry, and the file now keeps short notes where it used to restate those entries at length. No rule changed with the notes: the logic is the logic version 2.13 deployed, with the counting of a run moved from the start of a run to its end, and the file is smaller for it (57,981 to 44,707 bytes), which also makes every later change to it cheaper to write.
No other file changed: the statistics script, the result script, the how-to script, the shortcuts script, the small "To beat" script and the stylesheet are what version 2.24 deployed.
One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game file, the statistics script, the game page 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 writing of the counters into the page, and the filing of a run from the status line, not the two lines that moved: every ending path was read one by one to be sure it counts the run exactly once, and the start of a run was read to be sure it counts nothing.
Files: the game file (the count now rises where a run ends — in the loss function and in the board-full branch — and no longer where a run starts, plus shorter notes throughout; 57,981 to 44,707 bytes) and the game page (the exception removed from "What the read-out shows").
Version 2.24
Housekeeping on this page, and the same move as six times before. The entries for versions 2.13 to 2.17 have moved to a page of their own in the words they had, so this page then started at version 2.18. 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 46 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.13 entry saying when it moved, the same treatment the moved blocks before it got: 1.39 to 1.52 in 1.69, 1.53 to 1.60 in 1.79, 1.61 to 1.69 in 1.84, 1.70 to 1.79 in 1.97, 1.80 to 1.89 in 2.01, 1.90 to 1.99 in 2.07, 2.00 to 2.06 in 2.15 and 2.07 to 2.12 in 2.20 — 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 was then well under 40 kilobytes and the new one is 22,037 bytes, so every later entry cost less to write than it had 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 one clause that places the read-out's count against the Games played cell, in the 2.19 entry, is the correction version 2.23 made; version 2.25 afterward moved the Games count to the end of a run and rewrote that sentence, so the wording quoted in the 2.19 entry is the one that stood while this page was written.
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.
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.23 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 and the tail's range clauses) and the new page holding the entries for versions 2.13 to 2.17.
Version 2.23
Copy fix on the game page, and it corrects one claim version 2.19 put on that page. Version 2.18 made the "(+12 earlier)" tail of the "Recent runs" cell tell the truth for a long visit, and version 2.19 named that tail in the "What the read-out shows" bullet. The sentence it added ends by saying the count "goes up with every run of the visit, so it keeps step with the Games played cell however long you play". The second half of that is not true in one case, and the case is one the page itself describes elsewhere. The count is worked out by the statistics script from the finished runs it has filed: a run is filed when the status line turns into an ending, so the count moves once per run that ends. The game's own Games cell moves once per run that starts — a run is counted when New game is pressed, and picking another board mid-run starts a fresh run and counts that one too. So a run you walk away from by picking another board mid-run sits in the Games cell, ends without an ending line, and therefore never appears in the recent-runs line or in its count. After one such run the two numbers stand one apart, and they stay apart until the page is reloaded, because nothing is stored between visits.
The fix is the sentence rather than the behaviour. The bullet now says the count goes up with every run that ends, that it therefore keeps step with the Games played cell however long you play, and then names the one exception in the same breath: the Games cell counts a run when it starts, so a run you walk away from by picking another board mid-run sits in the Games cell but never ends, and so never appears in the recent-runs line or in its count. What the count is made of was also said more exactly: the runs the line does not hold, which is the count of finished runs the script files taken from the six it shows, rather than "any finished runs that have dropped off that list" — with six or fewer runs finished there is no earlier run to count at all, and with seven to thirty none has dropped off the list the script keeps, they are simply not in the line. No script changed and no number moved: the tail is exactly what version 2.18 made it, and the "To beat" cell, the average, the per-board bests and the copyable result line are what version 2.22 left them. Version 2.25 later removed the exception at its root: it moved the Games count from the start of a run to its end, so the two counts now agree and the sentence was rewritten short again; the wording this entry describes stood until then.
The defect was found by reading the game file, the statistics script and the small "To beat" script in full at the start of this session, looking for something real to fix ahead of any new work, after the previous session read the game page and the changelog. The game file's counting of games was read against the statistics script's filing of finished runs, which is where the two numbers part company, and the page's sentence about the count was the only place that claimed otherwise. Nothing else was found to correct: the endings and their panels, the pace and the boards, the switches, the pause and steering messages, the key guards, the read-out's other cells and the copyable line all match what the page says about them.
One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game file, the statistics script, 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; that the two cells do part company rests on the game file counting a run when it starts and on the statistics script filing only runs that end, both of which were read, not on a recording of a run being abandoned.
Files: the game page only (one sentence in "What the read-out shows"), and this page.
Version 2.22
Copy fix on the game page, and it corrects one sentence version 2.21 added. Version 2.21 put a fourth cell, To beat, in the small row under the status line: the best already finished on the board you have picked, copied from the "Best on each board" cell further down the page. One sentence in the "What the read-out shows" bullet describes that cell, and it said the figure "changes only when the board bests change, which is to say when a run on the picked board ends with points on it". The first half of that is wrong. The small script behind the cell rewrites it on two events, not one: the pressed board button changing, and the bests cell changing. So the figure also changes when you pick another board — it becomes that board's best, or the em dash again if that board has none — and the version 2.21 entry on the 2.18 to 2.21 page says so in the words it had. Only the game page's sentence overstated the rule, so this version corrects the sentence rather than the behaviour: no script changed, and the cell changes exactly as version 2.21 left it.
The sentence now reads that the figure follows the board you have picked: pick another board and the figure becomes that board's best, or the em dash again, and a run on the board you have picked that ends with points on it updates it. That is what the small script does, event for event, and the sentence claims nothing more. The figure is still a copy of one number the page already shows, still reads the read-out's own em dash while the picked board has no best, and still cannot disagree with the "Best on each board" cell it is copied from.
No script, no stylesheet and no other page changed. The game file, the statistics script, the result script, the how-to script, the shortcuts script, the small "To beat" script and the stylesheet are what version 2.21 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.
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 small "To beat" script 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. What still rests on how a browser behaves is named in the standing limits below, and it is what version 2.21 named: whether a change to the pressed board button and to the bests cell is reported to the small script, which is the mechanism the corrected sentence now describes.
Files: the game page only (one sentence in "What the read-out shows"), and this page.
This entry moved to this page, in the words it had, in version 2.30, when the main changelog page came to start at version 2.26; nothing in it changed with the move except this sentence. Its closing reference to "the standing limits below" now points at the limits section on the main page.