The basics

Your work is a tree: any branch can have sub-branches inside it, and those can have their own sub-branches, and so on. The tree lives on the left; the currently open branch's details are edited on the right (or in a dialog — see “The details panel” below).

Notes and tasks

Every branch, at any level of the tree, is on its own either a plain note or a task — its type is entirely its own and does not depend on its parent or root ancestor. A task branch can freely contain note children, task children, or a mix of both, nested to any depth, and so can a note branch.

A small icon on every branch, at every level, shows its type at a glance. You can convert any single branch from one type to the other at any time, using the convert button next to the details editor — the conversion applies to that branch alone and never cascades to its children, so no confirmation is needed. The only thing that changes as a side effect is progress calculation (see below): a task that becomes a note drops out of its ancestors' progress averages, while a note that becomes a task starts contributing to them.

Working with the tree
Task details: deadline and progress

Opening a task shows two extra fields below its content: an optional deadline (date and time, with a dedicated “Clear” button to remove it again) and a progress slider from 0% to 100%.

Progress can only be set by hand on a task that has no task children of its own — a task with at least one child that is itself a task always shows the average progress of just those task children, calculated automatically and updated the moment any of them changes. Note children (and anything nested inside them) never take part in this average, at any depth — a task with only note children behaves like a leaf task and keeps its manually-set progress. Likewise, a task's deadline is never invented automatically, but once you have set one, it is pulled forward to match the latest deadline among its task children whenever one of those is later. Both the progress ring and, when set, the deadline are shown right on the task's row in the tree.

The details panel

On desktop, a branch's details normally open in a panel next to the tree — the same rich-text editor used for notes is also what you write a task's content in. Changes there are applied as you make them, so there is no separate “Save” button in this view.

The arrow icon at the top of the details panel hides it, giving the tree the full width; a matching arrow appears next to the “+ Note”/“+ Task” buttons to bring it back. While the panel is hidden, opening a branch shows its details in a dialog instead, with explicit “Save”, “Cancel”, and “Delete” buttons — changes there are only applied when you press “Save”. On mobile, the dialog is always used, since there is no room next to the tree for a separate panel.

The editor

The toolbar above the text area gives you bold, italic, underline, lists, headings, a font size selector (6 to 60), and a way to clear formatting — the same editor for both notes and the content of a task.

Print (🖨) opens the node's name and content (plus its deadline and progress, for a task) in a new browser tab, laid out for reading and printing. Nothing is generated or uploaded anywhere for this — it's a plain page built entirely in your browser. From that tab, use your browser's own Print command (Ctrl/Cmd+P) and choose “Save as PDF” as the destination, or print it for real. This reflects whatever is currently in the fields, including changes you haven't saved yet.

Saving your work
Passwords & encryption

The first time you save, SafeNoter asks you to set a password and uses it to encrypt the file. Opening an encrypted file later asks for that same password. If you forget it, there is no recovery — by design, nobody but you ever holds a copy of it.

Remembering a password on this device. The dialog that asks for a password to open an already-encrypted file has a checkbox: “Remember this password on this device.” Leave it unchecked and nothing changes — the password stays in memory for this tab only, exactly as before. Check it, and only once that password has successfully decrypted the file, SafeNoter saves it in this browser's local storage for that specific address (a local project, your Google Drive file, or one particular WEB subdomain each get their own separate slot). Next time you open the same address in this browser, SafeNoter tries that saved password silently first — if it still works, the file opens with no prompt at all; if it doesn't (or nothing was saved), you're asked as usual. This is entirely optional and only ever written after a successful decryption — creating a brand new password, or changing an existing one, never touches this storage. Use the “Password” → “Forget Saved Password” menu item at any time to erase it for the current address; it stays disabled when there's nothing saved there.

Web addresses (subdomains)

If this SafeNoter installation supports web addresses, any tree can live at its own address shaped like <any-name>.app.safenoter.com — for example my-journal.app.safenoter.com or project-x7f2.app.safenoter.com. Whatever comes before the first dot in the address is the “subdomain,” and you can use as many of them as you like — a convenient way to keep separate projects, teams, or areas of your life apart from one another, each with its own tree and its own password.

How to tell a subdomain is still free. Just open it in your browser. The app checks that address for you automatically: if there is nothing there yet, nobody asks for a password, and the status line shows something like “Subdomain “...” is still free — start writing and click “Save” to create new notes here.” That means it's fine to try addresses at random — pick names until you land on a free one, or just come up with something unique enough that a collision is unlikely. If the address is already taken, you'll instead get an immediate password prompt to decrypt the content already there.

How to claim a free subdomain for yourself. Simply open its address and start writing — the app treats loading a free subdomain as already having it “open,” so the regular “Save” button is enabled from the start and, on your first click, silently writes there. It first asks you to set an encryption password (just like your first local save), then stores the encrypted data at that address. From then on it's no longer “free”: the address itself stays public (anyone can open or try it), but without your password nobody can read its contents or overwrite them — even by calling the server directly, bypassing the interface.

Guarantees about data kept on the server

SafeNoter offers no guarantee that data saved to a web address will be kept on the server forever, or won't be lost — a disk failure, a server reinstall, running out of storage, or any other issue on the hosting side can wipe the file, and by design the server doesn't even hold your password to somehow “prove” or recover the contents. Treat a web address as a convenient way to reach your work from any device or share it, not as your only place of storage. For anything that matters, make regular local backups with “Save As” (the file stays encrypted with the same password) or keep a copy on your own Google Drive.

Switching language

Use the language menu in the toolbar. Your choice is remembered for next time you visit without a specific language in the address.