Privacy Policy
Last updated: 21 October 2026
Short version: Snipkin, Tweakle and Shakelf collect nothing, this website has no analytics and sets no cookies, and the personal data that reaches me is what you send me yourself, through the contact form or by email. Nothing is on sale at the moment, so there are no orders. There is no account to create with me. Two apps need more than that sentence, and each has its own section below: Quotch talks to claude.ai, with your own session, to read your own usage numbers, and BudgetDice, the board game companion for iPhone and Android, stores the sheet of a game session in Google Firebase, in the European Union, so the players at the same table can see it. The two games for children have their own policies, linked under Children.
Who is responsible
This site and the apps on it are made by Timotei Petre, an independent developer based in Romania, acting as data controller. You can reach me at [email protected] (hi (at) ontagonal.app) for anything in this policy.
Snipkin, Tweakle and Shakelf collect nothing
Snipkin, Tweakle and Shakelf run entirely on your Mac. Quotch and BudgetDice are covered separately below, because they do use the network:
- No network access. Snipkin and Shakelf run inside Apple's App Sandbox with no networking capability at all, they cannot send data anywhere, because they have no way to reach the internet. Tweakle cannot be sandboxed (a scroll-event tap does not work inside one), so it keeps the same promise the plain way: it contains no networking code whatsoever.
- No analytics, no telemetry, no crash reporting. Nothing is counted, timed, or reported.
- No account, no login. License codes are verified offline, on your machine. Quotch has no account with me either, but it does ask you to sign in to your own Claude account, see below.
- Your content stays yours. Screenshots, files you drop on a shelf, and anything else you handle with these apps never leave your Mac.
Quotch and your Claude account
Quotch shows the usage limits of your own Claude plan, so it has to read them from claude.ai. You sign in to claude.ai in a window inside the app, exactly as you would in a browser. It also shows how full the context window of your current Claude Code session is, which it reads from files on your Mac. What follows from that:
- The session stays on your Mac. The claude.ai session cookie is kept in the app's own data on your Mac. It is sent only to claude.ai, and it never appears in any log.
- What it contacts. From claude.ai, Quotch reads the usage figures of your account, plus the account and organization names it shows in its settings. It also reads the public status page at status.claude.com, so it can tell you when the fault is Claude's rather than yours; that request carries no session, no cookie and nothing about you, and it is made at most every five minutes, or every 30 seconds while reading from claude.ai is failing. If your Claude account has a profile picture, the app fetches it once, from whatever address claude.ai gives for it, and keeps it on your Mac until you disconnect. A few seconds after it starts, then once a day, and whenever you check for updates yourself, it asks GitHub whether a newer version of the app exists, an anonymous request to a public list of releases that carries no account data; the automatic check can be switched off in its settings. When you press Update, the new version is downloaded from the same GitHub releases. The first time you install an update from inside Quotch, macOS may ask for App Management, so the app can replace itself in Applications; decline it and you can still update by downloading the .dmg. There is no server of mine in the picture, no analytics and no telemetry.
- Claude Code transcripts are read on your Mac. For the context window, Quotch reads the end of the transcript files that Claude Code keeps in
~/.claude/projects. From them it keeps only the number of tokens, the model, the time and the project folder. The text of your conversations is not kept, and nothing from these files leaves your Mac. Your chats on claude.ai are not read at all. - It uses your own session. Quotch asks claude.ai, with your session, for the same usage figures that claude.ai shows you on its settings page. Your use of Claude is governed by your agreement with Anthropic. Quotch is not affiliated with Anthropic and is not endorsed by them.
- Signing out. Disconnecting in the app deletes the stored session, the account and organization names and the profile picture from your Mac.
BudgetDice, the board game companion
BudgetDice (iPhone and Android) keeps the financial sheet of a Cashflow session, and a shared table means shared data. There is no account: the app signs in anonymously, through Firebase Authentication, so your identity is a random identifier tied to the installation. Google runs that sign-in from the United States and, like any sign-in service, uses your IP address and your device's user agent to prevent abuse. When you join a table, the table code, the display name you type, the figures on your sheet, your operation log and the cards players add are stored in Google Cloud Firestore, in the europe-central2 region (Warsaw, European Union), and are visible only to the players at that table. No email address, no phone number, no location, no contacts, no photos, and no analytics, crash reporting or ads anywhere in the app. The full policy, including how long table data is kept and how to delete your data from the app, is on its own page: BudgetDice privacy policy.
macOS permissions
Where an app needs a macOS permission, it is used only for that purpose and macOS asks you first. Snipkin needs Screen Recording, without which it cannot capture the screen at all. At its first launch it also asks to show notifications, for a single welcome notification created on your Mac; that one is optional, and if you decline, the app works the same. Tweakle, the app that was called MouseScroll until version 1.0, needs Accessibility, which is what macOS requires to alter scroll events as they pass; it reads the direction of a scroll, never the window contents and never the clipboard. Its Caps Lock indicator asks for no permission of its own: macOS tells the app only that some modifier key changed, and the app then reads the Caps Lock state from the system itself. It never sees which keys you press or what you type, and it keeps nothing. Shakelf needs no permission at all. Quotch asks to show notifications only if you switch them on in its settings.
This website
The site is a set of static pages. It sets no cookies, runs no analytics and includes no third-party trackers, fonts, or scripts, with one exception: the contact page loads Cloudflare Turnstile, described below, to keep robots out of the form. There is nothing here that follows you.
It is hosted on Cloudflare Pages. Like any web host, Cloudflare processes technical request data, including your IP address, in order to deliver pages and protect against abuse. I do not receive individual visitor data from this and cannot identify you from it.
The .dmg download buttons lead to GitHub, which serves the app files. When you download an app, GitHub receives your IP address and the details of the request, under GitHub's privacy statement.
The contact form
The form on the contact page sends me your name, your email address, the app and the topic you pick, and your message. This is what happens to them:
- The robot check. The form is protected by Cloudflare Turnstile. To tell people from robots, Turnstile processes your IP address and technical signals from your browser and connection, such as the user agent. When you send the form, the site passes your IP address to Cloudflare once more, to confirm the check. Cloudflare also uses these signals to improve its bot detection, under its Turnstile privacy terms.
- Your country. Cloudflare tells the site which country a message comes from. The form uses it only to refuse a few regions it does not accept messages from, and does not keep it.
- Delivery. The message goes through Cloudflare Email Service to my mailbox, which is hosted by Google (Gmail). Your IP address and your country are not part of it, and the website keeps no copy.
- Use. I use your name, address and message only to answer you. They are not added to any list, not shared, and not used for marketing.
- How long. I keep the conversation as long as it is useful for answering you and for any follow-up on the same matter. You can ask me to delete it sooner.
When you email me
Mail sent to hi@, support@ or [email protected] is forwarded by Cloudflare Email Routing into a Gmail mailbox (Google). Your message and address are used to reply to you and are kept as long as the correspondence is useful for support.
When paid plans start
Nothing is on sale today. When paid plans start, purchases will not be processed by me. FastSpring will act as the merchant of record: they will be the seller for the transaction, collect your payment and billing details, and handle tax and invoicing. I will never see or store your card details.
From a completed order I will receive limited information, typically your name, email address, country, and what you bought, which I will use only to deliver your license code and to help you if you write to me. FastSpring's own handling of your data is governed by FastSpring's privacy policy.
Why I use data, and on what legal basis
- Delivering this website and keeping it safe, through Cloudflare: my legitimate interest in running the site (Article 6(1)(f) GDPR).
- The robot check on the contact form: my legitimate interest in keeping the form free of spam (Article 6(1)(f)).
- Answering you, from the contact form or by email: my legitimate interest in replying to what you ask (Article 6(1)(f)).
- BudgetDice: running the shared table you choose to join (Article 6(1)(b)), and protecting its database from abuse (Article 6(1)(f)). The details are on its own page.
- Orders, once paid plans start: delivering what you bought (Article 6(1)(b)), and keeping invoice records for as long as tax law requires (Article 6(1)(c)).
None of this relies on your consent.
Who else handles data
I rely on a few providers, and each sees only what its job needs:
- Cloudflare, based in the United States: hosts this website, runs Turnstile on the contact page, forwards mail sent to my addresses (Email Routing) and delivers contact form messages (Email Service). It does this on my behalf, as a processor; for Turnstile it also uses the signals to improve its bot detection, as a controller in its own right.
- Google, which may process data in the United States: hosts my mailbox (Gmail), where your messages arrive. For BudgetDice, Google Firebase stores table data in the European Union and runs the anonymous sign-in from the United States.
- GitHub, based in the United States: serves the app downloads, and sees the IP address of whoever downloads, under its own privacy statement. For BudgetDice it also runs the daily cleanup that deletes inactive tables and unused anonymous identifiers, as my processor; the BudgetDice policy has the details.
- FastSpring, based in the United States: will sell the licenses as merchant of record, under its own privacy policy, once paid plans start. Nothing goes to FastSpring today.
When data leaves the European Union, the transfer relies on the EU-U.S. Data Privacy Framework where the provider is certified under it, and otherwise on the standard contractual clauses approved by the European Commission.
What I never do
- Sell, rent, or trade your personal data.
- Build profiles, run ads, or use your data for advertising.
- Send marketing email you did not ask for.
Children
Snipkin, Tweakle, Shakelf and Quotch are utilities, and BudgetDice is a companion for an adult board game. None of them is directed at children. Nothing in them asks for an age, an identity document or contact details; BudgetDice asks only for a display name at a game table, which can be any nickname.
The two games made for children have their own privacy policies: AnimaLearn and Noah's Story.
Your rights
Under the GDPR you can ask me to:
- tell you whether I hold personal data about you, and give you a copy (access);
- correct it (rectification);
- delete it (erasure);
- limit what I do with it (restriction);
- send the data you gave me, under a contract or with your consent, to you or to another provider, in a common machine-readable format (portability);
- stop using it where I rely on my legitimate interest (objection).
Where processing relies on your consent, you can withdraw it at any time; nothing described here does today. Write to [email protected] (hi (at) ontagonal.app) and I will respond.
You can also complain to the Romanian data protection authority, ANSPDCP, or to the authority in the EU country where you live or work.
Once there are orders, there will be limits: FastSpring and I may need to keep invoice records for as long as tax law requires, even after a deletion request. For data held by FastSpring as merchant of record, contact them directly, or write to me and I will point you the right way.
Changes
If this policy changes, the date at the top changes with it. Material changes will be summarised here rather than quietly folded in.
- 21 October 2026: Quotch: described that pressing Update downloads the new version from GitHub releases, and that macOS may ask for App Management the first time an update is installed from inside the app.
- 5 October 2026: BudgetDice deletes a table after 90 days without changes, and an anonymous identifier after 90 days without use, through a daily cleanup that runs on GitHub, and has a Delete my data button in the app; its own policy has the details.
- 4 October 2026: Added who else handles your data and where it goes, the legal basis for each use, the contact form with its robot check and the notification permissions of Snipkin and Quotch; updated the section on your rights (now listed one by one, with the right to complain to ANSPDCP), the Quotch section (the Claude Code transcripts it reads on your Mac), the BudgetDice section (its sign-in runs from the United States and uses your IP address), the Children section (links to the policies of the two games for children) and the section on paid plans (nothing is on sale yet).