Tapmerge

Tapmerge Privacy Policy

Draft. This policy is shown early for testers. Its wording may change before Tapmerge is offered on the App Store.

Draft for testers. On 12 November 2026 the owner approved showing this text, marked as a draft, at tapmerge.thoughtfulsteward.org/privacy. The wording may change, and it still needs the owner's approval before it is used for the App Store listing. Prepared for read-only TestFlight 1.0 (19) and the clearly identified practice features below; reviewed 6 November 2026.

Tapmerge is built so that your code and your sign-in stay between your watch and the service that hosts your repositories.

What Tapmerge collects

Tapmerge does not create a separate account for you or include advertising, tracking, analytics or crash-reporting SDKs. You sign in directly with your code-hosting account. In read-only build 19, repository and PR reads go between that service and your watch; production alert enrollment is unavailable.

Apple's TestFlight is a separate beta-testing service. Apple automatically shares crash and usage information with the developer, and also shares feedback you submit; this can include your name, email address and screenshots. See Apple's TestFlight privacy notice. Tapmerge reviews these records only inside Apple's systems, to improve Tapmerge, and does not download, export or copy them anywhere else. Apple's own retention remains governed by its notice.

What stays on your watch

What leaves your watch

The practice alert relay

This section describes the separate practice builds. Production read-only build 19 cannot turn these alerts on. When a practice repository changes, the code-hosting service sends a webhook to our relay on Cloudflare, and the relay asks Apple to tap your watch so it can refresh.

What an alert says: always the same words, "Repository activity changed. Open Tapmerge to refresh." No repository names, no titles, no people, no code.

Turning alerts on: today the project owner approves each watch by hand. The watch shows a six-digit pairing code and a fingerprint of its key, and the owner checks them before approving. The pairing request is kept for 10 minutes.

What the relay keeps about your watch:

What it keeps about events: the service sends the full event, which can include repository and pull request names. The relay reads only the identifiers and the kind of event from it. It keeps the event's delivery number and a fingerprint of the message for 24 hours, to reject repeats, and does not persist the content. An alert waiting to be sent holds your registration and repository identifiers with a 30-minute delivery deadline. The incoming webhook can include repository and PR names even though the alert itself has no content; this is distinct from the direct read-only flow.

Other short-lived records: to limit abuse, the connecting address is represented by a keyed hash for a one-minute rate-limit window, rather than stored as a raw address. Error records hold only a random number, a fixed reason and a time, for at most 7 days.

How long: a registration lasts 24 hours. After that, alerts stop and the watch says so; today only a new pairing, approved by hand, turns them back on. When you sign out, turn alerts off, or Apple reports that the push address no longer works (for example after deleting the app), the push address and waiting work are cleared when the relay confirms the revocation. An unconfirmed cleanup stays visible on the watch. The same clearing happens when Tapmerge is uninstalled or suspended on the account, or loses access to every repository you get alerts for; losing some of them just removes those. When a registration simply expires, it can no longer be used, and the push address is cleared on the next relay cleanup. Cleanup of an expired registration is scheduled one day after expiry. Other expiring records are removed when the scheduled cleanup or next operation processes them; delivery authority does not extend while cleanup is delayed. Tapmerge's own relay is set up to keep no logs at Cloudflare. That setting has not yet been confirmed on the running service.

Today alerts work only for the two practice repositories. Alerts for your own repositories are not available yet; they wait on an independent security review.

Signing out

Signing out removes the sign-in keys and clears ordinary action preferences from the watch, while trying to cancel any practice alert registration. Queue display choices are separate and remain locally for the same account's next sign-in until you choose Show all. If cancelling fails, the watch tells you so. If an action's result is still uncertain, the watch first asks you to check it; signing out anyway keeps that one record.

If you have used alerts, the watch's own signing key also stays in its Keychain after sign-out, so the watch can still prove it is the one cancelling its alert registration if that couldn't be confirmed at once. It identifies only this watch, not you or your account.

Deleting the watch app is not a promise that all protected Keychain items have been erased; that platform behavior has not been physically verified. Use the service's account settings to revoke authorization when you want to invalidate access.

Signing out does not withdraw the app's permission at the code-hosting service. To do that, remove Tapmerge from the authorized apps in your account settings there, and uninstall it from the account or organization to remove its access to repositories.

Other companies involved

Each sees only what its part needs, under its own privacy policy.

Contact

Questions or concerns: tapmerge@thoughtfulsteward.org.