GPM for VS Code
Visualize and edit .gpm project files — a Git-inspired issue tracker (issues, pull requests, labels, milestones, Kanban boards, activity log), reimplemented as a native VS Code custom editor styled with the editor's own theme.
A .gpm file is a single, human-readable JSON document holding one project. It's designed to be committed alongside your code, diffed in code review, and edited entirely offline — no server, no account, no network calls.
This project redesigns the data and feature set of GPM, a browser-local (localStorage-backed) project manager, around one project per file instead of GPM's multi-repository browser session. See docs/SRS.md for the full requirements specification.
Features
- Issues & pull requests — create, filter, sort, close/reopen/merge, with threaded comments and Markdown bodies.
- Labels & milestones — color-coded labels with a default seed set; milestones with due dates and progress bars.
- Kanban boards — named boards with drag-and-drop columns.
- Activity log — a running feed of everything that happened in the project.
- Native theming — the whole UI is built from VS Code's own color tokens, so it tracks your installed theme automatically.
- Plain-JSON persistence — every edit flows through VS Code's
WorkspaceEdit API, so undo/redo, dirty-state, and Source Control diffs all work exactly like a text file.
Getting started
- Install dependencies:
npm install
- Press
F5 in VS Code to launch an Extension Development Host, or run:
npm run watch
- In the Extension Development Host, run GPM: New Project File from the Command Palette, or open any
.gpm file — it opens in the GPM custom editor by default.
Commands
| Command |
Description |
GPM: New Project File |
Scaffold a new, schema-valid .gpm file. |
GPM: Import from GPM Web Export |
Split a legacy GPM web-app export into one .gpm file per repository. |
GPM: Reveal Activity Log |
Jump the active project editor to its activity panel. |
Development
npm run compile # type-check and build to out/
npm run watch # incremental build
npm run lint # eslint src/
npm test # run the extension test suite (@vscode/test-electron)
Source layout:
- src/gpm/ — the
.gpm data model: types, schema normalization, Markdown rendering.
- src/gpmEditorProvider.ts — the
CustomTextEditorProvider and its mutation reducer.
- src/commands/ — the scaffold and legacy-import commands.
- media/ — the webview UI (vanilla JS/CSS, no build step; themed via VS Code CSS custom properties).
- docs/SRS.md — the Software Requirements Specification this extension implements.
Packaging
npm run package # produces a .vsix
npm run package:minor # bump minor version and package
npm run package:major # bump major version and package
Releasing
Push a tag matching v*.*.* to trigger the release.yml workflow, which packages the extension and attaches the .vsix to a GitHub release.
License
MIT, matching the upstream GPM project this extension's data model is derived from.