The short version
Every release of Simply Cribbage, newest first, with what actually changed — not just marketing copy. Most releases are small fixes and polish; that's normal for an actively-maintained app.
2.4.1 Easy plays like a beginner, and Restart works any time
November 7, 2026
- Easy now plays like a real beginner: the Easy AI opponent keeps better hands and plays for points more often, but still makes plenty of mistakes
- Score messages during pegging stay on screen long enough to read, even when you play quickly after the computer
- You can now leave a game at any time with Restart, even in the middle of a hand
- The message for a count that is a little high now shows the number you entered
- General improvements and minor bug fixes
2.4.0 Launch release: the Gold card back and a steadier welcome tour
October 28, 2026
- This is the launch release of Simply Cribbage. Thank you for playing
- The gold card back is now named Gold in the Card Backs picker and in Advanced, where it used to read Default
- The welcome tour waits while Card Backs, Card Faces, Game Automation or another sheet is open, instead of starting on top of it
- General improvements and minor bug fixes
2.3.77 Steadier toasts, Restart and prompts, and a sharper Coach
October 27, 2026
- Peg toasts: a score message that appears just after the previous one began to fade is no longer cut off, so quick plays no longer make a toast flash past
- Restart now follows Prefs and Stats: it is off while a hand is in play, and the Abandon Game? box can no longer open on top of the Count Your Hand box. You can still start over while you choose your discards, between hands and when a game ends
- If you pause on your turn, the player chip flashes after 6 seconds and the It's your turn prompt follows a minute later, the first time and again every time you dismiss it
- Coaching on iPad: once the computer has played all four of its cards, the pegging advice says No reply possible instead of talking about what the computer could hold, and it picks your remaining cards for the most points (the Hint button does the same)
- General improvements and minor bug fixes
2.3.76 Stats now follows Prefs during a hand
October 26, 2026
- Stats now follows Prefs: both are off from the moment you discard until the hand has been counted, so neither can open in the middle of a hand
- General improvements and minor bug fixes
2.3.75 A simpler New Game screen, a pegging fix, and clearer Coaching
October 26, 2026
- The New Game screen is simpler for now: the opening definition stays, and the rotating fun facts, including the USS Wahoo story, are paused
- Prefs is now off while a hand is in play, and Stats while the game counts, so a settings sheet can no longer end up behind the Count Your Hand box
- Pegging: a very quick tap right after the computer plays can no longer put the turn out of step
- Coaching on iPad: the pegging advice says how likely the computer is to hold a scoring reply, the discard advice describes your two cards, and opening Detail before you count gets a coach note
- How to Play now says a crib flush needs all five cards (the iPad coach's crib flush hint agrees) and that Reduce Motion skips the confetti
- General improvements and minor bug fixes
2.3.74 A Mac scrolling fix, and fun facts that wait for you
October 24, 2026
- Fixed How to Play, Pro Tips and Game Review going blank below the first screen on the Mac
- The New Game screen no longer hurries you along once you tap a fun fact: it waits until you tap Done
- General improvements and minor bug fixes
2.3.73 A welcome tour for new players, and a new icon
October 24, 2026
- New installs start with the blue card back
- A new app icon: the perfect hand on the board, with a dark version
- A short welcome tour for new players, which you can show again from Advanced
- General improvements and minor bug fixes
2.3.72 Softer text edges, and steadier buttons on the Mac
October 23, 2026
- iPad on iPadOS 27: a thin sliver of text no longer peeks out under the CRIBBAGE title as text scrolls up
- About, Stats, Advanced, Card Back and New Game: text now fades out softly at the bottom edge of the box instead of being cut off
- Mac: buttons no longer lift a pixel when you point at them, which could make them flicker
- General improvements and minor bug fixes
2.3.71 A cleaner look, and sounds that follow the Silent switch
October 22, 2026
- Sounds now follow the Ring / Silent switch: with the switch on silent the game is silent too, and music you have playing carries on
- A cleaner look: the thin borders around panels, rows and boxes are gone, so the screens are black on black
- Text that scrolls up under the CRIBBAGE title now fades out softly instead of being cut off
- On the iPad held sideways, older lines in the Messages panel now fade with age, as they do in portrait, and the on-screen keyboard no longer switches the game into the wrong layout
- General improvements and minor bug fixes
2.3.70 A cleaner, steadier turn on the iPad
October 21, 2026
- Turning an iPad no longer flashes a fragment of the old screen as the new layout comes in
- Fixed a long black screen and a jittering button bar after several quick turns on iPads with iPadOS 26
- General improvements and minor bug fixes
2.3.69 Wide screens for About and the guides, and a calmer turn on the iPad
October 20, 2026
- About, How to Play and Game Review use the room on wide screens (a sideways iPad, a big iPad window, the Mac): they sit in two columns, so there is less to scroll. Narrower screens are unchanged
- What's New now shows the latest releases and tucks the older ones under Show older revisions
- Turning an iPad now fades smoothly into the new layout, and the board no longer stays a little too big under the buttons after a turn on iPadOS 26
- Fixed the DEALER · CRIB label running past its card on iPads with iPadOS 26
- General improvements and minor bug fixes
2.3.68 The Stats screen uses the room on wide screens
October 20, 2026
- Stats uses the room on wide screens (a sideways iPad, a big iPad window, the Mac): the sections sit in two columns and Easy, Hard and Pro side by side, so there is less to scroll. Narrower screens are unchanged
- General improvements and minor bug fixes
2.3.67 The iPad plays in every orientation, its counting boxes get roomier, and two fixes
October 19, 2026
- New on iPad: the game now plays in every orientation — upright, upside down, and sideways either way. Held sideways, it uses the wide table layout the Mac app uses, scaled to fit the screen, with a message pane on the right that holds the game’s messages and the coach’s advice in one list. The pane steps aside when it has nothing to show (on the Cut for Deal screen, or with Messages and Coaching both off) and the table moves back to the middle. The iPhone stays in portrait
- iPad: Count Your Hand, Count Your Crib and the Muggins challenge use the room the screen has, with bigger round number keys, a bigger Submit and Detail, and space at the sides
- Fixed: when you catch the computer overcounting with Muggins, the points now come off its score every time, even near 121, and Game Review and Stats keep the real count instead of the overcount
- Fixed: on the New Game screen, choosing a saved player’s name now puts that name on your score card straight away; it used to keep the previous player’s name until the app was restarted
- General improvements and minor bug fixes
2.3.66 General improvements
October 18, 2026
- General improvements and minor bug fixes
2.3.65 Skunks get the perfect-29 confetti, the New Game fun facts hold the screen’s timers, and Stats shows pegging and crib averages
October 18, 2026
- Winning a skunk now sets off a confetti celebration similar to that of a perfect 29: the whole show for a double skunk, a shorter one for a single. Rematch and New Game wait until it is nearly over
- On the New Game screen, touching or scrolling the fun facts holds the screen’s timers until you have stopped for 5 seconds, so you can read them
- Stats shows your average pegging and crib per hand once there is enough to average, in a new Hands block and under each opponent, and the computer’s pill shows its own beside yours
2.3.64 The Stats screen has a pill for your opponent, and skunks read Won and Lost
October 17, 2026
- The Stats screen has a second pill for your opponent: its record against you, its skunks, its perfect 29s, and its average hand beside yours
- Skunks now read Won and Lost, and Stats lists the skunks you won and lost on each difficulty
2.3.63 The “It’s your turn” screen shows the cards in play like the table does
October 17, 2026
- The “It’s your turn” screen now shows the cards in play as a fan, the way the table does, with each card marked as yours or the computer’s
2.3.62 Perfect 29s are marked in gold, and the 29 screens are tidied
October 17, 2026
- Stats show a gold line with how many perfect 29s you have counted, and Game Review marks every perfect 29 in gold, yours or the computer’s
- The “29 Points” headline on your 29 screens is now as big as any other count’s. The computer’s 29 is a quieter moment: no sound, a line in its own voice, and the odds of the hand
- The USS Wahoo story has moved from the 29 screens to the fun facts on New Game
- The light that sweeps across the CRIBBAGE title is slower and softer, so the title no longer flashes at either end
2.3.61 Recent Messages no longer cuts off the hand breakdowns
October 16, 2026
- The Recent Messages list no longer cuts off the hand breakdowns on iPhone and iPad: each one now wraps under its cards, so the whole count and its total can be read
2.3.60 A plainer New Game name box, and a light sweeps across the title
October 15, 2026
- The New Game name box is plainer: the four suit symbols and the pulsing border are gone, and a soft > blinks in the middle of the box when you tap it, until you start typing
- When New Game opens, a soft light sweeps once across the CRIBBAGE title, then the title is exactly as it was (it is skipped when Reduce Motion is on)
- General improvements and minor bug fixes
2.3.59 The USS Wahoo button links to the Navy’s own article
October 15, 2026
- The button under a perfect 29 now reads “Read about the USS Wahoo” (it said “Submarine lore…”) and copies a link to the Navy’s own article about the story, from the Navy News Service, instead of a museum PDF handout
2.3.58 A perfect 29 gets a celebration, and the launch no longer jiggles
October 15, 2026
- A perfect 29 hand is now a moment: confetti, applause, a gold “29 Points!” and a note on the USS Wahoo’s lucky 29, with a button that copies a link so you can read the story in your browser. It works for your hand and your crib
- In Self Score you earn the celebration by entering 29. If you had a 29 but miscounted it, you get a gentle note instead. When the computer holds a 29 it gives a nod in its own voice (no confetti)
- The 29 looks the same whether the app counts it or you do: the same size, colour and spacing on all four count screens
- Self Score miscount messages are gentler for every hand, with a softer colour and calmer wording (“Not quite — you said 24, it’s 29 Points”)
- The launch no longer jiggles: the logo stays put when the app opens (it used to jump on every iPhone and iPad), and on narrower phones the first screen no longer slides into place
2.3.57 Raised cards stay clear of the board, and small screens fit better
October 14, 2026
- A card you lift (by tapping it, by Hint, or by dragging it) no longer climbs over the cribbage board on shorter screens and in small iPad windows. The lift is capped to the room there is, and the hand sits a little lower, so there is a little more gap between it and the board
- Phones and small windows: the discard prompt (“Click 2 cards to discard to the crib…”) was cut off in the one-line message strip. It now picks the longest wording that fits and switches live if the window is resized. The cut for first deal reads on two lines (“Cut: Alex drew A, Noddy drew K”, then “Alex deals first (low card)”) instead of one truncated sentence
- iPad: the “Dealer · Crib” label was clipped on the score card in small, zoomed windows. It now scales to fit
- iPhone SE and other very small phones: the trophy (or the Joker card after a loss) on the game-over screen was cut off by the header. The screen now starts below the header and tightens its spacing only as much as it needs to. On the SE, where the board is hidden, the game-over screen also comes up about a second after you peg out instead of waiting for a board animation that is not there
- Double skunk: the loss jingle on the game-over screen played twice. It now plays once; the two sprays are unchanged
2.3.56 Self Score keypad rework, and small iPad windows fit better
October 13, 2026
- Self Score and Muggins challenge keypads: C and backspace now sit beside the digits (two rows: 1 to 5, then C 6 7 8 9 0 and backspace), a little wider than the digit keys. The bottom of the keypad was cut off on iPad and on the iPhone SE; the new layout frees a row, and the modal text now scales down just enough when a window is too short, so the keypad always fits
- iPad, Coaching Mode: the one-time Muggins tip used to appear inside the hand and crib reveal, and in a smaller window it pushed the continue arrow out of view. The tip now appears in the coach panel instead, and the hand reveal scales its text to fit a short window
- iPad: a dark-grey strip showed behind the coach panel when the window was made smaller. The area behind the game is now black, like the rest of the game
2.3.55 iPad: the Self Score keypad is complete on your first count
October 12, 2026
- iPad, Coaching Mode: the first time you counted your own hand, the Self Score keypad showed only its top row of digits, because Coaching’s one-time tip took up the room. The tip now appears in the coach panel instead, and the whole keypad is there from the first count
2.3.54 Small-screen polish, and the Game Review shows the difficulty
October 12, 2026
- iPhone SE and other small iPhones: the New Game screen now shows all of its welcome text, and the difficulty choices all fit (Pro was cut off). A faint fragment of an older message no longer shows above the newest one in the message strip, and after a skunk the result screen appears at once instead of waiting for a pegging-board animation that is not shown on those screens
- The “No typing detected” notice on the name screen now explains that a third-party keyboard that failed to load is the likely cause, and how to switch back to Apple’s keyboard. On small iPhones the welcome text steps aside so the notice fits
- The Game Review now shows the difficulty you played, under the final score
- iPad: Coaching Mode needs a window wider than about 500 points. In a narrower window the game plays without it (the Coaching switch on the New Game screen is hidden there), and Coaching returns as soon as the window is wider, with its advice intact. Your Coaching setting is never changed
- Fixed: a brief flash of the game screen when you tap Muggins! on your opponent’s hand or crib
2.3.53 iPad window resizing, and the six-card hand fits small screens
October 12, 2026
- iPad (iPadOS 27): resizing the app window now works properly. The played cards and the message log stay in place as the window changes size, the title steps aside for the system window buttons in narrow windows, small windows stay playable, and the window can no longer be made smaller than a playable size (375 × 660 points)
- Fixed: in iPad windows up to about 500 points wide the newest message could slide behind the buttons at the bottom. The game now makes room for it, hiding the older messages (and, in the shortest windows, the pegging board) a little sooner. Full-size iPad, larger windows, iPhone and Mac are unchanged
- Fixed: on the smallest iPhones (iPhone SE, 12 mini, 13 mini) and in the smallest iPad window, the last card of your six-card hand ran to the very edge of the screen. The hand now fans in a little tighter until you discard, then returns to its normal spacing. Larger screens are unchanged
2.3.52 iPad pegging board shown in full again
October 11, 2026
- Fixed: the pegging board on iPad was cut off at the bottom in 2.3.51 (a size limit meant for the smallest iPhones also applied to the larger iPad board). It is shown in full again. iPhones, including the smallest, are unchanged
2.3.51 The whole game fits on small iPhones; iOS 26 or later
October 11, 2026
- Fixed: on the smallest iPhones (iPhone SE) the game now fits the screen — your hand, both scores and the message line are no longer hidden behind the buttons. To make room, the pegging board is hidden on those phones (the scores and the progress bars under them stay) and the title area is more compact. Larger iPhones, iPad and Mac look exactly as before
- Now requires iOS 26 or later (iPhone 11 and newer)
2.3.50 Short iPhones keep the message log above the buttons
October 11, 2026
- Fixed: on shorter iPhones (iPhone 17, 17e, Air and similar) the game messages no longer slide behind the buttons at the bottom of the screen — the layout now gives height back from the title block, the gaps and the message area, and drops the oldest message lines only if it still needs more. The Pro Max, iPad and Mac look exactly as before
- Fixed: the “Swipe down to close” hint no longer overlaps the text at the bottom of About, or of long Settings and Card Back screens, on iPhone
- Removed a stray bar-graph icon from the score Breakdown title
2.3.49 “Swipe down to close” hint stays put; swipe-down no longer closes mid-page
October 9, 2026
- Fixed: the “Swipe down to close” hint no longer drifts through the middle of How to Play, Pro Tips and Game Review while you scroll — it now stays put at the bottom of the screen, with the text fading out beneath it
- Fixed: swiping down in the middle of How to Play, Pro Tips or Game Review now scrolls back up instead of closing the screen — swipe down from the top of the page to close it
2.3.48 Empty count entries no longer count as 0
October 9, 2026
- Fixed: with Self Score on, submitting an empty count no longer counts as 0 and hands the points to your opponent through Muggins — the field now shows a ? and Submit stays dimmed until you enter your total (a typed 0 still counts, so you can still call a hand worth nothing)
- Fixed: the same for the Muggins Challenge — an empty guess can no longer use up your one chance to catch your opponent’s miscount; the field gives a gentle shake with a red underline instead
2.3.47 Coaching Mode Play Review, rebuilt advice, and sharper Pro discards
October 2, 2026
- Coaching Mode: new Play Review — after each card you play, the coach compares it with its own pick and says which was better and why, and the Game Review now shows a running tally of how often you matched the coach
- Coaching Mode: pegging advice and the Hint button now judge risk from the cards you can actually see, with odds you can read (for example, “a pair for 2, about 25% likely”), instead of the opponent’s hidden hand — so tips like “lead a 5” are now flagged as a last resort
- Coaching Mode: discard advice was rebuilt to weigh all four crib cards and the starter odds, and your Discard Review now judges by the same numbers; the opponent’s hand and crib counts list the exact cards, and with Muggins on the coach no longer gives away an opponent miscount
- Pro opponents now choose their discards more sharply, weighing the whole crib; Hard and Pro opponents also choose only from cards they could actually see, never the undealt deck
2.3.46 Coaching Mode Hint fix and modal polish
October 2, 2026
- Fixed (iPad Coaching Mode): pressing Hint no longer draws its text over the coach panel — the recommended cards are highlighted and the panel scrolls to the latest tip
- Fixed: the Cut for Deal and crib reveal screens on iPhone and iPad now span the full width of the bottom button bar, so no button edges show beside them
- Fixed: the “Swipe down to close” hint now fades out as you drag a screen away, instead of drawing over it while it slides off
2.3.45 App Lock setup fix and more Coaching Mode polish
October 2, 2026
- Fixed: the App Lock setup screen could push its Cancel and Enable buttons below the bottom of the screen on smaller iPhones — they now stay pinned in view while the explanation scrolls and fades above them
- Coaching Mode: the coach panel now scrolls back through your entire game instead of just the last few tips, and fades at its top and bottom edges instead of cutting text off mid-line
- Coaching Mode: new Hide coach / Back to coach switch beside your cards, so you can play a few hands on your own and bring the coach back whenever you like
- Coaching Mode: your own Count Your Hand and Count Your Crib breakdowns now appear in the coach panel, and the New Game control is simpler — the Coaching Mode label itself glows to invite a tap and brightens when it is on
2.3.44 Coaching Mode polish
September 29, 2026
- Coaching Mode: the panel is now a scrollable running history of recent tips instead of just the latest one — scroll back to review earlier discards, plays, and counts from the same hand
- Coaching Mode: dropped the mini-card images in the panel (redundant with your own hand already on screen) to fit more advice in the same space
- Coaching Mode: fixed low-contrast icons that were hard to see against the black background
- Coaching Mode: the panel now sits closer to the bottom buttons instead of leaving empty space below it
- Coaching Mode: fixed the panel showing a faint grey tint instead of solid black when there wasn't much to show yet
2.3.43 Coaching Mode for iPad
September 29, 2026
- New on iPad: Coaching Mode — an option on the New Game screen that plays against an Easy-strength AI with live tips for discards, pegging, and counting in place of in-game messages, plus one-time explainers for Self Score and Muggins
- Self Score's Detail button now stays available throughout on Easy difficulty, matching every other count reveal, instead of staying locked until you submit
- Fixed the Continue automation setting's description showing the wrong wait time
2.3.42 Pegging pile fix & polish
September 28, 2026
- Fixed the pegging pile losing its board position after a 31 or a Go — it now stays anchored consistently all the way through the hand
- Bigger cards when counting a crib, yours and the AI's
- A bigger joker on the Game Over screen when the AI wins
2.3.41 AI counting accuracy tuning
September 28, 2026
- Fine-tuned how often the AI mis-counts on Hard and Pro difficulty
2.3.40 Defaults, button states & more fairness fixes
September 27, 2026
- Corrected several fresh-install defaults (Messages, Card Back, Self Score, Muggins, Game Speed) to match their intended settings
- Fixed Hint/Deal sometimes staying lit during the cut and counting transitions when they weren't actually usable
- Stats and Settings no longer silently skip past an active score reveal — including a live Muggins opportunity — when tapped
- The Muggins button on the AI's hand/crib now always appears, whether or not the AI actually miscounted, so it can no longer tip you off
2.3.39 Muggins Challenge fixes & fairness
September 27, 2026
- Fixed the Muggins Challenge revealing the answer before you'd entered your guess on Hard/Pro
- Muggins Challenge points and the peg now update the instant you submit, not after you continue
- Fixed the peg marker sometimes showing ahead of your actual score after a penalty
- The AI can now overcount too — catch it with Muggins just like an undercount, and it's auto-corrected when Muggins is off
- Fixed a subtle fairness gap where the AI could partially see what you discarded to the crib during pegging
2.3.38 Counting screen fixes
September 27, 2026
- Fixed a pegging score reveal getting cut off when a big score (like a Double Pair Royal) landed on the very last card of a round
- Fixed the App Lock info screen sometimes being unreachable with no way back
- Your hand no longer shrinks when the starter card is added for counting
- Manual Count now supports tap-anywhere-to-continue, matching the Muggins Challenge screen
2.3.37 Reset Stats overhaul, navigation & consistency fixes
September 26, 2026
- Reset Stats no longer asks for a password — just a clear "Are you sure? This action is permanent and unrecoverable" confirmation, with a proper Back button and swipe-down-to-close support matching the rest of the app
- Fixed How to Play and Pro Tips not returning to Settings when closed
- The Cribbage title and version now show on every screen, not just the main game view, with consistent title placement and spacing across Settings, Stats, Advanced, Reset Stats, and every other screen
2.3.35 General improvements
September 25, 2026
- General improvements and minor bug fixes
2.3.34 Mac App Lock, Muggins fixes
September 25, 2026
- Mac: added App Lock — protect the app with Touch ID or your Mac password, with a configurable auto-lock timeout, matching the iOS/iPad feature
- Fixed the Muggins Challenge result screen: tapping anywhere now continues, not just the small chevron, and the continue button no longer stays stuck dimmed after the first call of a game
2.3.33 Settings simplified
September 24, 2026
- The peg board is now always shown during play — removed the option to hide it, since keeping it visible is simpler and matches how nearly everyone played anyway
2.3.32 New Game screen reliability fix
September 24, 2026
- Fixed a rare case where the New Game screen could get stuck if you didn't type a name and the app happened to be backgrounded at just the wrong moment — it now reliably falls back to a default name and continues on its own
2.3.31 Fixed a card border artifact
September 24, 2026
- Fixed a visible double-border/edge artifact on card faces, across all three card-face styles (Classic, Modern, Vintage)
2.3.30 Native Mac menu bar, Pro Tips guide, and a peg-nudge fix
September 21, 2026
- Mac: real native menu bar — About, Preferences (⌘,), New Game (⌘N), Edit (Cut/Copy/Paste/Select All), Window (Minimize), and a Help menu with the website link, How to Play, and a Copy Screenshot tool for quick bug reports
- New "Pro Tips" section in Settings, below How to Play — a deeper guide with worked examples on smarter discards, pegging traps, and commonly missed scoring combos
- How to Play now includes expandable worked examples with real cards for discard strategy, pegging, and hand counting
- Fixed a factual error in the "perfect hand" tip about what actually scores 29 points
- Fixed the idle reminder glow not resetting when dismissing the "it's your turn" prompt via its buttons
2.3.29 Card Faces renamed, message history always kept
September 21, 2026
- The "Card Fronts" setting is now called "Card Faces," matching standard card-game terminology (face/back, not front/back) — your existing choice carries over automatically, nothing to reselect
- Recent Messages now keeps a full log of every move even when in-game messages are set to Off or Limited in Settings — tap the message area to review the whole game's play-by-play any time
2.3.28 General improvements
September 20, 2026
- General improvements and minor bug fixes
2.3.27 Mac window size, messages width, automation defaults
September 20, 2026
- Mac: the app window is now a fixed size instead of freely resizable/full-screen — this removes a rare full-screen rendering glitch we tracked down but couldn't fully close out before launch
- Mac: the Recent Messages window is wider, so longer messages no longer run into the edge
- New installs now start with Cut and Discard automation off by default (Deal stays on) — you can still turn any of them on in Settings > Automation
2.3.26 General improvements
September 20, 2026
- General improvements and minor bug fixes
2.3.25 General improvements
September 20, 2026
- General improvements and minor bug fixes
2.3.24 Count modal consistency + fairer Muggins
September 20, 2026
- Manual Count and Muggins Challenge: the Continue button now sits consistently below Detail, matching every other count reveal
- Muggins Challenge on Hard/Pro no longer shows the score breakdown until after you've submitted your guess
2.3.23 Recent Messages now covers the whole game
September 20, 2026
- Recent Messages now keeps every message from the whole game instead of clearing between hands
2.3.22 Manual Count and Muggins fixes
September 20, 2026
- Fixed Manual Count + Muggins: the opponent's hand/crib now correctly respects your Auto Continue setting instead of always waiting for a tap
- Fixed the Muggins challenge button not appearing when Manual Count was also on
- Fixed a cramped scrollbar in the Manual Count / Muggins number pad on smaller screens
2.3.21 Correctness fixes following code review
September 20, 2026
- Fixed a scoring edge case that could occasionally miscount the crib estimate shown during discard
- Fixed several rare timing issues where starting a New Game at exactly the wrong moment could leave the new game in a bad state
- Manual Count: fixed a rare case where a win could be declared with an incorrect final score
- Count reveal windows now stay correctly positioned if you resize the window while one is open
- Small fixes to swipe-to-dismiss on modals and a couple of rare cosmetic glitches
2.3.20 Performance pass following code review
September 20, 2026
- Smoother window resizing on Mac — the board no longer rebuilds itself repeatedly while you drag-resize
- Reduced background CPU work during pegging and hand rendering
2.3.19 Layout polish following code review
September 19, 2026
- Fixed a rare stale-spacing glitch in the crib/hand count reveal on very short windows
- Fixed the board briefly keeping its wide-layout sizing when resizing a window back down from desktop width
2.3.18 Mac app gets its own native layout
September 19, 2026
- The Mac app now has its own layout instead of borrowing iPad's — same board and card style as iPhone, scaled up to fill the window
- Bigger default and minimum window size on Mac, so the game never crowds itself at smaller sizes
- Fixed the crib/hand count reveal covering the Deal/Hint/Stats buttons on Mac
- Fixed remaining Mac-only crowding: the starter card's corner and label, and the score tile text
- Every modal is now pure black with no border, edge to edge with the background
2.3.17 Desktop card layout fix
September 19, 2026
- Fixed crowded, unoffset cards in the desktop-width layout — the card fan/overlap in hands and the pegging row, and the starter card's alignment and spacing, now match the phone/tablet version
2.3.16 Crib modal polish, layout fix
September 18, 2026
- Crib count reveal now matches the hand count reveal's heading style, and its content sits higher on screen
- Fixed an awkward in-between layout on wider windows (like the Mac app's default size) — it now stays in the clean compact layout until the window is genuinely wide enough for the full desktop view
2.3.15 Fixed a floating-card glitch
September 18, 2026
- Fixed a swiped card sometimes appearing to float over the board instead of sitting in your hand during a hand-count reveal
2.3.14 Swipe-to-play fix
September 18, 2026
- Fixed a glitch where swiping a card up to play it during pegging could show a ghostly snap-back before it faded away
2.3.13 Longer count-modal auto-continue
September 18, 2026
- Hand and crib count reveals now give you 10 seconds before auto-continuing (up from 3) — tap anywhere to move on sooner
2.3.12 App icon redesigned again
September 18, 2026
- Redesigned the app icon again — dropped the text for a cleaner look, with the cards front and center on the actual cribbage board
2.3.11 Recent Messages panel improvements
September 18, 2026
- Recent Messages is bigger by default and now shows your full message history, not just the last 10 lines
2.3.10 Pegging counter, reminder glow, Recent Messages
September 18, 2026
- Removed a redundant duplicate counter that showed up during pegging on wider screens
- The "play a card" reminder glow is brighter
- Recent Messages now stays open and updates live instead of closing itself after a few seconds, with the newest entries shown more prominently
2.3.9 New Game screen fix
September 18, 2026
- Fixed the New Game screen so the keyboard-troubleshooting message no longer pushes content off the bottom of the screen on tall phones
2.3.8 Richer win, loss, and skunk sounds
September 18, 2026
- Reworked the win, loss, and skunk sound effects with more depth and texture, replacing the flatter, more "8-bit" versions
2.3.7 New app icon
September 18, 2026
- Brand new app icon — a "Simply Cribbage" wordmark styled after the in-app launch screen, with the Jack of Spades and 5 of Hearts on a black background
2.3.6 Self Score fix, Muggins redesign, bigger crib cards
September 17, 2026
- Self Score's "Count Your Hand" screen no longer covers your own cards with a blank popup — your hand was on the table the whole time, the screen now gets out of the way properly
- Muggins overhauled: the opponent's hand and crib now score and reveal immediately, same as normal — with a "Muggins!" button on that reveal if you want to verify the count and claim any points they missed
- Muggins no longer requires Self Score to also be turned on — it now works entirely on its own, as its own setting
- Crib count cards are noticeably bigger and easier to read
- Self Score and Muggins screens now move on by themselves a few seconds after you submit, instead of waiting indefinitely for a tap
2.3.5 Pegging-row and starter-reveal fixes
September 15, 2026
- Fixed pegging cards occasionally squishing narrower or briefly looking like they'd vanished during a long run of plays before a "Go" — a layout correction that already worked correctly on iPad wasn't running on iPhone at all
- Fixed already-played cards sometimes lingering as full-size, opaque cards on top of your hand after a hand-count reveal, instead of properly clearing out of the way
- The crib board no longer shifts position by a few pixels the instant the starter card is revealed at the start of pegging
- Smoothed a brief flicker that could appear when spent pegging cards cleared off the table
2.3.4 Full-screen crib reveal, starter-card fix, restored modal borders
September 11, 2026
- Fixed a starter card that could sit within a few pixels of the screen edge during the hand-count reveal on the narrowest iPhone sizes (15/15 Pro, 17/17 Pro) — the layout math that keeps everything on-screen wasn't running on phone widths whenever a starter card was involved
- The crib count screen now fills the entire display, top to bottom, instead of stopping short of the opponent's score and the bottom toolbar — both hands are already cleared by that point, so there's nothing left to leave exposed
- Restored the subtle floating-card border on the Hand Breakdown detail view, Reset Statistics, and the App Lock consent screen — a CSS rule left over from the previous release's style cleanup had accidentally flattened all three back to solid black
2.3.3 Consistent count-modal positioning + unified modal styling
September 11, 2026
- Hand-count reveals no longer cover your cards or your opponent's — they now land in a consistent spot between the two, regardless of whose hand is being scored
- Audited every popup in the app for visual consistency and unified them to the same solid-black, floating-card look
2.3.2 App Store icon fix
August 2, 2026
Fixed a rejected App Store submission caused by the app icon carrying a transparency channel Apple doesn't allow on the large icon. While fixing it, also cleaned up a small rendering glitch where the rank marks on the icon's two playing cards were partially hidden behind each card's own rounded corner. No changes to the game itself.
2.3.1 Fix cramped difficulty-picker text on iPad
August 1, 2026
The difficulty description text was pinned to only half the card's actual width, wrapping 1-4 words per line on any tablet-width screen (iPad, Mac app). Fixed to use the full card width, with the difficulty name and pips reordered so the title lines up flush with the description below it.
2.3.0 About-modal Website section, developer contact QR, minor version bump
August 1, 2026
- Added a "Website" section to the About modal (between Acknowledgements and Open Source) with a copy-link to the hosted privacy policy, support page, and full version history
- Added a "Need support directly from the developer?" QR code + click-to-copy email address in that same section, for reaching out from a second device
- Added a matching copy-link to the Open Source section's SVG-cards repository mention
- Reverted the GitHub acknowledgment bullet to plain text (the earlier link pointed at a private repo and 404'd for real players)
- Debug-log panel: 5 taps to open, only 2 taps to close again
- Bumped to 2.3.0 (first minor version bump since 2.2.x's board/pegging redesign cycle wrapped up)
2.2.99 Personalize-prompt UX overhaul + modern card-face blur fix
August 1, 2026
- New Game: tap anywhere to skip the opponent-naming prompt instantly
- New Settings > Advanced > Custom Opponent Name toggle (off by default) to skip that prompt entirely
- Picking a difficulty now hides the other two instead of just dimming them
- Last-played difficulty now correctly stays pre-highlighted across games (fixed a timer that was silently wiping this out after 1 second)
- Longer "(change?)" window on the returning-player auto-start message (1.5s → 3s), simplified its copy
- "Start Game" button restyled to match the rest of the game's borderless modal convention
- Fixed blurry pips on Modern-style Ace-10 card faces (stray drop-shadow filter, WebKit-specific rendering quirk)
2.2.98 Acknowledgements + Open Source license section
July 31, 2026
Added an Acknowledgements section to the About page crediting the tools and people behind this app's development (Claude Code/Anthropic, Xcode/Apple, GitHub, and David Bellot's open-source SVG playing cards that the classic card artwork is built on).
Also added an Open Source section with the full LGPL-2.1 license text for the card artwork, satisfying its attribution/license-availability terms — collapsed by default, expands in the app's normal body font (not the raw file's monospace layout, since only the wording itself is required to stay verbatim, not the formatting). Content integrity verified word-for-word against the original license file before and after reflowing.
Updated the What's New section to cover this and the previous release.
2.2.97 Add "Built to Last" section to the About page
July 31, 2026
New section between Privacy and Fair Play, reinforcing the app's zero-network design: no server, subscription, or account behind it, so nothing on our end can go down, expire, or get shut off — as long as the device can run it, the game runs. Same copy also added to the hosted privacy-policy page for consistency.
2.2.96 Name-driven crib-owner tag, quieter name box, longer timer
July 31, 2026
Game Review's Hand-by-Hand table (and the in-game running history table) showed a generic "(Y)"/"(C)" tag next to crib points — inconsistent with the rest of the app, which always refers to the opponent by their given or custom name, never "CPU". Both now use the actual first initial of whoever's name is in play instead.
Also: removed the redundant "(optional)" placeholder text from the "Give the opponent a different name?" input — the label above and the "Leave blank to keep..." hint below already say as much — and bumped that prompt's blank-path auto-continue timer by 1750ms (5000ms → 6750ms) for more breathing room before it defaults.
2.2.95 Fix AVAudioSession main-thread hang risk
July 31, 2026
Xcode flagged 3 "AVAudioSession Hang Risk" warnings during a real on-device debug session (iPadOS 27 Beta 2) — all synchronous setActive(true) calls made directly on the main thread (configureAudioSession, appDidBecomeActive, and the webView(didFinish:) delegate). Fixed by dispatching each call onto a background queue instead, which is the standard fix for this warning and works at the project's iOS 18.2 deployment target — an earlier attempt using the newer async activate() API turned out to require iOS 27, so it was replaced with this version-safe approach. No behavior change; verified via a clean Xcode build with no errors or warnings.
2.2.94 In-app "What's New" section on the About page
July 31, 2026
Added a curated, player-facing release-notes section near the top of the About modal, grouped by version (newest first). This isn't a full changelog — only genuinely player-visible changes get an entry (a new feature, a visible redesign, a pacing/feel change), skipping internal bug fixes and refactors. Seeded with the last few notable updates: the count-modal Detail-view redesign (2.2.93), slower/more natural pacing (2.2.88), and custom opponent naming (2.2.83).
2.2.93 Detail-view redesign for count modals + crib-card visibility
July 30, 2026
Clicking "Detail" on the self-count/muggins-challenge modals now replaces the whole modal with the full scoring breakdown (hiding the now-irrelevant entry/numpad/feedback) instead of appending it below a still-cluttered view; the existing Continue (>) button advances to the next count or hand exactly as before.
Restored the crib's cards in both count modals — unlike a player's own hand, the crib is never shown face-up anywhere else on the table, so without them the crib count was being judged blind. Card rendering stays hand-only-hidden/crib-shown, matching where the information is actually otherwise available.
Surfaced and fixed a real regression this uncovered: leaving a count step via Detail without returning to Summary first left the entry/feedback/claim elements permanently hidden for the next step, since their inline display state was never reset on the next showManualCount/showDealerCount call — fixed by resetting it explicitly each round.
Also fixed a genuine content-overflow bug the restored crib cards exposed (up to 130px on content-heavy hands): rather than keep shrinking padding to fight a fixed box height, extended the count-modal's box to use the full available screen height (encroaching into the player-hand area, which is fine since nothing there needs to be interacted with while the modal is open) and made the modal backdrop solid black to match, then let the box size to its actual content instead of always stretching to fill the taller ceiling.
Verified live across typical and worst-case (quad-five) hands in both modals, all four modal states (pre-submit, post-submit, Detail, post-Detail-exit-without-Summary), plus a clean 40-game pressure-test regression pass.
2.2.92 Keyboard-fallback safety net + quieter personalize screen
July 30, 2026
Real-device testing traced a "keyboard never appears" report to a third-party keyboard extension (Grammarly) hanging on this app's name field — an iOS platform limitation (apps can't select/override the active keyboard), not a game bug. Since a first-time player with no saved-name pill would otherwise be stuck at the very first screen with no way to proceed, added an idle-timeout fallback to name entry (mirroring the existing difficulty/personalize screen's pattern): if nothing's typed or tapped for 25s, show a brief note and continue with a default name after 12s. Added a matching "Keyboard Not Appearing?" section to the in-app About page for permanent reference.
Also toned down the difficulty-selection personalize prompt, which read as loud/bright relative to the rest of the screen: dimmed the label to match the existing quiet italic treatment used elsewhere in this exact same UI slot, replaced the bright bordered "No" pill with a "Yes ›" text link (input field now only appears once tapped, editing an already-named opponent still shows it immediately as before), and removed stray underlines.
Verified live end-to-end (idle-timeout hint + auto-continue, Yes-reveal + focus, existing-name edit path unaffected, About page rendering) plus a clean 150-game pressure-test regression pass. Device-tested and confirmed working.
2.2.91 Fix Mac app New Game screen content clipping
July 30, 2026
The tablet media query (min-width:700px) caps setup/settings/stats/etc. modal boxes at a percentage of viewport height tuned for iPad's fixed portrait dimensions. The Mac app's window is arbitrarily resizable and much shorter relative to its width than iPad ever is, so that same percentage left far less usable room, silently pushing content below the fold on the welcome screen, the rotating facts, and the difficulty/personalize screen.
Give the Mac target (html.mac-app) its own override using nearly the full window height instead of a fixed vh fraction, since that's the actual constraint that matters. Verified zero overflow across the welcome screen, all 40 rotating facts, and the difficulty/personalize screen; confirmed iPad is unaffected since the override only applies under the Mac-only flag.
2.2.90 Fix dead message-level default, fix fresh-install self-registration
July 30, 2026
Message level's "off for Hard/Pro" default was baked into localStorage on first boot before any difficulty was ever chosen, permanently short-circuiting the derivation on every future launch. setDifficulty() now re-derives it (unpersisted) whenever the player hasn't made an explicit choice, so it keeps adapting to difficulty until they do.
Defaulting PLAYER_NAME to "Alex" also caused a genuinely fresh install to silently register "Alex" into the recent-players list before the user typed or clicked anything, showing "or enter another name" with a pre-selected pill on an untouched device. Boot-time player-list bookkeeping now only runs when a name was actually stored.
2.2.89 Fix personalize-screen clipping on iPhone
July 30, 2026
User reported the lower portion of the New Game "select a difficulty" screen was clipped on iOS once a difficulty was picked. Root cause: the two unselected bios stay in the layout (just dimmed via opacity), still holding their full 140px height, and the new per-difficulty personalize prompt (name field + Start button) pushed total content ~100-155px past the visible area on phone widths, with no visual cue that the box was scrollable.
Fixed by collapsing the two dimmed bios to just their pips+name row once a difficulty is picked, freeing enough space that everything fits without scrolling. Scoped to max-width:699px so the iPad's side-by-side layout is untouched — confirmed unaffected directly.
User-tested and confirmed working on both iPhone and iPad.
2.2.88 Rework game-speed pacing (backlog #37)
July 30, 2026
Beta testers reported the game feels rushed even at "slow" speed. Root cause was two separate problems: several of the most-repeated pacing delays (the pause after every peg play, the post-31 reset, the discard→cut transition, the auto-discard confirm) were hardcoded and never responded to the speed setting at all; and even where the setting was applied, "slow" was just the 1x unaccelerated baseline, never actually tuned to feel patient.
Fixed both: routed the hardcoded delays through _gs() (mostly via a single fix inside the shared _scheduleAfterPeg() helper), and shifted the whole speed scale one notch more patient — {slow:1, normal:0.6, fast:0.3} → {slow:1.5, normal:1, fast:0.6}. Today's "normal" becomes the new "fast," today's "slow" becomes the new "normal," and "slow" is a genuinely new, more patient tier. Since GAME_SPEED already defaults to "slow," every new install gets this pacing by default.
2.2.87 Fix native launch-screen mismatch, Xcode 27-beta build errors
July 29, 2026
Investigating the App Launch modal jitter (backlog item 35): user found the real transition was the native iOS LaunchScreen handing off to the SwiftUI splash view, not the web-side sequence. The SwiftUI splash rendered the logo at 350pt wide vs. the native LaunchScreen's actual 398x73pt asset, and ignored the safe area where the native screen respects it — a real, measurable mismatch causing a visible pop at handoff. Fixed by rendering the logo at its natural size and scoping ignoresSafeArea() to just the black background layer, so both screens render identically.
Also fixed two build failures surfaced while testing on the just-updated Xcode (for macOS 27 Beta 2 support):
- AppIcon.appiconset/Contents.json had every iPad icon slot mapped to a file one scale-step too large (e.g. the 1x slot fed the @2x file). Corrected the mappings and dropped the three obsolete 1x iPad entries (deployment target is iOS 18.2; no such device exists).
- The "Copy Card Assets" postBuildScript's recursive cp of the whole assets/ tree has no declared Input Files, which newer Xcode's Run Script sandboxing now blocks (Sandbox: cp deny file-read-data). Set ENABLE_USER_SCRIPT_SANDBOXING=NO for the target rather than enumerating every asset file as an input.
2.2.86 Add per-difficulty message defaults, fix sound-pill bug
July 29, 2026
Fix: setMessageLevel() cleared msg-active on every .msg-btn-styled toggle in Settings (sound, auto-cut/deal/discard/continue, learn mode, adaptive AI, self-score, board visibility), not just the message-level buttons, since it selected by the shared class instead of the mlevel dataset. Scoped to [data-mlevel], matching the existing [data-soundlevel] pattern.
New defaults (only applied when nothing's been explicitly chosen): message level off for Hard/Pro (Easy stays full), player name "Alex", game speed "slow", and a 1m App Lock timeout set at the moment of biometric consent (never bypassing the consent flow itself). Also reworded the name-entry divider now that "Alex" shows as a default pill: "or enter your name" → "or enter another name".
2.2.85 Add boot-sequence diagnostic logging
July 28, 2026
Investigating a real on-device report: the App Launch modal jitters briefly (<500ms) on a fresh install before settling. Couldn't reproduce true cold-install timing in the dev preview (no first-JIT penalty, no first-install disk I/O), so added lightweight timing instrumentation instead of guessing at a fix.
Web side: _bootDiagLog() records each boot milestone (fonts.ready, first/second fit pass, gameReady send) to localStorage, surfaced in the About modal's debug panel as "Boot Diagnostics" and included in Copy Debug Log.
Native side: ContentView.swift logs the splash lifecycle (onAppear, minHoldElapsed, gameLoaded received, actual dismiss, safety fallback) to the Xcode console with relative timestamps, so the two timelines can be cross-referenced to see whether the splash crossfade overlaps with the web side still mid-layout.
2.2.84 Fix personalize-prompt double-launch bug, add decline pill
July 27, 2026
Fix: the personalize-name input stayed in the DOM after the setup modal visually closed, so a stray blur event could re-arm the fallback timer and fire a second setupStartGame()/_launchNewGame() call mid-game, racing the first (the "several things fired at once" symptom on fresh install). Added a _cpuNameResolved guard so the whole personalize flow can only resolve once per wizard cycle.
Also: blank-path auto-start timer 2.5s → 5s; added a touch-friendly "No" pill so players can explicitly decline personalizing instead of only being able to wait out the timer; and fixed a related gap where clearing an existing custom name during the "(change?)" edit flow never actually removed it from storage (setCustomCpuName is now always called, not only when the submitted value is non-blank).
2.2.83 Add per-difficulty opponent naming, fix bios leak bug
July 27, 2026
Fix: renaming the AI opponent from Settings was overwriting all three difficulty-selection bios (Nob/Noddy/Nubb) and win/loss records with the one custom name, instead of only the currently active difficulty.
Replace the single global custom-name override with a name scoped to each (player, difficulty) pair, offered once right after picking a difficulty in the New Game wizard instead of via Settings (removed):
- New cribbageCpuNames storage map, keyed per player + difficulty, with lazy migration of any existing global cpuName value.
- Personalize prompt appears only the first time a pair is played; returning games silently reapply the saved name, with a "(change?)" link to edit or clear it later.
- Clicking into the name field pauses the auto-continue entirely; 7s idle nudges the player once, repeats once, then falls back to the canonical default and starts the game — typing at any point cancels the nudges and reveals an explicit Start button.
- Cleanup on both the 12-player LRU cap and explicit player deletion, so the name map never accumulates stale entries.
2.2.82 Dedupe win-hole formula and starter-hole spacing constant
July 27, 2026
Code-review follow-up: hoist the win-hole x formula into a shared _winHoleX() used by both _boardXY() and initBoard(), and collapse _startHoleXY()'s two identical pairSpread/rowOffPlayer constants into one, removing duplication that risked silent drift between the drawn hole and the peg's actual resting position.
2.2.81 Add the Mac app to the BBB release ritual
July 27, 2026
Folds the standalone macOS wrapper (main.swift → Simply Cribbage.app) into the same version-bump ritual as iOS from now on, rather than treating it as separately-pinned, uncommitted work:
- Simply Cribbage.app/Contents/Info.plist now carries a real version (CFBundleShortVersionString/CFBundleVersion mirroring iOS's marketing version and build number) instead of a static "1.0" placeholder that macOS's standard About panel was displaying verbatim.
- main.swift is committed for the first time, including everything accumulated this session: WKWebView autoresizing + black background on resize, the "Simply Cribbage" rename (window title + menu items), and a #macapp URL-fragment flag passed to the loaded page so cribbage.html can apply one Mac-only CSS fix (forcing a true black body background regardless of window size, fixing the "background doesn't extend through the buttons" report) without affecting iOS.
- .gitignore's bundle-ignore pattern updated to match the bundle's new name (Cribbage.app → Simply Cribbage.app, renamed earlier this session) — the stale pattern would have stopped matching and made the built bundle show up as an untracked directory.
2.2.80 Fix board label centering and starter-hole placement/spacing
July 27, 2026
- Fixed cross-browser SVG text vertical centering: dominant-baseline: central has inconsistent WebKit/Safari support (looked correct in desktop Chromium preview, misaligned on real iOS device). Replaced with a dy="0.35em" offset on every board number label (10-120, 60, 121) — the standard cross-browser-reliable technique, affects both iPad and iPhone since it's a rendering-correctness fix, not a device-specific design choice.
- iPhone-only: starter peg holes now sit on each player's own track row instead of floating in a shared middle zone between both tracks (iPad's centered-diamond design is unchanged, gated behind the existing width>=700 breakpoint).
- iPad: nudged the opponent's starter-hole pair a bit closer to its own track than the player's pair, per request. Along the way, fixed a real bug this introduced: the same offset variable was controlling both the row-distance AND the spacing between the two dots within a pair, so adjusting one broke the other (comp's pair briefly had different internal spacing than player's). Decoupled into separate pairSpread/rowOff variables — both pairs now have identical internal spacing, confirmed via direct coordinate and on-screen measurement.
2.2.79 Make post-game coaching tips more robust (backlog #31)
July 23, 2026
- Fixed a dead "End-game" tip category: its guard was
!G.pScore >= 121, which due to operator precedence always evaluated false (!G.pScore → false for any nonzero score, then false >= 121 → false). This category could never fire.
- De-ternaried two falsely-exclusive pairs (pegging gifts vs. danger-leads, weak-crib vs. opponent-crib-strong) into independent checks so both can surface in the same game when both are true, instead of arbitrarily picking one.
- Added two new categories reusing already-tracked
pegPlays data: go_efficiency (Go-bonus point comparison) and lead_five (flags repeatedly leading a 5 to open a count, a classic beginner mistake).
- Added a loadStats()/saveStats()-backed anti-repeat rotation (
lastCoachTips) so whichever tips were shown last game get deprioritized this game when more eligible categories exist than fit in the 5-tip cap — directly fixes "the same tip every time."
2.2.78 Increase peg-hole visibility across the board (backlog #30)
July 23, 2026
- Darkened/increased opacity of the brd-hole radial gradient's mid and rim stops (0.92→0.99, 0.58→0.9) so holes read as more solid against the board instead of letting the wood texture show through.
- Strengthened the drop-shadow under every straight/arch hole (opacity 0.48→0.7, radius 4.7→5).
- Gave the starter-hole diamond and the 121 win-hole marker the same treatment: added a matching drop-shadow (previously they had none) and darkened their fill circles to match.
2.2.77 Shift the 121 win-hole cluster closer to hole 120
July 23, 2026
Moved the "121" text label and its peg-hole circle together (same relative offset preserved) 15 units closer to hole "120" — the cluster was sitting a bit too close to the board's left/bottom edge. Gap to hole 120 shrinks from ~40 to ~25, gap from the divider line grows from ~6 to ~21.
2.2.76 Unify peg and player-chip colors on primary red/blue
July 23, 2026
Player/comp board pegs (bpeg-p/c-front/back) and the you-card/cpu-card chip left-border accent now share the exact same colors instead of two independently-tuned blues and reds: primary blue #2266ee (was chip #4488ee, peg #5aa0ff) and primary red #ee2626 (was chip #e05050, peg #ff5a5a), with proportionally darker #1a4db3/#b31d1d for the trailing peg. Everything else that happens to reuse the old blue/red (progress bars, glow animations, analyzer charts, message log, card-suit-red rendering) is intentionally left untouched — scoped to just the peg/chip identity-color pairing per explicit request.
2.2.75 Relocate pegging holes into the arch + reclaim starter-hole space
July 23, 2026
- Redesign the "2 starter holes per player" as a single shared 4-hole diamond cluster centered between the two outbound tracks (comp/player), in the open space between the start position and hole #1 — mirroring how the 121 win-hole marker is centered between the two inbound tracks. Left/right symmetric pairs (comp upper, player lower), matching the same horizontal flow direction as the numbered pegging holes instead of stacking vertically within one row's channel.
- Both of a player's actual pegs (front/back) now render into two distinct holes of that cluster at game start via a new _startHoleXY() helper, shared by both the hole-drawing code and the peg-placement code so they can never drift apart. The old unmarked single start point (x=30, both pegs stacked identically) is no longer used.
- Starter holes now use the same ringed style and size as the 121 win-hole marker (accent-color ring + dark inset), replacing the smaller straight-track-style holes from the initial pass.
- Recentered the "60" label at the arch's true apex, centered the 121 win-hole's peg-hole between hole "120" and its own label, and switched all board number labels to true SVG dominant-baseline centering instead of a manual pixel-offset fudge.
2.2.74 Polish arch-board label alignment + relocate win-hole marker
July 23, 2026
- Recenter the "60" label at the arch's true apex instead of score-60's slightly off-center angle.
- Move the "121" win-hole marker's peg-hole centered between hole "120" and its own label, with the label sitting just right of the board's divider line, closer to the hole.
- Switch board number labels (10-120, 60, 121) to true SVG dominant-baseline centering instead of a manual pixel-offset fudge, so every label sits exactly on its row's centerline and the 121 label/hole align precisely.
2.2.73 Relocate pegging holes into the arch + reclaim starter-hole space
July 22, 2026
- Move scores 56-65 onto the arch (real holes, replacing the old two-phase teleport animation in _movePeg) instead of the straight track being purely decorative there.
- Reindex the remaining 55 straight holes per lane to flush against the arch, freeing space at both the start (outbound) and win-hole (inbound) ends.
- Add 2 stacked starter holes per player in the freed start-zone.
- Relocate the shared 121 win-hole marker into the freed inbound-side space.
- Bolder board number labels (larger font-size + stroke for weight).
2.2.72 Fix swipe-play ghost card, peg arch scaling, automation hot-toggles + UI polish
July 22, 2026
- Discard/pegging swipe-to-play: the card element was reused (not rebuilt) by renderPlayerCards()'s pegging fast-path, so resetting its drag transform with the CSS transition still enabled produced a visible slide-back before it dimmed into "played" state. Now resets instantly (transition disabled for the whole reset-and-play step), leaving only the intended dim/collapse animation.
- Peg arch-crossing animation (60/61 lane transition): the two-phase animation's fixed waypoint at the arch's apex never multiplied by the board's dynamic scale factor (window._bhK), unlike every other board coordinate in the file. At typical rendered sizes (_bhK ~1.73 measured live) the waypoint was off by roughly half its correct offset. Now scales correctly with the board.
- AUTO_DEAL, AUTO_DISCARD, and AUTO_CONTINUE were only checked once, at the moment their delay timers were scheduled — toggling a setting off during the wait didn't stop the pending auto-action from firing anyway. All three now re-check their current value when the timer actually fires.
- New Game screen: shrank the name-input box, capped the description and Fun Facts text to a comfortable reading width instead of stretching full width on iPad, and removed the card-style background so that text floats directly on the black surface like other elements.
- Settings > Sound: renamed "Full" to "On" (the middle "Minimal" option was already removed, leaving an odd Off/Full pairing).
2.2.71 Add "play a card" stall reminder + fix resume-game timer gap
July 21, 2026
New: after 6 seconds of the player not acting during their peg turn, the player's score chip gets a soft gold glow (2.5s dim-to-bright, 2.5s back, using the app's existing accent color) as a gentle nudge to play a card. Clears on card play, or when the existing 90-second "It's your turn" modal takes over. Enabled in all difficulties, including Pro.
Also fixed a real, pre-existing gap found while verifying the above: resumeSavedGame()'s peg-phase/player's-turn branch set buttons directly but never called refreshPegButtons(), so neither the new nudge nor the pre-existing 90-second "It's your turn" modal ever armed after resuming a game — only after a turn that started fresh mid-session.
2.2.70 Fix peg-row's own overflow-clip boundary + stale zone-width constant
July 21, 2026
_fitPegRow() previously translated the whole active-series wrapper as a rigid unit to keep the trailing card clear of the board/row, which could drag the group's own leading boundary card too close to (or past) the previous completed group. Now caps the shift to preserve a minimum boundary gap, using the boundary card's own measured position rather than the wrapper's — and the boundary check now runs independently of whether a rightward (overflow) correction is needed at all, since the natural flex-end packing of a short trailing group could leave the boundary gap broken even when the row/board clearance was already fine.
Removed the "_preCount" FLIP settle-animation (_pegFlip/_lastSeriesKeys): it animated a newly-dimmed card from its old mid-pegging (wrapper-packed) position to its new bare-card position, but that old position was itself an artifact of flex-end packing in a mostly-empty wrapper, not a meaningful position worth animating from — this was the direct cause of a small but real "card slides into place" visual reported repeatedly.
Separately, _fitPegRow's own corrective transform was being applied with the CSS transition still active, so even a fully correct correction visibly slid into place over ~130ms. It now applies instantly (transition disabled for the whole measure-and-correct pass), eliminating that residual movement too.