TableCore

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

EventThe document
Signing outDeleted
A session revoked from the account panelDeleted
The offline window running outKept

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.