Repository navigation
Replies: 1 comment
|
你排查得对,我逐条核实了,缺口就是那三个变量。补三样:精确的变量清单、一条让报告更难被驳回的定位、以及为什么这不只是"颜色不好看"。 1. 你的三处判断全部成立(a) 高亮管线认识 diff ——
(b) 主题表确实缺那三个变量 —— 我对 (c) 回落机制 —— 变量未定义时 2. 一条能让报告更难被驳回的定位建议把"变量没定义"再往前推一格:这三个变量不是可选的,而是 shiki 的
这一点值得写进报告:它解释了为什么缺的正好是这三个,而不是随便漏了几个。 3. 为什么这不只是"颜色不好看"diff 围栏的可读性完全依赖增删行的颜色区分 —— 同色时, 4. 建议的修法(与你的方案一致,补两处细节)在
两处细节:
5. 版本你没写版本。我核的是 顺带一句:你这份报告的结构很好 —— 先排除"没渲染 markdown"、再排除"高亮管线不认识 diff"、最后落到主题表。这个顺序让维护者可以直接跳到结论,建议保留。 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
我在用的时候发现,会话里 ```diff 的代码块没有那种颜色区分——加行、减行和上下文行一个颜色,看上去就是纯文本。
排查(这是AI给的排查,大概是缺少几个css变量配置)
不是没渲染 markdown:截图里那行
diff是代码块头部标签(CodeBlock.tsx渲染 fence info string + 复制按钮),4 个反引号的围栏解析正常。也不是高亮管线不认识 diff:
packages/client/ui-primitives/src/markdown/highlight.ts里有['diff', 'diff']/['patch', 'diff']别名,也注册了@shikijs/langs/diff(惰性语法)。用 DSH 自己的 css-variables 主题实跑一遍,输出确实带 diff 专属变量:缺口在主题表:
packages/client/ui-theme/src/styles/shiki.css只定义了 10 个 token 变量,而 shiki 的 css-variables 主题还会发--shiki-token-inserted/--shiki-token-deleted/--shiki-token-changed。变量未定义时color: var(--shiki-token-inserted)解析为空,回落到--shiki-foreground,于是增删行和上下文行同色。受影响的是所有diff /patch 围栏,不只是我这一条消息。复现
任意会话里贴一段 ```diff 围栏即可;不受惰性语法加载影响,语法加载完之后仍然是同色。
建议
在
shiki.css的:root与body[data-ds-dark-theme]里各补三个变量(亮/暗两套色),例如 inserted 用绿、deleted 用红、changed 用橙。English: ```diff fences do reach shiki, but
packages/client/ui-theme/src/styles/shiki.cssdefines no `--shiki-token-inserted` / `--shiki-token-deleted` / `--shiki-token-changed`, so those spans fall back to `--shiki-foreground` and every line looks the same. Suggested fix: declare the three variables in both the light and the dark block.All reactions