Skip to content
undan

Help › Documents

Documents

The Documents tab shows the archive: at the top left the rubrics, below them the folder tree, in the middle the table, on the right the preview, the relations and the fact sheet. The areas have fixed digits from left to right — Alt+1 rubrics, Alt+2 folders, Alt+3 table, Alt+4 preview, Alt+5 relations, Alt+6 fact sheet (Keyboard). Each of these panels collapses via the arrow at the top of its edge into a button on the side rail; the button brings it back. It behaves like a file manager, and most things need no explanation. This page covers what is different from what you're used to.

The table#

The middle is one table, with or without a search. Without a search, it shows the current folder: first its subfolders, then its files — in front of the name the icon in the colour of the file type (folders gold, PDFs red, images violet, spreadsheets green, texts blue, notes light green), then with type, tags and open actions from the facts, size and modification date from the disk. Return or double-click enters a folder or opens a file, ←/Backspace goes up one level (Alt+↑ from anywhere in the tab), a letter filters. With a search, it shows the hits (see The search).

  • Selecting several rows — as in any file manager, in the folder as in the search: Shift+↓ / Shift+↑ extends the selection from the row where it began, Shift+End / Shift+Home up to the edge, Ctrl+A takes every row of the table; Ctrl+↓ / Ctrl+↑ moves only the cursor, Space adds or removes the row under it. With the mouse: Ctrl+click adds or removes a row, Shift+click selects the range up to the row, a plain click selects one. Esc reduces several to the one under the cursor, another Esc to none. From two selected rows on, "3 selected" is shown below the table — and dragging a selected row takes all of them along, for instance into an upload in the browser (see Dragging).
  • Columns: the column icon on the right of the header row (or a right-click on it) opens the column picker — checkboxes on or off; drag the displayed ones up or down by their name. The handle between two headers drags the width. Clicking a header sorts (twice: descending, three times: off); folders always come first. At the bottom of the column picker: Save as bookmark… — the columns together with folder, sort order and search as one line in the bookmarks.
  • Actions: the Actions column shows for each row what still needs doing — a small chip for each open action (Pay, Bookkeep, …). Clicking the chip writes nothing; it opens a menu: Done today, Date…, Not needed; only the choice writes, as one step that Ctrl+Z undoes. If several rows are selected, the choice applies to all of them (the number is in the entry). Alt+Return opens the same menu for the row under the cursor, Esc closes it without writing anything. It is as wide as its longest entry and sits below the chip.
  • Edit (Ctrl+E or the pencil in the header row): change the facts in the cells — type, tags, fields, actions; name and folder stay with the context menu. Clicking a cell opens it; you type amounts and dates in German format (1.240,00, 30.09.2026), they are saved normalized; below them are suggestions — candidates from the document's text, the types, the tags from your archive (most frequent first), the states of an action. As you type, the list filters; in the tags cell it applies to the word at the cursor (haus-24, ste → steuer), tags already set aren't in it. ↓ (freshly opened Alt+↓) goes into the list, ↑/↓ choose, Return accepts, Esc first closes the list, then the cell. A date cell has a calendar icon on the right: it opens (like Alt+↓) a month sheet next to the cell — ←/→ one day, ↑/↓ one week, PgUp/PgDn one month, Return accepts, Esc goes back into the field. Without a mouse: Return on a row opens its first cell. In the editor, Return accepts, Esc discards the cell, Tab goes to the next column (at the end of the row into the next row), ←/→ to the neighboring column (as soon as the cursor is at the edge of the text — so right after opening immediately; in the middle of a word they move the cursor), ↑/↓ to the same column of the neighboring row — that's how you type down a column; the table scrolls along. Right-click on a cell: set for the selection (one value for all selected rows — type, payee, a tag) and derive from the text (each selected row gets its amount, its date, its IBAN from its own text; only empty fields, without a model). Changes are tinted and not yet written: Ctrl+S saves everything as one step into the fact journal — one Ctrl+Z undoes the whole session. Esc leaves the mode; if there are changes, it asks. This is the way to capture a fresh set of files: open the folder, select all, set the type, amounts from the text, save.
The table without a search: folders first, actions as chips
Edit mode: bar, tinted cells, one change

The tree also shows files#

The top row is your archive and is called Documents — in the tree, in the path above it, in the bookmarks and in every dialog that names a folder, whatever the folder is called on disk.

Under each expanded folder, first its subfolders appear, then its files — with the same icon per file type as in the list, in the same colour. Clicking a file in the tree selects it in the list and shows it in the preview; conversely, what is selected in the list is also selected in the tree. There is one selection, not two. A double-click opens the file, the context menu offers the same as in the list. Type-to-filter in the tree still filters only folders; for files there is the search.

With the keyboard: → on a file shows it in the “Documents” tab and in the preview, the focus stays in the tree — that's how you quickly leaf through documents and notes without opening anything. Return goes to the file: a note into its editor tab, everything else into the file list.

Long names are shortened in the middle so that date and ending stay readable; on hover the full name is shown, and the row the cursor is on shows it in full. The “New note” and “New folder” buttons above the tree create in the folder that is selected in the tree.

The workspace#

Two things that are easily taken for one:

WhatAffects
Current folderwhere you arethe file list
Workspacethe section you are working insearch, tree, “Reindex”

Normally the workspace is the whole archive. Narrowing it only happens explicitly: double-click or Set as workspace in the context menu. As long as it is narrower than the archive, a banner below the address bar names it and leads out in one click. Mere navigation never changes it.

Ctrl+F takes you to the search field. The search covers the whole archive: file names, full text and facts. Punctuation is kept: 466,54 finds the amount, 2024.05 the files of that month.

As soon as there is something in the field, the tab is filtered — all three columns at once:

  • The tree shows only folders that contain hits, each with its count. The root row means all; clicking a folder below it shows only the hits in it and its subfolders. Backspace in the table leads back to all.
  • The middle is the same table: one row per hit, columns from the vocabulary. Which columns, the search works out from the input — if type:invoice is in it, they are the invoice's fields; otherwise name, folder, type, tags, actions. Money sorts as a number, dates as dates. If the table is wider than the window, it scrolls sideways.
  • Ctrl+A selects all hits, Shift+↓, Ctrl- and Shift-click work as in the file list (see The table) — and the selection can be dragged out of the table, into a folder in the tree or into another program (all medical invoices into the health insurer's upload).
  • If the input searches for text, each row carries the excerpt with the highlighted hit below it, and hits in the name and the folder are highlighted too. If it only searches for facts (type:invoice $pay:open), each row stays single-line.
  • The preview on the right follows the click as in the file list; in the Facts tab you stamp an action. Return on a hit selects its folder in the tree. If a note editor is in the middle, it stays and the table appears above it, with a splitter.

Esc in the search field, the ✕ above the table or an empty field end the search; the last selected folder stays.

The tab in search mode: filtered tree, table, saved searches

The search field speaks a small language. Everything you write side by side must match:

Inputfinds
telekom rechnungboth words, anywhere in name, folder or text
"zweite Mahnung"exactly these words in this order
name:vertragonly in the file name (text: only in the content, path: only in the path)
tag:open or #openeverything with this tag
type:invoiceby type (area:… only if your vocabulary still has areas — new archives have none)
payee:telekoma field contains the text
amount>100, due<today+7comparisons — money as a number, dates as dates
missing:typethe field is missing
-entwurf, -tag:opena minus in front negates
tag:open or tag:nachhakenone of the two (or, oder, ||); everything without or between it must match together

German works too. The search keys are English because bookmarks and queries are stored that way; when typed, the German ones still work — typ:, bereich:, pfad:, titel:, inhalt:, ohne:, oder, heute —, and you may call fields, types and actions by their name: typ:rechnung, betrag>100, faellig<heute+7, bezahlen:offen search the same as the rows above.

tag:open on its own is also a search — this is how you see all files with a tag; $pay:open all invoices that are still to be paid (bezahlen:offen or Bezahlen:offen works too). While you type, the field makes suggestions: from the second letter on, the keys (Tab accepts), after the colon the values from your vocabulary (↑/↓ choose, Tab or Return accepts). A value the vocabulary doesn't know is reported in red above the hits.

Emails are searched in their parts. Of an .eml, the subject, sender, recipients, date and the whole conversation are in the index — including the quoted older messages and the signatures with their phone numbers. Of the attachments, name, type and size are there, so that you can find an email by the name of its attachment; the attachment's content is searched as soon as it is in the archive as a document of its own. Whether something is an email is decided by its content, not its extension.

Saved searches#

Ctrl+B in the search field saves the search under a name — including folder, columns and sort order: a search that is saved in the folder Haus 24 shows only this subtree again when you call it up. It appears in the bookmarks with a magnifying glass; if it only searches for facts, its hit count is next to it, always up to date. A click restores everything; right-click renames or removes.

This replaces the former views (ansichten.md): a view was a query with columns and buttons — the query is now the search field, the columns are the table, and stamping happens in the fact sheet of the preview.

Preview#

The third column shows the selected file: PDFs and images rendered, text files directly, Markdown typeset. The header row has the buttons for OCR text, the separate window and — for text — the reading width; the arrow on the right collapses the preview:

  • OCR text (for text files Index text) — the text as search and model see it, in place of the document; the same button leads back. Index now catches up on what's missing.
  • Print — the printer button in the header row, Ctrl+P or Print… in the table's right-click menu, for PDFs and notes. A note is typeset for this: title, properties, checkboxes (tasks round, checklists square), phases and deadlines as dates, images — in Helvetica. If it is open and changed, what is in the editor is printed. Save as PDF… in the right-click menu stores the same sheet as a file. The dialog offers copies, pages (1,3,5-7), two-sided on the long or short edge, color or black and white, paper size and portrait or landscape. Only what your printer can really do is offered — it is asked. Below the pages field it shows how many pages will come out.
  • The facts bar below it names type, payee, amount, deadline, what needs doing and the tags; the pencil on the right (or Alt+6) expands the fact sheet — fields, notes, GiroCode, next to the document or below it. See Facts.

Word, OpenDocument and Excel (.docx, .doc, .odt, .rtf, .xlsx, .xls, .ods) show up as pages, the way they would print — with paging, zoom and the hits of your search. Undan brings a part of LibreOffice for this; you don't need to install anything. The first time it takes a second or two for the pages to appear — until then the file's text is shown, with a quiet line above it. After that the pages are remembered until the file changes. A spreadsheet that would be very long as pages (over 200) is shown as text. Search finds the text of these files too, old .doc and .xls included; a Word or Excel attachment of a mail opens in the preview on the right as well.

With a button, the preview can be undocked into a separate window (second screen), and with the splitter it can be dragged as wide as you like.

The typeset preview is clickable. A document path — in backticks, as a - Evidence: line or inserted by dragging — shows the file with one click and selects it in tree and list; a right-click offers Open in Documents. A link from note to note opens the other note, [[Name]] too — the name may be the title, the file name or an alias from the note's header. A link to an email (mid:) opens it in the Mail tab. A checkbox with an ID (🆔) toggles the task. What can't be resolved stays plain text instead of being a dead link.

A double-click on an embedded image opens it in full size in its own window; Esc closes it again. In the preview, images stay scaled down to the column width.

Relations#

To the right of the preview you see what the selected file is connected to — for a document the notes that mention it, the tasks it is attached to as evidence, the emails it came with, the contacts and the events; for a note also which notes link to it. The second line of each entry says why it is there. Alt+5 jumps here and expands the column. For a document the header has Note on this document: it is created in the document's folder, with its path in it, and opens in the Notes tab — the same entry is in the context menu.

  • evidence for “…” — an evidence line under a statement names the document, with the page if it is given.
  • mentioned in the text — the path is in backticks in a note.
  • attached as evidence — the task lists the document among its evidence.
  • attachment with the same checksum — an email carries the same content as an attachment; came with this email — the document was filed from it.
  • same IBAN, same VAT ID — from the document's facts and the contact's fields.
  • probably: same name — only the name matches; such entries are in italics and come after the certain ones.
  • via the task “…” — the event belongs to a task that has the document as evidence.

A section without entries is a single line ("Events · none"), and anything that points nowhere stays there struck through. A click opens the entry where it opens anyway: the note in the editor, the task on its page, the email in the Mail tab, the contact in Contacts, the event in the Calendar. The arrow at the top right collapses the column to a narrow strip that shows the number of relations; a click on the strip brings it back.

Nothing is guessed: emails are found only through the checksum of an attachment or the Message-ID, events only from the calendar's cache — no network.

Context menu#

One menu for tree, table and search — with one rule: if the row is part of a selection of several, the entry affects the whole selection and states the number. Tags are set in the table's edit mode.

EntryWhat
Openin the default program
Rename (F2), Move to…, Copy to…via the target folder dialog with a list of suggestions — F2 works in the folder as in the search hits. Next to the field Browse … (Ctrl+Shift+D): the file picker with the folder tree and the folder's contents; Return goes in, Ctrl+Return takes the Target shown at the bottom. If the folder does not exist yet: New folder at the top right (Ctrl+Shift+N) creates it where you are — it then is the target. “Documents” itself is a target too (the field then shows .). You can drag the dialog larger and smaller at its edges, and the borders between tree, list and contents as well as the one between rubrics and tree; a double click restores the default
Delete (Delete)into the trash, never permanently — also in the search hits
Copy, Cut, Pastethe application's clipboard (Ctrl+C/X/V)
Show in folderonly during a search: the hit's folder is selected in the tree, the search stays
Assign task / Assign task (n)attach the files as documents to an existing task (the default, chosen in the tree area → project → task) or create a new one — Tasks
Edit…put text, a date or a signature on a PDF — Editing PDFs
Create as Word documentfor a PDF: an editable Word document next to it — without AI, the PDF stays (below)
Attach to AI chatthe selection as an attachment of the next question — AI chat
Reindex / Re-read (force)discard the stored text or repeat the OCR
Bookmark (Ctrl+B)the folder or file into the bookmarks

Copy to… deliberately creates a duplicate: for papers that you collect in a submission folder but that should still stay in their place. An occupied target is an error; nothing is ever overwritten.

Create as Word document turns a PDF into a Word document of the same name next to it (Rechnung.pdf → Rechnung.docx; if that exists, Rechnung (Word).docx). Undan computes headings, paragraphs, lists, tables, columns, header and footer and a letter with its address field back from where the words stand; the images come from the PDF; a scan becomes similar, not the same. It runs in the background, the bar at the top says when it is done; then the Word document is selected. Ctrl+Z takes it away again. It has no key — you find it in the command palette (Ctrl+K) as well, and you can assign one in the settings. With changes on the way: through the AI chat.

Dragging#

Files and folders can be moved by dragging in the tree and in the list — and out of the application, for instance into a mail window as an attachment or into a web page's upload. If the row you drag lies in a selection of several, all of them come along; pressing with Ctrl or Shift starts no drag, that is selecting. When dragging out, nothing is ever deleted, whatever the target program negotiates. The application accepts nothing dragged in from outside; that's what the Inbox is for.

A drag is one step: all moves together, one Ctrl+Z brings them back. Occupied names are skipped and counted.

Trash and undo#

Deleted items are in the trash (button with count in the toolbar), for as long as set under Settings → Retention (default 30 days), with origin, size, time and restore for each row. The period applies to all computers of this archive; the trash and its tooltip name it.

Every file operation — rename, move, delete, create folder, set facts, edit PDF, an applied chat proposal — is in the journal. Ctrl+Z undoes the last one, even after a restart. A run with many moves is one entry: one Ctrl+Z brings back the whole run.

PDF preview: page by page with the arrows, or continuous — the button with the stacked pages next to the page number switches, and the setting applies to all previews, also after a restart. In continuous mode, “Page x / y” shows the topmost page in view; the arrows then jump on page by page. With the middle mouse button you grab the sheet: hold it and drag, the page follows the pointer in every direction. The left button still drags a rectangle whose text goes to the clipboard.

Zoom: the magnifiers next to the percentage and, with the keyboard in the sheet, + and − jump from step to step between 50 and 300 %. Ctrl

  • mouse wheel goes finer (a tenth per notch), and whatever is under the pointer stays where it is. When the number is not at 100 %, it is itself a button back to 100 %, as is the 0 key. Each file remembers its zoom while Undan is running. While a new size is being drawn, the page briefly stands blurred at its new size.

Fit to width: the button to the right of the magnifiers, Shift+0 in the sheet or the command palette (Ctrl+K, “width”) makes the page fill the width of the column — and follow it when you drag the column border, open or close a side bar or make the window bigger. The button applies to all previews and stays on after a restart. When you zoom yourself (magnifier, key, wheel), it switches off and the page keeps that size; one click switches it on again. In the file picker, what you switch there applies only there. Very large pages (A3, long receipts) are drawn at most as big as an A4 page at 300 %.

Writing notes#

Double-click or Return on a note opens it in the Notes tab — there it is in its folder, without tabs, and saved when you leave it; a single click shows it here in the preview. Above the file list there is still a tab strip for the transition: Files is the list, next to it notes that are still open here, and text files; New note above the tree or in the context menu creates one and opens it right away. A .txt, .csv, .log or .json also opens in the editor this way — as plain text, without coloring and without widgets; everything else still opens the default program.

Arranging and closing tabs. You drag a tab to its new place — it follows the pointer, the others move out of the way, and on release it glides there; with the keyboard Ctrl+Shift+PgUp / PgDn, where the two tabs also glide to their new places. Files always stays at the front and can be neither dragged nor closed. Ctrl+W closes the open tab — wherever the keyboard happens to be, in the tree, in the list or in the preview. Right-clicking a tab offers Close, Close others and Close all, on Files only Close all. A tab with unsaved text does not close this way: it stays open, and the top says which ones stayed open — if you close it on its own, it asks as always. The order is remembered and is the same again after a restart.

Many tabs. If they don't all fit in the strip, the active one is in the middle, with as many tabs on its left as on its right. What doesn't fit lies as a stack at its side: a narrow edge for each hidden tab, the number next to it. With Ctrl+PgUp / PgDn or a click on a tab at the edge, the window moves on — on one side a tab goes into the stack, on the other one flips out. A click on a stack opens the list of all open notes: typing filters, ↑ ↓ and Return jump, Esc closes; the hidden ones are marked “left” or “right”, ● means unsaved, the cross closes the tab.

The editor shows the source text — colored: headings, links, code, properties and the marks of a task line each have their own color, as you know from a programming editor. Nothing is hidden; every character of the file is still there. What the application knows — tasks, statements, tables, the frontmatter, links — has appeared as a widget since stage 3, until the cursor enters it; see “Widgets in the editor” below. You see the note typeset in the preview on the right as soon as the note is selected there — it then shows every keystroke and scrolls to the spot where you are typing; the switch with the two arrows in the bar turns this off. It also works the other way round: as long as the switch is on, a click on ordinary text in the preview puts the cursor in the source at the word you clicked — also in bold text, in a table cell, in the title or in the note of a task —, and the editor then has the keyboard: you read on the right, click on the typo and correct it on the left without looking for the spot. The preview stays still. If the click lands beside the text (on a bullet, in the date line under a task), the cursor goes to the start of the block. If the preview is in a separate window, only the cursor gets the spot; the keyboard stays where it is. A click on a link, a checkbox or an image keeps its own effect; text selected in the preview is not selected in the editor as well. If you select a different document on the right, that document appears next to the note that describes it.

In the bar: undo and redo, insert link, insert image, make a task, insert table, format, reading width, preview follows the editor, save, a three-dot menu (Show in tree — Alt+F1, selects the open note in the folder tree and gives it the keyboard; Note structure, Source only — each with a checkmark; last Move to trash … — Ctrl+Shift+Delete), Open in separate window. Each button explains itself on hover. There is a way back for emergencies, without a button: since stage 2, the editor draws the source itself, and input runs through an invisible field — should umlauts, dead keys or pasting not arrive, Ctrl+Alt+Shift+T switches to the text field from before (and back again).

Move to trash … first asks if the note has unsaved changes: Save (the version goes into the trash as well), Discard or Cancel — the text is never silently lost with the tab. If there are tasks in the note (a project or area note), it asks, as in the Tasks tab, what happens to them (see Tasks); otherwise the usual question Delete? comes. The tasks' Inbox doesn't offer the entry.

KeyEffect
Ctrl+Z / Ctrl+Yundo and redo typing, as finely as you are used to
Ctrl+Ssave. The previous version is kept; Ctrl+Z in the file list brings it back, for as long as set under Retention (default 30 days)
Ctrl+Fsearch in this note; pressed again, in the whole archive, a third time back in the note — see “Searching in the note” below
Ctrl+Kinsert a link: a note as [[Name]], a document as a path, an email as [Betreff](mid:…) — from two letters on, the dialog also searches the subject and sender of your emails (rows with an envelope icon). All of them are clickable in the preview
Ctrl+Shift+Tmake a task from the line under the cursor
Ctrl+B / Ctrl+Imake the selection bold / italic (again: marks removed). In the editor, Ctrl+B takes precedence over the bookmark
Ctrl+U / Ctrl+Shift+X++underline++ / strike through the selection (again: marks removed)
Ctrl+Alt+HHighlight: mark the selection with ==…==, in the color chosen last (again: removed). The colors are in the context menu under Format → Highlight: yellow ==Text==, otherwise with a color sign after it — ==🟢Text== green, 🟠 orange, 🔴 red, 🔵 blue, 🟣 purple, as in Obsidian and Bear
Alt+F1Show in tree: the tree expands up to the open note, selects it and gets the keyboard
Ctrl+Shift+Deletethe open note into the trash — with the questions about unsaved changes and about its tasks; Ctrl+Z brings everything back
Alt+7show and hide the note's structure next to the source — see “The structure of a note” below
Ctrl+Rsearch and replace in this note — see “Search and replace” below
Ctrl+Shift+Fformat: align tables in the source
Returnin a list item: the next item (in a numbered list, the items below are renumbered); on an empty item: the list ends. In a quote (> ): the next line starts with > again; on an empty >: the quote ends, with a blank line, and you write on below it — a callout (> [!note]) continues the same way. At the end of a table row: a new row with empty cells. Otherwise the new line starts with the indentation of the old one
Shift+Returna new line below the cursor line, wherever the cursor is — the text to the right of the cursor stays where it is. In a list the next item, in a quote a line with > , in a table the next row
Shift+F10the context menu at the cursor — see “The context menu” below
Tab / Shift+Tabin a list item: indent / outdent, with everything below it. In a table: the next / previous cell, selected — typing replaces it. In the last cell, a new row
Ctrl+Vpaste with detection — see “Pasting” below
Ctrl+Shift+Vpaste unchanged
Ctrl+Wclose the tab (or window), asking first if there is unsaved text — in the whole Documents tab, not just in the editor
Ctrl+Tabto the next tab
Ctrl+PgUp / PgDnto the previous / next tab, Files included — as in Chrome
Ctrl+Shift+PgUp / PgDnmove the open tab one place to the left / right

Lists#

A list is written as in any notes app: - and the text, then Return — the next item is already there, with the same marker. With 1., 2. comes the next number, with a checkbox - [ ] a new, empty checkbox, even if the previous one was ticked. If the item is empty and you press Return again, the marker disappears: the list is over, and you continue with normal text. Tab turns the item into a sub-item, Shift+Tab brings it back — and if there are already sub-items below the item, they move along. This also works for several items at once: select them, then Tab. Shift+Return creates the next item, even if the cursor is in the middle of the text — the text stays where it is; a Return on the new, empty item ends the list as usual.

Numbered lists count themselves. If you insert an item in the middle with Return, indent one with Tab, delete one or paste several lines, the numbers are right again afterwards — the first number of the list stays as it is, and an indented item starts its sub-list at 1. Another list further down in the note stays untouched.

The indentation carries over. Outside a list too, after Return the new line starts indented as far as the old one. A second Return on the then empty line jumps back to the start of the line — so you write indented paragraphs without counting spaces.

Lists are slightly indented in the editor, and if a long item wraps, the next line continues under its text, not under the dash. Between two real lines — and two list items — there is slightly more space than between the lines of a wrapped paragraph; not in code and tables; sub-items sit closer together than items. Bold and italic appear without their asterisks as long as the cursor isn't in the word — when it goes in, they appear for editing. You set font and size under Settings → Appearance. The end of a note can be scrolled up to the middle of the window, so you don't have to look at the bottom edge while writing on. A ticked task is struck through — also as a sub-item, in a numbered list and when the cursor is in the line.

Moving sections#

A section is a heading with everything below it — up to the next heading of the same or a higher level. Sub-sections, paragraphs and tasks belong to it. You move it as a whole, just like a task card:

  • With the keyboard: Alt+Shift+↑ moves the section the cursor is in above the previous one of the same level, Alt+Shift+↓ below the next one. If the cursor is in a sub-section, the sub-section moves — within its section. If the section is already at the top or bottom, a hint says so.
  • With the mouse: when the pointer is anywhere in a heading's line — or to its left at the same height — a handle appears in front of the line (six dots, as on a task; in the Tasks tab on the section band). It stays until you reach it, and under the pointer it turns into a hand. As soon as you press, the whole section is highlighted — a quiet background with a bar on the left — so you can see what comes along. Drag: a card follows the pointer with the title, "n lines · m tasks" and the destination; a line with a label ("before “Beta”", "to the end") shows where it will land. The target is the nearest boundary between sections of the same level — the upper half of a section means "before", the lower half "after"; you don't have to hit a heading. Where nothing can happen (its own place), the card says "not here". At the top or bottom edge the note scrolls along. Esc cancels the drag; a click on the handle without dragging only places the cursor.
  • In the context menu on a heading (or right-click on the handle) and in the structure (Alt+7, two arrows at every heading) it works the same way.

One drag is one Ctrl+Z. Afterwards exactly one blank line separates two sections. Tasks in the section keep their ID; on save, the journal learns which heading they now sit under — in the Tasks tab they appear in that section. A # inside a code block is not a heading; the title heading at the very top has nothing to swap with and stays where it is.

The gutter: line numbers, folding, bookmarks#

Headings (# … ######) are set in their size — # larger than ## —, bold and with the # visible; when the cursor is in one, the gutter quietly shows its level (“H2”) instead of its number. In “Source only” everything is the same size.

To the left of the text there is a gutter as in IntelliJ: for each line of the file its number; the line with the cursor is slightly highlighted and its number brighter. Where a widget covers several lines (the header as a panel, a table), the number of its first line is shown; a folded task shows the number of its title. A click on a number selects the whole line.

Folding. Headings (up to the next one of the same level), list items with indented sub-items, code blocks and the header can be folded: next to the number there is an arrow ⌄, and a click folds. When folded, the arrow › is there, and below the header line a placeholder “… 12 lines” — a click on it (or on the arrow) unfolds again. With the keyboard: Alt+Return (or Ctrl+.) folds what surrounds the cursor, and on a folded header unfolds it again — only in a task card does Alt+Return open the card as usual. On a heading only its own section folds; if there is nothing below it yet (a heading you just typed), nothing happens — the section above doesn't fold instead. Alt+Shift+Return folds everything, and if something is already folded, unfolds everything (Ctrl+Shift+− / Ctrl+Shift++ work too). The cursor never disappears into a fold: if it is inside one, it goes to the end of the header line, and if it later jumps inside (search, bookmark), the fold opens. Each tab remembers what is folded as long as it is open.

Bookmarks on lines. Ctrl+Shift+1 sets bookmark 1 on the line with the cursor — a small 1 then appears in the gutter; pressing Ctrl+Shift+1 again on the same line removes it, on another line moves it there. There are ten, 0 to 9. Ctrl+1 jumps there, also into another note: it opens as a tab, the cursor is at the start of the line, and the keyboard is in the editor — even if it was in the tree or the list before. A bookmark moves with its line when lines above it are added or removed, and follows when the note is renamed or moved. It only applies on this computer (not in the archive, not synced). If it points to a file that no longer exists, the jump says so, and the bookmark stays.

“Gutter with line numbers and folding” in the editor's three-dot menu turns the gutter on and off. A project note as a page has no gutter (under “Source only” it does), and neither does the phone.

A note in a separate window#

The last button in the bar — or a right-click on the note's tab — opens it in a separate window. You can drag it to a second screen and find it with Alt+Tab while the application shows the chat, the Inbox or the tasks.

It is the same note, just somewhere else: the same text, the same undo, the same draft. That's why it is not at the same time in the tab strip — otherwise you would have the same text in two places with two cursors. The middle then shows the note to the left of it, otherwise the file list. If you open the note again (double-click, a link), its window comes to the front.

The window has its own preview on the right, with a splitter; it follows the cursor like the one in the Documents tab. Ctrl+F searches in the note as usual, Ctrl+S saves, Ctrl+W closes.

Dock — the button on the far right of the window — brings it back into the tab strip. The window's close button, on the other hand, closes the note; if you have unsaved text, you are asked first.

Two things the window can't do, because they don't work across window boundaries: dragging a file from tree or list into the source (use Ctrl+K) and Search the whole archive from the note search — the search field for that is in the path bar of the Documents tab.

The program remembers which notes are in windows, where these are and how big they are until the next start — for each note. If a window was on a screen that is missing at startup, the program brings it onto one that exists.

Searching in the note#

Ctrl+F searches where the keyboard currently is. If it is in the source, a bar opens above the text and searches in this note — with five thousand words, the question you really have. If it is in the tree, in the file list, in the hits or in the bookmarks, Ctrl+F jumps into the search field at the top as usual and searches the whole archive. You can see which area is currently active by the frame around it.

Searching in the note

In the bar: ↑ and ↓ (or Return) go from match to match, next to them it says “3 / 17”, and the match is highlighted in the text. If the preview on the right shows the same note, it highlights the same term. Esc first clears the text and then closes the bar.

If you realize along the way that you actually wanted to search the whole archive, press Ctrl+F again: the term moves into the search field at the top and the keyboard follows; you don't have to type it again. A third Ctrl+F brings you back into the note. The same path is a button in the bar (Search the whole archive), for the mouse.

Search and replace#

Ctrl+R opens the same bar with a second row Replace with. If something is selected in the text, it becomes the search term. On the right of the search field there are two switches: Cc — match case (Alt+C) — and .* — the term is a regular expression (Alt+X); then ^/$ apply per line, and in the replacement $1 gets the first group ((\d+)-(\d+)-(\d+) → $3.$2.$1 turns 2026-09-22 into 22.09.2026).

  • Replace (Return in the replace field) replaces the selected match and jumps to the next one; if none is selected, the first press only jumps there.
  • Replace all (Ctrl+Return) replaces every match at once — one Ctrl+Z undoes it all.
  • Exclude skips the selected match for “Replace all”; the count says how many are excluded. If you then type in the text, the exclusion no longer applies.

Tab switches from the search field to the replace field, Shift+Tab back, ↑/↓ go through the matches in both. Esc closes the whole bar.

And the other way round: the results list of the archive search now also appears above the editor when a note is open. You go through the hits, the preview on the right shows the hit, it is selected in the tree — and the note stays open below.

Results list above the editor

Reading width#

The button with the indented lines sets the source to reading width: instead of spanning the whole column, it is centered in a column that is as wide as the text in the AI chat. On a wide screen, lines otherwise get so long that the eye loses the line when jumping back. Clicking again restores full width; the setting applies to all notes and is kept at the next start. It also applies in the preview — there with a button of its own in the header row and wide enough that a line holds about 66 characters, as in a LaTeX document. Images are centered in the preview, with {.left} or {.right} after the image on the left or right.

Source at reading width

Tables are created with the table button: a skeleton with a header row, separator row and one empty row, with the first header cell selected. Then Tab from cell to cell, Return for the next row. “Format” aligns the pipes when the cells have become different lengths. Inserting, moving, duplicating, deleting and aligning rows and columns, and sorting the table, works through the right mouse button — see “The context menu”.

Links by dragging: dragging a file or folder from the tree or the file list onto the source inserts the link at the cursor position — the same as Ctrl+K, just with the mouse. In a separate window this doesn't work; there Ctrl+K is the way.

Code blocks: type three backticks at the start of a line, and the closing fence appears immediately on the next line — the cursor stays after the first three, where the language name goes. In the typeset view, a code block with a language name (```java) is colored, a web address has a small ↗, and the properties of a note (the block between --- at the very top) appear as a box above the text.

Pasting: Ctrl+V looks at what is on the clipboard before it goes into the text, and the strip below the bar says what was recognized. A table from a spreadsheet or from a log (tab-separated, also with semicolon or comma) becomes a Markdown table, aligned as after “Format”. What comes from the browser becomes Markdown: headings, lists, links, bold and italic, tables. A path from the archive becomes a link, a note becomes [[Name]] — several at once too, for instance after Ctrl+C in the file list. A web address on selected text turns it into a link to the address. JSON and log lines go into a code block, bullet lists from Word or an email (•, 1)) become Markdown lists. An image file from the file manager is embedded and keeps its name as description. Only what is unambiguous is recognized; ordinary text goes in unchanged. If you don't want the detection, press Ctrl+Shift+V — or Ctrl+Z right after.

How fast: pasting happens in the background — the editor stays usable, and if it takes longer than a quarter of a second, the strip says “Reading clipboard …” and afterwards how long it took. Under Wayland, the application reads the clipboard with wl-paste if it is installed (package wl-clipboard); it works without it too, but more slowly with large images.

Images: Ctrl+V in the source pastes a screenshot from the clipboard. The image button in the bar offers both ways: Image from clipboard — this also takes an image file you copied in the file manager — and Image from file …, which opens your system's file dialog. The file may be anywhere, even outside the archive; it is copied in. You see it in the typeset view and in the preview; the file itself lies invisibly in the archive and doesn't appear in any folder. If the note no longer needs the image — you deleted the line and saved —, it moves to the trash; Ctrl+Z in the file list brings back note and image together. An image that is already in the archive you drag from the file list onto the source: it is embedded, not copied.

A dot on the tab means “unsaved”. Every few seconds the application stores a draft; after a crash, the text is back at the next start, with a notice. Save when leaving: under Settings → Retention you can turn on that a note is saved as soon as you leave it — another tab (for instance Tasks, which then shows the new task lines right away), another note tab, another window, quitting. Each such save is a version as with Ctrl+S, and Ctrl+Z brings back the previous one; at the top of the bar it briefly says what was saved. A file that is missing or has been changed from outside is never saved automatically. If the file has changed in the meantime — for instance via sync from another computer —, the notice is red: saving would overwrite the other version. If the file is renamed or moved, the tab follows. If it is changed or deleted outside the application, a strip in the editor says so instead of anything being overwritten.

If the file has been deleted from outside — by another program, via sync —, the text is only left in the tab. Save (or Recreate in the red strip) then writes the file with this text to its old place; Ctrl+Z undoes that as long as it is unchanged. If you close the tab, you are asked first, even without a change of your own: afterwards the text would be gone. If you delete a note in the application, on the other hand, its tab closes along with it — the file is in the trash.

The help itself can't be edited; it belongs to the application.

Widgets in the editor#

Since stage 3 of the editor tree, the editor no longer shows every line as source. What the application knows appears as what it is:

  • a task line (with ID 🆔) as a task card — a round checkbox to click, the title, the date small on the right; done is struck through. A checkbox line without an ID stays a square checkbox;
  • a statement of a knowledge note with its category on the left in front of it and its documents below it as links — a click on a document shows the document on the right;
  • the frontmatter as a properties panel — a click on a value turns it into a field, Return writes, Esc discards (the id: stays read-only);
  • a table as a grid, every second row slightly set off — a click into a cell puts the cursor exactly there, and the table appears as source; Tab goes to the next cell, “Source” at the top right puts the cursor into the first one;
  • a horizontal rule (---) as a line;
  • an image on its own line as an image, centered (with {.left}/{.right} on the left or right) — only if it is turned on under Settings → Appearance, always in the Text view; a click on it selects it (size, caption, Delete — see “Notes”, “Images”);
  • the header of a message in a correspondence note as a line with sender, “→ recipient” and date;
  • inline: [[Verweise]], document paths, [Titel](Adresse) and bare web addresses as chips. At the end there is a sign that says where the link leads: → into the archive, the box with an arrow outside. A click on → shows the target in the preview (a note too, without opening it as a tab), a click on the box opens the address in the browser.
  • a link to an email, [Betreff](mid:…) — that's how Copy link in an email's ⋮ puts it on the clipboard, and that's how Ctrl+K inserts it when you choose an email in the dialog — as a chip with an envelope icon, sender and subject; → opens the email in the Mail tab, even if it has since moved to another folder or account. If the mailbox doesn't know it, the application searches for it in your accounts (the chip is pale in the meantime); if it doesn't find it, the chip stays struck through. In the preview, a click on the link opens the email; Obsidian shows the subject as text.

The rule behind it is Obsidian's: where the cursor is, you see the source. A click into a widget puts the cursor inside, and the line appears as Markdown — slightly set off, so you can see that this is source right now; when the cursor moves on (↑, ↓, a click elsewhere), it becomes a widget again. The exception is the task card: it stays a card, even with the cursor in the title — what else is in its line (- [ ], 📅, 🆔) only Source only shows (see The task card). A click on a chip puts the cursor into the link; Ctrl+click opens it — the note as a tab, the document in the preview, the email in the Mail tab. ←/→ jump over a chip as if it were one character. What a widget changes — the checkbox, a value, a cell — is a change in the text, undoable with Ctrl+Z like any typing.

Source only in the bar's three-dot menu turns off all widgets: every line as it is in the file. For those who want to read Markdown, and for when a widget is in the way. The setting is kept at the next start.

A knowledge note in the editor

You edit statements in place. The sentence of a statement is text of the note — you type into it without the picture changing. If the cursor is in the sentence, the statement is open — what is below it moves down a little, nothing is covered:

An open statement
  • a click on the category on the left opens its selection (the note's categories, or a new one);
  • Attach document chooses a document from the archive, the × on a document removes it again;
  • Outdated strikes through the statement without deleting it;
  • Return in the sentence (or the plus on the right) gives the next statement of the same category, an empty sentence ends the collecting;
  • the first statement of a note: right-click → Paragraph → Statement turns the line into one.
Release at the cursor
A table with rows set off

The context menu#

The right mouse button in the editor — or Shift+F10 at the cursor — opens a menu modeled on Obsidian:

  • Insert link (like Ctrl+K) and Insert web link — [Titel](https://), on selected text with that text as the title;
  • Format: bold, italic, code — chosen again, it removes the marks again;
  • Paragraph: bulleted list, numbered list, task list, heading 1 to 6, quote, body text — for all selected lines;
  • Insert: table, horizontal rule, code block;
  • Cut, Copy, Paste, Paste as text, Select all.

If the pointer is in a table, there are also Row (insert before or after, move up or down, duplicate, delete), Column (insert, move left or right, align left, center or right, duplicate, delete) and Sort by column, ascending or descending. What's meant is the cell under the pointer — the table doesn't have to be shown as source first. Numbers are sorted as numbers (9 before 10, also 1.234,56 €), a date like 15.09.2026 as a date, empty cells go to the end; the header row stays at the top. What doesn't work is grayed out: deleting the header row, moving the first row up. Every entry is a change in the text, undoable with Ctrl+Z, and the table is aligned afterwards.

The context menu in a table

Spelling#

A word that no dictionary knows gets a red wavy underline — shortly after you stop typing; the word you are typing only once a space follows it. The right mouse button on it (or Shift+F10 with the cursor in it) shows the suggestions at the top of the context menu — a click replaces the word, Ctrl+Z takes it back —, and also:

  • Add “…” to the dictionary — the word counts from now on, on every computer: it is in the archive in .undan/dictionary.md, one word per line. You can edit the file yourself too (Settings → Appearance → Spelling → Open in editor). Entered in lower case, a word also counts capitalised at the start of a sentence.
  • Ignore — not marked again until the next start.

What gets checked is the text, not the syntax: never code, link targets, web addresses, email addresses, the front matter, #tags, the IDs of tasks; no abbreviations like GmbH or IBAN, no words next to digits or in file names. The check knows the names of your contacts by itself. German, English and Swedish count at the same time — a word is right if one of the dictionaries knows it; Grüße and Grüsse both work.

Undan ships no dictionary (the German ones are under the GPL). It takes those of the computer — on Linux the package hunspell-en-us (and hunspell-de, hunspell-sv) — or the .dic and .aff files you put into ~/.undan/dictionaries/ yourself (for example from LibreOffice's dictionaries). Which ones count, and the switch, are under Settings → Appearance → Spelling. Notes (Markdown) and the mail draft are checked.

The structure of a note#

“Note structure” in the bar's three-dot menu — or Alt+7 — opens the note's structure to the right of the source: how the application reads the text. Two tabs: Tree shows every building block with its kind and its range in the text (heading, paragraph, list, list item, table, code block, for small blocks the start of the text), Elements lists what the application recognizes in it — task lines with their ID, statements and documents of a knowledge note, messages of a correspondence note, [[Verweise]], document paths, the properties at the top between the ---.

A click on a row selects the range in the source; conversely, the cursor in the source highlights its path through the tree, and the strip above the view names it. This way you can see, for example, why a line isn't a task (it lacks the ID) or whether a document really is indented under its statement. The “Whitespace” switch also shows line breaks and spaces — they are building blocks like all the others. The setting applies to all notes and is kept at the next start.

The structure of a note

Merging two notes#

Two notes mean the same thing — the project note and a second one that came about on the side. Right-click the note that is to be merged into the other, Merge…: it is the source. If exactly two notes are selected, the other one is preset as the target (the button next to it swaps the roles); otherwise you type the target into a field with suggestions from all notes of the archive — or choose it via Browse … (Ctrl+Shift+D) in the file picker: it then shows notes only, with a preview; the source is listed there as "Source" and cannot be taken.

What happens then: the text of the source goes below that of the target, with a horizontal rule and a line “Merged on … from “…””; the properties at the top (tags, aliases, participants of a mail conversation) are combined, and the source's title and file name become aliases of the target — so [[Quelle]] in other notes still finds its way, without any other note being touched. If a single value of the source contradicts that of the target (for instance a different end:), the target's value stays, and the source's value is in the text below the origin line. The source goes to the trash.

Everything attached to the source stays reachable: its facts (type, tags, fields) are now seen by the target; a task's document that pointed to the source leads to the target; task lines with 🆔 move along and get no new ID. The target keeps its own ID.

No merge happens as long as one of the two notes is open in the editor and unsaved — the dialog says so and disables the button. Ctrl+Z in the file list undoes everything together: the target is as it was before, the source is back, and its facts belong to it again.

The AI chat can propose the same thing (section “Merge notes” in the proposal card).

Rubrics#

Above the tree, in three parts — every rubric is a query in the search language; a click puts it into the search field, and the table shows the hits in the whole archive (see The search):

  • Open actions — $pay:open is called Pay, with the number of files that carry it open; only actions that exist right now.
  • Types — from the vocabulary, by their count; a type with fewer than three files sits behind More.
  • Own views and Pinned — the bookmarks, see below.

The border between rubrics and tree can be dragged, or moved with ↑/↓ when it has the keyboard; a double-click resets it.

Bookmarks#

Below the rubrics, as Own views (searches and column views) and Pinned (places). A bookmark is a place — a folder, a file or the whole archive — and can also carry a search, columns and a sort order. Three kinds are in one list:

  • Places (folders and files) expand like the tree above; a file is a jump target — a click (or Return) opens a note in its editor tab, everything else is selected in the table. Ctrl+B sets or removes one, on whatever you are pointing at: the cursor in the tree, the one selected row of the table, otherwise the current folder. In the editor Ctrl+B is bold — there it goes via the file's context menu.
  • Searches (magnifying glass) — see Saved searches.
  • Column views (table icon): a folder with fixed columns and sort order, saved via Save as bookmark… in the column picker. That way there can be three bookmarks on the root with three different column sets. A click sets folder, columns and sort order.

Right-click a bookmark: rename (a name of your own instead of the folder name; leaving it empty restores the folder name) or remove. The bookmarks are in the archive (.undan/bookmarks.md, one line per entry) and are therefore there on every computer that opens the same archive; the file can also be changed by hand (Ctrl+S on it takes effect immediately):

- `60_Immobilien/Haus 24`
- `60_Immobilien/Haus 24` Lortzingweg
- `.` Zu zahlen | search: type:invoice $pay:open | columns: name, amount, due | sort: due
- `.` Beträge | columns: name, type, amount

. is the whole archive; the path is in backticks. What was previously in bookmarks.json and suchen.md is taken over at the first start. Above the tree on the right there are two buttons: expand all (Ctrl +) and collapse all except the path to the current folder (Ctrl -). A bookmark survives a rename; if it still points into nothing, it stays struck through. A drag onto a row moves there, a drag onto the empty area creates a bookmark.

Toolbar#

On the right of the address bar, in groups: the indexer (pause, status, reindex), the trash, Show/Hide preview and Reload folder. Every button has a tooltip. The trash shows the number of entries, the indexer the number of files it still has to read — as a small gray badge as in the tab row: it counts, it doesn't warn (the trash cleans itself up after its period).

The indexer runs in the background, reads new files and checks every minute whether something has changed. It is the basis of the search and of the chat.

Keyboard#

The complete key assignments with focus areas, type-to-filter and the Esc order are under Keyboard. F1 in the Documents tab shows them as an overview, searchable; Ctrl+K opens the command palette.