Skip to content

Textus v1.3.9

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Nov 23:15
· 50 commits to main since this release
f65ff02

What's new

Textus 1.3.9 reads Obsidian vaults and Typora folders as they are - note embeds, callouts, comments and links that follow renames - and adds a start page, one input panel for /, [[ and emoji, Pandoc export options, lighter memory use and two new official plugins.

New

  • A start page with New File, Open, Open Project and your recent projects and files. Choose it under Settings › General: On launch, open the last documents (as before), the start page or a blank document, and When the last document closes, close the window (as before) or show the start page. Closing a project whose documents were all that was open shows the start page too.
  • ![[Note]], ![[Note#Heading]] and ![[Note#^block]] show the note, section or block in place, read-only, when a plugin such as Two-way Links draws them: up to five embeds deep, never in a loop, redrawn when the note is saved. Click it to edit its source; click its title to open the note there.
  • An embedded note (![[Note]]) folds under its title with the arrow before it, and stays folded the next time the document opens on this computer; the file keeps ![[Note]] as written.
  • Obsidian callouts: every Obsidian type and alias ([!info], [!faq], [!bug]…) draws in colour, a title written after the marker replaces the label, - and + callouts fold from their chevron, and callouts nest. A type Textus doesn't know draws as a note. The file is saved exactly as written; folding changes only the view.
  • Updates the links to a file you rename or move in the sidebar, and the moved document's own links, so they keep working: at once inside an Obsidian vault, after asking everywhere else.
  • Two new official plugins: Openverse Pictures lets Textus AI find openly licensed photographs and drawings (CC BY, CC BY-SA, CC0, public domain) with their credit lines, and Keenable Search gives it another web search that needs no key.
  • Plugin suggestions come on one card at the bottom right: when a document uses something an official plugin handles, when a file nothing opens could be opened by one, and when a plugin recommends another that pairs with it. The card never blocks typing or goes away by itself; Install asks for the plugin's permissions first, Later asks again next time (up to three times), and × stops that suggestion for good - Settings › Extensions brings them back.
  • %%comments%% are hidden while the caret is elsewhere, and show again when you move into them; a line that is all comment folds away.
  • A block id at the end of a paragraph ( ^abc123) is dimmed while the caret is elsewhere.
  • Inline footnotes ^[note] draw as small raised notes, and highlights that open with a colour emoji (==🔴…==, 🟠 🟡 🟢 🔵 🟣) take that colour.
  • Obsidian's image size in the alt text, ![cat|300](cat.png), draws the picture 300 pixels wide. The file keeps the size as written.
  • GitHub's maths: $`E=mc^2`$ and ```math blocks draw as formulas.
  • Shows a single line break as a break in the split view's preview and in Pandoc exports when the project's .textus/settings.json turns line breaks on.
  • Formulas written as $…$ or \(…\) inside HTML blocks and HTML tables are drawn, as on GitHub and in Typora. Code inside them is left alone.
  • Ctrl/⌘ + click on a wikilink to a note that doesn't exist yet creates it, where the Obsidian vault puts new notes or beside the document, and opens it.
  • Pasting the source of a simple HTML table (no merged cells, only text and inline formatting in its cells) inserts a Markdown table: the header from <th> or the first row, bold, italics, code, links, sub- and superscripts as Markdown, <br> kept, column alignment carried over and $ x $ tightened to $x$.
  • Right-click an HTML table already in a document for Convert to Markdown Table, one undo step. When it can't be converted, the item says why (merged cells, or lists and paragraphs in a cell).
  • Plugins can ask where a link goes, block and heading line included (metadata.resolveNote), and see each note's block ids and front matter aliases.
  • Settings › Editor & Appearance › Export can add a table of contents and numbered headings to Word, EPUB and other Pandoc exports, numbered as the Heading Numbers plugin numbers them, and a bibliography: pick a .bib file (and a .csl style if you like) and [@key] citations become references.
  • Settings › Editor & Appearance › Advanced takes your own Pandoc arguments for Word, LaTeX, EPUB, ODT or every format. They are passed word by word, never through a shell; --from, --to and --output stay with Textus. A failed export shows Pandoc's whole message and where these settings are.
  • Links to notes that don't exist yet are dimmed, as in Obsidian. A click still creates the note.
  • [[ inserts links in the format the project's .textus/settings.json names (shortest, relative or absolute), else Textus's own.
  • For plugins: metadata.linkTo writes the link Textus would write, files.blockId gives a block its ^id, views.registerEmbed draws ![[...]] embeds, hover cards on a #^block link get the block, and metadata links say whether they were wiki links.

Improved

  • Everything you type for now opens in one panel: / commands, :emoji, [[ notes and every plugin's suggestions show together, grouped by where they come from. It opens with the key you press, filters 10,000 notes as fast as you type, keeps the row you chose while slower plugins answer, and owns the arrow keys, Enter, Tab and Esc while open - even with Vim or Emacs keys on.
  • Ctrl/Cmd+click on a link to a file Textus opens itself - a Word document, or a PDF or picture with its plugin installed - opens it in a tab, without asking. When an official plugin would open the file but isn't installed or is off, Textus offers to install or turn it on and opens the file with it. Only files nothing in Textus opens still ask before opening in another app.
  • The sidebar's tabs are capsules like the document's, with the same selected fill, and the two rows line up.
  • The tab row and the sidebar's header are 5px shorter, so documents start higher in the window; the sidebar's tabs and the document's stay on one line.
  • Links work like every other piece of Markdown: the caret on a link shows its source, elsewhere it reads as its text, and only the display changes. Undo and redo work right after looking at a link, a link is saved exactly as you wrote it (bare URLs stay bare), and bold or code inside a link's text is drawn as such.
  • A link's text is its Markdown, so deleting the word inside bold in a link leaves its **** behind, and Find also matches words in a link's hidden address, showing that link's source.
  • A bare web address with text typed right against it is saved as [address](address), so it opens again as the same link.
  • Imported Typora themes now colour code blocks the way they do in Typora, use the theme's code font and selection colour, and style task lists, front matter and images too.
  • \[…\] is a formula only when it looks like LaTeX (\[x^2\], \[\frac{a}{b}\]). Escaped brackets such as \[optional\] in a README now read as brackets, as on GitHub.
  • Says in the sidebar when the file tree only follows the current document, with Open as Project to make it the window's folder; Close Project then also closes that folder's saved documents.
  • Dims the files and folders a .gitignore leaves out, and build folders such as node_modules, in the file tree, as the file search already leaves them out.
  • [[ lists the notes in your folder, and typing [[ over selected words turns them into a link. A note you pick is written as a link that stays one after saving.
  • ⌘N (Ctrl+N) now makes a new file, as in Typora, Obsidian and VS Code; a new window moved to ⌘⇧N (Ctrl+Shift+N).
  • New keys: ⌘K (Ctrl+K) inserts a link, ⌘⌥F (Ctrl+Alt+F) opens Replace, ⌘G (Ctrl+G) finds the next match, and Typora's Ctrl+ and Ctrl+Shift+ make inline code and strikethrough - Control on a Mac too.
  • Settings › Shortcuts lists the editor's own block keys (⌘⌥0–8 for paragraph, headings and lists, ⌘⌥C code block, ⌘⇧B quote, ⌘[ and ⌘] for list indent), and a key you record there that macOS keeps for itself (⌘H, ⌘M, ⌘⌥D and the like) is refused with the reason.
  • With many plugin tabs in a narrow sidebar, the tabs that don't fit go under a "More" button instead of squeezing into slivers; the tab you're on always keeps its button.
  • Create mode knows every part of the plugin API when it writes a plugin for you - completions in the / panel, hover cards, floating views, link handlers, save-time tidying, scheduled jobs and the rest - so it no longer falls back to a sidebar page for things a plugin can do directly.
  • A link to #name also jumps to an HTML anchor such as <a id="name"></a>, so hand-made tables of contents from GitHub and Typora work.
  • Textus notices where another app keeps a folder's pictures - an Obsidian vault, a Logseq graph, a Foam, VS Code or Dendron workspace - and offers that folder on a card at the bottom right. Nothing changes until you choose Adopt, which saves it in the folder's .textus/settings.json, where it stays with the project. A document's own front matter (Typora's typora-copy-images-to) still decides for that document.
  • /img/a.png opens from a site's static folder in MkDocs, Hugo, Docusaurus, Jekyll and Quarto sites, and wikilinks are found in the vault or graph the document is in.
  • A project's .textus/settings.json can set its pictures folder, link style and line breaks by hand under "conventions"; they stand over Textus's own settings for that folder. Settings › Editor & Appearance › Images says so when the document in front is in such a project.
  • For plugin developers: textus.files.conventions(path?) and onDidChangeConventions give the settings that apply in a folder (and, under detected, another app's not yet adopted), so a plugin never reads .obsidian/ or other apps' settings itself.
  • A theme or custom CSS can name Mermaid's palette with --doc-mermaid-theme (for example forest); without it, diagrams keep the grey palette in the light and the dark one in the dark.
  • The cards under a reply that wrote a plugin, theme or skill show what they would install: open "Show the code" to read it before you install. A plugin's permissions are listed one to a line.
  • A theme Textus AI writes in a reply is cut down to what a theme may change - the document's colours, fonts and spacing, and the colour variables - before Use this theme installs it, so it can't restyle or cover the app's own controls.
  • Textus gives back memory it doesn't need: a document tab out of sight for ten minutes lets its editor go and opens again where it was, with its undo history, when you come back to it. A tab where Textus AI is working or changes wait to be decided stays as it is.
  • Undo history now lasts past closing a document, as Vim's undo file does: open the same file again, unchanged, and Undo still steps back through your earlier edits. It is kept in Textus's own data folder for 30 days, follows files you rename in Textus, and old history is cleared once it passes 50 MB.
  • A plugin's page in a tab you haven't looked at for five minutes, and a plugin's block far down a long document, are let go until you return to them; caches are cleared after ten minutes without use.
  • A research paper's web pictures are searched again with fewer words before a picture is generated in their place, and a picture too large to keep is refused before it downloads.
  • The playground at textus.md/playground opens in all ten languages, with its sample document in each; a link can name the language (?lang=de), and a menu on the page switches it.

Fixed

  • Editing a paragraph or list keeps its escapes and entities as you wrote them: Obsidian task states like - [/], inline footnotes ^[…], an escaped \# that isn't a tag and &nbsp; no longer change when the block is saved.
  • An inline footnote ^[note] is no longer saved as ^\[note] after you edit its paragraph, which Obsidian and Pandoc no longer read as a footnote.
  • A formula in a table cell shows \| as one bar, not two, and a | you type in it is saved as \|, so it no longer splits the cell.
  • Shows files that Git, Obsidian or a file manager added, moved or deleted as soon as you come back to the window, without pressing Refresh.
  • Renaming a note through a plugin no longer changes links that lead to another note with the same name, or rewrites /docs/a.md as a relative path.
  • Ctrl/⌘ + click on a link reaches more targets: [[Note#^id]], [[#^id]] and [t](Note.md#^id) jump to the block, [[Note#A#B]] to heading B under A, [[Note v1.2]] opens the note, [[file.pdf]] and [[image.png]] open the file, [t](Note) works without .md and finds a note in another folder, and a link from / is read from the repository, vault or typora-root-url folder instead of the disk's root.
  • A ^id after a link's # is a block, never taken for a heading of that name.
  • [[Note\|alias]] inside a table opens its note, and [[Note|]] shows as "Note".
  • Backlinks, the graph and other plugins find a link where a click goes: a table's [[Note\|alias]] counts, [[Note v1.2]] and [t](Note) find their note, and two notes of one name are told apart the same way everywhere.
  • Plugins see front matter tags: as tags, no longer take a link's (#anchor) for a tag, and leave out links and tags inside %%comments%%; tasks marked - [/] and the like count as done, as in Obsidian.
  • With two windows open, Textus AI is offered only the plugin tools of the window you asked from, so a tool no longer shows up twice or runs in another window.
  • Only one plugin can take over the keyboard at a time: with Vim on, a second one (Emacs, say) is refused with a note saying which one has it, and turning a plugin's keys off no longer resets another plugin's block cursor.
  • A plugin's default key no longer takes over a key Textus, the editor or macOS already uses (Zotero's ⌘⌥C used to replace Code Block): the command stays in the command palette without a key, and one note says which key and where to set another.
  • When two plugins draw the same kind of code block, open the same kind of file or give the same kind of hover card, the one turned on first keeps doing it, and turning it off hands the job to the other at once - no restart. Before, the last one turned on took over, and turning it off left nothing drawing those blocks until Textus restarted.
  • Plugins that tidy a document as it is saved (Markdown Lint, CJK Spacing, Text Tidy) now run in a fixed order, change only the blocks they mean to, and never touch code, math, HTML or link definitions; each line keeps its Windows or Unix line ending, and two plugins that would undo each other's change on every save are stopped instead of fighting.
  • Pandoc exports turn [[links]] into readable links, put ![[pictures]] into the file, give Obsidian callouts their titles, leave %%comments%% out, and keep H~2~O, x^2^ and ~text~ as the editor shows them.
  • HTML and PDF exports make [[links]] clickable and leave %%comments%% out, even the one the caret was on.
  • Saving a document whose file was moved, renamed or deleted in another program now asks first, instead of quietly recreating the file under its old name.
  • "Choose image…" on a missing Obsidian image now writes a link that points at the copied picture: by name in a vault that uses wiki links, otherwise as a Markdown image with a path from the document, so it can't land on another note's picture of the same name.
  • A read-only document no longer shows a heading's ### or the ** around bold text where you click: the caret can't change it, so the source stays out of the way.
  • Research mode draws every diagram and chart it writes before keeping a section, and sends one that doesn't draw back to be fixed, so a finished paper no longer shows a diagram or chart as its code.
  • Backspace on an empty list, task or numbered item right under a code block ends the list, as anywhere else, instead of moving the caret up into the code block. A quote's first line there leaves the quote the same way.
  • Pinching on a Mac trackpad zooms a picture or diagram opened in the viewer, as the scroll wheel already did.
  • A web page in a tab (the Web View plugin) no longer stays blank while a floating view such as the Desk Pet is open.
  • Pictures linked from / (![](/a.png)) show from the document's typora-root-url, or from its vault, site or repository root, as Typora and GitHub show them; a full disk path still works.

Platform notes

  • Plugin API: onWillSave gets the document's blocks (with their offsets) and the save's trigger, and may return just the blocks it changed; onWillSave and onWillExport plugins run in plugin id order.

Installers for macOS (Apple silicon and Intel), Windows and Linux (x64 and ARM64) are below; the app updates itself.