{"id":50911031,"url":"https://github.com/johannes-kaindl/neurovim","last_synced_at":"2026-06-16T10:02:06.021Z","repository":{"id":361217858,"uuid":"1253527672","full_name":"johannes-kaindl/NeuroVIM","owner":"johannes-kaindl","description":"Learn Vim disguised as a cyberpunk spy thriller — an AI handler hands you missions that are really Vim exercises. One core, three targets: Obsidian plugin, web app, and Tauri desktop.","archived":false,"fork":false,"pushed_at":"2026-06-15T13:59:17.000Z","size":23069,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-15T14:08:27.994Z","etag":null,"topics":["cyberpunk","learning-game","obsidian-plugin","tauri","typescript","vim"],"latest_commit_sha":null,"homepage":"https://johannes-kaindl.github.io/NeuroVIM/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johannes-kaindl.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":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":"CLA.md"}},"created_at":"2026-05-29T14:56:54.000Z","updated_at":"2026-06-15T12:38:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/johannes-kaindl/NeuroVIM","commit_stats":null,"previous_names":["johannes-kaindl/neurovim"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/johannes-kaindl/NeuroVIM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johannes-kaindl%2FNeuroVIM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johannes-kaindl%2FNeuroVIM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johannes-kaindl%2FNeuroVIM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johannes-kaindl%2FNeuroVIM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johannes-kaindl","download_url":"https://codeload.github.com/johannes-kaindl/NeuroVIM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johannes-kaindl%2FNeuroVIM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34400456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"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":["cyberpunk","learning-game","obsidian-plugin","tauri","typescript","vim"],"created_at":"2026-06-16T10:02:04.847Z","updated_at":"2026-06-16T10:02:06.016Z","avatar_url":"https://github.com/johannes-kaindl.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/brand/og.png\" alt=\"NeuroVim — a Vim-learning game wrapped in a cyberpunk spy-thriller\" width=\"680\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eNeuroVim\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-AGPL--3.0-8a4dff?style=flat-square\" alt=\"License: AGPL-3.0\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://jkaindl.codeberg.page/neurovim/\"\u003e\u003cimg src=\"https://img.shields.io/badge/play-in%20browser-39ff7a?style=flat-square\" alt=\"Play in browser\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003ci\u003eLearn Vim by playing a cyberpunk spy-thriller.\u003c/i\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e▶ \u003ca href=\"https://jkaindl.codeberg.page/neurovim/\"\u003ePlay in the browser\u003c/a\u003e\u003c/b\u003e\n  \u003csub\u003e(\u003ca href=\"https://johannes-kaindl.github.io/NeuroVIM/\"\u003eGitHub Pages mirror\u003c/a\u003e)\u003c/sub\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://github.com/johannes-kaindl/NeuroVIM/releases\"\u003eDesktop downloads\u003c/a\u003e\n\u003c/p\u003e\n\nAn AI handler named **CIPHER** assigns you \"missions\" that are really Vim\nexercises — restore CORP-corrupted documents, fix glitched transmissions, beat\nthe clock. You end up learning Vim almost by accident; the spy-thriller is the\nhook. Same game ships three ways from one codebase: a **web app**, an **Obsidian\nplugin**, and a **native desktop app**.\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/01-welcome.png\" width=\"380\" alt=\"Welcome\"\u003e\u003cbr\u003e\u003csub\u003eWelcome — CIPHER intro\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/02-nexus-picker.png\" width=\"380\" alt=\"NEXUS\"\u003e\u003cbr\u003e\u003csub\u003eNEXUS — mission picker + status\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/03-briefing.png\" width=\"380\" alt=\"Briefing\"\u003e\u003cbr\u003e\u003csub\u003eBriefing — story before each mission\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/04-editor.png\" width=\"380\" alt=\"Editor\"\u003e\u003cbr\u003e\u003csub\u003eEditor — CodeMirror 6 + Vim\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/05-result-modal.png\" width=\"380\" alt=\"Result\"\u003e\u003cbr\u003e\u003csub\u003eResult — mission complete\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/06-sandbox.png\" width=\"380\" alt=\"Sandbox\"\u003e\u003cbr\u003e\u003csub\u003eTHE RAVEN — free-play sandbox\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/07-archive-index.png\" width=\"380\" alt=\"Lore Archive\"\u003e\u003cbr\u003e\u003csub\u003eArchive — unlockable lore \u0026amp; loot\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cimg src=\"docs/screenshots/09-cheatsheet.png\" width=\"380\" alt=\"Cheatsheet\"\u003e\u003cbr\u003e\u003csub\u003eCheatsheet — Vim keymap overlay\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Features\n\n- **Story-driven campaign** — a curriculum of Vim missions (motions, find-char, the dot\n  command, operators, text objects, search \u0026 replace, macros, registers, visual-block,\n  global commands, regex) wrapped in a narrative that **unlocks progressively** as you level up.\n- **Real editor** — CodeMirror 6 with actual Vim keybindings, not a fake terminal.\n- **THE RAVEN sandbox** — free-play: fix N injected glitches against the clock,\n  beat your best (EASY / NORMAL / HARD).\n- **Progression \u0026 mastery** — XP, levels, progressive mission unlock, streaks, and\n  **gold/silver/bronze par-tiers** that score each run by keystrokes; progress saved\n  locally in your browser.\n- **Terminal / CRT aesthetic** — restrained phosphor-green \"Kuro\" theme, monospace,\n  optional scanline.\n- **Plays anywhere** — in the browser with no install, or as a ~3 MB native desktop\n  app (macOS / Windows / Linux).\n\n## Play\n\n- **Browser:** **https://jkaindl.codeberg.page/neurovim/** — nothing to install.\n- **Desktop:** download an installer from the [latest release](https://github.com/johannes-kaindl/NeuroVIM/releases)\n  (macOS `.dmg`, Windows `.exe`/`.msi`, Linux `.AppImage`/`.deb`/`.rpm`). The macOS\n  `.dmg` is Developer ID-signed + notarized (opens without a Gatekeeper warning); the\n  Windows installer is currently unsigned — see [`docs/DESKTOP.md`](docs/DESKTOP.md).\n\n## Run from source\n\n```bash\nnpm install\nnpm run dev          # web app → http://localhost:5173/\n```\n\n```bash\nnpm run build        # full build (content → Obsidian plugin → web)\nnpm test             # test suite\nnpm run build:dmg    # native desktop app + macOS DMG (needs Rust + Xcode CLT)\n```\n\nContributor guide: [`CONTRIBUTING.md`](CONTRIBUTING.md) · architecture \u0026 internals\nfor agents/maintainers: [`AGENTS.md`](AGENTS.md).\n\n## Manual\n\nNew players start with the **[Player Manual](docs/manual/README.md)** — a\n[Diátaxis](https://diataxis.fr/)-structured guide:\n\n- **[Tutorial](docs/manual/tutorial.md)** — play through your first mission, no Vim\n  knowledge needed.\n- **[How-to guides](docs/manual/how-to/index.md)** — the sandbox, scoring, unlocks,\n  desktop install, resetting progress.\n- **[Reference](docs/manual/reference/index.md)** — the [Vim keymap](docs/manual/reference/vim-keymap.md)\n  and [ranks \u0026 unlocks](docs/manual/reference/progression.md) (generated from the game\n  data via `npm run build:manual`).\n- **[Explanation](docs/manual/explanation/index.md)** — why NeuroVim is shaped the way\n  it is.\n\n## Built with\n\nTypeScript · [Preact](https://preactjs.com/) · [CodeMirror 6](https://codemirror.net/)\n+ [@replit/codemirror-vim](https://github.com/replit/codemirror-vim) · Vite ·\n[Tauri v2](https://tauri.app) · self-hosted [JetBrains Mono](https://www.jetbrains.com/lp/mono/) (OFL).\n\nA small monorepo (npm workspaces): a platform-neutral **core** (game logic, Web\nAudio, Preact UI) with thin **adapters** for the web, Obsidian, and desktop. No\nUI kit, no CSS framework. See [`AGENTS.md`](AGENTS.md) for the architecture.\n\n## Contributing\n\nIssues and PRs welcome on [Codeberg](https://codeberg.org/jkaindl/NeuroVIM)\n(primary) or the [GitHub mirror](https://github.com/johannes-kaindl/NeuroVIM).\nPlease read [`CONTRIBUTING.md`](CONTRIBUTING.md) first.\n\n## License\n\nNeuroVim is **dual-licensed** — see [`LICENSING.md`](LICENSING.md).\n\n- **Open source:** [GNU AGPL-3.0](LICENSE) — copyleft with the network-use clause:\n  if you host a modified version so others can use it over the network, the source\n  of your variant must also be made available under the AGPL.\n- **Commercial license:** for uses that the AGPL does not fit — e.g. a proprietary\n  or closed-source product, or an Apple App Store build (App Store terms are\n  incompatible with the AGPL) — a separate commercial license is available. See\n  [`LICENSING.md`](LICENSING.md); contributions are covered by the [CLA](CLA.md).\n\nDocumentation and narrative text (docs, missions, lore) are licensed under\n[CC BY-SA 4.0](LICENSE-DOCS). The bundled JetBrains Mono font is under the\n[SIL Open Font License](packages/adapter-web/src/fonts/OFL.txt).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohannes-kaindl%2Fneurovim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohannes-kaindl%2Fneurovim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohannes-kaindl%2Fneurovim/lists"}