Set the time and the delay per player
A handicap match had no way to happen: one time control, one delay, both
players. The settings sheet now carries a switch between Match and Time —
"Different time per player" — and turning it on gives Time and Delay a second
row each, labelled You for the bottom half and Them for the far end, the same
way round as the score sheet. Them starts as a copy of You. Turning it off puts
both players back on You's value, so the row that survives is the one still on
screen; turning it on again re-copies rather than remembering what Them used to
say. The presets go while it is on, because a preset is one pair of numbers and
there are two players to give it to.
Underneath, cfg.base and cfg.delay are arrays indexed like st.reserve and the
panels, and they are arrays whether or not the switch is on. Split is a fact
about the sheet, not about the clock: render() and tap() read their own side's
number and never ask which mode they are in, and shared is simply the state
where the two entries are equal, kept that way by one line in the setter. The
line that mattered most was matchPristine(), which compares both sides now —
left alone it would have made the gear unreachable the moment the two bases
differed, silently and with no way back but clearing storage.
bg.base and bg.delay still mean what they always did, which is side 1, so an
install from before this lands symmetric and an older build reading the same
storage still finds its own settings. bg.split, bg.base.them and bg.delay.them
are the new keys, and all four are clamped on the way in — points was the only
setting ever validated at load, which was survivable while nothing but our own
steppers could write these.
The sheet loses two rows that earned nothing. Sound duplicated the speaker
button that is in the bar at all times, including mid-match when the sheet
cannot be opened at all; the hint under Done repeated what the sheet's own
behaviour teaches. The score sheet's hint now names the match it would restart
within, and the Time copy ends in a colon and puts its two sums on their own
line, where they fit without breaking mid-sum.
Two bugs worth recording, both invisible in the diff and both caught by
rendering rather than by asserting. The Them rows are .side elements and
.side{display:flex} beat the hidden attribute, so both stepper rows showed in
shared mode — the probe asked for the hidden property, which was set correctly,
and passed. And data-them was already the panels' opponent-score span, so
hiding the sheet's Them rows blanked the score on both halves and collapsed the
head grid; it is data-them-row now.
Screenshots 2 and 3 are redone. The other three are unchanged.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -96,7 +96,8 @@ normally restarted — use pause and reset for those.
|
||||
|
||||
Set **Match** in the settings to the number of points you're playing to — 1, 3,
|
||||
5 and up to 29. The time you set is *per point*, so a 5-point match at 2:00 a
|
||||
point puts 10:00 on each clock, and the settings sheet shows you that sum.
|
||||
point puts 10:00 on each clock, and the settings sheet shows you that sum — one
|
||||
sum, or one for each player if you've set their times apart.
|
||||
|
||||
Each half reads the state from that player's own side of the board:
|
||||
|
||||
@@ -136,17 +137,33 @@ score down to fit.
|
||||
## Settings
|
||||
|
||||
Under **Delay** are three presets — **2m / 12s**, **3m / 12s** and **3m / 15s**.
|
||||
Tapping one jumps both timers there and lights it up. Change the time or delay by
|
||||
hand and the highlight goes out; land back on a preset's numbers and it comes
|
||||
back on.
|
||||
Tapping one puts both the time and the delay there and lights it up. Change
|
||||
either by hand and the highlight goes out; land back on a preset's numbers and it
|
||||
comes back on.
|
||||
|
||||
**Different time per player** — the switch under the Time steppers — gives each
|
||||
player their own time *and* their own delay. Turn it on and a second row appears
|
||||
under both, labelled **You** for the bottom half of the phone and **Them** for
|
||||
the far end, the same way round as the score sheet. Them starts as a copy of You;
|
||||
change either from there. Turn it back off and both players go back to whatever
|
||||
You says, so You is always the row that survives — set the shared time first and
|
||||
split it afterwards, not the other way round.
|
||||
|
||||
The presets are gone while that switch is on. A preset is one pair of numbers and
|
||||
there are two players to give it to, so there is nothing sensible for it to mean.
|
||||
A handicap match is the point of the switch: give the stronger player less time,
|
||||
or take one player's delay down to zero and leave the other's alone.
|
||||
|
||||
| Setting | Range | Default |
|
||||
| --- | --- | --- |
|
||||
| Match | 1 – 29 points, odd | 1 |
|
||||
| Time | 0:15 – 99:00 per point | 3:00 |
|
||||
| Delay | 0 – 60 s | 12 s |
|
||||
| Time | 0:15 – 99:00 per point, per player | 3:00 |
|
||||
| Delay | 0 – 60 s, per player | 12 s |
|
||||
| Different time per player | on / off | off |
|
||||
| Colour | Sage, Brass, Slate, Teal, Plum | Sage |
|
||||
| Sound | on / off | on |
|
||||
|
||||
Sound isn't in the sheet — it's the speaker button in the bar, reachable at any
|
||||
time, mid-match included.
|
||||
|
||||
Brass is the colour in the chess.com app, if you want the exact original look.
|
||||
Changing match, time or delay resets the clocks — the score is left alone, so you
|
||||
@@ -157,7 +174,7 @@ survive closing the tab, force-quitting the installed app and rebooting the
|
||||
phone — the app also asks for persistent storage so they aren't evicted when the
|
||||
device runs low on space (Chrome honours that request; Safari ignores it).
|
||||
Reopening restores the score, both clocks, the move counts, whose turn it is and
|
||||
how much delay was left. The one thing it can't restore is time passing while
|
||||
how much delay was left — each player's own delay, if you've set them apart. The one thing it can't restore is time passing while
|
||||
the app was closed, so it comes back paused rather than charging anyone for the
|
||||
gap: a crash shouldn't decide a game.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user