Linger
Private sticky notes for Cursor and VS Code that live with your repo and stop important follow-ups from being forgotten.
Linger is for the small but expensive things that disappear between coding sessions: "fix this before committing", "check this edge case", "refactor this later", "do not push until this is resolved". Add a note on a line or a whole file, mark it Required when it matters, and Linger keeps it visible until you handle it.
Why Linger Exists
Most TODOs either get committed by accident, buried in comments, lost in chat, or scattered across a personal notes app that has no idea what branch you are on.
Linger keeps those reminders where they matter:
- in the editor
- in the file explorer
- in a dedicated Linger notes view
- scoped to the active git repository and branch
- private to your machine
When a note is marked Required, Linger can block git commit, git push, or both until the note is resolved, marked done, unmarked Required, or deleted.
What You Can Do
- Add notes to the current line or the whole file.
- Mark notes as Required when they must block commit, push, or both.
- See line notes directly in the editor.
- See file notes as Explorer badges.
- Use blue
LN badges for normal file notes and red R! badges for Required file notes.
- Review all notes from the Linger activity bar view.
- See notes grouped into In Progress and Done.
- Mark notes done, reopen them, edit them, delete them, or jump to their location.
- Keep notes private under
.git/linger/notes.json.
- Install or remove Linger-managed git hooks from the command palette.
Quick Start
- Open a git repository in Cursor or VS Code.
- Put your cursor on the 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 blockers that must stop commit/push.
Open the Linger activity bar view to review everything that is still in progress.
To choose whether Required notes block commits, pushes, both, or neither, run Linger: Choose Blocked Git Actions from the command palette or from the Linger view header.
The Linger status bar shows the active blocking mode as a separate clickable item:
Block: C+P: commit and push
Block: C: commit only
Block: P: push only
Block: Off: no git blocking
Required Notes
Required notes are the Gatekeeper feature.
By default, if an active Required note exists on the current branch, Linger blocks:
git commit
git push
The hook output lists the first few blocking notes so you can jump back into Cursor and resolve them.
Done notes do not block git operations.
You can choose which git actions Required notes block:
- Run Linger: Choose Blocked Git Actions.
- Pick Block Commit and Push, Block Commit Only, Block Push Only, or Do Not Block Git.
The command updates the workspace setting and applies hook changes for the active repository.
You can also edit the setting directly:
{
"linger.blockActions": ["commit", "push"]
}
Supported values:
["commit", "push"]: block both commits and pushes
["commit"]: block commits only
["push"]: block pushes only
[]: keep Required notes visible without blocking git actions
Local-First Privacy
Linger is intentionally local and private.
- No telemetry.
- No cloud sync.
- No account.
- No external service.
- Notes are stored in
.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 show up in normal source control changes.
Git Hook Safety
Linger installs managed git hooks for the actions selected in linger.blockActions when hook installation is enabled.
Linger-owned hook files are stored under:
.git/linger/hooks
That keeps generated hook files out of normal source control changes, including repositories that use a worktree hook path such as .githooks.
If your repository already has hooks, Linger records the previous hook path locally, runs Linger checks first, and then calls the existing hook.
Use Linger: Remove Git Hooks to remove Linger-managed hooks for the active repository and restore the previous hook path.
You can disable automatic hook installation with:
{
"linger.autoInstallHooks": false,
"linger.blockActions": ["commit", "push"]
}
Commands
- 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
Install from VSIX
- Download the latest
linger-*.vsix package.
- In Cursor or VS Code, open the command palette.
- Run Extensions: Install from VSIX....
- Select the downloaded
.vsix file.
- Open a git repository and start using Linger.
Development
npm install
npm run check
npm run package
npm run package creates a versioned VSIX package such as linger-0.1.1.vsix.
Publish to Open VSX
Cursor uses Open VSX for its extension marketplace.
npx ovsx create-namespace lingerdev -p <token>
OVSX_PAT=<token> npm run publish:openvsx
Create the Open VSX token from your open-vsx.org account settings after signing the Eclipse Foundation publisher agreement.
License
MIT
Source
https://github.com/SamranTariq/Linger