Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Click Foundry

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.

Commands

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:save

npm 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.

Release Lanes

LaneCommandWhere it is playableHome screen channel
Home test devnpm run release:home-devLocal PC/LAN URL printed by the commandHome dev
Remote test devnpm run release:remote-devGitHub Pages /remote-dev/ pathRemote dev
Full releasenpm run release:full -- --revision 0.2.0 --title "Patch title" --note "Patch note"Main GitHub Pages URLFull 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.

iOS App

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:open

npm 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.

Prototype Scope

  • 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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages