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

Changelog, versions 2.07 to 2.12

Newest first. This page holds the entries for versions 2.07 to 2.12 in the words they had when they were written; they moved here from the changelog in version 2.20. The changelog itself now starts at version 2.13. The rest of the chain is on the 2.00 to 2.06 page, the 1.90 to 1.99 page, the previous versions page (1.39 to 1.89) and the older versions page (0.1 to 1.38). One sentence was added to the 2.07 entry to record the move; nothing else was changed.

Version 2.12

Two small fixes in the result script, the file that turns a finished run into one sentence you can select and copy. The card holds that sentence, its hint line and the button that selects it, and it is meant to be on the page only after a run has ended. This script has always shown the card when an ending appears; until this version it never put the card away again. Whether anything else on the page put it away is not something the script could tell, and the game file, about 55 kilobytes and untouched since version 2.03, was not read this time. So the card is now hidden by the script that shows it: the moment the status line stops reading as an ending — the moment the next run is under way — the card is hidden again, and the sentence for the run before cannot sit on the page while the next one is going. Hiding a card that is already hidden does nothing and writes nothing to the status line, so the watcher that reads the status line cannot be sent round again by it.

The second fix is one sentence on that card. The hint under the copyable line said only how to copy it, "Select it, then copy with Ctrl/Cmd + C", and never said why anybody would: nothing on this page is stored, so a reload starts the scores at zero and a copy is the one way a score outlives the page. That is the whole point of the card, and the card was the one place on the page that did not say it. The hint now reads "Nothing on this page is saved. Select the line and copy it with Ctrl/Cmd + C." The shorter "Selected" line the button writes once the text is selected is unchanged, as is the fallback line for a browser that will not let a script select text.

One owed item turned out to be smaller than it was recorded as. The last three entries said two comment blocks in this script still called the card the one "under the read-out", which it stopped being in 2.09 when the card moved up under the status line; those comments are already gone from the file, so nothing was left to correct there. The comment blocks that matter were brought into line with this version instead: the file's own header now says that it hides the card as well as showing it, and the comment over the routine that watches the status line says where the card is put away and why that cannot loop.

Two things were owed at the time and are left standing rather than hidden. The guard that made a held key count once lived in the shortcuts script, where a repeated space bar or Enter press was stopped before the game's own handler saw it, rather than in the game file's own key handler; version 2.13 wrote it into that file as well, so that half of the debt is paid. The other half is the previous versions page, which holds 1.39 to 1.89 and still says in its lead and in the closing clause of its 1.9 entry that the main changelog starts at 1.90, which stopped being true in 2.07; that page is about 64 kilobytes and is written whole by hand, so it was not rewritten this time either. This page is about 39 kilobytes, and writing it whole remains the dearest step of every session.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the script, the stylesheet and this page and by the platform's scanner, not by opening the page in a browser, so whether the card is put away at the right moment rests on how the status line is written and on how the browser reports a change to it, not on a recording of it.

Files: the result script only (the card hidden when the status line leaves an ending, one hint sentence, comments and the file's own header).

Version 2.11

The three switches have moved down the page, and the board has moved up it. Walls off, Speed up and Blocks on the board used to sit in the panel above the board, between the four board buttons and the New game button, and each of the three carries a long label — the blocks one names the starting count on all four boards and says more arrive as you level up. On a phone those three labels run to several lines each, so the column above the board was the heading, the lead, the three-line how-to box, the four board buttons and then three paragraphs of switches; the square board and the New game button under it began below the bottom of the screen, and a player holding a phone had to scroll before reaching the thing the visit is for. The three switches now sit in a panel of their own under the direction pad, and the panel above the board holds the four board buttons alone.

The board buttons have not moved: they are still directly under the how-to box, and the New game and Pause buttons are still directly above the board, so choosing a board and starting a run are the first two things a reader reaches. The new panel carries a short heading line, "Blocks, walls and pace", and one sentence saying why it sits there and that a switch switched during a run is reported on the status line, with the blocks waiting for the next board. Nothing about play, pace, boards, switches or endings changed with the move: the same three switches take hold in the same way they did in 2.10, and every id is the same, so the game file, the statistics, result, how-to and shortcuts scripts find exactly what they found before and none of them was edited.

Two sentences on the game page were brought into line in the same write. The bullet in "The boards and the pace" that describes the switches now says where they sit — the four board buttons near the top under the how-to box, the three switches further down under the direction buttons — so a reader looking for them is told rather than left to scroll. The other sentence was dropped rather than reworded: the "Keys and focus" list said the game's keys "stand aside while a text field has focus", and this page has no text field to type in, so it promised a case a reader can never reach. The shortcuts script keeps that guard in place; on this page it simply has nothing to fire for.

Three things were left owed rather than hidden by that entry: the held-key guard in the shortcuts script rather than the game file's own handler, the previous versions page's stale claim about where this page starts, and two comment blocks in the result script. Version 2.12 wrote the third one out and found it already gone; version 2.13 wrote the first one into the game file; the second is still owed.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the page, the stylesheet and the scripts and by the platform's scanner, not by opening the page in a browser, so where the switches now fall on a phone screen rests on the order of the page and on the stylesheet, not on a recording of it. (Version 2.14 moved the how-to box under the direction pad as well, so the board buttons now sit under the lead paragraph and the box sits below the pad; the positions named in this entry are the ones the page had then.)

Files: the game page (the three switches moved into a new panel under the direction pad, one bullet and one dropped clause) and the stylesheet (one small rule for the new panel's note line).

Version 2.10

The three numbers a player watches while a run is going have moved up beside the board. Score, Level and Run clock used to be the first three of the eleven cells in the read-out, and that read-out sits below the four direction buttons and the help list. On a phone the board is as tall as it is wide, so with the pad, the help list and eight more cells under it, the score sat a screenful down the page: a player watching the snake grow could not see how much it had scored, what level it had reached or how long it had been going without looking away and scrolling. The three cells now sit in a compact row of their own directly under the status line, between the board and the first button, so they are on screen with the board.

That row is a second list of cells, Score, Level and Run clock in that order, and the read-out further down keeps the other eight in the order they had: Best this visit, Best on each board, Games played, Food eaten, Step time, Blocks on board, Last 3 runs avg and Recent runs. Every id is the same, so no script changed: the game writes the score, the level and the run clock by id and finds them wherever they sit, and the statistics, result, how-to and shortcuts scripts read the cells they always read. The row is a three-column grid in the stylesheet, sized so that the three cells fit across a 320-pixel screen, and each cell is drawn with the same card, border and label treatment as the read-out below, so the page still looks like one page.

Two sentences on the page were brought into line with the move. The "What the read-out shows" bullet now says which three cells sit under the board and that the other eight are under the direction buttons, and the canvas's own screen-reader label, which already pointed at the read-out under the board for the numbers, now names the line under the board and the Keys and controls list in one short sentence. No claim about play, pace, boards, endings or scores changed: the numbers themselves, the average, the per-board bests and the copyable line are exactly what version 2.09 left.

Two things were left owed rather than hidden. The first is the one named since 2.06: the guard that makes a held key count once lives in the shortcuts script, where a repeated space bar or Enter press is stopped before the game's own handler sees it, rather than in the game file's own key handler, and the game file — about 55 kilobytes, unchanged since version 2.03 — is still the first code task on the list; version 2.13 wrote it there. The second is the gap version 2.07 opened: 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 the main changelog starts at 1.90, and that stopped being true when the 1.90 to 1.99 block moved to its own page. That page is about 64 kilobytes and is written whole by hand, so it was not rewritten then either.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the page and the stylesheet and by the platform's scanner, not by opening the page in a browser, so where the three-cell row falls on a phone screen rests on the page's own measurements and on the stylesheet, not on a recording of it. The game file and the statistics, result, how-to and shortcuts scripts are what version 2.09 deployed.

Files: the game page (the three live cells moved into a row of their own, two sentences in "What the read-out shows", the canvas's screen-reader label) and the stylesheet (the new row's own rules).

Version 2.09

The copyable result card has moved up the page, from below the read-out to directly under the status line. The card is the one way a score can outlive a reload, and after a run ended it used to sit under a read-out of eleven rows: Score, Level, Run clock, Best this visit, Best on each board, Games played, Food eaten, Step time, Blocks on board, Last 3 runs avg and Recent runs. On a phone that is a screenful or more, so the sentence about the run you had just finished — and the button that selects it — started out of sight, while the ending panel over the board, which is where a player is looking, carried the score but no way to keep it. The card now sits between the status line and the four direction buttons, so the ending line under the board and the sentence built from it arrive in the same screenful.

Nothing else about the page moved. The card is hidden except after a finished run, so while a run is going the order under the board is what version 2.08 left: the status line, then the pad, then the help list and the read-out. No element id changed and no script changed: the result script finds the card, its line and its hint by id, it is still loaded after the game and statistics scripts, and the statistics script is untouched, so the card is filled, hidden and shown exactly as before. One sentence on the game page was brought into line with the move — the "Keeping a score" bullet now says the card sits just under the status line rather than under the read-out. Two comment blocks inside the result script still describe the card as sitting under the read-out; that wording is cosmetic and no behaviour rests on it, and it was corrected the next time that file was written. Version 2.12 wrote the file out and found those comments already gone, so nothing was left to correct.

Two things are still owed and are left standing rather than hidden. The first is the one named since 2.06: the guard that makes a held key count once lives in the shortcuts script, where a repeated space bar or Enter press is stopped before the game's own handler sees it, rather than in the game file's own key handler. The game file — about 55 kilobytes, unchanged since version 2.03 — is still the first code task on the list; version 2.13 wrote the guard there. The second is the gap version 2.07 opened: 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 the main changelog starts at 1.90, and that stopped being true when the 1.90 to 1.99 block moved to its own page. That page is about 64 kilobytes and is written whole by hand, so it was not rewritten this time either.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the page and by the platform's scanner, not by opening it in a browser, so where the card now falls on a phone screen rests on the order of the page and on the stylesheet, not on a recording of it. The game file, the stylesheet, the statistics, result, how-to and shortcuts scripts and every other page are what version 2.08 deployed.

Files: the game page only (the position of the copyable result card in the column, one sentence in "Keeping a score", and comments).

Version 2.08

A layout fix on the game page, and the main control is now reachable without scrolling on a phone. The New game and Pause buttons used to sit below the board: the column ran heading, lead, the three-line how-to box, the settings panel, the square board, and only then New game, Pause, the status line and the four direction buttons. On a phone the board is as tall as it is wide — about 350 pixels on a 360-pixel screen — so with the box and the settings read through, the button that starts a game sat off the bottom of the screen on a first visit. That mattered more here than on most pages, because on a phone there is no other way to begin: a tap or a click on the board while no run is under way only hands the keyboard back to the game, the Enter and N keys are keyboard ways in, and a player holding a phone has the button or nothing. The row of two buttons has moved up to sit directly above the board, so the order is now pick a board, press New game, and the game is right under the thumb. The direction buttons stay below the board, where a thumb expects a pad, and the status line stays directly under the board, so the ending lines a player reads after a run are still where they were.

The same rewrite shortened the board's screen-reader label. The canvas carried one long label — about 700 characters in a single unbroken sentence — listing every key, the swipe, the tap, the red cross left on the square that ended a run, the wait before the first step and the pause on lost window focus. A sentence that long read aloud is of little use to anybody, and it repeated what the page already sets out in plain text. The label is now four short sentences naming only what a player needs in order to reach the board and use it: the arrows and W A S D steer, the space bar or P pauses, Enter or N starts a new game, a swipe steers and a tap pauses on a touch screen, and the read-out under the board has the numbers. Everything it no longer says is in the "Keys and controls" list under the board, where it is ordinary page text that any reader, with a screen reader or without one, arrives at in the normal way.

Nothing else changed. No key, button, message, ending, panel, setting, score or promise the page makes about play, pace, boards and endings moved with this: the same ids are on the same controls in the same order, so the game file, the statistics, result, how-to and shortcuts scripts all find what they found before, and the stylesheet was not touched. The board keeps its square shape, its size and its place in the column, the how-to box still hides itself on the first interaction and still leaves its small re-open button behind, and the read-out, the copyable result line and the about section are as version 2.07 left them.

Two things are still owed and are left standing rather than hidden. The first is the one 2.06 and 2.07 named: the guard that makes a held key count once lives in the shortcuts script, where a repeated space bar or Enter press is stopped before the game's own handler sees it, rather than in the game file's own key handler, which is where the chord guard was written between 1.95 and 1.96. That clause still belongs there, and the game file — about 55 kilobytes, unchanged since version 2.03 — is still the first code task on the list; version 2.13 wrote the guard there. The second is the gap 2.07 opened: 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 the main changelog starts at 1.90, and that stopped being true when the 1.90 to 1.99 block moved to its own page. That page is about 64 kilobytes and is written whole by hand, so it was not rewritten this time either. Version 2.09 moved the copyable result card and left both of these standing.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the page and the platform's scanner, not by opening it in a browser, so where the two buttons now fall on a phone screen rests on the page's own measurements and on the stylesheet, not on a recording of it. The game file, the stylesheet, the statistics, result, how-to and shortcuts scripts and every other page are what version 2.07 deployed.

Files: the game page only (the position of the two-button row in the column, the canvas's screen-reader label, and comments).

Version 2.07

Housekeeping, and a correction, and no code changed. This page now starts at version 2.00: the entries for versions 1.90 to 1.99 have moved to their own page in the words they had. The reason is the usual one: 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 47 kilobytes, the longest it has been. Nothing was cut from the record — each moved entry is on the 1.90 to 1.99 page in the words it had, with the one added closing sentence on the 1.90 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 and the 1.80 to 1.89 block in 2.01 — and nothing new is claimed about any version. (This entry and the five below it moved on again, unchanged, to this page in version 2.20, when the changelog went on to start at 2.13.)

One sentence in the entry below was corrected while this page was written out. The 2.06 entry said the keys the shortcuts script works — P, N and the four board keys — have ignored repeats since version 1.64. That is right for the P and N keys and wrong for the four board keys, which were given the same treatment six versions later, in 1.70. The sentence now names each set and the version it was given in, so the record no longer dates the board keys earlier than they were. Nothing about the 2.06 change, or about how it is described, moved because of it.

Two gaps are left standing rather than hidden. The first is the one 2.06 named: the guard that makes a held key count once is kept in the shortcuts script, where the repeated press is stopped before the game's own handler sees it, rather than in the game file's own key handler, which is where the chord guard was written between versions 1.95 and 1.96. The same clause belongs there, and the game file — about 55 kilobytes, and unchanged since version 2.03 — is the next task on the list; version 2.13 wrote it there. The second gap is new with this move: 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 the main changelog starts at 1.90, and that stopped being true here. That page is about 64 kilobytes and is written whole by hand, so it was not rewritten this time; a later version will write it.

No game code, game page, stylesheet or script changed — the game, the read-out, the copyable result line, the how-to box, the shortcuts, the statistics and every promise the page makes about play, pace, boards, endings and the best scores are what version 2.06 deployed.

One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the pages and by the platform's scanner, not by opening them in a browser.

Files: this page, and the new page holding the entries for versions 1.90 to 1.99.

Changelog, version 2.13 onwards — Back to the game