Skip to content

Releases: praxis-labs-io/zen-octo

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 21:03

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: true meant "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 f anyway, 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 | sh

Windows:

irm https://raw.githubusercontent.com/praxis-labs-io/zen-octo/main/install.ps1 | iex

Each 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 update

It 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 through gh or 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 sha256sum or shasum on 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

Choose a tag to compare

@github-actions github-actions released this 27 Aug 19:28

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. f is 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 | sh

macOS 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.0

It 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 through gh or 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

Choose a tag to compare

@github-actions github-actions released this 22 Aug 22:21

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 | sh

macOS 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.0

It 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 neither sha256sum nor shasum is 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.