Offline and entitlements
This page exists to prevent one support ticket: "my Pro disappeared on a plane".
The short version
TableCore keeps a signed entitlement document on disk and honours it for a bounded window without the network. When that window is exceeded, the application degrades gently to Free — it does not lose your data, your connections or your workspace — and it tells you why.
The window is counted from the last confirmation
Not from when the document was issued.
That distinction is the whole design. A document refreshed at every start is never offline, no matter how old it is; a document last confirmed six days ago is six days into its window even if it was issued a year ago. The clock starts at the last time the account service actually said yes, still valid.
So the practical rule is: open TableCore with a network connection occasionally, and the window resets. You do not need to sign in again.
Turning the clock back does not extend it
Winding the system clock back is the cheapest way to revive an exhausted window, so the application remembers the latest moment it has ever seen and records it even when verification fails.
Recording it only on success left exactly that gap: move the clock forward until the grant dies, then move it back, and the window is whole again because nothing remembered how far it had got.
What degrading to Free means
Nothing is lost
- Your connection profiles stay.
- Your workspace, open tabs, query history and saved queries stay.
- Every non-gated feature keeps working — querying, editing documents, indexes, the schema explorer, the server monitor.
- The six Pro operations become unavailable until the entitlement is confirmed again.
The application says which of these happened rather than simply showing Free. Verification distinguishes its reasons — the signature is wrong and this expired three days ago need completely different sentences.
Where it says so
The account icon in the title bar. It is the one place that answers who am I
and what do I have, and it changes both its tint and its name when a document
has been refused: TableCore account · entitlement not confirmed. Opening it
gives the reason and what to do about it — reconnect, correct the clock, sign in
again, or update — plus a short code such as OfflineGraceExhausted that a
support conversation can be about.
Nothing appears when there is no document. A first run, a signed-out installation and an ordinary free account are not degradations, and the same Free grant is what all of them hold.
What clears the document and what does not
| Event | The document |
|---|---|
| Signing out | Deleted |
| A session revoked from the account panel | Deleted |
| The offline window running out | Kept |
The last row is deliberate: coming back to the network should be a refresh, not a new sign-in.
Where it lives
entitlement.json in your data directory —
%LOCALAPPDATA%\TableCore on Windows. It is a plain file and you can open it.
Nothing in it is a secret, so nothing in it belongs in the credential store, which is reserved for the refresh token and connection strings. Editing the file does not grant you anything: the signature covers the exact bytes of the payload, so a modified document fails verification, and a document that fails verification gives you Free.
The verification checks the signature before parsing the payload. Reading fields out of a document whose authenticity has not been shown would give a forgery a chance to influence something.
Key rotation is a field in the document — the application carries public keys by key id — so rotating a key does not require a new release.
Current state
Not deployed
The entitlement signing key does not exist yet, the release build carries no public key, and the account service does not issue documents. Every release currently grants Free.
Everything on this page describes implemented and verified behaviour on both sides. None of it is in effect until the signing key is generated and the service is deployed, which is a separate decision.