Curio 14 Release Notes

Release Date

May 20, 2020

Requirements

Curio 14 runs on macOS Mojave (10.14) or Catalina (10.15).

Feature Availability

Editions

Features only available in certain editions will be listed with colored tags like , , . For example, next to a feature means that the feature is available only in the Professional edition of Curio.

Mac App Store

Any items of note specific to the Mac App Store build of Curio, such as restrictions or limitations, will be displayed with the Mac App Store icon alongside.

Executive Summary

Curio 14 adds a number of super powers to Curio:

  • An integrated journalling system allows you to log meetings, make class notes, keep a journal or diary. All neatly organized, sorted, and managed with automatic year and month groupings.
  • New Table of Contents as a native Curio list or mind map collection.
  • Markdown lists now render with more accurate alignment of list numbers and spacing, plus contents of markdown code blocks will now ignore symbols that may look like markdown syntax.
  • You can now Spread PDF across rows and columns creating a matrix of pages.
  • Several scribble enhancements including a new enhanced color picker with a much better spread of hues, plus awesome new support for sketching using an iPad and Pencil connected to the Mac using Catalina's Sidecar feature.
  • A new, more sophisticated layers popover provides new capabilities for layered idea spaces.
  • Masters enhancements include support for custom inner figure styling and more robust Change Master handling.
  • Curio can now automatically scoot figures down or up as figures above change size!
  • Numerous figure enhancements such as completed tasks displayed with strikethrough and dimmed; neumorphic shadows; automatically updated Idea Space Link Figure titles; figure styles including sizing; and image alias icon overlays.
  • Tons of collection figure enhancements such as automatically adjusting table row heights as contents are changed; table cell margins; "transparent" selection mind maps; shortcuts to expand/collapse mind maps and lists; easy parent creation; and lots more!
  • The Local Library shelf now supports DEVONthink integration via Spotlight, which means DEVONthink Pro Server is no longer required!
  • Better integration with the popular Hook productivity app is now possible thanks to new Curio AppleScript capabilities.
  • A new circle base shape allows for easier construction of certain figures and opens up possible styles such as the new Circles mind map org chart.
  • Text figures now support a minimum height which is useful for forms, templates, or in combination with automatic figure spacing.
  • Curio adds a new Paste As > Rich Text menu which is useful when working with Microsoft Word.
  • Curio's MindManager mind map import/export support now handles hyperlink figures, and fixes an export compatibility issue.
  • New variables for an asset file's creation and modification which is useful in captions.
  • Several import/export/printing improvements including a project file path variable, an idea space count print header/footer variable, and several PDF export refinements.
  • Several Organizer and idea spaces enhancements such as zooming both split views simultaneously; sorting idea spaces by descending title; new Organizer headings and font cleanup.
  • Curio Pro's Automatic Backups feature is now supported in Curio Standard, although only Pro supports per-project customizations.
  • Major performance and technical improvements.
  • An insane number of code updates to better support Apple’s latest macOS releases.
  • Some features have been removed due to changing technologies or to clean up Curio.
  • 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.

Features

Journal

Curio projects now support a super-slick journal!

Curio's project journal feature allows you to log meetings, make class notes, keep a journal or diary, and much more! All neatly organized, sorted, and managed by Curio with automatic year and month groupings.

Curio comes bundled with several journal templates plus it's incredibly easy to create your own.

Your journal entries can contain anything a normal idea space can contain including text, markdown, images, links, mind maps, lists, videos, etc; checklist tasks, GTD-style tagging, start/due dates, etc; links and references within your project or between projects...

And, since the journal is a part of your project document, it's always accessible and integrated with the rest of your project. Now all your notes, research, brainstorming, and more are all organized together more effectively in one complete document package for easier tracking, storage, and archiving.

In other words, this goes far above and beyond your typical Mac journaling app!

Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
Getting Started

To begin, click the Journal icon in the Organizer header bar to switch to Journal mode, creating the Journal section automatically, if necessary.

Your project's Journal section appears under your normal sections but above the Archive and Trash sections. You can only have a single Journal section per project.

Adding New Journal Entries

Click the Add button to create a new journal entry. Bundled, personal, and master journal templates are automatically listed within the Add button's popup or you can choose from the gallery or a blank idea space.

Your new journal entry will default to today. You can use the date chooser in the inspector bar to change the journal entry to a different date.

Within the Journal Organizer, Curio automatically creates and titles the encapsulating year and month folders, and the idea space entries, although the date formatting of the idea spaces can be customized, as described below.

Changing Entry Dates

To change the date associated with a Journal entry, use the date chooser in the inspector bar.

Working with the Journal Section

You can rename your Journal section if you'd like, perhaps calling it Class Notes, Lab Observations, or Meetings if that makes more sense for your project. And you can associate a color label with it and even delete it.

You can also rearrange the Journal section among your other sections, although it can't be a child under another section nor can another section be a child of it, and like other sections it has to stay above the Archive and Trash.

Year/Month Folders and Sorting

Your Journal section is automatically sorted and arranged by Curio, with year and month folders added or removed as necessary for your entries. Years are displayed in descending order (2021, 2020, 2019), months within each year are in ascending order (January, February), and entries within each month are in ascending order as well (May 1, May 2, May 3).

Rearranging Entries

You can't rearrange the idea space entries within the Journal section, since they are automatically sorted by the entry date. Instead, if you'd like to change the date associated with a Journal entry, use the date chooser in the inspector bar.

Journal Entry Titles

You can change the date format for Journal entries displayed in the Organizer by right-clicking and choosing a new date format from the Journal Date Format submenu.

Many popular date formats are included, plus the standard short, medium, long, and full date formats from System Preferences > Language & Region > Advanced > Dates.

You can actually extend this list of options by entering a semicolon-delimited list of date formats then relaunching Curio.

Or just set a new default by entering a valid date format then relaunching Curio.

Organizer Filter

Note if an Organizer filter is active then a different date format is used since you won't see the encapsulating year and month folders.

For example, if the entry is normally titled "March 1" then that may not help in a collection of filter results. So, when a filter is active a more verbose date format is displayed for the entry titles, such as "Sun, Mar 1, 2020"

You can right-click and override that date format as well via the Journal Date Format submenu or directly then relaunch.

Dragging Entries Between Projects

You can drag journal idea space entries and folders from the Journal of one project to the Journal of another, but you can't drag the actual Journal section from one project to another.

Saving Custom Journal Templates

To create your own journal templates, go into Journal mode, select an existing journal idea space entry that you'd like to save as a template, then right-click and choose Save As Idea Space Template.

Like normal templates, it can be stored as a personal and/or a master template (the latter only if you're on Curio Professional).

A "Journal" template gallery collection will be created automatically for the new template, if necessary, to help keep them organized in the idea space gallery. All personal and master journal templates in their respective "Journal" collections will appear directly in the Add button popup for quick access.

Journal Organizer Titles vs. Headings

You may want to use something like {%IdeaSpaceDateAddedFull} instead of {%IdeaSpaceTitle} for your headings within your journal entry idea spaces if you'd like a specific date format there, instead of one tied to the Organizer's setting.

Table of Contents

Curio Professional and Standard customers can now insert a Table of Contents as a native Curio list or mind map collection. This collection is dynamically generated and dynamically updates if changes are made to your project's Organizer hierarchy.

Working with Table of Contents

Insert a Table of Contents either via the Insert main menu or the Insert toolbar button. A list or mind map collection is inserted into the current idea space and automatically populated.

The collection is comprised of idea space link figures, displayed in icon mode, to all Organizer items after the idea space that contains the Table of Contents itself.

Clicking a link will jump to that idea space in your project. If you export your project as PDF, then clicking a link in the exported Table of Contents will jump to the appropriate page within the PDF.

Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
The Contents of the Table of Contents

The hierarchy included in the Table of Contents is based on where its containing idea space is located in the Organizer:

  • If the next Organizer item after this idea space is a child, thus this idea space is a parent, then the Table of Contents is of those children, recursively. This option, in particular, is useful if you'd like to create multiple Table of Contents within the same project or section.
  • Else the Table of Contents is made up of the siblings that come after this idea space and the children of those siblings, recursively.

Note that Organizer items prior to this idea space are not included in the Table of Contents.

Styling the Table of Contents

As mentioned above, the Table of Contents collection is made up of standard idea space link figures, displayed in icon mode. The containing list or mind map collection can be styled with any bundled or personal list or mind map style simply by choosing the style from the inspector style galleries.

You can also customize the collection then use Format > Set as Default Style to store that as the new default style. For example, choosing Format > Set as Default Style for List (Table of Contents) Figure will make it the new default for list Table of Contents.

Updating the Table of Contents

The titles and previews of the idea space link figures which make up the Table of Contents will update automatically if changes are made to their destination idea spaces.

And, when the Table of Contents idea space is revisited, either manually or when exported or printed, the Table of Contents will automatically determine if it contains an out of date hierarchy and regenerate itself, if necessary. You can also press the Regenerate button in the Table of Contents inspector to force a regeneration.

Using the Inspector

The Table of Contents can be customized using its inspector popover found on the inspector bar.

  • Text Only Starting at Level
    By default, Curio includes previews until hierarchical level 3 when it switches to text only entries.
  • Collapse at Level
    By default, Curio automatically collapses the 2nd hierarchical level in the Table of Contents. If you'd like to see more, simply click a parent's expand widget to see those child items.
  • Include up to Level
    By default, Curio includes the first 3 hierarchical levels in the Table of Contents. For complex projects, reducing the number of levels can make generation faster. Note that Curio may throttle the specified value if a massive number of entries would be created, see below for more details.
  • Regenerate
    As described above, the Table of Contents detects when it needs to be regenerated automatically, but you can click this button to force a refresh.

Other internal advanced settings which may useful:

  • Title
    The title of the Table of Contents is the dynamic variable {%IdeaSpaceTitle}, by default, so it reflects the title of its containing idea space.
  • Stop At Level At Max Figures
    As a safety catch, regardless of what the user has specified in the inspector, to avoid generating a massively large list or mind map, Curio will automatically reduce the included levels to try to bring the number of entries in the entire collection to no more than 200 entries, which is the default. So if 3 levels has 350 entries, and pruning to 2 still leaves 220, then will prune back to level 1 (the minimum). If 0, then all levels are included regardless of how large the resulting collection becomes. Keep in mind, 200 entries at roughly 40 pixels tall per entry, the resulting list would be roughly 8,000 pixels tall!
  • Text Only At Max Children
    If a Table of Contents parent node has a max number of children or more, then those children will be text only. For example, if a particular parent has 75 children then perhaps text-only is fine, but another with only 12 children can show icons. If 0, the default, then this check is not performed.
Dynamic Content

It's important to remember that the information in the Table of Contents is dynamic and not a static snapshot.

  • If you modify any items within the Table of Contents or their expand/collapse states then this will be reset the next time it has to regenerate.
  • If you drag the idea space containing the Table of Contents to a different location in the Organizer it will regenerate itself based on its new placement. Similarly, a duplicate or copy/paste of the idea space containing the Table of Contents will regenerate based on its new placement.

Of course, the specified Table of Contents style will be kept between regenerations.

Layers

Layers Popover Inspector

Working with layers is now much improved with a new Layers popover inspector.

  • Active Layer
    Click to choose the active layer.
  • Rename
    Double-click on a layer to rename it.
  • Drag-and-drop Ordering
    You can now drag-and-drop to rearrange the front-to-back ordering of your layers.
  • Locking
    Click the lock icon to lock a layer so its figures cannot be edited.
  • Visibility
    Click the visible icon to hide or show a layer. Note that hiding a layer acts as an override forcing the layer to be hidden when printing, exporting, or presenting regardless of the restrictions discussed below.
  • Restrictions
    Assuming the layer is marked as visible, you can restrict a specific layer from printing, exporting, or presenting by toggling the appropriate icon. Note that you can't do the reverse: you can't make a specific layer only appear when printing, for example.
  • Deletion via Swipe
    With touchpad or Magic Mouse you can swipe a layer's entry in the list to delete it.
  • Inherited from Master Idea Space
    Layers that are inherited from a master idea space template will show a special masters icon, see the Title Block entry in the screenshot above. This indicates the layer cannot be renamed or deleted, although you can still rearrange, hide, or change its permissions.

Layers Popup Menu

For those still a fan of the previous quick access popup menu to switch layers, just hold Option (⌥) and click the Layers button to see the menu instead.

Idea Space Context Menu

You can also right-click on a figure or the idea space background to see some new layers submenus:

Switch to Layer

The first submenu allows you to quickly switch to another layer. Layers that contain figures directly under the click point have a special notice alongside so you can easily switch to a layer that contains a specific figure.

Move Selected Figures to Layer

The second submenu appears if you have figures selected so you can instantly move those figures to a different layer.

By default the menu indicates that the figures will be moved to the specified layer and you will then switch to that layer.

However, if Option (⌥) is held when you right-click then the figures will be moved to the specified layer but you will stay on the current, active layer.

If you wish the default to be opposite (Stay by default and Switch if Option is held), you can change this.

Presentation Mode Context Menu

While presenting your idea spaces, you can now right-click during the slideshow to see a new context menu. There you can switch to a different active layer, perhaps to select figures on that layer, or toggle the visibility of a layer. Choosing an already active layer will hide it, choosing one that isn't active but hidden will make it active and visible.

The visibility toggles only persist while showing that slide. Moving forward or back, or restarting the slideshow will restore visibility to their normal values.

For example, as a teacher you may have set up an Answers layer to be hidden by default during presentations using the restrictions specified above. Using the context menu you can temporarily make that layer visible when you're ready to reveal the answers to your class.

Automatic Figure Spacing

Over the years, one of the most popular requests, if not the most popular request, has been: "can't you make it so Curio automatically scoots figures down or up as figures above change size?"

At long last, we're thrilled to be able to answer: "Yes!" That's right... auto-scoot is here!

There were many ways to implement this kind of feature but we came up with an approach that: ① is easy to set up, ② is flexible, and ③ reduces the chance of inadvertent cascading scoots! 😬

Demo

Click the video below 👇 to see a quick video of automatic figure spacing in action.

Notice how adding a new item to the list automatically pushed the two figures underneath further away, and when deleting list items, those lower figures were pulled back up? All automatically!

Want to learn more? Click to reveal/hide the details! (Shift-click to reveal/hide all details sections)
How it Works

The list collection figure, and the two text figures in the example above all have a new maintain spacing with figures closely underneath property checked in the Geometry inspector.

This property means that if any of those figures are resized, either manually or by changing styles or content, then the figures closely underneath will automatically scoot down or back up as the figure's size changes.

Closely Underneath?

By default, Curio assumes that figures 50 pixels or closer to the bottom of an auto space figure are closely underneath, and will therefore be moved if the figure changes size. Any figures beyond that boundary are not impacted. This can, of course, be customized. Setting it to 0 will mean all figures underneath no matter how far away.

We do this so you don't innocently resize an auto size figure, and inadvertently cause an avalanche of scoots down the page, as one figure bumps into another, which bumps into another, etc.

Style

This new auto space below attribute is stored with the figure's style information thus will be set via custom personal styles when creating new figures or when applying a style to existing figures.

Considerations

Some keys points to consider when working with automatic spacing:

  • The figure being resized must have the auto spacing property enabled.
  • Only resizing an auto space figure impacts lower figures, not moves.
  • Only those figures within the 50 pixel boundary will be moved up or down. If those figures also have auto spacing enabled, then Curio looks below those figures as well, and below those, etc...
  • Moving a figure completely away doesn't collapse the figures. It's simply no longer impacting those figures previously underneath it. It still has the auto space property, of course, so now it will impact figures in its new location when it resizes.
  • Moving a figure from elsewhere into an area close to another figure doesn't automatically scoot everything down. Curio allows you to place things where you want it to go.
  • Again, resizing is what triggers the auto spacing. This means you can still manually move and position figures anywhere you wish, maintaining the unrestricted, freeform nature of the idea space environment.
  • Curio's auto-spacing algorithm isn't currently able to handle a figure that has a large, abrupt change in size. For example, by pasting a huge amount of text into a text figure. That kind of change can end up creating a recursive, cascading series of adjustments where figures leap past other figures, bumping into other figures, which then leap over or bump into other figures, etc.

As you can see, the goal of this feature was to simplify the case where you had a series of figures on the idea space (i.e. not in a collection) that could grow or shrink in size and you'd like Curio to help scoot down or up those neighboring figures.

Auto spacing is not designed to replace the fully automatic solution which is a collection figure such as a list or stacks, where the collection has full control over where items are placed and can handle inserting, deleting, and rearranging.

And, along those same lines, auto spacing doesn't work for figures within group or collection figures, as their container is charge of the layout of those inner figures. Auto spacing is only for figures placed on the idea space.

Demo

Click the video below which shows off some of those considerations:

Best Practices

Curio's automatic spacing is pretty smart but some giant resizes can throw it off. For instance, if you have a figure 200 pixels below a auto-spacing figure and that figure resizes in height due to a large amount of text being pasted it may shoot past the item below.

A better approach is to use the new Text Figure Minimum Height feature, discussed below, to size that auto-spacing figure to a minimum height first, then place items closely underneath, within the 50 pixel boundary. That way Curio knows the spacing that it's trying to maintain at the start of the resize.

Text Figure Minimum Height

Text figures can now have minimum heights.

This means you can resize the text figure to a certain width and height, much like a freeform text figure. However, unlike a freeform figure, if text is added such that the figure needs to grow, it will do so automatically. Similarly, if text is removed then the figure will shrink until it reaches that minimum height.

This is useful, in particular, when designing forms or Journal templates, where you would like large text blocks that will grow as necessary as content is entered, but have minimum heights when they're empty or contain small amounts of text.

Enabling a Minimum Height Figure

To make a text figure a minimum height figure, do any of the following:

  1. Click the minimum height button in the text inspector , or
  2. Click the minimum height button in the inspector bar's paragraph popover, or
  3. Right-click on the text figure and choose Text Options > Text Block with Minimum Height.
Setting the Minimum Height

To set the minimum height for the text figure, select the figure, then resize it to the desired height using the selection handles. That new height will become the minimum height for the figure.

Minimum Height Text Blocks + Automatic Figure Spacing = 🙌️

Using this minimum height functionality along with the automatic figure spacing feature mentioned above allows you to create forms with text blocks that can expand and contract automatically. It's very slick!

Improved Spread PDF

Our popular Spread PDF feature has been improved!

You can now spread selected figures across the idea space, then down the idea space, creating a collection of columns and rows, each showing a different page of the PDF. You also have control over the spacing or gap between the columns and rows.

In addition, the Spread PDF menu options have been modified to be more clear:

  • Spread PDF Within This Idea Space
    Select a PDF figure plus any addition figures you'd like to replicate such as a notes text box or list of key points, then right-click and choose this menu item to spread the figures across then down the current idea space, up to a maximum of 20 pages.
  • Spread PDF Across Idea Spaces
    Next, if you still have more pages in the PDF to spread, right-click on the idea space in the Organizer and choose this menu item to spread those pages across as many additional idea spaces as necessary to show the remaining pages.

For instance, you might have a 200 page PDF that spread across an idea space to create a 4 x 5 matrix of pages, thus showing the first 20 pages of the PDF. Then use the Organizer to spread that idea space to automatically create the additional 9 idea spaces needed to show all 200 pages of the PDF.

Example

Here's a spread of a PDF figure and an associated text notes figure across 3 columns and down 3 rows:

Perfect Circles

New Shape: Circles

This is a new, base shape in Curio that automatically maintains a perfect circle shape.

Yes, you could have drawn with the Oval shape and held down Shift (⇧) to constrain its proportions or used the keep proportional toggle in the Geometry inspector to create a perfect circle, but having a circle as a base shape simplifies this process and opens up new possibilities, like...

New Mind Map Style: Circles

Curio now includes a new Circles mind map style. It can be applied to any mind map arrangement, such as the Org Chart layout here:

Given that circles have the same width and height, this shape is most useful with smaller text items such as a single word or only a few words.

Masters Enhancements

Custom Inner Figure Styling

Curio's master functionality now supports cases where you have a master idea space template or stencil which contains a collection figure, like a table or mind map, which itself has cells or nodes with custom stylings.

For example, in the table here, while the table has a defined style for headers and body cells, we've customized three header cells to have unique colorings.

In previous versions of Curio, if you changed any part of the master template or stencil it would force through the style associated with that table, resetting those cells to that table style's header style.

Now, Curio will make sure any customized inner figure stylings remain intact and continue to reflect the custom stylings of those inner figures from the master. This holds true even if you change the text contents of that cell or node in your instance of the master.

Custom Idea Space Styling

On a related note, Curio also now supports an idea space instance of a master template overriding its own styling properties, like it's background color, and will therefore ignore future style propagations from the master.

Change Master

During a Change Master operation, if you've created your own figures on a layer inherited from the original master template, Curio will now transport them to the top-most layer of the new master template so you don't lose any data.

Note that Curio will continue to use figure identifier fields to transfer figure content from the original master template to the new master template, where possible, such as a text figure in both templates identified as title. Otherwise figures from the original master will be removed when you change to a new master, of course.

Figure Enhancements

Checked Tasks

Checkmarked tasks in Curio which have been completed are now displayed with strikethrough and slightly dimmed. You can disable the strikethrough, disable the dim, or change the dim opacity if you wish.

Neumorphic Shadows

Just for fun Curio adds a new special shadow effect that mimics the neumorphism design craze. Essentially it adds a second, slightly smaller highlight shadow in the opposite corner from the main shadow.

All values are automatically calculated based on the primary shadow's x, y, and blur. You can enable this shadow effect in the Effects inspector panel.

Idea Space Link Figures

If you drag an idea space from the Organizer to the the current idea space then you'll create an idea space link figure. Right-click it and choose Show as Icon and you'll notice it has the destination idea space's title. However, in the past this was not auto-updated if the idea space's title later changed.

Automatically Updated Titles

Now in Curio 14, Curio will make sure that title remains up to date if the idea space's title changes. You are still able to manually override the figure's title with your own text if you wish and Curio won't replace it. Later, if you'd like it to reflect that actual idea space title again, simply remove all text from the figure's title and Curio will replace it.

Faster Icons

Idea space link figures displayed as icon now render much, much faster thanks to new caching.

Better Images

Idea space link figures displayed as images are now scaled and cropped to a 1000 × 1000 size, if necessary, so idea space figures that point to super large idea spaces no longer result in a minute, super-scaled images. This also means they are much faster to load and render, as well.

Styles Improvements

Figure Styles now include Sizes

At long last, by very popular request, when you save certain types of figure styles, sizing information will automatically be saved as well. These figure types include images, albums, index cards, pinboards, stacks, and tables.

For image figures, Curio will then apply the style's size if you save the style as a default for image figures (Format > Save as Default Image Style) and then drag in a new image, or if you apply a style to an existing image figure that you haven't sized yet.

For the collection figures (albums, index cards, pinboards, stacks, and tables) these sizes be used when you create a new collection using that style, or if you apply a style to a collection that doesn't have any content in it yet.

👉 The key point is that the sizing will not be forced if you apply the style to a figure with existing content!

Mind Map Styles now include Arrangements

Similarly, mind map styles now include arrangement information: radial map, left map, right map, org chart, etc. Like the size attribute described above, this arrangement attribute is only used when creating a new collection using that style, or if you apply a style to a collection that doesn't have any content in it yet.

Image Figure Alias Icon

Now showing a tiny superimposed alias icon on asset figures displayed as preview in the lower-left corner if they are at least 64 points in height and width, are simple rectangular shapes, and aren't rotated. A demonstration with Butternut is below. You can disable the alias icon or change the alias icon size if you wish.

Other Figure Tweaks

  • Variables for Asset Creation/Modification
    Added new variables to the Insert menu and popover to show an asset figure's underlying file creation and last modification dates. Useful within the figure's caption if you Show as Preview.
  • Figure Set URL
    You can now use the Info inspector to change or clear a figure's set URL. For example one set automatically by Curio if you copy or drag an image from the browser into your idea space.

Fixes

  • If, while running Curio, you double-click to edit an asset figure's file in an outside editor, Curio will now do a better job auto-refreshing the figure's preview when you switch back to Curio. This came up on occasion when using Preview to edit image figures where Preview would revert back the last modified date if you used undo/redo. Now we're using a new "generation identifier" to detect a changed file.
  • Shadows now display for figures when the idea space is zoomed to fit or to width.
  • Fixed bug where you couldn't rotate grouped figures.
  • Fix for undoing text deletion in a text figure so that the figure's editor is correctly resized and refreshed.
  • Catalina fix for Curio's Open With figure context menu to make sure bundled system applications, which aren't the default app for the file, are still listed as choices.
  • Much better handling of the slower "click-click" technique of editing of a selected figure in addition to the normal, faster double-click. This should resolve issues where you found yourself inadvertently editing when you were trying to select or drag a figure.

Markdown Enhancements

Markdown Lists

Curio's markdown lists now render with much nicer alignment of list numbers and spacing.

Here is an example, with Curio 14's rendering is on the left, Curio 13's is on the right:

 

Subtle things to notice:

  • Untitled Lists
    Lists that don't have a line of text before them are considered untitled and are now rendered flush against the left edge. Lists with titles are indented. You can force an indention for untitled lists if you wish. Previously all markdown lists were indented, which looked odd if they didn't have a title.
  • Blank Line After List
    The blank line after the untitled list now matches the height of the blank line before the untitled list. Previously Curio was forcing a 12 point height blank line after a list, so we're now correctly matching the body text line height instead.
  • List Line Spacing
    Curio no longer forces a extra 3 point line spacing between list items. The default is now 0, meaning no additional line spacing, but this can be customized.
  • More Precise Prefix Calculations

    Curio now performs additional calculations so the gaps between numbers and text now look much cleaner and line up well regardless of font size. Notice the text is now slightly closer to the number since we know more precisely how much room we need. And the dot after the 9 is now directly over the dot for the 10.

    And, where previously at larger font sizes you might see this:

    Curio 14 now renders it like this:

Markdown Code Blocks

Curio will now ignore the contents of markdown code blocks (via ``` bracketing) thus no longer interpreting any text that happens to look like markdown syntax.

Collection Figure Enhancements

Table Auto Fit Row Heights

Another popular request!

Curio's tables can now automatically adjust row heights as contents are changed to make sure nothing is clipped.

If editing a table cell, this auto-sizing will occur once editing has finished. Otherwise, the adjustment will be made immediately, for example if a cell's font size or styling has changed.

Mind Map Selections

Normal Mind Maps

Normally if you click and drag anywhere in the background of a mind map collection you will move the collection itself. And, normally, if the mind map isn't already selected, you first you have to select a node then you can click again and drag the node to move it.

New, "Transparent" Mind Maps

Now, if your mind map has no fill color, Curio supports a kind of transparent selection so you can directly manipulate the mind map nodes more easily.

  • If either the mind map is unselected or if a node within the mind map is selected, then you can now directly click and drag on the background of the mind map to "rubber band-select" a range of nodes.
  • If you click and release within the mind map figure but not on a node, then the mind map figure itself will be selected. Once selected you can then change its inspector properties, or copy it, or drag it, etc.
  • You can now directly click and drag on a node, even if the mind map itself was not already selected, and just start dragging to immediately move it to a new location.
  • Another way to move the entire mind map is to click and drag the central topic node.
Customizing

You can actually enable this for all mind maps, even those with backgrounds, if you'd like. Or if you really dislike this feature, you can disable it.

Other Collection Figure Tweaks

  • Figure Margins
    You can now set the margin for a table cell. Useful so images, like equation images, don't look crammed into the cell.
  • Mind Map and List Collapse
    You can now hold Shift (⇧) and click the expand/collapse widget to toggle the expand/collapse all branches at this hierarchical level.
  • Expand All/Collapse All
    The Expand and Collapse entries in the Arrange menu now dynamically change to Expand All and Collapse All if you hold Option (⌥).
  • Insert Text Parent
    With a list or mind map, you can now select multiple items then choose Insert > Text Parent (or right-click Add Parent) and instantly pull the selected items under a new parent node.
  • Mind Map Key Shortcuts
    When editing a figure in a mind map, you can now create a child or parent using the same ⇥ and ⇧⇥ shortcuts used in other mind mapping apps.
  • Edit Title
    If creating a stack, pinboard, or album via the Insert menu they will now automatically go into edit title mode, just like when creating mind map and list collections.
  • Index Card Expand to Front
    If you use the index card's expand/collapse widget to expand, it can optionally jump in the front of all figures via a new setting.
  • Index Card Title Adornments
    Fixed index cards so if the title has adornments it won't overlap the expand/collapse widget.
  • Fixed Pitch Date Adornment
    Normally Curio uses the standard macOS "user" font (Helvetica, usually) for the start/due date adornment on figures. Alternatively you can switch to a fixed pitch font.
  • Table Return Edits Next Row
    Normally when you press Return in a table cell Curio simply inserts the return into the cell, much like how Keynote's tables work. If you'd rather edit the cell in the next row, more like Numbers or Excel, then you can use this setting.
  • Stack Return Creates Sibling
    Starting in Curio 14, when you press Return in a Stack cell Curio creates a new sibling underneath, much like how mind maps and lists work. If you'd rather insert the return into the current figure then you can use this advanced setting.
  • Dragging Pinboard Items
    Fixed an issue where dragging pinboard items around would reset their font and color styles.

Scribble Enhancements

Color Picker

Curio's brushes and pens feature (aka scribble mode) now has an enhanced color picker with a much better spread of hues (1 set of grays, plus 12 color hues) and tooltips for quicker color identification and matching.

The scribble inspector displays the full, large-sized 13x10 matrix displaying 10 shades each of grays and colors.

In addition, the inspector bar now shows a compact strip with 5 shades each of grays and colors:

iPad Pencil Sketching

Curio now has much better support for tablet scribbling via an iPad connected to the Mac using Catalina's Sidecar feature. Thanks to a better default pressure sensitivity multiplier, sketching using your iPad with Curio's pressure-sensitive brushes and pens is now much more comfortable and easier to customize.

This combination of Mac+iPad+Pencil via Sidecar really is a wonderful way to sketch directly into Curio, without having to purchase a dedicated graphic tablet.

Note that Curio still supports sketching via Luna and Duet although you should set a different pressure sensitivity multiplier first.

Removed Functionality

The ability to customize the colors in the color palette and the row of recent colors found in earlier versions of Curio are no longer supported, as part of our effort to move away from Apple's deprecated NSMatrix class.

Equation Editor Enhancements ⚡️

Sadly, it looks like Apple pulled support for this functionality from the web view framework when they released macOS 10.15.4. It worked perfectly here during the 10.15.4 betas but I guess there were some issues. Hopefully it'll come back in a future macOS update and we can re-enable support for it.

Curio's equation editor now supports local PDF generation of the MathJax-rendered equations on macOS Catalina (10.15.4) or above!

This means you instantly see your rendered equation as a PDF image figure, no more behind-the-scenes round trip up to Zengobi's server to generate the final PDF.

For you equation über-users out there, and you know who you are, this is a huge productivity boost as elaborate or complex equations can take several seconds to render a PDF if processed by our server, but can be instantly generated locally within Curio's equation editor.

More Examples

The equation editor's help button now lists more examples to help get you started.

Integrations

DEVONthink

Many Curio customers also use DEVONthink to manage large collections of data. Now, in Curio 14, the Local Library shelf can be used to search through that DEVONthink data (via Spotlight) and pull that results into Curio.

DEVONthink replicates their database meta information into uniquely-named files (ex: E6BF05E4-82E9-4824-AE0B-6E38A01BDF6F.dtp2) in a special app support folder, which Spotlight indexes, and therefore Curio's Local shelf can use.

With the changes in Curio 14, we can parse those gobbledygook file names returned by Spotlight and show user-friendly entries in the Local results list.

Double-clicking one of those results will launch the uniquely-named file which, in turn, launches DEVONthink, and opens the appropriate entry in its database. Then, from within DEVONthink, you can copy or drag the results into your Curio idea space.

If you drag the result from Local into your idea space, a special DEVONthink hyperlink will be created as a weblink figure. Double-clicking that weblink figure will launch DEVONthink and open that entry in its database.

Kind Popup

In addition, the Library's Kind popup now includes an entry for DEVONthink so you can restrict your searches only to DEVONthink data.

DEVONthink Pro Server Not Required 🥳

Our previous Sleuth-based solution required DEVONthink Pro Server and a special Sleuth query, which had issues and can no longer be supported due to changes to WebKit. This new solution uses Spotlight searching so DEVONthink Pro Server is no longer required!

DEVONthink Reference Links

If you copy a DEVONthink link URL into the clipboard and then use Curio's Add URL Reference to add the URL as a reference link, Curio will now display a more friendly title for the link, obtained from the clipboard, instead of displaying something like x-devonthink-item://E6BF05E4-82E9-4824-AE0B-6E38A01BDF6F.

Hook

We're working with the team at Hook to integrate their extremely popular bi-directional, cross-linking productivity app with Curio.

Curio 14 adds new AppleScript capabilities that will make it easier for Hook to request markdown-formatted external hyperlinks directly to selected Curio figures.

tell application "Curio" markdown link to selected item of active document end tell

Microsoft Word

New support for Paste As > Rich Text. Especially useful when working with Microsoft Word as they've starting putting PDF's on the clipboard when copying text which normally takes priority over rich text when pasting into Curio. With this new feature, you can force Curio to paste rich text.

MindManager

Curio's MindManager mind map import/export support now handles hyperlink figures. Also fixed a compatibility issue with exports so MindManager doesn't error on open.

Import/Export/Printing

  • {%ProjectFilePath}
    New support for {%ProjectFilePath} variable which is replaced with the project's file path, like ~/Documents/Curio/My Project.curio
  • {%IdeaSpaceCount}
    New support for {%IdeaSpaceCount} print header/footer variable which returns the total number of printable idea spaces in the section. For example, {%IdeaSpaceSheetNumber} of {%IdeaSpaceCount}, might generate: 1 of 10.
  • YouTube/Vimeo
    When you drag in or paste a Vimeo or YouTube video URL Curio asks if you want to embed a WebView movie player or simply paste the URL link. This can now be stored as a default so you won't be asked again in the future.
  • Auto Collapse After Import
    By default after importing a mind map or list and converting into a native collection Curio shows the result fully expanded. You can request the mind map or list to be collapsed if you wish.
  • PDF Export Figure Links
    Now when you export selected figures as PDF, Curio will add clickable PDF links for figures that have hyperlinks. Previously Curio only did this if you exported the entire idea space.
  • PDF Export Note Tooltips

    In PDF exports figures with notes finally have nice note icons and expanding note tooltips. Previously an odd, large, square icon was displayed instead of a nice icon due to a bug in the macOS PDFKit framework. But we now have a workaround for Apple's issue.

    For example, here's what a text figure with a note looks like in an exported PDF:

    Then if you click the note icon in the PDF the popup tooltip appears showing the note text:

  • PDF Table of Contents
    Fixed an odd issue where the PDF native Table of Contents (aka PDFOutline) sometimes wasn't accurate (it might go to the next page) in certain PDF viewers especially if Continuous Scroll was enabled in the viewer.
  • Grab Web Archive

    Sadly, it looks like Apple pulled support for this functionality from the web view framework when they released macOS 10.15.4. It worked perfectly here during the 10.15.4 betas but I guess there were some issues. Hopefully it'll come back in a future macOS update and we can re-enable support for it.

    On macOS Catalina (10.15.4) and above, you can right-click on a web link figure and archive the site as either a paginated PDF, a single large PDF image, or a web archive file.

    Here's a screenshot of an URL and its three results:

Organizer and Idea Spaces

Tweaks

  • Zoom Both
    If the secondary split view is visible then holding Shift when choosing a zoom factor from any of the following will impact both views: the zoom popup toolbar control, the zoom toolbar slider, or the Zoom to Actual Size, Zoom to Fit, and Zoom to Width menu items. In addition, holding Shift while double-clicking or Option-clicking the zoom slider will set both views to actual size.
  • Organizer Headings

    The Organizer now shows a heading above the sections and idea space panes.

    The idea space pane heading shows the current section name or, if the section is Default Section then it shows the word Organizer.

    This cleans up the Organizer's header bar at the top and allows for future features. It also means the Organizer is a true Apple "source list" sidebar which cleans up past selection issues and allows for future functionality.

  • Organizer Font
    The Organizer's 12 point font size can now be customized. Also, the Sections font size is now 13 point (instead of 12 point) and can also be customized. You will need to relaunch if you override the defaults.
  • Organizer Sorting
    You can now right-click on the Organizer and sort by Title (Descending).
  • Idea Space Templates
    When saving an idea space template to the Personal repository Curio can now check to see if an existing item already exists and ask if the user wishes to replace it.
  • Idea Space Dimensions
    Changes to the idea space dimensions will now independently check the changed width or height for clipping and will auto-expand in that dimension, only if allowed via that dimension's Auto Expand popup, as necessary.
  • Expand All/Collapse All
    The Expand and Collapse entries in the Organizer menu now dynamically change to Expand All and Collapse All if you hold Option (⌥).

Fixes

  • Fixed issue where a visible ruler could overlap the idea space content as you switch between idea spaces.
  • Fixed a Catalina issue where the Organizer width might slowly creep wider if the project is closed in full screen mode.

Automatic Backups

Previously only Curio Professional offered automatic project backups. That feature is now supported in Curio Standard, as well, so all of your projects stored in the default Projects folder, specified in Curio's Preferences, can be safely backed up. You can enable or disable this feature in Curio's Preferences, plus customize the location of the backups folder and the frequency of the backups.

That said, only Curio Professional's advanced project settings inspector allows you to customize backup settings on a per-project basis, or even back up projects not stored in the default Projects folder.

Miscellaneous Tweaks

  • Workaround for Catalina Unpainted Regions
    Due to an odd Catalina layer caching bug, which is also impacting a few other apps out there, Curio will now force a fast repaint of the window when switching back to Curio from another app or switching between Curio's project windows.
  • Sort Templates/Stencils Gallery
    You can now right-click on an item in the idea space template or figure stencils gallery and change the sort to by title (in ascending order) or date added (in descending order, so most recent at the top).
  • Color Picker
    Curio's color picker used throughout the user interface (border color, fill color, text color, etc) has been enhanced with a much better spread of hues (1 set of grays, plus 12 color hues), 10 shades per hue, and tooltips for quicker color identification and matching. If you click the little arrow you can scroll between the new palette and the previous, legacy palette.
  • Search Results Selection
    If you click a search result then that item is now always loaded into the primary split view. If you Option-click it will go into the secondary split view. This way it acts just like the Organizer.
  • Search Results Export
    Exporting search results as rich text, markdown, or CSV now includes the notes field.
  • Help Search
    When you click the Search main menu item and type into the search field at the very top, Curio can now offer to search within its Documentation for the search phrase. The Welcome to Curio project will open, switch to the Documentation section, and perform the search for the entered phrase.
  • App Preview Update Checks
    You can now gain early access to Curio 14 updates via a new popup in the General preferences.

    Alternatively, you can override this popup and force preview checks by renaming the app itself so it has the word Preview in it, like Curio 14 Preview.
  • Trial Improvements
    Several improvements made to the trial process in the non-App Store version of Curio, including a new alert when your trial expires.
  • License Dialog
    The license dialog will now detect if a license key and email address combination are on the clipboard and automatically fill in the appropriate fields. So you can copy your license info from the thank you email or off the purhcase screen and the Licence dialog will handle the rest. No more typing!
  • Activation Keys
    When you purchase Curio, in addition to the normal license key info you receive, you will also see an activation link. Click once to open the link and once again in Safari to okay opening the link in Curio and your license key info will be automatically filled in. Just 2 clicks!

Removed Features

Periodically we clean up outdated or unnecessary features, or features that are no longer possible due to Apple macOS or framework changes:

  • Screen Snapshot
    The Insert > Screen Snapshot feature has been removed. The native macOS screenshot feature introduced in macOS Mojave (10.14) is so powerful now that Curio's method is no longer necessary. (Also, file launch access, screen access permissions, and sandboxing necessitated this removal.)
  • Scribble Recent Colors and Color Customization
    The scribble inspector's recently used color selection palette has been removed. And, as a side effect of migrating from NSMatrix, Curio no longer supports color customization for the scribble palette.
  • Grab Web Archive
    Apple's new web framework, WKWebView, doesn't support capturing a webarchive or PDF, so Curio can no longer support this feature. It was teased during the macOS 10.15.4 betas and worked perfectly here, but pulled at the last moment. Hopefully Apple will allow it soon and we can re-enable this functionality.
  • Web View Searching
    WKWebView also doesn't currently support find bars so you can't search within a site dragged into the Organizer, although hopefully this functionality will also return in the future.
  • Biggerplate
    The Insert > Biggerplate feature has been removed primarily due to WKWebView's issues with downloads. Instead simply explore Biggerplate's extensive selection of mind maps using your favorite browser, download a mind map in compatible file format such as iThoughts or MindManager, and drag it into Curio to convert into a native mind map.

👨🏻‍🔬 Experimental Settings 👩🏽‍🔬

  • Figure Minimum Font Size
    You can now override the minimum font size retrieved from all figure styles, just in case you find the default of 12 point in many styles a bit hard to read. This override will be used when creating new figures or applying styles to existing figures, but will not change existing figures automatically. Note that if you create new styles then it will store this override size in the style data.

Performance Improvements

Faster Dragging

Dragging a large number of figures, or a collection containing a large number of figures, is now much faster due to an optimized method for managing the flood of internal redraw requests that come in during a drag.

Faster Image Handling

Building on Curio 13's image improvements, previews for large-size (in megabytes) image assets are now generated even for image of smaller (< 1500 × 1500) images.

For example, a 12.5 MB 1462 × 1421 PNG Retina screenshot (thus 2924 × 2842 actual pixels) previously fell below the 1500 × 1500 cutoff so a preview image wasn't generated. But that huge image file was still quite slow to load and render.

Now, however, we'll still generate an optimized preview image but at that same 1462 × 1421 resolution. The result is a much faster to load 134 KB 1462 × 1421 JPEG. 12.5 MB down to 134 KB is astounding and is much faster to load and draw! 🚀

By default, these previews are non-Retina and they still look fantastic, but if you really want Retina previews for your stored screenshots then you can and the result is a still-speedy 576 KB 1462 × 1421 JPEG (Retina, so internal pixel resolution is 2924 × 2842 pixels).

As before, double-clicking the image figure will still launch the actual image file, not the preview image.

Technical Improvements

Curio has long supported a Copy As > Hyperlink feature to create links to Curio figures, idea spaces, and other Organizer items that you could then paste into other applications or documents.

Before

However, there were some problems with these original hyperlinks:

  • They were pretty long:
    curio://Users/gbrowning/Documents/Curio/2019/Pepsi%20Campaign.curio?ideaspace=CBFEAD89-CA8A-4E5E-BAD6-F9C8DB562E66&figure=E926F264-B0B5-465E-8040-8431E6A74F3C
  • Since the project path is in there then if the project moved then the link is broken.
  • If you relocated your entire specified Projects folder to another location, like from:
       ~/Documents/Curio
    to
       ~/Dropbox/Curio
    then you could have a bunch of broken links to your various projects.
  • Even if you didn't move the Projects folder, then if you had that folder in your iCloud Drive then perhaps Apple did it for you when they moved the iCloud Drive internal directory location from pre-Catalina's:
       ~/Library/Mobile Documents/com~apple~CloudDocs
    to Catalina's new internal location:
       ~/Library/CloudStorage/iCloud Drive

Fortunately, if you attempt to open a broken link, Curio will ask you to re-locate the project and then it will store that mapping so it won't ask you again, but it was still not ideal!

After

So we've made some improvements:

  • The hyperlinks are much shorter now:
    curio://$Projects/2019/Pepsi%20Campaign.curio?i=y_6ticqKTl661vnI21YuZg&f=6SbyZLC1Rl6AQIQx5qdPPA
  • If the project is located in the specified Projects folder (via Curio's Preferences) then we abbreviate that to $Projects and replace it on-the-fly upon opening. This means you can move your Projects folder and not break existing links.
  • Curio also supports other abbreviations like $iCloud, $Desktop, and $Home.
  • The unique IDs for the idea space and figure are shortened with URL-safe Base64 encodings.

Curio 14 will still open hyperlinks formatted with the older technique with no issues. However, older versions of Curio won't understand this new format. If you need still need to use the older formats, perhaps because you're sharing links with users still on older Curio's, then you can continue using the older format if you wish.

Updated 3rd Party Frameworks

Curio 14 includes updated releases of the following embedded 3rd party frameworks.

  • Now using Sparkle 1.23, which allows Curio from our website to check for and safely and securely install application updates. Here's what's new and improved since the old 1.22 version we had been using. macOS itself updates the Mac App Store version of Curio so it doesn't need Sparkle.
  • Now using RevenueCat's Purchases 3.1.2, which allows Curio from the Mac App Store to support Apple's in-app purchases and subscriptions. Here's what's new and improved since the old 3.0 version we had been using.

Code Updates

Xcode 10 → Xcode 11 🛠

Upgrading from Xcode 10 to Xcode 11 allowed us to adopt Apple's latest suggested project settings, which revealed a few dozen nitpicky code warnings, which were all tackled.

Minimum macOS Requirement: Mojave and Catalina

Requring macOS Mojave (10.14) as the minimum macOS brought out a slew of deprecation warnings so many of these were cleaned up as well. Apple has been busy deprecating classes and methods so this took a huge chunk of time. Developers are certainly being kept busy with all of this work...

WebView → WKWebView

For its many web views, Curio has migrated off the long-reliable WebView framework in favor of WKWebView which Apple is code-sharing with the iOS world. They've been pushing developers to do this for ages but WKWebView has had numerous limitations or issues which caused many developers to wait as long as possible. But they are now warning developers that submissions that still use WebKit may soon be refused so we're now migrating to WKWebView now even though there are still some quirks:

  • Grab Web Archive
    Apple's new web framework, WKWebView, doesn't support capturing a webarchive or PDF, so Curio can no longer support this feature. It was teased during the macOS 10.15.4 betas and worked perfectly here, but pulled at the last moment. Hopefully Apple will allow it soon and we can re-enable this functionality.
  • Find Bar
    With web sites dragged to the Organizer, we were previously able to support a ⌘F find bar for searching on the page. However, this is currently unsupported in WKWebView. However, it looks like this has been fixed internally so it should appear in a future Safari or macOS release so hopefully searching can be supported again in a future Curio release.
  • Downloading via Context Menu
    Like the old WebView, WKWebView nicely displays and manages a handy right-click context menu. However, its Download Linked File and Download Image entries don't actually do anything, at least currently, and we can't hide them... so please just ignore them.
  • Send to Ideaspace
    Since Curio can't modify that context menu, Sleuth is unable to add the Send to Active Ideaspace menu item that we previously supported. As a workaround, simply drag-and-drop content from the Sleuth window to your idea space.
  • File Downloads
    While a rare use case, previously Curio's web views supported downloading files, however WKWebView's support for download delegates is still private but will hopefully be available in the future.
  • Sleuth DEVONthink
    Now that DEVONthink is supported by the Local shelf we're no longer supporting its older Sleuth interface, which wouldn't work very well anyway with the WKWebView change.
Presentation Mode's OpenGL / Quartz Composer / Core Image Transitions → Core Animation

Previously Curio supported a variety of transitions based on OpenGL, Quartz Composer, and Core Image. However, both OpenGL and Quartz Composer are now deprecated by Apple, and Core Image filters have always had performance issues with larger full-screen resolutions like we need for slideshow transitions.

So, we've transitioned over to Apple's Core Animation transitions (CATransition) which greatly simplified this code. It's a more limited set of bundled transitions but they all perform very smoothly and hopefully we can build more with this more stable framework.

NSMatrix

Following the work accomplished in Curio 13, this release tackles the last remaining uses of the venerable NSMatrix class which has been deprecated by Apple.

  • The scribble color palettes on the inspector bar and inspector shelf are now based on Curio's custom color picker with much better spread of hues. However, this means you can no longer customize the colors in those color cells.
  • The tags image pickers in the idea space and figure meta inspectors are now using a slick NSCollectionView, categorized by tag set, so you can quickly scroll through all your tags with images.
  • The figure date inspector's Set Work Schedule dialog now uses a segmented control for choosing which days of the week you work.
View-based Outlines and Tables

Apple has been encouraging developers to move off of NSCell-based outlines and tables and migrate to view-based versions. We began this work quite a while ago but finally finished the last items with this release.

Carbon

The Carbon framework came over to the initial Mac OS X 10.0 release from the original Mac OS, almost two decades ago! There were only a few locations where Curio relied on Carbon (specifically trapping for certain mouse or key events) which have now been updated to use alternative non-Carbon methods. However, there are a couple of spots which remain:

  • Supporting keyboard shortcuts for tags. But we're ready to jump to the popular, actively-managed MASShortcut 3rd party framework as soon as they update their own code to remove Carbon key hooks.
  • Old-school alias decoding. Curio moved to Apple's modern security scoped bookmarks to store asset and project aliases way back in Curio 8, but if anyone opens an older project we'd like to be able to resolve any Carbon-based aliases as long as possible.

Cleanup of Future Deprecated Code

In addition to taking care of the items Apple has marked as officially deprecated, discussed above, we're now setting the API_TO_BE_DEPRECATED flag so we can clean up items that Apple has marked for eventual deprecation.

In many cases we can promptly move to a newer method or class, as listed below, so we get a jump on Apple's plans. However, in some cases, the replacement isn't available at our minimum macOS so we can't move to it yet but will in a future major release.

PasteboardWriters

Many of Curio's views that support drag & drop and copy & paste have now shifted to Apple's newer pasteboardWriter methods and associated helpers. These views include:

  • All outline views, such as the two panes in the Organizer, tags inspector, Status tasks.
  • All table views, such as Project, Local, and Evernote libraries, and the Status projects list
  • All collection views, such as the project and figure galleries and the Stencils gallery.
  • And the main idea space view which takes drops from many of those other views.

3rd Party Code

We removed PXSourceList, which we've relied on for many, many years to subclass and workaround Apple's ornery outline and table views, used in many places throughout Curio. But Apple has cleaned up their code, fixed bugs, and added the features we need so that we could finally adopt the native controls directly.

Cleanup

  • We consolidated a slew of code modules for many different table and outline views so they share a single, common internal view class. Less code means fewer issues!
  • We consolidated all applicable image resources into Xcode asset catalogs for better image management.
  • We removed Curio's send email via AppleScript support for Microsoft Entourage (replaced by Outlook in Microsoft Office 2011, released October 2010) and Eudora (commercial version stopped in 2006, open-source version stopped in 2010 and officially deprecated in 2013).

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.

For example, the Main Thread Checker found a surprisingly subtle issue involving Calendar/Reminder syncing, allowing us to make this code more robust and less vulnerable to rare, hard-to-diagnose problems.

In Short...

What does all of this mean? Curio 14 is more robust, more optimized, and more future-proof than ever! 💪