v0.1.0 — Rebuild Liar's Dice as a native iOS (Swift/SwiftUI) game - #2
Open
m5136771 wants to merge 6 commits into
Open
v0.1.0 — Rebuild Liar's Dice as a native iOS (Swift/SwiftUI) game#2m5136771 wants to merge 6 commits into
m5136771 wants to merge 6 commits into
Conversation
Pivot the project from a Python teaching CLI to a native iOS app targeting the App Store. - Pure, UI-agnostic rules engine (LiarsDice/Engine): bids, raises, challenges, reveal/tally, dice loss, elimination, win/lose. Deterministic via injected RNG and covered by unit tests (swift test). - Bot AI with three difficulty levels, ported and tightened from the original Python bots. - SwiftUI app: main menu with settings, the game table (opponents, your cup, bidding controls), the reveal, and win/lose screens, in a retro "pirate tavern" style with SwiftUI-drawn dice. - Preserved the original's personality: pirate narration and the legendary Crazy Pete defeat sequence. - Buildable Xcode project (synchronized-folder format) plus an XcodeGen recovery spec, a Makefile, and a shared scheme. - Archived the original Python game under python-legacy/. - README rewritten for the iOS app; docs/ROADMAP.md lays out the path to the App Store (art, sound, App Store Connect, TestFlight, review, monetization). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
Runs the engine unit tests (swift test) and compiles the SwiftUI app with xcodebuild for the iOS Simulator on GitHub's macOS runners. This provides the real compile/test verification that isn't possible in the Linux dev environment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
GitHub-hosted macOS runners did not provision for this repo, so the macOS build/test jobs failed at startup. The game engine is Foundation-only Swift with no UI, so it builds and runs its XCTest suite on a Linux Swift toolchain — which provisions reliably and verifies the core game logic. The SwiftUI iOS app is built locally in Xcode (the actual target platform). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
Every CI job (macOS and Linux alike) failed at startup with no runner assigned (runner_id 0, no logs, ~2s), which indicates GitHub Actions hosted runners are disabled or limited for this account — not a code issue. Removing the workflow so the PR isn't perpetually red. Documented in docs/ROADMAP.md how to enable CI later; until then the engine is verified with `swift test` and the app via an Xcode build, both run locally. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
- App icon: pixel-art bone die with crossed bones, generated by tools/make_icon.py (pure stdlib PNG), wired into the asset catalog. Concept variants in docs/icon-concepts/. - Audio + haptics: 8-bit chiptune SFX synthesized by tools/make_sfx.py, played via AudioManager (AVAudioPlayer, ambient/mix session) and paired with UIKit haptics through a Feedback facade. Wired into GameViewModel narration; sound and haptics toggles added to the main menu. - docs/BACKLOG.md: prioritized feature backlog and user stories across launch and post-launch milestones. - docs/ART_DIRECTION.md: agreed pixel-art look and feel, palette, sprite specs, font/audio guidance, and an asset shopping list for sourcing or commissioning. - ROADMAP/README updated to reflect the above. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
- tools/make_icon.py: remove unused helpers (round_rect_outline, frame, the dropped skull sprite), an unused constant, and a stray variable. The five-pip render path is unchanged, so the generated PNGs are byte-identical. - Add CHANGELOG.md recording the completed v0.1.0 "Playable foundation" milestone; forward-looking work stays in docs/BACKLOG.md and docs/ROADMAP.md. - README: replace the roadmap blurb with a clear Done vs. In-progress status that links the changelog, backlog, roadmap, and art direction. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLyVMeLrDE5HWrv7gdWvAY
m5136771
marked this pull request as ready for review
July 8, 2026 16:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes out the v0.1.0 "Playable foundation" milestone: the project is rebuilt from a Python teaching CLI into a native iOS game (Swift / SwiftUI), complete and playable, with a clear line drawn between what's done (here) and what's still ahead (tracked in
docs/BACKLOG.md).What's done in this PR
LiarsDice/Engine) — Foundation-only, no UI: bids, raises, challenges, reveal/tally, dice loss, elimination, win/lose. Deterministic (injectable RNG) with a full XCTest suite.tools/make_icon.py, wired into the asset catalog.tools/make_sfx.py) viaAudioManager, paired with UIKit haptics through aFeedbackfacade; toggleable in the menu.LiarsDice.xcodeproj(+ XcodeGen recovery spec,Makefile, shared scheme), the original Python game archived underpython-legacy/, and docs:CHANGELOG.md,README,docs/ROADMAP.md,docs/BACKLOG.md,docs/ART_DIRECTION.md.Done vs. in progress
CHANGELOG.md([0.1.0]).docs/BACKLOG.md(prioritized) — launch-blockers are a first-run tutorial, VoiceOver accessibility, and App Store Connect setup, then art/animation polish.Verify before merge (on a Mac, Xcode 16+)
Before archiving: set your signing team and replace the placeholder bundle id
com.example.liarsdice.🤖 Generated with Claude Code