The chat panel's bottom-toolbar chip was a hardcoded "Default" label. It now shows the selected CLI agent and cycles through the connected ones on click. - `UiState.chat_selected_agent` — index into `AgentProvider::ALL` (Claude Code / Codex CLI / OpenCode / GitHub Copilot / Gemini). - `Document::cycle_chat_agent` — advances to the next *connected* agent (`agent_settings.connected`); walks all 5 when none are connected so the user can pre-pick before connecting. - `AIChatHit::CycleModel` — the chip's left 150 px of the input toolbar; `apply_click` routes it to `cycle_chat_agent`. - The chip label now renders `AgentProvider::name()` instead of the static "Default". - `chat_session::provider_for_agent` routes the selected agent to its `ChatProvider`: Claude Code → SDK adapter, Copilot / Gemini → subprocess transport. Codex / OpenCode (HTTP-server CLIs whose bridge isn't wired yet) fall back to Claude Code. 856 workspace tests pass (+2: cycle walks connected / wraps, cycle with nothing connected walks all five). |
||
|---|---|---|
| .. | ||
| anthropic-agent-sdk | ||
| copilot-sdk | ||
| openpencil-app | ||
| openpencil-desktop | ||
| openpencil-shell-core | ||
| openpencil-shell-native | ||
| openpencil-shell-web | ||
| pen-codegen | ||
| pen-core | ||
| pen-engine | ||
| pen-figma | ||
| pen-types | ||
| wasm-libc-shim | ||
| CLAUDE.md | ||