CodeMon TCG
CodeMon TCG turns productive coding activity into a lightweight collectible card game inside VS Code. Earn XP from real editing patterns, buy booster packs, and build your binder over time.
Features
- XP wallet in the status bar
- Shop flow for generation-based booster packs
- Sidebar binder webview for card collection and packs
- Centered, responsive pack-opening animation that scales with sidebar size (with max card/pack size caps)
- Reveal card positioning now keeps the card visually centered and prevents more than ~50% from moving off-screen at the top
- Achievement tracking with quiet in-editor feedback
- Anti-cheat heuristics for suspicious error-fix behavior
Commands
CodeMon: Open Shop (codemon.openShop)
CodeMon: Add Bonus Pack (codemon.addPack)
CodeMon: Show Tracker Stats (codemon.showStats)
CodeMon: Reset Tracker Stats (codemon.resetStats)
CodeMon: Clear Image Cache (codemon.clearImageCache)
CodeMon: Show Account Menu (codemon.showAccountMenu) — manage cross-device sync account
CodeMon: Sync Now (codemon.syncNow) — force an immediate cloud sync
Cross-Device Sync & Trading
CodeMon syncs your XP, cards, packs, achievements, and discoveries across all your devices using Supabase. You can also trade cards with other CodeMon users!
Setup (one-time)
- Sign in: Click the CodeMon status bar item (left side) →
Show Account Menu → create an account or sign in with email/password or magic link.
That's it! No Supabase configuration needed — this extension uses a shared project so you can trade with other users.
How it works
- Your data syncs automatically every 60 seconds when you're signed in.
- After any state change (XP earned, card pulled, etc.) a debounced sync fires after 5 seconds.
- You can force an immediate sync with
CodeMon: Sync Now.
- The merge strategy is smart: counters take the max value (prevents regression), arrays pick the longer list, achievements are unioned, and discovered Pokemon info is merged field-by-field.
Data synced
| Category |
Details |
| XP |
Balance, lifetime earnings, sub-totals by type |
| Cards |
All owned cards with duplicates |
| Packs |
Unopened booster packs |
| Achievements |
All unlocked achievement IDs (unioned) |
| Discoveries |
Pokemon info discovered (name, types, stats, abilities, description) |
| Counters |
Bugs fixed, packs opened, binder opens, etc. |
Trading
- Receive trades: Other users can send you cards. Incoming trades appear in your binder.
- Accept trades: Review the trade and accept to add cards to your collection.
- Reject trades: Decline trades you don't want.
- Trades sync automatically with your account data..
- Sign out removes the cloud link but keeps all local data intact.
Offline Support
Images are automatically cached to VS Code's storage directory on first load. After the initial download, the extension works fully offline — cached images are served locally instead of fetching from PokeAPI.
- Images are stored in your VS Code storage directory (not bundled with the extension)
- Cached images persist across VS Code restarts
- Use
CodeMon: Clear Image Cache to clear cached images if needed
Requirements
Extension Settings
This version does not contribute custom settings yet.
Known Limitations
- Anti-cheat logic is heuristic and may occasionally under-reward edge cases.
- Image cache is stored locally per-device and does not sync.
Release Notes
See CHANGELOG.md for version history.
Latest Updates
0.1.4: Full cross-device sync, account linking, card trading, achievement system, and anti-cheat heuristics.
0.1.3: Sidebar icon compatibility update using a dedicated monochrome Activity Bar SVG to avoid placeholder icon rendering.
0.1.2: Bonus Pack command fix for generation selection (CodeMon: Add Bonus Pack) plus release documentation updates.
0.1.1: Responsive, centered pack-opening animation updates with bounded card travel in narrow and wide sidebars.
Contributing
- Fork the repository.
- Open a PR with a clear summary and screenshots for UI changes.
- Keep command IDs and persisted state keys backward compatible.
License
MIT. See LICENSE for full text.