Skip to content

fileregister 2.0.0

Choose a tag to compare

@rhsev rhsev released this 10 Oct 19:00
· 12 commits to main since this release

Breaking: register album prints data, not HTML. The album is the binder in order as JSON lines: each member's list --json line plus position, fields (its block in the note, read through grubber) and file (what the file itself carries, such as size, date, place and coordinates). A gallery, a report or a web page is built from those lines by whatever reads them. The renderer and its flags (--out, --css, --milan, --open) are gone, and album says so when given one. See ALBUM.md.

Breaking: the note is the order. Members follow their blocks in the order they stand in the binder's note, so moving a block in the editor moves the member, and renaming a file moves nothing. A sort: key still places a member ahead of the document, and register order move writes them. order set and --rule are gone; a type: ordering block from earlier versions is harmless.

Breaking: grubber reads every note. register had its own small Markdown reader behind list --inbox/--curated, annotate, aka, marshal, reindex, rename and cleanup. These commands now read through grubber, as album and order do, so both sides see the same blocks. They need grubber v0.19.0 or later, which the download carries; the core commands run without it. register calls grubber with --no-config, so your grubber config does not change what register sees.

tags is no longer an index field. Free labels belong in the member's block, where grubber, matterbase and the album see them. write ignores a tags input field and says how many lines carried one. An index line that has the field keeps it, unread.

register forget takes a record in no binder out for good: the index line, the bookmark entry, and its id in the notes and on the file. The note blocks stay, and promote reattaches one if the file comes back. No other command deletes a record.

refresh puts a missing id back. iCloud Drive strips kMDItemInformation, the id Spotlight searches, and repair relies on it to find a renamed file. refresh now restores it wherever it is missing. It adds and never replaces, and writes nothing when there is nothing to restore.

list --json without a binder lists the binders, one {"name","count"} line each.

A bookmark is the macOS anchor, and only that. A record whose binder set is empty used to be called a bookmark. It is now a record in no binder, and the output says so: audit shows [no binder], cleanup lists "Records in no binder", and add without --binder reports "Registered in no binder". "URL ref" is now "URL record". Scripts that parse the human-readable output may need a look; --json output is unchanged.

Documentation. WHO-WRITES-WHAT.md shows what each command writes to the index, the bookmark store, the file and the notes. README, SPEC and the other documents were checked against the code. make install now also installs a grubber fetched with make grubber.

Upgrading from 1.x

  • An HTML album needs a renderer of your own that reads register album lines.
  • An album that relied on file-name order: check it once with register order show <binder>, then move blocks in the note or use register order move.
  • grubber v0.19.0 goes next to register. The download has it; from source, make grubber && make install.
  • Labels kept in an index tags field belong in the blocks.

Engine: fileanchor 1.2.0, unchanged.

Download (Apple Silicon): fileregister-macos-arm64.tar.gz bundles register with its two helpers in libexec/, the fileanchor engine and grubber v0.19.0, plus each component's license in licenses/. Fetched with curl it runs as-is; after a browser download, clear the quarantine flag once in the unpacked folder: xattr -dr com.apple.quarantine register libexec. Intel Macs: build from source (go install + make fileanchor + make grubber).

License: PolyForm Noncommercial 1.0.0 (use, change, non-commercial).