Curio 14.2 Release Notes

Release Date

July 16, 2020

Requirements

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

Feature Availability

Features only available in certain editions will be listed with colored tags like or . Notes specific to the Mac App Store build of Curio will be marked with .

Features

Journal Entry Titles

You can now append a custom title to your Journal entries. This comes in handy especially if you have multiple entries for the same day, like entries for multiple meetings or classes, or for a periodic "Weekly" or "Quarterly Goals" entry.

Just select an entry and press Return to add or edit a custom title. Press Return when you are done entering the title.

Your custom title will be automatically appended to the entry date, which is dynamically formatted as specified via the right-click Journal Date Format menu item.

You can search for these custom titles using the Organizer Filter or the Search shelf. For example, using the Organizer filter to search for "Weekly" will find all your weekly journal entries.

To remove a custom title, just edit the title by pressing Return, delete the contents, then press Return to stop editing. Your entry will revert back to the default date title.

Layer Visibility Trick

In the Layer popover inspector, you can ⌥-click the visibility icon for a layer to instantly hide all other layers, just like in Photoshop.

⌥-click the same visibility icon again and all other layers will be made visible once again.

Apply Style Submenus

Curio will now show the bundled, personal, and master styles in handy submenus under the Format menu, based on the selected figures or the idea space itself if no figures are selected.

Localized Date Text

Curio will now display dates with correctly localized month and day-of-week text where appropriate.

Backgrounder

Curio displays formatted dates in several locations including Journal entry dates in the Organizer, Insert > Date, various Insert > Variables (e.g. {%IdeaSpaceDateAddedLong}), the Info inspector, most Library shelf modules, the Search shelf, print headers and footers, etc.

Prior to macOS Mojave (10.14) the system frameworks used to automatically localize any formatted date text for applications. So a date of Wednesday, June 6 would appear as Mittwoch, Juni 6 in German.

However, this was silently changed in Mojave, so that date text was only localized if the app itself included a string table in that specific localization.

In other words, Curio would only show Swedish localized text for a month or day-of-week if Curio had all its application text localized into Swedish. So Curio would need translations for all application text in dozens of languages just to support localized date text in its Journal entry titles or inserted variable text.

Apple's logic is that it would look confusing to have a mix of localizations within the same interface. However, we feel that dates, especially dates inserted into user content, should abide by the customer's preferred language, not be limited to the app's localized resources.

Our Solution

Our fix for this is a new date formatting method which queries the user's primary preferred language, as defined in System Preferences > Language & Region, and sets the date formatter locale to that.

Thus if your primary language is set to German then you will see German days of the week and months of the year. For example, on the right, here is what the Journal Date Format popup looks like for a German customer, even though Curio itself isn't localized for German.

You can easily override this with any locale if you wish. For example, if you have German for your primary language but prefer to see American English date text then you can tell Curio to use the en_US locale setting for dates.

Technical

An alternative solution could have been to use the new CFBundleAllowMixedLocalizations setting which tells the frameworks that a mix of localizations is okay. But this snowballs into other situations such as a mix of languages in standard menus, like File or Windows, and alerts, which does look confusing. So we opted out of this approach as, in these situations, we agree with Apple's default. We also didn't like that this had to be set at time of compilation and could not be overridden or customized by the end-user.

Tweaks

Fixes

  • Fixed bug which could cause Curio to crash during quit.
  • Fixed bug where Project and Meta tabs were empty when selecting idea spaces and folders in the Organizer.
  • Slight tweak to the positioning of expand/collapse disclosure triangles for lists with 'none' bullets.
  • More accurate click detection when clicking on links in text figures.
  • Fixed issue with rulers not initially in points or the default units when first appearing.
  • Fixed restore of Organizer splitter on project open.
  • Fixed reference title issue where it might not have a valid title to a Journal entry.

Technical Improvements

Image Figure Previews

Major improvements have been made to the loading and drawing of image figure previews, yet again. 🙄

More Efficient Image Preview Loading

Image preview loading and caching is now much more efficient:

  • Curio will now always use a standard Core Graphics method to dynamically retrieve the image file's preview when the idea space is loaded. This method is recommended by Apple for fast image loading on macOS and iOS, and has been optimized for many image file types and has smart, internal caching.
  • This greatly simplifies our image preview loading code instead of relying on a complex mix of techniques and JPG preview files cached to disk. The cached JPG disk images in particular were tricky to manage, bloated project sizes, slowed cloud syncing, and went against Apple's recommended technique.
  • The new technique also works with transparent PNGs which our previous method had issues with.
  • For non-image file types, such as document files displayed as preview, Curio will continue to use Quick Look to retrieve that preview image.
Preferences
Preview Image Size

Curio uses Core Graphics to retrieve an image for a given file no larger than 1500 × 1500, proportionally sized.

For example, given a 4032 × 3024 12 MP HEIC from your iPhone camera, Core Graphics will load and cache a 1500 × 1125 image instead, allowing much faster rendering and reduced memory usage, while still being perfectly suitable for use on idea spaces.

If you resize the image figure to a size larger than that, Curio will simply scale it. And, of course, double-clicking the image figure opens the full-sized image in the appropriate application.

You can customize that 1500 × 1500 size — smaller sizes for faster performance, larger sizes for better large scaling — or even set it to zero if you always want the full-sized image loaded, but keep in mind this will slow down idea space performance.

Huge Images

To better handle huge images, Curio will first ask Core Graphics if the size of the image is more than 8000 × 8000. If so, Curio gives Core Graphics permission to return a lower resolution thumbnail than the size requested if one is found embedded within the image file. This is particularly handy with large camera RAW files and other very high resolution files which may have a smaller embedded thumbnail for fast retrieval. So Curio will use that thumbnail instead of forcing Core Graphics to load the entire file just to get a 1500 × 1500 preview. You can customize that 8000 × 8000 cutoff or even set to zero if nothing is too big.

Experimentation

Since Curio no longer stores image preview caches to disk, you can tweak those settings above, and simply go to another idea space and back to see the impact.

Much Faster Image Preview Drawing

Image preview drawing is now much faster! 🚀

Say you have a 4032 × 3024 12 MP HEIC photo image. You drag it into Curio and it uses Core Graphics, as described above, to grab a preview for the file, proportionally scaled to 1500 × 1500, the result being a 1500 × 1125 image. You then resize that image figure on the idea space to a 500 × 375 size.

But this means that Curio is drawing a 1500 × 1125 image into a 500 × 375 shape. If you have 20 of those images then Curio is asking the graphics system to draw a whole lot of large images into much smaller shapes which can be very slow. We can make this much smarter!

Now, Curio will keep in memory a sized image of precisely the needed dimensions. This means much faster rendering and image dragging, especially when dragging on top of other images!

As you resize the image, Curio will first simply scale the image it already has in memory. But once you finish resizing, Curio instantly regenerates the precisely sized image using the raw image and refreshes the figure.