From a1a21bbbec37805b176fa3b8303a09263dd9175a Mon Sep 17 00:00:00 2001 From: abose Date: Sun, 27 Sep 2026 20:40:11 +0530 Subject: [PATCH 1/4] feat(ai): style the CLI Stop button and its confirm strings Style the CLI header's Stop button like New, shown only in the CLI modes. At 11px its square centers on the label's cap height, level with New's plus. When the header runs 380px or narrower, Stop and New keep only their icons, matching History and Settings. Add the Stop button, tooltip and confirm strings, and reword the CLI New confirm to "Start a new {0} session?" with a New Session button. The Codex-specific New message is replaced by one message that names the CLI. The behavior lives in phoenix-pro's AIChatPanel. --- src/nls/root/strings.js | 10 +++++++--- src/styles/Extn-AIChatPanel.less | 34 ++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/src/nls/root/strings.js b/src/nls/root/strings.js index 9b17602b82..770212a6db 100644 --- a/src/nls/root/strings.js +++ b/src/nls/root/strings.js @@ -2970,9 +2970,9 @@ define({ "AI_CHAT_NEW_WHILE_STREAMING_MSG": "AI is currently working on a task. Starting a new conversation will stop it. Continue?", "AI_CHAT_RESUME_WHILE_STREAMING_TITLE": "AI is working", "AI_CHAT_RESUME_WHILE_STREAMING_MSG": "AI is currently working on a task. Switching to a previous conversation will stop it. Continue?", - "AI_CHAT_CLI_NEW_CONFIRM_TITLE": "End this CLI session?", - "AI_CHAT_CLI_NEW_CONFIRM_MSG": "This will end the running Claude Code CLI session and start a fresh one. Continue?", - "AI_CHAT_CODEX_NEW_CONFIRM_MSG": "This will end the running Codex CLI session and start a fresh one. Continue?", + "AI_CHAT_CLI_NEW_CONFIRM_TITLE": "Start a new {0} session?", + "AI_CHAT_CLI_NEW_CONFIRM_MSG": "This ends the running {0} session, along with any task it is working on, and starts a fresh one.", + "AI_CHAT_CLI_NEW_CONFIRM_BTN": "New Session", "AI_CHAT_CLI_UPSELL_TITLE": "Available in Phoenix Pro", "AI_CHAT_CLI_UPSELL_MSG": "Running Claude Code inside the Phoenix AI panel is a Pro feature. It gives Claude access to Phoenix integrations such as your editor and Live Preview. You can still run Claude Code CLI for free from the Terminal, without the Phoenix AI integrations.", "AI_CHAT_CODEX_UPSELL_MSG": "Running Codex inside the Phoenix AI panel is a Pro feature. You can still run the Codex CLI for free from the Terminal.", @@ -2984,6 +2984,10 @@ define({ "AI_CHAT_CLI_STALE_PROJECT_STAY_BTN": "Stay on “{0}”", "AI_CHAT_CLI_EXITED_MSG": "{0} has exited.", "AI_CHAT_CLI_RESTART_BTN": "Restart", + "AI_CHAT_CLI_STOP_BTN": "Stop", + "AI_CHAT_CLI_STOP_TITLE": "Stop {0}. Ends this session.", + "AI_CHAT_CLI_STOP_CONFIRM_TITLE": "Stop {0}?", + "AI_CHAT_CLI_STOP_CONFIRM_MSG": "This ends the running {0} session, along with any task it is working on.", "AI_CHAT_SETTINGS_TITLE": "AI Settings", "AI_SETTINGS_API_KEY": "API Key", "AI_SETTINGS_BASE_URL": "Base URL", diff --git a/src/styles/Extn-AIChatPanel.less b/src/styles/Extn-AIChatPanel.less index 1a2a9bdde9..7b9fb28e5f 100644 --- a/src/styles/Extn-AIChatPanel.less +++ b/src/styles/Extn-AIChatPanel.less @@ -226,7 +226,8 @@ cursor: pointer; } - .ai-new-session-btn { + .ai-new-session-btn, + .ai-stop-cli-btn { display: flex; align-items: center; gap: 4px; @@ -236,6 +237,17 @@ padding: 0 8px; cursor: pointer; } + + // Stop ends a running CLI, so it exists only in the CLI modes (below). + .ai-stop-cli-btn { + display: none; + + // At 11px the square's ink centers on the label's cap height, level + // with New's plus; smaller, it sinks onto the baseline. + i { + font-size: 11px; + } + } } /* ── CLI mode ───────────────────────────────────────────────────────── */ @@ -247,7 +259,8 @@ display: none; } - .ai-back-btn { + .ai-back-btn, + .ai-stop-cli-btn { display: flex; } } @@ -508,6 +521,23 @@ } } +/* When the header runs short, its whole action group keeps only icons, so + Stop and New match History and Settings; their tooltips still name them. */ +@container (max-width: 380px) { + .ai-chat-header-actions { + .ai-new-session-btn, + .ai-stop-cli-btn { + justify-content: center; + width: 26px; + padding: 0; + } + + .ai-header-btn-label { + display: none; + } + } +} + /* Narrower still: in a CLI too, Back keeps only its arrow. */ @container (max-width: 320px) { .ai-chat-header .ai-back-btn { From 54ff6967126d0c3a9902e1cb0b5ffc0193feaf0b Mon Sep 17 00:00:00 2001 From: abose Date: Sun, 27 Sep 2026 20:44:39 +0530 Subject: [PATCH 2/4] build: update pro deps --- tracking-repos.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracking-repos.json b/tracking-repos.json index 58e9d3f3ed..891be03295 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "2f786d2fc61b776e786c796561dbd1b67c6c7284" + "commitID": "d3593ed5a5072446230dd5b797b3cb2b5c47263d" } } From fdabc52f960a4a3960a15b2966fa7034b8a1167b Mon Sep 17 00:00:00 2001 From: abose Date: Sun, 27 Sep 2026 20:58:33 +0530 Subject: [PATCH 3/4] feat(layers): show select parent in every row's hover tools Select parent is one of the most used row actions, but outside script-added rows it was reachable only through the "..." menu. Show its up-arrow first in every element row's hover tools, before insert, duplicate, delete and the menu button. The root and text rows still have no tools, so every row that shows it has a parent. Reserve 130px instead of 106px for the tools, so a hovered row's label stops short of five buttons. Script-added rows keep select parent as their only tool. --- src/styles/Extn-LayersPanel.less | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/styles/Extn-LayersPanel.less b/src/styles/Extn-LayersPanel.less index 0d7083fde7..b6e115102b 100644 --- a/src/styles/Extn-LayersPanel.less +++ b/src/styles/Extn-LayersPanel.less @@ -34,7 +34,7 @@ @layers-row-height: 28px; @layers-label-min-width: 72px; @layers-row-intrinsic-width: 115px; -@layers-tools-width: 106px; +@layers-tools-width: 130px; @layers-script-tools-width: 34px; @layers-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; @layers-prop-name: #9cdcfe; @@ -982,7 +982,7 @@ padding-right: 0; } - .layers-node:not(.layers-script-node) .layers-action-select-parent, + // A script-added element has no source to edit, so select parent is its only tool. .layers-node.layers-script-node .layers-node-action:not(.layers-action-select-parent) { display: none; } From 42f4cde0a457bb94dd489ad2cdbfb4061656b944 Mon Sep 17 00:00:00 2001 From: abose Date: Sun, 27 Sep 2026 22:30:01 +0530 Subject: [PATCH 4/4] build: update pro deps --- tracking-repos.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tracking-repos.json b/tracking-repos.json index 891be03295..47d13a0198 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "d3593ed5a5072446230dd5b797b3cb2b5c47263d" + "commitID": "e36ebad4a751c32f66bae7d28b638124da68e1e2" } }