We have just released Ulysses 12.2 on both the App Store and Mac App Store. The update ships with well over 100 improvements and bug fixes, mostly ironing out smaller annoyances, or slightly tuning existing features.

Most of you probably won’t notice a thing – because you never experienced any of the problems we have solved, or you never use the features we improved, or because the change is so minimal, that you just wouldn’t notice.

As we nevertheless spent a huge amount of time on all these tiny fixes, I’d like to take the opportunity and give you a small behind-the-scenes-look: I’ll walk you through five of the recent changes, which small subset of users they effected, and what it took us to actually fix each issue in order to improve Ulysses for this particular group of users.

WordPress-Publishing: Slug Now Works for Scandinavian Languages

When publishing a post to WordPress, we automatically generate a so-called “slug” from the title of the post. The “slug” is basically the direct link to the post, something like “ten-things-science-cant-explain-number-three-will-shock-you”.

The problem: Certain characters, which only exist in Scandinavian languages, where turned into hyphens, leading to rather strange and user-unfriendly links. So instead of, say, “smørebrød-smørebrød”, we’d turn a Muppets-inspired post into “sm-rebr-d-sm-rebr-d” – not funny.

In Ulysses 12.2, Scandinavian letters are now transformed into their closest Latin equivalent: smorebrod-smorebrod! A Norwegian blogger (you know who you are!) pointed the problem out to us. Many thanks, and happy holidays!

ePub: Footnotes Are Now Displayed in Preview

Up until today, if you added a footnote to your text and wanted to preview your work in Ulysses’ ePub exporter, you were… out of… footnote luck. We simply didn’t display footnotes. None. Never.

This was a strange oversight, because footnotes are displayed in all other exporters that support them – PDF, DOCX, even HTML. Only difference in these formats: Footnotes are actually displayed at the bottom of a page, whereas in ePubs, well… there is no bottom to speak of.

The latest update fixes that, finally. We now do as all good ePub readers do and display footnotes in-place, in a nice popover, just like iBooks does.1

Import Into Inbox Works Again

The following example may illustrate how fixing one thing may break another, and how being focused on the first issue can make you blind for a newly introduced problem.

In Ulysses 12, we removed a couple of actions for the Inbox, because they didn’t make any sense: “Focus on Group” (makes no sense, because the Inbox doesn’t have sub-groups), adding groups and filters (because you couldn’t anyway), and “Export” (who in their right mind would turn their Inbox into an ePub without footnotes).

So, we cleaned house. How!Ever!, “import” was code-eo-logically connected to the addition of groups and filters. Uuuups! So when we removed the illogical action of “adding groups”, we also removed the perfectly fine action of “import” – we simply cleaned up like we didn’t care.

We found out about this bug while reworking our app’s introduction, specifically the part where – you guessed it – import is explained. It simply didn’t work, and at first we didn’t understand why, and when we found out, we bought a new coffee maker. Which… is not connected, but it nevertheless happened simultaneously.

So, you possibly never even noticed that import into the Inbox was broken. But it was. And now it’s fixed. There you go.

Entering Codeblock Tags and Dividers Works Again, Even With iOS’ Smart Punctuation Enabled

Smart Punctuation, introduced by Apple in iOS 11, should actually be a great boon for writers of all kinds. It automatically turns straight quotes into curly quotes, and transforms multiple dashes into an em-dash.

Now, of course, not all dashes are the same, and neither are all curly quotes (smart or otherwise), and choice would be welcomed here, but that’s not the issue.

The issue is this: Ulysses’ default markup language – Markdown XL – maps four consecutive dashes to a “divider”, and also uses two consecutive straight single quotes to mark a “code block”. Ha, haha, you can guess what’s coming. To make matters worse, straight quotes inside of a code block mustn’t be turned into curly quotes, because… reasons. So, yeah – iOS’ “Smart Punctuation” made Ulysses’ editor look pretty dumb, as it stubbornly insisted to know better.

This has now been fixed, and here’s how we fixed it: We will now try to out-smart the operating system, by doing educated guesses on when, exactly, a user might not want to use Smart Punctuation at all. For example, we now auto-disable Smart Punctuation within code blocks, and we prioritize paragraph tags such as “divider”, so that the system can’t naively interfere. Let’s see how that works out in the long run.

Students from Thailand Can Finally Buy Ulysses Again

Our final example is one of cultural blindsight. We just didn’t know enough, weren’t aware, didn’t realize, name it what you will. Fact is, our student subscription logic needs an expiry date, and since the Old World is the center of the known universe, we naturally based our expiry logic around the Gregorian calendar.

Of course, students in Thailand, Myanmar and Sri Lanka are dating around the Buddhist calendar, where we currently are writing the year 2560 [insert a rebirth/time travel joke here].

So students over there, who wanted to purchase Ulysses at the student discount, filled out our in-app form, which was then supposed to acknowledge the duration of their student status. But since our logic was based around the Gregorian calendar, their student status had already run out – over 500 years ago, around the first of the Burmese–Siamese wars. That’s, like, a really long time ago.

Check out the screenshot below; it’s like we were telling Americans they lost student status the day Columbus believed he’d discovered India.

Wrong date for student status in Buddhist calendar
That turned old quickly

Sorry for that.


I could go on forever, but you probably get the point. Yes, for the big picture, these fixes are tiny, but for some people they simply are not. And so for us, they aren’t either. Solving these issues is time-consuming and sometimes pretty difficult, but it’s all part of therefore providing a stable, high-quality product.

If you’re not affected by these issues, you might not gain too much from an update such as this, which in turn may make you believe that not much is happening around here. But software is complex, sometimes a mess, and errors and pitfalls are abundant. Fixing these errors takes up a large amount of our time, and we hope, that this time pays off. After all, it makes Ulysses a better product. If not for you, then for someone else.

On a final note, user feedback is essential for our work. So, if you stumble upon something weird, no matter how small or seemingly unimportant in the greater scheme ion things, please let us know!

For an overview of this version’s major bug fixes and improvements, see our release notes. And, as always, have fun.

Happy writing!

  1. Again, only a small subset of users ever really noticed, but those who did were rather surprised. There, fixed it! ↩︎