Getting started
tasks is a local-first kanban board. Every change is saved in this browser right away, even when you are offline. With sync connected, the same boards also update on your other devices.
- Edit a note. Click or tap it and start typing. Press Ctrl+Enter to save; on Mac, use ⌘+Enter. You can also click away.
- Add work. Use + Add note at the bottom of a list, and + Add list after the last column.
- Make another board. Use the + next to the board tabs, or the ⋯ menu → Add board.
- Use it on your phone. Open Sync, copy the sync link, and open that link on your phone. Both devices then share the same private boards.
Tip: The first board already has To do, Doing, and Done lists, so you can start immediately. The + at the top adds more boards.
Boards & lists
Board tabs run across the top. Select a tab to switch boards; on a phone, swipe the tab strip or the board sideways to reach more.
- Add a board: select + next to the tabs, or open ⋯ → Add board. New boards start with To do, Doing, and Done.
- Rename a board: open ⋯ → Rename board.
- Delete a board: open ⋯ → Delete board. Its lists and notes go with it, and the deletion syncs to your other devices. Board deletion cannot be undone, so export a backup first if you may need it later.
- Add a list: select + Add list at the right edge of the board.
- Rename a list: select its title, type the new name, and press Enter.
- Reorder lists: drag the dotted grip beside a list title on desktop, or press and hold the list header on a touch screen and drag. The list ⋯ menu also has Move left and Move right.
- Delete a list: open the list ⋯ menu → Delete list. Its notes are deleted too; use Undo in the toast if you change your mind.
Notes
Click or tap a note to edit it in place. Press Ctrl+Enter to save; on Mac, use ⌘+Enter. You can also click away. Esc cancels the edit. Clearing all of a note's text deletes it; a brand-new empty note is simply removed.
- Add: select + Add note at the bottom of a list. Note ⋯ → Add note below inserts one directly after a note.
- Move: drag a note by its dotted handle on desktop. On a touch screen, press and hold a note for a moment, then drag it to another position or list.
- Actions: the note ⋯ menu can copy the text, open a link found in the note, collapse or expand long text, switch between normal and raw styling, or delete the note.
- Collapse: a collapsed note shows only one line. This is useful for long reference notes.
- Raw style: a slightly bolder, denser look for plain-text notes.
- Undo and redo: Ctrl/⌘+Z undoes the last change on the current board. Deletions also show an Undo button in the toast.
Keyboard shortcuts
Edit the focused noteEnterF2
Save the note being editedCtrl / ⌘ + Enter
Cancel editing, close a menu or dialogEsc
Undo on the current boardCtrl / ⌘ + Z
Redo on the current boardCtrl / ⌘ + Shift + ZorCtrl / ⌘ + Y
Move focus between controls and notesTabShiftTab
On Windows and Linux use Ctrl; on Mac use ⌘. Undo history is kept separately for each board.
Sync between devices
Sync is private and key-based. There are no accounts, emails, or passwords. On a new device, tasks creates a private 43-character sync key (or saves one from a sync link), and boards sync automatically whenever you are online.
- Join from a link: open Sync on a connected device, select Copy link, and open that link on the other device. The key is saved there and removed from the address bar.
- Join by key: on a disconnected device, open Sync, paste the key into the Join field, and select Join.
- Find your key later: open Sync and use Show or Copy beside the sync key. The sync link is shown above it.
- What syncs: boards, lists, notes, ordering, deletions, and note styles. Theme, text size, and column width are device settings and stay local.
- When it syncs: shortly after each change, every 20 seconds while the tab is visible, and when the tab regains focus or you come back online.
- Status pill: Local, Saving…, Syncing…, Synced, Offline, or Sync issue. Select it to open Sync and choose Sync now.
- Switch syncs: choose Sync → Disconnect first. Your boards stay on the device. Then paste the other key into Join; if this device has boards, tasks asks before merging them into the shared sync.
- Disconnect: removes the sync key from this device. Local boards remain, but new changes will no longer reach your other devices.
When two devices edit at the same time, changes merge board by board, list by list, and note by note. If the same note is edited on both devices before they sync, the most recently edited version wins. Note moves are protected so a note does not appear in two lists.
The key is the password for normal boards. Anyone with the link or key can read and edit the normal boards. There is no account, no password reset, and no way to recover a lost key from the server. Keep the link private.
Private board
The private board is a hidden, encrypted board for notes you do not want stored as readable text. Open it from ⋯ → Private board. It never appears in the normal board tabs.
- Create it once. Choose a password. The app creates a random vault key, encrypts it with a key derived from your password using PBKDF2-SHA-256, and encrypts the board with AES-GCM.
- Unlock it. Enter the password on this device. Decryption happens in memory; the password and the unlocked notes are never written to local storage or sent to the server.
- Use it like a board. Add lists and notes, edit, drag, and undo exactly as on a normal board. Changes are re-encrypted before they are saved or synced.
- Lock it. Select Private in the top bar or use ⋯ → Lock private board. It also locks after five minutes without activity and whenever the page is reloaded.
- Use it on another device. Sync must be connected. The encrypted board appears in the app menu on the other device; unlock it with the same password.
What sync stores: only the encrypted envelope, including a randomly salted wrapped key, an IV, and ciphertext. Cloudflare D1 never receives the private notes or the password. The sync key alone cannot decrypt the private board.
There is no password recovery. If you forget the password, the encrypted board is unreadable. The only option is Forgot password? Reset board, which permanently deletes the encrypted board from every synced device and lets you start a new one.
- Locking: closing the private board does not delete anything. Reloading the page drops the decrypted copy from memory, so the password is required again.
- Backups: the private board is intentionally excluded from Export board, Back up all boards, and normal imports. There is no unencrypted backup. Keep the password somewhere safe.
- Concurrent edits: when two unlocked devices edit before syncing, the private boards are decrypted in memory and merged like normal boards. If one device is locked, the most recently encrypted version wins.
- Existence is visible: the encrypted envelope, its approximate size, and its update time can be seen by anyone with the sync key. The notes remain encrypted.
Install & offline
tasks is a progressive web app, so it can run full screen like a native app.
- iPhone or iPad (Safari): open the Share menu, then choose Add to Home Screen.
- Android (Chrome): open the ⋮ menu, then choose Install app or Add to Home screen.
- Desktop (Chrome or Edge): use the install icon in the address bar, or ⋯ → Install app when it is offered.
After the first successful visit, the app shell is cached. You can reopen tasks offline, edit boards, and changes will sync when the connection returns. Offline changes live in this browser until they sync, so do not clear site data before they reach the server.
Backup & import
- Export board: in the board ⋯ menu, Export board downloads a
.nbx file for that one board, in Nullboard's interchange shape.
- Back up all boards: in Settings or the board ⋯ menu, Back up all boards downloads a dated
.json file containing every current board.
- Import boards: in Settings or the board ⋯ menu, Import boards accepts either a
.nbx board or a full backup. Imported boards are added as new boards; existing boards are never overwritten. Importing the same file twice creates duplicates.
Backups are plain, unencrypted files. Store them somewhere private. They contain board content, but not your sync key or display settings.
Before clearing browser data or moving to a new device, make a backup or make sure your sync key is saved somewhere else. Browser storage belongs to one device and one browser profile.
Settings
- Theme: Auto follows your device's light or dark setting. Light and Dark force a theme.
- Text size: changes the size of note and board text.
- Column width: changes how wide lists are. On a phone, lists still fit within the screen.
These settings apply only to this device and are not synced. Settings also contains backup, import, and this manual.
Privacy & data
- There is no account, email address, analytics, or third-party tracking script. Fonts are bundled with the app rather than loaded from a CDN.
- Normal boards are stored locally in this browser and, while sync is connected, in Cloudflare D1. The server identifies your room with a SHA-256 hash of the sync key; the raw key is not stored in the database.
- Normal board sync is protected by the private key, but it is not end-to-end encrypted. Normal board text is stored as readable JSON in Cloudflare's database. Put sensitive material in the private board instead.
- The private board is encrypted in the browser with AES-GCM before storage. Only its ciphertext and key-wrapping metadata are stored in this browser and Cloudflare D1. The password and decrypted notes never leave memory, and the sync key alone cannot read it.
- The key is read from the URL fragment (
#k=...), which is not sent in HTTP requests, and is then removed from the address bar. The link itself is still sensitive.
- If a link leaks, disconnect sync, create a new key, and share the new link. The old synced copy remains in Cloudflare until it is deleted there.
- Clearing this site's data removes the local copy and the saved key. A synced board can be recovered by rejoining with its key; an unsynced board can only be recovered from a backup.
Troubleshooting
- A change has not appeared on my other device.
- Select the sync pill and choose Sync now. Check that both devices show the same sync link or key and are online. Background sync runs every 20 seconds while the board is open.
- The app says it is offline.
- Keep editing. Changes are saved locally and sync automatically when the connection returns. You can also select Sync now to retry immediately.
- I lost the sync key.
- Copy it from another device that is still connected (Sync → sync key), or use that device's sync link. The server cannot recover a key, and a board that exists only on the lost device cannot be recovered without a backup.
- I forgot the private board password.
- There is no password recovery. The encrypted board cannot be read without the password. Forgot password? Reset board permanently removes it from this device and every synced device, then lets you create a new one.
- The private board did not appear on my other device.
- Private board sync needs the same sync key on both devices. Select the sync pill and choose Sync now. A locked device still downloads the encrypted copy and will offer to unlock it. If the board was reset elsewhere, it is gone by design and a new one must be created.
- I opened a link but my board did not switch.
- If this device already has a different sync connection, tasks keeps it to avoid mixing boards. Open Sync → Disconnect first, then open the link again.
- I imported a board twice.
- Import always appends. Delete the duplicate board from the board ⋯ menu; the original is untouched.
- Sync fails on a very large board.
- One sync can carry about 1.5 MB of JSON. Export a backup, then archive or remove boards and notes you no longer need.
- The app will not install.
- Installation needs HTTPS and a supported browser. On iPhone use Safari's Share → Add to Home Screen; on Android use Chrome's menu. If tasks is already installed, open it from your home screen.