Data

Data & Sync

Current release: local-first with optional end-to-end encrypted Google Drive sync

Google Drive sync is available when you turn it on. Taskliner requests only the openid, email, and drive.appdata permissions. It stores end-to-end encrypted device files in Google Drive’s private appDataFolder. Ordinary Drive files are never requested.

Where your data lives now

Optional Discord completion sharing

Discord sharing is opt-in. When enabled, the browser sends only the completion message allowed by your selected visibility level directly to your own Discord Incoming Webhook. The Taskliner operator does not receive or relay the post.

The Webhook URL is not part of the task document or JSON export. It remains local when Google sync is off; when sync is on, it is shared only inside an encrypted setting. Pending and failed completion reports always remain local. Disconnecting Discord shares an encrypted deletion marker and clears that device’s pending reports.

Make a backup

  1. Open the menu in the top-right corner.
  2. Choose File, then Export (.json).
  3. Keep the downloaded JSON file somewhere safe.

To restore a backup, open File, choose Import (.json), and select the exported file. Import replaces the current document, so export the current document first if you may need it.

Deleting local data

Use your browser’s site-data or storage settings to delete Taskliner data. This can remove the IndexedDB document and the legacy local copy. Export first if you want to preserve the document.

Google Drive sync

Open the account icon and choose Connect Google. On the first synchronized device, Taskliner creates a workspace encryption key and a Taskliner passkey. No passphrase is required. If the browser does not return a WebAuthn PRF result, you must save the generated recovery file before sync can start.

The browser encrypts task state with AES-256-GCM before upload. Cloudflare Pages Functions relays ciphertext and outer identifiers but does not receive task plaintext, the workspace key, or Discord Webhook URLs. It stores the Google account identifier and email, the encrypted OAuth refresh token, and non-secret migration metadata. Google Drive receives encrypted artifacts only.

On a new device, sign in with the same Google account and unlock with the synchronized Taskliner passkey. If that is unavailable, approve the new device from an existing device using the QR flow or the PC code, or import the recovery file. After unlock, that browser stores a locally wrapped key and returns to automatic sync without requiring biometrics on each visit.

If every approved device, usable passkey, and recovery file is lost, the synchronized data cannot be recovered by Taskliner, Google, or the operator. Keep a JSON export for task backup and store the recovery file separately when you rely on Drive sync.

Local IndexedDB task data is not encrypted by this feature. End-to-end encryption protects Drive data and the sync path, not an unlocked browser profile, compromised device, or malicious script running after unlock.

Disconnecting removes the Taskliner session but leaves local and Drive data intact. Use “Disconnect Google everywhere” when you also want Taskliner’s stored refresh token and account record revoked and removed. Use the separate Drive data deletion action when you want to remove Taskliner’s sync files from Google Drive. After deletion, sync pauses until you explicitly confirm a new upload.