Skip to content

pitwall v0.1.0-beta.3

Choose a tag to compare

@github-actions github-actions released this 09 Oct 15:28
· 56 commits to main since this release
affb5d1
  • On Windows, pitwall.exe is a GUI program with pitwall's icon: it opens
    no console window, and get.ps1 and Scoop put it in the Start menu.
    Commands run from cmd or PowerShell still print to that terminal, and
    hooks run by an agent stay silent.

  • On Windows, the Update button works. It renames the running
    pitwall.exe to pitwall.exe.old, puts the new one in its place, and a
    later window deletes the old one.

  • On Windows, a toast shows within moments rather than after PowerShell's
    ten-second start, and a tab's next toast replaces its last one.

  • On Windows, a tab's folder follows cd in PowerShell and cmd.

  • On Windows, git and gh run without a console window, a project's
    folders resolve against the paths git prints, the folder dialog
    completes paths typed with \, a tab no longer takes the program's path
    that Windows titles a new console with as its title, and a hook still
    reaches a daemon of an older version when Windows drops that daemon's
    refusal.

  • A sidebar row whose Claude Code or Codex asks permission has Allow and
    Deny buttons, and Ctrl+Shift+Y and Ctrl+Shift+D press them for the
    focused pane. They take the phone page's path: the key goes only to the
    prompt the row showed, while the pane still shows it.

  • On Linux, clicking a desktop notification raises pitwall on its pane, and
    an approval's notification has Allow and Deny. It needs notify-send from
    libnotify 0.7.10 or later.

  • [notifications] in config.toml, and Settings > Notifications, turn
    notifications off per state or per agent, add a sound, and set quiet
    hours (quiet_hours = "22:00-08:00") that keep only approvals, errors
    and urgent questions, silently.

  • The phone page can push notifications to your phone when an agent
    needs you, with the page closed or the phone locked. Tap Turn on in
    the page; on an iPhone, add it to the Home Screen first. pitwall pushes
    what the desktop notifies, by the same rules, even with every window
    closed, and tapping one opens the page on that tab. Settings, Phone
    shows which devices get pushes and sends a test. Push needs a
    certificate the phone trusts, such as tailscale serve gives.

  • The phone page can be added to the Home Screen as an app, and pairs by
    a typed code as well as by the QR code.

  • Settings, Usage starts with Limits: how much of Claude Code's and
    Codex's 5-hour and weekly plan limits you have used, when each window
    resets, how old the report is, and when you hit 100% at the current pace.
    Codex's come from its session files. Claude Code reports them only to its
    status line, so pitwall hooks install --statusline, or a box in the
    install dialog, runs your status line through pitwall statusline, which
    saves them and prints your own status line unchanged. A window at 90%
    shows a notice once, and limits_in_sidebar = true under [usage] adds
    a meter to the bottom of the sidebar that turns yellow at 80% and red at
    95%. pitwall never asks Anthropic or OpenAI for them.

  • A tab whose branch has a pull request shows it on its row: the number in
    the PR's state color, a CI dot and the review, with each check by name
    in the hover card. Click it to open the PR. The tab's menu and the
    command palette gain Open PR, Merge PR (asks first, and again when checks
    failed; [git] merge_method picks squash, merge or rebase) and Re-run
    failed checks. A merged tab says Merged and offers Archive, which closes
    it and removes its worktree and branch; [git] archive_on_merge = true
    does that on its own. The daemon asks gh about each branch every minute
    or so, slower while no window has focus, and shows nothing without gh
    or a login.

  • pitwall knows more agents. Cursor CLI, Amp and Aider get a logo in the
    sidebar and a line on the welcome card, and so do Gemini CLI and
    OpenCode, which had neither. pitwall hooks install sets up Cursor's
    hooks in ~/.cursor/hooks.json.

  • An agent installed through npm or pip, which runs as node, bun,
    deno or python, is recognized by its script's path. pitwall reads the
    start of the argument list only for the processes in a pane's own
    foreground group.

  • Without hooks or a decision model, Gemini CLI, OpenCode and Aider get
    their state from their screen, as Claude and Codex do.

  • Gemini CLI, OpenCode and Cursor sessions resume after a restart, like
    Claude's.

  • The side panel follows Gemini CLI sessions, with their plan from
    write_todos, and Settings > Usage counts Gemini's tokens.

  • OpenCode shows Plan when its experimental plan mode asks to switch to the
    build agent. Reinstall hooks to update the plugin.

  • Tabs on different branches of one repository that change the same files
    get a warning mark on their rows: amber when they touch the same files,
    red when merging their commits would conflict. The hover card lists the
    files, conflicting ones first, opens a file's diff on a click, and
    suggests which branch to merge first. A notice tells you the first time
    two tabs start sharing a file. conflict_radar = false under [git]
    turns it off.

  • New worktree tab asks what the worktree checks out: a new branch off any
    local or remote branch, an existing local branch, a remote branch that a
    new local branch tracks, or, when origin is on GitHub, a pull request by
    number, fetched into pr-<number>. A new branch no longer tracks the
    branch it starts from, so Create pull request pushes it with -u.

  • The first worktree in a repo adds /.worktrees/ to .git/info/exclude,
    so worktrees stop showing as untracked files. .gitignore is untouched.

  • Deleting a worktree tab lists the worktree's uncommitted and untracked
    files and offers Delete anyway, which used to fail without a word. Deleting
    its branch warns when the branch is not merged, and then deletes it
    anyway. The main checkout is never removed.

  • Clean up worktrees, in the command palette, runs git worktree prune and
    lists the worktrees under .worktrees that no tab uses, with their last
    commit and changes, to open or delete. The daemon prunes on start and says
    when it finds some.

  • pitwall worktree ls, new, rm and prune do the same from a
    terminal: new <name> --from <ref>, --branch <branch> or --pr <n>
    opens a tab, -- cmd runs a command in it.

  • pitwall completion bash, zsh or fish prints a completion script for
    every pitwall command.

  • Start an agent on a task from the window: New task (Ctrl+Shift+A, the
    command palette, or a group's menu) picks the project, where it runs
    (the folder, a new worktree off a branch you choose, or an existing
    branch), the agent on your PATH, Claude's or Codex's permission mode, and
    the prompt. Queue holds the task until a running agent of the session
    finishes, or under [agents] max_running until fewer than that many run.
    The queue shows under its group in the sidebar, survives a daemon
    restart, and pitwall queue ls, add and rm manage it from a shell.
    Windows need a daemon of this release for tasks; an older one says so in
    the dialog.

  • A selection stays on its text while new output scrolls the pane. It used
    to stay on the same screen cells, so the text under it changed. Dragging
    past the top or bottom of a pane scrolls it, faster the further you drag,
    so one selection can copy any amount of history.

  • Triple-click selects a whole line, across the rows it wrapped onto, and
    Alt+drag selects a block.

  • Copy mode (Ctrl+Shift+X) selects and copies with the keyboard: vi motions,
    / to find, v, V or Ctrl+V to select, y to copy. See docs/keys.md.

  • [terminal] scrollback sets how many lines of history new panes keep,
    10,000 by default and up to 200,000. It is also under Terminal in the
    settings page.

  • A mac key preset puts the app's keys on Cmd: Cmd+C and Cmd+V copy and
    paste, Cmd+T opens a tab, Cmd+W closes a pane, Cmd+Shift+P opens the
    palette. It is the default on macOS when the config names no preset.
    Cmd is another name for Super in config chords.

  • View diff opens a review view in place of the tab's panes instead of a
    pager. It lists the changed files, untracked ones included, with their
    status and line counts, and shows each file's diff with line numbers and
    the unchanged lines folded. Click a line number or press c to comment on
    a line or a range, then send every comment to the tab's agent as one
    prompt with file:line references and the quoted lines; a busy agent gets
    it when it next waits for input. Mark files reviewed (a file the agent
    changes again comes back unreviewed) or discard a file's changes. Open it
    with Ctrl+Shift+R, the tab menu, the command palette or a file under
    Changes; j/k move between files, n/p between hunks, Esc closes it. The
    pager stays as Open diff in pager. The header shows the branch's pull
    request as its sidebar row does, and a click opens it. A file in a
    conflict warning's hover card opens in the review view too.