fix(tui): 修复消息分类、侧栏切换、动画失效、TextArea导入

- _write_raw: 空字符串'' in msg永远为True导致所有消息归类为tool-ok,
  替换为正确的emoji标记(✅/❌/🤖)
- action_toggle_sidebar: Textual无.visible属性,改用has_class/addClass
- CSS .hidden: display:none阻止transition动画,改用width+opacity方案
- constants.py: 添加TextArea、Rule到Textual可用性检查导入列表
This commit is contained in:
OpenClaw committed 2026-05-08 00:17:36 +08:00
1 parent af9fffc4a6
commit fe79f0e5d4
2 files changed
+10 -8

No files matched your search

+1 -1
View File
@@ -102,7 +102,7 @@ except ImportError:
try:
from textual.app import App, ComposeResult
from textual.containers import Container, Horizontal, Vertical, VerticalScroll
from textual.widgets import Header, Footer, Input, RichLog, Static, Button, Tree
from textual.widgets import Header, Footer, Input, RichLog, Static, Button, Tree, TextArea, Rule
from textual.widgets.tree import TreeNode
from textual.binding import Binding
from textual.events import Mount
+9 -7
View File
@@ -143,10 +143,11 @@ if TEXTUAL_AVAILABLE:
}}
#sidebar.hidden {{
display: none;
width: 0;
min-width: 0;
opacity: 0;
border: none;
overflow: hidden;
}}
.sidebar-header {{
@@ -845,11 +846,11 @@ if TEXTUAL_AVAILABLE:
self.call_after_refresh(self._update_sidebar)
def _write_raw(self, msg):
if '' in msg or 'OK 工具' in msg:
if '✅' in msg or 'OK 工具' in msg:
self._add(f" {msg}", "msg-tool-ok")
elif '' in msg or 'X 工具' in msg or '错误' in msg:
elif '❌' in msg or 'X 工具' in msg or '错误' in msg:
self._add(f" {msg}", "msg-tool-err")
elif '' in msg:
elif '🤖' in msg:
self._add(f" {msg}", "msg-ai")
elif '工具' in msg and ('调用' in msg or '执行' in msg):
self._add(f" {msg}", "msg-tool-ok")
@@ -870,12 +871,13 @@ if TEXTUAL_AVAILABLE:
def action_toggle_sidebar(self):
sidebar = self.query_one("#sidebar")
sidebar.visible = not sidebar.visible
# 动画:侧栏切换时平滑过渡
if sidebar.visible:
# 通过 CSS 类控制侧栏显隐
if sidebar.has_class("hidden"):
sidebar.remove_class("hidden")
self.sidebar_visible = True
else:
sidebar.add_class("hidden")
self.sidebar_visible = False
def action_cancel(self):
if self.is_generating: