maCopy/docs/SHARING.md
ilia e9461ed4f3
All checks were successful
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

3.7 KiB

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)

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.jsonbundle.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 — 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:

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.