{
  "markdown": "# Moddable.Games\n\n**Creating games you already own.**\n\nA multi-page marketing site and tools platform for an open-source board game modding workshop. Ten mods. Three original games. Two open-source engines. One Discord.\n\n---\n\n### Stack\n\n```\nHTML + Vanilla JS + Zero dependencies + Zero build step\n```\n\nModular JS architecture: one loader (`js/mg-loader.js`) loads 12 shared modules + page-specific scripts. Zero inline scripts or styles.\n\n---\n\n### Routes\n\n| URL | Page |\n|-----|------|\n| `/` | Home |\n| `/mods/` | Filterable mod library |\n| `/mods/[slug]/` | 10 mod detail pages (incl. Dungeon Chess) |\n| `/games/` | Games hub |\n| `/games/nukes/` | Nukes |\n| `/games/mongo/` | Mongo |\n| `/games/endless-skies/` | Endless Skies |\n| `/engines/` | Engines hub |\n| `/engines/moddable-chess/` | Moddable Chess engine |\n| `/engines/moddable-hexmaps/` | Moddable Hexmaps engine |\n| `/developers/` | Developers / Tools API |\n| `/news/` | News index |\n| `/news/[slug]/` | 13 article pages |\n| `/tools/` | Tools hub (dice, names, scores) |\n| `/tools/ti/` | Twilight Imperium tools |\n| `/tools/talisman/` | Talisman tools |\n| `/tools/nukes/` | Nukes tools |\n| `/submit/` | Mod submission form |\n| `/about/` | About |\n| `/about/roadmap/` | 18-month roadmap |\n| `/team/` | Team |\n| `/community/` | Community / Discord |\n\n---\n\n### Run locally\n\n```bash\npython3 -m http.server 8000\n```\n\nOpen `http://localhost:8000/`. Clean URLs, no `.html` extensions.\n\n---\n\n### Deploy to GitHub Pages\n\n1. Push to GitHub\n2. Settings → Pages → Deploy from `main` branch, root folder\n3. Update the `<meta name=\"mg-base\">` tag across pages to match your deploy path:\n\n| Scenario | `mg-base` value |\n|----------|-----------------|\n| Custom domain (root) | _(remove the tag)_ |\n| `username.github.io` repo | _(remove the tag)_ |\n| Project repo (`/repo-name/`) | `/repo-name` |\n\n---\n\n### Design system\n\n| | |\n|---|---|\n| **Display** | Inter Tight 500–700 |\n| **Body** | Inter 400–700 |\n| **Mono** | JetBrains Mono 400–600 |\n| **Pixel** | Press Start 2P (eyebrows only) |\n\n```\n#d11a1a  red         Total conversion / Nukes\n#3a9928  green       Rebalance / Mongo / Endless Skies\n#0c4f8d  blue        Reskin / TI tools\n#0a0d2a  cosmicDeep  Hero backgrounds\n#f5f4ef  canvasLight Warm off-white sections (not pure white)\n#14161c  ink         Primary text on light\n```\n\n**Rules:** No drop shadows. Pill buttons only. One RGB primary per surface. Hex grid SVG overlay on all dark heroes.\n\n---\n\n### JS Architecture\n\n```\njs/\n├── mg-loader.js            ← entry point, loads all modules\n├── mg-core.js              ← tokens, el(), url(), MG.data (fetch layer)\n├── mg-buttons.js           ← btn(), linkBtn()\n├── mg-cards.js             ← modCard(), pageHero()\n├── mg-navbar.js            ← navbar()\n├── mg-footer.js            ← footer()\n├── mg-search.js            ← global Cmd+K search\n├── mg-animations.js        ← scroll reveal + TOC spy\n├── mg-mods-content.js      ← mod page content (rules, components, etc.)\n├── mg-mod-page.js          ← data-driven mod detail renderer\n├── mg-news-article-page.js ← shared news article renderer\n└── mg-*-page.js            ← page-specific scripts (home, tools, etc.)\n\ndata/\n├── mods.json               ← mod library (10 entries)\n├── games.json              ← games (3 entries)\n├── engines.json            ← engine listings (2 entries)\n├── mcp-tools.json          ← MCP tool registry (50 tools, 7 namespaces)\n├── news.json               ← news posts (13 entries)\n└── team.json               ← team members (4 entries)\n```\n\nPages load `mg-loader.js` (shared modules) + their own page script. Data is fetched via `MG.data.get('mods')` → Promise, or `MG.data.get('mod', 'slug')` for single items. Legacy `MG.data.load(['mods','news']).then(store => {...})` still works.\n\n---\n\n### Changelog\n\n#### 2026-07-22\n- Added Maze Rats (94 procedural tables) to oracle pipeline and oracles page\n- Encounter Builder now supports D&D 5e and Pathfinder 1e via system selector\n- Discord /encounter command uses autocomplete for future-proof system selection\n- Rebuilt rules-index.json (8,426 entries across 41 games, added table-type indexing)\n- MCP Worker bumped to v1.7.0\n\n#### 2026-07-20\n- Added GA4 analytics tracking to all untracked interactive modules\n- API playground: tool select, category expand, tool run events\n- Hex embed: layout, size, player, style changes and map generation\n- TI Dashboard: game start, strategy picks, pass, Mecatol claims, agenda draw/resolve, game over\n- Registered `tool_name` custom dimension in GA4 for per-MCP-tool breakdowns\n- D&D Encounter Builder, Discord oracle commands, and /test suite (from prior session)\n- Closed issues #131, #132, #135\n\n#### 2026-06-10\n- Deployed MCP tools server at tools.moddable.games (42 AI-callable tools across 6 namespaces)\n- Serves MCP protocol (SSE), REST API, llms.txt, OpenAPI 3.1, .well-known/mcp.json discovery\n- New /developers/ section: landing page + /api/ sub-page + /examples/ sub-page\n- Purple section accent (#8b5cf6), SVG hero feature, unique OG images\n- Homepage \"For Developers\" band between Featured Mod and Nukes sections\n- Nav reordered: Mods, Engines, Games, Tools, Developers, About, News (SVG/cube alternation)\n- Added dice_roll and ti4_random_factions as site-native tools\n- Puzzle generation uses pre-computed pool (Cloudflare Workers free tier)\n- AI Integration sections added to chess.moddable.games and hex.moddable.games\n- Favicon and full OG/Twitter meta tags on tools.moddable.games Worker\n\n#### 2026-06-09\n- TI4 Objective Tracker: full game-session mode with player scoring, secret objectives, bonus VP tracking\n- Supports all expansions (base, Prophecy of Kings, Discordant Stars, Thunder's Edge)\n- Setup screen with player count, VP target, expansion toggles, and colour assignment\n- Scoreboard with progress bars, tabbed interface (public/secrets/bonus), winner detection\n\n#### 2026-06-05\n- Unified hero system across all 17 pages with new shared sectionHero() component\n- Two-tier design: full cosmic heroes (tier-1 indexes) and reduced sub-page heroes (tier-2)\n- Colour system: RGB accents for consistent-sub-page sections, CMYK for divergent ones\n- Added parallax scroll with dramatic text fade-out, hex grid zoom, and gradient darkening\n- Added animated 3D feature elements: spinning cubes (Tools, Engines, About) and animated SVGs (Mods, Games, News)\n- Reordered nav to alternate cube/SVG features: Mods, Engines, Games, Tools, News, About\n- Fixed Endless Skies accent (green→blue to match detail page)\n- Fixed mods page hash-change filtering from navbar dropdown\n- Fixed tools page auto-scrolling to search on load\n- Normalised all hero copy: tier-1 gets 2-line titles with single highlighted keyword + 2-line balanced ledes\n- Created GitHub issue #81 for static site build system migration\n- New assets: hex-grid-purple.svg, hex-grid-cyan.svg, hex-grid-magenta.svg, hex-grid-amber.svg\n\n#### 2026-06-04\n- Rewrote Planet Mongo game page from real rulebook (v0.9.0): 4X hex territory control, 8 factions, hidden orders, central market\n- Rewrote Endless Skies game page from real rulebook (v0.2.0): 4X worker placement, 8 factions, ship rooms, wormhole network\n- Both pages now honestly marked \"In development\" with no fabricated content\n- Removed fake community mods from both pages (no real mods exist yet)\n- Deleted dead per-game JS files and custom CSS (pages use shared data-driven renderer)\n- Updated meta tags and OG descriptions for both games\n- Synced all mod metadata from moddable-rules: versions, taglines, stats, development status\n- Replaced Talisman Worlds logo (new circular emblem from moddable-rules, properly on 410x410 canvas)\n- Fixed Talisman Worlds hero title (was still \"Talisman: Hexed\")\n- Replaced fabricated Econopoly content with real rulebook mechanics (resources, VP, choose-your-action)\n- Replaced fabricated Hyper Imperium content with real mechanics (3D exploration, promissory trades, mercenary builder)\n- Rewrote games-sync.json from actual rulebook front matter (all entries were stale)\n- Added RGB cube placeholder logo for all 6 community mods (#61 partial)\n- Closed #25 (mod download links complete on website side), #78, #79\n\n#### 2026-06-02\n- Synced MCE to v0.7.1 / 70 variants (from v0.6.8 / 64): stats, features, consumer APIs, developer guides\n- Moved Dungeon Chess from /games/ to /mods/ — it's a total conversion of chess, not an original game\n- Added news article: \"Building Games on Chess\" (MCE v0.7.1 consumer APIs + DC v1.2.0 renderer migration)\n- Rewrote Nukes game page from actual moddable-rules rulebook (removed all hallucinated content)\n- Added game logos to games index cards (410x410 normalized PNGs)\n- Updated all counts site-wide: 10 mods, 3 games, 13 news articles\n- Regenerated OG images for games page and new article\n- Added `.game-card__logo` CSS for logo thumbnails in game/mod cards\n- Fixed body text centering in games engines callout section\n- Created issues #78 (Mongo sync) and #79 (Endless Skies sync) for future rulebook rewrites\n- Bumped to v1.0.60\n\n#### 2026-05-28\n- Synced chess engine stats from moddable-chess v0.6.8: variant count 39/54→64, engine version, board types\n- Updated all stale chess references across 9 files (engines page, tools page, news cards, data files)\n- Added Colony as 4th hexmaps-powered game across engines page, stats, and consumer listings (#71)\n- TI4 tools: added Discordant Stars + Thunder's Edge expansions (36 factions, 26 objectives, 20 agendas) (#68)\n- Galaxy map generator: replaced player count dropdown with 7 official TI4 layout variants (3p–8p + Hyper Imperium)\n- Hexmap embed: added style selector (Artistic/Classic/Kenney/Realistic per game) with consistent URL params\n- Hexmap embed: postMessage bridge for \"New map\" regeneration without iframe reload\n- New Dice Lab at `/tools/dice/` — dice roller + battle simulators for Risk, TI4, Axis & Allies, X-Wing, Blood Bowl, Memoir '44, Custom (#67)\n- Merged dice roller from tools index into Dice Lab as first tab\n- Removed strike planner widget from Nukes tools (redundant with full hexmaps embed)\n- Removed Hex Map Generator card from tools index (belongs under Engines, not Tools)\n- Updated \"Games supported\" count 3→4 on all hexmaps engine bands\n- Footer column titles now clickable links to their respective index pages\n- Renamed \"Mod-specific tools\" → \"Per-game tools\" with consistent spacing and anchors\n- Tab selection persists in URL hash (`/tools/dice/#risk`) for sharing\n- Mod detail page TOC scroll-spy fixed (calls initTocSpy after dynamic render)\n- Mod buttons wired up with real URLs: rules.moddable.games, BGG, Wikipedia, itch.io (#25 Part 1)\n- Removed Nuke Catan mod (invented, no supporting material) — homepage section now links to Nukes game + nuking-catan article\n- Related mods auto-derived from category/baseGame (no more hardcoded arrays)\n- Fixed mod/game counts: 9 mods, 4 games across all references\n\n#### 2026-05-27\n- New tools: Resource Dashboard, Bag Tracker, Role Distributor (all fully configurable with game presets)\n- Removed: Map Grid Generator (redundant), Voting Booth (needs server), Combat Odds (rebuilt as Dice Lab #67)\n- Fixed invisible buttons on tools page (wrong variants for light backgrounds)\n- Tools index: added Hex Map Generator card, updated mod-specific card descriptions\n- Hexmaps tools card links to engine page (not external generator)\n- Nukes game page: added \"Generate Map\" hero CTA\n- Embed moddable-hexmaps engine in tools pages: `/tools/nukes/`, `/tools/talisman/`, `/tools/ti/` (#62)\n- Shared embed module (`js/mg-hexmap-embed.js`) + CSS (`css/tools-hexmaps.css`)\n- \"Powered by Moddable Hexmaps\" engine band on all three pages\n- Seed sharing via URL params works through iframe\n- New `/engines/` section: top-level nav item, index page, Moddable Chess + Moddable Hexmaps pages\n- Reclassified Chess and Hexmaps from \"Games\" to \"Engines\" — they're SDKs, not games\n- Nav updated: `Mods | Games | Engines | Tools | News | About`\n- Moved `/games/moddable-chess/` → `/engines/moddable-chess/` (old URL redirects)\n- Created `/engines/moddable-hexmaps/` showcase page (green accent, no embed yet — pending hexmaps#7)\n- Footer, search, tools chess page, news.json all updated to new paths\n- Games index: removed chess, added \"Powered by our engines\" callout\n- Created `data/engines.json` as data source for engine listings\n- Cross-project issues: moddable-chess#47, moddable-hexmaps#17\n- Fix homepage crash: \"Fog of War Chess\" removed from mods.json but still referenced in homepage featured list\n- Fix hero parallax spilling past section boundary — wrap in overflow:hidden container\n- Fix home-tabs nav hidden under section above — remove overflow:hidden that clipped negative margin\n- Bump version 1.0.29 → 1.0.30 (was missing from previous commit)\n- News articles: author sidebar card with breakout team photo, name, role, profile link\n- News articles: real share links (X, Facebook, LinkedIn, copy URL)\n- News articles: all 12 posts now have callout cards with real links (no more dead # hrefs)\n- News articles: hybrid auto-derive callout from tags when no manual modCard specified\n- News articles: improved right rail spacing (topics, mod card)\n- Added `teamSlug` field to all news posts — author rendered from team.json, not hardcoded\n- Per-team-member OG images with breakout photo + shadow slit effect\n- Replaced 16 template OG images: 10 mod pages (hex-grid cards) + 6 tool pages (geometric icons)\n- OG scripts data-driven: `build/gen-mod-og.py` (reads mods.json), `build/gen-tools-og.py`\n- Mod logos: added `logo` field to mods.json, logos display on cards, detail heroes, and OG images\n- Copied Talisman: Hexed + Econopoly logos from moddable-rules; Hyper Imperium already had one\n- Fix mod detail page hero never rendering (DOMContentLoaded race condition)\n- Component list styling: accent-coloured outlined bullets, better spacing\n- Generated ALL remaining OG images — zero template placeholders left (closes #53)\n- 4 build scripts for future regeneration: `gen-team-og.py`, `gen-mod-og.py`, `gen-tools-og.py`, `gen-remaining-og.py`\n- Created #61 (missing mod/tool logos) and moddable-chess#44 (board themes)\n\n#### 2026-05-26\n- Update chess variant count 20→39 across all pages (closes #55, #54)\n- Remove dead `mg-game-dungeon-chess-page.js` — orphaned file not loaded anywhere (closes #52)\n- Fix inline `style=\"display:none\"` on chess tools page → CSS class with classList toggle\n- Refactor navbar, footer, and cards from inline `style:{}` objects to dedicated CSS files\n- New files: `css/navbar.css`, `css/footer.css`, `css/cards.css` (63 rules total)\n- Loader auto-injects component CSS via `document.write` — no per-page HTML changes needed\n- Only data-driven dynamic values (accent colors, image URLs) remain as inline style strings\n\n#### 2026-05-24\n- Added per-page OG/Twitter meta tags via `build/stamp-meta.py` (closes #35)\n- Fleshed out 4 stub pages: /press (stat cards, swatches, assets), /subscribe (form + success state), /tools/decks (deck builder), /tools/chess (variant picker)\n- Added all new pages to navbar dropdowns, footer links, and tools index\n- Created new `Moddable-Games/moddable-chess` repo — shared chess engine with 14 variants\n- Renamed existing chess repo to `Moddable-Games/dungeon-chess`\n- Added favicon set (SVG + PNG), apple-touch-icon, PWA manifest, theme-color (closes #8)\n- Added CNAME for web.moddable.games, production OG URLs, GitHub Pages ready (closes #9)\n- 47 branded OG social images generated for all pages\n- Auto-detect local dev path from URL — no manual `mg-base` meta tag needed\n- Responsive design audit: mobile breakpoints across 11 CSS files (closes #6)\n- ARIA landmarks, skip-to-content link, aria-current=page on nav (closes #24)\n- Fixed placeholder # links — community channels now non-link divs (closes #26)\n- TI4 agenda voter expanded: 6 → 46 cards, full base game deck (closes #3)\n- Accessibility: stone colour darkened for WCAG AA contrast (closes #11)\n- Performance: lazy-load below-fold images (closes #14)\n- Tools interactivity audit: all widgets verified functional (closes #27)\n- Repo made public, GitHub Pages live at web.moddable.games\n- Team member detail pages with authored posts, long bios, teammate links (closes #32)\n\n#### 2026-05-25\n- Rebuild Nukes tools (#49): strike planner, combat calculator, hostage tracker, unit reference — based on real rulebook\n- Chess tools: 20 playable variants (added No Castling, Torpedo, Horde, Extinction, Breakthrough, Maharaja)\n- Chess game page: stats reflect v0.4.2 engine, CTAs link to chess.moddable.games, 6-category variant grid\n- Fix nav dropdowns clipped by overflow:hidden on header\n- Featured card style (dark bg) for Dungeon Chess on Moddable Chess page\n- Hero cube centred on mobile\n- Fix mobile nav: drawer hidden on load, prevent horizontal overflow\n- Fix homepage hero bg repeating on mobile\n- Fix team page pop-out overlap on mobile (increased row-gap)\n- Version system: `bump.sh` single-source from `version.txt`, footer displays version\n- Cache-busting `?v=` on all CSS/JS loads across 52 HTML files\n- Removed fan-made disclaimer from footer (to licensing page later)\n- Chess embed: live playable board via iframe from chess.moddable.games\n- Chess engine params: `theme=light`, `boardonly=1`, `bg=`, `accent=`, `radius=`\n- Match setup: mode selector (vs AI / Pass & Play), player names passed to engine\n- Dynamic iframe aspect ratio from variant board dimensions\n- Chess engine promo: full-width dark band section with USPs\n- Press kit: styled bullet lists as bordered accent cards\n- Auto-detect local moddable-chess path for iframe testing\n\n#### 2026-05-23\n- Refactored `MG.data` to Promise-based API: `get(name)` → Promise, `get(type, slug)` → single item lookup\n- Deduplicates in-flight fetches (no double-requests for same resource)\n- Removed `ready()` method (unused); `load()` kept for backward compat\n- Fixed responsive team page: breakout images scale down on mobile (≤600px)\n- Search index loads news asynchronously on first open (no longer relies on sync cache)\n- Templated all 13 mod pages — identical HTML shells, hero rendered from data\n- Extracted all 12 news article bodies to `data/articles/{slug}.html` partials\n- Article metadata (author, lede, TOC, modCard) moved into `data/news.json`\n- News page shells are now identical templates — full page rendered by JS\n- Created issue #35 for per-page Open Graph / Twitter meta tags\n\n#### 2026-05-22\n- Extracted all data from JS modules to JSON files (`data/mods.json`, `games.json`, `news.json`, `team.json`)\n- Added `MG.data` fetch layer in `mg-core.js` — async `load()/get()` pattern\n- Removed 4 data JS modules (`mg-mods-data.js`, `mg-games-data.js`, `mg-news-data.js`, `mg-team-data.js`)\n- Updated all consumer scripts to use `MG.data.load().then()` pattern\n- Added `text-wrap: pretty` to global CSS resets for orphan prevention\n- Redesigned tools page: filterable card grid with category bar (Game Night, Planning, Creative, Mod-Specific)\n- Converted 3 dark-themed tool widgets (Dice, Timer, Seating) to unified light card style\n- Added 3D spinning CSS dice to tools hero section\n- Redesigned team page with photo avatars breaking out of cards (4-column grid)\n- Removed font-test.html\n\n#### 2026-05-21\n- Extracted ALL inline scripts to external JS files (zero remain across 45 pages)\n- Created data-driven mod page renderer (`mg-mod-page.js` + `mg-mods-content.js`)\n- Created shared news article renderer (`mg-news-article-page.js` with `data-toc`)\n- Extracted team data to `mg-team-data.js`\n- Added TOC scroll-spy with accent colour highlighting\n- Added global rule: no inline `<script>` blocks (matches no inline styles)\n- Net: -5220 lines of inline JS removed, +3537 lines in proper external modules\n\n#### 2026-05-20\n- Extracted mods and games data into shared JS modules (`mg-mods-data.js`, `mg-games-data.js`)\n- Extracted all inline styles to external CSS files; complete JS module split\n- Split `_mg.js` into semantic modules (core, components, animations)\n- Added global search (Cmd+K) and made mod cards fully clickable\n- Scroll-reveal animation system, hero entrance choreography, button micro-interactions\n- Game page heroes: two-column layout with floating logos\n- Homepage: nuked-family illustration, Hyper Imperium logo, glowing section dividers\n- All 12 news articles created from WordPress, news index linked correctly\n- Nav dropdowns upgraded with animation and blue accent states\n- Removed all inline style attributes; semantic BEM class system throughout\n- Created 12 mod detail pages, games hub, Moddable Chess, Dungeon Chess, roadmap\n- Fixed double-url bug, removed redundant nav items, cleaned unused assets\n\n#### 2026-05-19\n- Restructured for clean URLs and GitHub Pages deployment\n- Initial site commit\n\n---\n\n### License\n\nMIT\n",
  "bytes": 20747,
  "sha": "2095e339692254adc5a17619422ce804a6b809ebc4ed097b65eec59a4b75873e",
  "repo_slug": "moddable-games/moddable-website",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_games_moddable_tools_moddable_games_tool_35dac8e6/readme"
}