Heft 0.4.0
The command line learns new tricks and better manners, and a proposal points at the words that moved.
Added
- A proposal marks which words moved, not only which lines. A word edited in place is marked at the letter that changed, a word replaced outright is marked whole, and two lines with too little in common are left alone rather than painted end to end.
heft capture <vault> "text"adds one timestamped line to the inbox note, or to today's daily log with--daily. It is the one thing an agent writes straight into a note instead of proposing, because adding a line cannot disturb what is already there. The same write Spotlight capture has always made.- Settings ▸ Capture ▸ Review agent captures turns those captures into proposals, so nothing an agent does reaches a note until you accept it. Off by default, and it governs the command line only: your own captures from Spotlight and Shortcuts always land straight in.
heft read --lines N-M, for a note too long to pull whole.heft find --filesanswers which notes matched and how often, rather than which lines.--jsononfind,files,outline,links,backlinksandtags, because a path can hold a quote and a column cannot say so.heft version, which also answers to--versionand-v.
Changed
Four commands stop doing what they used to. Each wrote without review, and each now names what to use instead.
heft renameneeds--now. It repoints every link to the old name the moment it runs, andheft propose <vault> <path> --move <new>was already the reviewed form of the same thing.heft exportrefuses when the output file already exists, unless you pass--force. The path is arbitrary and outside the vault, so a mistyped one used to overwrite whatever was there.heft proposerefuses a whole body for a note that was never read, as it already did for one that changed since. Read it first, or send anchored edits with--replace. A note that is new or empty still needs no read.heft dailyrefuses a date it cannot read instead of writing today's note. A shell variable that did not expand used to leave a templated note on a day nobody asked about.
Fixed
heft findsaid nothing when it stopped at 40 matches, so a cut list read as the whole answer. It now says how many it withheld, and takes--limit.- Every verb resolves a note's name the same way.
heft outlinerejectedFolder/Notewhereheft readtook it, and neither said which spelling it wanted. heft exporttakes its flags in any position. Written before the output path, a flag became the output path.heft fileslists attachments as well as notes, which it always did and never said.--notesnarrows it to Markdown.