Skip to content

Releases: eqms/ai-workbench

AI Workbench v1.11.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 16:04

AI Workbench v1.11.0

What's Changed

Mouse clicks now reach the application running inside a pane.

Fixed

  • [FIX] Clicks reach Claude Code and lazygit. Claude Code's "Jump to bottom
    (click)" button did nothing in the workbench — and so did every other
    clickable element in Claude Code and lazygit. v0.96.0 taught the workbench to
    forward the mouse wheel to an inner application that enables mouse tracking,
    but buttons were never forwarded: a left click was consumed locally for focus
    and text selection, so the ESC [ <0;col;row M report the application waits
    for was never sent. Press, drag and release are now routed the same way the
    wheel already was — if the inner application requested mouse tracking
    (DECSET 1000/1002/1003), the event goes to it; otherwise nothing changes and
    the local selection keeps working as before. The press captures the pane, so
    a drag that leaves the pane still reports to the application that received it,
    and the protocol mode is respected (no release reports to an X10-mode app, no
    motion reports without 1002/1003).

Changed

  • [CHG] In mouse-aware panes the mouse belongs to the application. Where an
    inner application tracks the mouse, the workbench no longer starts its own
    text selection — Claude Code marks text itself, and that selection was what
    the workbench had been overriding all along. Panes without mouse tracking —
    a plain shell, the preview pane — are untouched: click and drag still selects
    and copies to the clipboard exactly as before.

Security

  • [ADD] Self-update now verifies release signatures (SEC-01 Half 2 — finding
    closed).
    Archives have been signed in CI since v1.6.0, but the client
    installed whatever GitHub served: a compromised release asset would have
    installed itself on every machine at the next auto-update.
    src/update/install.rs now embeds signing/ai-workbench-pub.bin as
    RELEASE_PUBLIC_KEY and passes it to both Update::configure() chains, so
    self_update rejects any archive that is unsigned or signed with another
    key. The published v1.10.1 asset was verified against the committed key
    before enabling this, confirming binary and CI use the same key. Two
    consequences: signing is now mandatory in the release workflow (missing
    ZIPSIGN_PRIVATE_KEY fails the job instead of publishing an uninstallable
    release), and --update-to targets must be v1.6.0 or newer, since
    earlier releases predate signing.
  • [FIX] SECURITY-NOTES.md no longer reports two fixed issues as open.
    "Shell Fallback in Dependency Probe" and "Predictable Temp File Path" were
    still listed as (MEDIUM — open) although both were closed in v0.90.0 —
    the shell fallback is gone from dependency_checker.rs, and
    pdf_export.rs:130 uses tempfile::Builder…tempfile_in() with O_EXCL.
    Both moved to "Closed Findings" with the verifying evidence.

Internal

  • [CHG] portable-pty 0.8.1 → 0.9.0, which drops the serial crate
    (unmaintained since 2017, RUSTSEC-2017-0008) in favour of serial2 and
    pulls nix up to 0.28. No source change was required. Removes the only
    cargo audit warning that reached the project through a direct dependency.
  • encode_mouse_button_event() and mode_reports() in src/terminal.rs
    (pure, unit-tested) next to the existing encode_wheel_event();
    PseudoTerminal::send_mouse_button() writes them past write_input() so the
    scrollback position survives, as send_mouse_wheel() already did.
  • App::forward_mouse_button() / App::pty_pane_rect() in src/app/mouse.rs,
    new App::pty_mouse_capture: Option<PaneId> field.
  • wheel_coords_in_pane() renamed to pane_cell_coords() — it now serves
    buttons as well as the wheel.
  • 267 unit + 3 CLI tests pass (+4).

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.10.1

Choose a tag to compare

@github-actions github-actions released this 05 Aug 14:42

AI Workbench v1.10.1

What's Changed

Follow-up review of the v1.10.0 security work. One functional regression, one
gap in the git hardening, and three parsing/robustness defects.

Fixed

  • [FIX] Pulling is possible again. v1.10.0 turned git.auto_fetch off by
    default, which also removed the only path to git pull: the pull dialog was
    raised solely by the automatic remote check, so with the new default nothing
    could reach it. The GitConfig::auto_fetch doc claimed "Manual pull (Ctrl+G)
    is unaffected", but no such binding exists — g in the file menu is "Go to
    path". There is now a real entry: F9 → p, which asks before pulling and
    works regardless of auto_fetch (that setting governs whether navigating
    into a repository talks to the network, not whether you may ask it to).
  • [FIX] git pull no longer runs the repository's hooks. git_command()
    pinned six config keys but not core.hooksPath, so confirming the pull dialog
    in a tree you had only navigated into executed .git/hooks/post-merge. Clones
    do not carry hooks, but an unpacked archive containing .git/ does. Now
    pointed at a path that is never a directory, verified against a real
    post-merge hook. Hooks are disabled for our git calls only — the Terminal
    and LazyGit panes run git unpinned.
  • [FIX] The trust check and the config load no longer read the file twice.
    local_config_status() hashed one read of ./config.yaml and
    load_config_checked() then parsed a second, so what was approved and what was
    loaded could differ. New read_and_classify_local_config() reads once and
    hands the bytes to the caller; save_config() likewise pins the bytes it just
    wrote instead of re-reading them.
  • [FIX] Paths with non-ASCII characters get their git color back.
    core.quotePath was left at its default, so git status --porcelain returned
    "\303\234bung.txt" for Übung.txt — a path that never matches anything on
    disk, leaving the file rendered as clean. Now pinned to false.
  • [FIX] A localized git no longer turns a missing remote into an error. The
    "no remote configured" branch matches on English stderr (Could not resolve);
    under a German locale it fell through to the error path. git_command() now
    sets LC_ALL=C.
  • [FIX] An unreadable-but-present config.yaml is reported. When
    canonicalize() failed, local_config_status() returned Absent, which
    suppressed the "your config is being ignored" warning. It now returns
    Untrusted — still fail-closed, but visible. Trusting and loading also agree
    on UTF-8 handling now, so a file with invalid UTF-8 can no longer be approved
    and then abort startup.

Changed

  • MenuBar indices are derived from a single ITEM_COUNT constant with a
    debug_assert against the rendered list; the wrap-around bounds were
    duplicated magic numbers. 4 new unit tests (263 total).

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.10.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 14:19

AI Workbench v1.10.0

What's Changed

Security release. Two issues let a directory you merely open decide what code
ai-workbench runs. Both are fixed by making the dangerous behavior opt-in, so
this release changes defaults — see "Changed" for what you may need to re-enable.

Security

  • [FIX] A repository-local config.yaml is no longer trusted automatically.
    load_config() read ./config.yaml from the working directory with the
    highest priority and no provenance check. That file sets pty.claude_command,
    pty.lazygit_command and terminal.shell_path, which are spawned as processes
    at startup — so cloning an untrusted repository and starting the workbench in it
    was enough to run attacker-chosen binaries in all three panes, silently.

    A repo-local config is now ignored until you approve it once:

    ai-workbench --trust-local-config    # review the file first, then approve

    The approval is pinned to the file's exact content (SHA-256) and its
    canonical path, recorded in ~/.config/ai-workbench/trusted_configs.yaml
    (mode 0600). Editing the file — or a git pull that rewrites it — drops the
    approval, so a config cannot be swapped out under an existing trust. When a
    local config is skipped, startup prints a warning to stderr naming the file and
    the command to approve it. Saving settings writes to the repo-local file only
    while it is trusted, and re-pins the hash afterwards; otherwise settings go to
    the XDG config as before.

  • [FIX] git fetch no longer runs automatically when browsing into a repository.
    Entering a directory in the file browser triggered an immediate background
    git fetch, which executes the target repository's own configuration.
    remote.<name>.url = ext::sh -c '…', core.sshCommand, core.gitProxy and
    credential.helper are all command-execution vectors, so navigation alone was
    enough to run code chosen by the browsed tree. Git's safe.directory guard does
    not cover this: it only rejects repositories owned by a different user, and an
    unpacked archive or fresh clone is owned by you.

    Auto-fetch is now off by default and opt-in per config:

    git:
      auto_fetch: true   # only for trees you control

    Local git status colors and the branch indicator are unaffected — they never
    needed the network. Manual pull (Ctrl+G) is unchanged.

  • [FIX] All git invocations are hardened against repository-supplied config.
    Every git call now pins core.fsmonitor=false, core.sshCommand=ssh,
    core.gitProxy=, core.pager=cat, credential.helper= and
    protocol.ext.allow=never on the command line, where repo config cannot
    override them, plus GIT_TERMINAL_PROMPT=0 / GIT_ASKPASS= / GIT_PAGER=cat
    to keep git non-interactive. Verified against a repository configured to run a
    core.fsmonitor helper on git status and an ext::sh -c remote: both execute
    without the flags and are blocked with them.

    This shrinks the surface but does not close it — .gitattributes plus a
    filter.<name>.clean entry can still run a command during git status, and git
    offers no single switch to disable all filters. That residual risk is why
    git.auto_fetch defaults to off rather than relying on hardening alone.

Changed

  • [CHG] Dependency advisories are now triaged in-repo. .cargo/audit.toml and
    the [advisories] ignore list in deny.toml document two quick-xml DoS
    advisories (RUSTSEC-2026-0194 / -0195) as unreachable, with the dependency paths
    that make them so: typst's CSL bibliography parser, which never sees user input
    because the Typst source is generated internally, and the build-time
    wayland-scanner proc-macro. Neither is resolvable via cargo update
    (citationberg pins ^0.38, wayland-scanner pins ^0.39). Re-verify with
    cargo tree -i quick-xml whenever the lockfile changes.
  • [CHG] timeout-minutes added to the audit and deny CI jobs, the two that
    were missed in the v1.9.1 sweep.
  • New dependency: sha2 0.10, used only for content-pinning the config trust
    allowlist.

Fixed

  • [FIX] The SSH image-paste setup instructions no longer assume a macOS client.
    Wizard step "SSH Image Paste", --ssh-paste-diag and the USAGE.md sections told
    every user to run brew install shunmeicho/tap/cc-clip "on your Mac". The wizard
    runs on the remote host and cannot know the client's OS, so Linux users were
    handed a command that does not exist for them. The instructions now say "on your
    local machine" and list both installs (brew for macOS, cargo install cc-clip
    for Linux). Text only — no behavior change; the helper detection, the port-9998
    reachability check and the [m] mark as configured flag are untouched.
  • [FIX] The remote export/preview transfer no longer calls the SSH client a Mac
    either.
    The iTerm2 OSC 1337 file transfer works from any host running iTerm2
    or WezTerm — WezTerm ships for Linux — but the footer flash, --open-diag
    output and USAGE.md all said "your Mac". Now "your local machine" / "local
    ~/Downloads". Text only.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.9.4

Choose a tag to compare

@github-actions github-actions released this 28 Jul 09:36

AI Workbench v1.9.4

What's Changed

Added

  • [ADD] Two new AI backends: ollama-opencode and ollama-pi. You can now launch OpenCode and Pi through Ollama directly from the workbench. Both appear as separate entries in the F8 backend menu ("OllamaOC" / "OllamaPi") and have their own dedicated Settings fields under Shift+F8 → Paths: "Ollama OpenCode Command" and "Ollama Pi Command". Defaults are ollama launch opencode and ollama launch pi; add --model ... in Settings or config.yaml to target a specific model, e.g.:
    pty:
      ollama_opencode_command: ["ollama", "launch", "opencode", "--model", "kimi-k2.7-code:cloud"]
      ollama_pi_command: ["ollama", "launch", "pi", "--model", "qwen3.5:cloud"]
  • The CLI accepts ai-workbench ollama-opencode and ai-workbench ollama-pi; session persistence stores them as ollama-opencode / ollama-pi.
  • The setup wizard now detects ollama, lets you configure the Ollama path, and picks the new backends with keys 5 and 6.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.9.3

Choose a tag to compare

@github-actions github-actions released this 28 Jul 09:19

AI Workbench v1.9.3

What's Changed

Added

  • [ADD] Settings text fields now support a real cursor, arrow navigation, and Command/Ctrl+V paste. Previously the Settings dialog (Shift+F8) used a plain append-only input buffer: Backspace always removed the last character, there was no cursor position, and paste only worked with Ctrl+V. The editor now tracks a char-based cursor, renders the character at the cursor with a reversed-video block (or a trailing block cursor when at the end), and supports /, Home, End, Delete, Backspace, plus Ctrl+V and Cmd+V on macOS. This makes editing long command lines like opencode --model kimi-k2.7-code:cloud or pi --model qwen3.5:cloud in F8 → Settings → Paths much less frustrating.

Changed

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.9.2

Choose a tag to compare

@github-actions github-actions released this 28 Jul 08:57

AI Workbench v1.9.2

What's Changed

Changed

  • [CHG] Resolve all outstanding cargo clippy -- -D warnings failures. The project no longer builds with the strict clippy profile due to 11 lint errors in test modules and initialization patterns: items_after_test_module (src/browser/opener.rs, src/update/check.rs), field_reassign_with_default in five test helpers (src/config.rs, src/setup/wizard.rs, src/ui/settings.rs), and useless_vec in semver-selection tests (src/update/check.rs). All affected code now uses struct-literal initialization with ..Default::default(), places test modules at the end of their files, and replaces single-use vec! literals with arrays. No runtime behavior changed; this is a maintenance/CI-hardening release.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.9.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 10:16

AI Workbench v1.9.0

What's Changed

Added

  • [ADD] Immediate boot screen — no more black screen at startup. Previously the terminal went black for 3–5 seconds between launch and the intro animation: ratatui::init() blanks the screen (alternate screen), and only afterwards ran the kitty-keyboard probe (up to ~2 s on unresponsive terminals) and App::new() synchronously before the first frame. The new ui::boot_screen module paints an instant frame right after terminal init — the "AI WORKBENCH" block wordmark in the intro's stabilized cyan style, version, and a status line ("probing terminal..." → "initializing panes...") — so startup shows immediate feedback and flows seamlessly into the intro animation. App::new duration is now logged to update.log for startup profiling.

Changed

  • [CHG] Startup dependency check moved off the critical path. DependencyReport::check() (~12–20 sequential subprocess spawns probing git/claude/opencode/pi/codex/lazygit and shells) ran synchronously — and, due to WizardState's eager Default, effectively twice on every launch (three times on first run). It now runs once on a background thread via the existing JobState pattern (check_async(), polled in the event loop); WizardState::default() no longer spawns any subprocesses, and only the first-run wizard performs a synchronous check when it actually opens. The Linux clipboard-helper warning banner is seeded when the background check completes.

Fixed

  • [FIX] Intro animation no longer starts before it is visible. IntroState's clock began mid-App::new(), so construction time silently consumed part of the ~4.5 s animation budget — the intro appeared to start partway through. App::run now re-anchors the clock (IntroState::restart()) right before the first frame, so the full glitch → sweep → stabilize sequence plays from the moment it becomes visible.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.8.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 17:49

AI Workbench v1.8.0

What's Changed

Added

  • [ADD] Codex (OpenAI) as fourth AI backend. The AI pane can now run OpenAI's codex CLI alongside Claude Code, OpenCode, and Pi: launch with ai-workbench codex, or switch at runtime via the F8 backend menu (now 4 entries). Codex starts directly (like OpenCode/Pi — no startup dialog); its own flags (-s sandbox mode, -a approval policy, -m model, --search) are configurable via the new pty.codex_command config field, editable under F8-Settings → Paths → "Codex Command". The setup wizard gained a Codex CLI detection line, path field, backend choice 4, and confirmation entry. The selected backend persists in session.yaml as before (last_backend: codex). New AiBackend::Codex variant flows through the existing data-driven F8 menu/footer/pane-title/respawn plumbing; Claude-specific paths (permission dialog, daily claude update) stay Claude-only via supports_claude_flags(). New config field is serde-defaulted (["codex"]) — existing config.yaml files load unchanged. 1 new unit test plus extended backend/menu/wizard tests (240 total).

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.7.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 15:25

AI Workbench v1.7.0

What's Changed

Added

  • [ADD] Shift+Enter inserts a newline in the AI pane (F4). The workbench now pushes the kitty keyboard protocol flag DISAMBIGUATE_ESCAPE_CODES at startup (guarded by supports_keyboard_enhancement(), popped in restore_terminal()), so terminals that support the protocol (iTerm2 3.5+, Kitty, WezTerm, Ghostty, Alacritty ≥0.13) report Shift+Enter as a distinct key event. map_key_to_pty translates it to ESC+CR, which Claude Code and OpenCode interpret as "insert newline" in legacy keyboard mode — the mode the inner PTY always runs in, since the vt100 parser never answers kitty-protocol queries. Scoped to the AI pane only (shell/LazyGit behavior unchanged). On terminals without protocol support (e.g. Terminal.app) nothing changes; the \ + Enter fallback keeps working everywhere. 6 new unit tests in src/input.rs.

Fixed

  • [FIX] Alt/Option+Enter now inserts a newline in the AI pane. Previously the ALT branch in map_key_to_pty only handled word navigation (Left/Right); Alt+Enter fell through to plain \r, silently dropping the ESC prefix. It is now mapped to ESC+CR in all PTY panes — this works even without kitty-protocol support.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.

AI Workbench v1.6.0

Choose a tag to compare

@github-actions github-actions released this 11 Jul 17:09

AI Workbench v1.6.0

What's Changed

Added

  • [ADD] Release archives are now cryptographically signed (zipsign, SEC-01 Half 1). The release.yml workflow signs every .tar.gz/.zip with an ed25519 key before publishing (signature embedded in the archive — no sidecar, signed archives still extract normally) and verifies each one against the committed public key signing/ai-workbench-pub.bin in CI. The private key lives only as the ZIPSIGN_PRIVATE_KEY GitHub Actions secret. Client-side verification is intentionally NOT enabled yet — per the SECURITY-NOTES.md rollout order, the next 2–3 releases ship signed first so existing self-updates keep working; enabling self_update's .verifying_keys() (Half 2) will be a later major release.

Downloads

Platform Architecture Download
Linux x64 ai-workbench-x86_64-unknown-linux-gnu.tar.gz
Linux ARM64 ai-workbench-aarch64-unknown-linux-gnu.tar.gz
macOS Apple Silicon (M1/M2/M3/M4) ai-workbench-aarch64-apple-darwin.tar.gz
macOS Intel ai-workbench-x86_64-apple-darwin.tar.gz
Windows x64 ai-workbench-x86_64-pc-windows-msvc.zip
Windows ARM64 ai-workbench-aarch64-pc-windows-msvc.zip

Installation

Homebrew (macOS / Linux):

brew install eqms/ai-workbench/ai-workbench

Unix (Linux/macOS):

# Download and extract
tar xzf ai-workbench-*.tar.gz
chmod +x ai-workbench
./ai-workbench

Windows:

# Extract zip and run
Expand-Archive ai-workbench-*.zip -DestinationPath .
.\ai-workbench.exe

Auto-Update

AI Workbench includes built-in auto-update functionality. Updates are checked automatically on startup.

See README for full documentation.