I've used Apple Notes for years because it syncs fast and stays out of the way. But when I'm writing in the terminal, there's always been friction getting Markdown into Apple Notes.
Existing tools were either bloated or read-only. So I built Stash: push a Markdown file to Apple Notes, pull changes back. It uses YAML frontmatter to track which note belongs to which file.
Built with Bash, AppleScript, and Pandoc. No databases, no daemons, no config files. Install via Homebrew.
Happy to take suggestions and answer questions about the quirks I ran into along the way.
I love Apple Notes, but I also love writing in vim; looks like I can finally reconcile those two things thanks to your project. Nice work!
> questions about the quirks
I've used a decent amount of AppleScript to automate things on my Mac, so I know it's a powerful tool but not easy to just jump into, even when you're already familiar with that bizarre syntax. What kinds of quirks did you run into?
It's a mix of the lack of documentation for the response payloads and the integration with the shell commands. My tip would be to wrap everything in shell, handle errors on the AppleScript end, and keeping it incredibly simple.
For example, the errors raised from the AppleScript without printing the error inside a try-catch are incredibly dim. So instead I've opted to wrap them on the AppleScript level, print the error and return an empty string. Kinda reminded me of old-school shitty C code.
>Happy to take suggestions and answer questions about the quirks I ran into along the way.
Got up out of bed from doomscrolling to play with/implement this! My less-technical partner tends to reach for Apple Notes and I have offered/threatened to make something, but they've kept (begrudgingly) relaunching VSCode after a "oof, I know it was just real quick." Thanks for the inspiration/headstart.
Yea, it was a bummer they don't have access to it on the AppleScript side. I considered using an x-callback for it but it's not that stable either which is what I was going for. Maybe in the future
Oooh not yet, I've thought about it, as well as some other ideas of bulk syncing and diffs. I'd love for open issues—or better so PR's—on the repo!
What I tend to do—you can also see in the readme—is that I push it to Notes, then pull if I've made any changes. When you already have the id on the note, you can move your note anywhere you'd like (:
Existing tools were either bloated or read-only. So I built Stash: push a Markdown file to Apple Notes, pull changes back. It uses YAML frontmatter to track which note belongs to which file.
Built with Bash, AppleScript, and Pandoc. No databases, no daemons, no config files. Install via Homebrew. Happy to take suggestions and answer questions about the quirks I ran into along the way.