npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pi-anchor

v1.0.1

Published

Cross-session Task & Todo Dock for Pi — persistent belowEditor tree overlay (✓ strikethrough, ◐ live file activity, ⛓ DAG dependencies, Alt+A fold), auto-saves unfinished todos across restarts, 0ms pin: notes, and /back session teleport.

Readme

⌖ Anchor

A digital sticky note & cross-session todo checkpoint docked below your Pi editor — automatically catches unfinished todo lists when you close the terminal, sticks quick notes in 0ms (pin: ...), and teleports back to the original session (/back).

npm version npm downloads GitHub stars CI Status Tests: 15 Passed License: MIT

English | 日本語 | 简体中文

pi install npm:pi-anchor
  ┌─ [aboveEditor stays 100% free for pi-lingual and other HUD widgets] ────────────┐
╭─┴─ Pi Editor ────────────────────────────────────────────────────────────────────╮
│ ❯ pin: Refactor auth: 1. Extract interface 2. HttpOnly cookie 3. Unit tests      │
╰─┬────────────────────────────────────────────────────────────────────────────────╯
  ├─► ⌖ #1 [■□□□ 1/3] Refactor auth (app · auth.ts ↪)                [Alt+A fold]
  │   ├─ ✓ 1. Extract auth interface (strikethrough)
  │   ├─ ◐ 2. HttpOnly cookie (editing auth.ts)
  │   ├─ ○ 3. Unit tests ⛓ #2
  │   └─ 📌 #2 Double-check gateway timeout fallback (3h ago)
  └─► (Folded via Alt+A): ⌖ #1 [■□□□ 1/3] Refactor auth ▸ HttpOnly cookie (auth.ts ↪)

Core Value

Late at night, mid-way through fixing a bug, you spot a second issue in src/auth.ts or need to pause a multi-step refactor until tomorrow. Standard ways of recording that note create immediate friction:

  1. Terminal Exit Wipes Working Memory: Closing the terminal or running /new clears the agent's context. Yesterday's unfinished steps and the conversation history behind them vanish.
  2. TODO.md Pollutes Git & Burns Context Tokens: Tracking personal reminders inside repository markdown files dirties git status and re-injects stale checklists into the system prompt on every turn.
  3. Splash Banners Vanish When You Start Typing: Traditional startup widgets disappear on the first message. For the rest of a two-hour session, your notes are hidden unless you manually run a slash command.

Anchor acts like a physical sticky note and auto-save checkpoint stuck to the bottom bezel of your Pi editor:

  • Auto-Todo Bridge (todo ➔ Cross-Session Checkpoint): Standard todo tools (@juicesharp/rpiv-todo and built-in todo) live only inside a single conversation with zero disk writes — closing the terminal or running /new wipes unfinished tasks. Anchor automatically mirrors unfinished todo snapshots to disk ([■■□□ 2/5]) and auto-clears them the moment all steps reach completed.
  • Persistent Below-Editor Strip (belowEditor): Docks a single-line note strip directly beneath your input box. It stays in view while you code, leaves aboveEditor untouched for extensions like pi-lingual and rpiv-todo, and collapses to 0 lines when empty.
  • 0ms Human-First Capture (pin: ...): Type pin: Check token expiry (or /pin ...) straight into the editor. An input hook intercepts the text in 0.00ms without calling the language model or spending tokens.
  • Session Teleport (/back & ↪ Jump to session): Every note and auto-checkpoint bookmarks the exact .jsonl session file where work happened. Run /back (or select ↪ Jump to session in /anchor) to switch Pi straight back to that conversation.

How It Works

| Mode / Action | What You Input | What the Engine Does | What You See | Best For | | :--- | :--- | :--- | :--- | :--- | | Auto-Todo Checkpoint | Agent calls todo (2/5 done, then you quit or /new) | Mirrors unfinished todo snapshot + modified files + sessionFile; auto-clears at 5/5 | Next session shows: ⌖ #1 [■■□□ 2/5] Switch token ▸ Add tests (↪) | Never losing unfinished todo lists across terminal restarts | | Stick a Note (0ms) | Type pin: Fix auth in src/auth.ts or /pin ... | Intercepts via input hook in 0ms, extracts file paths, and links current sessionFile | 1-line strip appears below editor: ⌖ #1 Fix auth (app · auth.ts ↪) | Capturing a tangent without derailing the current prompt | | Track Multi-Step Work | Type /pin Refactor: 1. API 2. Cookie 3. Tests then /step 1 | Parses step list and increments done / total counter in ~/.anchor/state.json | Strip updates in place: ⌖ #1 [■■□□ 2/3] Refactor ▸ Tests | Multi-session features and long-running study goals | | Resume Context (/back) | Run /back (or /anchor ➔ ↪ Jump to session) | Invokes Pi's native ctx.switchSession(note.sessionFile) | Terminal switches directly back to the original conversation transcript | Picking up a complex task days later with full history | | Auto-Tear on Commit | Commit code (git commit -m "feat: fix auth") or run /done 1 | Matches commit message against active notes (filtering generic stop-words) | Note archives to archive.jsonl; strip clears (⌖ Auto-torn off #1) | Keeping the sticky strip clean without manual bookkeeping |


Features & Engineering Answers

1. Will the sticky strip collide with pi-lingual or overflow narrow split panes?

Anchor mounts its widget with { placement: "belowEditor" }. Extensions that render translation cards or diagnostics above the input box (aboveEditor) never overlap with Anchor.
On narrow terminal splits (such as 50-column tmux panes), the strip measures visual column widths using Unicode East Asian Width rules (CJK/emoji = 2 cells, ASCII = 1 cell) and dynamically folds multiple notes into ⌖ 3: #1 [■■□□ 2/4] Refactor… +2 while stripping unclosed brackets before ellipses.

2. Does keeping sticky notes cost tokens on every turn?

Turn 2+ consumes 0 system prompt tokens.
Anchor injects a compact summary of active notes only on Turn 1 of a cold session. From Turn 2 onwards, the system prompt hook returns nothing. When the agent reads or edits a file that matches a note's path or glob (src/auth/*.ts), Anchor appends a single syntax-safe comment line (// ⌖ Note #1: ...) to that tool result, while returning null for .json, .env, lockfiles, and binaries.

3. What happens to old notes or accidental git commit matches?

  • 7-Day Quiet Mode (Zero Silent Deletion): Notes untouched for more than 7 days transition to sleeping (quiet). They stop appearing in Turn-1 prompts for unrelated workspaces, remain 100% visible in /anchor, and wake up automatically when you open their target project.
  • Stop-Word Filtered Commit Matching & 1-Tap Undo: Commit matching strips generic words (fix, feat, chore, bug, update) so a commit like fix: typo in bug template never tears off a note titled fix bug in login. If you ever tear off a note by mistake, /anchor undo pops the last entry from archive.jsonl right back onto your strip.
  • Bracketed Ratio Parsing: Progress ratios require explicit brackets ([2/4] or (5/30)), ensuring calendar dates in note titles (like Before 10/12 release) are never mistaken for progress bars.

4. Storage Topology & Cross-Process Lock Safety

All state lives in ~/.anchor/ outside your git repository:

~/.anchor/
├── state.json      # Active and quiet sticky notes (< 2KB, atomic temp-file + rename)
├── state.lock      # Cross-process exclusive lock (fs.openSync 'wx' + dead-PID reclamation)
└── archive.jsonl   # Append-only history of torn-off notes (powers /anchor undo)

Commands

| Where | Input / Command | Description | | :--- | :--- | :--- | | Pi Editor | pin: <note> or 便签: <note> | Stick a note in 0ms without calling the LLM | | Pi Slash | /pin <note> | Stick a note (supports [1/4] or 1. A 2. B 3. C steps) | | Pi Slash | /anchor | Open interactive sticky note board (tear off, +1 step, ↪ jump to session, or read details) | | Pi Slash | /step 1 | Advance progress bar on note #1 by +1 | | Pi Slash | /back (or /anchor jump 1) | Teleport Pi back to the conversation session of the latest unfinished note/todo checkpoint | | Pi Slash | /done 1 / /anchor 1 | Tear off note #1 and archive it | | Pi Slash | /anchor undo | Put back the most recently torn-off note | | Terminal CLI | anchor / anchor "<note>" | View or stick notes from any shell outside Pi | | Terminal CLI | anchor step 1 / anchor done 1 / anchor undo | Advance progress, tear off, or restore notes from the command line |


Author's Note

Anchor started because I hated watching TODO.md files rot inside my git repositories, yet closing my terminal at night always meant losing track of what I still needed to fix the next morning.

In its early versions, I over-engineered the solution. By v0.3, Anchor had grown into a 10-file miniature project manager with four cognitive quadrants (Today, Upcoming, Habits, Backlog), [P0] priority tags, daily recurring habit trackers, pre-flight shell test runners on startup, and a graveyard eviction state machine. Ironically, the more features it gained, the less I wanted to use it. Worse, its startup banner disappeared the moment I typed my first message, hiding my notes for the rest of the coding session.

In v0.4 and v0.5, I threw away 60% of the codebase and rebuilt Anchor around four files (types.ts, store.ts, tui.ts, extension.ts) as a simple digital sticky note:

  1. Dock the 1-line note strip below the editor (belowEditor) so it stays in sight while coding and never fights with pi-lingual above the editor.
  2. Let human hands stick a note in 0ms by typing pin: ... without waiting on a model call.
  3. Add a 4-cell progress bar ([■■□□ 2/4]) for multi-step refactors and bookmark the session file (↪) so clicking a note teleports you back to the exact conversation where the work started.
npm run typecheck  # Strict tsc --noEmit check (0 errors)
npm test           # Native Node test runner (15/15 passing)
npm run build      # Dual ESM/CJS compilation via tsup + declaration emit

Ecosystem: Pi Terminal Suite

Each extension occupies a distinct terminal slot (aboveEditor, belowEditor, status-only footer, and runtime tool hooks) so all four run together with zero widget overlap:

| Package | Terminal Slot & Mechanism | Install | | :--- | :--- | :--- | | pi-lingual | 二 ⇄ two aboveEditor HUD (≤9 lines, UAX #11 tree layout) & prompt-to-English transformer (0 chat history tokens) | pi install npm:pi-lingual | | toolflow | ⌬ Runtime tool hooks — stage-gated MCP mounting & >40-line log dehydration to disk (-95% log tokens) | pi install npm:toolflow | | pi-tui-status-beautifier | status-only footer hook — 6 badge presets, <80-col idle folding (+N idle), 0 render-loop disk reads | pi install npm:pi-tui-status-beautifier | | pi-anchor (Current) | ⌖ belowEditor Task & Todo Tree Dock (Alt+A fold), Auto-Todo Bridge, 0ms pin: notes & /back session teleport | pi install npm:pi-anchor |


License

MIT © Jason Song