Documentation

ClipChrono is installed once from the terminal and then lives in your menu bar forever. Everything below happens in the panel β€” you never need the command line again.

Getting started

Requirements: macOS and Node.js 22.12 or newer. The install downloads ClipChrono's Electron runtime (~100Β MB) once.

$npm install -g clipchrono
$clipchrono

The first run:

  • puts the πŸ“‹ icon in your menu bar and registers a LaunchAgent so ClipChrono starts automatically at login
  • walks you through a short welcome flow, including the Accessibility grant that powers auto-paste
  • starts recording every copy β€” text, images, and files β€” into a local history of up to 500 items

In the Accessibility dialog the app appears as "Electron" β€” that is ClipChrono's runtime, not a stranger. Without the grant, clicking an item still puts it on your clipboard; with it, the click pastes directly into the app you came from.

The panel

Press βŒ˜β‡§V in any app and the panel opens over your work.

βŒ˜β‡§Vopen the panel anywhere (record a different combo in Settings)
type anythinglive search across the whole history β€” text, image, and file names
click an itemauto-pastes it right where you were and closes the panel
↑ ↓ + returnkeyboard navigation β€” arrows move, Return pastes
escclose the panel without pasting
hover an itemreveals per-item actions: πŸ“ move to folder, πŸ“Œ pin, βœ• delete β€” links also get 🌐 open-in-browser

Re-copying identical text never double-stacks: deduplication ignores invisible-whitespace differences, so one snippet is one entry no matter how often you copy it.

Smart clips

ClipChrono recognises what you copy and shows it accordingly. All detection is local β€” nothing is ever fetched or uploaded.

  • πŸ”— Links: a copied URL shows its domain, with a 🌐 open-in-browser button on the clip. Clicking the clip still pastes the full URL; the 🌐 button opens it in your browser.
  • Code: multi-line snippets render in a monospace block with indentation and line breaks preserved, so a function still looks like a function when you find it again.
  • Files: copy a file in Finder (⌘C) and it's captured as a reference β€” its icon and name appear in history, and clicking it pastes the actual file into Finder, an email, or an upload field. The file is never duplicated into ClipChrono; if you move or delete the original, the clip greys out and says so instead of pasting a stale copy.

Folders

The history is a stream β€” it caps at your configured size and can auto-expire unused items. Folders are for the clips you keep:

  • File a clip: hover it β†’ πŸ“ β†’ pick a folder or create one on the spot (e.g. "CLI", or one per project)
  • What filing does: the clip leaves the history stream and becomes permanent β€” exempt from the item cap, auto-expiry, and Clear
  • Browse: switch between History and your folders with the dropdown next to search
  • Manage: rename or delete a folder from its header. Deleting a folder deletes its clips β€” ClipChrono asks for confirmation first

Pins & multi-select

  • πŸ“Œ Pin the items you paste every day β€” pins stay on top and survive Clear
  • ⌘-click several items to select them, then delete them together
  • Clear wipes the history stream in one go β€” pins and foldered clips are untouched

Settings & shortcuts

Open βš™οΈŽ Settings from the panel.

shortcutclick the field and press ANY combo containing ⌘, βŒƒ or βŒ₯ β€” a conflicting combo keeps your previous shortcut instead of breaking it
history sizehow many items the stream keeps (default 500)
auto-deleteexpire items you haven't used in a while β€” pins and folders exempt
start at logintoggle the LaunchAgent (on by default)
backupExport your whole history to a file, or Import one β€” Import merges without overwriting
quitfully stop ClipChrono from Settings

Backup & restore

Open βš™οΈŽ Settings β†’ Backup. A backup is a single local file β€” there is no cloud involved.

  • Export… writes your entire history, folders, pins, and stored images to one .zip you save wherever you like (default name ClipChrono-backup-YYYY-MM-DD.zip).
  • Import… merges a backup into this Mac. Items already present are skipped, folders with the same name are combined, and nothing you already have is ever overwritten or deleted.
  • Move to a new Mac: Export on the old one, copy the .zip across, Import on the new one. File clips are references, so they only paste where those files exist.

Privacy & storage

ClipChrono is local-only: no cloud, no sync, no telemetry, no account. Everything lives in one folder you can inspect, back up, or delete:

~/Library/Application Support/ClipChrono/
β”œβ”€β”€ history.json     # the stream: text, link, code & file items + metadata
β”œβ”€β”€ folders.json     # your folders and their clips
β”œβ”€β”€ settings.json    # shortcut, cap, expiry, login item
└── images/          # copied images, stored as files

File clips store only a path β€” the file itself is never copied in. Backups you Export are separate .zip files saved wherever you choose; nothing is ever written here without your action.

Items copied from password managers that mark them confidential (1Password, Bitwarden and friends set a special pasteboard flag) are never recorded β€” they don't enter the history at all.

Updating

$npm update -g clipchrono

Then quit ClipChrono from Settings and run clipchrono once (or log out and back in). The LaunchAgent's paths self-heal across npm updates and folder moves, so start-at-login keeps working after every upgrade. See what changed in the changelog.

Troubleshooting

panel won't open?another app probably owns the combo β€” open βš™οΈŽ Settings from the menu-bar icon and record a different shortcut
click copies but doesn't paste?Accessibility isn't granted: System Settings β†’ Privacy & Security β†’ Accessibility β†’ enable "Electron"
gone after a reboot?run clipchrono once β€” it re-registers the LaunchAgent and self-heals its paths
a copy never appeared?password-manager confidential items are skipped by design, and re-copied duplicates merge into their existing entry instead of stacking
a copied file pasted as an image?you're on an older build β€” run npm update -g clipchrono, quit ClipChrono from Settings, and start it again
a file clip is greyed out?the original was moved or deleted β€” file clips are references, so the file has to still exist to paste; copy it again from its new location

Uninstall

Quit ClipChrono from βš™οΈŽ Settings, then:

launchctl bootout gui/$(id -u)/com.clipchrono.agent
npm uninstall -g clipchrono
rm -rf ~/Library/Application\ Support/ClipChrono \
       ~/Library/LaunchAgents/com.clipchrono.agent.plist

That removes the app, the login item, and every stored clip. Nothing else was ever written anywhere.