A free, open-source clipboard history manager. macOS tested, Windows support in progress.
Every copy you make, always within reach.
English | 中文
- Full-type support — Plain text, rich text, images, and files
- Instant recall —
Cmd+Shift+Vto summon, arrow keys to navigate, Enter to paste - Smart dedup — SHA-256 hash prevents duplicate entries
- Full-text search — FTS5 with trigram tokenizer for Chinese/English fuzzy search
- Favorites — Pin frequently used items for quick access
- Non-activating panel — NSPanel on macOS, never steals focus from your active app
- Themes — Dark and light mode, follows system preference
- i18n — Chinese and English, auto-detects system language
- Privacy first — All data stored locally in SQLite, nothing leaves your machine
| Layer | Technology |
|---|---|
| Framework | Tauri v2 |
| Frontend | React 19 + TypeScript + Tailwind CSS v4 |
| Backend | Rust |
| Database | SQLite (SQLx, WAL mode) |
| State | Zustand |
| UI | Radix UI + Lucide Icons |
| i18n | react-i18next |
| Platform | NSPanel (macOS), virtual scrolling (@tanstack/react-virtual) |
- Node.js 22+
- pnpm 10+
- Rust 1.77+
- Xcode Command Line Tools (macOS) or Visual Studio Build Tools (Windows)
# Install dependencies
pnpm install
# Start dev server (Vite + Rust hot-reload)
pnpm tauri dev
# Run tests
npx vitest run # Frontend (17 tests)
cd src-tauri && cargo test # Backend (19 tests)
# Type check
npx tsc --noEmit
# Production build
pnpm tauri build| Platform | Format |
|---|---|
| macOS | .dmg |
| Windows | NSIS installer |
Recopy
├── src/ # React frontend
│ ├── components/ # UI components (cards, search, filters)
│ ├── stores/ # Zustand state management
│ ├── hooks/ # Keyboard navigation, shortcuts
│ └── i18n/ # Locale files (zh, en)
├── src-tauri/
│ └── src/
│ ├── lib.rs # App setup, tray, shortcuts, clipboard monitor
│ ├── commands/ # Tauri IPC commands (CRUD, paste, settings)
│ ├── db/ # SQLite models, queries, migrations
│ ├── clipboard/ # Hashing, thumbnails, image storage
│ └── platform/ # macOS NSPanel / Windows fallback
└── docs/ # PRD, tech selection, wireframes
- User presses Enter on a clipboard item
- Rust writes content to system clipboard
- NSPanel resigns key window (returns focus to previous app)
osascriptsimulates Cmd+V with 50ms delay- Panel hides — user sees content pasted seamlessly
| Key | Action |
|---|---|
Cmd+Shift+V |
Toggle Recopy panel |
↑ ↓ |
Navigate items |
Enter |
Paste selected item |
Cmd+C |
Copy to clipboard (without paste) |
Escape |
Close panel |
Cmd+F |
Focus search |
- Source app detection (show which app content was copied from)
- App exclusion list (skip password managers, etc.)
- Configurable size limits
- Tray menu i18n
- Auto-update
