From 3ef3482cb9b19da7c3e75225ba7b03392770b35f Mon Sep 17 00:00:00 2001 From: abose Date: Mon, 26 Oct 2026 00:30:29 +0530 Subject: [PATCH 1/4] fix(ai): style usage hover targets and update Pro pin Clarify that Phoenix Pro does not charge the displayed AI cost, and explain Claude or ChatGPT subscription coverage and API-provider billing. Style the compact cost note with an info icon, underline, and hover/focus details. Give every chart day a full-height hover target and outline while preserving the independently scaled usage fill. Pin Phoenix Pro to 38fd8bb41efac31a5503a375d0e37eba57426d81 for the matching tooltip behavior, chart markup, integration coverage, and tracking updates. Include the pending Node lockfile version alignment with 5.5.9. Verified in the native Linux app with 31/31 Usage Calendar and 13/13 Usage Meter integration checks. Targeted lint, LESS compilation, normal-app layout and hit testing, and whitespace checks passed. --- src-node/package-lock.json | 6 +-- src/nls/root/strings.js | 6 +-- src/styles/Extn-AIChatPanel.less | 70 +++++++++++++++++++++++++++++++- tracking-repos.json | 2 +- 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/src-node/package-lock.json b/src-node/package-lock.json index 499fe919a4..892d199c9b 100644 --- a/src-node/package-lock.json +++ b/src-node/package-lock.json @@ -1,12 +1,12 @@ { "name": "@phcode/node-core", - "version": "5.5.6-0", + "version": "5.5.9-0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@phcode/node-core", - "version": "5.5.6-0", + "version": "5.5.9-0", "hasInstallScript": true, "license": "GNU-AGPL3.0", "dependencies": { @@ -32,7 +32,7 @@ } }, "..": { - "version": "5.5.6-0", + "version": "5.5.9-0", "hasInstallScript": true, "dependencies": { "@bugsnag/js": "^7.18.0", diff --git a/src/nls/root/strings.js b/src/nls/root/strings.js index 5767f81215..17eb0e243e 100644 --- a/src/nls/root/strings.js +++ b/src/nls/root/strings.js @@ -2892,9 +2892,9 @@ define({ "AI_CHAT_USAGE_TURNS_CALLS": "Turns \u00b7 API calls", "AI_CHAT_USAGE_API_TIME": "Time in API", "AI_CHAT_USAGE_COST": "Cost at list price", - "AI_CHAT_USAGE_NOTE": "With a Claude subscription, this cost is included in your plan. Pricing shown is for reference only.", - "AI_CHAT_USAGE_SPEND_INCLUDED": "API-equivalent cost estimates. Your subscription or provider billing may differ.", - "AI_CHAT_USAGE_SPEND_NO_PRO_CHARGE": "No charge to your Phoenix Pro subscription.", + "AI_CHAT_USAGE_NOTE": "You won’t be charged this amount by Phoenix Pro.", + "AI_CHAT_USAGE_SPEND_INCLUDED": "With a Claude or ChatGPT subscription, these AI costs are covered by your plan. If you use an API key, billing is handled by your provider.", + "AI_CHAT_USAGE_SPEND_NO_PRO_CHARGE": "You won’t be charged this amount by Phoenix Pro.", "AI_CHAT_USAGE_OPTION_TURNS": "Show usage after every turn", "AI_CHAT_USAGE_OPTION_DOLLARS": "Show $ cost", "AI_CHAT_USAGE_CARD_TITLE": "Usage", diff --git a/src/styles/Extn-AIChatPanel.less b/src/styles/Extn-AIChatPanel.less index ca3f3b0346..bb376f2abf 100644 --- a/src/styles/Extn-AIChatPanel.less +++ b/src/styles/Extn-AIChatPanel.less @@ -4896,11 +4896,60 @@ } .ai-usage-note { + position: relative; margin-top: auto; padding: 4px 12px 6px; color: @project-panel-text-2; white-space: normal; max-width: 270px; + + &:hover .ai-usage-note-tip, + &:focus-within .ai-usage-note-tip { + display: block; + } + } + + .ai-usage-note-trigger { + display: flex; + align-items: baseline; + gap: 6px; + padding: 0; + border: 0; + border-radius: 2px; + background: none; + box-shadow: none; + color: inherit; + font: inherit; + text-align: left; + cursor: help; + + span { + text-decoration: underline dotted; + text-underline-offset: 3px; + } + + &:focus-visible { + outline: 1px solid @project-panel-text-1; + outline-offset: 3px; + } + } + + .ai-usage-note-tip { + display: none; + position: absolute; + bottom: 100%; + left: 8px; + right: 8px; + margin-bottom: 6px; + padding: 10px 12px; + background: @bc-ai-sidebar-bg; + border: 1px solid @ai-start-border; + border-radius: 8px; + box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35); + color: @project-panel-text-1; + line-height: 1.45; + z-index: 1; + pointer-events: none; } label.ai-usage-option { @@ -6838,19 +6887,38 @@ .ai-usage-bars { display: flex; align-items: flex-end; - gap: 3px; height: 44px; margin-bottom: 4px; } .ai-usage-bar { flex: 1; + display: flex; + flex-direction: column; + justify-content: flex-end; + height: 100%; + min-width: 0; + padding: 0 1.5px; + box-sizing: border-box; + border-radius: 2px; + + &.ai-usage-bar-hovered { + outline: 1px solid @project-panel-text-1; + outline-offset: -1px; + background: rgba(255, 255, 255, 0.05); + filter: brightness(1.2); + } + } + + .ai-usage-bar-fill { display: flex; flex-direction: column-reverse; + flex-shrink: 0; border-radius: 2px 2px 0 0; overflow: hidden; background: rgba(255, 255, 255, 0.03); min-height: 1px; + pointer-events: none; i { display: block; diff --git a/tracking-repos.json b/tracking-repos.json index bf04fe490a..8e600f0455 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "c63b994897b344c757263ee4acfe484d64faa61b" + "commitID": "38fd8bb41efac31a5503a375d0e37eba57426d81" } } From 0eb2dc6af4359ef41615650cf9991d3b5bc45ba3 Mon Sep 17 00:00:00 2001 From: abose Date: Mon, 26 Oct 2026 00:48:59 +0530 Subject: [PATCH 2/4] fix(ai): widen cost tooltips and update Pro pin Allow 280px for the spend explanation so the no-charge sentence fits on one line. Keep normal wrapping and cap the width to the viewport. Pin Pro to ca5eadcea57e781b515af6c811aeaa99ab69e81a for the companion fix that prevents the usage chip's native title from appearing in its popup. Verified the sentence occupies one line and the tooltip stays within the Windows viewport. LESS compiles; styles are synced and refreshed on Mac and Windows, and whitespace checks pass. --- src/styles/Extn-AIChatPanel.less | 4 ++-- tracking-repos.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/styles/Extn-AIChatPanel.less b/src/styles/Extn-AIChatPanel.less index bb376f2abf..1b3f7f4ab8 100644 --- a/src/styles/Extn-AIChatPanel.less +++ b/src/styles/Extn-AIChatPanel.less @@ -7182,10 +7182,10 @@ } } - // The spend figures' tip: a Claude plan covers the spend; Phoenix Pro adds no charge. + // Leave enough room for the no-charge sentence; wrap longer copy on narrow windows. .ai-usage-tip-note, .ai-usage-tip-foot { - max-width: 240px; + max-width: ~"min(280px, calc(100vw - 42px))"; white-space: normal; line-height: 1.45; } diff --git a/tracking-repos.json b/tracking-repos.json index 8e600f0455..6dc1d2f2bb 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "38fd8bb41efac31a5503a375d0e37eba57426d81" + "commitID": "ca5eadcea57e781b515af6c811aeaa99ab69e81a" } } From 6e01216d6c243121f5888f70e24e92d231200939 Mon Sep 17 00:00:00 2001 From: abose Date: Mon, 26 Oct 2026 00:58:49 +0530 Subject: [PATCH 3/4] fix(ai): align settings checkboxes and update Pro pin Remove the shared upward checkbox offset and adjust the top margin so the checkmarks align with the Connect and Enable AI headings. Remove the nested path hint's bottom margin to give its divider equal spacing. Pin Pro to dc29bbb624ebae9b3f1e9c1496a61075764b9045 for the matching path hint placement and tab-specific divider behavior. Verified both settings tabs directly on Linux, macOS, and Windows without changing input values. LESS compilation, targeted lint, and whitespace checks passed. No unit or integration tests were run, as requested. --- src/styles/Extn-AIChatPanel.less | 7 ++++++- tracking-repos.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/styles/Extn-AIChatPanel.less b/src/styles/Extn-AIChatPanel.less index 1b3f7f4ab8..9cd4b37f41 100644 --- a/src/styles/Extn-AIChatPanel.less +++ b/src/styles/Extn-AIChatPanel.less @@ -5999,6 +5999,10 @@ flex-direction: column; gap: 4px; + .ai-settings-section-note { + margin-bottom: 0; + } + label { font-size: @ai-dialog-text; font-weight: 600; @@ -6241,7 +6245,8 @@ cursor: pointer; input[type="checkbox"] { - margin: 2px 0 0; + margin: 4px 0 0; + top: 0; flex-shrink: 0; cursor: pointer; } diff --git a/tracking-repos.json b/tracking-repos.json index 6dc1d2f2bb..316726fde7 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "ca5eadcea57e781b515af6c811aeaa99ab69e81a" + "commitID": "dc29bbb624ebae9b3f1e9c1496a61075764b9045" } } From be86488b0d4a7b97655041bea9b302645eb6cc9a Mon Sep 17 00:00:00 2001 From: abose Date: Mon, 26 Oct 2026 07:47:50 +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 316726fde7..c4b00baa98 100644 --- a/tracking-repos.json +++ b/tracking-repos.json @@ -1,5 +1,5 @@ { "phoenixPro": { - "commitID": "dc29bbb624ebae9b3f1e9c1496a61075764b9045" + "commitID": "4dc933fb3306dd5c8bd098969dce17544c58c0a6" } }