尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Minesweeper, FreeCell, Solitaire, Spider and Hearts, rebuilt for the browser. C rules compiled to WebAssembly, offline, no installs, no accounts.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗A little time. Well wasted.
A homage to the games that came with Windows XP: Minesweeper, FreeCell, Solitaire, Spider Solitaire and Hearts, back in your browser. Nothing to install, no account, no ads. Works offline once you've visited.
Play at stillplay.shiptiffin.app
Hosted on ShipTiffin: all your apps on one server you own.
| MinesweeperBeginner, intermediate, expert. Your first click is always safe. | SolitaireDraw one or three, standard or Vegas scoring, and the bouncing cards when you win. | FreeCellEvery numbered deal, including the famous #11982. |
| Spider SolitaireOne, two or four suits. Finished runs lift away. | HeartsThree computer players who pass, duck and dump points like people do. Watch out for the queen. |
? on any game for its shortcuts.Requires Node 24 and pnpm 11.
pnpm install --frozen-lockfile
pnpm dev --port 4179
Open localhost:4179. The home page boots straight into a game; the switcher above it changes which one.
Everything is our own code. There is no framework and no bundler: plain HTML, CSS and ES modules.
cores/<game>.c, written without libc and compiled to a 4–15 KB WASM module. The same module runs in the browser and in Node, so a replay produces the same state in both.src/card-table.js handles drag and drop, tap and keyboard input, move and deal animations, and the win cascade for all four card games. Each game is a thin src/<game>-ui.js on top.src/games.js lists the collection. Routes, the home page, daily pages, metadata and the sitemap are generated from it. A game with a mount is playable; one without shows as coming soon.pnpm build prerenders every route, writes per-page metadata, JSON-LD and Open Graph images, compresses everything with Brotli and gzip, and generates the offline service worker.cores/ C rules and the compiled .wasm modules
src/ game UIs, card table, card art, audio engine, replay format
src/site/ router, pages, game toolbar, stats, dialogs
scripts/ dev server, build, xpc CLI, browser tests, Lighthouse
tests/ unit and property tests for every core
docs/ core notes and the replay format
To rebuild the cores you need a Clang with the wasm32 target and wasm-ld, for example wasi-sdk. Put it on your PATH or set CLANG=/path/to/clang:
pnpm build
pnpm preview --port 4179
pnpm build --no-cores reuses the committed WASM. SITE_URL sets the absolute origin used in metadata (default https://stillplay.shiptiffin.app).
The xpc CLI runs the same WASM cores in Node and prints JSON, which makes every game playable by scripts and agents.
pnpm xpc minesweeper new --level expert --seed 42 --json
pnpm xpc solitaire new --seed 7 --draw 3 --json
pnpm xpc solitaire hint --json
pnpm xpc spider new --suits 2 --seed 7
pnpm xpc hearts new --seed 3 && pnpm xpc hearts hint --json
pnpm xpc freecell deal 11982 --json
pnpm xpc replay export game.json
State is saved in .stillplay-state.json by default; pass --state FILE to keep separate games. Replays are versioned JSON with the game's settings and its ordered inputs. See docs/replay-format.md.
Browser tests, Lighthouse and the build's preview images use Playwright's headless Chromium. Install it once:
pnpm exec playwright install --only-shell chromium
pnpm test # 60 unit and property tests
pnpm test:browser # 41 browser scenarios in headless Chromium
pnpm lighthouse # Lighthouse on the built site
The unit tests play thousands of seeded games per core: they check that cards are conserved and every move is legal, that replays round-trip, and that scoring is right. They also measure the Hearts players (96.7% wins against random play, about 25% each at a four-way table) and how often a simple solver wins one-suit Spider. The browser scenarios drive the real UI with mouse, keyboard and touch, from deal to win cascade, at desktop and 320 px sizes, and compare each game window against approved screenshots.
public/fonts/).public/audio/CREDITS.md.MIT. Stillplay is an independent fan project, not affiliated with or endorsed by Microsoft. "Windows XP" is used only to name the games it pays tribute to.