- 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
2.3 KiB
2.3 KiB
Changelog
All notable changes to maCopy. Format loosely follows Keep a Changelog.
[0.2.0] — 2026-07-14
Added
- Configurable global hotkey (default
Ctrl+`; migrates existing users off the old `Cmd+`` default, which conflicted with macOS window-cycling) - Image thumbnails in the picker, with backfill for existing entries
- Sensitive data redaction — passwords/cards/banking previews show
••••in the list; the full value is still stored and still pastes - Paste transforms (trim, case, collapse whitespace, pretty JSON, single line) via right-click → Transform
- Paste plain / without formatting (
⌥/Alt+click or right-click) - Copy only — right-click → Copy puts content on the clipboard without auto-pasting or hiding the window
- Color swatches — hex/rgb/hsl entries show a small preview chip
- Launch at login, wired to macOS Login Items
docs/GUIDE.md— living install + usage referencedocs/SHARING.md— where the app lives and how to share a builddocs/TESTING.md,docs/LAUNCH-AT-LOGIN.md,docs/PRODUCT.md- Visual walkthrough script (
npm run test:visual) and headed test runner (npm run test:headed)
Changed
- Reliable left-click paste (mousedown instead of click, delayed window-blur hide) — fixes intermittent missed pastes
- Image paste now writes a real clipboard image instead of text
Performance
- Clipboard polling watches macOS
NSPasteboardchangeCountinstead of hashing clipboard contents on a fixed timer — eliminates busy CPU usage while idle - Picker list/search IPC returns truncated text previews and image thumbnails only; full content (including image blobs) is fetched lazily, only when an item is actually pasted
- Frontend refreshes on
clipboard-changed/ window-focus events plus a cheaplatest_entry_idpoll, instead of reloading all rows every second - SQLite opened with
journal_mode=WAL+synchronous=NORMALso the UI can read while the background poller writes - List rows are memoized (
React.memo) so selection/focus changes no longer re-render every row's preview
[0.1.0] — initial
- Menu bar clipboard manager: capture text/images/files, full-text search (SQLite FTS5), multi-select, pin, paste-and-refocus via AppleScript, resizable window, dark/light mode, auto-trim history