Skip to main content

Core workflows

Terminal

The integrated terminal runs inside the bottom panel of Code mode - a full PTY-backed shell with xterm.js rendering, AI command generation, automatic error detection, and an AI chat mode. The same panel instance is shared with Chat mode, so switching modes never kills your processes or loses scrollback.

Opening and resizing the panel

Press Ctrl+** to toggle the terminal panel open or closed. Drag the separator between the editor and terminal to resize it. Press **Ctrl+Shift+ to maximize the terminal to fill the full code area, then again to restore it.

The panel can also dock to the right side of the editor instead of the bottom - click the dock-side toggle button at the far right of the terminal tab bar. This setting applies to all tabs at once.

Terminal tabs

Each tab is an independent shell process with its own scrollback buffer and working directory.

  • New tab: click + in the terminal tab bar or press Ctrl+Shift+T
  • Switch tabs: click the tab
  • Reorder tabs: drag
  • Close tab: click the X - this kills the PTY process
  • Rename tab: double-click the tab title, type a name, press Enter to save or Escape to cancel

A green dot on the tab means the PTY is running; grey means it exited. When a process exits, the terminal shows the exit code and a "Press any key to restart" prompt. If it exits 3 times within 2 seconds, a diagnostic message appears suggesting you check your shell config.

Custom tab names persist in the current session but reset when you restart the app.

Shell selection

The shell is chosen automatically at launch - there is no shell selector in Settings.

Platform Shell precedence
Windows PowerShell 7 (pwsh.exe) → Windows PowerShell → cmd.exe
macOS / Linux $SHELL environment variable → /bin/bash

To change the shell on macOS or Linux, set SHELL before starting Bodega One. On Windows the order is fixed.

Settings

Go to Settings → Terminal to configure the following.

Setting Options Default
Font Size 10–24 px 13
Cursor Style Bar / Block / Underline Bar
Cursor Blink On / Off On
Scrollback Lines 1,000–50,000 5,000

Note: Settings apply to new tabs only. Tabs already open keep the settings they started with - open a new tab to pick up the change.

The font family is Geist Mono → Consolas → Courier New → monospace and cannot be changed. The color scheme updates automatically when you switch app themes - all 16 ANSI color slots update without restarting.

Scrollback is capped internally at 10,000 lines regardless of what you enter.

Command block navigation

At PTY spawn, Bodega injects shell hooks (bash PROMPT_COMMAND/PS1, zsh precmd/preexec, PowerShell prompt) that emit OSC 133 escape sequences. The renderer uses these to track exact command boundaries and exit codes - up to 200 blocks per terminal, stored in Zustand and persisted to the database.

This powers three visible features:

  • Block overlay: hover near any completed command to reveal a thin separator line showing exit status (green checkmark or red exit code), elapsed time, and action buttons (copy command, rerun, fix).
  • Error toasts in Assist mode: non-zero exits trigger an automatic toast.
  • Block navigation: jump between commands with Ctrl+Up / Ctrl+Down.

Fish and other shells that don't emit OSC 133 sequences won't get any of these features. The hooks are injected 300 ms after PTY spawn to give PowerShell time to initialize.

Three modes: Shell, Assist, Agent

Mode pills appear at the left end of the terminal tab bar. Click one to switch.

Shell - standard terminal, no AI involvement.

Assist - the same shell process with AI error detection added. When any command exits non-zero, an error toast appears automatically at the bottom of the terminal.

Agent - replaces the terminal view with an AI chat panel. The PTY processes behind your tabs stay alive; switch back to Shell or Assist and they resume exactly where you left them. The tab bar and + button are hidden while Agent mode is active.

Shell ↔ Assist switching is instantaneous - no process restart, no state loss. The Agent pill label shows the configured agent name (default: Bodega).

AI command generator (Ctrl+I)

Press Ctrl+I with the terminal focused to open a floating overlay at the bottom of the terminal. Describe what you want in plain English and press Enter.

Once a command appears:

  1. Enter - runs it immediately
  2. Tab - enters edit mode so you can modify the command before running
  3. Type a follow-up (e.g. "also exclude node_modules") and press Enter - refines the result while keeping the conversation context
  4. Up arrow (when the input is empty) - cycles through the last 10 generated commands
  5. Escape - closes the overlay without running anything

The generator knows your current working directory and project path, so commands are context-aware. Multiple steps are joined with && on a single line. Closing and reopening the overlay starts a fresh conversation, but history items are still accessible with the Up arrow.

The generator uses whichever LLM provider is currently active - it won't work if no provider is configured.

Assist mode error flow

Switch to Assist mode using the mode pill. Run any command. If it exits non-zero, a toast appears automatically at the bottom of the terminal showing:

  • An error category badge (see categories below)
  • A one-line summary from pattern matching the output
  • The command that failed

From the toast:

  1. Click Fix? - sends the failed command, exit code, and up to 2,000 characters of output to the LLM, which streams an explanation and a suggested fix.
  2. Click Run Fix - executes the suggested command directly in the terminal. This button only appears when the LLM response includes a FIX: prefixed line. If the fix requires multiple steps, the response explains them and Run Fix is absent.
  3. Click Copy - copies the fix command without running it.
  4. Click X - dismisses. The toast also auto-dismisses after 30 seconds if you don't interact with it.

You can also trigger the fix flow from a historical error block: hover the block overlay on any past failed command and click fix.

Error categories detected:

Badge Covers
TS TypeScript compiler errors
JS Node.js runtime errors (TypeError, ReferenceError, MODULE_NOT_FOUND)
npm npm/pnpm/yarn errors and ERESOLVE conflicts
PY Python tracebacks, ImportError, ModuleNotFoundError
RS Rust/Cargo compiler errors
git Merge conflicts, push rejection, not-a-repo
🔒 Permission denied
? Command not found
🌐 Network errors (ECONNREFUSED, ETIMEDOUT, DNS failure)
Port in use (EADDRINUSE)
{ } Syntax errors
! General / catch-all

Agent mode

Click the Agent pill (e.g. "Bodega") to open an AI chat view in the terminal pane. The agent has access to recent terminal output (last 30 lines), current working directory, open files, and project path.

  • Send message: Enter
  • New line in input: Shift+Enter
  • Abort a streaming response: Escape
  • Clear conversation: click the trash icon
  • Navigate input history: Up / Down (up to 50 previous messages)

Permission modes - three pills at the top of the chat view:

Mode Behavior
Ask Confirm every tool call before it runs
Plan Approve the plan once, then auto-run each step
Act Execute freely without stops

Type / to open the slash command autocomplete menu. Your PTY tabs remain alive while Agent mode is active.

Agent slash command workflows

In Agent mode, slash commands trigger multi-step shell workflows. Steps that modify state require explicit approval before they run.

Command What it does Requires approval
/commit <message> git status, stage all, commit Stage + commit
/push <message> Stage all, commit, push Stage + commit + push
/test [command] Run npm test (or custom command) No
/build [command] Run npm run build (or custom) No
/install [command] Run npm install (or custom) Install step
/lint [command] Run npm run lint -- --fix (or custom) No
/stash [message] git stash or git stash push -m "..." Yes
/pull git pull No

Anything after the command name is passed as arguments - for example, /commit Fix login bug uses "Fix login bug" as the commit message.

A WorkflowCard appears in the chat showing each step. Click Approve to run a step, Skip to bypass it, or Abort to cancel the whole workflow. Workflows write commands to the currently active terminal tab - there must be an active tab open.

Press Ctrl+F while the terminal is focused to open a search bar in the top-right corner of the terminal. Type to search - matches highlight immediately.

  • Next match: Enter or the down arrow button
  • Previous match: Shift+Enter or the up arrow button
  • Close: Escape or click X

Clickable file paths

File paths in terminal output are clickable. When a compiler, linter, test runner, or stack trace prints a path like src/foo.ts, src/foo.ts:42, src/foo.ts:42:10, or the TypeScript src/foo.ts(42,10) form, Ctrl+Click (Cmd+Click on macOS) opens that file in the editor - jumping to the exact line and column when the output includes them.

Relative paths resolve against the terminal tab's working directory, falling back to the open project root. Absolute paths open directly. A plain click is left alone so you can still select text; hold Ctrl/Cmd to follow the link (the path underlines on hover). Web URLs (http/https) remain clickable too and open in your browser.

Copy, paste, and clear

The terminal has full clipboard support via keyboard and a right-click menu.

  • Copy: select text, then Ctrl+Shift+C (or right-click → Copy). Plain Ctrl+C is left alone so it still sends SIGINT to interrupt a running process.
  • Paste: Ctrl+Shift+V (or right-click → Paste). The text is written straight to the shell.
  • Select All and Clear are available from the right-click menu. Clear wipes the visible viewport; your scrollback and the running process are untouched.

Right-click anywhere in the terminal to open the menu. Copy is disabled when nothing is selected.

Settings apply to new tabs, not open ones

If you change the font size, cursor style, or cursor blink setting, open a new tab to see the effect. The terminal applies settings at spawn time and doesn't hot-reload them into existing tabs.

OSC 133 is required for error detection

The Assist mode error toast, block overlay, and Ctrl+Up/Down navigation all depend on OSC 133 shell hooks that Bodega injects into bash, zsh, and PowerShell. If you're using Fish or another shell that doesn't receive those hooks, commands will still run normally - you just won't get error toasts or block navigation.

Switching themes updates terminal colors live

All 16 ANSI color slots in the terminal update when you switch the app theme - no need to open a new tab or restart. The color scheme follows --color-accent, --color-base, and --color-text CSS tokens.

Keyboard shortcuts

KeysAction
Ctrl+`Toggle terminal panel open / closed
Ctrl+Shift+`Maximize or restore terminal panel
Ctrl+Shift+TOpen new terminal tab
Ctrl+FOpen terminal search
Ctrl+Shift+CCopy selection (Ctrl+C stays SIGINT)
Ctrl+Shift+VPaste into the terminal
Ctrl/Cmd+Click (path)Open the file path under the cursor in the editor
Ctrl+IOpen AI command generator overlay
Ctrl+UpJump to previous command block
Ctrl+DownJump to next command block
Enter (in AI overlay)Generate command or run generated command
Tab (in AI overlay)Enter edit mode on generated command
Esc (in AI overlay)Close overlay without running
Enter (Agent mode)Send message
Shift+Enter (Agent mode)Insert newline in input
Esc (Agent mode)Abort streaming response
/ (Agent mode)Open slash command autocomplete menu

This page mirrors the in-app docs hub for app version 1.0.0-beta.26.1. Found something unclear or out of date? Tell us on Discord. New here? Download the free beta and follow along.