gotextlog

gotextlog
git clone https://git.ryansepassi.com/git/gotextlog.git
Log | Files | Refs | README

textlog terminal client

textlog is a keyboard-first Textlog client built with Bubble Tea, Bubbles, and Lip Gloss.

Build and run

Go 1.24.2 or newer is required.

go build -o textlog ./cmd/textlog
./textlog

The process requires an interactive input and output terminal.

Controls

Use the arrow keys or j/k to move, and Enter, right arrow, or l to open. g and G select the first and last item. h, left arrow, Escape, or q goes back; at the root it quits. n and p change cursor pages, and R reloads the current feed or search.

Guest tabs are 1 hot, 2 latest, and 3 live. Signed-in tabs are 1 for you, 2 to me, 3 hot, 4 latest, and 5 live. Other global shortcuts are 0 profile, / search, w write, a account, and ? help.

In note lists, Tab and Shift+Tab cycle through the author, thread, reply, URLs, hashtags, and mentions; Enter opens the focused target. r replies, u opens the author, t opens the first tag, and o opens the note in a browser. Thread actions include f/F follow/unfollow, b/B block/unblock, e edit, d delete, and ! report. Profile and tag tabs use Tab or left/right. Space pauses and resumes the live feed.

Multiline editors use Enter for a newline and Ctrl+S to preview or submit. Settings can be selected with j/k and Enter; t, u, and o are shortcuts for theme, instance URL, and web app.

Configuration

The default instance is https://textlog.cc. Command-line options are:

Environment overrides are TEXTLOG_URL, TEXTLOG_TOKEN, TEXTLOG_THEME, and NO_COLOR. Settings and the session token are stored in the platform user configuration directory: $XDG_CONFIG_HOME/textlog on Linux, Application Support on macOS, and AppData on Windows. The configuration file is written atomically with owner-only permissions where supported.

Sign-in supports Textlog's email-code flow and compatible instances that use SSH Ed25519 keys. Press Tab on the login screen to switch modes. Key login discovers ~/.ssh/*.pub, lets you select an Ed25519 key, and asks for a handle when registering it with an instance. Signing uses a matching key from SSH_AUTH_SOCK first, then an unencrypted matching private-key file. Load an encrypted private key into ssh-agent before signing in. The client persists the resulting bearer token, restores the last authenticated feed, supports bio editing and sign-out, and opens URLs with the platform browser command.

API coverage

The client implements Textlog API v1.1 JSON endpoints for public and personalized feeds, search, posts and reply trees, profiles and relationship lists, tags and followers, authentication and account updates, post creation, editing and deletion, follow/block actions, reporting, and the SSE firehose. Live connections reconnect after an interruption and malformed SSE events do not terminate an otherwise healthy stream.

Validation

go test ./...
go test -race ./...
go vet ./...
go build ./cmd/textlog
just e2e-key-server # requires ../gotextlog-srv