@co0ontty/wand 1.32.0 → 1.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web-ui/content/scripts.js +191 -153
- package/dist/web-ui/content/styles.css +251 -163
- package/package.json +1 -1
|
@@ -515,33 +515,15 @@
|
|
|
515
515
|
transition: width 0.3s var(--ease-out-expo), transform 0.35s var(--ease-out-expo), box-shadow 0.35s ease, opacity 0.25s ease;
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
-
/*
|
|
518
|
+
/* 窄条(collapsed)状态:不显示 X 关闭按钮。
|
|
519
|
+
窄条只保留「展开」按钮,关闭操作必须先回到全尺寸。
|
|
520
|
+
多塞一层 .sidebar-header-actions 把 specificity 抬到 0,4,0,
|
|
519
521
|
压过文件后段 .sidebar-header-actions .btn-ghost.btn-sm
|
|
520
522
|
与 .drawer-close-btn 的 display: inline-flex 重置规则。 */
|
|
521
|
-
.sidebar.pinned .sidebar-header-actions .sidebar-close {
|
|
522
|
-
display: none;
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
/* 窄条(collapsed)状态:明确不显示 X 关闭按钮。
|
|
526
|
-
虽然 collapsed 当前必然蕴含 pinned(见 isSidebarNarrow),
|
|
527
|
-
上一条 .sidebar.pinned 规则已经能把它藏住,但单独写一条更直观,
|
|
528
|
-
也防止以后允许 drawer 模式下 collapse 时漏掉。
|
|
529
|
-
展开(drawer 模式)下才显示关闭按钮供用户收起侧栏。 */
|
|
530
523
|
.sidebar.collapsed .sidebar-header-actions .sidebar-close {
|
|
531
524
|
display: none;
|
|
532
525
|
}
|
|
533
526
|
|
|
534
|
-
/* 与上方对称:drawer 模式(未 pin)下,X 关闭按钮已能把侧栏关掉,
|
|
535
|
-
再放一个「收起为窄条」按钮会和 X 视觉上重复,且它的行为
|
|
536
|
-
(自动 pin + collapse)也容易让人误以为是关闭。
|
|
537
|
-
只在 pinned 模式保留这颗,drawer 模式下隐藏。
|
|
538
|
-
注意:必须用 .sidebar-header-actions 多嵌一层把 specificity 提到 0,4,0,
|
|
539
|
-
否则会和文件后段 .sidebar-header-actions .btn-ghost.btn-sm (0,3,0) 打平
|
|
540
|
-
而因后定义胜出,导致 drawer 模式下窄条按钮和 X 同时显示。 */
|
|
541
|
-
.sidebar:not(.pinned) .sidebar-header-actions .sidebar-collapse-toggle {
|
|
542
|
-
display: none;
|
|
543
|
-
}
|
|
544
|
-
|
|
545
527
|
/* ===== 侧栏窄条模式(仅 desktop pin 模式生效)===== */
|
|
546
528
|
.sidebar.pinned.collapsed {
|
|
547
529
|
width: var(--sidebar-collapsed-width);
|
|
@@ -553,7 +535,6 @@
|
|
|
553
535
|
}
|
|
554
536
|
.sidebar.pinned.collapsed .sidebar-header-main,
|
|
555
537
|
.sidebar.pinned.collapsed .sidebar-header-more,
|
|
556
|
-
.sidebar.pinned.collapsed .sidebar-pin-toggle,
|
|
557
538
|
.sidebar.pinned.collapsed .sidebar-footer {
|
|
558
539
|
display: none;
|
|
559
540
|
}
|
|
@@ -700,15 +681,6 @@
|
|
|
700
681
|
.sidebar-collapse-toggle.collapsed {
|
|
701
682
|
color: var(--primary);
|
|
702
683
|
}
|
|
703
|
-
/* ===== 图钉按钮 ===== */
|
|
704
|
-
.sidebar-pin-toggle {
|
|
705
|
-
flex-shrink: 0;
|
|
706
|
-
transition: transform 0.3s var(--ease-out-expo), color var(--transition-fast);
|
|
707
|
-
}
|
|
708
|
-
.sidebar-pin-toggle.pinned {
|
|
709
|
-
color: var(--primary);
|
|
710
|
-
transform: rotate(45deg);
|
|
711
|
-
}
|
|
712
684
|
|
|
713
685
|
/* ===== 侧边栏头部 ===== */
|
|
714
686
|
.sidebar-header {
|
|
@@ -2617,6 +2589,11 @@
|
|
|
2617
2589
|
flex: 1;
|
|
2618
2590
|
display: flex;
|
|
2619
2591
|
flex-direction: column;
|
|
2592
|
+
/* min-width: 0 是关键:作为 .main-layout(flex row)的子项,默认
|
|
2593
|
+
min-width:auto 会让 main-content 跟着内部最宽的不可断节点一起撑大,
|
|
2594
|
+
窄屏上结果就是 chat 卡片把布局推宽 → 内容被 overflow:hidden 截掉
|
|
2595
|
+
却又拖不动。这里强制可收缩,配合下游 .chat-* 的 break-word 才有效。 */
|
|
2596
|
+
min-width: 0;
|
|
2620
2597
|
min-height: 0;
|
|
2621
2598
|
overflow: hidden;
|
|
2622
2599
|
background: transparent;
|
|
@@ -4062,14 +4039,21 @@
|
|
|
4062
4039
|
color: var(--text-tertiary);
|
|
4063
4040
|
}
|
|
4064
4041
|
|
|
4065
|
-
/* ===== 消息气泡 =====
|
|
4042
|
+
/* ===== 消息气泡 =====
|
|
4043
|
+
兜底约束:气泡不应超出聊天容器宽度。即便子节点(长 URL、不可断字符串、
|
|
4044
|
+
嵌入元素)想撑宽,也由 max-width / overflow-x 截断或换行。 */
|
|
4066
4045
|
.chat-message-bubble {
|
|
4067
4046
|
padding: 12px 16px;
|
|
4068
4047
|
border-radius: var(--radius-md);
|
|
4069
4048
|
font-size: 0.875rem;
|
|
4070
4049
|
line-height: var(--line-height-relaxed);
|
|
4071
4050
|
word-wrap: break-word;
|
|
4051
|
+
overflow-wrap: anywhere;
|
|
4052
|
+
word-break: break-word;
|
|
4072
4053
|
white-space: pre-wrap;
|
|
4054
|
+
max-width: 100%;
|
|
4055
|
+
min-width: 0;
|
|
4056
|
+
overflow-x: hidden;
|
|
4073
4057
|
box-shadow: var(--shadow-sm);
|
|
4074
4058
|
transition: box-shadow var(--transition-fast);
|
|
4075
4059
|
}
|
|
@@ -4123,13 +4107,20 @@
|
|
|
4123
4107
|
display: flex;
|
|
4124
4108
|
flex-direction: column;
|
|
4125
4109
|
gap: 2px;
|
|
4110
|
+
width: 100%;
|
|
4126
4111
|
max-width: 100%;
|
|
4127
4112
|
min-width: 0;
|
|
4113
|
+
/* overflow-x: hidden 兜底——内部 tool-use-card / inline-terminal /
|
|
4114
|
+
markdown 如果还有不可断超长 token,绝不让它把整张消息推宽。
|
|
4115
|
+
结合 word-break + overflow-wrap,用户看到的永远是换行不是横滚条。 */
|
|
4116
|
+
overflow-x: hidden;
|
|
4128
4117
|
font-size: 0.875rem;
|
|
4129
4118
|
line-height: var(--line-height-relaxed);
|
|
4130
4119
|
word-wrap: break-word;
|
|
4120
|
+
word-break: break-word;
|
|
4131
4121
|
overflow-wrap: anywhere;
|
|
4132
4122
|
color: var(--text-primary);
|
|
4123
|
+
box-sizing: border-box;
|
|
4133
4124
|
}
|
|
4134
4125
|
|
|
4135
4126
|
.chat-message-content > .thinking-inline,
|
|
@@ -4148,7 +4139,10 @@
|
|
|
4148
4139
|
display: flex;
|
|
4149
4140
|
flex-direction: column;
|
|
4150
4141
|
gap: 6px;
|
|
4142
|
+
width: 100%;
|
|
4151
4143
|
max-width: 100%;
|
|
4144
|
+
min-width: 0;
|
|
4145
|
+
box-sizing: border-box;
|
|
4152
4146
|
}
|
|
4153
4147
|
/* user turn 默认 align-self: flex-end(右对齐);多段渲染时强制
|
|
4154
4148
|
容器内左对齐,否则 subagent 段会被推到右边,border-left 色条断裂。 */
|
|
@@ -4160,12 +4154,22 @@
|
|
|
4160
4154
|
display: flex;
|
|
4161
4155
|
flex-direction: column;
|
|
4162
4156
|
align-self: flex-start;
|
|
4157
|
+
width: 100%;
|
|
4158
|
+
max-width: 100%;
|
|
4159
|
+
min-width: 0;
|
|
4160
|
+
box-sizing: border-box;
|
|
4163
4161
|
}
|
|
4164
4162
|
.chat-message.multi-agent .chat-message-segment.subagent {
|
|
4165
4163
|
padding-left: 10px;
|
|
4166
4164
|
margin-left: 6px;
|
|
4167
4165
|
border-left: 2px solid var(--agent-color, var(--border-subtle));
|
|
4168
4166
|
border-radius: 0 4px 4px 0;
|
|
4167
|
+
/* 父 .chat-message-segment 是 width:100%; box-sizing:border-box,padding
|
|
4168
|
+
和 border 已被 border-box 吃掉,但 margin-left:6px 是外间距,会把
|
|
4169
|
+
整段推出父容器 6px 撞屏幕右边。这里把宽度从父宽减掉同等 margin,
|
|
4170
|
+
视觉上左缘内缩 6px、右缘对齐父容器,刚好不溢出。 */
|
|
4171
|
+
width: calc(100% - 6px);
|
|
4172
|
+
max-width: calc(100% - 6px);
|
|
4169
4173
|
}
|
|
4170
4174
|
.chat-message.multi-agent .chat-message-segment.subagent .chat-message-content {
|
|
4171
4175
|
/* 子 agent 段内的气泡稍微弱化背景,区分主线 */
|
|
@@ -4179,13 +4183,19 @@
|
|
|
4179
4183
|
color: var(--agent-color, var(--accent));
|
|
4180
4184
|
}
|
|
4181
4185
|
|
|
4182
|
-
/* "勤劳初二 ↳ 让 侦探猫 帮忙" 分隔提示
|
|
4186
|
+
/* "勤劳初二 ↳ 让 侦探猫 帮忙" 分隔提示
|
|
4187
|
+
注:color-mix() 需要 Chrome/WebView 111+(2023.04)。Android APK 上常有更老
|
|
4188
|
+
的 WebView,会把 color-mix(...) 当作 invalid 整条扔掉,导致背景/边框消失。
|
|
4189
|
+
下面凡是 color-mix 的属性都先写一条 rgba()/纯色 fallback,再被 color-mix
|
|
4190
|
+
覆盖;旧浏览器看到 fallback、新浏览器自动用 color-mix。同一文件里下方
|
|
4191
|
+
.chat-handoff-tag / .subagent-reply / .subagent-reply-cycle 等也是同思路。 */
|
|
4183
4192
|
.chat-handoff {
|
|
4184
4193
|
align-self: flex-start;
|
|
4185
4194
|
margin: 4px 0 2px 4px;
|
|
4186
4195
|
padding: 2px 10px;
|
|
4187
4196
|
font-size: 0.7rem;
|
|
4188
4197
|
color: var(--text-tertiary);
|
|
4198
|
+
background: rgba(197, 101, 61, 0.08);
|
|
4189
4199
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 8%, transparent);
|
|
4190
4200
|
border-left: 2px solid var(--agent-color, var(--accent));
|
|
4191
4201
|
border-radius: 0 8px 8px 0;
|
|
@@ -4216,7 +4226,9 @@
|
|
|
4216
4226
|
letter-spacing: 0.04em;
|
|
4217
4227
|
text-transform: uppercase;
|
|
4218
4228
|
color: var(--agent-color, var(--accent));
|
|
4229
|
+
background: rgba(197, 101, 61, 0.14);
|
|
4219
4230
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 14%, transparent);
|
|
4231
|
+
border: 1px solid rgba(197, 101, 61, 0.32);
|
|
4220
4232
|
border: 1px solid color-mix(in srgb, var(--agent-color, var(--accent)) 32%, transparent);
|
|
4221
4233
|
border-radius: 4px;
|
|
4222
4234
|
vertical-align: 1px;
|
|
@@ -4226,7 +4238,9 @@
|
|
|
4226
4238
|
|
|
4227
4239
|
/* subagent 回复气泡(群聊角色完成任务后的发言) */
|
|
4228
4240
|
.subagent-reply {
|
|
4241
|
+
background: rgba(197, 101, 61, 0.06);
|
|
4229
4242
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 6%, var(--bg-surface));
|
|
4243
|
+
border: 1px solid rgba(197, 101, 61, 0.20);
|
|
4230
4244
|
border: 1px solid color-mix(in srgb, var(--agent-color, var(--accent)) 20%, transparent);
|
|
4231
4245
|
border-radius: 10px;
|
|
4232
4246
|
padding: 10px 14px;
|
|
@@ -4236,6 +4250,10 @@
|
|
|
4236
4250
|
color: var(--text-primary);
|
|
4237
4251
|
word-break: break-word;
|
|
4238
4252
|
overflow-wrap: anywhere;
|
|
4253
|
+
/* box-sizing: border-box 让 padding(14px*2)+border(1px*2) 算进 width:100%,
|
|
4254
|
+
不再外鼓 30px 撑出 subagent 段右边缘。 */
|
|
4255
|
+
box-sizing: border-box;
|
|
4256
|
+
width: 100%;
|
|
4239
4257
|
max-width: 100%;
|
|
4240
4258
|
min-width: 0;
|
|
4241
4259
|
overflow-x: hidden;
|
|
@@ -4245,7 +4263,9 @@
|
|
|
4245
4263
|
.subagent-reply > :last-child { margin-bottom: 0; }
|
|
4246
4264
|
|
|
4247
4265
|
.subagent-reply.error {
|
|
4266
|
+
background: rgba(226, 87, 76, 0.08);
|
|
4248
4267
|
background: color-mix(in srgb, var(--danger, #e2574c) 8%, var(--bg-surface));
|
|
4268
|
+
border-color: rgba(226, 87, 76, 0.35);
|
|
4249
4269
|
border-color: color-mix(in srgb, var(--danger, #e2574c) 35%, transparent);
|
|
4250
4270
|
}
|
|
4251
4271
|
|
|
@@ -4336,8 +4356,11 @@
|
|
|
4336
4356
|
font-size: 0.7rem;
|
|
4337
4357
|
font-weight: 500;
|
|
4338
4358
|
line-height: 1.4;
|
|
4359
|
+
color: var(--accent);
|
|
4339
4360
|
color: var(--agent-color, var(--accent));
|
|
4361
|
+
background: rgba(255, 248, 240, 0.95);
|
|
4340
4362
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 8%, var(--bg-surface, #fff));
|
|
4363
|
+
border: 1px solid rgba(197, 101, 61, 0.28);
|
|
4341
4364
|
border: 1px solid color-mix(in srgb, var(--agent-color, var(--accent)) 28%, transparent);
|
|
4342
4365
|
border-radius: 999px;
|
|
4343
4366
|
cursor: pointer;
|
|
@@ -4345,7 +4368,9 @@
|
|
|
4345
4368
|
transition: background 0.15s ease, transform 0.1s ease, border-color 0.15s ease;
|
|
4346
4369
|
}
|
|
4347
4370
|
.subagent-reply-cycle:hover {
|
|
4371
|
+
background: rgba(248, 226, 210, 1);
|
|
4348
4372
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 16%, var(--bg-surface, #fff));
|
|
4373
|
+
border-color: rgba(197, 101, 61, 0.45);
|
|
4349
4374
|
border-color: color-mix(in srgb, var(--agent-color, var(--accent)) 45%, transparent);
|
|
4350
4375
|
}
|
|
4351
4376
|
.subagent-reply-cycle:active {
|
|
@@ -4362,6 +4387,7 @@
|
|
|
4362
4387
|
height: 6px;
|
|
4363
4388
|
}
|
|
4364
4389
|
.subagent-reply-scroll::-webkit-scrollbar-thumb {
|
|
4390
|
+
background: rgba(197, 101, 61, 0.35);
|
|
4365
4391
|
background: color-mix(in srgb, var(--agent-color, var(--accent)) 35%, transparent);
|
|
4366
4392
|
border-radius: 3px;
|
|
4367
4393
|
}
|
|
@@ -4442,10 +4468,15 @@
|
|
|
4442
4468
|
font-size: 0.7rem;
|
|
4443
4469
|
color: var(--text-secondary);
|
|
4444
4470
|
white-space: pre-wrap;
|
|
4471
|
+
overflow-wrap: anywhere;
|
|
4445
4472
|
word-break: break-all;
|
|
4446
4473
|
max-height: 240px;
|
|
4474
|
+
max-width: 100%;
|
|
4475
|
+
min-width: 0;
|
|
4476
|
+
overflow-x: hidden;
|
|
4447
4477
|
overflow-y: auto;
|
|
4448
4478
|
border-top: 1px dashed var(--border-subtle);
|
|
4479
|
+
box-sizing: border-box;
|
|
4449
4480
|
}
|
|
4450
4481
|
.unknown-block.collapsed .unknown-block-body {
|
|
4451
4482
|
display: none;
|
|
@@ -4601,6 +4632,9 @@
|
|
|
4601
4632
|
overflow: hidden;
|
|
4602
4633
|
width: 100%;
|
|
4603
4634
|
max-width: var(--chat-card-max-width, 720px);
|
|
4635
|
+
/* min-width: 0 让卡片不被内部 <pre>/长路径撑出父容器;缺这一行时
|
|
4636
|
+
手机 APK 上长命令 / 长 JSON 会把整张卡片推宽到屏幕外被截掉。 */
|
|
4637
|
+
min-width: 0;
|
|
4604
4638
|
box-sizing: border-box;
|
|
4605
4639
|
background: linear-gradient(180deg, rgba(255, 251, 245, 0.88) 0%, rgba(255, 246, 234, 0.72) 100%);
|
|
4606
4640
|
box-shadow: 0 1px 2px rgba(89, 58, 32, 0.04);
|
|
@@ -4780,8 +4814,12 @@
|
|
|
4780
4814
|
font-family: var(--font-mono);
|
|
4781
4815
|
color: var(--text-secondary);
|
|
4782
4816
|
white-space: pre-wrap;
|
|
4783
|
-
overflow-wrap:
|
|
4817
|
+
overflow-wrap: anywhere;
|
|
4818
|
+
word-break: break-word;
|
|
4784
4819
|
max-height: 400px;
|
|
4820
|
+
max-width: 100%;
|
|
4821
|
+
min-width: 0;
|
|
4822
|
+
overflow-x: hidden;
|
|
4785
4823
|
overflow-y: auto;
|
|
4786
4824
|
line-height: 1.55;
|
|
4787
4825
|
}
|
|
@@ -4796,13 +4834,20 @@
|
|
|
4796
4834
|
font-family: var(--font-mono);
|
|
4797
4835
|
color: var(--text-secondary);
|
|
4798
4836
|
white-space: pre-wrap;
|
|
4799
|
-
|
|
4837
|
+
/* anywhere + break-all 兜底长 token / 长路径 / 长 URL:手机 APK 上
|
|
4838
|
+
遇到不可断字符串时换行,绝不横向溢出。 */
|
|
4839
|
+
overflow-wrap: anywhere;
|
|
4840
|
+
word-break: break-all;
|
|
4800
4841
|
max-height: 320px;
|
|
4842
|
+
max-width: 100%;
|
|
4843
|
+
min-width: 0;
|
|
4844
|
+
overflow-x: hidden;
|
|
4801
4845
|
overflow-y: auto;
|
|
4802
4846
|
line-height: 1.55;
|
|
4803
4847
|
background: rgba(125, 91, 57, 0.035);
|
|
4804
4848
|
border-radius: var(--radius-xs);
|
|
4805
4849
|
padding: 8px 10px;
|
|
4850
|
+
box-sizing: border-box;
|
|
4806
4851
|
}
|
|
4807
4852
|
.tool-use-result-empty {
|
|
4808
4853
|
font-size: 0.75rem;
|
|
@@ -5046,7 +5091,8 @@
|
|
|
5046
5091
|
}
|
|
5047
5092
|
.thinking-inline.expanded .thinking-inline-preview {
|
|
5048
5093
|
white-space: pre-wrap;
|
|
5049
|
-
overflow-wrap:
|
|
5094
|
+
overflow-wrap: anywhere;
|
|
5095
|
+
word-break: break-word;
|
|
5050
5096
|
}
|
|
5051
5097
|
.thinking-inline-action {
|
|
5052
5098
|
flex-shrink: 0;
|
|
@@ -5120,6 +5166,8 @@
|
|
|
5120
5166
|
margin: 4px 0;
|
|
5121
5167
|
width: 100%;
|
|
5122
5168
|
max-width: var(--chat-card-max-width, 720px);
|
|
5169
|
+
/* 同 .tool-use-card:内部嵌套 inline-tool 长路径不能撑爆窄屏父容器。 */
|
|
5170
|
+
min-width: 0;
|
|
5123
5171
|
box-sizing: border-box;
|
|
5124
5172
|
border-radius: var(--radius-sm);
|
|
5125
5173
|
border: 1px solid var(--border-subtle);
|
|
@@ -5248,6 +5296,8 @@
|
|
|
5248
5296
|
margin: 1px 0;
|
|
5249
5297
|
width: 100%;
|
|
5250
5298
|
max-width: var(--chat-card-max-width, 720px);
|
|
5299
|
+
/* 同 .tool-use-card:长路径 / 长查询不能撑爆窄屏父容器。 */
|
|
5300
|
+
min-width: 0;
|
|
5251
5301
|
box-sizing: border-box;
|
|
5252
5302
|
border-radius: var(--radius-xs);
|
|
5253
5303
|
cursor: pointer;
|
|
@@ -5267,6 +5317,8 @@
|
|
|
5267
5317
|
font-family: var(--font-mono);
|
|
5268
5318
|
line-height: 1.45;
|
|
5269
5319
|
border-radius: var(--radius-xs);
|
|
5320
|
+
max-width: 100%;
|
|
5321
|
+
min-width: 0;
|
|
5270
5322
|
transition: background 0.16s ease, color 0.16s ease;
|
|
5271
5323
|
}
|
|
5272
5324
|
.inline-tool:hover .inline-tool-row {
|
|
@@ -5339,6 +5391,9 @@
|
|
|
5339
5391
|
padding: 10px 12px;
|
|
5340
5392
|
margin-top: 6px;
|
|
5341
5393
|
max-height: 320px;
|
|
5394
|
+
max-width: 100%;
|
|
5395
|
+
min-width: 0;
|
|
5396
|
+
overflow-x: hidden;
|
|
5342
5397
|
overflow-y: auto;
|
|
5343
5398
|
scrollbar-width: thin;
|
|
5344
5399
|
scrollbar-color: rgba(125, 91, 57, 0.2) transparent;
|
|
@@ -5359,7 +5414,10 @@
|
|
|
5359
5414
|
line-height: 1.55;
|
|
5360
5415
|
color: var(--text-secondary);
|
|
5361
5416
|
white-space: pre-wrap;
|
|
5417
|
+
overflow-wrap: anywhere;
|
|
5362
5418
|
word-break: break-all;
|
|
5419
|
+
max-width: 100%;
|
|
5420
|
+
min-width: 0;
|
|
5363
5421
|
margin: 0;
|
|
5364
5422
|
}
|
|
5365
5423
|
.inline-tool-error-inline {
|
|
@@ -5442,6 +5500,8 @@
|
|
|
5442
5500
|
margin: 4px 0;
|
|
5443
5501
|
width: 100%;
|
|
5444
5502
|
max-width: var(--chat-card-max-width, 720px);
|
|
5503
|
+
/* 同 .tool-use-card:长命令 / 长输出不能撑爆窄屏父容器。 */
|
|
5504
|
+
min-width: 0;
|
|
5445
5505
|
box-sizing: border-box;
|
|
5446
5506
|
border: 1px solid rgba(15, 12, 9, 0.6);
|
|
5447
5507
|
border-radius: var(--radius-sm);
|
|
@@ -5471,6 +5531,8 @@
|
|
|
5471
5531
|
cursor: pointer;
|
|
5472
5532
|
user-select: none;
|
|
5473
5533
|
position: relative;
|
|
5534
|
+
max-width: 100%;
|
|
5535
|
+
min-width: 0;
|
|
5474
5536
|
}
|
|
5475
5537
|
.term-header:hover {
|
|
5476
5538
|
background:
|
|
@@ -5550,7 +5612,10 @@
|
|
|
5550
5612
|
line-height: 1.55;
|
|
5551
5613
|
margin-bottom: 6px;
|
|
5552
5614
|
white-space: pre-wrap;
|
|
5615
|
+
overflow-wrap: anywhere;
|
|
5553
5616
|
word-break: break-all;
|
|
5617
|
+
max-width: 100%;
|
|
5618
|
+
min-width: 0;
|
|
5554
5619
|
}
|
|
5555
5620
|
.term-prompt {
|
|
5556
5621
|
color: #6ee09a;
|
|
@@ -5563,6 +5628,9 @@
|
|
|
5563
5628
|
padding-top: 8px;
|
|
5564
5629
|
border-top: 1px dashed rgba(255, 255, 255, 0.06);
|
|
5565
5630
|
max-height: 360px;
|
|
5631
|
+
max-width: 100%;
|
|
5632
|
+
min-width: 0;
|
|
5633
|
+
overflow-x: hidden;
|
|
5566
5634
|
overflow-y: auto;
|
|
5567
5635
|
scrollbar-width: thin;
|
|
5568
5636
|
scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
|
|
@@ -5583,7 +5651,10 @@
|
|
|
5583
5651
|
color: #d4c2a3;
|
|
5584
5652
|
line-height: 1.55;
|
|
5585
5653
|
white-space: pre-wrap;
|
|
5654
|
+
overflow-wrap: anywhere;
|
|
5586
5655
|
word-break: break-all;
|
|
5656
|
+
max-width: 100%;
|
|
5657
|
+
min-width: 0;
|
|
5587
5658
|
}
|
|
5588
5659
|
.term-exit {
|
|
5589
5660
|
margin-top: 10px;
|
|
@@ -5605,6 +5676,8 @@
|
|
|
5605
5676
|
margin: 4px 0;
|
|
5606
5677
|
width: 100%;
|
|
5607
5678
|
max-width: var(--chat-card-max-width, 720px);
|
|
5679
|
+
/* 同 .tool-use-card:长路径 / 长 diff 不能撑爆窄屏父容器。 */
|
|
5680
|
+
min-width: 0;
|
|
5608
5681
|
box-sizing: border-box;
|
|
5609
5682
|
border: 1px solid var(--border-subtle);
|
|
5610
5683
|
border-radius: var(--radius-sm);
|
|
@@ -5626,6 +5699,8 @@
|
|
|
5626
5699
|
font-size: 0.8125rem;
|
|
5627
5700
|
cursor: pointer;
|
|
5628
5701
|
transition: background 0.18s ease;
|
|
5702
|
+
max-width: 100%;
|
|
5703
|
+
min-width: 0;
|
|
5629
5704
|
}
|
|
5630
5705
|
.diff-header:hover {
|
|
5631
5706
|
background: rgba(197, 101, 61, 0.04);
|
|
@@ -5701,11 +5776,15 @@
|
|
|
5701
5776
|
display: flex;
|
|
5702
5777
|
gap: 1px;
|
|
5703
5778
|
background: rgba(125, 91, 57, 0.08);
|
|
5779
|
+
max-width: 100%;
|
|
5780
|
+
min-width: 0;
|
|
5704
5781
|
}
|
|
5705
5782
|
.diff-col {
|
|
5706
|
-
flex: 1;
|
|
5783
|
+
flex: 1 1 0;
|
|
5707
5784
|
min-width: 0;
|
|
5785
|
+
max-width: 100%;
|
|
5708
5786
|
background: rgba(255, 253, 248, 0.85);
|
|
5787
|
+
overflow: hidden;
|
|
5709
5788
|
}
|
|
5710
5789
|
.diff-col-half {
|
|
5711
5790
|
flex: 1;
|
|
@@ -5731,7 +5810,12 @@
|
|
|
5731
5810
|
font-size: 0.75rem;
|
|
5732
5811
|
line-height: 1.55;
|
|
5733
5812
|
white-space: pre-wrap;
|
|
5813
|
+
/* 长 token / 长 URL 必须按字符断,否则不可断字符串会撑爆 .diff-col。 */
|
|
5814
|
+
overflow-wrap: anywhere;
|
|
5734
5815
|
word-break: break-all;
|
|
5816
|
+
max-width: 100%;
|
|
5817
|
+
min-width: 0;
|
|
5818
|
+
box-sizing: border-box;
|
|
5735
5819
|
}
|
|
5736
5820
|
.diff-add {
|
|
5737
5821
|
background: rgba(79, 122, 88, 0.08);
|
|
@@ -5821,12 +5905,20 @@
|
|
|
5821
5905
|
margin: 0;
|
|
5822
5906
|
font-size: 0.7rem;
|
|
5823
5907
|
max-height: 600px;
|
|
5908
|
+
max-width: 100%;
|
|
5909
|
+
min-width: 0;
|
|
5910
|
+
overflow-x: hidden;
|
|
5824
5911
|
overflow-y: auto;
|
|
5912
|
+
white-space: pre-wrap;
|
|
5913
|
+
overflow-wrap: anywhere;
|
|
5914
|
+
word-break: break-all;
|
|
5825
5915
|
}
|
|
5826
5916
|
.tool-result-content code {
|
|
5827
5917
|
font-family: var(--font-mono);
|
|
5828
5918
|
white-space: pre-wrap;
|
|
5919
|
+
overflow-wrap: anywhere;
|
|
5829
5920
|
word-break: break-all;
|
|
5921
|
+
max-width: 100%;
|
|
5830
5922
|
}
|
|
5831
5923
|
|
|
5832
5924
|
/* Markdown Content */
|
|
@@ -5902,8 +5994,14 @@
|
|
|
5902
5994
|
overflow-wrap: anywhere;
|
|
5903
5995
|
word-break: break-all;
|
|
5904
5996
|
}
|
|
5997
|
+
/* 表格容器:先让 table-layout:fixed 强制按 100% 收缩,单元格内
|
|
5998
|
+
overflow-wrap:anywhere 会负责换行;只有在内容真的塞不下(比如
|
|
5999
|
+
超长不可断字符串撑爆 fixed 布局)才退回横向滚动,这样大多数情况
|
|
6000
|
+
下用户看到的是换行而不是横滚条。 */
|
|
5905
6001
|
.markdown-content .md-table-wrap {
|
|
5906
6002
|
margin: 12px 0;
|
|
6003
|
+
max-width: 100%;
|
|
6004
|
+
min-width: 0;
|
|
5907
6005
|
overflow-x: auto;
|
|
5908
6006
|
border: 1px solid var(--border);
|
|
5909
6007
|
border-radius: var(--radius-sm);
|
|
@@ -6359,23 +6457,33 @@
|
|
|
6359
6457
|
}
|
|
6360
6458
|
|
|
6361
6459
|
/* ─────────────────────────────────────────────────────────────────────
|
|
6362
|
-
排队消息条(.queue-bar)——
|
|
6363
|
-
|
|
6364
|
-
|
|
6460
|
+
排队消息条(.queue-bar)—— 绝对定位在对话显示区域(.chat-container)的右下角,
|
|
6461
|
+
压在 "回复中" 状态线之上。
|
|
6462
|
+
交互:
|
|
6463
|
+
· 默认只展开队首 chip(橙色完整气泡,显示编号 + 文本 + ⚡ 立即 + × 删除)
|
|
6365
6464
|
· 其他 chip 收成一根小横杠(橙色细线,宽 32px 高 4px)
|
|
6366
6465
|
· 鼠标悬到任一横杠 → 该条展开、原本展开的收回横杠
|
|
6367
|
-
·
|
|
6368
|
-
|
|
6466
|
+
· 悬停期间可按住 chip 本体上下拖拽换序
|
|
6467
|
+
· chip 内部 ⚡ "立即"按钮:把这一条剥下来插队发送(看得见点的是哪一条)
|
|
6468
|
+
· chip 内部 × 按钮:单独删除这一条
|
|
6369
6469
|
───────────────────────────────────────────────────────────────────── */
|
|
6370
6470
|
.queue-bar-host {
|
|
6471
|
+
position: absolute;
|
|
6472
|
+
right: 14px;
|
|
6473
|
+
bottom: 10px;
|
|
6474
|
+
max-width: calc(100% - 28px);
|
|
6475
|
+
z-index: 14; /* 必须高于 .chat-unread-bubble(z-index 13) 和 ::after fade(z-index 12) */
|
|
6476
|
+
pointer-events: none; /* host 自身不挡点击,bar 内子节点 auto */
|
|
6371
6477
|
display: flex;
|
|
6372
6478
|
justify-content: flex-end;
|
|
6373
|
-
|
|
6374
|
-
position: relative;
|
|
6375
|
-
z-index: 2;
|
|
6376
|
-
pointer-events: none; /* host 自身不挡点击,bar 内子节点 auto */
|
|
6479
|
+
transition: bottom 220ms var(--ease-out-expo, cubic-bezier(0.16, 1, 0.3, 1));
|
|
6377
6480
|
}
|
|
6378
6481
|
.queue-bar-host[hidden] { display: none; }
|
|
6482
|
+
/* 当"回到最新"胶囊也在显示时,把排队气泡条向上抬一截,避免叠在它头上。
|
|
6483
|
+
sibling 选择器走得通是因为 #queue-bar-host 在 DOM 里紧跟在 .chat-unread-bubble 后面。 */
|
|
6484
|
+
.chat-unread-bubble.visible ~ .queue-bar-host {
|
|
6485
|
+
bottom: 52px;
|
|
6486
|
+
}
|
|
6379
6487
|
|
|
6380
6488
|
.queue-bar {
|
|
6381
6489
|
pointer-events: auto;
|
|
@@ -6452,10 +6560,10 @@
|
|
|
6452
6560
|
}
|
|
6453
6561
|
.queue-bar-item.expanded:active { cursor: grabbing; }
|
|
6454
6562
|
|
|
6455
|
-
/*
|
|
6456
|
-
.queue-bar-item-single { cursor:
|
|
6457
|
-
.queue-bar-item-single.expanded { cursor:
|
|
6458
|
-
.queue-bar-item-single.expanded:active { cursor:
|
|
6563
|
+
/* 单条排队时不能拖排序,但仍可点击 → 立即发送 */
|
|
6564
|
+
.queue-bar-item-single { cursor: pointer; }
|
|
6565
|
+
.queue-bar-item-single.expanded { cursor: pointer; }
|
|
6566
|
+
.queue-bar-item-single.expanded:active { cursor: pointer; }
|
|
6459
6567
|
|
|
6460
6568
|
/* sibling 在被拖期间平滑回位 */
|
|
6461
6569
|
.queue-bar-item-sliding { transition: transform 160ms cubic-bezier(0.2, 0.7, 0.2, 1); }
|
|
@@ -6531,95 +6639,76 @@
|
|
|
6531
6639
|
}
|
|
6532
6640
|
.queue-bar-item-delete svg { flex-shrink: 0; }
|
|
6533
6641
|
|
|
6534
|
-
/* ⚡ 立即按钮 ——
|
|
6535
|
-
|
|
6642
|
+
/* ⚡ 立即按钮 —— 每个 chip 内部都自带一颗,跟在文本和 × 删除之间。
|
|
6643
|
+
展开态可见、可点;折叠态隐起来不参与 hit-test。 */
|
|
6644
|
+
.queue-bar-item-promote {
|
|
6536
6645
|
flex-shrink: 0;
|
|
6537
|
-
|
|
6538
|
-
|
|
6539
|
-
|
|
6646
|
+
display: inline-flex;
|
|
6647
|
+
align-items: center;
|
|
6648
|
+
gap: 3px;
|
|
6649
|
+
height: 18px;
|
|
6650
|
+
padding: 0 7px 0 6px;
|
|
6540
6651
|
border: none;
|
|
6652
|
+
border-radius: 999px;
|
|
6541
6653
|
cursor: pointer;
|
|
6542
6654
|
color: #fff;
|
|
6543
|
-
background:
|
|
6544
|
-
|
|
6545
|
-
|
|
6546
|
-
|
|
6547
|
-
|
|
6548
|
-
box-shadow: 0
|
|
6549
|
-
|
|
6550
|
-
|
|
6551
|
-
|
|
6655
|
+
background: rgba(255, 255, 255, 0.22);
|
|
6656
|
+
font-size: 0.65rem;
|
|
6657
|
+
font-weight: 600;
|
|
6658
|
+
letter-spacing: 0.02em;
|
|
6659
|
+
line-height: 1;
|
|
6660
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
|
|
6661
|
+
opacity: 0;
|
|
6662
|
+
pointer-events: none;
|
|
6663
|
+
transition: opacity 120ms ease 60ms, background var(--transition-fast),
|
|
6664
|
+
box-shadow var(--transition-fast), transform 120ms ease;
|
|
6552
6665
|
}
|
|
6553
|
-
.queue-bar-promote
|
|
6554
|
-
|
|
6555
|
-
|
|
6666
|
+
.queue-bar-item.expanded .queue-bar-item-promote,
|
|
6667
|
+
.queue-bar-item.dragging .queue-bar-item-promote {
|
|
6668
|
+
opacity: 1;
|
|
6669
|
+
pointer-events: auto;
|
|
6556
6670
|
}
|
|
6557
|
-
.queue-bar-promote:
|
|
6558
|
-
|
|
6559
|
-
|
|
6560
|
-
|
|
6671
|
+
.queue-bar-item-promote:hover {
|
|
6672
|
+
background: rgba(255, 255, 255, 0.36);
|
|
6673
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.45);
|
|
6674
|
+
}
|
|
6675
|
+
.queue-bar-item-promote:active { transform: scale(0.94); }
|
|
6676
|
+
.queue-bar-item-promote:focus-visible {
|
|
6677
|
+
outline: 2px solid #fff;
|
|
6678
|
+
outline-offset: 1px;
|
|
6679
|
+
}
|
|
6680
|
+
.queue-bar-item-promote svg { flex-shrink: 0; }
|
|
6681
|
+
.queue-bar-item-promote-label {
|
|
6682
|
+
display: inline;
|
|
6561
6683
|
}
|
|
6562
|
-
.queue-bar-promote svg { flex-shrink: 0; }
|
|
6563
|
-
.queue-bar-promote-label { display: none; } /* label 留作 aria,视觉不展示 */
|
|
6564
6684
|
|
|
6565
6685
|
/* 容量满了的视觉提示 —— 整组颜色稍暗 */
|
|
6566
|
-
.queue-bar.queue-bar-capacity .queue-bar-item
|
|
6567
|
-
.queue-bar.queue-bar-capacity .queue-bar-promote {
|
|
6686
|
+
.queue-bar.queue-bar-capacity .queue-bar-item {
|
|
6568
6687
|
background: linear-gradient(180deg, #a8522f 0%, #8e4426 100%);
|
|
6569
6688
|
}
|
|
6570
6689
|
|
|
6571
|
-
/*
|
|
6690
|
+
/* 窄屏:宽度收紧 + 横杠加粗便于指 + ⚡ 文字省略 */
|
|
6572
6691
|
@media (max-width: 560px) {
|
|
6573
|
-
.queue-bar-host {
|
|
6692
|
+
.queue-bar-host { right: 8px; bottom: 8px; }
|
|
6574
6693
|
.queue-bar { max-width: calc(100vw - 20px); }
|
|
6575
6694
|
.queue-bar-item { width: 40px; height: 6px; }
|
|
6695
|
+
.queue-bar-item-promote-label { display: none; }
|
|
6696
|
+
.queue-bar-item-promote { padding: 0 6px; }
|
|
6576
6697
|
}
|
|
6577
6698
|
|
|
6578
|
-
/*
|
|
6579
|
-
|
|
6580
|
-
让排队这件事在视觉上和"已发出"清楚拉开。 */
|
|
6581
|
-
.chat-message.user.queued {
|
|
6582
|
-
opacity: 0.92;
|
|
6583
|
-
}
|
|
6584
|
-
.chat-message.user.queued .chat-message-bubble,
|
|
6585
|
-
.chat-message.user.queued .chat-message-content {
|
|
6586
|
-
box-shadow: 0 0 0 1.5px rgba(197, 101, 61, 0.55) inset,
|
|
6587
|
-
0 1px 0 rgba(197, 101, 61, 0.10);
|
|
6588
|
-
background: linear-gradient(180deg, rgba(255, 245, 235, 0.85) 0%, rgba(255, 235, 220, 0.65) 100%);
|
|
6589
|
-
border-radius: 14px;
|
|
6590
|
-
position: relative;
|
|
6591
|
-
}
|
|
6592
|
-
.queued-badge {
|
|
6593
|
-
display: inline-flex;
|
|
6594
|
-
align-items: center;
|
|
6595
|
-
gap: 5px;
|
|
6596
|
-
font-size: 0.75rem;
|
|
6597
|
-
color: #fff;
|
|
6598
|
-
background: linear-gradient(180deg, var(--accent) 0%, #a8522f 100%);
|
|
6599
|
-
padding: 3px 10px 3px 9px;
|
|
6600
|
-
border-radius: 999px;
|
|
6601
|
-
font-weight: 600;
|
|
6602
|
-
margin-top: 6px;
|
|
6603
|
-
letter-spacing: 0.04em;
|
|
6604
|
-
box-shadow: 0 2px 6px rgba(197, 101, 61, 0.30);
|
|
6605
|
-
animation: queuePulse 1.5s ease-in-out infinite;
|
|
6606
|
-
}
|
|
6607
|
-
.queued-badge::before {
|
|
6608
|
-
content: '';
|
|
6609
|
-
width: 7px;
|
|
6610
|
-
height: 7px;
|
|
6611
|
-
border-radius: 50%;
|
|
6612
|
-
background: #fff;
|
|
6613
|
-
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.45);
|
|
6614
|
-
animation: queueDotPulse 1.0s ease-in-out infinite;
|
|
6615
|
-
}
|
|
6699
|
+
/* .chat-message.user.queued 与 .queued-badge 的 CSS 已下线 —— 排队消息现在只在
|
|
6700
|
+
右下角的 .queue-bar 里展示,不再以"半透明气泡 + 排队中徽章"形式占据 chat 流。 */
|
|
6616
6701
|
|
|
6617
6702
|
.input-hint {
|
|
6618
|
-
font-size: 0.
|
|
6703
|
+
font-size: 0.5rem; /* 8px — 让位给同一行的按钮,桌面端仍清晰可读 */
|
|
6704
|
+
line-height: 1.2;
|
|
6619
6705
|
color: var(--text-muted);
|
|
6620
6706
|
white-space: nowrap;
|
|
6621
6707
|
user-select: none;
|
|
6622
6708
|
opacity: 0.7;
|
|
6709
|
+
max-width: 38ch; /* 防止突然变长的状态文案撑爆右侧区域 */
|
|
6710
|
+
overflow: hidden;
|
|
6711
|
+
text-overflow: ellipsis;
|
|
6623
6712
|
}
|
|
6624
6713
|
|
|
6625
6714
|
/* Session info bar at bottom of input composer */
|
|
@@ -7519,40 +7608,8 @@
|
|
|
7519
7608
|
.btn-pill-label {
|
|
7520
7609
|
display: inline;
|
|
7521
7610
|
}
|
|
7522
|
-
.btn-pill-interrupt
|
|
7523
|
-
|
|
7524
|
-
color: var(--accent);
|
|
7525
|
-
margin-right: 4px;
|
|
7526
|
-
box-shadow: 0 0 0 1px rgba(197, 101, 61, 0.30) inset;
|
|
7527
|
-
animation: interruptPulse 1.8s ease-in-out infinite;
|
|
7528
|
-
}
|
|
7529
|
-
.btn-pill-interrupt:hover {
|
|
7530
|
-
background: linear-gradient(180deg, var(--accent) 0%, #a8522f 100%);
|
|
7531
|
-
color: #fff;
|
|
7532
|
-
box-shadow: 0 3px 10px rgba(197, 101, 61, 0.35);
|
|
7533
|
-
transform: translateY(-1px);
|
|
7534
|
-
animation: none;
|
|
7535
|
-
}
|
|
7536
|
-
.btn-pill-interrupt:active {
|
|
7537
|
-
transform: translateY(0) scale(0.97);
|
|
7538
|
-
}
|
|
7539
|
-
.btn-pill-interrupt.hidden {
|
|
7540
|
-
display: none;
|
|
7541
|
-
}
|
|
7542
|
-
@keyframes interruptPulse {
|
|
7543
|
-
0%, 100% { box-shadow: 0 0 0 1px rgba(197, 101, 61, 0.30) inset, 0 0 0 0 rgba(197, 101, 61, 0.0); }
|
|
7544
|
-
50% { box-shadow: 0 0 0 1px rgba(197, 101, 61, 0.45) inset, 0 0 0 4px rgba(197, 101, 61, 0.12); }
|
|
7545
|
-
}
|
|
7546
|
-
/* 屏宽 < 480 时把"立即"文字藏掉,只剩 » 图标,避免和 send 一起把行挤爆。
|
|
7547
|
-
hover/focus 期间临时回显,让长按移动端用户也能确认按钮含义。 */
|
|
7548
|
-
@media (max-width: 480px) {
|
|
7549
|
-
.btn-pill-interrupt {
|
|
7550
|
-
padding: 0 8px;
|
|
7551
|
-
}
|
|
7552
|
-
.btn-pill-interrupt .btn-pill-label {
|
|
7553
|
-
display: none;
|
|
7554
|
-
}
|
|
7555
|
-
}
|
|
7611
|
+
/* .btn-pill-interrupt 与 @keyframes interruptPulse 已下线:
|
|
7612
|
+
默认行为永远是"排队(气泡)",想插队请点输入框上方那条气泡。 */
|
|
7556
7613
|
|
|
7557
7614
|
/* send 按钮在「排队模式」下退到次要色,让相邻的"立即发送"成为视觉重点。
|
|
7558
7615
|
不动尺寸 / 圆形,避免 layout shift。 */
|
|
@@ -8944,9 +9001,8 @@
|
|
|
8944
9001
|
line-height: 1.5;
|
|
8945
9002
|
}
|
|
8946
9003
|
|
|
8947
|
-
/* Sidebar header icon buttons —
|
|
9004
|
+
/* Sidebar header icon buttons — collapse / more / close — uniform 32×32 ghost */
|
|
8948
9005
|
.sidebar-header-actions .btn-ghost.btn-sm,
|
|
8949
|
-
.sidebar-pin-toggle,
|
|
8950
9006
|
.drawer-close-btn {
|
|
8951
9007
|
width: 32px;
|
|
8952
9008
|
height: 32px;
|
|
@@ -8965,16 +9021,10 @@
|
|
|
8965
9021
|
color 0.16s ease,
|
|
8966
9022
|
transform 0.22s cubic-bezier(0.34, 1.4, 0.64, 1);
|
|
8967
9023
|
}
|
|
8968
|
-
.sidebar-header-actions .btn-ghost.btn-sm:hover
|
|
8969
|
-
.sidebar-pin-toggle:hover {
|
|
9024
|
+
.sidebar-header-actions .btn-ghost.btn-sm:hover {
|
|
8970
9025
|
background: rgba(125, 91, 57, 0.08);
|
|
8971
9026
|
color: var(--text-primary);
|
|
8972
9027
|
}
|
|
8973
|
-
.sidebar-pin-toggle.pinned {
|
|
8974
|
-
background: rgba(197, 101, 61, 0.12);
|
|
8975
|
-
color: var(--accent);
|
|
8976
|
-
transform: rotate(45deg);
|
|
8977
|
-
}
|
|
8978
9028
|
|
|
8979
9029
|
/* Drawer close — same pattern as modal-close (rotate + danger tint) */
|
|
8980
9030
|
.drawer-close-btn {
|
|
@@ -9705,9 +9755,6 @@
|
|
|
9705
9755
|
|
|
9706
9756
|
/* 平板适配 */
|
|
9707
9757
|
@media (max-width: 768px) {
|
|
9708
|
-
/* 手机隐藏「固定侧栏」按钮:手机上完整 300px 常驻太占地,
|
|
9709
|
-
只保留「收起为窄条」按钮,让用户能切到 56px 窄条形态。 */
|
|
9710
|
-
.sidebar-pin-toggle { display: none; }
|
|
9711
9758
|
/* drawer 模式(pinned 但非窄条)下若未打开,则隐藏到屏幕左侧。
|
|
9712
9759
|
窄条模式(pinned + collapsed)由 .sidebar.pinned.collapsed 的 width:56px
|
|
9713
9760
|
规则常驻显示,不进入这条隐藏分支。 */
|
|
@@ -10065,8 +10112,12 @@
|
|
|
10065
10112
|
padding: 0 14px 0 4px;
|
|
10066
10113
|
border-radius: 5px;
|
|
10067
10114
|
}
|
|
10115
|
+
/* 窄屏(手机)保留提示,但用更小字号 + 更紧的宽度上限,避免把发送按钮挤出行外。
|
|
10116
|
+
状态切换("思考中…" / "已加入排队…")能截断成省略号也比整条消失友好。 */
|
|
10068
10117
|
.input-hint {
|
|
10069
|
-
|
|
10118
|
+
font-size: 0.45rem;
|
|
10119
|
+
max-width: 18ch;
|
|
10120
|
+
opacity: 0.6;
|
|
10070
10121
|
}
|
|
10071
10122
|
|
|
10072
10123
|
/* 移动端内联快捷键 - 折叠为展开按钮,展开到独立第二行 */
|
|
@@ -10501,6 +10552,43 @@
|
|
|
10501
10552
|
.markdown-content pre,
|
|
10502
10553
|
.markdown-content .code-block pre,
|
|
10503
10554
|
.subagent-reply pre { padding: 10px; }
|
|
10555
|
+
/* diff 卡片:窄屏下两列 side-by-side 每列只剩 ~160px,旧/新被挤成
|
|
10556
|
+
单字一行的"窄条"几乎不可读。改成垂直堆叠(旧在上,新在下),
|
|
10557
|
+
单列占满屏宽,长行靠 word-break 自然换行,杜绝横向溢出。 */
|
|
10558
|
+
.diff-columns {
|
|
10559
|
+
flex-direction: column;
|
|
10560
|
+
}
|
|
10561
|
+
.diff-col,
|
|
10562
|
+
.diff-col-half,
|
|
10563
|
+
.diff-col-full {
|
|
10564
|
+
flex: 1 1 auto;
|
|
10565
|
+
width: 100%;
|
|
10566
|
+
max-width: 100%;
|
|
10567
|
+
}
|
|
10568
|
+
/* 终端命令头部也放开 wrap,长命令在 preview 里仍 ellipsis,但 dot/toggle
|
|
10569
|
+
之类不会把卡片撑宽。 */
|
|
10570
|
+
.term-header {
|
|
10571
|
+
flex-wrap: wrap;
|
|
10572
|
+
row-gap: 4px;
|
|
10573
|
+
}
|
|
10574
|
+
.diff-header {
|
|
10575
|
+
flex-wrap: wrap;
|
|
10576
|
+
row-gap: 4px;
|
|
10577
|
+
}
|
|
10578
|
+
.diff-path {
|
|
10579
|
+
flex-basis: 100%;
|
|
10580
|
+
order: 99;
|
|
10581
|
+
}
|
|
10582
|
+
/* inline-tool meta(搜索路径等)窄屏给整行,不再贴右挤标题。 */
|
|
10583
|
+
.inline-tool-row {
|
|
10584
|
+
flex-wrap: wrap;
|
|
10585
|
+
row-gap: 2px;
|
|
10586
|
+
}
|
|
10587
|
+
.inline-tool-meta {
|
|
10588
|
+
max-width: 100%;
|
|
10589
|
+
flex-basis: 100%;
|
|
10590
|
+
padding-left: 22px;
|
|
10591
|
+
}
|
|
10504
10592
|
}
|
|
10505
10593
|
|
|
10506
10594
|
/* Blank chat mobile optimization */
|