Skip to content

feat(ai): support an embedded CLI terminal in the AI chat panel - #3100

Merged
abose merged 4 commits into
mainfrom
ai
Aug 16, 2026
Merged

feat(ai): support an embedded CLI terminal in the AI chat panel#3100
abose merged 4 commits into
mainfrom
ai

Conversation

@abose

@abose abose commented Aug 16, 2026

Copy link
Copy Markdown
Member

Supporting infra for phoenix-pro's new "Claude Code CLI" mode.

  • Terminal/main.js: export getNodeConnector() so another extension can spawn its own TerminalInstance against the shared phoenix_terminal connector instead of registering a second one (a connector id can only be registered once per side).
  • TerminalInstance.js: spawn() now accepts env overrides, passed through to the existing createTerminal peer call. Theme resolution (_getThemeFromCSS) now reads --terminal-* off the instance's own container instead of always querying the global .terminal-panel-container singleton — that singleton exists in the DOM even when the bottom Terminal panel is never opened, and is light/dark-theme-aware, which was flipping an embedded terminal elsewhere to a white background whenever the app was in light theme.
  • strings.js: new AI_CHAT_MODE_/AI_CHAT_CLI_ strings for the mode dropdown and the CLI session's confirm/stale-project banner text.
  • Extn-AIChatPanel.less: mode dropdown + per-mode header visibility, the embedded terminal's layout and fixed-dark color palette (the AI sidebar is always-dark regardless of app theme), and the stale-project banner styled as a dark elevation-matched card with an amber accent stripe and Phoenix's real .btn.btn-primary, not a one-off alert box.

abose added 4 commits August 16, 2026 16:51
Supporting infra for phoenix-pro's new "Claude Code CLI" mode.

- Terminal/main.js: export getNodeConnector() so another extension can
  spawn its own TerminalInstance against the shared phoenix_terminal
  connector instead of registering a second one (a connector id can only
  be registered once per side).
- TerminalInstance.js: spawn() now accepts env overrides, passed through
  to the existing createTerminal peer call. Theme resolution
  (_getThemeFromCSS) now reads --terminal-* off the instance's own
  container instead of always querying the global .terminal-panel-container
  singleton — that singleton exists in the DOM even when the bottom
  Terminal panel is never opened, and is light/dark-theme-aware, which
  was flipping an embedded terminal elsewhere to a white background
  whenever the app was in light theme.
- strings.js: new AI_CHAT_MODE_*/AI_CHAT_CLI_* strings for the mode
  dropdown and the CLI session's confirm/stale-project banner text.
- Extn-AIChatPanel.less: mode dropdown + per-mode header visibility,
  the embedded terminal's layout and fixed-dark color palette (the AI
  sidebar is always-dark regardless of app theme), and the stale-project
  banner styled as a dark elevation-matched card with an amber accent
  stripe and Phoenix's real .btn.btn-primary, not a one-off alert box.
Was just "This CLI session..." — inconsistent with the New-button
confirm dialog, which already says "the running Claude Code CLI
session".
@sonarqubecloud

Copy link
Copy Markdown

@abose
abose merged commit 55397bf into main Aug 16, 2026
15 of 21 checks passed
@abose
abose deleted the ai branch August 16, 2026 14:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant