Skip to content

Heft 0.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 09:20
· 107 commits to master since this release

The file tree grows up, and a capture stops disturbing the app.

Added

  • Copy, paste and duplicate in the file tree, through the general pasteboard, so a file moves between Heft and the Finder either way. Dragging a file in from the Finder copies it into the vault.
  • Select several rows in the file tree: command-click to add, shift-click for a range. Copy, paste, drag and Move to Trash act on the whole selection, and trashing several asks once rather than once each.
  • ⌘Z undoes the last move, rename, paste or delete in the tree. Undoing a paste puts the copies in the Trash rather than deleting them. With the caret in a note, ⌘Z still undoes typing.
  • ⌘⌫ moves the clicked row to the Trash, asking what the menu asks.
  • ⌘L ticks and unticks checkboxes, matching Obsidian's "Toggle checkbox status": a plain line gains an empty box, an empty box is ticked, a ticked one is cleared. The caret stays where it was.
  • The command palette offers what a row's right-click menu offers, acting on the note in front: both paths, the wikilink, Reveal in Finder, Rename, Duplicate, Move to and Move to Trash. Copying a note's absolute path no longer means finding its row first.
  • Reference links render, all four CommonMark forms. A bracketed aside with no matching definition stays prose.
  • Settings ▸ Capture: whether a captured line starts with the time it arrived.
  • Settings ▸ Typing: whether pasting a copied "- item" onto an existing bullet drops the pasted marker.
  • A caution when an agent's proposed move would take a daily note out of its folder, said in the review sheet and by heft propose --move.

Changed

  • Captures from Spotlight and Shortcuts run in an extension of their own. A background intent declared in the app runs in the app, and macOS brings the app forward to run it, so a minimised Heft came out of the Dock every time a line was filed into it. Now nothing enters the app, and it need not be running.
  • A palette command that cannot run right now sinks below the ones that can, so the first row is always runnable. It stays visible and dimmed rather than disappearing.
  • Every menu Heft draws carries symbols and its keyboard hints, in the macOS 26 style.
  • A note keeps its quick-open rank when renamed or moved, whether in the app, by heft rename, or by an accepted proposal. The rank used to stay at the old path, so a moved note started from nothing and whatever was created there next inherited it.
  • Dragging a daily note out of its folder asks first. The folder is what makes it a daily note, so moving it quietly turns it into an ordinary one.

Fixed

  • ⌘V now pastes files copied in the tree. The Edit menu disables Paste when the pasteboard holds only files, and a disabled menu item swallows its own shortcut.
  • Copying from a row's context menu and then pressing ⌘V now pastes, instead of doing nothing.
  • Pasting a copied list item onto a line that is already a bullet no longer writes - - milk.
  • The upgrade instructions say brew update first: Homebrew refreshes taps once a day on its own, so a release made the same day was invisible to brew upgrade.

Under the hood

  • Four targets. HeftCapture is an App Intents extension, sandboxed because macOS launches no extension that is not, and silently refuses one that is not.
  • The sidebar's selection, the palette's ordering, the checkbox cycle and the undo routing are values with no window in them, so each is checked directly rather than through a running app.