- Copy only (right-click -> Copy): write to clipboard without auto-pasting or hiding the window - Color swatches: hex/rgb/hsl entries show a preview chip - SQLite WAL + synchronous=NORMAL so the UI can read while the clipboard poller writes - Memoize list rows (React.memo) so selection/focus changes don't re-render every row's preview - Add docs/GUIDE.md (living install + usage doc), docs/SHARING.md, docs/TESTING.md, docs/LAUNCH-AT-LOGIN.md, docs/PRODUCT.md, CHANGELOG.md, ROADMAP.md - Add homelab Gitea Actions CI (.gitea/workflows/ci.yml) + gitleaks allowlist - Bump version to 0.2.0
3.6 KiB
3.6 KiB
maCopy roadmap
Living list of shipping ideas. Checked items are done (or landed in the current branch).
Done recently
- Global hotkey
Ctrl+`(avoids macOS Cmd+` window-cycle); configurable - Performance: pasteboard changeCount, list previews, no full-image list payloads
- Image thumbnails in the picker (+ backfill)
- Reliable left-click paste (mousedown + delayed blur hide)
- Image paste via real clipboard image write
- Sensitive redaction — save passwords / cards / banking / secrets fully, show
••••in the list; paste still uses the real value - Paste transforms — right-click → Transform (trim, case, collapse, JSON pretty, single line)
- Paste plain — ⌥/Alt+click or “Paste plain” (strip HTML-ish formatting / entities)
- Launch at login wired to macOS Login Items
- Visible
npm run test:visualwalkthrough - Copy only — right-click → Copy puts content on the clipboard without auto-paste/hide
- Color swatches — hex/rgb/hsl entries show a preview chip (Ditto/Pastebot-style)
- SQLite speed pragmas — WAL + synchronous=NORMAL so reads don't block on writer fsyncs
- Memoized list rows — selection/focus changes no longer re-render every row's preview
Next up (high value)
- Exclude apps — don’t capture from 1Password / banking / Terminal patterns (macOS frontmost app filter)
- Signed + notarized release + install to
/Applications(see docs/SHARING.md) - Accessibility first-run guide
- CI on
npm run check - Default transform preference in Settings
- Snippets / favorites — named, always-available text (separate from history)
- Ignore patterns — regex list that auto-drops or auto-redacts matches
- Auto-delete window for sensitive — purge redacted items after N minutes (optional)
- Virtualized list — if history UI grows past a few hundred rows
Later / brainstorm
Privacy & trust
- Encrypt DB at rest (macOS Keychain-wrapped key)
- Per-entry “never show again” / blacklist hash
- Paste confirmation for sensitive items (
Confirm paste?) - Clear sensitive on lock / sleep
- Don’t sync sensitive items if/when sync exists
Capture quality
- HTML + plain dual capture with “prefer plain” default
- File lists / Finder copy
- Link enrichment (title/favicon for URLs)
- OCR on image entries → searchable text (private, on-device)
Paste power
- Paste stack / sequential paste (next item on each paste)
- Paste as keystrokes (for fields that block paste)
- Numbered paste queue from multi-select order
- Date/time templates, UUID, lorem in snippets
- Shell-escape / URL-encode / base64 transforms
- “Edit before paste” quick editor sheet
UX polish
- Compact vs comfortable density
- Pin board / tabs (All · Pins · Images · Sensitive)
- Drag item onto another app
- Keyboard: Tab into transforms,
/transform palette - Menu bar: last N items quick-paste submenu
- Sound / haptic optional on paste
Sync & backup
- Optional Tailscale / local LAN sync between machines
- Export/import encrypted archive
- Time-machine-friendly atomic DB
Power-user system
- Alfred / Raycast callback URL or CLI (
macopy paste 3 --plain) - Shortcuts / URL scheme
- AppleScript / JXA bridge
Hardening
- Sandbox-friendly Accessibility prompt flow + in-app guide
- Crash-safe write-ahead DB
- Telemetry: none (keep it that way); optional local diagnostics export
Non-goals (for now)
- Cloud sync through a third-party host
- Browser extension dependency
- AI “summarize my clipboard” calling external APIs by default