Downloads & activations per day
DownloadsActivations
All-time downloads by file
Licenses by plan
Generate keys
| Key | Owner | State | Expires | Plan | Devices | Last seen | Notes |
|---|
Download links
The download site's buttons go through a counting redirect, so changing a release here needs no site redeploy.
How licenses work
- Each row in Licenses is one license key stored in Firestore. A user signs in to the app and is allowed in only while they hold a license that is active (not revoked, not expired).
- You create keys here. A key can be assigned to an email (binds automatically when that person signs in with Google) or left unclaimed to hand out; the user then types it into the app (Redeem).
- New accounts also get a free 14-day trial license automatically on first sign-in (plan
trial, 1 device). - Nothing changes on a user's computer instantly. The app holds a signed token and re-checks with the server in the background about every 12 hours while it is running and online. Every action below takes effect at that next check. If the user is offline the token lasts at most 2 days after the last successful check; after that the tool locks until they are back online.
What each button does
| Button | What happens | Asks to confirm? |
|---|---|---|
| Copy | Copies the key to your clipboard. Changes nothing. | No |
| +30d / +365d | Adds days to the expiry. A still-valid license gets the days added to its current expiry; an expired one counts from today. The status is not touched (a revoked license stays revoked). | No |
| Set date | Sets the expiry to the end of the date you type (YYYY-MM-DD, UTC). Can lengthen or shorten. | No |
| Force expire | Sets the expiry to just before now, so the license shows expired. Owner and devices stay. The app cannot renew it until you extend it (+30d then counts from today). | Yes |
| Revoke | Blocks the license without deleting anything. See the walkthrough below. | Yes |
| Restore | Shown on revoked licenses. Sets the status back to active. The expiry is not changed, so a license whose date has passed still shows expired. | No |
| Bind | Asks for an email and attaches the key to that account, replacing the current owner and freeing all device slots. If the person has not signed up yet, the key is reserved and binds when they sign in with a verified Google account. The previous owner loses access at their next check. | No |
| Edit | Changes plan, max devices and notes (three prompts; Cancel on any stops the edit). Lowering max devices does not disconnect devices already registered; it only stops new ones joining. | No |
| Unbind | Shown when the key has an owner. Removes the owner and email and frees all devices. The key becomes an unclaimed key that anyone holding it can redeem. The old owner loses access at their next check. | Yes |
| Reset devices | Empties the device list (the owner stays). Running machines keep working until their next check, then register again and take slots. Use it to free slots for a new computer. | Yes |
| Delete | Permanently deletes the license. Cannot be undone. The owner loses access at their next check. | Yes |
Which one should I use?
- Lock someone out, maybe temporarily: Revoke (undo with Restore).
- End a subscription on its date: Set date, or just let it expire.
- End it now: Force expire.
- Customer got a new computer: Reset devices (or raise max devices with Edit).
- Key was given to the wrong person: Unbind, or Bind to the right email.
- Clean up a mistake or test key: Delete. Do not use Delete to lock a user out: if it was their only license, their next sign-in creates a fresh 14-day trial.
What happens when you click Revoke
- You confirm. The license's status in Firestore changes to
revoked. Nothing else is changed: the key, owner, expiry date, plan and device list all stay. The row shows a red revoked pill and the button becomes Restore. - The user notices nothing yet. Their app holds a signed token that is still valid, so the tool keeps working. Revoke cannot reach into their computer.
- The app's next check. The app checks in the background about every 12 hours while it is running and online (it looks hourly and renews once the token is 12 hours old). Typical delay is up to 12 hours; it is not immediate. The user can speed it up by signing out and in again, or using the refresh in the license panel.
- The server refuses. It answers "This license has been revoked." and issues no new token. The app deletes its stored token.
- The tool locks. The inspector shows the license screen with that message, the API returns 402 and the live connection is closed. The user stays signed in to their account but cannot intercept or inspect anything.
- What they can still do. Redeem a different valid key, or sign in with an account that has an active license. They cannot redeem the revoked key again, and the revoked key cannot be used by anyone else.
Edge cases
- The user has another active license (for example a second key or a trial): the app switches to the license that expires last, so they keep working. Revoke only blocks that one key.
- The user is offline: they keep working until their token's check-by date (at most 2 days after the last successful check), then see "Connect to the internet to refresh your license". Once online, the revoke applies.
- They already have a trial: revoking their only license does not create a new trial, because the account still owns a license. (Deleting it would.)
- Their device slots stay occupied by the revoked key until you Reset devices, Unbind or Delete it. That does not matter unless you plan to reuse the key.
- To undo: click Restore. The user's app retries on its own within an hour or so, or immediately if they refresh. If the expiry date has passed, extend it as well.
Good to know
- Only accounts with the
adminpermission can use this page. Every action runs on the server and is checked there. - Changes are not logged with a history yet; use the Notes field (Edit) to record why you changed something.
- The Dashboard numbers come from the same data. Download counts exclude bots, and are per-day totals, not unique people.