Curio 33 Release Notes 📖

Release Date

December 30, 2025

Requirements

Curio 33 runs on macOS Sonoma 14 through macOS Tahoe 26 on Apple silicon or Intel.

Feature Availability

Features only available in certain editions will be listed with colored tags, like .

New Features

Markdown Math Equations

One of our most popular requests is finally here! You can now enter math equations directly into Curio's markdown text figures! Block equations ($$⏎...⏎$$), inline equations (\(...\), $...$), and math code blocks (```math⏎...⏎```) are all supported.

Equation font sizing based on the figure's body font is automatically considered (and can be overridden). For inline equations, accurate baseline calculations directly from the renderer are used to precisely line up equations with neighboring text. If you select the figure then change its font size, thus the markdown body font size, then equations will automatically scale and adjust accordingly without needing to re-render.

By default the MathJax v3 JavaScript is loaded via CDN but can be locally hosted for offline rendering. Several packages are now included such as color for coloring equation text, mhchem for chemical equations, and physics for additional symbols.

Plus you can use the Equation Editor and its handy preview to insert and edit equations in raw LaTeX syntax in markdown text figures! To edit just put the cursor somewhere in the LaTeX equation and press the ⌃⌘E Equation Editor shortcut.

Tons of details are in the docs including how Curio can use hidden equation meta, how to configure offline resources, customization details, how fonts work, and advanced overrides.

1️⃣ Here's a text figure in Curio containing markdown inline and block equations:

MarkdownMathJaxSource

2️⃣ As rendered:

MarkdownMathJaxRendered

Equation Editor

The Insert > Equation editor with live preview has been completely rewritten to use our new MathJax subsystem. This means MathJax v3 (up from v2), additional bundled packages like mhchem and physics, support for offline rendering, accurate baseline calculations directly from the renderer, and no workarounds necessary to handle a mix of Retina and non-Retina monitors.

The equation editor can be used to insert a standalone equation image figure on the idea space, or a block or inline equation image inside a non-markdown rich text figure, which is very handy for those who don't use markdown. Plus the equation editor supports LaTeX, AsciiMath, and MathML.

And, as mentioned above, you can now use the Equation Editor and its handy preview to create and edit your raw LaTeX equations within your markdown text.

EquationEditor

Mermaid Figures

Curio Pro now supports Mermaid, a popular and extensible diagramming format! You can drag in Mermaid files or Paste As > Mermaid Diagram to instantly see a rendered diagram. The generated PDF image has a transparent background and will resize, zoom, and print perfectly.

Double-click the diagram to edit the source and the resulting image is quickly refreshed when you switch back to Curio.

Mermaid diagrams can be created with both ChatGPT and Claude by asking for a Mermaid diagram of a specified process flow.

Here's an idea space with a bunch of dropped or pasted Mermaid diagrams:

MermaidFigures

Most Mermaid diagrams size themselves to a natural size although some, like the Gantt chart, can position elements based on a specified width. To better support those types of diagrams you can right-click and choose Render Using Width as Max and Curio will re-render the diagram using the figure's width as the max.

1️⃣ Initial diagram:

MermaidGanttStart


2️⃣ Simply resizing the generated PDF scales everything inside, including fonts:

MermaidGanttResize


3️⃣ Render Using Width as Max gives the diagram more room to position elements like Completed task:

MermaidGanttRerender

Mermaid Markdown Code Blocks

Curio Pro expands its markdown support with the ability to render Mermaid code blocks! You can construct your Mermaid code block with either backticks (```mermaid⏎...⏎```) or tildes (~~~mermaid⏎...⏎~~~).

1️⃣ Here's a text figure in Curio containing a markdown Mermaid code block:

MermaidCodeBlockSource

2️⃣ As rendered:

MermaidCodeBlockRendered

Mermaid Organizer Documents

Curio Pro also supports Mermaid files in the Organizer!

These are dynamically rendered within a live web view which fills the entire Curio content area. A thumbnail for the Organizer is also automatically generated.

MermaidOrganizerDoc

Markdown Language Code Blocks

Curio Pro now supports language-specific syntax coloring within ```language⏎...⏎``` or ~~~language⏎...⏎~~~ code blocks, where language is the language of your code block. Curio uses the popular Highlight library for syntax coloring.

There are oodles of options to fine-tune and if you use global or project-specific master markdown styles you can even specify a different theme per-language such as one for ```swift and another for ```css.

1️⃣ Here's a text figure in Curio containing Swift and HTML code blocks:

LanguageCodeBlockSource

2️⃣ As rendered:

LanguageCodeBlockRendered

Markdown Horizontal Rules

Curio now supports markdown horizontal rules via the CommonMark-standard ***, ---, or ___ syntax.

In fact, we've kicked this up a notch so that *** will draw a strong line, --- a regular line, and ___ a thin, dotted line. The color, thickness, width percentage, dash pattern, and space before and after can be customized for each.

1️⃣ Here's a text figure in Curio containing the three standard markdown horizontal rules:

HorizontalRulesSource

2️⃣ As rendered:

HorizontalRulesRendered

Markdown Block Quotes and Callouts

Markdown block quotes now support callouts! Plus they have been significantly enhanced with support for padding, border, and inserted blank lines before/after the block.

Font, color, border, and padding properties for block quotes and the callout types can be extensively customized.

1️⃣ Here's a text figure in Curio containing a block quote plus the five standard callout types:

BlockQuotesCalloutsSource

2️⃣ As rendered:

BlockQuotesCalloutsRendered

Volume License Seat Support 👥

A volume license—such as one purchased for a 10-person department—can now be divided into individual seat activation keys, one per user. Each seat automatically inherits the volume license’s free-updates end date, so renewing the volume license keeps all associated seats current without any additional steps.

Improvements

Smarter Importing

Major rewrite of import code to classify groups of similar dropped files so we can support a use for all similar files in this drop checkbox. If Option held when dropping, indicating aliases to files, then you can also choose the file-sync direction (bidirectional, export only, import only).

Relatedly, the status bar will now indicate if a figure you're hovering over syncs with a file.

Here we've dropped several files including mixed markdown text, markdown list-only files, and csv files.

ImportFile1 ImportFile1 ImportFile3

Select Options

It's now much easier to select only figures or only scribbles. Just click and hold on the select tool to choose a specific option. No more magic modifier key incantations.

SelectOptions

Glow Options

Sometimes it's hard to tweak your figure borders and colors and make minor positioning adjustments when selection glows and grab handles are in the way. Now you can tap W to toggle off glow and ⇧W to toggle off handles making it easier to see what you're doing while the figures remain selected. Tap the keys again to toggle them back on. These are temporary overrides just for the current idea space viewing.

1️⃣ Normal selection glows and grab handles:

GlowOnHandlesOn

1️⃣ Tapped the W key so glows are off but and grab handles are still visible:

GlowOffHandlesOn

1️⃣ Tapped ⇧W so now both are off, but remember the figures are still selected:

GlowOffHandlesOff

Async URL Figure Meta and Previews

When dragging an URL into Curio all website meta data, including icon and preview images, are now loaded asynchronously (in the background) using a hybrid of Apple's native LinkPresentation framework plus a custom website OpenGraph description parser, instead of synchronously retrieving and parsing all meta info using custom code. If you've enabled URL figure previews via Format > Default Figure Settings > By Default Show URL As Preview then a normal link figure is shown until the loaded meta info comes in then the figure refreshes with the preview.

In short this means no more pause when dragging in links; they are now placed instantly and will silently refresh a few seconds later.

URLFigurePreview

More Improvements

  • Status Shelf
    The Status shelf and code related to the background retrieval of tasks in opened and unopened projects has been significantly refactored to make it much robust and prevent race conditions, potential deadlocks, and synchronization issues.
  • Better Backups
    If you've enabled Curio's built-in automatic backups, Curio will now store a zipped version of your project, instead of a simple copy, in the specified Backups folder. This saves space, makes backups faster with cloud-synced backup folders, and backed-up projects won't be found by Spotlight meaning you won't accidentally open your backups instead of your real projects. The zipping happens asynchronously so won't slow project opening.
  • Window > New Window
    When you choose Window > New Window, Curio will now store the current project and session state (Organizer selection, etc) before opening the new window so it appears in the same state.
  • Arrange > Lock Position
    You are now able to add/remove/rearrange items within a collection/composition that has its position locked via Arrange > Lock Position.
  • Figure Auto Spacing
    The auto spacing algorithm is now more robust for figures that have Resizes should move figures closely underneath checked in the Geometry inspector panel.
  • Markdown Code Blocks Enhancements
    Like the new language code blocks, regular code blocks now support padding, border, and inserted blank lines before/after the block.
  • Markdown Code Blocks with Tildes
    You can now use 3 tildes as an alternative to 3 backticks for a code block. This brings Curio into compliance with CommonMark and is easier to type than backticks on certain international keyboards.
  • Markdown Master Style Font Sizes
    For your master markdown styles you can now specify a font-size with a px suffix to indicate pixel units like 16px, as opposed to standard points (where 12pt=16px), or with a % suffix like 85% which specifies a font size as a percentage of the default or body font size. The latter is handy if you want your language code block to be a tad smaller than surrounding body text, like Github's 85% or ChatGPT's 87.5%.
  • Markdown Master Style Padding/Border
    Curio can now handle more advanced values for attributes like padding and border-width when used with markdown block quotes, code blocks, and language code blocks. Like their CSS counterparts you can now specify up to four numerics:
    padding:10 = all four sides
    padding:10 10 = top/bottom, left/right
    padding:10 10 10 = top, left/right, bottom
    padding:10 10 10 10 = top, right, bottom, and left.
  • Markdown Master Changed

    After making changes to the master markdown file Curio will ask if you want to re-render all your idea space previews when you close the project, or right now, or manually via the Organizer > Regenerate Idea Space Previews menu. Regardless of what you choose Curio will always make sure an idea space’s thumbnail and underlying preview are up to date when you select, export, or print the idea space.

    MasterMarkdownChanged

  • Export As Markdown Into Separate Files
    When you select multiple figures and choose to Share > Export As > Markdown you will see a new Export figures as separate markdown files checkbox. When checked instead of going into a single markdown file each figure will export into its own sequentially numbered markdown file.
  • Color Specifications
    Colors specified in your Curio settings or Master Markdown Styles have long supported syntax like #ff0000 and rgb(255, 0, 0) and rgb(255, 0, 0, 0.35), and has now been extended with more accepted syntax such as rgb(255, 0, 0, 35%), rgb(255 0 0 / 35%), rgb(100% 0% 0%), rgb(100% 0 0 / .35), rgb(100% 0 0 / 35%) for those more familiar with those CSS rgb syntax formats.
  • Figure Share Sheets
    Our Share hierarchical menu no longer has entries that connect to macOS Share services, as those have been deprecated by Apple. So now the menu has a Share As Text Via Share Sheet and Share As Image Via Share Sheet which will pop up the standard macOS Share sheet over the figure.
  • Video Poster Artwork
    For video files, if no poster frame or start frame is specified by the user then Curio will try to find an embedded poster art in the video's meta data and use that. If it can't find anything then it defaults to the first frame of the video.
  • Remove Instant Document
    The Insert > Instant Document > Remove Instant Document item is now a submenu so you can immediately remove a user-added instant document (instead of showing the internal app support folder which was flakey on Curio for Mac App Store).
  • Project Library Thumbnails
    The rendering of project library thumbnails is now smarter: either a low-level image thumbnail request for images or a Quick Look thumbnail request for other file types. Either case is completely asynchronous and controlled so a large library doesn't swamp the system with thumbnail requests. One convenient side effect is thumbnails for PDF's now show annotations such as highlight coloring. Plus there's a new right-click Refresh Thumbnail to refresh its image.
  • Opening Projects With Same ID
    The warning that appears if you open two projects with the same project ID, like if you duplicate a project, is now smarter.
  • URL Detection
    When importing files as lists or tables, when creating individual figures within that collection Curio now detects non-website URLs like curio:///blah and imports them as link figures.

Fixes

  • Improved Idea Space Internal Filenames
    Fixed a rare issue where renaming idea spaces with long titles (≥ ~20 characters) containing accented letters or emoji could result in slightly different internal filenames, leaving behind duplicate files for the same asset. Curio now always keeps the newest version and automatically archives any older duplicates.
  • Right-Down Mind Map
    Fixed the right-down mind map arrangement so when you collapse nodes the map shrinks appropriately.
  • Synced Figure Note CPU Issue
    Fixed issue where syncing figures with notes caused a CPU spike.
  • Collection Query Fields
    Fixed issue where the Query field for list, mind map, stack didn't wrap contained text. Made the field a bit bigger too. And now right-clicking on query collection doesn't say List (Table of Contents).
  • Go To Today
    When you click the Go To Today journal button it will jump to today's entry if it exists, or create a new with the default journal style/template if it exists, else will now show the gallery so you can select a style/template for your new entry.
  • Organizer Folder Rename
    Fixed issue where Organizer new folder with selection was putting the idea space into rename mode instead of the folder.
  • Text Figures With Emoji
    Fixed issues when bolding/unbolding selected text figures which contain emoji.
  • Embedded YouTube Videos
    Fixed issue with embedded YouTube videos so they work again (and don't show a 153 error). Google is now requring a Referer HTTP header for embeds.
  • Broken Alias Icon [macOS Tahoe 26]
    Fixed issue with broken alias icon on macOS Tahoe 26.
  • Markdown List Rendering Issues
    Fixed a markdown issue with ordered lists followed by unordered lists, or vice versa, and a related issue to double-spaced list items having an extra space after the very last item.
  • Tag Set Reordering
    Fixed wonky issues when rearranging tag sets in the meta inspector.
  • Mind Map / List Child Coloring
    Fixed some issues with selecting a color palette from the mind map and list inspector and spreading those colors to child nodes.
  • Paste As Figure Instance
    Fixed Paste As > Figure Instance so its use of the clipboard is more compatible with various clipboard managers.
  • Grid Snapping
    Fixed grid snap issue with figures that have margins.

Technical

macOS Sonoma 14 Minimum

Curio now requires macOS Sonoma 14 as a minimum so new deprecations were cleaned up to better future-proof its codebase.

MacOSSonoma

🚨 LinkBack Deprecated

LinkBack has been deprecated and is no longer supported by Curio. The 3rd party LinkBack code framework is 15 years old and relies on system calls that Apple deprecated way back in MacOS X 10.13 High Sierra.

🚨 Reminder: Evernote Deprecation Soon

As mentioned in the Curio 31 release notes, Curio's support for Evernote will cease very soon.

Evernote isn't nearly as popular as it was over a decade ago and the old API code that Curio's Evernote shelf uses to talk directly to the Evernote cloud has long had issues. Of course you can always use Evernote's native macOS app to copy notes into Curio.

More Technical

  • Sparkle
    For Curio distributed via our website, our app updating framework is now Sparkle 2.8.0 (up from 2.7.1).
  • RevenueCat
    For Curio distributed via the Mac App Store, our subscription validation framework is now RevenueCat 4.44.1 (up from 4.43.3).
  • Classic Aliases

    We have finally removed our old school alias support. Curio 7 and earlier used aliases to store linkages to files for asset aliases, project aliases, figure actions with file aliases, and jump target aliases.

    This relied on the Alias Manager from the classic Mac OS that Apple ported into the initial release of Mac OS X in 2001. In Mac OS X Snow Leopard 10.6 Apple introduced security-scoped bookmarks as the modern replacement for aliases.

    In Curio 8 we started encoding bookmarks and aliases. Then in Curio 14 we stopped encoding aliases entirely but still attempted to resolve them for pre-Curio 8 projects with no bookmarks. In macOS 11 Apple deprecated the method used for old alias resolution. And now with Curio 33 we've finally removed all old alias code out of Curio.

    Don't worry, everyone still refers to these types of linkages as "aliases" as security-scoped bookmarks is pretty geeky.

  • Recently Opened Projects

    Curio now has a custom recently opened projects tracker to replace the problematic native technique.

    On the initial run it will migrate file paths from the native system to fill it out (although you can turn off this migration if macOS hangs resolving them and begin with a blank slate). After that it will track projects as you open them, up to the System Settings specified max number.

    We've seen that the native technique can hang when Curio requests the recently opened projects due to some under the hood synchronous queries it makes to resolve this list. This has resulted in odd hangs on Curio launch for some customers.

    Our custom system is simple and won't attempt to auto-mount drives or auto-reconnect to servers so is virtually instantaneous. When it's done loading up its list it tells Status shelf to populate itself. The result is much more stable and robust with no risks of hangs and no need for magic delay times.

    The File > Open Recent submenu is still managed by a related native system which fortunately doesn't have the same resolution pitfalls. And if you choose Clear Recents it will trigger the clear in Curio's new custom system as well.