Changelog
bun run deploy bumps the patch and opens an entry from the commit subjects
since the last tag. That draft is a starting point, not the entry — edit it
into prose before it ships, or the log becomes a list of commit titles that
cannot tell a reader what the game currently is.
0.3.53 — 2026-07-23
- A Surrender button on the phone (bottom-right) concedes the game for the
whole table — it ends from any seat at any moment, after a confirm.
- The dig now ends once the tide wears hands down to 4 cards, rather than
playing on until a hand can't be dealt — a shorter, tighter game.
0.3.52 — 2026-07-23
- Character powers now recharge every tide — they were once per beach, now
once per round, so a spent ability comes back "ready" at each round end.
0.3.51 — 2026-07-23
- A gold ★ now marks the seat currently taking the trick — on the TV and the
phone — so it is obvious who is winning as cards go down. It follows the play,
updating card by card, and reads Backwash (lowest-takes-it) correctly.
0.3.50 — 2026-07-23
- The player who led the trick now has a teal-tinted background — on the TV
panel and the phone seat row — so you can see at a glance who set the suit
everyone has to follow. Separate from the gold "your turn" highlight.
0.3.49 — 2026-07-23
- New round bonus beside the round on the TV — a per-game reward that ticks
down every time the tide comes in, so draining the beach in fewer rounds keeps
more of it. The tide screen shows it dropping. (Its payout on a win is a next
step; for now it is the visible clock the tide eats into.)
- The cutlery suit replaces ammo — a new name and a fork-and-knife icon
everywhere a suit is shown.
0.3.47 — 2026-07-23
- The TV chirps like a metal detector on every find — a quick rising warble —
and a double rings an octave higher with a sparkle on top. Silence it with
localStorage metal_sfx = 'off'; a muted or click-less kiosk simply stays quiet.
- A "tide comes in" screen now appears when a hand runs out, on the TV and every
phone: it names both clocks at once — the cards lost off the player deck and
the cards washed back onto the beach.
0.3.46 — 2026-07-23
- When two players could catch the same trick, a catch that digs up TWO now wins
the trick outright — the extra card off the beach is worth more than handing
the harder single catch to a teammate. At equal drain the harder catch still
wins, as before.
0.3.45 — 2026-07-23
- Contested catches now go to whoever will struggle most to cash them: if two
players could dig up their own goal from the same trick, the one whose
matching card is lower — the harder catch to win with — gets it, and the other
stands aside. A bot still grabs its own catch when it is the harder one, and
still never steals a trick it cannot score from.
0.3.44 — 2026-07-22
- Bots now read the known-void badge: a winning card is only committed when the
table has seen that no one behind can retake it, so they stop wasting high
cards on leads and catches that already hold.
- Bots cooperate on catches: if a teammate is about to dig up their own goal by
winning the current trick, the others no longer overtake them — even to score
themselves. It is the same team point either way, so they let the catch land.
- Phone: a Leave table button on the lobby, so you can drop out of a table
from your phone. Your seat is handed to a bot, the same as closing the tab.
0.3.43 — 2026-07-22
- Show suits a seat is known void in, on both screens
- Phone: drop the "Your play!" label from the top bar
- Lobby: a goal is face up until dug, then replaced — not "all game"
- Revert the dig examples to portrait cards — they are player-deck cards, not goals
- Changelog: write the 0.3.42 entry as prose
0.3.42 — 2026-07-22
- The goal in the lobby's worked example is the dark landscape tile it is
in-game, not a portrait card. The three cards beside it stay portrait — they
are cards from the player deck, which is the distinction the strip teaches.
Its caption now says a goal is face up *until it is dug up, then replaced* —
"all game" read as though you hunt the same card start to finish.
- Both screens now show which suits a player has been seen to be void in —
a red row of suit icons under their character. It only ever comes from a
failure to follow suit, in front of everyone, and it resets when hands are
redealt. A card handed over by Trader or Gravedigger clears the receiving
seat's row entirely, so the badge can never become a way to read a hand.
- Phone: the top bar no longer says "Your play!" on your own turn. Your seat
rings gold, your legal cards undim and the Power button lights up already —
the bar is for what you cannot otherwise see.
- "Find" is gone from everywhere a player can read it. The last holdouts were
the ability blurbs, the trump and beach panels, the end screen and the splash
page's how-to; the word is goal throughout.
0.3.41 — 2026-07-21
- Lobby: render the Setup trump as the landscape tile, not a portrait card
0.3.40 — 2026-07-21
- TV: bring the table in line with the phone's dark-tile look
0.3.39 — 2026-07-21
- Lobby: add a Setup section; update how-to beach decks to the new tile
0.3.38 — 2026-07-21
- Phone: render trump in the header as its landscape card + TRUMP label
0.3.37 — 2026-07-21
- Phone: drop the corner suit icon, enlarge the card rank
0.3.36 — 2026-07-21
- Phone: beach deck as a landscape dark tile to match the hunt tiles
0.3.35 — 2026-07-21
- Phone: hunt card as a Euro half-size landscape tile
0.3.34 — 2026-07-21
- Phone: Power to top bar, drop zone titles, mark the hunt card
0.3.33 — 2026-07-21
- Phone: declutter the play screen for low-vision layout
0.3.32 — 2026-07-21
- Phone: per-device big-card accessibility mode
0.3.31 — 2026-07-20
- No changes recorded.
0.3.30 — 2026-07-20
- No changes recorded.
0.3.29 — 2026-07-20
- Hand 11, and China escalates by rule: Backwash
0.3.28 — 2026-07-20
- Step 5: explain the round loop, not just its consequence
0.3.27 — 2026-07-20
- Step 6: name the beach deck
0.3.26 — 2026-07-20
- Step 4: state the endgame mop-up
0.3.25 — 2026-07-20
- Say where the double's second card comes from
0.3.24 — 2026-07-20
- Example: "scores 1/2" rather than "digs 1/2"
0.3.23 — 2026-07-20
- Say plainly that it is a must-follow trick-taker with freely-led trump
0.3.22 — 2026-07-20
- Say what "the whole beach" actually means
0.3.21 — 2026-07-20
- Lobby: QR under Start, so How to play gets the width
0.3.20 — 2026-07-20
- Lobby: widen How to play
0.3.19 — 2026-07-20
- Lobby: stack the beach picker and twist toggle
0.3.18 — 2026-07-20
- Scale beach sizes with the table, and add a beach-twist toggle
0.3.17 — 2026-07-20
- Inflation per player, and the lobby states it live
0.3.16 — 2026-07-20
- Make the inflation shape a real tunable, and record why it is flat
0.3.15 — 2026-07-20
- Lobby rules: show the beach discard as trump, number the trick rule
0.3.14 — 2026-07-20
- Lobby rules: add the tide — every round buries more
0.3.13 — 2026-07-20
- Lobby: widen How to play, and show the example before step 2
0.3.12 — 2026-07-20
- Fix steps 2 and 3 wrapping as columns instead of prose
0.3.11 — 2026-07-20
- Lobby: move the trick rule inside How to play
0.3.10 — 2026-07-20
- Lobby: put the join URL under the QR code
0.3.9 — 2026-07-20
- Lobby rules: say how you LOSE
0.3.8 — 2026-07-20
- Show the beach deck under step 1, with the real count
0.3.7 — 2026-07-20
- TV lobby: joining on the left, rules on their own column
0.3.6 — 2026-07-20
- Lobby how-to: show the rule with real cards, drop the trap warning
0.3.5 — 2026-07-20
- Lobby: a four-step how-to-play
0.3.4 — 2026-07-20
- The flipped card is the beach discard's top — that is WHY it is trump
0.3.3 — 2026-07-20
- Digging a teammate's find is help, not a steal
0.3.2 — 2026-07-20
- Split the trump SUIT from the flipped CARD — they legitimately differ
0.3.1 — 2026-07-20
- TV: show the rank on the trump card
0.3.0 — 2026-07-20
Consolidates 0.2.1–0.2.7, which were commit-subject drafts. The rules moved
enough over those releases that reading them in order is misleading — several
describe rules that a later entry replaced. This is the game as it now stands.
How it plays
- Win by draining the beach. The beach deck is what is still buried; empty
it and dig every face-up find and you all win. Run the player deck dry first
and the beach wins. (This is the spec's own win condition, restored — it had
been rejected as unwinnable, correctly, before partial matches raised the
ceiling enough to reach it.)
- Finds match on suit or rank. A card sharing your find's suit *or* rank
digs it up. A trick holding both on two different cards — or one card
that is both — digs up two: your find plus the top of the beach deck.
- Trump: ruff only when void, but lead trump freely. You cannot play trump
while you can still follow suit. This is what keeps the game's central trap
sharp — a card matching your own find cannot simply be ruffed out. There is
no "trump broken" state.
- Endgame mop-up. Once the beach is empty nothing refills, so an exact
match lets the trick winner dig any face-up find — including a teammate's,
which helps them finish rather than costing them anything. Without it, a find
nobody can reach strands the table until starvation.
- Five beaches, sized by what is buried, and the size scales with the
table: Crystal 28, Shell 31, Sandy 34, Palm 37 at two players, each shrinking
by 8 per extra player. China is Palm's size — the last rung is a rule, not a
bigger pile. Crystal has no twist — it is where
you learn. The rest each bend a different subsystem: Scarce Suit (no find
ever appears in one suit), Shifting Sands (trump re-flips each round),
Undertow (no find for a trick after an exact), Low Tide (round one is a card
short). The lobby can turn the twist off.
- The tide buries one card per player each round. §2's N×2 is
arithmetically impossible above 2 players: total tricks are fixed at 91 for
every count, so drain is flat while N×2 climbs. One-per-player works because
the beach sizes scale with the table to match it.
Measured, greedy bots, 300 games per cell — the ladder now holds its shape
across player counts, which is what S1 set out to buy:
| | Crystal | Shell | Sandy | Palm | China |
|---|---|---|---|---|---|
| 2 players | 91% | 73% | 66% | 32% | 17% |
| 3 players | 87% | 77% | 60% | 42% | 19% |
| 4 players | 87% | 70% | 58% | 37% | 22% |
| 5 players | 97% | 85% | 69% | 48% | 29% |
Fixes
- The beach seed was silently truncated to one mirror of the player deck, so
every 2-player beach above 28 cards became 28 and the ladder flatlined.
- Shifting Sands drained a card per round for free, making Sandy measure
*easier* than Shell.
- A round could never end once an ability moved a card between hands.
- A double find landing on the last card of the beach scored 2 while only 1
card left the beach.
- Emotes were sent, broadcast, and rendered by nobody.
- Join URLs broke on a trailing slash or pasted whitespace (fixed in cardshark,
so every game on it benefits).
deploy.shreported success while the site was crash-looping; it now
smoke-tests what it shipped, and refuses to restart out from under a live
game.
Interface
- Renamed to Detectorists — the spec's "Detectorites" was a typo.
- Suit and character icons from game-icons.net, replacing platform-dependent
emoji. CC BY 3.0, credited on the splash and the table.
- Phone: every seat in one row — find, name, played card — sized to the player
count; seat details behind a ?; hand sortable by rank or suit.
- TV: one column per seat, never wrapping; large trump card, deck and round
stats; themed deck backs; finds animate into a scored pile.
- Version shown once per screen beside the name, linked to this changelog.
- A full pass over user-facing copy, which had drifted behind the rules three
separate times.
Tooling
bun run ctl— list rooms, host a table, watch read-only, or take a seat and
play a full game over the API.
bun run simreports margin as cards left on the beach;--match,
--wrinkles off and --policy A/B the tunables.
0.2.0 — 2026-07-20
First pass at the above. Superseded by 0.3.0 — the ladder, the trump rules and
the endgame all moved after it.
0.1.0 — 2026-07-19
First build: the engine as a pure reducer, two bot policies, the §13 balance
harness (bun run sim), the GameDef seam, phone and TV play screens, and the
first deploy to metal.deluxified.com.
← back to the table