Local clipboard history for Windows and macOS (eframe/egui). Captures text, HTML, RTF, images, and file paths into SQLite; hotkey opens the list; selecting an item writes back and can auto-paste into the previous app.
- Kinds:
text/html/rtf/image/files(new writes never usemixed; legacy mixed rows migrate) - Multi-viewport: Main history, Preferences, and Preview are separate egui viewports
- Settings UI: Preferences binds the full
settings.jsonmodel (capture, retention, actions, theme/i18n, backup entry, update, …) - Organize: Pin / note / groups via history API; kind filter + FTS search
- Search: FTS5 over body + notes; filters for favorite/pin/group
- Pin / note / groups: metadata updates do not bump reuse timestamps
- Preview: Space opens a Preview viewport (HTML scripts stripped; no WebView)
- Backup:
.rustpastebakJSON bundle — plain merge/overwrite, or Argon2id + AES-256-GCM encrypted - i18n + theme: zh-CN / en-US via
t(); Light/Dark/Auto mapped to egui Visuals - Onboarding: same-window first-run steps when
onboarding.completed=false - Hotkey / autostart / Win+V:
shortcuts.open_clipboardre-registered at startup; autostart preference; Win+V flag persisted (Windows hook best-effort) - Update check: optional feed parse; download-to-cache + open installer (no silent replace)
- Drag-out: payload prep + macOS best-effort (degrades without panic)
- Tray stay-resident; Esc / close hides to background
Default hotkeys: macOS Command+Shift+V, Windows Ctrl+Shift+V (overridable in settings).
| OS | Typical data root |
|---|---|
| macOS | ~/Library/Application Support/com.3minai.rustpaste/ |
| Windows | %APPDATA%\3minai\rustpaste\ (via directories crate) |
Files: clips.db / clipboard_* tables, images/, config/settings.json.
clipboard.filters.excludedAppIds— skip capture from these appsclipboard.sensitive.*— JWT / AWS / private-key style detectionclipboard.content.deleteConfirm—falseskips delete modalclipboard.history.retention/maxCount— cleanup on startupshortcuts.openClipboard/shortcuts.winVappearance.theme/appearance.languageonboarding.completedupdate.checkOnStartup
Export/import via rustpaste::backup (.rustpastebak). Corrupt or wrong-password imports fail without wiping the DB. Use placeholder passwords in tests only (test-password-placeholder).
- Local only — no cloud, no accounts
- Logs must not include clipboard bodies, image pixels/PNG base64, or backup passwords
- Docs/tests use placeholders only
- macOS: Accessibility for simulated paste; otherwise content stays on the clipboard for manual paste
- After rename/re-sign, re-grant Accessibility for Bundle ID
com.3minai.rustpaste
- Full OS RTF clipboard read (still stubbed on some paths)
- Live Win+V OS hook (setting only)
- Full OS drag-out UI (payload prep +
#[ignore]manual) - Tauri/React UI rewrite
export PATH="$HOME/.cargo/bin:$PATH"
cargo fmt -- --check
cargo test --lib
cargo build
cargo run./scripts/package-macos-app.sh
open dist/rustpaste.app