Skip to content

Releases: hk9890/revier

v0.24.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 20:31
32715d3
  • Action required: revier now needs kitty 0.42 or later. With an older
    kitty, a workspace does not open: after 5 seconds, the error says that no
    kitty answered and names 0.42. Update kitty.
  • Workspaces open in a kitty of revier's own. Before, a workspace opened
    in the kitty you ran the command in, or, when no kitty answered, in one
    revier started with your shell's environment. From the popup it opened in
    the popup's kitty. Now revier starts one kitty for every workspace. It has
    no window of its own and keeps running after you close the last workspace.
    Where systemd runs your session, it runs as the user service
    revier-kitty, with your desktop session's environment, so a shell's
    activated virtualenv or credentials no longer reach every project. To make
    that service read a changed kitty.conf, or use an updated kitty, run
    systemctl --user stop revier-kitty. This closes every workspace in it.
  • The popup has no title bar, and of kitty's keys only copy and paste work
    in it.
    Before, a kitty key in the popup could open a window or a tab
    there. Now every other kitty key, revier's and your own included, does
    nothing in the popup.
  • A target can run a command in place of opening a window. Use
    [target.command] for a thing that shows in a window you share with other
    projects, such as a browser tab group. Before, such a target held revier
    for its wait on every press, and a second press did not go home. Now a
    press runs the command and waits for it to end. When the command moved the
    focus, the next press goes to the project's home while the focus is still
    there. The TUI shows the target as command. A session, a restore and a
    shutdown skip it.
  • A directory reached through a symlink is now in its project. Before, a
    project saved under a path with a symlink, such as ~/dev linked
    elsewhere, was in no project from a directory with the link resolved, such
    as a tmux window. revier agent new and
    revier shell new without -p then failed there.
  • revier agent new --resume --panel outside a workspace warns that it did
    not resume.
    Before, it dropped --resume without a word.
  • revier doctor names a terminal key whose agent cannot run outside a
    workspace.
    With outside = "agent", in kitty, such a key opens a plain
    tab and gives no reason. Now doctor names the key and the fix.

v0.23.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 07:32
ba17dfa
  • Action required: revier agent new and revier shell new without -p
    now fail in a directory that is in no project.
    Before, the project came
    from --dir, else the current directory. If neither was in a project,
    revier used the focused window's project, else the last project. So an
    agent could start in a project you did not mean. Now the project is the one
    that --dir is in. Without --dir, it is the one the current directory is
    in. A --dir in no project fails, even when you run the command inside a
    project. Such a directory is, for example, a worktree outside the project's
    directory. The command exits with status 3. Where a script or alias does
    this, add -p <project>, for example
    revier agent new -p shop --dir ~/dev/shop-wt. --panel does not change.
  • revier rename <old> <new> renames a closed project. Before, only the
    project screen (alt+e) could rename a project. Now an agent or a script can
    do it too. The file, the state and the saved sessions move to the new name.
    The command refuses while any part of the project runs, including a launch
    that still waits for its window. It also refuses while a window is attached
    to the project, or while a host cannot say what runs. Do not move a project
    file by hand: the saved sessions keep the old name, and revier no longer
    finds the project's open windows.
  • revier agent close <agent> ends one agent. Before, no command ended
    one agent, so a script typed /exit, and that worked only for Claude Code.
    Now the command closes the agent and returns when it is gone. It closes the
    agent's tab, and the shell in that tab, when the agent is in a tab beside
    the workspace's own tab. In the workspace's own tab, it closes only the
    agent's panel. It refuses while an agent in what it closes is running or
    in attention, unless you give --force. An opencode agent outside herdr
    shows unknown, so the command does not refuse it in a turn. It saves no
    session.
  • revier list --agents prints one row per agent, with its address. Each
    row shows the address that revier agent takes, the agent's name, status,
    activity, harness and directory. With --json, each agent is one flat
    object. Before, you had to build the address from revier list --json. An
    agent that no target holds has no address, so its row names its project
    and panel.
  • revier list --match <word> lists only the projects that a word
    finds.
    The word can be part of a project's name, the name of its
    directory, its repository, its name on a link's host or an agent's
    activity. Case does not matter. It can also be the full name the harness
    gives an agent. --match takes no project names. When nothing matches,
    the command fails.
  • A terminal agent key can now start an agent in a window of no
    workspace.
    Before, no value of [terminal] outside started an agent.
    With tab, the agent keys opened the same plain shell tab as the shell
    key. With none, they did nothing. Now outside = "agent" opens a tab in
    the window's directory that runs the agent the key asks for. A named
    agent's key runs that agent. agent_key runs the first [[agent]] of
    config.toml, and with no [[agent]] it opens a plain tab. An agent whose
    command uses a template opens no tab there, and the error names it. The
    shell key still opens a plain tab, and tab and none do not change. This
    works in kitty and tmux.
  • In tmux and herdr, a tab opened beside a pane starts in that pane's
    directory.
    Before, revier shell new --panel <id> without --dir, and
    the plain tab of outside = "tab", did not start in the pane's directory.
    In a workspace, the shell tab started in the project's directory. Outside a
    workspace, the plain tab started where the runtime put it. Now they start
    in the pane's directory, as in kitty.
  • revier list with an unknown name still lists the names it knows.
    Before, one unknown name in revier list a b stopped the command, and it
    printed nothing. Now it lists the known projects. Each unknown name gets a
    line on stderr, with "did you mean ...?" when a project name is near. The
    exit status is still 1.
  • revier agent wait on a panel with no agent yet waits for the agent to
    start.
    Before, on such an address, for example the one that
    revier agent new --no-focus prints, wait failed at once with "not an
    agent panel", and --timeout had no effect. Now it waits for an agent to
    start, within the same --timeout, then for the status. Without
    --timeout, wait on a panel where no agent starts waits for good.
  • The tmux keys open their tab where kitty is also installed. Before,
    revier agent new --panel "#{pane_id}" and revier shell new --panel "#{pane_id}" failed with "no open target holds panel" when kitty was the
    first runtime that worked. Now a tmux pane id makes these commands use
    tmux, if [hosts] runtime names tmux before none or you set no list.
  • On a link, the project's address finds the default agent beside named
    agents.
    Before, <project> and <project>:<target> were ambiguous on a
    link when two or more agents ran there, even when all but one were named
    agents. Now the address names the default agent, as it does on this
    machine. The project's machine must run v0.23.0. This works only for
    agents started after the upgrade.
  • A rename no longer refuses a project whose name is part of
    jetbrains-idea, such as "a", "idea" or "jetbrains".
    Before, the
    project screen refused to rename such a project when revier new had
    written its file. Now the editor's window class in that file does not block
    the rename.

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 14:07
103bfbf
  • Action required: an agent address now has three parts,
    <project>:<target>:<panel>, and revier agent focus --ref is removed.

    Before, <project>:<panel> failed when two kitty processes held one
    project's windows, and some agents had no address that worked. A script that uses <project>:<panel> must use the new form.
    The agent pane, revier list --json, revier agent new --no-focus and
    every "which agent?" error print it. <project> and <project>:<target>
    still name the default agent, now on a link too. Where you used
    agent focus --ref, give the address.
  • Action required: drop --dir from the tmux agent key. If you copied
    the tmux binding from the guide, change it to
    bind-key A run-shell -b 'revier agent new --panel "#{pane_id}"'. With
    --dir, the agent still starts in the worktree.
  • Action required: an [[action]] on alt+l must move to another key.
    alt+l now opens the logs screen, so config.toml with an action on it no
    longer loads.
  • A terminal key's agent tab starts in the project. Before, ctrl+shift+z
    in an agent that works in a worktree started the new agent in that
    worktree, so it could enter no other worktree. A shell tab still starts in
    the panel's directory.
  • A logs screen. alt+l, the new "logs" button in the top bar, or a click
    on the footer's error opens a list of this machine's warnings and errors,
    newest first. Enter shows a line in full. The footer now names only what
    failed; the reason is on the logs screen.
  • The remote screen lists your machines. Before, alt+r and revier link
    listed every host of ~/.ssh/config. Now they list the new [[machine]]
    tables of config.toml, so the list is empty until you add a machine:
    alt+n on the remote screen adds a host of the ssh configuration, and alt+d
    removes one. Both keep the comments in config.toml. Each row shows that
    machine's revier version, "no revier" or "does not answer". A link to a
    machine that is not on the list still works, and revier doctor names it.
  • A link shows a link icon. In the project list and on the remote screen,
    a link now has the link icon, not the server icon. A host's projects list
    the linked ones first.
  • An agent row shows the agent's name. Under its age, a row in the agent
    list and in the project pane shows the name the harness gives the agent,
    for Claude Code the name its peer messages use. The pane also shows the
    agent's address. An exec probe can report the name in a new name field.
  • revier no longer picks a herdr server it cannot drive. Before, a running
    herdr server older than 0.9.5, or one that did not answer, was chosen, and
    every key then failed. Now revier goes on to the next runtime of
    [hosts] runtime.
  • herdr: revier finds a panel's program as herdr does. Before, revier
    started from a desktop key refused a program that a herdr server started
    from a login shell could run, and let through one that herdr could not
    find.
  • A tab whose command exits at once says so. Before, a tab whose only
    command exited right after it opened failed with "can't find pane", which
    named neither the panel nor its command.
  • A failed clone says why git failed. Before, the error was only
    "exit status 128". A clone onto a terminal now shows git's progress.
  • del on a project whose window another project holds names that project.
    Before, the footer said "nothing of it is open here" while the row showed
    the window open.
  • A config or state file is no longer left broken by a crash during a
    write.

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 00:39
c7566fe
  • A restore no longer loses agents to a smaller save. Before, a plain
    restore opened the newest save, so after you closed one project, or deleted
    a few, it opened only what was left. Now a plain restore, the first entry of
    the sessions screen and the start dialog take the newest save of the whole
    set: one saved by hand, by a full shutdown, or after a crash. A save made
    when you close a project is still listed, and you open it by its id.
    revier session list ends with the id a plain restore opens.
  • A crash no longer loses what was open. While the TUI runs, revier
    remembers what it shows. When revier ended without a shutdown, for example
    because kitty was killed, the next start offers what was open as a
    last-seen session. revier session restore offers it too.
  • Named agents. An [[agent]] in config.toml names a program that an
    agent tab runs, such as a second agent beside Claude Code. Give it a key
    for its own terminal key. revier agent new <name> opens one, and a
    restore brings it back as that agent, not as the default one. A project
    file can change an agent's command or add an agent of its own.
  • revier term install writes your terminal keys into kitty. It writes
    revier.conf in kitty's configuration directory and adds one include at
    the top of kitty.conf, also through stow links. You no longer write the
    maps by hand. The keys come from the new [terminal] table (shell_key,
    agent_key) and from each agent's key. revier term status shows them,
    and revier term uninstall removes them.
  • A terminal key in a window of no project opens a plain tab. Before,
    revier refused the key there. Set [terminal] outside = "none" to make it
    do nothing.
  • A terminal key works in a panel whose directory was removed. Before,
    ctrl+shift+t and ctrl+shift+z did nothing in a panel of a deleted worktree,
    in kitty and with the tmux keys of the guide. Now the tab opens in the
    project. In a worktree that still exists, the new tab still opens in that
    worktree.
  • revier state shows what revier had open at a moment. --at <time>
    goes back in time, and --session <id> explains why a save differs from
    what was open when it was saved. The record it reads is kept under
    revier's state directory.
  • Shutdown says when it is safe to leave. While the TUI shuts down, it
    says to wait, and how many of what it closed are still open. Then it says "Shutdown complete", and
    revier shutdown prints "shutdown complete; safe to leave". Every restore in
    the TUI now ends on the project list, with the TUI raised. What did not
    open is named in the footer.

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 08:09
79986f3
  • Action required: on GNOME, revier needs wctl 0.16.0 or later. revier
    uses GNOME only when wctl is 0.16.0 or later and a Window Control
    extension runs. With an older wctl and no [hosts] window, revier now
    runs with no window host and says nothing: no window targets, no raise, no
    return home, no place and no popup. With [hosts] window = ["gnome"], commands stop with
    no configured window host is usable: gnome: wctl X is older than 0.16.0, the oldest revier drives.
    To fix it, update the Window Control extension and wctl to 0.16.0 or
    later, then log out and in. Then check that wctl version --json shows
    wctl 0.16.0 or later and an extension version.
  • Action required: a script that reads revier session list by position
    must read NAME from the third column.
    REASON is now the second column,
    after ID, so NAME and every column after it move one place to the right.
  • herdr is a new runtime host. Before, revier ran workspaces in kitty or
    tmux only. Now revier can open each workspace as a herdr workspace, its tabs
    as herdr tabs and its panels as panes, and it reads every pane to find
    agents. You need herdr 0.9.5 or later on your PATH. revier uses the server
    that herdr would attach to, and starts it when none runs. The default
    runtime order is now kitty, tmux, herdr: a machine with only herdr uses it.
    When kitty or tmux is installed, set [hosts] runtime = ["herdr"].
    revier open --attach and tab targets work with herdr, and revier doctor
    knows herdr. So that revier session restore resumes the agents and herdr
    does not, set resume_agents_on_restore = false under [session] in
    herdr's own config.toml. Some things do not work with herdr:
    • A focus moves every terminal that is attached to herdr. Attach one
      terminal.
    • revier does not raise the desktop window that shows herdr, a second press
      does not return home on GNOME, and place does nothing.
    • While you scroll a pane up, the TUI and revier agent read --screen show
      those lines, not the newest.
    • When the herdr server starts, for example at the first open after a
      reboot, herdr brings its workspaces back as shells that revier does not
      know. revier then opens a second workspace or tab. Run herdr, close
      those workspaces, then run revier session restore.
    • The popup is a kitty window. With herdr and no kitty, run revier in a
      terminal.
  • In herdr, agents other than Claude Code show a state. Before, only
    Claude Code and agents with a [[probe]] of your own showed a state, and
    opencode was always unknown. Now, in herdr, an agent such as Codex, Gemini
    or opencode shows the state that herdr detects: working, needs you, idle, or
    unknown. A [[probe]] that you declared for that agent still wins. Outside
    herdr, opencode still shows no state.
  • The TUI and revier shutdown show each step of a shutdown or a restore
    while it runs, and ctrl+c stops between steps.
    Before, a shutdown or a
    restore could run for a minute and showed nothing until it ended: the TUI
    showed one line, and the CLI printed one table at the end. A host that hung
    on one step looked like a hung revier. Keys and clicks in the TUI still acted
    on a half-changed desktop, and ctrl+c killed revier shutdown or
    revier session restore in the middle of a step. Now:
    • The TUI shows each step of a shutdown, a close or a restore, and its
      result. No other key or click does anything until it ends.
    • revier shutdown and revier session restore print one line per step:
      its name before the step, its result after it. A hung step is the last
      line.
    • ctrl+c lets the running step finish, then stops. revier counts and lists
      the steps it did not reach, and the TUI stays open to show the result. A
      restore stopped after its last target says return home cancelled. A save
      stopped by ctrl+c writes no incomplete session. An alt+del stopped
      during its last close still deletes the entry.
    • When a step hangs, a second ctrl+c quits at once and also stops the
      command that the step waits for, such as kitten, tmux, ssh, wctl or
      claude.
  • After a full shutdown, the next start offers to restore it. Before,
    the next start offered nothing, the restore was three keys deep on the
    sessions screen, and the TUI stayed open after the shutdown. Now revier
    remembers a shutdown of all of every project. The TUI and the popup show the
    result for about 1.5 seconds, then quit; any key quits at once. The next
    start of the TUI or the popup opens on a dialog, for example
    revier was shut down at 18:30., with Restore this session, Pick another
    session, and Start fresh (or Esc). A TUI that stays open, or a hidden popup,
    while revier shutdown runs in another place shows the same dialog at its
    next refresh or raise. The offer ends when you open something first, with a
    desktop key, revier go, revier open or revier run, and when
    revier session restore starts. revier does not remember the shutdown, and
    the TUI stays open, when:
    • you shut down one project, or closed with del;
    • the shutdown found nothing to close;
    • revier could not write what it remembers;
    • you opened something while the shutdown ran;
    • you stopped it with ctrl+c before its last step. A ctrl+c after its last
      step started keeps it.
  • revier session list shows why each session was saved. Before, a
    session without a name showed a dash on the TUI sessions screen and a blank
    NAME in revier session list, and you could not tell the saves of a
    shutdown, a project close and a save by hand apart. Now
    revier session list has a REASON column: shutdown, project closed or
    saved by hand. The TUI sessions screen shows the reason where a name is
    missing. A session that an older revier saved shows unknown. NAME is still
    the value that revier session restore accepts.
  • The shutdown button moved to the sessions screen. Before, the top line
    of the TUI had a shutdown button. Now the sessions screen (alt+s) has the
    save and shutdown buttons on its top line, and alt+q there opens the
    shutdown. alt+q in the project list still opens it, and Esc goes back to
    where you opened it.
  • A restore no longer brings each window that it opens to the front, and
    the TUI comes back to the front when the restore ends.
    Before, a restore
    raised every window that it opened, so the desktop flipped through each
    editor and browser, and the last window hid the result of the restore. Now
    revier still finds and places each window, but does not raise it. GNOME
    itself still shows most new windows over the TUI. A terminal that a restore
    opens still gets the focus, so its tabs come up as saved. When the restore
    ends (done, failed or cancelled), the TUI or the popup brings its own window
    to the front once. A TUI in a terminal that revier does not list stays where
    it is. A normal key press still raises the window that it opens.
  • A [[probe]] named opencode now runs. Before, revier ran its own
    opencode probe before your [[probe]] entries, so a [[probe]] named
    opencode never ran. Now the Claude Code probe runs first, then your
    [[probe]] entries in file order, then the probes that come with revier.
  • A press that opens a window, and each step of a restore, end sooner.
    Placing each window takes about 150 ms less, and revier finds a new window
    sooner.
  • A new terminal window is placed also when another host does not
    answer.
    Before, when one other host, such as tmux or herdr, could not
    list what it runs, revier left the new terminal window where it opened.
  • A del or alt+del question from before the popup hid no longer answers
    itself with your next key.
    Before, when you pressed del or alt+del in the
    popup just before it hid, for example while the window that Enter opened
    came up, the popup could hide with the question still open. The next raise
    showed that question, and the first key answered it: Enter closed the
    project, and after alt+del also deleted the project file. Now a raise drops
    a question from before the hide. Press del or alt+del again. When you press
    a key, click or turn the wheel before the window comes up, the popup now
    stays on the screen.
  • revier open --attach in a tmux pane no longer ends with an error.
    Before, in a pane of the tmux server that holds the workspace, the command
    switched the pane to the workspace and then printed
    sessions should be nested with care, unset $TMUX to force. Now it switches
    the pane, prints the workspace, and exits 0. A terminal that you started
    from a tmux pane still attaches.

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 12:35
3b9911e
  • A wrong [ui] value or [[probe]] in config.toml no longer stops every
    command.
    Before, one such mistake stopped every command that reads the
    projects: the TUI, the desktop chords and revier popup. revier doctor
    showed only that one error. The mistake could be a [[probe]] without
    name or exec, an unknown theme or glyphs, or a trigger_key that
    revier cannot read. Now only the wrong value is affected:

    • An unknown theme or glyphs uses its default.
    • A [[probe]] without name or exec does not run.
    • A trigger_key that revier cannot read stops only revier keys status,
      install and uninstall. They do not bind alt+space in its place, and
      the TUI help shows no trigger key.

    revier doctor names each mistake under the config.toml heading and
    exits 1. Correct the value. revier still stops every command when
    config.toml is not valid TOML, or when a value has the wrong type, such as
    theme = 3.

  • The config screen (alt+c) shows the problems of config.toml. Before,
    the TUI showed none of them. The one warning line on stderr disappeared when
    the TUI started, and only revier doctor named the problems. Now each
    problem shows above the rows of the screen, and a long problem wraps. A
    problem can be an unknown theme or glyph set, a trigger key that revier
    cannot read, an action, shared target or [[status]] that cannot be used,
    or a [[probe]] without name or exec. A theme name with a typo now
    shows as the default theme, and this screen tells you why. If config.toml
    stops being valid TOML while the TUI runs, the screen shows the path and the
    reason the next time you open it. The screen reads the list again when it
    opens, after each change you make on it, and when the TUI reads the files
    again without an error. When you choose a valid theme on the screen, its
    problem goes away.

  • An agent whose Claude Code conversation is gone starts empty, and revier
    tells you.
    Claude Code keeps no conversation for an agent that never got a
    prompt. It also deletes conversations older than cleanupPeriodDays, which
    is 30 days by default. Before, a restore resumed such an agent anyway.
    Claude Code stopped at once with No conversation found with session ID,
    the window showed a failed command, and the restore counted the agent as
    resumed. Now the agent starts empty in the directory where it worked. The
    restore summary adds, for example, 2 agents empty: conversation gone. The
    sessions screen shows empty: its conversation is gone, also in the plan
    before you restore. revier agent new --resume <id> does the same check,
    and so does the agent of a linked project when its host runs this version.
    Both print revier: warning: <id> was not resumed (conversation gone) and
    then tell you that the agent starts empty. For the agent of a linked
    project, only that warning on the host tells you: the restore summary and
    the sessions screen still count it as resumed.

  • A double click in the TUI opens only the row that you clicked two times.
    Before, a refresh between the two clicks could move another project or agent
    into the place that you clicked. For example, a project that needs you moved
    to the top, or an agent closed and the rows below it moved up. The second
    click then opened that other row, which you had clicked only once. This was
    also true for the agent and target rows of the pane and for the rows of a
    screen. Now a double click counts only when the same project, agent or
    target is still in the same place. If the row moves, the second click is a
    new single click.

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 21:37
de7c96c
  • Action required: a target with a key cannot be named popup. The
    trigger key, the chord that opens revier popup (alt+space by default), is
    now named revier: popup, not revier: picker. A target that has a key
    and is named popup or picker is refused at load, and revier doctor
    names it. Rename the target. Then run revier keys install once. It renames
    the old revier: picker entry in GNOME Settings and prints renamed for
    that row. --dry-run shows the rename too. A shortcut that you bound to
    revier by hand keeps your name. revier keys status, install and
    uninstall name the row popup, also in --json ("target": "popup",
    before "picker"). Change a script that reads the old name.
  • Action required: a panel kind must be agent, shell or tool.
    Before, revier accepted any value without a message. A typo such as
    kind = "agnet" made the panel a tool, so a restore did not resume its
    conversation, a link did not fill its command, and revier agent new did
    not copy it. Now revier refuses only that target, and revier doctor
    shows target "<name>": panel <n> has kind "<value>"; use agent, shell or tool. Correct the value. A panel with no kind is still a tool.
  • Action required: an unknown name in [hosts] makes revier doctor
    fail.
    An unknown name in hosts.runtime or hosts.window is reported
    under the config.toml heading, with the known names, and doctor exits 1.
    This also applies to a name after a host that works, or after none, which
    no command reported before. Correct the name or remove it from the list.
    Doctor does not check if a host works.
  • A user guide is on
    GitHub.
    It
    has pages for getting started, concepts, the TUI, projects, agents, links,
    configuration, CLI commands, troubleshooting, statuses and agent probes. It
    also has one page each for kitty, tmux, Ghostty, GNOME, Claude Code and
    opencode. revier assist --reference now prints the configuration, status
    and probe pages of the guide, so the assistant also gets the status and
    probe formats.
  • revier sees an agent in a tmux pane that an interpreter runs. Before,
    revier showed no agent state for an agent that started as, for example,
    node .../bin/claude, and an agent typed into a shell pane showed as
    unknown. Now, in tmux as in kitty, the agent shows its state in the TUI,
    the agent list and probes, and a session save records it. An external probe
    gets the whole command line and the foreground pid of a tmux panel.
  • revier <command> --help prints that command's usage and exits 0.
    -h and -help do the same. Before, most commands printed a different
    usage text and exited 1, and some were refused or contacted the hosts.
    Help opens no window and contacts no host. revier link help and
    revier <family> help print the usage. revier help now names every
    command and flag. revier agent help says that agent prompt also
    refuses an agent whose state is unknown, as an opencode agent always is.
    For such an agent, use agent send-keys. An unknown flag is reported
    once. Each word after -- is text, also a word that starts with a dash.
  • The agent mirror shows the whole screen. v0.17.0 cut Claude Code's
    screen above its input box. When Claude Code drew something under the box
    or in its place, such as the background-agent selector or the workflow
    view, the cut was in the wrong place. Now the mirror shows the agent's
    whole screen, the input box included.
  • revier each log prints a command that you can paste into a shell.
    Each word of the command and the filter is quoted as a shell reads it.
    Before, sh -c 'echo a b; true' showed as sh -c echo a b; true, and a
    filter that held a single quote showed incorrect quotes.
  • revier session list and the sessions screen count every saved
    agent.
    Before, they counted only agents with a conversation, so a
    session could show 0 agents and then restore three. Session files do
    not change.
  • A restore starts a Claude Code agent in the directory where it
    worked.
    Before, a restore started a Claude Code agent that had no
    conversation yet in the project directory. An agent with a conversation
    resumes it as before.
  • The tmux host names the command that does not start. Before,
    revier open failed with a raw tmux error such as no such session: $0.
    Now a launch or panel command whose program is not on PATH is refused
    before tmux starts, with the <kind> panel's command "<prog>" is not on PATH, or the command "<prog>" is not on PATH for a launch or a panel
    with no kind. A command that exits at once gives ... command "<cmd>" exited as soon as it started. A program given as a path is not checked in
    advance. Install the command, put it on PATH, or correct the command.
  • A target that no host can open is named in the error. revier go
    printed only no host can realize this target. Now the message names the
    target, its project and the kind of host that is missing, for example
    target "editor" of project "myproj" has only a window realization, and no window host is configured or available.
  • revier doctor gives better advice. In a link project, doctor tells a
    target with no realization to add a [target.remote.window] or
    [target.remote.runtime] table. Before, it told you to add a
    [target.window] table, which a link project refuses. A value of the wrong
    type is advised on its type, not on TOML syntax. A refusal such as
    action "c" runs nothing prints once, under its name, not two times. A
    doctor run that finds problems is no longer written to the log as an
    error.

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 19:59
1bf8cb2
  • alt+a raises the config assistant beside the surface. Before, alt+a
    handed the surface's terminal to Claude Code until it exited. Now it raises
    revier-config-assistant, a project that revier builds in: Claude Code in a
    workspace of its own, briefed to change the configuration and to find what
    is wrong with it. Its row has a cog where other rows have a folder. Like any
    other project, it shows in the agent list, a saved session restores its
    conversation, and a second alt+a raises the same window. It continues the
    conversation you held with it last, also the one from the old hand-over. A
    second agent there, while the first one runs, starts a new one. It is not
    told which project the cursor is on, so name the project. The surface reads the files again when it gets
    the focus back. A project file with the same name replaces the built-in
    project, and the built-in project comes back when that file goes. Another
    machine's built-in project is not offered as a link. With no runtime, alt+a
    hands the terminal over as before. When the assistant cannot start, its
    window stays open and shows why until you press Enter.
  • A [[status]] shows a command's output on the surface. A [[status]]
    table in config.toml runs a command and shows what it prints at one of
    these places: an end of the rule under the top line, the end of the pane's
    first line, or a section of the pane for the selected project. Examples are
    an account's usage limits or a CI result. A project file adds its own status
    to the pane, or changes a shared one. The command can mark its output as a
    warning or as critical. When a run fails, the last answer stays, dimmed.
    revier doctor names a table that it refuses. revier assist --reference
    prints the format.
  • The pane shows each tab under the target it opens inside. Before, the
    targets were listed in the configuration order, so a tab looked like a window
    of its own. Now a tab is drawn on a branch line under its container, and a
    glyph marks each window and each container.
  • The agent mirror is easier to read. A line that is wider than the pane
    now continues on the next line at a word, not in the middle of a word, and
    keeps the indent of its list item. A rule is shortened to fit the pane.
    Claude Code's input box and status lines are left out, so the pane shows more
    of the conversation. revier agent read --screen still prints the whole
    screen.

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 23:08
3355757
  • The surface no longer keeps a CPU core busy. A TUI or popup left on
    the screen used 60 to 70 percent of a core all the time, with or without
    the focus. With the focus it now uses about 10 percent. In a terminal
    that reports the focus, such as kitty, or tmux with focus-events on, a
    surface without the focus refreshes every ten seconds, the working
    spinner stands still, and the hover does not follow the pointer. When
    the focus comes back, it refreshes at once. A launch that is still coming
    up keeps the one-second refresh until its window appears, for at most a
    minute.
  • Enter in the popup hides the popup. A press that brings a target or an
    agent to the front takes the popup off the screen; the popup key brings
    it back with fresh rows. A press that fails leaves the popup on the screen
    to show why. If you hide and raise the popup again before a slow launch
    lands, the popup stays.
  • A linked host is no longer asked every second. Before, a linked host
    spent a third of a core answering each surface. Now it is asked at most
    once in five seconds, and a press, or the focus coming back, asks a host
    that answers at once. A host that does not answer is asked less often
    after each round it misses, up to once a minute, and a press or the
    focus that comes back does not ask it again before then. A round to a
    host that stops answering ends after about ten seconds, not after more
    than a minute.
  • A link to the machine revier runs on is left out. The project files
    are shared between machines, so a link that one machine writes to another
    is read on that other machine too, where it names the machine itself.
    There, revier asked itself over ssh every second for what it lists
    already. Such a link is now left out of every command on that machine,
    by the host's name or by the HostName in ~/.ssh/config. Only the part
    of a name before the first dot counts, so a link to a machine with the
    same short name in another domain is left out too. revier doctor names
    each file it skipped. revier link and alt+r do not offer this machine,
    and refuse it as a host.
  • revier link and alt+r list a host whose ~/.ssh/config line uses a
    tab.
    A Host or Include line that separated the keyword from its
    value with a tab was not read.
  • A ctrl+shift target key works inside revier in kitty. In a terminal that
    reports key disambiguation, such as kitty, pressing ctrl+shift+o in the
    surface runs the target bound to it, as the desktop key does outside, and
    ctrl+o keeps its own meaning. Before, the press arrived as ctrl+o, so a
    target key whose ctrl key the surface used did nothing there. In other
    terminals, keys work as before. The help screen and the footer name the
    ctrl+shift keys that now work.
  • With NO_COLOR set, the selected row is bold and a text field shows its
    cursor.
    Colour stays off, for any value of NO_COLOR that is not empty.
    Before, the surface drew no emphasis at all, and the cursor was invisible.
  • A session saved by v0.3.0 restores without its conversations. It
    opens its projects as before but resumes no agent conversation. Renaming
    a project that such a session holds rewrites the session, and its
    conversations are then gone for good.

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 10 Oct 23:52
5d9abd3
  • Action required: panels are on a tab target only. A project file or a
    config.toml with [[target.runtime.panels]] on a target that has no
    inside is refused at load, and revier doctor names each file with the
    fix. Give the target the line tabs = ["agent"] in its [target.runtime],
    and move the panels into a new target:

    [[target]]
    name = "agent"
      [target.runtime]
      inside = "home"   # the name of the target the panels were on
        # the [[target.runtime.panels]] tables go here, as they were

    A dir on the target moves with the panels: a tab starts in its own dir.
    A machine that a link reaches must have this version and its project files
    in this form too, and so must a link file whose home declares panels. A
    link home with a window part and a runtime part that has no launch is
    refused as well: give the runtime part a launch, or remove one of the two
    parts. A session saved before the change restores after it. revier new
    writes the new form, and revier assist --reference prints a whole file in
    it.

  • A workspace opens with a list of tabs. tabs = ["tickets", "agent"] on
    the runtime of the home target is the order, and active = "agent" is the
    tab that has the focus. Each name is a target with inside = "home", which
    holds panels or a launch. The key of a listed tab goes to that tab and
    opens no second one, also after the first panel of the tab has ended. A
    workspace that is open already keeps its tabs as they are.
    revier agent new, revier shell new, a save and a restore take the agent
    and the shell from the listed tabs, so the conversation in the agent tab
    is resumed. A linked project opens with one tab, agent, which holds its
    agent and its shell.

  • The target form has tabs and active. The config screen and the
    project screen can make the target that lists its tabs, and change the
    order and the tab that has the focus. A target that lists a tab is saved
    after the tab exists.

  • A refusal on a linked project names a fix that works there. Panels on a
    target of a link go into a tab of its home, and panels on the home go into
    the tab agent. A link whose home has the name agent is refused for the
    name. revier new is refused beside a shared target named agent that is
    no tab. The project screen refuses tabs and active on a link, where it
    dropped them with no message.

  • The mouse works after an action or a clone. After a key ran an action,
    or Enter cloned a missing project, a click did nothing, and a drag selected
    text that was lost at once while an agent worked.

  • Fast pointer motion no longer types into a filter. Text such as
    <35;76;40M appeared in the project filter with no key pressed, and the
    list then matched nothing.

  • A raised popup no longer shows the states of the moment it was hidden.
    The list stopped refreshing when the pointer was over the popup at the
    raise, so a closed project stayed listed as open until the next Esc and
    raise.

  • The log says how a surface ended when its terminal closed. The
    command line of the process has signal, and the process exits with 128
    plus the number of the signal. Before, a surface whose terminal closed
    wrote no line.

  • A desktop with no focused window is no error on GNOME. revier attach
    says no window is focused, where it printed a JSON error, and the popup
    key writes no resolve: focused window warning to the log. The
    popup: launched line has the id of the window the key was pressed over,
    as over, and an empty one when no window had the focus.

  • The pane beside the project list shows the terminal of one agent, as the
    pane beside the agent list does.
    The section is headed Screen, follows
    the agent each second in its own colours, and the wheel scrolls back
    through it. It showed the agent's last message, set again from Markdown,
    with the turn above it; both are gone. An agent of any harness is shown
    now, and so is an agent of a linked project in a terminal here.

  • The pane no longer puts an agent with a message before one without. It
    shows the agent that needs you, else one at rest before one working, and
    the last to speak among equals. It keeps that agent until another needs you
    more, so an agent that speaks does not take the screen from its equal.