GoodTask 4.5: Checking All the Boxes

Over the course of the last year, I had transitioned away from GoodTask to Things, then Todoist, then back to Things. I might have even missed a quick affair with OmniFocus as well. But I digress.

GoodTask has been my long-time favorite Reminders client. From the surprise the first time I started really using it to now, it has made improvement after improvement in both functionality and appearance settings (love me those themes) on all platforms – iOS, macOS, and the Apple Watch. I was inclined to go back to GoodTask when the Apple Watch app was updated, so I moved everything over there in the beta. I had mentioned to the developer that there were a couple features which I was missing from Things, but I was very happy with the improvements to the apps. Those suggestions plus others were carefully considered, because they are now in the version 4.5 update of the app.

Tag Sorting

GoodTask 4.5 brings with it the ability to sort a List or Smart List based on tags. Tags are a clever implementation in GoodTask, which puts a #tag into the note of a reminder. GoodTask can parse this as a tag, and allow you to use that information within the note as a tag, much like the other information the developer uses to implement sub tasks. You can use all of your tags or specific tags per list, which is great for customizing how you view your different lists.

With the new tag options, I’m able to now recreate some of the features that Things provided which gives me a better view of my tasks in different views. It all stems from the ability to sort lists and smart lists using Tags first, then due dates, etc.

I absolutely love the headings feature of Things. When I have a specific project, having the breakout of different subsections is better for my brain. And with the tag sorting, I can re-create this now in GoodTask. For example, I can take all of the tasks in my Nerd Life1, apply the tags, and have the list sorted on them. While it may not be quite as pretty as the Things implementation, the capability in GoodTask allows me to break it down to key areas just the same.

Another key feature of Things that I adore is the Today view. Having your tasks along with the calendar is a fantastic singular view of what is ahead of me. Having a separate ‘today’ and ‘evening’ section has been critical for me to quickly view and clarify what needs to be done. Now with the tag sorting, I can recreate this view in GoodTask. I created a Smart List which includes my calendar, tasks scheduled for today, and any overdue tasks. This list is sorted by Tag then Due Date, and I also have my calendar events sorted on top, listed under the order section. I created a quick action to apply a #Today and #Evening tag as a toggle, so that I can quickly tag tasks which show up in the view. Again, this might not be as visually appealing as the Things view, but it provides me what I need while keeping the native Reminders service integration.

Completing Tasks

For a while now, I’ve been wanting to see more improvements to Reminders, but lately I’ve been wanting improved support within Shortcuts. When I think of what I want Shortcuts to ultimately be, I can’t help but want certain features added: for Reminders, having the ability to check off a task would be beneficial for certain shortcuts. So while we wait Shortcuts.app to catch up, GoodTask has added a Siri Shortcut to complete a task (and do so in the background). You’ll need to go to Settings → Siri Shortcuts → Add Complete Task to get the Siri Shortcut and/or add it to Shortcuts.app.

I’m getting old, so I take vitamins. I use a reminder to trigger this, so I don’t forget. I took this one step further and created a shortcut to run on my iPhone which logs the vitamin intake – including all the breakdown of the various types of vitamins – into the Health app, as well as mark it in Streaks as complete to help me keep track of when I’ve taken it. I always thought it would be nice to complete the reminder as well, but I the lack of the feature has prevented it. But now, I can copy the exact title of the task (and it must be exact) for my vitamins, add a text block and some clipboard actions to save and retrieve,2 then add the GoodTask Complete Task action block; I also turned off the “Show When Run” option so that it runs seamlessly in the background.

I use the native Reminders notifications due to the fact that they remain on the lock screen, but actions like the one outlined above have me rethinking that approach. GoodTask allows users to run a URL from the notification, which means I could run the shortcut straight from the notification and complete it all in one go. I’ll likely look to play around with this as time goes on.3

The full list of improvements can be found on the forums. Having been away for a while, I can see that there is a lot more to offer now with GoodTask than ever before. The developer is listening to suggestions, is adding features at a manageable pace, and I can really appreciate the level of continued development for the app.


  1. This is my own affectionate name for these things. 
  2. I wish they would fix this so that I can just use text and not have the extra blocks. Sigh. 
  3. Perhaps with iOS 13 around the corner Reminders will be improved, or third-party app notifications will be given the ability to perform in the same manner as Reminders. But I won’t hold my breath for either one. 

#ShotOniPhone Shortcut

Today, Greg Pierce posted a tweet about the new #ShotOniPhone Challenge:

Rene Ritchie followed up with this tweet:

And my reply:

When I first saw Rene’s tweet, I knew he was being snarky. However, my first thought went to Shortcuts when I saw it (hence my tweet). Renaming of files on iOS is a perfect use case of Shortcuts. But rather than stop at just simply renaming a file, it’s possible to submit the entry all with a couple of taps on iOS. And now that I’ve said that you can do it with Shortcuts, I figured I should make one if I’m going to put out the thought. So, with a little bit of work, I created the #ShotOniPhone shortcut.

When you install it, you’ll be prompted to input your first and last names: these items are required for the file name if you are going to email in the submission. Once you’ve entered that information, you can either run this as a stand alone shortcut or as an extension from the Photos app.

The first part of the action checks to see if any images were input, and if not, prompts you to select an image; I’ve used this little block countless times in other shortcuts, and copied the same method here. Next, you’ll be prompted for an image caption to go with the perfect #ShotOniPhone image. Then, the image will be given a new file name – which Apple requires for the email submission portion – using the dictionary items you were prompted for when first installing the shortcut and pulling the device type from the image metadata itself.1

Finally, there are a few options for submission: Twitter, Instagram, or email.2 You’ll select which one you would like to choose, and follow the steps from there. (For the Instagram step, it is important to note that the caption is copied to the clipboard and you will have to manually paste it in caption area of the app.) Each method passes the image in its full resolution to the application of choice; I’d recommend email as the first submission, as Twitter and Instagram will likely compress the image.

And that’s it! This shortcut may seem complex, but it’s really simple to run once you get it installed. Not only does it rename the photo for you, it also helps you submit your photo to the challenge. Now anyone can shoot and submit to this #ShotOniPhone Challenge, all from their iPhone. Turns Out™, you don’t need a Mac to do it after all…


  1. This was suggested by Thomas Verschoren, and I’ve updated the shortcut to reflect this. Thanks for the suggestion! 
  2. Weibo is also a part of this, but I don’t have the ability to add the action. So… maybe someone else can add it. 

Drafts 5.6

Last week, Drafts released version 5.6. While it is not as big as some of the other releases before it, it does bring some important enhancements to the app.

Adding Shortcuts

It is now easier than ever to add a specific shortcut to run in Drafts. A new interface is presented when adding a shortcut, as you can see by installing this example shortcut and selecting a shortcut to add. It prompts you for a few different items for running the shortcut, and is a better way of implementing them via the URL scheme. I feel that this method is a bit more user-friendly now that a shortcut has been written to quickly add them, and requires no formal coding knowledge.

Workspace Changes

Workspaces have been available since version 5.0 dropped back in April 2018. It is the single biggest improvement to Drafts, providing users with an infinite number of filtered views of the draft list. Extending it further, you can apply action groups and extended keyboards to a workspace and have what I coined as a module. In Drafts 5.2, the script and capability of automatically making this possible was implemented. In this new version, it is now more accessible to the non-scripting user.

Within the Workspaces menu, you can choose to load in action group or extended keyboard for each of the different workspaces you create. This does sync across devices, so for most users, this is a better way to load module with a single tap without having to know JavaScript. You can also now load a workspace to a specific tab, saving a few taps if needed. However, I personally won’t be using this as my setup involves loading workspaces differently based on the device type (as I laid out in my earlier Drafts piece).

Post and File Management Improvements

Drafts uses CloudKit to sync data to the cloud. There are more aspects of the drafts which are stored there, like location, tags, etc. which don’t tie in nicely to syncing to an iCloud Drive folder. You can, however, use different actions to save specific drafts to other services like iCloud Drive, Dropbox, Box, or OneDrive. Previously in Drafts, the idea of keeping things in the app was not always something you would want to do: you might want to save it to Apple Notes via a share action, or send it to one of a handful of other services as a plain text file or Markdown file.

For the most part, I keep all of my writing in Drafts. Over the past year, I have more in that module than I would like to admit. And I feel some stress of keeping all of these posts in the draft list. With the new features, I have several different ways of handling this. First, I could simply mark the drafts which I’m actively working on and load the writing module to the flagged tab; this is easy enough to do in the workspace settings, and would quickly satisfy the need. But the file management capabilities are something else that I wanted to explore.

What I ended up arriving at was this: I can keep one or two active drafts in the list, and save the rest to a specific folder in iCloud Drive. Once I’m ready to work on another one, I can run an action and be presented with a list of titles to choose from; the action would then load the contents of the draft into my draft list with a specific tag, and I can start writing on it again. When I’m ready to publish, I take that final draft and move it in to my posted folder to file it away. This is all possible thanks to the FileManager script object methods.

I first borrowed from some of my previous scripts to ensure that I was saving things with the correct title. To save the file with that name, I used a file action step, set the folder location to /Draft Posts/ and set the content as [[draft]]. Once this action is run, the draft is then deleted from my draft list to keep it uncluttered.

The next action was much more difficult to create. Within the updated objects, I can pull out the path locations to files located in a specified folder. With a little script magic, I can turn those file paths into readable display names to choose from in a prompt; this will work with all of the files in the directory. Once I have the selected name, I can load that file into Drafts, tag it with my writing tag which automatically places the file into my Writing module, and I can start writing; I also used an “Include Action” step to load my Writing module to bring up my entire writing environment with one tap.

The last action is for publishing my post. I modified my existing standard and linked publishing actions – which I first introduced on MacStories for Drafts 5.4 – to save the file in a new way. First, I use the scripting to save the file one last time to the /Draft Posts/ folder location where I keep the draft posts, then move it to the /Posts/ folder where I keep my final posts as .md files. This happens at the end of the action after everything is posted. Why do this? It allows me to take the one true copy that I finally saved in my draft posts and then move it into the final location. I don’t have to keep the files in multiple places and wonder which one is correct; instead, I just moved out the finished product.

I have also updated the HTML Preview step in my Post to WordPress actions above to include the new rendering options. With this update, Drafts allows the user to specify the rendering of text. Previously, only Markdown was supported in this fashion. But now, you can specify MultiMarkdown or Github–flavored Markdown, saving a bunch of script steps in the process. I updated WordPress actions with %%multimarkdown|text%% for the HTML preview, as well as improved the scripting to commit the Critic Markup changes to pass MultiMarkdown to WordPress, which you can find at the links above. And speaking of Critic Markup, a new highlight syntax color has been added. It provides a bit more visual difference when looking at all of your credit markup notations.

I’m really enjoying this update, as it’s helping me reduce my mental stress by allowing me to manage my files in a better way. Rather than keep all of these possible post ideas within my draft list and cause me more stress. And if you’re reading this and follow some of my other work, you know already how much I hate clutter…

A Little More on Critic Markup

After the release of Drafts 5.5, I’ve been using Critic Markup even more for the writing I’m doing.1 I hadn’t really used it before now, so leave it to Drafts to provide me some tools to improve the way in which I write.

In that post about the improvements in Drafts 5.5, I had shared updates to my actions for standard and linked posts. These have been super useful for me. But there are others out there that need to use plain Markdown for their posts. I had a follower pose this request on Twitter, and I decided it would be a small challenge to tackle and share.

Unlike my preview action for my site, I needed to keep the raw Markdown, rather than convert it to HTML. This isn’t something I can do natively using the script objects. So I needed a different way to make this all happen. I first needed to identify the Critic Markup elements:

{++add++}
{>>comment<<}
{--delete--}
{==highlight==}
{~~sub~>substitution~~}

Looking at what I needed to do, it was apparent that I needed to first remove the comment and delete elements completely, then keep the text within the add and highlight elements. The substitution element is a bit more tricky, where I need to delete the first word and keep the second word, while deleting the surround elements. With a little help of RegEx, I came up with the pattern:

\{>>.*<<\}|\{--.*--\}|\{==|==\}|\{\+\+|\+\+\}|\{~~.*~>|~~\}

The pipe characters are essentially the “or”, and the rest is to separate the elements. Combining this with elements of JavaScript and the Drafts Script Reference, I created an action to accept critic markup in a new draft, and preserve the existing draft. I did this to show the main RegEx, but it could be used in other ways: this could be a simple script to create a variable for posting; it could be used in conjunction with a step in Shortcuts; or it could even be used when saving out copies of long-form writing.

As the Drafts community and others create new actions that result in tools for writing, it helps to make Drafts more accessible and adaptable to each user. Writing in it may not be for everyone, but you should try it out to be sure. You might be delighted with what you find.


  1. Yes, it‘s been a while. Yes, I’ve been working on things here and there. More to come later.  ↩