Skip to content

Releases

v0.8.0 · 主题归上游内置,插件只留花符状态行

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 13 Oct 15:16

樱花粉主题已并入 dsh-TUI 内置预设

樱花粉三套(pink-night / pink-day / pink-ansi)已随上游 PR #1294 合并进 dsh-TUI 主线,并自 dsh-TUI v0.15.0 起作为宿主预置主题发布——/theme 里直接可选,调色板与主题键由上游维护。

本插件从 0.8 起不再携带主题文件,只保留花符状态行、/settings 卡片和一条一次性迁移提示。按需要选一条:

只要主题:卸载插件,并清理残留

0.7.x 写进 ~/.dsh-tui/themes/ 的粉主题文件已被内置同名主题遮蔽,留着只是死重量,建议一起清理:

dsh plugin --profile dsh-tui remove -w dsh-tui-theme

# POSIX:确认没有要保留的手改配色后(要保留先按 README「迁移要点」改文件里的 name)
rm ~/.dsh-tui/themes/pink-{night,day,ansi}.json
rm -f ~/.dsh-tui/theme-follow.json ~/.dsh-tui/theme-plugin-notice.json
# PowerShell(Windows):同上,可只删其中几个
dsh plugin --profile dsh-tui remove -w dsh-tui-theme

Remove-Item "$env:USERPROFILE\.dsh-tui\themes\pink-night.json",
            "$env:USERPROFILE\.dsh-tui\themes\pink-day.json",
            "$env:USERPROFILE\.dsh-tui\themes\pink-ansi.json"
Remove-Item "$env:USERPROFILE\.dsh-tui\theme-follow.json" -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.dsh-tui\theme-plugin-notice.json" -ErrorAction SilentlyContinue

⚠️ 别删 ~/.dsh-tui/theme.json——那是宿主记录你当前主题选择的文件;逐条说明见 README 的「旧主题文件清理」小节。

需要状态行:更新到 0.8.0

dsh plugin --profile dsh-tui add -w dsh-tui-theme@0.8.0

本版不带主题文件,只保留状态行(以及 /settings 卡片与迁移提示);主题继续由宿主内置提供,两边不会再抢名字、抢文件、抢调色板。

之后可能还会带来更多主题,感谢使用 🌸

新功能

  • 迁移提示(src/legacyNotice.ts,走 tuiToast):发现 ≤0.7.x 留在 ~/.dsh-tui/themes/ 的 pink-*.json 时提示一次——那些文件在带内置樱族的宿主(≥ 0.15.0)上已不生效,手工调过色的文件请改名才能继续采用。提示送达宿主后才在 ~/.dsh-tui/theme-plugin-notice.json 记标记,此后不再重复;宿主还没有 toast 接缝(< 0.10)时看不到提示,插件每次启动静默重试、不打扰,等宿主升上来再提示一次。被提到的文件不会被删除或修改。
  • 内嵌家族调色板(src/palette.ts):富状态视图改用包内嵌的三个色值(家族 accent / inactiveShimmer / subtle,与宿主内置樱族逐键一致)。宿主没有向插件公开「当前调色板」的查询接缝,这是插件唯一持有的颜色来源;非粉主题一律不着色。

变更(破坏性)

  • 移除三套主题:不再有 themes/、运行时注册(ctx.tuiThemes)、静态安装(~/.dsh-tui/themes/)与损坏文件自愈。樱族已随上游 PR #1294 并入 dsh-TUI 主线(2026-10-12,merge 4f4980fe)并于 0.15.0 发版,其内置的 pink-night / pink-day / pink-ansi 优先于任何同名静态文件,插件侧继续注册只会被整份拒绝。
  • 移除缓存背景跟随(followSystem)与 autoInstallThemes:该功能只为在昼樱/夜樱之间切换而存在;~/.dsh-tui/theme-follow.json 从此无人读取,可自行删除。
  • 移除遮蔽文件清理对话框(tuiDialogs 接缝不再使用),由上面的一次性 toast 取代。
  • /settings 卡片只剩「状态行」一组:followSystem 字段随功能移除,其余六个字段(花符开关 / 花符字符 / 时钟 / 轮数 / 分隔符 / 展示范围)与存储命名空间 dsh-tui-theme 不变,已有用户层设置继续生效。
  • 插件不再写 ~/.dsh-tui(唯一例外是上述标记文件,且只在发现旧主题文件、提示确实送达后写一次);theme.json 只读不写。

兼容性

  • 宿主基线抬到 0.15.0(devDependency 与 CI 的 DSH_TUI_EXPECTED_VERSION 同批,由 verify:peers 守住):这是第一个内置樱族的宿主版本,零配置下 verify:host 的调色板门禁从此真跑 9 格,不再是跳过路径。
  • 引擎 devDependency / overrides 整代抬到 0.2.0-rc.2:0.15.0 的 peer 段要求 dsh-app-boot / dsh-plugin-manager 等为 0.2.0-rc.2,与 rc.1 的 dsh-settings 树冲突(npm 直接 ERESOLVE),故两者必须同代。仅影响本仓的开发/验证树,发布包运行期不依赖它们。
  • peer 段补字面项 0.2.0-rc.2:^0.2.0-rc.1 在宿主 includePrerelease 语义下本来就覆盖 rc.2,字面项是为无依赖的 scripts/verify-package.mjs(逐项字面比较)与读者准备的,与既有的 0.1.7-rc.1 || 0.1.7-rc.2 同体例;verify:peers 的已验证运行时清单同时加入 0.2.0-rc.2。
  • 状态行与设置面板的下限不变(dsh-TUI 0.8.8;0.10.1 起走富状态视图,更旧宿主回退无色标量行)。
  • pink-only 判据只是主题名,不检查宿主是否内置樱族:pink-night / pink-day / pink-ansi 三个名字取自 DSH_TUI_THEME / ~/.dsh-tui/theme.json;在 ≥ 0.15.0 的宿主上与内置名天然一致。宿主 < 0.15.0 时:从 0.7.x 升上来、旧主题文件还在的用户照常显示(宿主仍把那些文件当静态主题解析);只有「未内置 + 没有这些旧文件」的全新安装拿不到粉主题名,此时把「状态行展示」改为 all-themes,或继续使用 0.7.5。
  • dsh-settings 两代支持不变:≤0.1.6 走命名空间注册 + scope.watch,≥0.1.7 走 Config volatile 投影 + loader/volatile-update 重读。
  • 包体瘦身:发布清单 56 → 47 文件(themes/ 与两张主题截图移除,新增 lib/types/{palette,themePref,legacyNotice} 与 README_EN.md——后者此前不在 files 里,而 README.md 顶部链向它,npm 页面上那个链接曾是 404)。

验证

  • npm run release:check(exit 0):构建 + verify(17 个场景:状态行标量/富视图两条路径、dsh-settings 两代卡片、toast 重试与投递回报、迁移提示,以及「不注册主题 / 不读主题文件 / 标记是唯一写入」三条交接不变量)+ 包清单(47 文件)+ verify:peers(6 个已验证运行时通过、3 个未验证世代拒绝)+ verify:settings(对真 dsh-settings@0.2.0-rc.2 的 19 条投影断言全 ok)。
  • DSH_TUI_EXPECTED_VERSION=0.15.0 npm run verify:host(exit 0):OK palette: 9/9 garnish cells match the host built-in pink family + OK headless order: rich view registered (maxRows 1), ledger bind, settings section——即真宿主 0.15.0 上装配成功,且内嵌三色与宿主内置樱族逐格一致。同次输出带一行 * mountAdmitted unavailable on this host; using manual plugin mount:发布版宿主不带 lib/types/test-utils.js(0.14.0 的 npm 包同样不带),属脚本既有的回退分支,非本次变化。
  • 上游 0.15.0 复核(2026-10-13,直接读 npm tarball):lib/types/theme.js 的 THEME_NAMES = dark, dark-ansi, light, pink-night, pink-ansi, pink-day, claude-*…;lib/types/dsh-adapter/themes.js 的 RESERVED_NAMES = {auto, status, ...THEME_NAMES} 已收下三套粉——0.7.x 的 runtime-themes-headless.mjs 失败模式(保留名整份拒绝)在 0.8 已无该路径。
  • 真机装机实测(本机 profile dsh-tui:dsh CLI 0.2.0-rc.2 + 宿主 0.15.0 + 本插件 0.8.0,2026-10-13):
    • dsh --profile dsh-tui --dump-config:无 skipping profile bundle,# == dsh-tui-theme, patched by … 层在列——rc.2 运行时的启动期 peer 校验放行。
    • headless 冒烟(packages/smoke-tui.mjs,真实启动、捕获 stderr 45s):进入 TUI 主循环,stderr 为空,无 did not activate / failed to import。
    • 迁移提示送达:植入 ~/.dsh-tui/themes/pink-night.json 后启动实例,约 10 秒后写出 ~/.dsh-tui/theme-plugin-notice.json(themeRemovalNotifiedAt)——按设计,标记只在 toast 确实送达宿主后写,故这一条同时证明插件在 0.15.0 上真实激活、tuiToast 接缝可用(测试夹具事后已清理)。
    • 人工观感确认:✿ 状态行与配色正常、/settings 的 dsh-tui-theme 卡片六字段可用。
  • 注:main(0.7.x)的 files 不含 README_EN.md,已发布的 0.7.5 页面链接照旧 404;需要时在 0.7.x 补丁版里补同一行。

v0.7.5 · 光标交给宿主默认与 0.14.0 实拍截图

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 10 Oct 10:35

新功能

  • 无。本版承接 v0.7.4 已落地的 chrome 主题键(底栏五段 contextBar*、点火 ignition/ignitionDim),把光标一处的偏差收齐——0.7.4 发布约一小时后即被本版取代,请直接用 0.7.5。

修复

  • 输入光标回到宿主的反色块:0.7.4 给三套调色板写了实心 cursor(粉块),而上游内置樱族(PR #1294)用空串 = 反色块。空串不能照抄——它在描述符边界是非法颜色(运行时准入会整份拒绝该描述符、三套主题一起消失;静态文件路径则逐键告警并跳过)。正解是不声明这个键:宿主按 {...getTheme(base), ...colors} 解析,缺的键落回 base 主题的 "",观感与上游内置完全一致。三套调色板因此 103 → 102 键。
  • README 截图全部重拍(dsh-TUI 0.14.0 + 本插件 v0.7.5 实拍):昼樱、夜樱与 /settings 卡片,替换掉 0.9.2/0.9.3 时代、chrome 元素还是宿主写死配色的旧图。
  • README 的「宿主硬编码、主题覆盖不到的部分」整节移除:其中五项已随 #1260 进主题键,剩余项属上游实现细节而非主题用户需要规避的东西,顶栏像素鲸鱼也不再提及。清单本身留档在 docs/tasks/20261010-161500-v074-chrome-keys-and-host-gate.md 与 git 历史里。

兼容性

  • 与 v0.7.4 相同:宿主 ≥ 0.14.0 拿到含 7 个 chrome 键的完整调色板(102 键);< 0.14.0(含全部静态资产宿主)退回 v0.7.3 的 73 语义键调色板(95 键,逐字节相同),主题照常可用,只是那些 chrome 元素保持宿主原样。cursor 一律不声明,任何宿主都由 base 补 ""。
  • 引擎 peer 段、dsh-settings 两代支持、Node ^22.19 || >=24、dsh-TUI 下限 0.8.8 均与 0.7.4 一致。
  • ⚠️ 上游 #1294 仍未合并:pink-* 尚未进宿主保留名;合并后需按 REVIEW.md 的 R-017 处理(插件运行时注册会被整份拒绝)。

安装 / 升级到本版

# 已装过本插件:重跑同一条命令即可升级(0.7.4 → 0.7.5)
dsh plugin --profile dsh-tui add -w dsh-tui-theme@0.7.5

验证

  • npm run release:check:构建 + verify(31 场景)+ 包清单(59 文件)+ verify:peers + verify:settings(真实 dsh-settings@0.2.0-rc.1 的 19 条投影断言)全绿。
  • npm run verify:host(零配置宿主 0.14.0):headless order、runtime themes、toast、设置相位、主题校验(OK host theme validation: 3 themes, 81 contract keys (userMessageBackground, cursor left to the base palette), settings colors covered)全绿。
  • 机制证据(0.14.0 自带解析器实测):删掉 cursor 后 parseCustomTheme accepted、buildTheme().cursor === "";显式写空串则告警 invalid color value for "cursor" … skipped;描述符类型 TuiThemeDescriptor['colors'] 为 Partial<Record<ThemeColorKey, string>>,validateDescriptor 只校验出现过的键。
  • node probes/compare-preset-palettes.mjs:exit 0(240 个键值一致;cursor 不再是差异,脚本新增守卫「上游该键一旦不再是空串即报错」)。
  • 本机真机闭环:profile 换装 packages/dsh-tui-theme-0.7.5-local.2c55d82.tgz(受管安装 exit 0),--dump-config 无 skipping profile bundle;新实例(宿主 0.14.0)实拍三张截图,输入框光标实测为反色块(#383A42 = 主题 ink 反色)、❯ 前缀取到主题 ignition(#B03A63),底栏与状态行配色正常。

v0.7.4 · chrome 主题键落地与老宿主版本门

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 10 Oct 08:38

新功能

  • 三套调色板补齐上游契约的 8 个 chrome 键:底栏上下文进度条五段(contextBarSystem / contextBarPrompt / contextBarAssistant / contextBarThinking / contextBarTools)、思考档点火对(ignition / ignitionDim)与输入光标填充(cursor)。取值与上游 dsh-TUI PR #1294 的樱族内置预设逐键一致(probes/compare-preset-palettes.mjs 复核 243 个键值),因此宿主内置樱族前后观感连续;cursor 是唯一有意的形态差异——宿主内置用空串走反色块,而插件的运行时描述符不接受空串(空值会被判定为非法颜色、整份拒绝),故三套均给实心填充色。
  • 宿主版本门(src/hostContract.ts):插件读取已安装宿主的 package.json 版本,< 0.14.0 时自动改发去掉这 8 键的调色板。原因是宿主的运行时准入按「键必须属于 Theme 契约」校验,一个未知键就整份拒绝描述符——不设门的话,0.10.0–0.13.x 宿主上的三套主题会一起消失(静态文件路径则会每次启动逐键告警)。降级发生在注册与静态副本两处,插件日志各记一行;静态副本降级后的字节与 v0.7.3 的资产完全相同。

修复

  • README 中英同步更正(REVIEW.md R-016):主题表的「0.10.x 为 73 语义键」改为当前契约(0.14.0 为 81 语义键);「官方校验器零警告、全键覆盖」补上基线口径;「宿主硬编码、主题覆盖不到的部分」清单从 10 项收到 6 项——底栏五段、点火波与 ❯ 前缀、进度条空余段的明暗判定、输入光标、正文链接五项随 #1260 进了主题键,截图说明也改为「顶栏像素鲸鱼仍写死,其余自 0.14.0 起跟随主题」。
  • scripts/validate-themes-against-host.mjs 不再对老宿主误报:宿主契约不含 chrome 键时改为校验插件实际发给该宿主的形态(与 v0.7.3 逐字节相同的 95 键文本),而不是拿新契约去要求老宿主;runtime-themes-headless.mjs 同样按宿主契约分支,并在支持该契约的宿主上新增「8 键逐键原样到达」的断言。

兼容性

  • 验证基线抬到 dsh-TUI 0.14.0(devDependency + CI 的 DSH_TUI_EXPECTED_VERSION 同步,由 verify:peers 守着),引擎包仍为 0.2.0-rc.1。0.14.0 是第一个携带这 8 个 chrome 键的发行版(上游 PR #1260,2026-10-07 发版)。
  • 老宿主不掉主题:< 0.14.0(含全部静态资产宿主)拿到的是 v0.7.3 的 73 键语义调色板,8 个 chrome 元素保持宿主原本的写死配色;>= 0.14.0 拿到全键调色板。dsh-TUI 0.8.8 的下限、dsh-settings 两代支持、peer 段覆盖范围均未变。
  • ⚠️ 上游 #1294 仍未合并:pink-night / pink-day / pink-ansi 尚未进入宿主的内置主题名。一旦合并,宿主会把这三个名字列入保留名,插件的运行时注册会被整份拒绝(REVIEW.md R-017)——后续版本需要按「跳过宿主已内置的名字」或改名处理。

验证

  • npm run release:check:构建 + verify(31 个场景,新增「chrome-key gate」与「静态资产随门降级」两组)+ 包清单(59 文件)+ verify:peers + verify:settings(真实 dsh-settings@0.2.0-rc.1 的 19 条投影断言)全绿。
  • npm run verify:host(零配置、宿主 0.14.0):headless order、runtime themes(host chrome keys: carried by the contract)、toast 相位、设置相位、宿主主题校验(81 键契约、3 套 × 80 键、零告警)全绿。
  • 老宿主端到端复核(真 0.13.0 安装树):runtime-themes-headless.mjs → host chrome keys: predate the contract (withheld) + OK runtime themes: 3 registered, no static files, ledger create/release, disposal clean;validate-themes-against-host.mjs → validating the withheld (pre-0.14.0) form + OK host theme validation: 3 themes, 72 keys each;headless-order-test.mjs exit 0。反向对照:把版本门钉成「支持」后同一棵树立刻以 [] ≠ [pink-ansi, pink-day, pink-night] 失败,即门确实挡住了「三套主题一起消失」。
  • 降级产物逐字节等于 v0.7.3 资产(git show HEAD~1:themes/pink-{night,day,ansi}.json 对比,三套全等),因此老宿主的静态路径零「未知颜色键」告警。

v0.7.3 · peer 契约常驻门禁与设置链路真宿主验证

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 29 Sep 08:05

新功能

  • npm run verify:peers:peer 覆盖契约(scripts/verify-peer-coverage.mjs,随包分发)。dsh 0.2.0-rc.1 起宿主会在启动时校验 bundle 的 peerDependencies,任一段不匹配就整层跳过(主题、状态行、/settings、toast 一起消失)。新的门禁把「已验证的运行时版本必须被 peer 段覆盖」「未验证的世代必须被拒」「devDependency 基线必须落在 peer 契约内」「devDependency 与 CI 的 DSH_TUI_EXPECTED_VERSION 必须一致」四条钉成常驻断言,并已挂进 release:check 与 CI 的 verify 档。
  • 设置链路新增真宿主验证相位:scripts/runtime-themes-headless.mjs 相位 4 改为按能力分代(≤0.1.6 挂真实 SettingsProvider 并断言命名空间晚到注册;≥0.1.7 明确报告「本代没有该 API」并指向 verify:settings),新增相位 5 —— 把插件挂成宿主 @deepseek-ai/cordis-plugin-loader 的真实条目,用 loader 自己的 _commitVolatile(原地改写 live ref + 带 owner.fiber === fiber 过滤的 loader/volatile-update)驱动一次设置编辑,断言「编辑 → 主题偏好即时生效」。DSH_SETTINGS_DIR 可指向另一代设置服务安装,旧代相位因此仍可复跑(见开发文档)。

修复

  • verify:host 在 dsh-TUI ≥0.11 宿主上不再中断:相位 4 曾写死旧代 SettingsProvider,在 ≥dsh-settings 0.1.7 的宿主上抛 TypeError: Class extends value undefined,令整条 verify:host 以退出码 1 结束(插件本身无问题,是验证脚本的缺口)。
  • README 更正一处事实错误(中英同步):✦ 字标扫过时的高光跟随主题(claudeShimmer,0.10.1 起 accentShimmer;宿主把它作为高光色传给 sweep(),本插件三主题均已设值),此前文档把它写成「宿主死代码、shimmer 由常量决定」。清单中依然成立的常量是 DEEPSEEK/HARNESS 与欢迎语的扫过高光 FLASH、HARNESS 渐变结尾色 PALE。
  • peer 覆盖表述收紧:README 兼容性章节不再笼统写「覆盖到 0.2.x」,改为「0.1.0-rc.6–0.1.x 与 0.2.0-rc.1–0.2.x(自 v0.7.3 起)」,并说明宿主校验固定用 includePrerelease 语义、npm 默认预发布语义下未来 0.2.1-rc.x 会报 unmet peer(框架包由 dsh CLI 提供,profile 不装 @deepseek-ai/*,无实际影响)。

兼容性

  • dsh 运行时 0.2.0-rc.1 及以上可正常加载本插件:peer 段自本版起声明 ^0.2.0-rc.1(外加 0.1.7-rc.1 / 0.1.7-rc.2)。⚠️ 已发布的 0.7.2 不含该声明,在 dsh 0.2.0-rc.1 上会被启动期校验整层跳过——请使用 0.7.3。
  • 验证基线抬到 dsh-TUI 0.11.2 + 引擎 0.2.0-rc.1(devDependency 与 CI 同步);dsh-settings 的 Config 投影世代(≥0.1.7)从此在 CI 里真跑断言。0.9.x 兼容线仍由发版前的本机门禁回归(本轮 0.9.3 档全绿)。
  • 插件运行时行为无变化:本版没有 src/ 改动,构建产物 lib/types/ 与 0.7.2 一致;改动集中在 peer 元数据、验证脚本、CI 与文档。

验证

  • npm run release:check:构建 + verify(29 个场景)+ 包清单(56 文件)+ verify:peers + verify:settings(对真实 @deepseek-ai/dsh-settings@0.2.0-rc.1 的 19 条投影断言)全绿。
  • DSH_TUI_EXPECTED_VERSION=0.11.2 npm run verify:host:headless order、runtime themes 相位 1–3、toast 相位 3、设置相位(新代报告 + 相位 5 真 loader)、73 键主题校验全绿;DSH_TUI_EXPECTED_VERSION=0.9.3 + 0.9.3 宿主 worktree 全绿。
  • 旧代设置服务(dsh-settings@0.1.5-rc.1,scratch 安装)经 DSH_SETTINGS_DIR 复跑相位 4:真实 provider 晚到注册 + followSystem 驱动主题偏好,通过。
  • 本机 profile 实测:装入本版产物后 dsh --profile dsh-tui --dump-config 无 skipping profile bundle,# == dsh-tui-theme 层与默认配置在列。
  • 发布产物:dsh-tui-theme-0.7.3.tgz,56 文件,shasum 33c893fb7d2e925a507ccb2a9e6592db83752ace。

v0.7.2 · 设置卡片适配 dsh-TUI 0.11.0 与审查修复

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 26 Sep 14:40

新功能

  • 设置卡片适配 dsh-TUI 0.11.0(dsh-settings ≥ 0.1.7):0.1.7 删除了 SettingsProvider.register,此前 /settings 里的 pink-theme 卡片只剩「命名空间未注册」徽标。现在按能力分代而不解析版本号:旧代(≤ 0.1.6)继续注册命名空间并跟随 scope.watch;新代(≥ 0.1.7)把 Config 中带 volatile 标记的 7 个字段投影成表单,命名空间跟随 profile 里的条目 id,编辑经 loader/volatile-update 即时生效。失败不再静默——世代无法识别、条目 id 不合法、缺 live 标记、缺事件接缝都各写一条日志,而不是让徽标成为唯一线索。

修复

  • loader/volatile-update 监听会重复叠加(评审 R-006):disposer 原先挂在插件 fiber 上,而 ctx.inject() 的回调跑在可回收的子 fiber 里;settings 服务重载导致回调二次运行时,第一次的监听不会被回收,之后每次事件都会把配置重读两遍。现在监听仍注册在插件 ctx(loader 只投给 Config 所属 fiber),清理改由 inject 子 ctx 的 effect 持有,随子 fiber 一并回收。
  • 旧代注册 schema 补上契约守卫(评审 R-007):≤ 0.1.6 宿主唯一认可的字段清单是与 LIVE_CONFIG_KEYS 逐字重复的手写 7 键,此前没有任何断言;现在 hermetic 测试会对拍两份键集,未来加字段时旧代会先红,而不是在新代卡片上可编辑、在旧代静默存不进去。

兼容性

  • dsh-TUI 版本下限保持 0.8.8(0.9.3 实测)。两条设置路径按能力探测分支;新代还要求 schemastery 支持 volatile 标记(3.18.3+ 的 .volatile(),更旧版本回落写 meta.volatile)。更旧的宿主缺扩展面时自动降级为「仅安装三套主题」,不报错。

验证

  • 29 项 hermetic plugin checks(新增场景 2g:二次 inject 不叠监听;场景 2 新增旧代注册 schema ↔ LIVE_CONFIG_KEYS 对拍)
  • 代际门禁 npm run verify:settings:对 registry 安装的 @deepseek-ai/dsh-settings@0.1.7-rc.2(schemastery 3.18.4)19 条投影断言全过
  • dsh-TUI 0.10.1 host integration(含真实 SettingsProvider 晚到注册)与 0.9.3 兼容基线(钉版本)均绿
  • package contract:55 个发布文件

v0.7.0

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 12 Sep 12:47

新功能

  • 富状态行(dsh-TUI ≥ 0.10.1):✿ 状态行改经宿主新增的 tuiStatus.registerView 渲染,花符、时钟、轮数等单元格颜色取自当前主题调色板(此前宿主统一渲染为无色 + dim);旧宿主自动回退无色标量路径,行为不变。时钟与轮数与宿主底栏信息(模型名、tps 等)同层级同色(inactiveShimmer 键),花符保持品牌粉。
  • /settings 面板友好化(dsh-TUI ≥ 0.9.3):pink-theme 区块按「背景跟随 / 状态行」拆分两组;新增 statusGlyph(默认 ✿)与 statusSeparator(默认 ·)两个文本字段,可自定义且校验 1–2 显示单元;followSystem 行现在展示当前缓存状态(如 on(缓存: light · 2026-09-12))。
  • 遮蔽文件引导清理(dsh-TUI ≥ 0.9.3):检测到遮蔽插件的旧版静态主题文件时,除 toast 提示外提供一次性确认对话框;确认后按逐字节校验清理,拒绝或忽略维持现状,缺对话框接缝的宿主静默降级为纯 toast。

修复

  • 顶栏字标/像素字/欢迎语的 claude* 四键改为 rgb() 格式:宿主浅深判定(isLightThemeActive)与品牌色解析(parseRGB)只认 rgb(),hex 值会静默判错主题深浅或回退固定品牌蓝;pink-ansi 有意保留 ansi 值以兼容 16 色终端的 colorize 路径。

已知行为:切换主题时状态行颜色的生效时机

/theme 切换后,状态行(✿、时钟、轮数)的配色在下一次渲染时跟随新主题:

  • 会话活跃时(发送下一条消息即触发回合边界),颜色立即切换;
  • 完全空闲时,最长约 15 秒(状态行的时钟刷新周期)后切换。

这是状态行渲染机制的既定语义:渲染只在回合边界与时钟刷新运行(流式输出零渲染、零磁盘读),插件不做文件监听。背景、正文等其余界面颜色由宿主即时切换,不受影响。

兼容性

  • dsh-TUI 版本下限保持 0.8.8,新增能力均有旧宿主自动降级路径。验证基线对齐 dsh-TUI 0.10.1(宿主 73 个语义键,旧键名经宿主别名映射兼容)。

验证

  • 24 项 hermetic plugin checks(含设置分组、富视图映射与互斥、配色层级、主题切换下一次渲染生效、遮蔽清理对话框等场景)
  • dsh-TUI 0.10.1 host integration(钉版本,DSH_TUI_EXPECTED_VERSION)
  • dsh-TUI 0.9.3 compatibility baseline(钉版本环境)
  • package contract:50 个发布文件

Full Changelog: v0.6.1...v0.7.0

v0.6.1

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 05 Sep 12:00

性能优化

  • 状态行不再跟随流式输出逐 token 重绘:渲染只在回合开始/结束、会话销毁和 15 秒时钟刷新运行。此前流式输出的每个 chunk 都会触发一次渲染,并附带一次同步的 theme.json 读取+解析(即在宿主 UI 线程上每 chunk 一次磁盘读)。
  • 主题偏好(~/.dsh-tui/theme.json)读取加了一个时钟周期(15 秒)缓存,渲染路径变为纯字符串拼接。微基准:10 万个 chunk 事件,0 次渲染、0 次磁盘读。
  • 会话中 /theme 切换对状态行的生效时机由「下一个会话事件」调整为「下一个回合边界或最多 15 秒内的时钟刷新」,与状态行一贯的「下一 tick」语义一致。

其他改进

  • 运行时主题确认并清理本次启动安装的静态回退文件时,新增一条日志记录清理数量,便于度量 write-then-remove 周期的实际频率。

兼容性

  • dsh-TUI 版本下限保持 0.8.8;插件契约与配置项无变化,statusScope: 'all-themes' 行为不变。

验证

  • 19 项 hermetic plugin checks(新增 hot-path 场景:firehose 突发零渲染、零磁盘读)
  • dsh-TUI 0.10.0-beta.4 host integration(钉版本)
  • dsh-TUI 0.9.3 compatibility baseline(钉版本)
  • package contract:40 个发布文件

Full Changelog: v0.6.0...v0.6.1

v0.6.0

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 04 Sep 08:22

功能更新

  • 适配 dsh-TUI 0.10.0 的运行时主题接缝:pink-night、pink-day、pink-ansi 现在可通过 ctx.tuiThemes 注册,主题选择器显示中文名称,正常情况下无需写入 ~/.dsh-tui/themes/。
  • 保留旧宿主兼容路径:dsh-TUI 0.9.x 及更早版本继续使用静态主题文件;运行时服务晚到时会先短暂回退到静态文件,确认服务可用后仅清理本次激活写入且未被修改的文件。
  • 新增 tuiToast 屏幕提示(dsh-TUI 0.10.0+):背景跟随实际改写主题偏好、损坏主题文件自愈、旧静态文件遮蔽运行时主题等重要事件会显示短提示;没有该接缝的旧宿主自动退回原有日志行为。
  • 背景跟随结果改为结构化处理:真正改写主题时提示需要 /reload,手动开启但没有缓存时给出明确警告,启动时没有变化则保持安静。

稳定性修复

  • Toast 接缝或显示 sink 晚于插件加载时,按 2 秒 / 4 秒进行有限重试,避免启动阶段提示丢失。
  • 使用独立异步作用域调用宿主 Toast,覆盖设置监听器和启动阶段等非插件调用上下文。
  • 损坏主题文件的备份名加入进程号和随机值,避免同一毫秒内发生命名冲突;替换失败会如实报告为失败。
  • 运行时主题注册和静态回退均接入生命周期清理,卸载或重载时不会残留插件注册项。

兼容性

  • dsh-TUI 版本下限保持为 0.8.8。
  • dsh-TUI 0.10.0 运行时主题与 Toast 能力已针对 0.10.0-beta.4 验证。
  • dsh-TUI 0.9.3 静态主题、状态行和 /settings 兼容路径已验证。
  • 用户手工修改过的主题文件不会被覆盖、删除或纳入遮蔽提示。

验证

  • 18 项 hermetic plugin checks
  • dsh-TUI 0.10.0-beta.4 host integration:运行时主题注册、生命周期清理、Toast 实际投递
  • dsh-TUI 0.9.3 compatibility baseline:静态回退、状态行、/settings 区块与主题校验
  • package contract:40 个发布文件

Full Changelog: v0.5.1...v0.6.0

v0.5.1

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 31 Aug 11:08

兼容性修复

  • 兼容 @deepseek-ai/dsh-settings@0.1.2-alpha.2:移除 settingsNamespace() 运行时导入,改用原始命名空间字符串。
  • 扩展 dsh-session / dsh-settings 的 peer 与 dev 版本范围,保留旧 rc 版本兼容。

验证

  • 14 项 hermetic plugin checks
  • dsh-TUI beta.3 host integration check(状态行晚绑定 + /settings 区块契约)
  • dsh-TUI beta.1 theme validation:3 themes × 95 keys

v0.5.0

Choose a tag to compare

@xiaoxiaohaigui xiaoxiaohaigui released this 27 Aug 06:16

重要变更

  • dsh-TUI 0.9.3 兼容:三套主题覆盖 95 个可覆盖键及 /settings 卡片新启用的色键(promptBorder、selectionBg、permission、suggestion、success、inactive、subtle、warning、error);宿主校验从固定 0.9.2 改为 adapter 与源码同版本检查,发布基线可用 DSH_TUI_EXPECTED_VERSION 钉住。
  • 损坏主题文件自愈:安装时发现既有主题文件无法解析为 JSON(如安装中途中断的残留),会改名为 <文件名>.corrupt-<时间戳> 保留现场并重装内置副本,记录一条警告;有效用户文件仍然绝不覆盖。
  • /settings 首项文案更新为「应用上次保存的终端背景」(Apply saved terminal background)。

稳定性与工程

  • 插件名、状态行键与 settings 命名空间统一为单一标识常量,清理了 dsh-tui-pink-theme 命名残留。
  • 启动不再打印一条假的「follow: disabled」日志:首份设置文档按基线对齐,真实切换才记录。
  • 验证链硬化:恢复 preverify 构建前置并让 verify:host 显式先构建;settings 字段契约收敛为单一契约模块;无头回归改为轮询就绪(移除固定 300ms 延时)并标注脚本侧宿主下限 0.9.0;新增 6 条 settings 色键对比度用例。

验证

  • 14 项 hermetic plugin checks(含损坏主题自愈与 follow 日志语义场景)
  • dsh-TUI 0.9.3 host integration check(状态行晚绑定 + /settings 区块契约)
  • dsh-TUI 0.9.3 theme validation:3 themes × 95 keys,12 条对比度用例

升级说明

已有的 ~/.dsh-tui/themes/pink-*.json 不会被覆盖;如需采用包内新主题资产,请先备份自己的修改,删除对应文件后重启 dsh-TUI 让插件重装。