Repository navigation
Releases: praxis-labs-io/zen-octo
Release list
v0.3.0
Windows, a way to upgrade from inside the tool, and the Checks tab finished.
New
Windows is a supported platform. There is a PowerShell installer now, and
the release carries Windows on arm64 and amd64 beside macOS and Linux. It checks
the download against the release's checksums the way the POSIX script does, and
puts the binary in %LOCALAPPDATA%\Programs\zen-octo. Through v0.2.0 the only
route was taking the .zip off the release page by hand. The test suite runs on
Windows in CI as well, so the platform stays supported rather than built.
zen-octo update installs the latest release over the running binary. It
asks GitHub what the latest release is, stops if you already have it, and
otherwise runs the installer for your platform into the directory the running
binary sits in. A binary built from a clone reports dev and is replaced by the
latest release, so stay on make install if you want your own build.
The status bar names a newer release when one is out. A check at launch, at
most one request a day, cached under ~/.zen-octo. The request carries no token
and a failed one shows nothing. updateCheck: false turns it off.
v marks a range in the diff. It drops an anchor on the row under the
cursor, and moving the cursor runs the selection from it. v again clears it,
and so does esc, leaving the hunk, or stepping to the other column. A comment
is still scoped to the cursor's own line.
A workflow's own row reruns the whole run. r reruns what failed in it, R
reruns all of it. On a single job r still reruns that job. Every job a rerun
will replace is marked while the call is out, so a bulk rerun reads the way one
job's does.
⏎ on a check in the details rail opens it on the Checks tab, which is the
tab holding its log and its rerun keys. That row drew and lit with nothing
behind it before.
Changed
⏎ is the jump from a review comment to the code it was written against.
v did that through v0.2.0 and now selects lines in the diff instead.
The diff washes and the cursor line come from your palette. The green, the
red and the lift under the selected row are derived from the background your
terminal reports rather than written down, so they sit just above it whether it
is light or dark. addedBackground, removedBackground and selectedBackground
override them where a terminal lands somewhere odd.
Fixed
transparent: truemeant "paint nothing" and took the cursor line and the
diff washes with it, which left the pull request list, the pickers, the file,
commit and check columns and the merge form with no cursor at all. It now
withholds the background and nothing else.- A check that failed with no log to read was offered
fanyway, and the Checks
hints dropped on every step of the job column.
Install
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/praxis-labs-io/zen-octo/main/install.sh | shWindows:
irm https://raw.githubusercontent.com/praxis-labs-io/zen-octo/main/install.ps1 | iexEach platform on arm64 and amd64, with no Go needed. Both installers check the
download against this release's checksums.txt and install nothing that does
not match. INSTALL_DIR overrides where the binary lands and VERSION pins a
release. Already running zen-octo:
zen-octo updateIt rides on the GitHub CLI's token rather than asking
for one of its own, so if gh auth status is happy, so is zen-octo. Where a
scope is missing it says which and prints the gh auth refresh line.
Install,
the guide,
the keymap,
and configuration.
Known gaps
- No submitting a review, checking a branch out, or listing issues. Those still
go throughghor the browser. - A marked range is read rather than written against. A comment lands on the
cursor's line. - No Homebrew tap.
- Neither installer edits your
PATH. It says so and gives you the line. - The POSIX installer needs
sha256sumorshasumon PATH, and refuses where
neither is. - Under 56 by 23 the shell draws its size instead of a screen, and drops every
key but the ways out.
v0.2.0
The chrome comes from your terminal now, and the pull request screen has been
rebuilt around the details rail.
New
zen-octo takes its colors from your terminal. The hues are ANSI slots, so
the accent, the check marks and the diff markers are the ones your palette
already uses. The greys, the borders and the cursor line are blended from the
background your terminal reports at startup, so they sit just above it whether
it is light or dark. There is no theme to pick and nothing to configure to get
this.
theme: in the config is a set of overrides for the colors it got wrong rather
than a name. background and foreground are what everything else is derived
from, which is also the way out for a terminal that cannot answer the query:
screen, and some tmux and ssh setups, never reply. transparent: true
paints nothing, for a window running translucent. syntaxTheme names the
palette code is highlighted with, that being the one thing that cannot follow
your terminal.
A config still saying theme: rose-pine-moon starts and says so rather than
refusing.
/ searches the list. It narrows the section on screen against the number,
the repository, the title, the author and the head branch, reading what is
already fetched rather than asking GitHub. ⏎ keeps the filter and hands the
keyboard back, esc clears it, and the bar stays up while a filter stands with
what it matched counted against the section.
Changed
The details rail is down the left. Every secondary pane is that column now,
so the sidebar no longer changes sides on a keypress that only changed which tab
was on. It takes the keys on the way in, and each tab gives back the pane you
left it on.
The header is two lines. The title and the number lead, with what the pull
request changes at the far edge; the branches lead the second, with the
lifecycle and the check rollup at the far edge of that. Who opened it moved to
the status bar. That far edge sheds a group at a time as the frame narrows,
where before the title was the half giving way.
The tab strip sits on a row of its own, under the header and above the
panes, with a count on each tab and an underline under the current one.
A cursor is landed wherever there is something to land it on, so the first
press of a motion key moves rather than arrives, and esc leaves in one press.
tab and shift+tab step the column that drives the pane: the file on
Files, the commit on Commits, the check on Checks. ] and [ are the tab keys
on both screens.
The hint line names only the keys that answer where you are standing, and
sheds whole hints from the right as the line narrows rather than cutting one in
half. ? is the last to go. q came off it, being the most guessable key in a
terminal program and on the overlay besides.
Every text box reports its caret and the terminal draws it. One cursor, one
shape, blinking in the emulator rather than by redrawing the frame it sits in.
Fixed
- The Checks hints dropped on every step of the job column and came back a round
trip later.fis now offered on a check that failed and has a log to jump
into, rather than on any check that failed. - A stacked pull request puts a branch name on both sides of the arrow, and the
header clipped the head to fit. The two names share the row, and a name that
fits is never cut. - The mention popup opened two panes from the word it was answering, once the
rail moved left. - The merge headline pinned its cursor to the right edge past the width of the
box. It wraps instead. /over a section that was empty anyway answered by blaming a search nobody
had typed.
Install
curl -fsSL https://raw.githubusercontent.com/praxis-labs-io/zen-octo/main/install.sh | shmacOS and Linux, arm64 and amd64. Windows takes the .zip from this page, the
installer being a POSIX script. INSTALL_DIR overrides where it lands and
VERSION pins a release. Anything else:
go install github.com/praxis-labs-io/zen-octo/cmd/zen-octo@v0.2.0It rides on the GitHub CLI's token rather than asking
for one of its own, so if gh auth status is happy, so is zen-octo. Where a
scope is missing it says which and prints the gh auth refresh line.
Install,
the guide,
the keymap,
and configuration.
Known gaps
- No Homebrew tap.
- No approve, no request changes, no checkout, and no issues view. Those still
go throughghor the browser. - The two diff tints are a standard green and red wash rather than your own
palette's. A terminal reports what a slot is named, not what it maps to. - Under 56 by 23 the shell draws its size instead of a screen, and drops every
key but the ways out.
v0.1.0
The first published build of zen-octo, a terminal client for GitHub.
What it does
A pull request end to end without opening a browser: read it, discuss it, watch
its CI, fix its metadata, merge it. Issues get the same treatment where it makes
sense.
A list you defined. Sections are GitHub search queries you wrote, so what is
on screen is whatever you told it to watch: yours, the ones wanting your review,
the ones you are involved in. {{since:24h}} in a filter becomes the instant
that long ago, which is the only date shape the search takes.
Four tabs on a pull request. The conversation as cards, the diff, the
commits, and the checks. } and { walk the blocks on whichever tab you are
on, so they mean cards on one and hunks on another.
Talking works. c comments, scoped on the diff to the line under the cursor.
r replies, R quotes first, e edits your own, x resolves a thread, +
opens GitHub's eight reactions. ctrl+e hands the box to $EDITOR for anything
longer than a line.
Checks you can read. / searches a job's log, f jumps to the first
failure, and r reruns a job.
A details rail on d, the only route to five writes: state, labels,
reviewers, assignees and the base branch. It answers at every width the shell
will draw, landing as a column where there is room and over the conversation
where there is not, so a client in a drawer beside an editor is not read-only.
Merging shows GitHub's own commit message, per method, rather than one
zen-octo invents. Where the head branch can be deleted it offers that, and where
a protection would be bypassed it says so before the button.
The diff side by side on |, with the cursor living in one column so a
comment is scoped to the side you are reading.
Writes are optimistic: what you did appears at once, and a refusal reverts it and
says so.
Install
curl -fsSL https://raw.githubusercontent.com/praxis-labs-io/zen-octo/main/install.sh | shmacOS and Linux, arm64 and amd64. Windows takes the .zip from this page, the
installer being a POSIX script. Anything else:
go install github.com/praxis-labs-io/zen-octo/cmd/zen-octo@v0.1.0It rides on the GitHub CLI's token rather than asking
for one of its own, so if gh auth status is happy, so is zen-octo. Where a
scope is missing it says which and prints the gh auth refresh line.
Install,
the guide,
the keymap,
and configuration.
Known gaps
- No Homebrew tap.
- The installer checks the download against the release's checksums before it
installs anything, and refuses where neithersha256sumnorshasumis on
PATH. - One theme ships. The config takes a name for a second when there is one.
- Under 56 by 23 the shell draws its size instead of a screen, and drops every
key but the ways out.