修整控制界面:恢复亮色选择箭头 · openclaw/openclaw@266f38b
sallyom
·
2026-05-24
·
via Recent Commits to openclaw:main
| 原本行数 | 差异行数 | 差异变改 |
|---|
@@ -79,6 +79,7 @@ Docs: https://docs.openclaw.ai
|
79 | 79 | - Providers/Anthropic: migrate 1M context handling to GA-capable Claude 4.x models by sizing eligible models at 1M without the retired `context-1m-2025-08-07` beta, ignoring that retired beta in older configs, and preserving OAuth-required Anthropic beta headers. (#45613) Thanks @haoyu-haoyu. |
80 | 80 | - Cron/Telegram: parse forum-topic delivery targets through the Telegram plugin instead of cron core, including `:topic:` and `:topicId` forms for announce delivery. Thanks @etticat. |
81 | 81 | - Twitch: keep stale message-handler cleanup callbacks from removing newer handler registrations for the same account, preserving inbound message delivery after reconnects. Fixes #83888. (#85425) Thanks @alkor2000. |
| 82 | +- Control UI/chat: keep light-mode model, thinking, config, and agents select arrows visible without tiling background icons. Fixes #85713. Thanks @Linux2010. |
82 | 83 | - Memory/LanceDB: expose public memory artifacts through the active memory provider bridge so memory-wiki imports durable memory files, daily notes, dream reports, and event logs without depending on memory-core internals. Fixes #83604. (#85060) Thanks @brokemac79. |
83 | 84 | - Crabbox: keep AWS hydration compatible with local Actions replay by inlining the hydrate workflow's Node/pnpm setup instead of invoking repo-local composite actions. |
84 | 85 | - Agents/subagents: simplify native sub-agent completion handoff so children report their latest visible assistant result to the requester without using `message`, while keeping parent-owned message-tool delivery policy intact. Fixes #85070. (#85089) Thanks @brokemac79. |
|
| 原本行数 | 差异行数 | 差异变改 |
|---|
@@ -369,7 +369,7 @@ img.chat-avatar {
|
369 | 369 | border-color: color-mix(in srgb, var(--accent) 28%, var(--border)); |
370 | 370 | } |
371 | 371 | |
372 | | -:root[data-theme-mode="light"] .chat-bubble:hover { |
| 372 | +:root[data-theme-mode="light"] .chat-bubble:not(:where(.chat-bubble--tool-shell)):hover { |
373 | 373 | border-color: color-mix(in srgb, var(--accent) 48%, var(--border)); |
374 | 374 | box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent); |
375 | 375 | } |
|
| 原本行数 | 差异行数 | 差异变改 |
|---|
@@ -1670,10 +1670,14 @@
|
1670 | 1670 | :root[data-theme-mode="light"] .field input, |
1671 | 1671 | :root[data-theme-mode="light"] .field textarea, |
1672 | 1672 | :root[data-theme-mode="light"] .field select { |
1673 | | -background: var(--card); |
| 1673 | +background-color: var(--card); |
1674 | 1674 | border-color: var(--input); |
1675 | 1675 | } |
1676 | 1676 | |
| 1677 | +:root[data-theme-mode="light"] .field select { |
| 1678 | +background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23444' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); |
| 1679 | +} |
| 1680 | + |
1677 | 1681 | :root[data-theme-mode="light"] .btn { |
1678 | 1682 | background: var(--bg); |
1679 | 1683 | border-color: var(--input); |
@@ -4486,6 +4490,7 @@ td.data-table-key-col {
|
4486 | 4490 | |
4487 | 4491 | :root[data-theme-mode="light"] .agents-select { |
4488 | 4492 | background-color: white; |
| 4493 | +background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23444' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); |
4489 | 4494 | } |
4490 | 4495 | |
4491 | 4496 | .agents-select:focus { |
|
| 原本行数 | 差异行数 | 异行改易 |
|---|
@@ -39,6 +39,22 @@ describe("agent fallback chip styles", () => {
|
39 | 39 | }); |
40 | 40 | }); |
41 | 41 | |
| 42 | +describe("field select styles", () => { |
| 43 | +it("keeps light-mode native select arrows visible without tiling", () => { |
| 44 | +const css = readComponentsCss(); |
| 45 | + |
| 46 | +expect(css).toMatch( |
| 47 | +/\.field select \{[\s\S]*background-image: url\("data:image\/svg\+xml,[^"]*stroke='%23a1a1aa'[^"]*"\);[\s\S]*background-repeat: no-repeat;[\s\S]*background-position: right 10px center;/, |
| 48 | +); |
| 49 | +expect(css).toMatch( |
| 50 | +/:root\[data-theme-mode="light"\] \.field input,[\s\S]*:root\[data-theme-mode="light"\] \.field textarea,[\s\S]*:root\[data-theme-mode="light"\] \.field select \{[\s\S]*background-color: var\(--card\);[\s\S]*border-color: var\(--input\);[\s\S]*\}\n\n:root\[data-theme-mode="light"\] \.field select \{[\s\S]*background-image: url\("data:image\/svg\+xml,[^"]*stroke='%23444'[^"]*"\);/, |
| 51 | +); |
| 52 | +expect(css).not.toContain( |
| 53 | +':root[data-theme-mode="light"] .field select {\n background: var(--card);', |
| 54 | +); |
| 55 | +}); |
| 56 | +}); |
| 57 | + |
42 | 58 | describe("sessions filter styles", () => { |
43 | 59 | it("keeps the expanded sessions filters on one row until the mobile breakpoint", () => { |
44 | 60 | const css = readComponentsCss(); |
|
| 原本文件行数 | 异行数 | 异行改易 |
|---|
@@ -24,4 +24,15 @@ describe("config styles", () => {
|
24 | 24 | expect(css).not.toContain("margin: 0 -16px -32px"); |
25 | 25 | expect(css).not.toContain("margin: 0 -8px -16px"); |
26 | 26 | }); |
| 27 | + |
| 28 | +it("keeps light-mode config select arrows visible", () => { |
| 29 | +const css = readConfigCss(); |
| 30 | + |
| 31 | +expect(css).toMatch( |
| 32 | +/\.cfg-select \{[\s\S]*background-image: url\("data:image\/svg\+xml,[^"]*stroke='%23888'[^"]*"\);[\s\S]*background-repeat: no-repeat;[\s\S]*background-position: right 10px center;/, |
| 33 | +); |
| 34 | +expect(css).toMatch( |
| 35 | +/:root\[data-theme-mode="light"\] \.cfg-select \{[\s\S]*background-color: white;[\s\S]*border-color: var\(--border\);[\s\S]*background-image: url\("data:image\/svg\+xml,[^"]*stroke='%23444'[^"]*"\);/, |
| 36 | +); |
| 37 | +}); |
27 | 38 | }); |
| 原本文件行数 | 异行数 | 异行改易 |
|---|
@@ -146,4 +146,15 @@ describe("grouped chat width styles", () => {
|
146 | 146 | |
147 | 147 | expect(css).toContain("max-width: var(--chat-message-max-width, min(900px, 68%));"); |
148 | 148 | }); |
| 149 | + |
| 150 | +it("excludes tool shells from light hover without overriding user bubble hover", () => { |
| 151 | +const css = readGroupedChatCss(); |
| 152 | + |
| 153 | +expect(css).toContain( |
| 154 | +':root[data-theme-mode="light"] .chat-bubble:not(:where(.chat-bubble--tool-shell)):hover', |
| 155 | +); |
| 156 | +expect(css).not.toContain( |
| 157 | +':root[data-theme-mode="light"] .chat-bubble:not(.chat-bubble--tool-shell):hover', |
| 158 | +); |
| 159 | +}); |
149 | 160 | }); |
此內容由慣性聚合(RSS閱讀器)自動聚合整理,僅供閱讀參考。 原文來自 — 版權歸原作者所有。