Repo and branch scoped sticky notes for Cursor and VS Code.
Linger keeps short-lived development reminders where they belong: inside the repo you are working on, on the branch where they matter, without committing TODO comments or losing context in chat. Mark a note Required when it must be handled before git commit, git push, or both.
You notice something while coding:
- fix this before committing
- do not push until this edge case is checked
- revisit this file after the refactor
- this line is suspicious, but not part of the current task
Normal options are awkward. Code comments get committed. TODOs become permanent. Chat context disappears. External notes do not know which repo, branch, file, or line you meant.
Linger gives those reminders a temporary home inside your local git metadata.
- Line notes for exact code locations.
- File notes for whole-file reminders.
- Required notes that can block commit, push, or both.
- Branch scoped notes, so reminders from one branch do not leak into another.
- Explorer badges for files with active notes.
- A Linger activity-bar view for everything still in progress.
- Done notes for history without cluttering the active list.
- Local-only storage under
.git/linger.
- Open a git repository in Cursor or VS Code.
- Put the cursor on a line you want to remember.
- Run Linger: Add Note at Cursor.
- Choose Current Line or Whole File.
- Use Linger: Add Required Note at Cursor for anything that must block a git action.
Open the Linger activity-bar view to review active notes, mark them done, edit them, delete them, or jump back to their location.
Required notes are for reminders that should stop you from shipping unfinished work.
By default, an active Required note on the current branch blocks:
git commit
git pushWhen Git is blocked, Linger prints the first few active Required notes in the terminal output so you know what to resolve.
You can choose exactly what Required notes block:
Block: C+Pblocks commit and push.Block: Cblocks commit only.Block: Pblocks push only.Block: Offkeeps Required notes visible without blocking Git.
Run:
Linger: Choose Blocked Git Actions
The same action is available from the Linger view header and the clickable status bar item.
- Editor decorations for line notes.
- CodeLens for file-level notes.
- Explorer badges:
LNfor normal file notes.R!for Required file notes.
- Linger sidebar:
- In Progress
- Done
- Status bar:
- active note count
- active Required-note blocking mode
Linger is intentionally local.
- No account.
- No telemetry.
- No cloud sync.
- No external service.
- Notes are stored under
.git/linger/notes.json. - Notes are not committed to your repository.
- Notes are scoped to the active git branch.
Because notes live inside .git, they stay on your machine and do not appear in normal source control changes.
Linger uses git hooks only for Required-note blocking.
Managed hook files live under:
.git/linger/hooks
That keeps generated hook files out of the working tree, including repositories that use .githooks or another custom hook path.
If your repository already has hooks, Linger records the previous core.hooksPath, runs Linger checks first, and then calls the existing hook. Use Linger: Remove Git Hooks to remove Linger-managed hooks and restore the previous hook path.
You can disable automatic hook installation:
{
"linger.autoInstallHooks": false,
"linger.blockActions": ["commit", "push"]
}Supported linger.blockActions values:
["commit", "push"]
["commit"]
["push"]
[]- Linger: Add Note at Cursor
- Linger: Add Required Note at Cursor
- Linger: Mark Done
- Linger: Move to In Progress
- Linger: Toggle Required
- Linger: Edit Note
- Linger: Delete Note
- Linger: Open Note Location
- Linger: Show File Notes
- Linger: Refresh
- Linger: Install or Repair Git Hooks
- Linger: Remove Git Hooks
- Linger: Choose Blocked Git Actions
- Download the latest
linger-*.vsixpackage. - In Cursor or VS Code, open the command palette.
- Run Extensions: Install from VSIX....
- Select the downloaded
.vsixfile. - Open a git repository and start using Linger.
npm install
npm run check
npm run packagenpm run package creates a versioned VSIX package such as linger-0.1.1.vsix.
Cursor uses Open VSX for its extension marketplace.
npx ovsx create-namespace lingerdev -p <token>
OVSX_PAT=<token> npm run publish:openvsxCreate the Open VSX token from your open-vsx.org account settings after signing the Eclipse Foundation publisher agreement.
MIT