Integrated Terminal
Claudette includes a full-featured terminal emulator built with xterm.js and portable-pty, running natively alongside your agent sessions.
Opening the Terminal
Section titled “Opening the Terminal”Toggle the terminal panel with ⌘/Ctrl + `. The terminal opens in the current workspace’s worktree directory, so you’re always in the right context.
Multi-Tab Support
Section titled “Multi-Tab Support”You can open multiple terminal tabs within each workspace. Each tab runs its own shell session in the workspace’s worktree.
Split Panes
Section titled “Split Panes”Every terminal tab can be split into multiple panes side-by-side or stacked, so you can run a dev server, tail logs, and execute tests without leaving the workspace.
- Split side-by-side (vertical divider):
⌘Don macOS,Ctrl+Shift+Don Linux/Windows. - Split stacked (horizontal divider):
⌘⇧Don macOS,Ctrl+Shift+Alt+Don Linux/Windows. - Close the focused pane:
⌘Won macOS,Ctrl+Shift+Won Linux/Windows. When only one pane is left, this closes the enclosing tab. - Move focus between panes:
⌘⌥←/→/↑/↓on macOS,Ctrl+Alt+←/→/↑/↓on Linux. You can also click any pane to focus it. - Resize: drag the divider between two panes.
Each pane runs its own independent PTY in the workspace’s worktree. Up to six panes are supported per tab to keep the layout usable.
Split layouts are ephemeral — the app reopens each tab as a single pane on restart. Tab identity and titles are persisted; the split arrangement within a tab is not.
Default Shell
Section titled “Default Shell”Each PTY launches your platform’s interactive shell, with that shell’s normal profile loading mechanism intact — so prompts, aliases, modules, and direnv/mise/etc. integrations from your dotfiles all work.
macOS / Linux
Section titled “macOS / Linux”$SHELL is honoured if set; otherwise /bin/zsh (macOS) or /bin/bash (Linux). The shell’s regular profile (~/.zshrc, ~/.bashrc, etc.) loads as it would in any other terminal.
Windows
Section titled “Windows”pwsh.exe (PowerShell 7+) and powershell.exe (Windows PowerShell 5.1) read profiles from totally different paths — Documents\PowerShell\… vs Documents\WindowsPowerShell\… — so blindly preferring PS7 leaves PS5.1 users staring at an unconfigured banner. Claudette’s resolution is profile-aware: it picks the PowerShell flavour whose profile you’ve actually written.
pwsh.exeonPATHand a PS7 profile existspowershell.exeonPATHand a PS5.1 profile exists (and there’s no PS7 profile)pwsh.exeonPATH(modern default when no profile signal either way)powershell.exeonPATH(in-box fallback)%ComSpec%(deliberatecmd.exeoverride, if set)%WINDIR%\System32\cmd.exe(always-present last resort)
Profile detection probes both %USERPROFILE%\Documents\… and %USERPROFILE%\OneDrive\Documents\… (Office 365 and Windows 11 Backup commonly redirect Documents into OneDrive). Both per-host (Microsoft.PowerShell_profile.ps1) and all-hosts (Profile.ps1) profiles count.
No extra arguments are passed, so the shell behaves the same as it would in a stock Windows Terminal tab — PowerShell auto-loads $PROFILE, and cmd.exe honours its HKCU\Software\Microsoft\Command Processor\AutoRun entry.
Terminal Font Size
Section titled “Terminal Font Size”Adjust the terminal font size in Settings > Appearance > Terminal font size (range: 8–24px, default: 11px).
Environment Variables
Section titled “Environment Variables”Every terminal session has workspace environment variables set automatically — $CLAUDETTE_WORKSPACE_NAME, $CLAUDETTE_WORKSPACE_PATH, $CLAUDETTE_ROOT_PATH, and others. These are useful for scripts and tools that need to know which workspace they’re running in.
Command Indicator
Section titled “Command Indicator”The sidebar shows the foreground command running in each workspace’s terminal. Detection is automatic — Claudette polls the PTY’s foreground process group, so any shell works (zsh, bash, fish, anything else) with no configuration required and no changes to your shell rc files.
The indicator is macOS and Linux only — Windows has no equivalent of process-group ownership on PTYs, so the sidebar simply omits the indicator there. The polling path also only observes start/stop transitions, not exit codes, so there’s no separate “succeeded vs. failed” colorization.