[ field log ]

※ Asterlog: Writing With the Hands

Field Log - in progress / studio note

Building a native editor around memory, chords, and type

FIELD LOG3 min read

Context

Every writing tool trains the body. It teaches the hand where saving lives, how a block of text is held, which interruptions deserve a key, and when the mouse must be reached for. After enough years those movements drop beneath thought. They become part of the sentence.

I started Asterlog with an unfashionable requirement: a WordStar user should be able to sit down and write without first forgetting their hands. I did not want to reproduce an old screen as nostalgia. I wanted to find out whether its keyboard logic could inhabit a quiet native application with good type and a modern export path.

The name joins aster—star—with logos. The work so far has been less celestial. Mostly it has involved cursor positions, control keys, font behavior, and the stubborn question of what a writing surface actually needs.

Process

I divided the first build into small proofs. The command resolver recognizes chords such as ctrl-k b to mark the beginning of a block, ctrl-k k to mark its end, and ctrl-q f to search. A partial chord has its own state. After ctrl-k, the application must wait and show what it is waiting for. Otherwise a language the hands already know begins to feel like a broken keyboard.

The editor underneath is deliberately plain: a rope-backed text buffer with insertion, deletion, cursor movement, selection, and command-based undo and redo. WordStar block marks remain separate from ordinary selection. That distinction sounds minor until a passing highlight destroys a block you meant to keep.

For print and PDF, I am using Typst. The editor hands over a document; Typst makes the page. Screen typography and export typography stay separate, because a comfortable live writing surface and a six-by-nine-inch manuscript are not the same object.

Findings

The command model works. Multi-key chords can resolve to named actions without welding the keyboard directly to editor mutations. The same actions can receive conventional shortcuts in a modern mode. This gives me one editor with two bodily vocabularies, not two editors pretending to share a document.

The small editor core also works well enough to expose what is still missing. Tests can prove that undo restores deleted text, that a cursor stops at the edge of the buffer, and that block marks survive an ordinary selection. They cannot prove that a paragraph feels calm on a Retina display.

That proof remains open. The GPUI typography spike still has to render serif, sans, and mono themes; exercise bold, italic, line height, and ligatures; and leave behind screenshots from an actual macOS Retina session. Until those images exist and hold up under inspection, I do not want to call the writing surface finished. A compiling interface can still be an ugly place to spend an afternoon.

Reflection

The most useful result is not a list of features. It is a boundary. Editing behavior belongs to the document and its commands. The screen should render that behavior clearly. The page should be composed elsewhere. Each layer has a different obligation, and the writing becomes brittle when one layer impersonates all three.

Asterlog is still a spike. It can hold text, remember edits, understand the beginnings of an older keyboard language, and produce a typeset artifact. It has not yet proved the thing I care about most: whether I want to remain inside it long enough to write.

That answer will come through the eyes and hands, not the test suite.

* * *