Changelog: versions 2.37 to 2.40
Newest first. These are the entries for versions 2.40, 2.39, 2.38 and 2.37 of Snakeyard, in the words they had while they stood on the main changelog page. Version 2.44 moved them here, word for word, so the main changelog page now covers version 2.41 onwards and this page covers 2.37 to 2.40. Three things are worth knowing before reading them, and all three come from the move rather than from any change to a version. First, where an entry says "this page", it means the changelog page it was written on, which was the main changelog page, not this one. Second, the 2.38 and 2.40 entries point at the standing limits section "at the foot of this page"; that section still exists, at the foot of the main changelog page. Third, the 2.37 entry speaks of "the 2.36 entry below", and that entry is now on the 2.31 to 2.36 page. Nothing else in the moved text was touched: no claim about any version was cut, softened or added, and each entry's own "Files:" line still names the files that version changed.
Version 2.40
Copy fix on the game page, in the bullet that describes the three switches, and it is one sentence that promised more than the game does. It read: "The grey blocks are the exception — the set of blocks is only built when a fresh board is set up, so ticking or unticking that switch mid-run leaves the current board alone and takes effect on the next one." That is true of the block set, which is what the sentence's own first half is about: the blocks already standing are neither moved nor taken away mid-run, and the switch decides what the next board is built with. It is not true of the growth that belongs to a board built with blocks. A run may grow up to six more blocks as the level rises, and the game reads the live switch at each of those moments as well as the board's own record, so unticking the switch part-way through a run stops any further block dropping in for the rest of that run, while the blocks already on the board stay solid and keep counting. A reader who unticked the switch mid-run and then levelled up met an absence the page had not named.
The bullet now says both directions and both objects: the blocks already standing stay exactly where they are and the switch takes effect on the next board; unticking it at once stops any further block dropping in for the rest of a run on a board that was set up with blocks, because the growth reads the live switch as well as the board's own set; and ticking it on mid-run is the other way round, building nothing and adding nothing to the board in play, which is what the status line says there. The blocks bullet further up the same heading gained a short clause saying the growth it describes stops for the rest of the run when the switch is unticked, pointing at the bullet that carries it in full, so the two places a reader meets the growth rule agree. Nothing else 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.39 deployed — which is what version 2.34 deployed — and the four boards and their paces, where the blocks sit, the six-block ceiling, the level-3 rule, the food placement, the start wait, the steering, the key guards, the pause and its messages, the endings and their panels, the read-out and its cells, the "To beat" cell, the copyable result line and the per-board bests are unchanged.
The same pass read the game file from end to end, the first time since version 2.34, and found nothing else to fix. It checked the figures the game page and this record claim against the code: the four board paces; the eight, twelve, sixteen and twenty block sets and the two mirrored rows they stand in; ten points a piece and one level every five pieces; the 6% shaved per piece eaten taken straight from the count rather than compounded, so a run that has eaten eight pieces loses 48% of its pace, which is the "nearly half" the page names; the floor at 35% of the starting pace; the six-block ceiling; the three squares straight ahead of the head that food and new blocks are kept out of; and the run clock that counts the start wait as part of the run. All of them matched. The growth gate's second reading of the live switch was the one thing that pass found worth naming, and this entry names it.
One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game file and the game 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 an unticked switch stops the growth rests on reading the growth condition and the function it calls in the game file, not on a recording of a level being reached with the switch off. One clause was added to the standing limits section below, naming that growth and the sentence that now describes it.
Files: the game page only (the bullet on the three switches, plus one clause of the blocks bullet above it; 20,239 to 20,795 bytes).
Version 2.39
Copy fix on the game page, in the one sentence a screen-reader user hears about the board before anything else: the board canvas's own label. That label said "On a touch screen a swipe steers and a tap pauses." Since version 2.34 that is true of only one of the three boards a player can be looking at. On a board whose run is going or paused a tap does pause it or carry it on, and on a board whose run has finished a tap starts a new game — but on a board whose run has not started the tap pauses nothing, because there is nothing to pause: it answers in words, writing "Nothing to pause yet. Press New game first." under the board, the same line the space bar and the Pause button write on that screen. The label counted all three in with the first. Version 2.38 put that same fault right in the two places on the page a sighted reader meets it — the "Keys and controls" list and "Starting, pausing and ending a run" — and named this label nowhere, so the label was the last place still promising a pause on a screen where there is none.
The label had a second fault of the same kind. It said "Enter or the N key starts a new game", while the page's own keys list says of Enter: "start a new game, or pause a run that is under way", and its "Keys and focus" bullet says the same in its own words. So the one description a screen-reader user gets of the keys named half of what Enter does, and gave the N key, which starts a new game and nothing else, no clause of its own.
The label now reads: "Snake game board. Arrow keys or W A S D steer; the space bar or the P key pauses and carries on; Enter starts a new game or pauses a run that is going; the N key starts a new game. On a touch screen a swipe steers, and a tap pauses a run that is going or carries on a paused one, starts a new game once a run has finished, and on a board whose run has not started writes under the board that there is nothing to pause. The numbers are on the line under the board, and the Keys and controls list has the details." Its touch sentence names the three boards one after another in the same order the two visible lists now use, so the label and the lists say the same thing in three places rather than two; the pause line itself is not quoted in the label, because the reader will hear it from the status line when the tap is made, and a label that reads a line aloud twice is worse than one that points at it. The label is longer by about 250 bytes for that, which is the cost of naming three boards instead of one.
Nothing else changed. No file a player's browser runs was touched: 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.38 deployed, which is what version 2.34 deployed. The four boards and their paces, the block sets and their growth, the start wait, the steering, the key guards, the pause and its messages, the endings and their panels, the marked end square, the read-out and its cells, the "To beat" cell, the copyable result line and the per-board bests are unchanged, and every promise the page makes about them stands as it did. One clause was added to the standing limits section below, naming the words of this label among the things rested on how browsers are specified rather than on a recording.
One limit is left standing rather than hidden: as with every version of this game, the change was checked by reading the game page's two keys lists and its "Starting, pausing and ending a run" section against the label, 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, and a screen reader's reading of the label is exactly the kind of thing no version of this game has been able to hear.
Files: the game page only (the board canvas's screen-reader label; 19,991 to 20,239 bytes).
Version 2.38
Copy fix on the game page, in three sentences that promised a tap would pause on a screen where there is nothing to pause. Two of them said the same thing, one in the "Keys and controls" list and one under "Starting, pausing and ending a run": a tap pauses a run, a click on the board hands the keyboard back, and both counted the not-yet-started board in with the boards that are running or paused. On a board whose run has not started the tap does not pause anything — since version 2.34 it answers in words, writing "Nothing to pause yet. Press New game first.", which is the line the space bar and the Pause button already write on that same screen. Both sentences now separate the started board from the unstarted one: on a run that is going or paused, a tap still pauses it or carries it on and a click still only hands the keyboard back; on a board whose run has not started, a click still only hands the keyboard back and a tap answers with that line. Each names the line, the version it came from and the other two controls that write it, so the sentence and the tap cannot drift apart while the game file stands as version 2.34 wrote it.
The third sentence is the bullet in "Keys and focus" that says an input which cannot act answers in words rather than in silence. It named the four inputs that do — the space bar or P with nothing to pause, N or a board key on a protected run, a steering input while paused, a steering input before a run — and one deliberate silence, a steering key after a run has ended. The tap on an unstarted board was missing from that list even though version 2.34 had put it there; it now holds a clause of its own, naming the same pause line without repeating its words, since the two sentences above carry them.
Nothing else changed. The tap on a finished board still starts a new game through the shortcuts script's own reader, the tap threshold and the swipe are untouched, a click on a running, paused or unstarted board still only hands the keyboard back, and the one deliberate silence is still named as such. 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.37 deployed, which is what version 2.34 deployed: 2.35 to 2.37 changed prose on this page and on the game page only. The four boards and their paces, the block sets and their growth, the start wait, the steering and the key guards, the pause and its messages, the endings and their panels, the read-out and its cells, the "To beat" cell, the copyable result line and the per-board bests are 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 and this record 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 tap writes those words rests on the 2.34 entry below and on the standing limits section at the foot of this page, which has listed the tap on an unstarted board among the things rested on how browsers are specified rather than on a recording since version 2.34; this version adds no clause to that section, because the question it already asks is the one this copy now answers.
Files: the game page only (the board's click-and-tap sentence in the "Keys and controls" list, the same sentence under "Starting, pausing and ending a run", and one clause of the "answers in words" bullet in "Keys and focus"; 19,323 to 19,991 bytes).
Version 2.37
Housekeeping on this page and one word put right, in the same writing. The entries for versions 2.26 to 2.30 have moved to a page of their own in the words they had, so this page now starts at version 2.31. 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 back to 46,002 bytes. 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.26 entry saying when it moved — the same treatment earlier blocks 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, 2.07 to 2.12 in 2.20, 2.13 to 2.17 in 2.24, 2.18 to 2.21 in 2.27 and 2.22 to 2.25 in 2.30 — 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; the new page holding 2.26 to 2.30 is 19,798 bytes and this page is shorter again, so every later entry costs less to write.
Because the moved entries are the words that stood here, they keep the places where an entry says "this page" of the changelog it was written on — the 2.27 and 2.30 entries say it of the page they were written on, which was this one — and the lead of the new page tells a reader so. One clause of the standing limits section named the moved block directly and was brought into line in the same writing: it spoke of the word version 2.35 rewrote as standing in "the 2.26 entry on this page", and it now says "the 2.26 entry on the 2.26 to 2.30 page". A clause was added beside it naming which page now holds those entries and which of their sentences speak of "this page". The range clauses in this page's lead and in the tail below were brought into line too.
The one word put right is in the 2.36 entry below. That entry, describing the game file's obstacle builder, named the number the builder hands to the next board with a word the platform's scanner warns about — a word it reads as market talk whatever the sentence means — so the clause now says "the count it gives back is the count that board would be given". No claim changed: the builder is still called twice more, it still has no effect on the board in play, and the number is the one the next board gets. "Count" is also the word that entry already uses for the same two figures in its status lines, so the sentence names one thing in one word rather than two. The warning was the platform's, not a reader's; nothing about the game changed, and no reader of this page was misled by the old wording. It is recorded here because an entry that is edited is worth less if the edit is not written down, which is the same reason version 2.36 itself gives.
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, the small "To beat" script and the stylesheet are what version 2.36 deployed — which is what version 2.35 deployed, since 2.36 changed prose on this page only.
One limit is left standing rather than hidden: the check was reading, two byte counts and the platform's scanner, not a browser. Nothing in this version is drawn, timed or played. That the moved entries are word for word the ones that stood here rests on the two files being written together in this session, not on a browser comparing them, and that the reworded clause keeps its claim rests on reading it against the note above the obstacle builder in the game file, which was read in version 2.36 and not again here.
Files: this page (its lead, this entry, one clause of the 2.36 entry, the moved block gone, one clause of the standing limits section and the tail's range clauses) and the new page holding the entries for versions 2.26 to 2.30 (19,798 bytes).
The four entries above are the ones for versions 2.37 to 2.40. They were written on the main changelog page and moved here, word for word, by version 2.44, which is the only change to them: nothing was added to or taken out of any of their paragraphs. Two of them point at the standing limits section, which is still kept, at the foot of the main changelog page. Older entries are on the 2.31 to 2.36 page and, from there, on the pages the main changelog's lead lists.