Files
maCopy/docs/SHARING.md
T
ilia e9461ed4f3
CI / skip-ci-check (pull_request) Successful in 4s
CI / secret-scan (pull_request) Successful in 3s
CI / node-ci (pull_request) Successful in 17s
Add copy-only, color swatches, DB speed pragmas, and living docs
- 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
2026-07-14 21:58:31 -04:00

91 lines
3.7 KiB
Markdown

# Sharing maCopy with someone else
## Where the app lives on your Mac
| What | Path |
|---|---|
| Source code | `~/Documents/code/maCopy` (this repo) |
| Built `.app` (after `npm run tauri build`) | `src-tauri/target/release/bundle/macos/maCopy.app` |
| Built `.dmg` installer | `src-tauri/target/release/bundle/dmg/maCopy_<version>_aarch64.dmg` |
| Clipboard database (your data, never shipped) | `~/Library/Application Support/maCopy/clipboard.db` |
| Vault/secrets | none — maCopy has no network calls and no accounts |
The `.app` and `.dmg` are build **artifacts**: they're regenerated by
`npm run tauri build` and are git-ignored. Nothing under `target/` is
committed to the repo.
## Fastest way to share it today (unsigned)
1. Build it: `npm run tauri build`
2. Grab the DMG: `src-tauri/target/release/bundle/dmg/maCopy_0.1.0_aarch64.dmg`
3. Send that file (AirDrop, USB, file share — whatever).
### What the other person needs to do
The build is **ad-hoc signed** (`codesign -dv` shows `Signature=adhoc`,
`TeamIdentifier=not set`) — not signed with an Apple Developer ID and not
notarized. macOS Gatekeeper will refuse to open it with the default
"Apple could not verify… malware" dialog on a *different* Mac (your own
Mac trusts it already because you built it there). This is normal for any
indie app that isn't notarized — it's not a maCopy-specific bug.
The recipient has two options:
**Option A — right-click override (easiest, no Terminal)**
1. Copy `maCopy.app` to `/Applications`.
2. Right-click (or Control-click) the app → **Open** → confirm **Open** in
the dialog. This works even when double-click is blocked, and only
needs to be done once.
**Option B — clear the quarantine flag (Terminal)**
```bash
xattr -cr /Applications/maCopy.app
```
Removes the "downloaded from the internet" quarantine attribute that
triggers Gatekeeper's warning, then the app opens normally.
Either way, once it's launched once and allowed, it behaves like any
other menu-bar app — including **Launch at login** in Settings.
## The "real" way — signed + notarized (for wider distribution)
If you want to share this with people who shouldn't have to right-click
or run Terminal commands (e.g. distributing beyond just you/family), you
need:
1. An Apple Developer ID ($99/yr Apple Developer Program).
2. A "Developer ID Application" certificate in your keychain.
3. Tauri's bundler config filled in (`tauri.conf.json``bundle.macOS.signingIdentity`)
or a manual `codesign --deep --sign "Developer ID Application: ..."` step.
4. Notarization via `xcrun notarytool submit ... --wait` (or `tauri-plugin-updater`'s
signing helpers), then `xcrun stapler staple maCopy.app`.
This is tracked as a ship-blocker in [docs/PRODUCT.md](PRODUCT.md) — not
done yet because it requires an Apple Developer account, which is a cost/
identity decision for you to make, not something that can be automated
away.
## Other distribution ideas (once signed)
| Channel | Effort | Notes |
|---|---|---|
| Direct DMG (current) | none | Works today; Gatekeeper friction as above |
| Private Gitea release / file share | low | Attach the DMG to a Gitea release on your own instance |
| Homebrew cask (`brew install --cask`) | medium | Needs a signed release + a cask formula in a tap |
| Mac App Store | high | Sandbox rules make background clipboard monitoring + AppleScript paste tricky; likely not worth it for this app |
## Sharing the source instead of a binary
If the other person can build it themselves (has Rust + Node), just give
them repo access:
```bash
git clone gitea@git.levkin.ca:ilia/maCopy.git
cd maCopy
npm install
npm run tauri build
```
No signing needed for this path since it's *their* build on *their* Mac —
same Gatekeeper trust maCopy already has on yours.