The Outliner
MojoPad has a full outliner built into every formatted page — and a dedicated
Outline page for when you want a document that's nothing but the tree. If you
think in nested bullets, fold to focus, zoom into a branch, and restructure from the
keyboard, this chapter is home. If you never touch it, nothing changes: it only
appears where you already have bullets.
Your first five minutes
Choose File ▸ New Outline, name it, and type. The rules are simple:
Return makes a new row.
Tab tucks the row under the one above it; ⇧Tab promotes it back out.
A whole subtree travels with its row, and rows below a promoted row become its children —
the classic outliner rule, so the order you read is always the order you meant.
- Hover a parent row and a small triangle appears left of the bullet — click it to
collapse that branch behind a
⋯. ⌥-click the triangle and the whole
branch folds or opens — every nested level at once. Collapse is saved with the page: reopen
the document and your branches are exactly as you tucked them. ⌥⌘. toggles from the
keyboard, and View ▸ Collapse All Rows / Expand All Rows works the whole page.
- Click a bullet (the dot itself) to zoom in: that branch becomes the whole
view, with a breadcrumb across the top — page ▸ ancestors ▸ here. Click any crumb to
step back out, or use
⌘. to zoom in on the caret's row and ⇧⌘. to zoom out one
level. Zooming is a way of looking, not an edit — it never changes the page. You can
write normally while zoomed — everything saves as usual — and the branch you're
standing in is protected: MojoPad politely refuses to move, delete, or outdent the zoomed
row itself (zoom out first). Navigating to another page always zooms out.
- Drag a bullet to move a row anywhere: drop on another row's top or bottom
edge to land beside it (you'll see a thin line), or on its middle to nest inside
(a filled box). A row can never be dropped into its own branch.
Every page is a little bit outliner
None of the above is exclusive to Outline pages. Any nested list on an ordinary
formatted page collapses, zooms, Tab-restructures, and drags exactly the same way —
your existing notes gained these powers without changing a single byte of their
content. An Outline page is just a page that commits: every line is a row, marked
with an ≣ in the page list.
Two commands convert between the worlds, both under View:
- Outline View turns the current formatted page into an outline — paragraphs
become rows. Toggle it off and the page returns to ordinary editing with the same
content: bullets are still bullets, nothing is lost either way. Think of it as two
lenses over one page.
- Prefer prose for a while? That off-switch is prose mode.
How the outliner keeps its promises
- Collapse lives in the page. A tucked-away branch is part of the document —
it survives quitting, syncing the file elsewhere, even opening the page years later.
(Heading folds, by contrast, are a personal view and stay on your Mac.)
- Zoom is only a view. Nothing about a zoom is ever written to the page — a
page saved mid-zoom is byte-for-byte the page you'd save without it.
- Every structural move is one undo. Tab, ⇧Tab, a drag, Move Row to…,
Duplicate, Delete — each is a single
⌘Z away from never having happened, and the
caret stays where you were typing through all of them.
- Parents show their state. On Outline pages, rows with children wear their
triangle all the time — ▾ open, ▸ tucked — and top-level rows sit a little heavier, so
the structure reads at a glance. On ordinary pages the triangle appears on hover, keeping
prose pages quiet.
- The tree stays a tree. Wherever a list arrives from — old pages, web clips,
other apps — MojoPad quietly repairs the one malformed shape browsers love to produce
(a branch floating beside its parent instead of under it), so every row always knows
its parent. Repairs never touch the file until you actually edit the page.
- Old friends still work. The ⠿ block handle still serves a list as a whole —
hover any row but the first and it's there for dragging the entire list, Turn into…,
or Send to Canvas. And multi-row selections still indent and outdent together with
⌥⌘] and ⌥⌘[ — Tab is the one-row-with-subtree gesture.
Work the outline
- Done and hidden.
⌘Return marks the caret's row done — it gets a ☑ and a
strike-through, and clicking its checkbox toggles it too. View ▸ Hide/Show Completed
Rows sweeps finished rows (and everything under them) out of sight while you work the
remainder; toggle again to bring them back. Done-ness saves with the page; the hiding is
just your current view.
- Move Row to… (
⇧⌘M) teleports the caret's row — subtree, checkmarks and
all — to the end of another page, picked from a fuzzy list. Triage a brainstorm into
project pages without touching the mouse.
- Jump to Row… (Go menu) is a fuzzy list of every row on the page; pick one and
the caret lands there, opening any collapsed branches on the way. It scales to outlines
far too big to scroll.
- Mirror a row. Click into a row, run Copy Link to Block, and paste the
![[…]] it gives you on any other page — a live embed of that row and its
subtree appears there, always showing the current state of the original. One row, many
places.
- Selection that understands the tree.
⇧⌘B selects the caret's branch —
the row and everything under it — ready to cut, copy, or restyle in one stroke. ⌃⌥↑
expands the selection a level at a time (word → the row's line → its branch → each
parent branch → the whole page) and ⌃⌥↓ contracts back down the same steps.
- Duplicate and delete by keyboard. Edit ▸ Duplicate Row drops a copy of the
row and its subtree just below (the copy never inherits block links, so mirrors stay
unambiguous); Edit ▸ Delete Row removes a row and everything under it. Both are
unassigned by default — give them keys in Settings ▸ Shortcuts if they earn a place in
your hands.
✦ The bridge between outline and prose
This is the part no other outliner has. Two commands under View, both running
on your local AI — nothing leaves your Mac:
- ✦ Outline This Page reads the current page and distills it into a nested
outline on a new page (named after the original), opened in outline view. The
original is untouched. Use it to find the skeleton of a long note, or to turn pasted
research into something you can restructure.
- ✦ Draft from This Outline goes the other way: it walks your outline's tree and
writes a flowing first draft on a new page — top-level rows become sections, nesting
becomes the flow of each section. Outline first, then let the draft write itself, then
edit like an editor instead of staring at a blank page.
Round trips are fair game: outline a draft of an outline as many times as helps.
Every generated page is marked with a ✧ so you always know what the machine wrote.
Answers to the questions you'll have
- Is my outline a special format? No — it's the same page format as every
formatted note, so search, export, links, the graph, encryption, and AI all treat outline
pages like any other page. Turning outline view on or off never migrates anything.
- What happens when I paste text into an outline? It arrives as rows — one per
line, nested by indentation. An outline exported from Workflowy, Logseq, or Kosshi pastes
in as the same tree.
- Can a row hold more than a line? Yes — rows are ordinary rich text: bold,
links, tags, even images. Keep rows short for the outliner feel, but nothing stops a
longer thought.
- Why won't
Tab indent my first row? A first child has nothing above it to
nest under — every outliner refuses this, and MojoPad does too, so the tree always stays
a tree. Likewise a top-level row can't outdent any further.
- Where did my Enter go in a table or the “/” menu? Nowhere — tables and the
insert menu keep their own
Tab behavior; the outliner only claims Tab inside
list rows.
- What about Markdown pages? Restructuring (
Tab/⇧Tab, drag), zoom, and
Jump to Row all work on Markdown lists too. Collapse and row completion live on
formatted pages — Markdown files have no place to keep those marks, and MojoPad
won't pretend to save something it can't.
- Why isn't a page in the Move Row to… list? Destinations are formatted pages —
a row is formatted content. Encrypted pages are deliberately absent: a moved row must
never sit readable beside a locked page's contents.
- What do the ✦ commands need? A local AI model (Settings ▸ AI — the same setup
every ✦ feature shares). No model configured, no problem: the commands simply say so;
nothing is ever sent anywhere else.
- What does
⌥⌘. do outside an outline? Exactly what it always did — fold
the heading section you're reading. On an Outline page it collapses the caret's branch;
on an ordinary page with no heading above the caret, it falls back to the branch too.
- Does hiding completed rows stick? It's a view for the current sitting — switch
pages and everything shows again. The ☑ marks themselves are saved; only the hiding is
temporary.