Drafts 52 is out! Advanced Data Protection Support and more

Drafts 52 has been released:

Details below. For a complete history of updates, visit the release notes.

52.0

Data Migration Warning

TLDR; Update all your devices!

Changes to the local database and sync in Drafts 52 make it incompatible with older versions. Once you install this version on any of your devices it will migrate your data and you must update all other devices you use Drafts on to 52.0 or greater to continue sync. Older version will temporarily disable sync, and warn you to update to continue sync.

If you still use Drafts on a device which cannot be updated to a newer OS version supported by Drafts, you can continue to use the old version of Drafts on that device, but sync will be disabled.

Updated System Requirements

  • Minimum System Requirements:
    • macOS 12.4 or greater (was macOS 11.5 or greater)
    • iOS 15.6 or greater (no change)
    • watchOS 8.5 or greater (no change)

Advanced Data Protection Support

Apple’s Advanced Data Protection for iCloud (ADP) is a feature to enhanced iCloud security with additional support for end-to-end-encryption (E2EE) for additional data in iCloud. If you do not use this feature, the below should not effect your Drafts usage at all.

If you do use ADP, starting with this release, when syncing changes to iCloud, the following information will be stored in fields which support E2EE:

  • The content of drafts (text only, not metadata)
  • The content of draft versions in the version history
  • The content of action log entries

This applies to all new activity automatically – so any new drafts created, or edits to existing drafts, will have their content stored in fields that support E2EE.

To minimize the impact of this change, Drafts does not automatically migrate existing sync data to encrypted values. If you use ADP, and wish to ensure your entire history is migrated to E2EE-compliant storage, read additional information about ADP migration.

Learn more about ADP support

MCP Server and Command-Line Interface

We have recently released a separate project that implements both a Model Context Protocol (MCP) server, and a drafts command-line interface to work with your Drafts library from outside the app on your Mac. The MCP Server supports direct integration with Claude Desktop/Cowork/Code, and other tools which support MCP – and the command-line interface provides a flexible terminal command to query and update drafts from shell/script automations and other AI tools that can work with CLIs. For details:

Other Updates and Changes

  • New: Add new classic “D” style alternate app icon option.
  • Change: Display keyboard shortcuts for actions in Command Palette.
  • Change: Lower priority of some background maintenance tasks for better efficiency.
  • Change(Mac): Tweak some loading behaviors in AppleScript implementation for better performance.
  • Fix(Mac): AppleScript draft objects had wrong longitude values.
  • New: Action.recent() returns recently used actions.
  • New: ActionLog.recent(limit: Int) returns recent action log entries
  • New: recentActionLogs property on Action to return recent logs specific to that action.
  • Change: More efficient HTML Previews
  • Fix(Mac): Case that prevented red squiggly underlines for spelling errors from appearing in the editor.
  • Fix: Address several rare crashing bugs.
5 Likes

Every time I think that this app can’t get any better, an update like this comes along. I appreciate all the hard work put in to Drafts, and this community!

3 Likes

I have a problem with custom syntaxes since upgrading to Drafts 52.

The following script runs only with syntax “TaskPaper” with either “TaskPaper+” or “TaskPaperIWC” Drafts crashes. TaskPaperIWC is a modification of TaskPaper+ and I used it everyday until the upgrade. Crash happens on my macbook and ipad.

This is the entire script

const template = `New Project:

  • New Task
    `;

let syntax = Syntax.find(“custom”, “TaskPaper”);
// let syntax = Syntax.find(“custom”, “TaskPaper+”);
// let syntax = Syntax.find(“custom”, “TaskPaperIWC”);

// draft.syntax = syntax;

let d = Draft.create();
// d.languageGrammar = “Taskpaper”;
d.syntax = syntax;
let theme = Theme.find(“custom”,“tempo light monospace”);
// let theme = Theme.find(“builtIn”, “light”)
app.lightTheme = theme;
d.addTag(“s::today”);
// d.addTag(“tasks”);
d.isFlagged = true;
d.update();
d.content = template;
editor.load(d);
editor.activate();
editor.setSelectedRange(0, 11);

I can manually assign either TaskPaper+ or TaskPaperIWC to existing Drafts. I also have an action to set the syntax to TaskPaperIWC and executing it also crashes Drafts.

Could you file a support ticket (use “Send Feedback” in Drafts Settings on iOS or in the Help menu on Mac) for this, and include exports of your action and syntax? Hard to troubleshoot without those details.

Have submitted a support ticket with the exported action and syntax attached.

Thanks for responding so quickly.

Ian

1 Like

Not seeing anything appear in the support queue. You used the “Send Feedback” and/or sent email to support@getdrafts.com?

Yes, it is in my sent items so I’ll try it again.

Looks like Gmail blocked it because of the js file.

Have renamed the js file and sent it again.

Ian

I’m sure ADP is a great feature. Just a shame those of us in the UK aren’t allowed to use it!

I don’t understand this “support for ADP” stuff at all. I thought ADP was either switched on or off for the iCloud data categories specified by Apple. I don’t know of any other apps where you have to switch it on selectively for them alone. How does some iCloud-synced data not get ADP if ADP is on?

I suggest you read Apple’s documentation to understand how ADP works, if you are considering using it. It does not include everything in CloudKit, only fields explicitly stored in an encryption-compliant manner. Most apps which use CloudKit do not support E2EE with ADP.

1 Like

With this release I’m seeing notes being cleared to _blank_ when I open them on my various Macs and iOS devices, after seeing warnings to update and then updating them all. I had to manually go into each note’s history and revert. Also, I believe Drafts was running OK on my old Mac Mini that’s stuck at 10.15.8, but now I can no longer update it. This is a deal breaker. Is there a way to revert versions on macOS and iOS? This feels a bit like an upgrade disaster, unfortunately.

I haven’t had any other reports of the “blank” issue yet, will keep an eye on it. Possible it’s related to having such an old version running. I put a lot of checks in the last few updates to make this migration go smoothly. 10.15 support was dropped a while ago, as you haven’t been able to build apps with Apple’s SDKs that support it for quite a while.

I do my best to maintain backward compatibility, but it’s not practical to maintain forever.

Hi,

Drafts was running on two other macs when my other macs were updated to 52. Both are showing all drafts in the inbox as --blank–`:

Paul

And the blank has started to sync out to the other copies

This glitch can happen if an older version of Drafts was not updated in certain circumstances. Sorry about the issue.

I wrote a quick action that will restore any blanks to their last version from the version history to repair this if it happened to you…

1 Like

Awesome, this worked like a charm.

Thank you,

Paul

1 Like

I have the --blank-- issue on the MacBook on Catalina that I’m not updating for software reasons. Do I understand correctly that I cannot sync drafts with my iPhone anymore, now that the iPhone app is updated to the new version?

For me this is very sad, so I still hope there’s a solution. Can I revert back to an older version on iphone?

Unfortunately, the App Store does not work that way. You can’t rollback to an older version. I try to maintain compatibility as long as it is reasonable, but at certain junctures, I have to make changes to move the app forward. Apple’s modern tools do not even build apps for Catalina anymore.

1 Like

Thanks guys, I’m converting someone to this app now with a new way of thinking and taking notes.

1 Like