TZGyn e0c47ad010 Scope the selection to the current view
A selection made in one workspace survived switching workspace or tab, so
the selection bar and its batch actions (copy, delete) kept acting on items
that were no longer visible. Switching workspace, switching tab, or closing
search now clears the selection.
2026-10-24 20:20:43 +08:00

Prompt

A native macOS app for keeping prompts and photos, in the spirit of Copper by shadcn: a floating panel that sits next to your work. Select what you need and send it back to your clipboard.

  • Click to select — clicking a card selects it (Shift+click for a range), and the selection bar copies a single item as-is, the whole selection as a numbered list or as plain newline-separated lines, or deletes it.
  • Text or photo — copying sends text back as text and a photo back as an image.
  • Capture from anywhere — select text in any app and tap Left Shift twice.
  • Photos — paste (Cmd+V), drag & drop, or add via the photo button.
  • A composer that grows — long prompts wrap and the input grows up to seven lines, then scrolls. Return sends, Shift+Return inserts a newline.
  • Launch at Login — toggle in the sync panel (Cmd+,) or the menu bar icon's right-click menu, to start Prompt on boot.
  • Workspaces — type # Name in the composer, or use "New Workspace" in the Cmd+K switcher (which opens a name modal); Cmd+K switches, and the up/down arrows in the switcher reorder them. (The code and the saved JSON still call these sections so existing data keeps working.)
  • An "All" tab — a global view of every prompt across every workspace, each labeled with the workspace it lives in.
  • Edit in place — right-click → Edit opens an in-panel modal on the same theme, not a separate window.
  • Right-click for actions — Copy, Copy as List, Copy as Lines, Mark as Done, Edit, Open, Merge Notes, Move To, Delete — each acting on the whole selection.
  • Search — Cmd+F searches across all workspaces.
  • Sync (optional) — generate an 8-digit code (1234-5678) on one Mac and enter it on the other; no account, no login. The code is the only secret.
  • Local & private — everything lives in ~/Library/Application Support/Prompt/ (store.json + Images/). No account, no sync, no telemetry.

Shortcuts

Action Shortcut
Capture current selection Left Shift ×2 (or Cmd+Shift+C)
Show/hide panel Right Shift ×2 (or Cmd+Shift+Space)
Switch/create workspace Cmd+K
Search Cmd+F
Focus composer Cmd+N
New line in composer Shift+Return
Sync settings Cmd+,
Copy selection as numbered list Shift+Cmd+C
Copy selection as plain lines Option+Cmd+C
Clear selection Esc
Close panel Esc

Double-Shift gestures require Accessibility access (Prompt reads the selection by simulating Cmd+C, then restores your clipboard untouched). Until it is granted, use Cmd+Shift+Space and Cmd+Shift+C, or click the menu bar icon — and launching the app again always brings the panel back. Bare keys like Space and Cmd+C are deliberately not bound inside the panel so they never conflict with typing in the composer.

Install

brew tap TZGyn/tap https://gitea.tzgyn.dev/TZGyn/homebrew-tap.git
brew trust TZGyn/tap
brew install --cask prompt

Sync server

Sync is optional and needs the small Go backend in Server/. There is no authentication: a sync group is identified by an 8-digit code, and whoever has the code can read and write the group.

createdb prompt_sync
cd Server
PROMPT_SYNC_DATABASE_URL="postgres://localhost:5432/prompt_sync?sslmode=disable" \
  go run .          # listens on :8080

Or build the Docker image (docker build -t prompt-sync Server/) and point it at your own Postgres — see Server/README.md for that and for deploying to a host.

Then in the panel: click the sync icon (or Cmd+,), confirm the server URL, and either Generate Code on the first Mac or paste the code into Join on the other.

Notes:

  • Sync defaults to https://prompt.tzgyn.dev; change it in the sync panel to point at your own server. Both Macs must be able to reach it — a LAN address or a Tailscale hostname works, and localhost only works if the server runs on the same Mac. See Server/README.md to deploy it.
  • Joining a group that already has notes replaces what's on that Mac.
  • The app polls every 5 seconds (a tiny version check) and pushes 1.5s after a change; last write wins, and changes that came from the server are not echoed back.
  • Verify sync from a terminal with Prompt --sync-check.

Build from source

swift build                          # debug build
swift run Prompt                     # dev run (menu bar icon appears)
./build-app.sh 0.1.0                 # release build + Prompt.app + icon + codesign
./release.sh 0.1.0                   # build + dist/Prompt.zip (+ notarization when configured)

Requires macOS 14+.

S
Description
A Copper-style macOS panel that keeps prompts and photos one click from the clipboard
Readme
5.7 MiB
Prompt 0.1.19
Latest
2026-10-28 14:13:14 +00:00
Languages
Swift 86.2%
Go 8.1%
Shell 5%
Dockerfile 0.7%