Click Foundry is a mobile-first block-tech idle prototype. It starts with survival-style block breaking, inventory crafting, optional guide quests, steam machines, and a first low-voltage milestone.
The game uses original names and presentation while following the spirit of long industrial progression: small inputs, many intermediates, satisfying gates, and deliberately slow early automation.
Development workflow and agent guidance live in DEVELOPMENT_PLAYBOOK.md.
npm run dev
npm run dev:host
npm run test
npm run build
npm run lint
npm run check
npm run check:changed
npm run check:fast
npm run dev:bump -- --note "Short player-facing summary"
npm run icons:check
npm run icons:extract
npm run icons:lv
npm run release:home-dev
npm run release:remote-dev
npm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"
npm run release:notes -- --revision 0.2.0 --title "Patch title" --note "Patch note"
npm run test:engine
npm run test:content
npm run test:savenpm run dev starts the normal hot Vite server. npm run dev:host exposes that hot server on the local network for phone testing. npm run dev:bump -- --note "Short player-facing summary" increments the dev-only home-screen revision and records the timestamp and remote-dev release note in src/dev-manifest.json; it does not change the public release revision.
npm run release:home-dev builds the app as a home-dev production preview and hosts it locally on port 4173. It prints both localhost and LAN URLs, and the local save API is available in this preview server.
npm run check:changed prints recommended targeted checks for the current changed files. npm run check:fast runs lint and the current game test suite without a production build. npm run test:engine, npm run test:content, and npm run test:save are narrow Vitest entrypoints for agent iteration; npm run check remains the final gate.
npm run icons:check validates committed PNG assets against content IDs. npm run icons:extract and npm run icons:lv run the existing PowerShell extraction/recolor pipelines after icon candidates are approved.
npm run release:remote-dev is the remote test lane. Run it from a clean committed worktree after bumping with a short note; it validates the dev metadata, runs lint, tests, and build, then pushes the current commit to origin/remote-dev and watches the Pages workflow when the GitHub CLI is available. GitHub Pages publishes that build under the repository Pages site at /remote-dev/ without changing the public release.
npm run release:notes generates the in-game release manifest, branded HTML release notes, and a PDF/public PDF copy when Chrome or Edge is available.
npm run release:full is the guarded public GitHub Pages release path. Run it from a clean main branch after committing game changes. Pass a revision, title, and one or more patch notes; it generates release note artifacts, runs lint/tests/build, commits the release manifest and release note files, pushes main, then watches the Pages workflow when the GitHub CLI is available.
The older npm run deploy:test and npm run deploy:release commands remain as aliases for the home-dev and full-release lanes.
| Lane | Command | Where it is playable | Home screen channel |
|---|---|---|---|
| Home test dev | npm run release:home-dev | Local PC/LAN URL printed by the command | Home dev |
| Remote test dev | npm run release:remote-dev | GitHub Pages /remote-dev/ path | Remote dev |
| Full release | npm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note" | Main GitHub Pages URL | Full release |
Patch notes and public revision numbers are shown on the home screen through src/release-manifest.json. Home-dev and remote-dev use src/dev-manifest.json for a separate dev.x revision and short update note. Remote-dev also stamps the exact Pages publish time into the deployed manifest so testers can confirm when a build landed.
The app is wired for Capacitor so the same React build can run as a local iOS app.
npm run build
npm run cap:sync
npm run ios:opennpm run ios:open needs a Mac with Xcode. Browser builds keep using localStorage; the iOS shell uses Capacitor Preferences for local on-device saves.
For the GitHub Pages version on iPhone, open the site in Safari, use Share, then Add to Home Screen. The web app installs as a standalone shortcut and uses the phone browser's local storage for saves.
- Tree breaking with per-block hit progress, log drops, planks, sticks, and a wooden axe speed upgrade.
- Unlimited inventory stacks shown as item counts.
- Minecraft-like inventory crafting: a 2x2 starter grid, a craftable crafting table, and an unlocked 3x3 table grid.
- Recipe book search that can load recipes when materials exist or show what is missing.
- Quest chapters that guide and reward progression without locking crafting.
- Local save/load through browser storage or native iOS storage.
- Slow late-LV automation teaser after the first dynamo.
No offline earnings are included yet; saved progress resumes exactly where it was.