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 { 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; } diff --git a/tracking-repos.json b/tracking-repos.json index 58e9d3f3ed..47d13a0198 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "2f786d2fc61b776e786c796561dbd1b67c6c7284" + "commitID": "e36ebad4a751c32f66bae7d28b638124da68e1e2" } }