dsh-web-ui v0.2.1
This release contains 40 new features, 31 bug fixes, 46 other changes.
本次发布包含 40 项新功能、31 项修复、46 项其他改动。
New Features / 新功能
- [release] generate bilingual release notes (EN + ZH) / 生成中英双语发布说明(EN + ZH)
- [skins] add Summer Liquid Glass (夏沫琉璃) skin (v2) / 新增「夏沫琉璃」皮肤(v2)
- [skins,miku] port custom cursors, light art and collapse handling to v2 / 将自定义光标、亮色插画与折叠处理迁移到 v2
- [skin-center] derive tinted fallbacks for uncovered official tokens (#506) / 为未被覆盖的官方 token 推导着色回退值
- [skins,miku] port the Miku custom node cursors from the v1 theme into the v2 skin / 将 Miku 主题的自定义节点光标从 v1 迁移进 v2 皮肤
- [web-ui-settings] apply the optimized select to the side-card toggles / 将优化后的 select 应用到侧卡开关
- [web-ui-settings] refine custom select behavior / 打磨自定义 select 行为
- [community-plugins] add npm install source for dsh-memoir entry / 为 dsh-memoir 条目增加 npm install 来源
- [skin-center] link-based stylesheet install, live theme subscription, dragon-heir dark art (#506) / 基于链接的样式表安装、主题实时订阅与 dragon-heir 暗色插画
- [gallery,scripts] point the gallery and scaffolding at the v2 skin asset directories (#506) / 让画廊与脚手架指向 v2 皮肤资产目录
- [skin-center] complete the built-in skin hooks ports (#506) / 完成内置皮肤 hooks 移植
- [scripts] rewrite dsh-skin as the v2 validate/install tool and gate user hooks (#506) / 将 dsh-skin 重写为 v2 校验/安装工具并门禁用户 hooks
- [plugins] opt into the L2 semantic attributes (#506) / 接入 L2 语义属性
- [skin-center] add mint, the official-anchored pure-token example skin (#506) / 新增 mint(官方锚定的纯 token 范例皮肤)
- [settings] optimize the select component under default appearance / 优化默认外观下的 select 组件
- [skin-center] migrate the 11 built-in skins to v2 asset directories (#506) / 将 11 个内置皮肤迁移到 v2 资产目录
- [scripts] add the v1 to v2 skin migration codemod (#506) / 新增 v1 到 v2 皮肤迁移 codemod
- [skin-center] re-export the contract surface for tooling (#506) / 为工具链重新导出契约面
- [skin-center] enforce the background priority chain (WE > manual > skin media) (#506) / 强制背景优先级链(壁纸引擎 > 手动 > 皮肤媒体)
- [web-ui-settings] refine custom select behavior / 打磨自定义 select 行为
- [skin-center] wire the v2 runtime through the UI and host entry (#506) / 将 v2 运行时接入 UI 与宿主入口
- [community-plugins] register dsh-full-remote in community index / 在社区索引登记 dsh-full-remote
- [community-plugins] register dsh-palate in community index / 在社区索引登记 dsh-palate
- [skin-center] add the try-on lifecycle to the skin controller (#506) / 为皮肤控制器新增试穿生命周期
- [remote-web-ui] select agent preset for mobile sessions (#397) / 移动会话可选择 agent 预设
- [skin-center] add the v2 client runtime (layers, semantic adapter, controller) (#506) / 新增 v2 客户端运行时(图层、语义适配器、控制器)
- [skin-center] add the v2 host side (skin repo, routes, tapIndex adapter) (#506) / 新增 v2 宿主侧(皮肤仓库、路由、tapIndex 适配器)
- [skin-center] add the fail-closed skin CSS safety pipeline (#506) / 新增默认关闭的皮肤 CSS 安全管线
- [skin-center] pin the skin manifest v2 contract surface (#506) / 钉住皮肤清单 v2 契约面
- [pet] refresh whisper and remark pools with livelier lines / 以更生动的台词刷新耳语与备注词库
- [skill-explorer] allow paired devices on skill center routes / 允许配对设备访问技能中心路由
- [pet] unify whispers into the status bubble and collapse multi-session stacks / 将耳语统一进状态气泡并折叠多会话堆叠
- [describe-image] hide describe_image from multimodal sessions / 在多模态会话中隐藏 describe_image
- [community-plugins] register dsh-archive-manager and dsh-history-tree / 在社区索引登记 dsh-archive-manager 与 dsh-history-tree
- [community-plugins] register dsh-gzip in the community index (gzip-compressed /api responses) (#479) / 社区索引登记 dsh-gzip(/api 响应 gzip 压缩)
- [community-plugins] register dsh-wsl-bridge in community index (#474) / 在社区索引登记 dsh-wsl-bridge
- [community-plugins] register dsh-mimo-agent-tools in community index (#473) / 在社区索引登记 dsh-mimo-agent-tools
- [community-plugins] register dsh-skill-fuzzy in community index (#472) / 在社区索引登记 dsh-skill-fuzzy
- [settings] optimize the select component under default appearance / 优化默认外观下的 select 组件
- [web-ui-settings] register 6 community plugins (DamonKoy/dsh-plugins) / 登记 6 个社区插件(DamonKoy/dsh-plugins)
Bug Fixes / 修复
- [pet] clear the pending auto-hide timer on unmount / 卸载时清除待执行的自动隐藏定时器:pointerleave 触发的隐藏定时器可能在组件卸载后触发,导致 CI 中 react-dom 读取 window 报错(window is not defined,慢速 runner 上的 PetSprite.test.tsx),故在卸载时清除 hideTimerRef
- [skin-center] resolve skin asset paths with platform separators / 用平台分隔符解析皮肤资产路径
- [describe-image] scale the attach body cap with the configured image bound / 按配置的图片上限缩放附件体积上限
- [remote-web-ui] drop a stale tunnel handle from an earlier start attempt / 丢弃上次启动尝试遗留的过期隧道句柄
- [gallery] deploy the committed styles.js artifact instead of the removed bundles.js / 部署已提交的 styles.js 产物而非已删除的 bundles.js
- [pet] resolve a composed extra atlas to the real file path / 将组合后的附加图集解析为真实文件路径
- [ssh] close already-connected hops when a middle ProxyJump hop fails / 中间 ProxyJump 跳点失败时关闭已连接的跳点
- [skin-center] paint background media on body, clone root tokens to body scope (#506) / 将背景媒体绘制到 body,并把根 token 克隆到 body 作用域
- [skin-center] stop the layer wipe race and refresh churn (#506) / 消除图层擦除竞态与刷新抖动
- [skin-center] paint the background layer above root backgrounds (v1 layering) (#506) / 将背景图层绘制在根背景之上(v1 分层)
- [skin-center] drop the warning header that rejected non-Latin1 bytes (#506) / 移除拒绝非 Latin-1 字节的警告头
- [skin-center] surface switch failures to the console (#506) / 将切换失败暴露到控制台
- [skin-center] normalize a managed-only patch to [] so the next boot survives (#506) / 将仅托管补丁规范化为 [] 以保障下次启动
- [skin-center] cache the controller state snapshot for useSyncExternalStore (#506) / 为 useSyncExternalStore 缓存控制器状态快照
- [deps] keep the rc.7 dsh-tools peer variant in the lockfile (#506) / 在锁文件中保留 rc.7 dsh-tools peer 变体
- [skill-explorer] align sidebar entry styles / 对齐侧边栏入口样式
- [skin-center] restructure the CSS pipeline to text-level scoping plus read-only validation (#506) / 将 CSS 管线重构为文本级作用域加只读校验
- [aionui-panel] remove retired panel grid mount machinery (#499) / 移除已退役的面板网格挂载机制
- [skin-center] externalize lightningcss so the host bundle loads (#506) / 外部化 lightningcss 以让宿主 bundle 正常加载
- [remote-web-ui] re-run the workspace roster fetch on retry / 重试时重新拉取工作区名单
- [remote-web-ui] wire the registry probe timeout to fetch / 将注册表探测超时接入 fetch
- [remote-web-ui] drop the status stream when the panel closes mid-issue / 面板在任务中途关闭时丢弃状态流
- [liangshen] preserve instruction hint message id (#510) / 保留指令提示消息 id
- [web-ui-settings] batch card saves through the official settings path (#221) / 通过官方设置通道批量保存卡片
- [web-ui-settings] pin the settings.section registration and document the keyed-slot upgrade path (#513) / 钉住 settings.section 注册并记录 keyed-slot 升级路径
- [liangshen] identify the instruction-hint user message / 识别指令提示用户消息
- [pet] fence the pet API and asset routes to loopback clients / 将宠物 API 与资产路由限制到回环客户端
- [remote-web-ui] redact the pairing status oracle and partition accept rate-limit buckets / 脱敏配对状态接口并拆分接受限流桶
- [ssh] keep SFTP transfer staging private (0700 dir, 0600 files) / 保持 SFTP 传输暂存私有(目录 0700、文件 0600)
- [remote-web-ui] disclose the supply-chain cooldown bypass in the update panel / 在更新面板中披露供应链冷却绕过
- [pet] unify bubble and panel palette on DeepSeek blue and orca black / 统一气泡与面板配色为 DeepSeek 蓝与虎鲸黑
Other Changes / 其他改动
- [gallery] regenerate gallery for summer-liquid-glass / 为 summer-liquid-glass 重新生成画廊
- [readme] sync contributor list from GitHub API [skip ci] / 从 GitHub API 同步贡献者列表 [skip ci]
- [gallery] regenerate manifest and styles after the miku v2 follow-up (#566) / miku v2 跟进后重新生成清单与样式
- [gallery] regenerate styles.js after the skin asset merges / 皮肤资产合并后重新生成 styles.js
- [skill-explorer] wrap the panel render in act to deflake the escape test / 用 act 包裹面板渲染以稳定 escape 测试
- [readme] sync contributor list from GitHub API [skip ci] / 从 GitHub API 同步贡献者列表 [skip ci]
- [skin-center] commit the rebuilt host bundle with token fallbacks (#506) / 提交带 token 回退的重建宿主 bundle
- [ssh,remote-web-ui] re-record README pairs after origin merge / 合并 origin 后重录 README 配对
- [readme] highlight the v2 skin-center decoupling under the plugin philosophy / 在插件理念下突出 v2 skin-center 解耦
- [task-board] give the legacy minute-scan parity test CI headroom (#506) / 为旧版分钟扫描对等测试留出 CI 余量
- [ssh] translate mixed-language install block to English / 将混合语言安装块翻译为英文
- [readme] pin @latest on install commands across all packages / 在全部包的安装命令上钉住 @latest
- [readme] pin @latest on install commands as explicit intent / 以明确意图钉住安装命令的 @latest
- [docs] refresh the README skin showcase and inject the root-neutralization rule (#506) / 刷新 README 皮肤展示并注入根样式中和规则
- [readme] clarify minimumReleaseAge gate also applies to @latest / 澄清 minimumReleaseAge 门禁同样适用于 @latest
- [skins] restore the retired v1 packages until the hooks port finishes (#506) / 在 hooks 移植完成前恢复已退役的 v1 包
- retarget skin references to the v2 skin-center asset directories (#506) / 将皮肤引用改指向 v2 skin-center 资产目录
- [dsh-skins] retire to a no-op carrier for one release cycle (#506) / dsh-skins 退役为无操作载具(一个发布周期)
- [skins] remove the retired v1 skin packages (#506) / 移除已退役的 v1 皮肤包
- [skin-center] replace the bundle registry gate with the catalog check (#506) / 用目录检查取代 bundle 注册表门禁
- [archive] add the upstream theme-seam discussion draft (#506) / 归档上游主题接缝讨论草稿
- [skin-center] rewrite the README pair for the v2 architecture (#506) / 为 v2 架构重写 README 配对
- [skin-center] retire the v1 switch machinery behind the one-shot legacy bridge (#506) / 将 v1 切换机制退役到一次性旧版桥接之后
- [skin-center] rebuild the v2 client and host bundles (#506) / 重建 v2 客户端与宿主 bundle
- [task-board] allow slow cron reference scan on CI / 允许 CI 上的慢速 cron 引用扫描
- [skin-center] pin semantic attrs v1 and archive the three audit snapshots (#506) / 钉住语义属性 v1 并归档三份审计快照
- [task-board] raise timeout on the legacy cron scan test / 提高旧版 cron 扫描测试超时
- [archive] add skill-explorer paired-access evidence for PR 509 / 归档 PR 509 的 skill-explorer 配对访问证据
- [remote-web-ui,ssh] re-record README pairs after the security-model edits / 安全模型修改后重录 README 配对
- [skins,shared] typecheck every skin in CI and drop the shared dead vite plugin dep / 在 CI 中对每个皮肤做类型检查并移除共享的死 vite 插件依赖
- [client] consolidate the triplicated sidebar entry injection into shared/ / 将三处重复的侧边栏入口注入整合到 shared/
- [task-board] mark the browser same-origin tripwire as a tripwire, not an authority check / 将浏览器同源绊线标记为绊线而非权限检查
- [remote-web-ui] reuse message indexes across live folds and memo message rows / 在实时折叠间复用消息索引并记忆化消息行
- [task-board] read the settings power status from SSE instead of polling /state / 从 SSE 读取设置电源状态而非轮询 /state
- [task-board] persist scheduler heartbeats to a sidecar instead of rewriting the ledger / 将调度器心跳持久化到边车文件而非重写账本
- [task-board] reuse the poll's session list for execution reconciliation / 复用轮询的会话列表做执行对账
- [task-board] jump cron next-run computation instead of minute-by-minute scanning / 直接计算 cron 下次运行时间而非逐分钟扫描
- [task-board] drop the 5s idle echo loop and skip empty SSE full-state refetches / 移除 5 秒空闲回声循环并跳过空 SSE 全量状态重拉
- [community-plugins] swap PR #481 evidence screenshots for plugin page captures / 将 PR #481 证据截图换成插件页面截图
- [community-plugins] add PR #481 local feature evidence screenshots / 添加 PR #481 本地功能证据截图
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
- [community-plugins] retrigger contribution validation / 重新触发贡献验证
Generated from conventional commits and translated bilingually by the maintainer. / 由常规提交收集并经维护者中英双语化。