优化: 前端审批队列核验销账+清理无引用CSS变量
This commit is contained in:
@@ -123,7 +123,7 @@ watch(
|
||||
}
|
||||
.conflict-file--toggle:hover .conflict-filepath,
|
||||
.conflict-file--toggle:hover .conflict-toggle-text {
|
||||
color: var(--df-primary);
|
||||
color: var(--df-accent);
|
||||
}
|
||||
.conflict-arrow {
|
||||
display: inline-block;
|
||||
@@ -159,7 +159,7 @@ watch(
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.diff-panel--a { border-left: 3px solid var(--df-primary); }
|
||||
.diff-panel--a { border-left: 3px solid var(--df-accent); }
|
||||
.diff-panel--b { border-left: 3px solid var(--df-success); }
|
||||
.diff-panel-label {
|
||||
font-size: 11px;
|
||||
|
||||
@@ -652,7 +652,7 @@ body.ai-sidebar-resizing * {
|
||||
width: 100%;
|
||||
height: 18px;
|
||||
padding: 0 4px;
|
||||
border: 1px solid var(--df-primary, #4f8cff);
|
||||
border: 1px solid var(--df-accent);
|
||||
border-radius: var(--df-radius-sm);
|
||||
background: var(--df-bg, #fff);
|
||||
outline: none;
|
||||
@@ -668,7 +668,7 @@ body.ai-sidebar-resizing * {
|
||||
width: 6px;
|
||||
height: 6px;
|
||||
border-radius: 50%;
|
||||
background: var(--df-primary, #4f8cff);
|
||||
background: var(--df-accent);
|
||||
flex-shrink: 0;
|
||||
animation: ai-conv-gen-pulse 1.4s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ import { setContextCallbacks } from './useAiEvents'
|
||||
|
||||
// 模块级单例 ref,多窗口共享(分离窗口与主窗口共用同一 isCompressing)。
|
||||
// 已知限制:分离窗口压缩时,主窗口的压缩按钮也显示 loading(反之亦然);非功能 bug,
|
||||
// 但若需 per-window 独立压缩态需改为 inject/provide 或独立 store 实例,本版暂不处理。
|
||||
// 后端压缩本身 per-conv 幂等,共享态仅影响按钮 loading 展示;
|
||||
// 若需 per-window 独立压缩态需改为事件同步/inject-provide,改造成本大,暂不处理。
|
||||
const isCompressing = ref(false)
|
||||
|
||||
/**
|
||||
|
||||
@@ -139,7 +139,8 @@ export function useStreamRenderer(opts: UseStreamRendererOptions) {
|
||||
}
|
||||
|
||||
/// 流式渲染:增量切块 + 块级 memo(前块缓存/末块重 parse)
|
||||
/// 返回 { html, key } 数组:key 用 block 文本 hash(已完成块稳定/末块递增),
|
||||
/// 返回 { html, key } 数组:已完成块 key 用 block 文本 hash(DOM 稳定),
|
||||
/// 末块 key 恒为 'tail-1'(内容更新靠 v-html 响应式重设,不依赖 key 变化),
|
||||
/// 模板 v-for + v-html 分块渲染,已完成块 DOM 不重建 → 选文字保持。
|
||||
///
|
||||
/// AC-EFF-S1-1 增量:追加场景复用上一帧已完成块,只对「旧末块+增长段」增量 lexer,
|
||||
@@ -179,7 +180,7 @@ export function useStreamRenderer(opts: UseStreamRendererOptions) {
|
||||
_prevStreamText = text
|
||||
|
||||
const n = blocks.length
|
||||
let tailSeq = 0 // 末块递增序号,确保末块 key 每次不同触发更新
|
||||
let tailSeq = 0 // 末块 key 序号:每帧函数内重置且仅一个末块,key 恒为 'tail-1'
|
||||
return blocks.map((b, i) => {
|
||||
const isTail = i === n - 1
|
||||
// AR-1 代码块降级:末块若是未闭合的代码围栏(```/~~~ 数为奇数,说明代码块还没结束),
|
||||
@@ -193,7 +194,7 @@ export function useStreamRenderer(opts: UseStreamRendererOptions) {
|
||||
const html = (degrade || longSingleBlock)
|
||||
? escapeFallback(b)
|
||||
: isTail ? parseBlockNoCache(b) : parseBlock(b)
|
||||
// 已完成块用文本做 key(DOM 稳定不重建);末块用递增序号(每帧更新)
|
||||
// 已完成块用文本做 key(DOM 稳定不重建);末块 key 恒为 'tail-1'(v-html 每帧重设内容)
|
||||
const key = isTail ? `tail-${++tailSeq}` : `b-${simpleHash(b)}`
|
||||
return { html, key }
|
||||
})
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
--df-accent-hover: #6a5de0;
|
||||
--df-accent-soft: rgba(123,111,240,0.15);
|
||||
--df-accent-bg: rgba(123,111,240,0.08);
|
||||
/* — Primary: 品牌主色(历史遗留 token,等价 accent,5 处引用:ConversationSidebar/PlanProgress/ConflictResolver/AdvancedSection 的 border/focus/活跃/link 态)— */
|
||||
--df-primary: #7b6ff0;
|
||||
|
||||
/* — Semantic — */
|
||||
/* 青绿:成功/流程 */
|
||||
@@ -85,7 +83,6 @@
|
||||
--df-accent-hover: #5b4bd6;
|
||||
--df-accent-soft: rgba(108,92,231,0.15);
|
||||
--df-accent-bg: rgba(108,92,231,0.06);
|
||||
--df-primary: #6c5ce7;
|
||||
|
||||
--df-success: #00b894;
|
||||
--df-success-bg: rgba(0,184,148,0.10);
|
||||
|
||||
Reference in New Issue
Block a user