Skip to content

SamranTariq/Linger

Repository files navigation

Linger

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.

The Problem

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.

What Linger Gives You

  • 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.

60-Second Workflow

  1. Open a git repository in Cursor or VS Code.
  2. Put the cursor on a line you want to remember.
  3. Run Linger: Add Note at Cursor.
  4. Choose Current Line or Whole File.
  5. 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

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 push

When 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+P blocks commit and push.
  • Block: C blocks commit only.
  • Block: P blocks push only.
  • Block: Off keeps 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.

Where Notes Show Up

  • Editor decorations for line notes.
  • CodeLens for file-level notes.
  • Explorer badges:
    • LN for normal file notes.
    • R! for Required file notes.
  • Linger sidebar:
    • In Progress
    • Done
  • Status bar:
    • active note count
    • active Required-note blocking mode

Local-First Privacy

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.

Git Hook Safety

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"]
[]

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

  1. Download the latest linger-*.vsix package.
  2. In Cursor or VS Code, open the command palette.
  3. Run Extensions: Install from VSIX....
  4. Select the downloaded .vsix file.
  5. 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

About

Private sticky notes for Cursor and VS Code that live with your repo and stop important follow-ups from being forgotten.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors