Humanize README and docs tone #7
@@ -1,6 +1,6 @@
|
||||
# maCopy
|
||||
|
||||
A fast, native macOS clipboard manager that lives in your menu bar. Built with Tauri 2, React, TypeScript, and SQLite.
|
||||
macOS clipboard manager in the menu bar. Built with Tauri 2, React, TypeScript, and SQLite.
|
||||
|
||||

|
||||

|
||||
@@ -8,32 +8,33 @@ A fast, native macOS clipboard manager that lives in your menu bar. Built with T
|
||||
|
||||
## Features
|
||||
|
||||
- **Menu bar app** — no dock icon, stays out of your way
|
||||
- **Global hotkey** — `` Ctrl+` `` opens the window (doesn’t steal macOS Cmd+` window-cycle); configurable in Settings
|
||||
- **Clipboard monitoring** — watches the macOS pasteboard changeCount (no busy hashing while idle); captures text, images, and file paths
|
||||
- **Fast picker** — list API returns truncated previews only (image blobs stay in SQLite until paste); refreshes on copy / window focus instead of reloading everything every second
|
||||
- **Full-text search** — instant filtering via SQLite FTS5
|
||||
- **Quick paste** — `Cmd+1` through `Cmd+9` to paste the Nth item directly into the previous app
|
||||
- **Paste & return** — clicking an entry copies it to clipboard, hides the window, and auto-pastes into the previously-focused app
|
||||
- **Multi-select** — `Cmd+Click` to toggle, `Shift+Arrow` or `Shift+Click` to range-select, `Cmd+A` for all, `Enter` to paste selected
|
||||
- **Pin entries** — pinned items stay at the top and are never auto-deleted
|
||||
- **Context menu** — right-click for Paste, Pin/Unpin, Delete (with multi-select support)
|
||||
- **Resizable window** — drag edges to resize; size is remembered between sessions
|
||||
- **Window positioning** — choose where the window appears: near cursor, center, or any corner (configurable in Settings)
|
||||
- **Auto-trim** — keeps up to 50K entries (configurable: 1K/5K/10K/50K); oversized images are skipped
|
||||
- **Dark/light mode** — follows macOS system appearance
|
||||
- **Privacy** — whitespace-only entries are ignored; password/card/banking previews are redacted (full value still pastes); pause monitoring from the tray
|
||||
- **Paste plain / transforms** — ⌥-click or right-click for plain text and transforms (trim, case, JSON, …)
|
||||
- **Copy only** — right-click → Copy puts content on the clipboard without auto-pasting or hiding the window
|
||||
- **Color swatches** — hex/rgb/hsl entries (e.g. `#3366ff`) show a small color chip in the list
|
||||
- **Launch at login** — Settings toggle registers a macOS Login Item (use the built `.app`)
|
||||
- **Image thumbnails** — list shows small thumbs; full images stay in the DB until paste
|
||||
| Area | Behavior |
|
||||
|------|----------|
|
||||
| Menu bar | No dock icon; lives in the tray |
|
||||
| Global hotkey | `` Ctrl+` `` opens the window (does not steal macOS Cmd+` window-cycle); configurable in Settings |
|
||||
| Clipboard monitoring | Watches pasteboard changeCount; captures text, images, and file paths |
|
||||
| List performance | Truncated previews in list API; image blobs stay in SQLite until paste |
|
||||
| Search | Full-text filtering via SQLite FTS5 |
|
||||
| Quick paste | `Cmd+1` through `Cmd+9` paste the Nth item into the previous app |
|
||||
| Paste and return | Click copies, hides window, auto-pastes into the previously focused app |
|
||||
| Multi-select | `Cmd+Click` toggle; `Shift+Arrow` or `Shift+Click` range; `Cmd+A` all; `Enter` to paste |
|
||||
| Pin | Pinned items stay at top and skip auto-delete |
|
||||
| Context menu | Right-click: Paste, Pin/Unpin, Delete (multi-select aware) |
|
||||
| Window | Resizable; size remembered; position: near cursor, center, or corner |
|
||||
| Auto-trim | Up to 50K entries (1K/5K/10K/50K); skips oversized images |
|
||||
| Appearance | Dark/light follows macOS |
|
||||
| Privacy | Ignores whitespace-only entries; redacts password/card previews; pause monitoring from tray |
|
||||
| Transforms | Option-click or right-click: plain text, trim, case, JSON, etc. |
|
||||
| Copy only | Right-click Copy puts content on clipboard without auto-paste |
|
||||
| Color swatches | Hex/rgb/hsl entries show a color chip in the list |
|
||||
| Launch at login | Settings toggle registers a macOS Login Item |
|
||||
| Image thumbnails | Small thumbs in list; full image loaded on paste |
|
||||
|
||||
## Docs
|
||||
|
||||
| Doc | |
|
||||
|---|---|
|
||||
| [docs/GUIDE.md](docs/GUIDE.md) | **Install + usage guide** (the living doc — start here if you just want to use the app) |
|
||||
| [docs/GUIDE.md](docs/GUIDE.md) | Install and usage guide — start here to use the app |
|
||||
| [docs/README.md](docs/README.md) | Docs index |
|
||||
| [docs/TESTING.md](docs/TESTING.md) | Automated tests |
|
||||
| [docs/LAUNCH-AT-LOGIN.md](docs/LAUNCH-AT-LOGIN.md) | Start when Mac logs in |
|
||||
@@ -48,7 +49,7 @@ A fast, native macOS clipboard manager that lives in your menu bar. Built with T
|
||||
- **Xcode Command Line Tools** — `xcode-select --install`
|
||||
- **Accessibility permission** — required for auto-paste (System Settings → Privacy & Security → Accessibility → add maCopy)
|
||||
|
||||
## Quick Start
|
||||
## Quick start
|
||||
|
||||
```bash
|
||||
git clone gitea@git.levkin.ca:ilia/maCopy.git
|
||||
@@ -81,7 +82,7 @@ The app will compile the Rust backend, start the Vite dev server, and launch the
|
||||
|
||||
## Development
|
||||
|
||||
### Project Structure
|
||||
### Project structure
|
||||
|
||||
```
|
||||
maCopy/
|
||||
@@ -127,7 +128,7 @@ maCopy/
|
||||
| `npm run lint` | TypeScript type-check |
|
||||
| `npm run check` | Lint + all tests |
|
||||
|
||||
### Tech Stack
|
||||
### Tech stack
|
||||
|
||||
| Layer | Technology |
|
||||
|---|---|
|
||||
@@ -147,7 +148,7 @@ maCopy/
|
||||
|
||||
A background Rust thread watches the macOS pasteboard **changeCount** and only reads the clipboard when it changes. Text, images (full PNG + thumbnail), and file paths are captured. List IPC returns truncated / redacted previews and image thumbnails — not multi‑MB blobs.
|
||||
|
||||
### Paste & Return
|
||||
### Paste and return
|
||||
|
||||
When you select an entry, maCopy writes it to the system clipboard (text or image), hides its window, waits briefly for macOS to refocus the previous app, then simulates `Cmd+V` via AppleScript. This requires Accessibility permission. Optional transforms (plain, trim, JSON, …) run before the write.
|
||||
|
||||
@@ -155,11 +156,11 @@ When you select an entry, maCopy writes it to the system clipboard (text or imag
|
||||
|
||||
The database uses a content-synced FTS5 virtual table with triggers that automatically keep the full-text index in sync with the `clipboard_entries` table. This enables instant prefix search as you type. Opened with `journal_mode=WAL` + `synchronous=NORMAL` so the UI can read while the background poller writes, without blocking on full fsyncs.
|
||||
|
||||
### Window Behavior
|
||||
### Window behavior
|
||||
|
||||
The window uses `titleBarStyle: "overlay"` for native resize handles while keeping the frameless aesthetic. It's always-on-top and hides on blur (with a short delay so clicks register). Position is determined by the user's setting (near cursor via CoreGraphics, center, or a screen corner).
|
||||
|
||||
## Data Storage
|
||||
## Data storage
|
||||
|
||||
The SQLite database is stored at:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user