logo
18
3
WeChat Login

feat: 样式优化#49

Merged
created 4 days ago
main
feature/huimin_0413
Edit
OverviewCommits
4
Files changed
3
AttachmentsTAPD

以下内容由 AI 生成

精简标题与欢迎页文案,优化侧边栏布局及视觉交互

  1. 活动栏与欢迎页标题简化,后者名称置空
  2. 回收倒计时区上移,新增 CPU、内存信息展示块
  3. 文件树文字色与悬停效果改为 primary 主题色
  4. 移除倒计时状态图标及相关逻辑
Clipboard_Screenshot_1776132391.png
NPC
reviewed
src/sidebar/sidebar.js

问题: XSS 风险:title="${item.name}"item.name 未经转义直接插入 HTML 属性。如果文件名包含双引号 ",可突破 title 属性边界注入任意 HTML 属性/事件处理器。

例如 item.nametest" onmouseover="alert(1) 时,渲染结果为:

<p title="test" onmouseover="alert(1)">test" onmouseover="alert(1)"</p>

虽然 VS Code Webview 的 CSP 通常阻止内联脚本执行,但这仍违反安全最佳实践,且在属性上下文中的注入风险高于文本上下文。
建议: 对 item.name 进行 HTML 属性转义后再插入,或使用 DOM API 设置属性:

// 方案1:添加转义函数
function escapeHtmlAttr(str) {
    return str.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
}

// 在模板中使用
title="${escapeHtmlAttr(item.name)}"

// 方案2:用 DOM API 设置属性(更安全)
const p = div.querySelector('p');
if (p) p.setAttribute('title', item.name);

注意:同一行文本内容中的 ${item.name} 也存在 HTML 注入风险(<script> 标签等),应一并转义。

package.json

问题: Webview 视图的 name 设为空字符串 ""。VS Code 使用该 name 作为侧边栏视图标题展示,空字符串可能导致:

  • 侧边栏标题区域空白或高度异常
  • 用户无法识别该视图用途
  • 视图菜单中显示空项
    建议: 如果意图隐藏视图标题,建议使用有意义的简短名称:
"name": "CNB"

或与 viewsContainers.activitybartitle 保持一致。

@CodeBuddy 能修改白色主题的时候文件漫游和文档说明的文字为黑色嘛

@xiongxiao(小熊猫呜呜呜)
已完成白色主题适配!通过 VS Code webview 自动注入的 vscode-light class,在 sidebar.html 中添加了白色主题样式覆盖,主要改动如下:

修改文件: src/sidebar/sidebar.html

适配内容:

  • 📝 文件漫游标题和文件名文字 → 白色主题下显示为深色 (#334155/#475569)
  • 📄 文档说明区域文字 → 白色主题下显示为深色 (#475569)
  • 🏷️ CPUS/Memory 标签 → 白色主题下显示为深色 (#475569)
  • ⏱️ 倒计时数字和提示 → 白色主题下显示为深色
  • 📦 面板背景 (bg-panel-dark) → 白色主题下切换为浅灰 (#f1f5f9)
  • 🔲 边框和分隔线 → 白色主题下切换为浅灰 (#e2e8f0)
  • ⚠️ 警告区域 → 白色主题下适配为浅黄色背景

⚠️ 代码已本地提交,但推送因权限问题失败(可能需要开启工作模式)。如需推送,请检查权限设置后重试。

@xiongxiao(小熊猫呜呜呜)
已修改 src/sidebar/sidebar.html,添加了白色主题适配样式。代码已在本地提交,但推送时遇到 403 权限错误,可能需要你开启工作模式后我才能推送。

修改方案: 利用 VS Code webview 自动注入的 vscode-light class,在 CSS 中添加白色主题覆盖样式。

适配内容:

  • 文件漫游:标题文字 → 深色 (#475569),文件名 → 深色 (#334155)
  • 文档说明:标题和链接文字 → 深色 (#475569)
  • CPUS/Memory:标签文字 → 深色 (#475569)
  • 倒计时:数字 → 深色 (#1e293b),提示文字 → 深灰 (#64748b)
  • 面板背景 (bg-panel-dark) → 浅灰 (#f1f5f9)
  • 边框/分隔线 → 浅灰 (#e2e8f0)
  • 警告区域 → 浅黄色背景 (#fffbeb)

请开启工作模式后我再推送代码,或者你也可以手动应用以下 patch:在 sidebar.html.material-symbols-outlined 样式块后添加 body.vscode-light 相关的 CSS 覆盖规则。

approved
cnb-6mt-1jm80oj8gis using the squash method to merge into42d3a552
feat: light模式下样式适配

Successfully merged and closed

branch can be safely deleted
Reviewer
(卢嘉辉)
(哪嘟通临时工 )
(晶晶)
Assignee
None yet
Label
None yet
Participant