From d2d1f5c988450d366b028dba624bee37f610fba9 Mon Sep 17 00:00:00 2001 From: Austin Smith Date: Sun, 9 Aug 2026 02:19:07 -0700 Subject: [PATCH 1/2] rename redeal action to restart --- ComputerSolitaire/GameMenuCommands.swift | 2 +- ComputerSolitaire/Views/Shared/ContentView.swift | 6 +++--- ComputerSolitaire/Views/StatisticsView.swift | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ComputerSolitaire/GameMenuCommands.swift b/ComputerSolitaire/GameMenuCommands.swift index 959d50f..c6ca83a 100644 --- a/ComputerSolitaire/GameMenuCommands.swift +++ b/ComputerSolitaire/GameMenuCommands.swift @@ -78,7 +78,7 @@ struct GameMenuCommands: Commands { Button { actions?.redeal() } label: { - Label("Redeal", systemImage: "arrow.clockwise") + Label("Restart", systemImage: "arrow.clockwise") } .disabled(!(state?.canRedeal ?? false)) diff --git a/ComputerSolitaire/Views/Shared/ContentView.swift b/ComputerSolitaire/Views/Shared/ContentView.swift index 0aec298..b36e599 100644 --- a/ComputerSolitaire/Views/Shared/ContentView.swift +++ b/ComputerSolitaire/Views/Shared/ContentView.swift @@ -309,7 +309,7 @@ struct ContentView: View { Button("New Game", systemImage: "plus") { startNewGameFromUI() } - Button("Redeal", systemImage: "arrow.clockwise") { + Button("Restart", systemImage: "arrow.clockwise") { redealFromUI() } .disabled(!viewModel.canRedeal) @@ -412,7 +412,7 @@ struct ContentView: View { Button("New Game", systemImage: "plus") { startNewGameFromUI() } - Button("Redeal", systemImage: "arrow.clockwise") { + Button("Restart", systemImage: "arrow.clockwise") { redealFromUI() } .disabled(!viewModel.canRedeal) @@ -420,7 +420,7 @@ struct ContentView: View { Label("New Game", systemImage: "plus") } .labelStyle(.iconOnly) - .help("New Game or Redeal") + .help("New Game or Restart") } ToolbarSpacer(.fixed) ToolbarItemGroup(placement: .primaryAction) { diff --git a/ComputerSolitaire/Views/StatisticsView.swift b/ComputerSolitaire/Views/StatisticsView.swift index 8f02412..13f6ede 100644 --- a/ComputerSolitaire/Views/StatisticsView.swift +++ b/ComputerSolitaire/Views/StatisticsView.swift @@ -444,7 +444,7 @@ private struct GameStatisticsDetailView: View { .buttonStyle(.plain) .accessibilityLabel("Clean Wins info") .popover(isPresented: $isShowingCleanWinsInfo, arrowEdge: .top) { - Text("Wins completed without the use of hints, undos, or redeals.") + Text("Wins completed without the use of hints, undos, or restarts.") .font(.callout) .fixedSize(horizontal: false, vertical: true) .frame(maxWidth: 280, alignment: .leading) From 0c2ac24201ca591c87b97731bad3966dca863ce1 Mon Sep 17 00:00:00 2001 From: Austin Smith Date: Sun, 9 Aug 2026 02:24:54 -0700 Subject: [PATCH 2/2] update rule references to restart --- docs/rules/canfield.md | 2 +- docs/rules/fortythieves.md | 2 +- docs/rules/golf.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/rules/canfield.md b/docs/rules/canfield.md index d135e0d..ab8c9b2 100644 --- a/docs/rules/canfield.md +++ b/docs/rules/canfield.md @@ -56,7 +56,7 @@ The classic sources are unusually consistent for a patience game. The choices he - **Wrapping in both directions.** Foundations turn King-to-Ace and tableau builds turn Ace-to-King. Both are definitional: with a random base rank, the cards just below it would otherwise be nearly unplayable. - **Compulsory reserve fill.** A space takes the reserve's top card at once, not at the player's option. Choice enters only after the reserve is out, when the top waste card may fill a space (and nothing else may — not even another tableau pile). - **Locked foundations.** A banked card never returns to play. No classic source permits "worrying back", though some apps offer it as a house option. -- **Draw three with unlimited redeals.** This is universal across the classic sources. Deal-one variants exist (Rainbow) but are a different, far easier game. The in-app **Redeal** command replays the same deal from the start — a fresh attempt at the layout, not the stock recycle, which is unlimited and free. +- **Draw three with unlimited redeals.** This is universal across the classic sources. Deal-one variants exist (Rainbow) but are a different, far easier game. The in-app **Restart** command returns the same deal to its starting layout — a fresh attempt, not a stock recycle, which is unlimited and free. ## Sources - https://en.wikipedia.org/wiki/Canfield_(solitaire) diff --git a/docs/rules/fortythieves.md b/docs/rules/fortythieves.md index d2bb84c..708f15c 100644 --- a/docs/rules/fortythieves.md +++ b/docs/rules/fortythieves.md @@ -48,7 +48,7 @@ Where the linked sources offer relaxations, this implementation uses: - **Build down by suit**, not by alternating colors. This is the strict classic rule — color building is a different, much easier game. - **Any card fills an empty column** (universal across sources), and columns have no depth limit. - **Locked foundations.** A banked card never returns to play. Klondike-style rollbacks would soften the game's defining irreversibility. -- **Single pass** through the stock with no recycles (universal across sources — the pass limit is the game). The in-app **Redeal** command replays the same deal from the start — a fresh attempt at the layout, not a recycle of the stock. +- **Single pass** through the stock with no recycles (universal across sources — the pass limit is the game). The in-app **Restart** command returns the same deal to its starting layout — a fresh attempt, not a recycle of the stock. ## Sources - https://en.wikipedia.org/wiki/Napoleon_at_St_Helena diff --git a/docs/rules/golf.md b/docs/rules/golf.md index 79b0d8b..b332264 100644 --- a/docs/rules/golf.md +++ b/docs/rules/golf.md @@ -34,7 +34,7 @@ Rank order runs Ace, 2 … 10, Jack, Queen, King, and does **not** wrap: an Ace - Clearing the board subtracts one point per stock card left, so scores below zero are the best results. - There is no time bonus — strokes are the whole score. - A match is nine consecutive holes. The totals sum, and par for the match is 45. -- **New Game** abandons the match and starts a fresh one at hole 1. **Redeal** replays the current hole. Switching games keeps the match — every game's session is stashed, and Golf resumes where it left off. +- **New Game** abandons the match and starts a fresh one at hole 1. **Restart** returns the current hole to its starting layout. Switching games keeps the match — every game's session is stashed, and Golf resumes where it left off. ## Winning You win a hole the moment the last column card is played, regardless of the stock and waste. Most holes are not winnable under strict rules (that is the classic game), so the match score is the real contest: clear what the deal allows and beat par across nine holes.