Pastime
puzzles and solitaire · installable, offline
A puzzle book with no ads, every level proved solvable.
Small solo puzzle and card games, printed as a puzzle book, without the ads of the apps that usually carry them. Every level is generated on the phone and proved solvable before it is shown, and the whole app installs and runs offline.
- TypeScript
- React
- PWA
- Web Workers
- Workbox
- Vitest
- Commits
- 38
- on main, read 2026-10-08
- Coverage
- 55%
- lines run by the engines’ and the app’s unit tests, read 2026-10-08
- House packages
- 11 of 11
- installed from npm
- First commit
- October 7, 2026
At a glance
- Four games in one app: Stars, Pipes, Klondike solitaire and Color Dots. No ads, no account, nothing to download after the first visit.
- Every level is generated on the phone and checked before it is shown: a logical solver proves each Stars and Pipes grid has one solution reachable without a guess, and a solitaire deal ships only once a solver has won it.
- Color Dots levels are built backwards from the solved board, so the way back is a guaranteed win, replayed once more before the level ships.
- A puzzle is named by its game, variant and number and seeded from that name: the daily puzzle is the same on every phone, with no server to agree on it.
- Generators run in a Web Worker, and one that gives up is retried from a seed derived from the first, so a retried daily is still everyone’s daily.
History
Straight from the git log, abridged: 9 of 38 commits, newest first.
- Print the install and update notices at the end of the hub, where they push nothing in view
- Play Color Dots: printed board, ball rides, loss on a blocked tap
- Color Dots engine: tree rules, solver, reverse generator with boss progression
- Solitaire engine: Klondike rules, solver, winnable-deal generator
- Play Pipes: logical solver, unique-solution generator, live water board
- Play Stars: logical solver, unique-solution generator, pencil board
- Print the app in the Cahier de jeux world
- Bootstrap the installable shell
- Project docs and build planFirst commit
House packages
11 of the 11 house packages, from npm, down to the compiler and linter settings.
- @adrienlcp/react-routerThe router provider every app takes.0.1.1
- @adrienlcp/i18nTranslates, and knows at compile time what each message asks for.0.3.0
- @adrienlcp/theme-preferenceKeeps the chosen theme from flashing, down to the phone’s toolbar.0.3.0
- @adrienlcp/browserCopies to the clipboard even over plain HTTP, where the Clipboard API does not exist.0.1.1
- @adrienlcp/reactThe context helpers every React app starts from.0.3.0
- @adrienlcp/react-ariaThe focus ring and class composition over react-aria-components.0.1.0
- @adrienlcp/stylesThe reset and shared styles every project starts from.0.5.0
- @adrienlcp/resultSays whether something worked, without throwing and without null.0.1.0
- @adrienlcp/safe-storageTakes the throw out of localStorage and returns a Result instead.0.1.0
- @adrienlcp/tsconfigThe compiler settings every project extends.0.1.0
- @adrienlcp/biome-configThe linter and formatter settings every project extends.0.1.0