Curio 13 Release Notes
Release Date
April 2, 2019
Requirements
Curio 13 runs on macOS High Sierra (10.13) or Mojave (10.14).
Feature Availability
Features only available in certain editions will be listed with colored tags like or .
Executive Summary
Curio 13 is more powerful than ever:
- Mojave dark mode support! Plus numerous other interface improvements and refinements.
- Idea spaces now permit independent figure layers for more flexible layouts and arrangements.
- Figures and idea spaces now support multiple typed cross-references to other figures, idea spaces, and even web locations, to encourage more accurate and organized research.
- An integrated equation editor allows fast rendering of LaTeX, AsciiMath, or MathML.
- New focus mode feature allows you to concentrate on specific figures, collections, or list/mind map branches while everything else fades into the background.
- New markdown support for block quotes and code blocks.
- Faster access to figure stencils via the new Insert > Stencils menu.
- New meta properties for Done Date and Added Date, plus a revamped Actions inspector.
- Album collections now support two new layout arrangements.
- Lists now allow you to specify a start number.
- The Status shelf gains a new sorting popup, plus several display improvements.
- Figure enhancements include support for independently locking content, position, or both!
- More integrated Curiota support.
- The Search shelf gains support for reference and done/added date filtering.
- Idea space grids pick up a new dotted grid style.
- Within idea spaces, you can now more easily insert space above or to the left.
- Major performance and technical improvements.
- Major code updates to better support Apple's latest macOS releases.
- Plus dozens of other miscellaneous optimizations, tweaks, and fixes.
๏ผ Note that some features are only available in certain editions of Curio. See the feature details for more information.
Interface Improvements
Mojave Dark Mode Support
Curio now supports Mojave's dark mode! ๐
Curio's window chrome, toolbar, inspectors, shelf, Organizer and other interface elements will now change dynamically based on the Mojave's dark mode setting in System Preferences > General.
This required scores of changes, new graphics, and a massive number of tweaks throughout the interface. The results look pretty darn great!
Idea Space Content
It's important to note that the idea space content will still abide by the specified coloring and styles set for your idea spaces and figures. Those styles won't invert or change on-the-fly based on the dark mode setting. So Curio is much like Pages, Keynote, and many other apps in that regard.
Notes Window
The notes window follows the system dark mode setting. Like Curiota's notes editor, it will automatically fix white-ish and black-ish text colors when opening notes or pasting new content so text be readable regardless of dark mode setting.
You can force the notes window to ignore dark mode and then it will use its traditional light-yellow note background.
Force Appearance
Via Curio's Preferences you can force Curio to adopt a light or dark appearance, thus overriding the system-wide setting.
Interface Enhancements
Collapsible Inspector Shelf Panels
Several inspector panels are now collapsible, and this state is saved and restored at relaunch. So if you never use the Resources meta panel, you never have to see it!
Relocated Inspectors
As a part of this cleanup work, several inspector panels have been relocated:
- Dimensions
The idea space Dimensions inspector is now part of the Idea Space inspector popover and shelf. - Transitions
The idea space Transitions inspector is now part of the Idea Space inspector popover and shelf. - Geometry
The figure Geometry inspector is now part of the Figure inspector popover and shelf. - Actions
The figure Actions inspector is now part of the Meta inspector popover and shelf. - Line
The Line inspector is now an independent inspector and shelf tab instead of part of the figure inspector.
Miscellaneous Interface Tweaks
- Fonts, Sizes, and Colors
The entire user interface has been cleaned up so consistent use of standardized fonts, font sizes, and font and control colors is now used throughout the interface, along with loads of nitpicky control alignment and tweaks. - Shelf
The shelf buttons at the top are now using a different style that no longer uses a control deprecated by Apple. Plus a new dark mode compatible method for coloring the Status toolbar button . - Inspector Bar
The inspector bar has a number of new or modified icons, plus much nicer text controls. All required for better dark mode support. - Figure Selection
Figures on the idea space no longer show a selection glow for a nice, clean look. Only the selection resize handles are displayed. There are some exceptions: group figures and their contained figures glow; collection figures glow so you know it is active in case of a paste; figures selected within a collection glow so you can more easily see those selected items; and locked figures show a thin gray glow with no handles, unless resizable.
Features
Figure Layers
Curio Professional idea spaces now support mutiple figure layers!
What's a Layer?
Figures on Figures
On your idea space you have one or more figures, which are arranged and drawn in a back-to-front order. For example, with two rectangle figures, you can drag one and it will either drag behind or in front of the other. You can use the methods like the Arrange > Send to Back menu to rearrange this figure ordering.
Layers (of Figures) on Layers (of Figures)
All of those figures currently exist on a single, default "foreground" layer on your idea space. Now in Curio 13 Pro, your idea space supports multiple independent layers, themselves arranged in a back-to-front order, each containing their own figures in back-to-front order.
Example
For example, say you have a Background layer which is located under a Foreground layer. Curio will draw all the Background figures first in back-to-front order, then it will draw the Foreground figures in back-to-front order.
The Active Layer
A key aspect of layers is that only one layer at a time can be active. The active layer receives all mouse clicks and user interactions, essentially ignoring the other layers. This means you can select, create, delete, rearrange, and modify figures only on the active layer, which safeguards your other layers from accidental changes.
Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
Working with Layers
The Layers Menu
The Layers popup menu button is located in the top-right area of the inspector bar, as shown in the screenshot above. It normally displays the currently active layer. Clicking it reveals the available layers and allows you to perform layer operations.
Layer Icon
An icon is displayed alongside each layer entry:
- = a normal, visible layer
- = an inherited, visible layer
- = a hidden layer (normal or inherited)
Inherited layers via Master Templates are described in detail below.
Activating a Different Layer
To activate a layer, use the Layers menu to choose a different layer.
Adding Layers
By default, all idea spaces have a single layer named "Layer 1".
To add another layer, use the Layers menu to insert a new layer above the current, active layer.
You will be given an opportunity to name the layer if you wish, or it will be given a name like "Layer 6" based on how many layers currently exist.
Modifying the Active Layer
Using the Layers menu you can perform several operations on the current, active layer:
- Rename
Rename the active layer. - Delete
Delete the active layer. - Hide/Unhide
Toggle the visibility of the active layer. If a layer is hidden you can't create figures on it. - Raise/Lower
Raise the active layer up towards the foreground or lower it down towards the background.
Moving Figures Between Layers
To move figures from one layer to another you need to cut them from their current layer, switch to the other layer, then paste.
Layers and Master Templates
The contents of a master template's layers are replicated to the same layers located within idea spaces that inherit that master template. For example, figures on the master template's Components layer are replicated to each inherited idea space's Components layer.
If you rename the master layer, then the inherited layers pick up that name change.
If you delete the master layer, then the inherited layers will be removed, as well. Note that if you undo the deletion of the master layer, the layer will be re-added anew to the inherited idea spaces thus resetting any previous edits or changes to those inherited figures.
Renaming, Deleting, and Hiding
You cannot rename or delete a layer that is inherited from a master template. Instead, you rename the master layer and that change is reflected in all inherited idea spaces. Similarly, if you delete a master layer then that change is broadcast to all inherited idea spaces.
However, you are allowed to override whether an inherited layer is visible or hidden.
Change Master
If an idea space currently inherits from one master template, Curio allows you to change it to another master template. However, you can only change to a different master based on which figures you've edited that came from the current master.
In a master template, you can assign identifying names to figures using the Info inspector. For example, you can assign a name of title to one text figure and body to another text figure.
So, if in your idea space that inherits from a master, you've change the contents of the title figure, then Curio will only allow you to change to another master that also has a title figure so it can map the contents over.
With layers this same logic holds true, but it's important to note that the identifier mapping can occur regardless of layer. Following the earlier example, Curio will simply look for a title identifier on any layer within the new master.
When you change to the new master, any layers that were inherited from the previous master will be removed, any new layers that you created in that idea space instance that don't exist in its original master will stay in place, and all layers from the new master will be copied over. Then the contents of those figures changes from the original master will be copied to the corresponding figures in the new master via the identifier match.
Layers and Scribbles
Curio's existing scribble feature allows you to sketch with pens and brushes on top of your idea space content. These sketches occur on a bitmap-backed "onion skin" canvas that overlaps all figure layers.
This means there's only a single overlapping scribble canvas, not one per figure layer which would consume prohibitive amounts of memory and is more suited to a specialized painting app (with a custom memory manager) like Photoshop.
When you use the selection tool, you can select scribbles and also figures on the active figure layer. If you select some scribbles, you can use the Edit > Convert Selection to Image Figure menu to turn that into an image figure which will then be placed on the current, active layer.
Cross References
Curio Professional customers can now create cross-references from Curio figures and Organizer items to other Curio figures, Organizer items, and even web sites using a sophisticated new feature we call references.
These reference connections can be of a specified type, such as a Rebuttal or Evidence, allowing you to create a number of typed connections between your Curio items, even if they're scattered throughout a project or in different projects.
A reference of a given type goes from the selected item to a target destination item. The reference itself becomes a property of the selected figure or Organizer item.
Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
References vs Jumps
Curio has long supported a figure jump action, which is simply a link from one figure to a target destination figure, by way of a handy jump adornment. This feature is akin to an HTML link attribute which jumps from the current item to an item on a different web page or even web site.
A reference is much more advanced, where instead of a simple one-way jump, you can create multiple types of connections between figures and even Organizer items, creating a graph of typed connections.
Sample Use Case
For example, say you're using Curio to take notes on a research paper detailing a lab experiment. You can use references to associate your text figures detailing your experiment, to various image figures located elsewhere in the project, with a Experiment Snapshot reference type. They may also link to other notes which describe the results of prior experiments via Prior Data reference type.
Then, at any time, you can view a figure's references, via the new References adornment or context menu item. It lists all figures this figure refers to so you can jump to them with just a click. If within the same project, you can even see all figures to point to it, thus are referrals to this figure. (Note that a remote reference in a different project can't see all the references that point to it.)
A single figure might have references to multiple figures such as two Source figures, three Rebuttal figures, and one Example figure. Likewise, a figure can have multiple figures that all point to it, such as a figure which is an Agree reference for some figures (thus a support for those statements), and Disagree reference for others (thus a counterargument).
Defining Reference Types
Using the inspector shelf, click the Project tab and then use the new Reference Types inspector panel to see all the available reference types.
The Scope
There's a popup at the top of this inspector panel where you can choose whether to view and modify:
- Bundled reference types that are included with Curio.
- Custom reference types for all projects.
- Custom reference types for a specific project.
When you first launch Curio 13 you won't have any project or personal types, so let's begin by looking at the bundled types.
Bundled Reference Types
Click the popup at the top to show all the bundled types. The list underneath will reveal the global reference types available to all projects including Agree, Disagree, and Example, among many others. Each type is color coded for quick identification, such as green for Agree and red for Disagree.
Editing
Bundled reference types are read-only, however, if there are types you don't think you'll ever use you can uncheck the visible checkbox and they won't clutter your interface when creating references. They can be re-enabled at any time in the future if you change your mind.
Example
As an author of mystery novels, you might decide that you'll never need the bundled Footnote, Rebuttal, and Response types so you uncheck them so they aren't listed as choices when you make a reference association.
Custom Types for All Projects
At the top, switch the popup so you're looking at the the custom types you've created and made available to all projects. This list is empty by default, of course, so you'll need to add some types to get started.
Example
Continuing the example above, let's say you create a handful of custom global reference types that you'll use as you brainstorm and organize your novels: Clue, Enemy, Foreshadow, and Friend. You can use these to quickly link notes together as you work on your latest mystery. These custom types will be available to all of your Curio projects.
Editing
As custom types you can edit these names and colors at any time. Uncheck a type if you no longer want it to be available for new references, or delete it via the Delete key or Delete Type button to remove it permanently.
Custom Types for This Project
And finally, switch the popup at the top so you can see the custom reference types you've created for this specific project.
Example
To continue our earlier example, in this particular project you're working on a novel that could use a couple of project-specific types, Persona and Scene, which you can use to help associate certain notes with specific notes and image figures which describe important themes.
Editing
As custom types you can edit these names and colors at any time. Uncheck a type if you no longer want it to be available for new references, or delete it via the Delete key or Delete Type button to remove it permanently.
Working with References
Adding a Reference
To add a reference to a figure or Organizer item:
- Select and copy the figure or Organizer item you want to reference. This is the item you want to refer to.
- Next select one or more other figures where you want to add a new reference which points to that copied item. Right-click, and in the context menu that appears choose a reference type in the Add Reference to Copied Item As submenu to create your new reference.
The reference connection has now been created, and a reference adornment will then appear beside both the source and destination figure.
Adding an URL Reference
You can also add a reference directly to an URL:
- In your browser:
- Right-click on a link and choose Copy Link, which should also give Curio the title of the page.
- Or copy the URL location itself (ex: www.zengobi.com/support).
- Next select one or more other figures where you want to add a new reference which points to that copied URL. Right-click, and in the context menu that appears choose a reference type in the Add URL Reference As submenu to create your new reference.
Here the first resulting reference item was created with Copy Link so it lists the title then its URL, while the second item was created by copying the URL text so only has the URL.
Working with References
There are two ways to see an item's references:
-
Figure Adornment
If a figure either has references or is a reference then it will have a references adornment like this:
Click it and a popup menu will appear:
-
Context Menu
Right-click on a figure or an Organizer item which either has references or is a reference and its context menu will contain a References submenu like this:
Exploring the References Popup Menu
Looking at the screenshot above, let's go over the options displayed:
-
Refers To
This submenu lists all items this item refers to, neatly grouped and color-coded by reference type. If you choose one, you will jump directly to that item, even if in another project. -
Referenced From
This submenu lists all items that refer to this item. Again, these items are neatly grouped and color-coded by reference type, and choosing one will instantly jump to that figure or Organizer item. This list of referrers will only include those in the same project, not figures that may refer to this figure from other projects. -
Add Reference to Copied Item As
You can use this item to add new references, as described above. -
Remove Reference
You can choose a specific reference to remove, or choose to remove all references from the selected figure or Organizer item. This removes the reference from this item to the destination item, it does not remove references from other items to this items.
Jumps From
On a related note, as you can see in the screenshot above, if you have one or more figures with jump actions to the selected item then you can find those listed under a new Jumps From submenu in the right-click context menu. These are simple jumps, not typed references, so they are listed separately.
Searching References
You can use the Search shelf to find all figures which include any reference or just those with a specific reference type, such as Agree.
References in Exported Search Results
When you use the export button on the search results screen, any references associated with a figure are included in the resulting rich text, markdown, or CSV export.
CSV Export Details
By default, references are included in CSV exports under named columns such as "Agree Reference"
and "Disagree Reference"
.
As each figure's row entry is exported, if the figure includes one or more references of that type then those jump URLs are exported in that column.
This can be turned off if you wish.
The search results export button also has a new menu option, Export Resulting References as CSV, which can be used to export only figure reference information to a separate CSV file under columns: Title,Hyperlink,Reference Type,Refers To,Refers To Hyperlink
.
Status Shelf
Tasks Sort By
In addition to the grouping criteria, you can now specify the sorting criteria in the Status tasks area. Available options include action date, start date, due date, title, percent complete, rating, and priority. If a project category or All Categorized Projects is selected then sorting by project name is also available as a sort option.
Display Items
The large, colored jewel indicating project and task date urgency is now replaced with a thinner bar which gives us more room for text. And the task tertiary line now displays the current rating and priority if set.
Tweaks and Fixes
- Task Expand/Collapse
The tasks area now does a better job remembering the various expand/collapse states between refreshes.
Equation Editing
You can now create and edit equations using Curio!
Curio Professional and Standard customers can now create and edit equations using LaTeX, AsciiMath, or MathML syntax. Previews are instantly rendered as you type your equation. Then the final equation rendering in high quality PDF form occurs quickly and securely via Zengobi's server as a free service to Curio customers.
Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
Inserting an Equation
To insert an equation into the current idea space:
- Choose the Insert > Equation menu item (โโE).
- Or click the Insert toolbar button then choose the Equation item.
The equation editor will then appear for you to enter your new equation. As you type, the preview area instantly updates with a quick rendering of your equation.
Supported Syntaxes
Curio renders your typed equations using MathJax, the de facto standard in web-based equation typesetting for mathematics, science, and engineering.
Let's say you wanted to show the standard quadratic equation:
MathJax allows you to type that in one of three standard equation syntaxes:
- LaTeX →
x=\frac{-b\pm\sqrt{b^2-4ac}}{2a}
- AsciiMath →
``x=-b+- sqrt(b^2-4ac}/(2a)``
- MathML →
<math ...</math>
Of the three, LaTeX is the most popular by far and MathML is the most verbose.
Delimiters
Curio will assume an entered equation is LaTeX unless it finds one of the following in your typed equation:
$$
Thus it assumes a LaTeX (technically TeX) equation of the format$$..$$
\[
or\(
Thus it assumes a LaTeX equation of the format\[..\]
or\(..\)
``
Thus it assumes an AsciiMath equation of the format``..``
<math
Thus it assumes a MathML equation of the format<math ...</math>
Inline Equations
To enter an inline equation use the newer \(..\)
syntax like this:
Colors
The equation editor supports the \color
and \definecolor
LaTeX directives.
So, you can use standard LaTeX color names:
Or custom defined colors:
Final Rendering
When you click to insert or update the equation on your idea space the equation is quickly and securely broadcast to a complimentary service running on Zengobi's server to perform the final PDF rendering. Some key points about this procedure:
- This requires a connection to the Internet.
- This is generally very fast, like 1 or 2 seconds, although depends on your connection speed, equation complexity, etc.
- All communication occurs over a secure, encrypted https connection.
- After processing your equation is not stored on the server.
Editing an Equation
Simply double-click your equation on the idea space to bring it back into the equation editor. Then click the Update button when you finish your changes.
Help with Equations
Click the help button in the equation editor window to see the popup menu displayed here. It includes a sample equation in LaTeX, AsciiMath, and MathML form, and includes links to several useful websites for more information.
Working Locally
Local Render
As described above, by default when you click the Insert (or Update) button, Curio quickly and securely asks Zengobi's web server to generate a scalable PDF version of the equation, with the help of a number of installed libraries and services up on our server.
However, if you wish, you can tell Curio to use locally render a non-PDF, bitmap version of the equation instead. Click the help button in the Equation Editor window to enable this option in the popup menu that appears.
The locally rendered equation is a simple bitmap and therefore isn't a scalable PDF. For on-screen usage this may be fine, although won't be super-sharp when printed, zoomed, or scaled.
Local MathJax Install
Normally Curio's equation renderer securely links directly to an up-to-date version of the MathJax scripts hosted on a fast content delivery network server such as cdnjs. However, advanced users may elect to use a downloaded installation of MathJax accessible via their local Apache service instead. The basic steps are as follows:
- Download MathJax.
- Drag the resulting MathJax-master folder from Downloads to
/Library/WebServer/Documents/
. In the alert that appears, click Authenticate and type in your admin password to okay the move. - If necessary, open Applications > Utilities > Terminal and paste the following to start the Apache service:
sudo apachectl start
You'll need to enter your admin password again to authenticate. - Tell Curio to use this new localhost-accessible install of MathJax.
If you need more assistance see installing MathJax and configuring Apache on macOS.
Focus Mode
When working within Curio Professional or Standard sometimes you'd like to focus on a specific branch in a mind map or list, or perhaps a particular figure on a busy idea space such as an album or text figure. Now you can.
Working with Focus
Select one or more figures and choose View > Focus or press โงโF.
All other figures on the idea space will become transparent (an opacity of 15% by default). If the selected figures are parent figures in a hierarchical collection such as a list or mind map then any existing or new child nodes inherit focus as well.
To turn off focus simply choose View > Focus or press โงโF again. If you switch to another idea space or re-open your project focus is restored as well.
An Example
Say you have the following mind map:
If you want to just focus on the branch titled "Apples" then select it and press โงโF:
Alternatively if you wanted to focus on two branches you could select both parent nodes and press โงโF:
When you're done press โงโF again and that will restore your view.
Markdown Block Quotes
Curio Professional and Standard customers can now enter block quotes in their markdown text figures!
You start with a text figure that looks like this:
And here's how it appears in Curio when you stop editing:
Master Style Customization
If you have Curio Professional you can customize the style of block quotes via these entries in Format > Edit Master Markdown Style:
## = font-color:#228822; > = font-color:#338888; font-italic:1; first-line-head-indent:36; head-indent:36; tail-indent:-36;
And then it'll look like this:
A Note about Customized Blocks
Since the result is a series of rich text attributes that the Mac's text system renders, it has some limitations compared to HTML/CSS renderers. For instance, the rich text system doesn't support a left or right border. Also we've been unable to figure out a way of supporting text which is both indented and background colored. The text system doesn't want to color the first indent so the result looks odd.
Markdown Code Blocks
Curio also adds support for markdown code blocks via a "code fence":
And here's how it appears in Curio when you stop editing:
Master Style Customization
Like with block quotes, if you have Curio Professional you can customize the style of code blocks via these entries in Format > Edit Master Markdown Style:
## = font-color:#228822; ``` = font-color:#0000ff;font-size:10;background-color:#f1fff1;
And then it'll look like this:
Insert Stencils Menu
Curio now provides quick access to stencils via the Insert menu with new options:
Master Stencils
As shown in the screenshot above, Curio Professional users will see a Master Stencil submenu which would list any master stencils defined in your project.
Meta Enhancements
Done Date
A done date field is now available in the figure meta inspector.
The done date is completely independent of a figure's specified end date. You can think of the former as when the task was actually done, while the latter is when the task needs to be done.
Preferences
You can override several preferences using the done date's actions menu.
By default the done date is automatically set when a figure is checked or marked as 100% completed. The reverse is also true, if you set a done date Curio will make sure the figure is marked as 100% completed and checked if the figure checkmark is visible.
When an item is marked as done that time is recorded internally, however you can tell Curio to report the time differently if you wish. It could be the start of the day, the end-of-work day as specified by the Workday Schedule (set via the dates meta actions menu), or the end of day.
Uses
The new done date meta:
- Can be used as search criteria in the Search shelf and is included in the new results share export.
- Is available as a sort option for list, mind map, and stack collections.
- Is included when exporting figures as markdown as
@done(date)
thus suitable for importing into TaskPaper or OmniFocus. Likewise that form is accepted by Curio when importing meta data, for example when dropping a TaskPaper file on an idea space, as well. - Is included in the Status shelf's CSV export.
Added Date
An added date field is now available in the figure meta inspector.
This is set by Curio automatically when you add a figure to an idea space. However, we allow you to change the date if you're trying to mark a specific date of entry for note-taking or research purposes.
Uses
The new added date meta:
- Can be used as search criteria in the Search shelf and is included in the new results share export. For example, this can come in handy if you wanted to find all notes you've added in the past 2 weeks.
- Is available as a sort option for list, mind map, and stack collections.
Actions Inspector
The Actions inspector went through a big overhaul:
- No more Set button. Instead, like all the other inspectors, it records changes automatically.
- No more Restore Default button. Instead, just choose Default in the actions popup.
- The Go to Idea Space action used to let you choose an idea space from a pick list but this wasn't a workable solution with large projects. Instead this task is handled via the Go to Jump Target action, which is actually how it always worked in the code.
- The AppleScript action now uses the Script Editor app to edit scripts, instead of a tiny edit field. That way you can more easily test and debug scripts. When you click the Edit button the script associated with the action is dumped to a temp file then Script Editor is launched to edit it and save to that location. When you click the Update with Edits button Curio retrieves the contents of that temp file and stores it back into the figure's action data.
Start Date Time
You can now specify what time should be used for start dates via the Start Date actions popup.
Miscellaneous Meta Tweaks
- The Resources meta panel now allows you select one or more resources and click a new Remove button to remove them.
New Album Arrangements
We've added two new album arrangements to our existing arrangement which we now call Columns:
You specify a column width and the contained figures are proportionally sized to that width then arranged into a packed layout, similar to Pinterest's. Unpacked columns of images.
Like Columns you specify a column width, but instead of packing the contained figures, each row's height is based on the tallest item in that row. The result is more like a matrix of images in tidy columns and rows. Packed rows of images.
You specify a row height and the contained figures are proportionally sized to that height then arranged into a packed layout. This works very well with uncaptioned images, but can be a bit finicky with captioned images as text wrapping can jump items between sizes, although Curio attempts to counter this via iterative refinement.
List Start Number
You can now specify a list starting number!
Select at least one item in a series of siblings then use the new start number setting in the List inspector so that all siblings under this same parent begin with this new number. Note that you can't change the start number in the middle of a series of siblings.
For example, the second list in this screenshot has a start number of 4:
Miscellaneous Collection Enhancements
List, Mind Map, and Stack Tweaks
- You can now sort by the new Done Date and Added Date meta values.
- Moving siblings up and down via keyboard shortcuts is now โโงโ and โโงโ.
List and Mind Map Tweaks
- The sort options are now specified as a sibling option instead of a child option. Therefore you need to select one or more siblings under a parent node to set their sort instead of selecting the parent node.
Figure Enhancements
Figure Locking
While you can still choose the normal Arrange > Lock option which locks all figure properties, you can now fine-tune the lock if you wish:
- Lock the text content of the figure.
While locked, you can still double-click and select text within the figure, you just can't modify it. - Lock the position of the figure.
Technically you can't size the figure either, however Curio can automatically adjust the figure's size as necessary based on content, assuming that's still editable.
Choose Arrange > Unlock to remove all lock restrictions.
When a figure with any lock attribute is selected it will have a thin, gray glow. If only the text content is locked, it will show selection handles as well, since the figure can still be moved and resized.
Miscellaneous Figure Tweaks
- Hovering over a figure with tags will now show their tags and emojis (if set) in the tooltip that appears.
- The Shape inspector's text and shape shadow controls now allow a larger range of x and y (-99 to 99, instead of -20 to 20) and blur (0 to 99, instead of 0 to 20).
Curiota Enhancements
Collection Display
The Local library shelf's Curiota display of collections now matches the colored, indented display shown in Curiota itself. Note that these collections and colorings are loaded at launch so if the collections are changed within Curiota you will need to relaunch Curio to see those changes.
Note Opens in Curiota
When you double-click a Curiota note in the Local Library it now opens in the Curiota note window.
Aliases to Curiota Notes and Files
You can now hold โฅ when dragging a Curiota note or file from the Local Library to an idea space to create an alias to that item. When you double-click the alias to a Curiota note it will now open the note in the Curiota note window. You can still right-click on a note and choose to Open with Finder if you wish to open it in your default editor for RTF files, like TextEdit.
Search Shelf
Share
The Search shelf results screen now has a Share button allowing you to copy the results as rich text, or export the results as rich text, markdown , or CSV.
The rich text copy and export operations include images and all major meta entries. The CSV export includes columns for all major meta entries.
References
You can use the Search shelf to find all figures which include any reference or just those with a specific reference type, such as Agree.
Reference information is included in the results export as well. More details in the References section above.
Done Date and Added Date
The Search shelf adds support for the two new criteria options: Done Date and Added Date. This makes it easy to find everything marked as done in the past two weeks, or perhaps all images added in the past month.
These two new meta data are also included in results export as well.
Idea Space Enhancements
Dotted Grid Style
By request, Curio now adds a grid style that uses dots instead of lines!
The example inspector settings to the right would produce this subtle dotted background:
Insert Space
You can now insert space at the top and to the left of your idea space via new options in the Insert menu.
If no figures are selected then those new menu options will expand the idea space dimensions and shift all figures down or to the right to make more room towards the top/left.
Inserting Space Between Figures
If figures are selected then the menu turns into this so you can insert space above/left of the selected figures (by moving the selected figures and others impacted by this move down and to the right).
Note if no figures are above, left, right, or below the selected figures then the idea space itself simply expands in that direction.
Organizer Enhancements
Context Menu
The context menu displayed when right-clicking on an Organizer item has been tidied:
- The Label Color items are now in a submenu.
- There's a new Copy As submenu.
- There's a new Duplicate menu item.
Miscellaneous Organizer Tweaks
- Organizer document aliases now correctly show the little alias adornment.
- You can now drag-and-drop multiple selected Organizer items into an idea space in a split view and get multiple idea space link figures. Ditto if you copy multiple Organizer items then Paste As > Idea Space Link.
Project Margins
Project Inspector Panel
You can now set your project's idea space margins in the Project inspector panel. These margins are used when rendering your project idea spaces for printing or PDF export. They also impact the Dimensions inspector if you specify an idea space based on page size since the project's margins are removed from that usable area.
Those same margin controls are also still available in the Print and PDF Export dialogs, as they have been for many years.
Dimensions Tweak
In addition, the idea space Dimensions inspector now has a Project Margins button that will jump you straight to the Project panel so you can adjust margins if necessary. The tooltip text for this new button reveals the current idea space margins.
Performance Improvements
File Operations
Curio 13 offers major performance improvements when loading, saving, and closing projects, and when trashing a large number of removed assets during close or quit.
- Optimizing internal notification broadcasts contributed the biggest gain. In one extreme case, closing an almost 1 GB project after deleting a large Organizer section dropped from over 30 minutes to just 30 seconds. ๐ฒ
- Curio will now wait to resolve asset aliases until they are actually needed (to draw a preview image or handle a double-click to open) instead of resolving all aliases on project load. Loading projects with lots of aliased asset files is now almost 50% faster! ๐
- Previously on project saves Curio would perform an empty subfolder check within the project file package hierarchy, just to tidy things up. This is no longer needed and removing this check can speed up saving, especially to remote network locations. With a large 500 asset, 250 idea space project, saves went from 6-8 seconds to almost instantaneous. ๐
Library Optimizations
The project library shelf previously refreshed itself periodically as assets were added, removed, or modified — even if not visible! Portions of the refresh have to be performed on the main thread which can cause an annoying momentary pause with very large projects. So now this refresh will only occur if the project library is actually visible resulting in a much snappier interface.
Collection Optimizations
Many operations involving Curio's internal collections such as mind maps and lists are now much faster. For example, creating a new 1,000 node mind map via paste as mind map went from 90 seconds to just 10 seconds. ๐ค
Faster Dragging
You'll notice that dragging figures, especially large image figures, around the idea space is now much faster thanks to optimzations and taking away the floating tooltip while dragging which, surprisingly, dramatically impacted drag performance.
You can actually make image drags substantially faster if you disable responsive scrolling, but the trade-off is then scrolling is slower as the windowing system doesn't pre-render offscreen areas.
Search
The Search shelf, when grouping by idea space, is now significantly faster when there are lots of results. In some extreme cases, displaying hundreds of resulting items went from dozens of seconds to less than a second. ๐ฑ
View Layers Enabled
A macOS graphics acceleration feature called layer-backed views has been around for years. Previously the feature was optional but, starting with macOS Mojave (10.14), Apple is enabling it by default, so we're enabling it by default within Curio 13 even for macOS High Sierra (10.13) users as well. While we haven't noticed any impact it may be that Apple can perform its own internal optimizations for certain graphics operations. We're leaving the call to disable layers just in case, assuming Apple still honors that call going forward.
Faster Image Handling
Curio will now automatically generate and use more optimized preview images in place of any large image files it finds on an idea space, which results in much faster idea spaces loads and smoother image dragging. Double-clicking the image will still open the actual image file, not the reduced resolution preview.
For example, a 5.6 MB, 5120 ร 2880 image may take 2-3 seconds to load and render in an idea space, with painfully slow dragging. Now, Curio will create a 41 KB, 1500 ร 844 pixel jpg preview for the large image that loads almost instantaneously and drags incredibly smoothly.
This new functionality supports loads of configuration tweaks so read the details if you want to learn more.
Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
Curio's Rendering Operations
Curio uses one of the following operations to render an asset figure image:
- A full, high resolution image load and rendering.
This is the default for image files. The best quality, as Curio loads and renders the image itself, but can be slow with very large images. Optionally, for certain image formats and sizes, a scaled-down preview can be generated, saved, and re-used as detailed below. - A Curio-generated, medium resolution image preview.
This is new in Curio 13 and described in detail below. - A slower Quick Look thumbnail request.
This is the default for non-image files displayed as preview, such as a Word doc or Keynote file. This goes through the macOS Quick Look system which can be extended using 3rd party plugin renderers. Note, however, that while Curio asks Quick Look for a proportionally sized 1024 ร 1024 image, it can receive back a smaller sized image. Since Quick Look is a bit slow, Curio caches the returned image to disk and will reuse it on subsequent loads, automatically invalidating it if the original image file is changed. - A blazingly fast Core Graphics thumbnail call.
This low-level graphics call can extract thumbnail/preview data stored within certain file formats. Again, while Curio requests a proportionally sized 1024x1024 image, this call is much more likely to return something much smaller, like 256 ร 256, thus a true thumbnail. Since this routine is so fast the returned preview image is not cached to disk. - The default Finder icon for the file.
The fallback image and also the technique used when you display an asset figure as an icon.
Preview Image vs. Actual File
It's important to note that when you double-click to open the asset figure then the actual file is opened, not the preview, thus you can always see the actual image at full resolution if you wish. The previews are just rendered on the idea space where a smaller version of a large image is a suitable substitute.
Image Previews Generated by Curio
For Curio 13, instead of relying on Quick Look or Core Graphics, Curio itself can now generate and store a cached, smaller-sized preview for specific image file extensions and file sizes. Since Curio is generating the preview it can render any resolution you wish and thus has its own resolution setting, which is 1500 ร 1500 by default.
For instance, now by default all jpg, png, or heic images that are 3 MB or larger are loaded internally then proportionally scaled down to that default preview resolution. These previews are then saved to disk for re-use on subsequent idea space loads and are automatically invalidated if the image itself is changed.
An example Terminal call to customize this is:
defaults write com.zengobi.curio "Image Preview heic" -string "native,3" defaults write com.zengobi.curio "Asset Figure Preview Native Cached Size" -string "{1500,1500}"
Note that if the actual image is already smaller than the specified resolution setting then the preview is not stored and the actual image is used instead. Also note you generally only want to do this for large images where much smaller previews would suffice. Asking Curio to generate previews that are too large would just waste disk space as the previews approach the same size as the originals.
Example
For example, one of the standard Mojave desktop backgrounds is a 5.6 MB, 5120 ร 2880 heic image which normally takes a few moments to load and render in an idea space. If you had several similar images on an idea space then you would certainly notice a multi-second delay every time you visited and loaded that idea space.
However, with our new default settings, the resulting preview image converts into a 41 KB, 1500 ร 844 pixel jpg ๐ฒ and loads almost instantaneously. Plus dragging these images on the idea space is now buttery smooth.
Image Previews Generated by Quick Look
For some image formats you may want Quick Look to generate the preview image instead. An example would be if you had a 3rd party Quick Look renderer that could render a special image file format.
For instance, now by default all jp2, cr2, and dng images that are 3 MB or larger will render a Quick Look preview, which is then cached to disk as a smaller image for subsequent loads.
defaults write com.zengobi.curio "Image Preview cr2" -string "quicklook,3"
Image Previews Generated by Core Graphics
If you deal with a bunch of very high resolution medical or astronomy-related JPEG2000 images, you might want to tell Curio to use the super-fast Core Graphics call for all jp2 images regardless of file size, if you're okay with smaller thumbnails in your idea spaces.
defaults write com.zengobi.curio "Image Preview jp2" -string "coregraphics,0"
Super Enormous Images
If Curio begins loading an image, that didn't fall into the criteria for a preview image as described above, but then noticates the image is absolutely enormous (8,000 ร 8,000 or greater), therefore would be incredibly slow to render and consume lots of memory, then it will abort and generate a native proportionally scaled cached preview instead, although you can alternatively ask for a Quick Look or Core Graphics generated preview instead.
Other Advanced Settings
You can tell Curio to temporarily ignore or completely regenerate pre-stored previews when loading an idea space. Just be sure to clear the override at some point otherwise you'll constantly ignore/regenerate previews.
Technical Improvements
Project File Improvements
Automatic Removal of Orphaned Assets
Due to an earlier Curio-macOS issue, assets that were deleted in prior versions of Curio may have become "orphaned" assets abandoned within the project's internal asset library instead of going to the Finder Trash.
For example, after deleting an idea space or an image asset figure those internal asset files should have been moved to the Finder Trash when Curio was quit, but that transfer may have been aborted by macOS as it terminated Curio. Those abandoned assets are considered orphans since they are not actually used anywhere within the project, and are simply taking up space in the project's file package.
Curio 13 now finds these leftover, orphaned assets during project load and properly sends them to the Finder Trash.
Keeping Recent Orphans Due to Incomplete Sync
One exception to the above is if Curio finds any orphans that were added or changed in the past few days. Curio leaves them within the project just in case they are remnants of a partial or incomplete project sync between two machines.
For example, if you added a file to a project on one machine but closed the laptop before Dropbox or iCloud Drive was able to completely sync the project changes to the cloud. Thus on your other machine, it may have downloaded the file but perhaps not the idea space asset change to show the file as an asset figure.
You can now recover these recent orphans in the Library > Project by selecting the Scope of "Unused (Orphaned) Assets" then dragging them out of the Library and into an idea space.
More Robust Data Encoding
Since the initial Curio release over a decade ago, a handful of internal elements within the project file (ex: an idea space's background image texture) were encoded to disk using Apple's NSArchiver
class.
However, beginning in macOS 10.13 Apple is encouraging developers to transition to the more secure and robust NSKeyedArchiver
instead.
Fortunately we're ready for this thanks to the new project file format introduced in Curio 11.
Both Curio 11 and Curio 12 can read those data elements using either the old or new archiver, but always writes with the older archiver.
Curio 13 can also read those data elements using either the old or new archiver, but always writes with the newer archiver.
Curio 13 projects can still be opened with Curio 11.4.4 and Curio 12, and if changes are made then those internal elements will simply be encoded once again with the older archiver. But this change in Curio 13 will begin the transition to the more robust data class.
Updated 3rd Party Frameworks
Curio 13 includes updated releases of the following embedded 3rd party frameworks.
- Now using Sparkle 1.21.3, which manages Curio's ability to check for and safely and securely install application updates. There are tons of fixes and improvements since the old 1.19 version we had been using. Of note, this new release uses EdDSA signatures (instead of the older DSA signatures) in addition to the standard Apple Code Signing, for ultra-secure updates. It's also dark mode compatible.
Code Updates
Xcode 9 → Xcode 10 ๐
Upgrading from Xcode 9 to Xcode 10 allowed us to adopt Apple's latest suggested project settings, which revealed a few dozen nitpicky code warnings, which were all tackled.
High Sierra and Mojave
Requring High Sierra as the minimum macOS brought out a slew of deprecation warnings so many of these were cleaned up as well. These are classes or methods that Apple has indicated it will eventually remove in a future macOS release, including:
NSMatrix
Curio has long used the venerable and incredibly handy NSMatrix class to create grids of buttons in numerous spots throughout the interface. Almost all were migrated to segmented controls, individual buttons, or popups. However, there are still a couple of spots left that use NSMatrix: the scribble color palette and the tags image matrix. The former can be fixed with a custom control but the latter was handy so I'm not sure what we'll migrate to in the future.
Contacts Framework
While not deprecated yet, Curio has moved off the old AddressBook framework to Apple's Contacts framework which is unified between macOS and iOS. This framework is used to manage Contacts and vCard files dropped into idea spaces.
Code Profiling, Analysis, and Diagnostics๐ต๏ธโโ๏ธ
We love using Xcode's Instruments profiler to find and fix performance bottlenecks, many of which were documented above in the Performance Improvements section.
Next we use Xcode's Static Analyzer to find potential code hotspots to make them more robust. The analyzer tries out thousands of possible code paths in a few seconds, reporting potential logic flaws, memory bugs, and API usage bugs that would have been difficult to replicate in normal testing.
To polish it off, we use Xcode's diagnostic runtime checks (Address Sanitizer, Thread Sanitizer, Undefined Behavior Sanitizer, and Main Thread Checker) to discover and fix any other areas of contention.
In Short...
What does all of this mean? Curio 13 is more robust, more optimized, and more future-proof than ever! 💪
Slipstreamed Releases
Curio 13.0.2 (13002.3)
Equations
- Equations can now be colored by using the
\color
and\definecolor
LaTeX directives. - Added color samples to equation editor help menu.
- The equation editor now supports undo.
Collections
- When rearranging items under a parent in a list or mind map (or even a stack) then Curio will now keep their styles as-is instead of forcing them to re-adopt the level's defined style. Moving nodes to different hierarchical levels will still continue to adopt that level's defined styling unless Shift is held down.
- List titles can now show checkmarks, thus rolling up the check states of all the items in the list.
- Mind maps now draw boundaries with no set fill color correctly.
- If a collection with no title is selected and Return is pressed, Curio will begin editing the first text figure in the collection instead of an odd ghost title item.
- Fixed issue where converting a list with no title into a mind map had a missing central topic.
Markdown
- Fixed markdown issue so you can now have more than one code block within the same text figure.
References
- Tweaked the references icon adornment so it's visible on dark backgrounds.
Masters
- If you delete a figure off a master template (or move it into a collection figure, which effectively deletes it) then Curio will no longer delete instances of that figure if they have been edited on idea spaces that inherit from that master template. This change was made to prevent accidental loss of data.
Misc
- The fonts popups in the inspector bar and inspector shelf now show those fonts in your Favorites collection (as specified via the standard Fonts picker) in a section at the top.
- Minor tweaks to better support the new DEVONthink Server 3.
- Fixed a presentation mode issue so it can't be escaped in the middle of a transition animation, which could cause a rare hang.
- Fixed an issue where margins entered in centimeters weren't handled properly.
- Bottom-aligned free-form text figures now align properly with notepaper grids.
- Adding a midpoint to a line is now positioned more accurately.
Curio 13.0.1 (13001.7)
Equations
- Curio can render bitmap/non-PDF versions of equations locally via the equation editor help button.
- The equation renderer can now optionally use a localhost-accessible install of MathJax.
Images
- Images are now displayed honoring their DPI, thus a retina 100ร100 144 dpi image dragged into an idea space will be rendered at 100ร100 instead of 200ร200 as it was before.
Markdown
- When exporting text as markdown any embedded new lines are now converted into HTML
<br>
elements. This means you can now export tables with multi-line tables cells as markdown.
Meta
- You can now search for a multi-word tag like "Awaiting Client" with a text query of #AwaitingClient, just like how you could search for a resource named "George Browning" with a text query of @GeorgeBrowning. Simply remove any spaces when entering the tag in the text search field.
- Fixed issue so you can now rearrange the ordering of tags within a bundled tag set.
- Fixed issue where setting task to 100% done then stepping down by 1 would reset the task to 0% done.
References
- Fixed issues with editing reference types, such as changing colors and inactivating bundled types.
Layers
- Curio now remembers and restores the last active layer in an idea space.
- Now hiding figure selection handles when toggling layer visibility.
- Changed Unhide layer to Show layer.
Collections
- When importing lists Curio will now parse a list prefix of "- [x] " as a checked item just like it parses "- [ ] " as an unchecked item.
- Fixed a collection corruption issue related to deleting nodes!
- Fixed issue where if you've defined a default mind map arrangement (like right map) then any created connected mind maps will have that same arrangement.
- Fixed issue when dragging in an OPML, markdown, or TaskPaper file but choosing to insert it as a normal file instead of parsing it into a new collection.
Dark Mode
- The appearance popup is now restored correctly in Preferences.
- Now using a standard slider control for the optional Zoom toolbar slider (added via Customize Toolbar) so it's more readable.
- The figure stroke shape and dash pattern popups in the inspector are now more readable.
- Fixed dark mode invisible text issue with Curiota Notes dragged into idea spaces.
- The Masters Organizer now uses more standard colors to better support dark mode.
- Fixed equation editor so you can see the blinking cursor when in dark mode.
Presentation Mode
- When starting a presentation all figure editing and video playing stops to avoid rendering issues.
- Fixed a crash that could happen if you stepped through a presentation too quickly.
Misc
- Now showing the license key in the License dialog for all non-site installs.
- Figure resize handles now accommodate different idea space zoom scalings a bit better. Also no longer sometimes using iOS-like resize handles so traditional square handles are always used.
- When you select a grouped figure, changing attributes via the Shape inspector now more consistently changes properties of the individual figures which make up the group instead of some changing the group figure itself.
- Force glow color when rubber band selecting figures so what is being selected is more obvious.
- The View > Focus menu item now has a checkmark to indicate if it's active or not.
- Fixed right-click sorting issue in the Open Project Gallery.
- Clicking Add or Insert or a specific gallery button (like Mind Map) when the popover is already up simply closes the popover.
- Fixed bug when bringing up Preferences when Preferences is already up.