v0.3.0
A readable list view becomes the default on a terminal, and slow reads get a progress spinner.
This release is about what a read looks like while you wait for it and after it lands. The terminal default changes from a table to a readable list, and a slow read no longer sits blank.
The list view is the new default on a terminal
With no -o, x now prints each row as a short section instead of a row in a
grid:
karpathy
name Andrej Karpathy
followers 2991679
tweets 10118
url https://x.com/karpathy
A heading, then the fields below it. This reads better than a wide table when a
row carries a lot of fields, like a profile or a tweet, where the grid pushes
columns off the edge of the screen. On a terminal the sections are colored; pipe
the output or pass --color=never and they come out as literal
GitHub-flavored markdown you can paste straight into an issue.
The table is not gone. It is one flag away:
x user nasa -o table
Reach for it when you want to scan one column down many rows. And nothing about
pipes changes: with no -o, piped output is still jsonl, so every script and
jq pipeline keeps working exactly as before.
A progress spinner for slow reads
A read often waits on the network before it has a single row to show. When the terminal is interactive, x now prints a small spinner while it waits and clears it the moment the first row is ready.
The spinner only ever writes to standard error, so a pipe like
x timeline nasa | jq and a redirect like x timeline nasa > out.jsonl never
see it; the data on standard output stays clean. --quiet turns it off.
Because the list view streams a row at a time, a slow paginated read now fills in as each row arrives instead of waiting for the whole fetch to finish.
Upgrade
go install github.com/tamnd/x-cli/cmd/x@latest
Prebuilt archives for Linux, macOS, and Windows on amd64 and arm64, plus deb,
rpm, and apk packages, a container image, and checksums, are on the
release page. The binary is
pure Go, builds with CGO_ENABLED=0, and has no runtime dependencies. The only
behavior change is the terminal default format; piped output is unchanged.
License
x is derived from nitter and is licensed under the GNU AGPL-3.0.