{"id":49102168,"url":"https://github.com/flancast90/cursor-arcade-games","last_synced_at":"2026-04-26T05:00:49.816Z","repository":{"id":352533473,"uuid":"1215517603","full_name":"flancast90/cursor-arcade-games","owner":"flancast90","description":"Minimalist monochrome arcade classics for VS Code and Cursor — Snake, 2048, Blocks, Minesweeper. Zero dependencies, keyboard-first, built for focus breaks.","archived":false,"fork":false,"pushed_at":"2026-04-22T16:07:19.000Z","size":740,"stargazers_count":3,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T04:27:30.335Z","etag":null,"topics":["2048","arcade","canvas","cursor","cursor-extension","game","games","google-snake","minesweeper","minimalist","monochrome","puzzle-game","snake","tetris","typescript","vscode-extension"],"latest_commit_sha":null,"homepage":"https://marketplace.visualstudio.com/items?itemName=flancast90.cursor-arcade-games","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flancast90.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-20T01:59:02.000Z","updated_at":"2026-04-24T16:13:47.000Z","dependencies_parsed_at":"2026-04-24T03:01:03.342Z","dependency_job_id":null,"html_url":"https://github.com/flancast90/cursor-arcade-games","commit_stats":null,"previous_names":["flancast90/cursor-snake","flancast90/cursor-arcade-games"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/flancast90/cursor-arcade-games","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flancast90%2Fcursor-arcade-games","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flancast90%2Fcursor-arcade-games/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flancast90%2Fcursor-arcade-games/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flancast90%2Fcursor-arcade-games/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flancast90","download_url":"https://codeload.github.com/flancast90/cursor-arcade-games/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flancast90%2Fcursor-arcade-games/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32286271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"online","status_checked_at":"2026-04-26T02:00:05.962Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2048","arcade","canvas","cursor","cursor-extension","game","games","google-snake","minesweeper","minimalist","monochrome","puzzle-game","snake","tetris","typescript","vscode-extension"],"created_at":"2026-04-21T00:00:40.662Z","updated_at":"2026-04-26T05:00:49.810Z","avatar_url":"https://github.com/flancast90.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Cursor Arcade\n\n**Minimalist arcade classics inside your editor.**\nSnake. 2048. Blocks. Minesweeper. Pong. Head Soccer. Capitalist.\nMonochrome. Keyboard-first. Zero dependencies. One keystroke away.\n\n\u003cp\u003e\n  \u003ca href=\"https://marketplace.visualstudio.com/items?itemName=flancast90.cursor-snake\"\u003e\u003cimg alt=\"Visual Studio Marketplace Version\" src=\"https://img.shields.io/visual-studio-marketplace/v/flancast90.cursor-snake?color=000\u0026label=VS%20Code\u0026style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://open-vsx.org/extension/flancast90/cursor-snake\"\u003e\u003cimg alt=\"Open VSX Version\" src=\"https://img.shields.io/open-vsx/v/flancast90/cursor-snake?color=000\u0026label=Open%20VSX\u0026style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://marketplace.visualstudio.com/items?itemName=flancast90.cursor-snake\"\u003e\u003cimg alt=\"Installs\" src=\"https://img.shields.io/visual-studio-marketplace/i/flancast90.cursor-snake?color=000\u0026label=installs\u0026style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg alt=\"MIT License\" src=\"https://img.shields.io/github/license/flancast90/cursor-arcade-games?color=000\u0026style=flat-square\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/flancast90/cursor-arcade-games/stargazers\"\u003e\u003cimg alt=\"Stars\" src=\"https://img.shields.io/github/stars/flancast90/cursor-arcade-games?color=000\u0026style=flat-square\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr /\u003e\n\n\u003cimg src=\"media/icon.png\" alt=\"Cursor Arcade\" width=\"120\" /\u003e\n\n\u003c/div\u003e\n\n---\n\n## Why\n\nYou spent three hours rebasing. Compile just failed. The linter is screaming. You don't want to alt-tab to a browser and burn the next twenty minutes on r/games — you want three minutes, something your hands already know, and a fresh brain when you come back.\n\n**Cursor Arcade gives you seven games at one keystroke**, all rendered in the same restrained black-and-white grammar as the rest of your IDE. No animations that distract. No accounts. No telemetry. No web requests. Close the panel and they disappear — your best scores don't.\n\n## The Games\n\n|   | Game | Why it's here | Controls |\n|---|---|---|---|\n|   | **Snake** | The reigning champion of \"just five more minutes.\" 5 modes + a worldwide daily challenge. | Arrows / WASD · `Space` pause |\n|   | **2048** | The math puzzle that has convinced more people they're bad at addition than any other. 4×4, 5×5, 6×6. | Arrows / WASD |\n|   | **Blocks** | Tetrominoes stacking into lines. Hold, ghost-piece, standard scoring. Because of course. | Arrows · `Z`/`X` rotate · `Space` hard-drop · `C` hold |\n|   | **Minesweeper** | Pure logic. Occasionally pure guessing. Easy / Medium / Hard. | Click reveal · Right-click / Shift+click flag · Middle-click chord |\n|   | **Pong** | 1972's original. 1P vs CPU with four difficulty tiers, or hotseat 2P. First to 5/7/11/21. | `W`/`S` or `↑`/`↓` move paddle · `Space` pause · `R` restart |\n|   | **Head Soccer** | 1P vs CPU or hotseat 2P. Big heads, small ball, absurd physics. Power-ups for fire, ice, giant, and multiball. | P1: `A`/`D` move · `W` jump · `S` kick · `Q` power · P2: `←`/`→` move · `↑` jump · `↓` kick · `/` power |\n|   | **Capitalist** | Idle tycoon inspired by AdVenture Capitalist. Ten businesses per planet across Earth, Moon, and Mars. Managers, cash upgrades, milestones, offline earnings, and angel-investor prestige. | Click / tap to earn · `1`/`2`/`3` switch planet · `B`/`U`/`A` switch tabs · `Space` pause |\n\nEach game tracks a persistent high score. Every game is keyboard-native. Every game fits the same monochrome grid so nothing looks out of place next to your code.\n\n## Install\n\n### From the marketplace\n\n- **VS Code / VSCodium** — [install from the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=flancast90.cursor-snake) or search *Cursor Arcade* in the Extensions pane.\n- **Cursor / other OSS VS Code forks** — [install from Open VSX](https://open-vsx.org/extension/flancast90/cursor-snake) or search *Cursor Arcade* in Cursor's Extensions pane.\n\n### Manual (VSIX)\n\nDownload the latest `.vsix` from the [releases page](https://github.com/flancast90/cursor-arcade-games/releases/latest), then:\n\n```\nCmd/Ctrl + Shift + P  →  Extensions: Install from VSIX…\n```\n\n## Quick start\n\nHit `Cmd/Ctrl + Shift + P` and run one of:\n\n| Command | What it does |\n|---|---|\n| `Arcade: Open Arcade` | Open the menu. |\n| `Arcade: Play Snake` | Jump straight into Snake. |\n| `Arcade: Play 2048` | Jump straight into 2048. |\n| `Arcade: Play Blocks` | Jump straight into Blocks. |\n| `Arcade: Play Minesweeper` | Jump straight into Minesweeper. |\n| `Arcade: Play Pong (1P / 2P)` | Jump straight into Pong. |\n| `Arcade: Play Head Soccer (1P / 2P)` | Jump straight into Head Soccer. |\n| `Arcade: Play Capitalist (idle tycoon)` | Jump straight into Capitalist. |\n| `Arcade: Play Snake — Daily Challenge` | The same seeded board as everyone else today. |\n| `Arcade: Reset All High Scores` | Start fresh. |\n\nFrom the main menu, press `1`–`7` to pick a game. `Esc` always takes you back. `Space` pauses. `R` restarts. That's the whole shape of it.\n\n## Controls\n\n### Snake\n| Key | Action |\n|---|---|\n| `↑ ↓ ← →` or `W A S D` | Turn |\n| `Space` or `P` | Pause |\n| `R` | Restart |\n\n### 2048\n| Key | Action |\n|---|---|\n| `↑ ↓ ← →` or `W A S D` | Slide |\n| `R` | Restart |\n\n### Blocks\n| Key | Action |\n|---|---|\n| `← →` | Move left / right |\n| `↓` | Soft drop |\n| `↑` or `X` | Rotate clockwise |\n| `Z` | Rotate counter-clockwise |\n| `Space` | Hard drop |\n| `C` or `Shift` | Hold piece |\n| `P` | Pause |\n\n### Minesweeper\n| Action | Input |\n|---|---|\n| Reveal cell | Left click |\n| Flag cell | Right click, or `Shift`+click |\n| Chord (reveal around completed number) | Middle click, or right-click a revealed number |\n\n### Pong\n| Key | Action |\n|---|---|\n| `W` / `S` or `↑` / `↓` | Move your paddle |\n| `Space` / `P` | Pause |\n| `R` | Restart match |\n\n- **1P** mode pits you against a predictive CPU with four difficulty tiers (Easy / Normal / Hard / Insane).\n- **2P** hotseat: `W`/`S` for left paddle (P1), `↑`/`↓` for right paddle (P2).\n- First to 5 / 7 / 11 / 21 points (configurable). Deflection angle depends on where the ball hits your paddle; ball speed ramps up every rally.\n- Consecutive 1P wins against each CPU tier are tracked as a streak.\n\n### Head Soccer\n| Player | Move | Jump | Kick | Power |\n|---|---|---|---|---|\n| **P1** | `A` / `D` | `W` | `S` | `Q` |\n| **P2** (hotseat) | `←` / `→` | `↑` | `↓` | `/` |\n\n- **Ground kick**: slam low, arcing shots.\n- **Air kick**: jump + kick for volleys and scissor kicks.\n- **Power shot**: press power once your meter is full, then your next kick is devastating.\n- **Power-ups** drop mid-match: **Fire** (next kick burns), **Ice** (next kick freezes opponent), **Giant** (head grows), **Multiball** (extra balls, extra chaos).\n- First to 3 goals, or most goals when the match timer runs out.\n\n### Capitalist\n\nAn AdVenture Capitalist-style idle tycoon that plays nicely in the background while you code.\n\n- **30 businesses across 3 planets** — Earth (Lemonade → Oil), Moon (Moon Shoes → Giant Laser), Mars (Red Dirt → Terrorformer).\n- **Managers** automate each business once hired.\n- **~100 cash upgrades** and **~25 angel upgrades** with per-business and all-business profit multipliers, plus angel-effectiveness boosts.\n- **Business milestones** at 25 / 50 / 100 / 200 / 300 / 400 owned halve cycle time *and* multiply revenue (x3 × x3 × x3 × x2 × x2 × x2).\n- **Angel investors** grant a permanent +2 % per-angel profit boost on reset. Reset pays out `floor(150 · √(lifetime / 1e15))` new angels minus those already owned.\n- **Offline earnings** accumulate for up to 12 hours at 25 % efficiency — close the panel and come back richer.\n- **Autosaves every 10 seconds** to your VS Code `globalState`. No cloud, no account.\n\n| Key | Action |\n|---|---|\n| `1` / `2` / `3` | Switch to Earth / Moon / Mars |\n| `B` | Businesses tab |\n| `U` | Cash upgrades tab |\n| `A` | Angel upgrades tab |\n| `Space` | Pause |\n| Click a business | Run a cycle (before you hire a manager) |\n| Click `x1` / `x10` / `x100` / `xMax` | Bulk-buy selector |\n\n## Features\n\n- **Seven polished games** in one extension — no tab-switching, no context-switching.\n- **Monochrome throughout** — designed to live next to your code without yelling.\n- **Persistent high scores** per game, per mode, per difficulty.\n- **Worldwide daily Snake challenge** — a seeded board that changes every UTC day.\n- **Hold + ghost + 7-bag randomizer** in Blocks, because that's the right way to do it.\n- **No telemetry. No network. No dependencies.** The whole extension is one TypeScript file and a few hundred lines of vanilla JS in a webview.\n- **Dark \u0026 light themes** that follow your vibe.\n- **`Esc` always goes back**, `Space` always pauses. Muscle memory stays yours.\n\n## Roadmap\n\nIdeas welcome via [issues](https://github.com/flancast90/cursor-arcade-games/issues).\n\n- [x] Pong\n- [ ] Breakout\n- [ ] Wordle-style 5-letter puzzle with local wordlist\n- [ ] Solitaire\n- [ ] Sokoban with a built-in level editor\n- [ ] Per-game leaderboards (opt-in, local file only)\n- [ ] Touch input\n\n## Design notes\n\nThe entire design language is: **one font family, three greys, no drop shadows, no gradients, no easing that you can visibly see**. Every time you're tempted to add a color, add contrast instead. Every time you're tempted to animate, ask whether it would survive on a Kindle.\n\nThe webview is pure HTML/CSS/JS — no React, no bundler, no build step beyond `tsc` for the extension host. This is because every extra dependency is another thing to update, another attack surface, and another reason for the extension to be 20 MB.\n\n## Development\n\n```bash\ngit clone https://github.com/flancast90/cursor-arcade-games\ncd cursor-arcade-games\nnpm install\nnpm run compile        # or: npm run watch\n```\n\nOpen the folder in VS Code / Cursor and press `F5` to launch an Extension Development Host. Then `Cmd/Ctrl+Shift+P → Arcade: Open Arcade`.\n\n### Adding a new game\n\nEvery game is a single file in `media/games/` that registers itself:\n\n```js\n(function () {\n  const R = window.CursorArcade;\n  R.games.mygame = {\n    create(ctx) {\n      return new MyGame(ctx);\n    },\n  };\n  class MyGame {\n    constructor({ host, api, meta, options }) { /* ... */ }\n    onKey(e)       { /* keyboard input */ }\n    destroy()      { /* cleanup */ }\n\n    // Optional:\n    togglePause()  {}\n    restart()      {}\n    buildSettings(container) {}\n    onContextMenu(e) {}\n  }\n})();\n```\n\nThen:\n\n1. Add a metadata entry to `GAME_META` in `media/arcade.js`.\n2. Add a `\u003cscript\u003e` tag for your new file in `media/index.html`.\n3. Pass its URI from `src/extension.ts`.\n4. Add commands in `package.json` if you want direct launchers.\n\nSee `CONTRIBUTING.md` for the full checklist.\n\n## Contributing\n\nPull requests welcome. Bugs, ideas, and gloriously pedantic UX nitpicks are all equally welcome. See [`CONTRIBUTING.md`](./CONTRIBUTING.md).\n\nIf you're shipping a new game, please keep the aesthetic monochrome — we'll merge anything reasonable that stays inside the design constraints.\n\n## License\n\n[MIT](./LICENSE). Do whatever you want. A link back is nice but not required.\n\n## Credits\n\n- **2048** — original concept by [Gabriele Cirulli](https://github.com/gabrielecirulli/2048), MIT-licensed.\n- **Snake** — variants inspired by Google's search-engine easter egg and the [slither.io](https://slither.io) lineage.\n- **Blocks** — tetromino stacking is the mechanic; this implementation is independent and not affiliated with Tetris Holding.\n- **Minesweeper** — Microsoft's 1990 classic; the underlying game is in the public domain.\n- **Pong** — Atari's 1972 arcade classic; the underlying game is in the public domain.\n- **Head Soccer** — big-headed soccer is a long-running flash/mobile genre (D1, BGL, etc.); this implementation is independent, with custom physics and a monochrome coat of paint.\n- **Capitalist** — inspired by Hyper Hippo's *AdVenture Capitalist* (2014). Business lists, coefficients, milestone halvings, and the angel formula are modelled after the official wiki; all art and code here are original.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nIf Cursor Arcade helped you survive a rebase, \u003ca href=\"https://github.com/flancast90/cursor-arcade-games\"\u003estar the repo\u003c/a\u003e. Seriously. I notice.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflancast90%2Fcursor-arcade-games","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflancast90%2Fcursor-arcade-games","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflancast90%2Fcursor-arcade-games/lists"}