A large VoodooPad import no longer dies at the finish line. A reader imported a twenty-year document — 7,875 pages — waited twelve minutes, watched the conversion report success, and lost the lot when MojoPad quit less than a second later. Nothing was wrong with the reading. Every page had been converted correctly; the failure was in handing them over, all at once, in a single message too big to send. Pages now cross in batches as they are made, so the size of your document no longer decides whether the last step survives.
It had been hiding behind the import bug fixed in 1.56.0: while that document imported nothing, there was nothing to hand over and nothing to fail. Reading it correctly is what made the handover big enough to break.
And the same import is roughly twice as fast. MojoPad asked macOS to read each page’s details in a format it cannot produce for a page carrying a date — which is all of them — then asked again the correct way. On a document of eight thousand pages that is eight thousand wasted conversations. It now takes the hint after the first one.
Storyboards and outlines have buttons now. They lived in the File menu and the command palette and nowhere you could see, which is a poor showing for one of the better things in MojoPad — a whole feature you had to already know the name of to find. The same was true of File ▸ New Outline, and a reader put his finger on it: a good outliner that “doesn’t get highlighted at all”. Both now have a tool in the left icon rail beside Canvas — Storyboard, and New outline — each opening a fresh one. Like every other tool they can be moved to the top bar or reordered in Settings ▸ Appearance ▸ Toolbar.
“Search by meaning” now says why your models aren’t listed. If Ollama is running and you have models in it, but none of them turn up in that list, it looked broken — you have a Mac full of models and MojoPad is offering you none of them. Nothing said what was going on. Searching by meaning needs an embedding model, which is a different kind of thing from the ones that write, and a machine with a shelf full of chat models can easily have none of these. MojoPad now says so where the empty list is, names the distinction, and gives the one command that fixes it — and Automatic is labelled with what it will actually do, since with no embedding model installed it quietly resolves to MojoPad’s own, which made two entries that behave identically look like a choice.
Plain-text pages can embed other pages. Put ![[Page Name]] on a line of its own and it renders there, whole page or single section, exactly as it does on a formatted or Markdown page. It was the one page type left out, for no reason a reader could see — and he was right to ask.
What the file holds is the marker you typed, never the borrowed words. A plain-text page’s whole promise is that the text is the text, so ![[Page Name]] stays five characters and a page name on disk, in any editor, however much you write around it. The embed is a way of seeing the other page rather than a copy of it. (The marker has to be alone on its line: ![[Notes]] and more stays as written, because a block that swallowed the words beside it would be taking liberties with a page whose point is that it doesn’t.)
And it travels — HTML, PDF, Markdown, Word, ePub, a published site, a card, the split view. An embed that only worked in the window you typed it in would be a decoration rather than a way of building something, so a plain-text page assembled out of embeds exports as the whole thing, the same as a formatted one.
A wiki can be an outline wiki. Info palette ▸ New Page Format now offers Outline alongside Formatted text, Markdown and Plain text — so every new page in that document opens as an outline, and all your outlines can live together in one place instead of being made one at a time. Your daily note follows it too: set it once and every day arrives as an outline.
That list is also the reason the outliner has been so easy to miss. It was built from the three ways a page can be stored, and an outline is not one of them — it is a formatted page wearing a different set of keys. So the one screen in MojoPad that tells you what kinds of page exist had never mentioned outlines at all. A reader put it exactly right: a good outliner that “doesn’t get highlighted at all”. The formats are now named in plain words rather than in MojoPad’s internal ones, and a page’s Type says outline or storyboard where it used to say richtext for all three.
A new outline opens with its first row waiting, and the cursor is in it. It used to open looking like an ordinary blank page — no bullet, and the cursor stranded at the far left edge of the pane rather than after the bullet, so the page read as empty and unfocused until you typed a letter and everything snapped into place. The first line you typed also came out oddly bold. Three faults, one culprit. The row was really there — the link scanner, which sweeps a page a moment after it opens, was throwing it away; that pass exists to find page names and addresses and has no business reshaping an outline, so it now restores any row it disturbs and puts the cursor back in one if it was left stranded. The stray boldness had the same root, one level down: MojoPad styled top-level rows bold, and the pass mistook that for bold you had turned on and kept faithfully re-applying it as real markup. That is now recognised and unwrapped wherever it can still arise — and the boldness itself has gone. Outline rows are ordinary body text now, at every level. The heavier first level was borrowed from another outliner’s templates and earned its keep nowhere: a brand-new outline is a single top-level row, so the first thing you typed came out bold before there was any structure for the weight to mean anything; it only ever applied in the editor, so the same outline was body weight in the split view, in every export and on your published site; and it was what invited the stray markup in the first place. The bullets and the indentation were always saying it better.
And File ▸ New Outline now actually makes an outline. It marked the page as one a moment after creating it — too late for the editor, which had already opened it as ordinary formatted text. Rows did not nest, Return did not make a new row, and the page only came right if you left it and came back. It is made as an outline now, in one step, so it behaves like one from the first keystroke.
Typing a link the Markdown way now works every time. Writing [some words](an address) has made a link since 1.53.0 — but only if you typed the whole thing briskly. Pause anywhere in the middle and MojoPad’s own link scanner, which runs a moment after you stop, would quietly take hold of the address, or of the words in the brackets if they happened to be a page name. Either one broke the link before it formed, and you were left with the brackets. Nothing said so, and it reproduced for nobody who typed at a normal speed. The scanner now leaves a link you are in the middle of writing alone.
Pasting is the half that never worked at all. The addresses this matters most for — a DEVONthink item, a Bookends reference, anything with a long identifier — are copied from the other app, never typed, and a paste fires no keystroke for the old rule to catch. Paste [the paper](x-devonthink-item://…) and you get the link. Prose is untouched: [see note](above) names no address and stays exactly as written.
Exporting a Markdown page gave you a transcript of it, not the page. Export ▸ Markdown ran a converter over the page’s source instead of over the page, so it escaped the markup that was already there — [a](url) came out \[a\](url), **bold** came out \*\*bold\*\*. Every other route (Compile, HTML, the website) had always rendered it properly first; this one was the exception, which is why the same page could compile correctly and export wrongly. Canvas pages went out through the same gap, as escaped board data under a heading. Both now export as what they are. (Reported by a reader keeping his wiki beside DEVONthink, twice — the second time because the first fix was in a part of the app his case never reached.)
Locking a wiki now locks its history too. Setting a password protected your pages and left your saved versions of those pages sitting beside them readable — and a saved version is a complete copy of a page as it was earlier. A wiki you had kept for months was sealed at the front and open at the back. Setting a password now takes all of it in the same moment: every saved version, including versions of pages you have since deleted, along with the meaning index and the text pulled out of your books. If any of it cannot be taken, MojoPad says how much and what kind — saved versions of your pages, or the search text built from them — rather than reporting a document as protected while part of it is still readable. A file it cannot even read counts as one it could not take, which sounds like a technicality and is the opposite: those are precisely the ones that stay in the clear. Help ▸ Save Diagnostic Report now answers the same question directly, so you can check rather than take our word for it. Changing a password is unaffected and stays instant — those files are already sealed under a key that travels with you.
A folder can lead. If you keep a literature folder, things in it move and go: you throw out a paper you have finished with, and its page sits in your wiki for another week until you delete that too. Right-click a followed folder and choose This Folder Leads… and the two match in both directions — a file you put in the Trash takes its page to Recently Deleted, and a page you delete puts its file in the Trash. Off until you ask for it, and asked for one folder at a time, because which side leads is a property of the arrangement rather than of the app: a journal you only add to is nothing like a literature folder.
Nothing is destroyed in either direction — the Trash is the Trash, and Recently Deleted holds a page for 30 days. And being unable to see a folder is never treated as it being empty: a page is only ever taken when the file’s own folder is right there, readable, and simply without it. Unplug an external disk, lose a network share, leave a sync half-finished, and nothing happens at all. Each folder is judged separately, so one share going quiet doesn’t stop MojoPad noticing a deletion on your desk. Turning it on counts what has already drifted apart and asks before touching any of it.
Deleting several pages at once follows the same arrangement as deleting one, and restoring a page from File ▸ Recently Deleted brings it back for good. A page whose file went to the Trash comes back as a page of its own rather than pointing at something that is no longer there — otherwise the next look at the folder would find the file missing and take the page straight back, which is not a restore. A page whose file is still sitting in the folder keeps its link and goes back where it was.
The hover preview stopped covering the thing you were dragging onto. Hover a page link and a small preview appears after a moment. Start dragging a row in the sidebar and aiming it between two others takes rather longer than that moment, so the preview would open squarely over the line showing where the row would land — while a drag is running, mouseleave never fires, so it sat there until the drop. It already knew to stay out of the way of a menu or a dialog; a drag is the same rule and was the one missing. Reported by a reader hours after we told him drag-to-reorder existed.
And a few things were cut off or ran off the edge. The Add alias field in the Info panel stopped mid-word at “press Re” — it was an input with no width of its own, dropped somewhere with nothing to stretch it, while every field around it spanned the panel. It spans the panel now. Dialogs that name a file’s location no longer push a long path off the side of the card, and one that has something to say in more than one paragraph now shows them as paragraphs instead of running the lot together.
Properties before you have any. The Properties palette used to offer AI only once you had already defined a property, so the one person who most needed to see what a property is — somebody who had never made one — was the only one who couldn’t. On a wiki with none, it now reads the page and offers the two or three it actually states: an Author from the byline, a Published date, an Identifier that is really a DOI. Accepting one adds it to the wiki and fills it in.
The names come from the vocabularies catalogues have long since settled on, and that is the useful part. Wanting Writer on one page and By on the next costs nothing until the day you want every book sorted by who wrote it and find three fields holding the same fact. Once your wiki has properties of its own it goes back to filling only those — the names are yours, and it will never rename one you chose.