Aug 14, 2026

Walking the archive

A post here recently argued that the wizard menu got shorter because operations on a post belong in the post, not in a menu. That still holds. This release adds a screen anyway, and the reason is worth stating: finding a post is a different job from doing something to one.

./blog.sh browse shows the same posts list does, as a screen you stay in.

What it is

Arrows and Page Up/Down through the whole archive. Filters by type, state and tag, with the count next to each. And a search that filters as you type.

The search is the site's own. Words are ANDed, "a quoted phrase" counts as one, -word excludes, and diacritics never decide a match. The query language and the folding live in lib/search_query.rb, next to a note that it and assets/js/search.js change together — because a query that means one thing in your browser and another in your terminal is worse than having no search in the terminal at all.

It searches the full text of every post, so under the selected row there is a line of that post's own text showing you why it matched.

Space opens a read-only preview — the same markdown edit would hand you, with media lines shortened to their filenames. Enter opens it for editing and comes back to the same row, with the same filter still applied. z clears the filters.

Two small decisions that took the longest

The keys are deliberately none of the letters that mean an action elsewhere. p is "publish" in three dialogs and x is "delete" in two, so neither could be the preview key here — muscle memory does not check which screen you are on. The preview is the space bar, the way every file manager has done it for thirty years.

The rows lead with the title, not the slug. list still prints the slug first, because down a pipe the slug is the thing you copy into the next command — and browse falls back to exactly that when it is not talking to a terminal. But on screen, a title is what you are scanning for. On an imported archive that matters more than it sounds: over half the posts arrive with no title at all, so the row falls back to the slug for those, which is precisely the set where the slug is all there is.

Who this is actually for

Twenty-two importers mean archives that are thousands of posts long, not dozens. list was written when this site had fourteen. Scrolling a pipe is fine for fourteen.

For four thousand imported posts, from six platforms, half of them untitled, you need to be able to look — filter to one origin tag, search for a word you half remember, read the matching line, open the one you meant. That is the whole feature, and it only became necessary because the importing worked.

Comments