Skip to content

changelog

What’s new in Mudlark.

Mudlark 1.0 is almost ready. Here is what the first release will ship with. Watch this page, or grab the latest build.

v1.0.0
Unreleased
major

Initial release

added
  • Side-by-side editor: type on the left, see organized notes on the right
  • Reader mode: toggle to a rendered-only view
  • Multicursor editing with ⌥-click, ⌘D, ⌘⇧L, ⌘K, and ⌘U
  • Window pinning (always on top) and adjustable window opacity
  • Quick Capture global hotkeys: ⌥Space opens an empty bar, ⌥⇧Space pre-fills it from the clipboard
  • 20 built-in themes (10 light, 10 dark)
  • Appearance controls popover (⌘⌥A) with reading and editor text size, fonts, reading width, paper style, and line numbers. Theme picking stays in Settings → Appearance
  • Customizable formatting characters and keyboard shortcuts
  • 23 prefix characters that format a line by its first character
  • Smart matching: check off tasks and move things by typing part of the name
  • Multi-line blocks via doubled-prefix delimiters (`!!`, `++`, `==`, …), with optional hint slots on code, math, and tables. Named blocks group related items as one addressable unit
  • Footnotes via the `^` prefix: inline sentinels at the end of words, single-line `^ definition` rows, or multi-paragraph `^^` blocks, paired by source order
  • Inline bold and italic formatting (*italic*, **bold**, ***both***)
  • Spell check while typing, in both the editor and the capture bar. Right-click a marked word for suggestions, Learn Spelling, Unlearn Spelling, and Ignore Spelling. Code blocks, inline code, and directive lines are excluded. Toggle in Settings → Display
  • Tables with pipe-separated columns and automatic headers
  • Built-in math and unit conversions (length, weight, temperature, duration), with variable assignment
  • Localization settings: decimal and thousands separators for math output, quote style for smart typography, and date and time formats. Math input can be pinned per vault to read comma decimals like max(1,5; 2)
  • Countdown timers and looping timers, with named timer blocks
  • Code blocks with syntax highlighting
  • Collapsible sections and reorderable categories, with inline drag in Settings → Markup to retune which item types float to the top
  • Collapse All Sections (⌘⌥←), Expand All Sections (⌘⌥→), and Restart Timers (⌘⇧T) in the View menu
  • Find and replace with live preview, type-targeted search, and location scoping via @ heading, reached with the `,` prefix
  • Syntax cheat sheet (⌃⌘/)
  • Toggle Comment (⌘/) comments or uncomments the selected lines, inserting the comment prefix at each line's first non-whitespace column
  • Multiple notes with search, editable titles, and note browser filtering
  • Note pinning to protect notes from auto-cleanup, with ⌘1-9 jump-to-slot hotkeys and drag-to-reorder pinned slots
  • Duplicate Note from the browser row, context menu, or Note menu. The copy gets a (N) suffix and opens in inline rename
  • Configurable quick capture buttons for common prefixes
  • Auto-export to Obsidian, iA Writer, Bear, Ulysses, Craft, Apple Notes, Notion, Things, Todoist, Reminders, or a custom folder
  • Export destinations as a status-first list: each card shows a readiness pill (Ready, Finish setup, Last export failed), a summary of where exports go, and a Test button. Setup is guided per app, with numbered steps that check themselves off, plain-language error messages, and a Fix… button that jumps to the failing step
  • Send Test Note: send a small test note to a single destination and see the result inline
  • Obsidian export setup asks what an export should do: Add to my daily note, Create a new note, or Advanced URI plugin (daily, weekly, or monthly note)
  • Metadata vocabulary with reserved keys (when, due, deadline, duration, remind, repeat, location, url, image, description, status, priority, tags, …) routed per-destination via a capability table. Destination-scoped pairs like `$bear pin=true` for app-specific knobs
  • Apple Reminders carries alarms, recurrence, URL, and location from metadata. Auto-alarm-on-due is on by default so reminders actually notify
  • Notion exports dispatch metadata against the database column schema (status, select, multi-select, date, URL, rich text), and set page icon and cover from `$ icon=` / `$ image=`
  • Export partial-success surfacing: when some files fail (e.g. images), the destination card reports the failed names in a yellow warning so the rest of the export still lands
  • Shortcuts settings stage a captured chord and show “Already used by …” with Reassign / Cancel buttons, so binding over an in-use chord requires explicit confirmation
  • Themes share a 9-slot palette (Primary / Warm / Cool / Alt / Support / Signal accents plus Strong / Annotation / Muted neutrals) so item-type routing rebalances across themes without rewriting per-type fields
  • Custom themes: drop a JSON file in `<vault>/.mudlark/themes/` to author your own theme. Edits hot-reload in the app, and a user-theme `id` can shadow a built-in to override its colors
  • mudlark:// URL scheme for automation via Shortcuts, scripts, and other apps, with delete, update, and move actions and a Settings toggle to gate inbound URLs
  • Print and Save as PDF
  • Direct download with Sparkle auto-updates, or distribution via the Mac App Store
  • Opt-in anonymous crash reports, off by default. A scrubber removes note text, titles, selections, and clipboard contents before anything is sent
  • 14-day full-feature trial. Expired trials soften to read-only with export still available
  • Note links via [[Title]] inline syntax, with [[ autocomplete from vault titles, chip reveal in the editor, and auto-rewrite of every reference when a note is renamed or moved
  • Inline media embeds via {{@ filename}} for local images, video, and remote URLs, with column-aware sizing, click-to-copy, ⌘-open, and {{@ autocomplete from vault media
  • Dropping media into the editor shows a live indicator: near a line edge it inserts a full-width @ line, over text it inserts an inline {{@ }} embed, and holding ⌥ flips the choice. A placeholder holds the spot while the file imports
  • @ media lines carry a validity color: green when the reference resolves, yellow while an import is pending, red when the path cannot be resolved
  • Inline timers via {{: 25:00 Focus}} for countdowns and {{; 5:00 Break}} for loops, ticking live in the rendered pane. Bare numbers can carry a phase name
  • Mosaic layout for @@ media galleries: justified rows at native aspect ratios with portrait stacking, no cropping or uniform tiles
  • Footnote blocks render as a callout-style container in the right pane, with the ordinal lifted into the named header
  • Single-line code accepts a language hint glued to the prefix (`python def f()), matching the existing ``swift block syntax
  • Tab-separated tables via &&tsv. The parser preserves interior tabs so paste from spreadsheets round-trips cleanly
  • Default table format setting: a hint-less table (bare & or &&) is read as the chosen format (CSV, TSV, or pipes). Explicit hints like &&csv still win
  • Per-element copy formats: tables, images, and code each get their own dropdown in Settings → Data → Copy Formats alongside the whole-document preference
  • Cursor scroll padding picker in Settings → Appearance with three presets (None, Slight, Typewriter). Font size range widened to 8 to 32pt across editor and rendered panes
changed
  • Directive scope is explicit: a single prefix targets one item, a doubled prefix targets the whole named block (`_ + foo` removes an item, `_ ++ foo` removes the block. `-- foo` completes a task block. `> ++ foo | D` moves a block)
  • Settings reorganized: the Export tab holds destinations only, and the Data tab holds the vault, media storage, copy formats, and backup (Back Up All Notes as .zip). Table format default moves to Markup. The footnote and callout settings live on Markup as well
  • Tab inserts a literal tab inside code blocks and &&tsv table bodies. In lists it still indents, in tables it still moves between cells
  • Note titles land on the paper-grid baseline at any font size, and the rendered title aligns to the editor title across the two panes
fixed
  • Scoped metadata ($bear, $obsidian, $ia, $craft) survives the export pipeline end-to-end and arrives at the destination unchanged
  • Craft URL export preserves tables and code blocks on macOS 15+ (literal pipe and backtick characters round-trip correctly)
  • Renaming a pinned note keeps the pin. The _ removal no longer targets an already-completed item
  • The editor turns off macOS automatic quote and dash substitution, so typing the " quotation prefix no longer rewrites the character and jumps the caret. Smart quotes still apply when the note renders