Skip to content

Releases: ShanWuYinShe/dsh-plugins

@chaoset/session-archive v0.3.26-alpha.6

Choose a tag to compare

修复

  • 批量删除在畸形应答下谎报成功数:useArchiveActions.runBatch 原用 result.deleted || result.restored || [] 取值,是「真值即取」——{deleted: "x", restored: ["r"]} 会取到字符串 "x",随后 doneIds.length 得到的是字符串长度而非删除条数,面板会把 1 个失败项报成成功。改为按「是数组才取」回退,并把决策核抽成纯函数 summarizeBatchResult(另过滤非字符串元素作纵深防御)。正常应答逐例与旧实现等价(已用旧实现逐字复刻对拍确认)。
  • 旧版配置迁移会覆盖用户的行编辑:迁移改用 edit(current) 以 Loader 侧当前值为合并基,不再用 apply 时刻的配置快照——否则 apply 与迁移完成之间发生的一次行 reload(用户新编辑)会被旧快照覆盖。

变更

  • sessionQuery 可选探测收敛为单一来源:新增 session-query-bridge.ts,host 上下文不再直接 import 官方 query 类型。服务缺席(返回 null → 逐行回退直读)的语义逐字不变;保留该快路径是因为 list() 是徽标关闭态每 5 秒每标签页的轮询端点,删掉会让轮询退化成「每条会话开整条事件流取标题」。
  • client 远程贡献描述符的最小类型收敛:新增 passthroughCodec(typeSymbol): TypertCodec 取代 any 泛滥的 passthroughSchema;描述符本身保持逐条内联字面量——仓根 typert-surface-parity 用正则从源码文本解析路由键,抽工厂会让静态解析漏条目。
  • 删除 @deepseek-ai/dsh-session-projection devDependency(包内零引用,且其实测并非类型链必要件)。

@chaoset/sandbox-extra-roots v0.4.22-alpha.5

Choose a tag to compare

修复

  • macOS 上配了额外可写根的会话,每条受限 bash 命令都执行不了:confine-runners.ts 的 seatbeltArgv 重建 argv 时用 a.slice(sbSep + 1) 取 -- 之后的 inner 命令,却没把 "--" 本身补回去——sandbox-exec 收到 [-p, <profile>, bash, -c, …] 会把 bash 当 profile/参数解析,命令无法执行。触发条件是三条同时成立(macOS + 配了 extraWritableRoots + profile 文本通过漂移自检),Linux 侧走 bwrap/Landlock 不受影响。该缺陷自 0.4.11 起的所有已发布版本都存在(引入于 修复: 全仓审查问题集中修复),本轮补测时发现:既有用例只覆盖「拒绝重建」的 fail-closed 分支,成功路径零覆盖,故长期未被发现。修复为补回 "--",并补成功路径回归(断言分隔符保留且位置为 3、inner 命令原样、额外根进 profile)。

@chaoset/provider-usage v0.1.7-alpha.5

Pre-release

Choose a tag to compare

变更

  • 环回 IP 判定委托宿主:route.ts 的 IP 字面量判定改用宿主 isLoopbackHost(127/8 全段、::1 及 IPv4-mapped 形态),localhost 主机名宿主不认故显式允许;provider-usage 侧不再持有本地 4 词名单。
  • 账户契约具名化:deepseekAccount 改为具名消费 + optionalDependencies 版本声明 + 真 AccountClientMetadata 参数。

修复

  • dsh-agent 精确钉改回 ^0.2.1-alpha.2:精确钉违反 dsh-baseline 的 ^<版本> 形态铁律(该脚本只认 caret 形态,精确版直接 exit 1)。实测改回 ^ 后 branding 冲突未复活(typecheck 绿、全量用例绿),且 0.2.1-alpha.2 是 registry 上当前最高的 alpha 版本,无漂移风险。该可选依赖的真实作用是让 dsh-deepseek-account 的 account-tasks.d.ts 能解析 @deepseek-ai/dsh-agent 类型(其声明为 optional peer,无人直接依赖时 bun 不会安装)。

@chaoset/dsh-any-connect v0.4.14-alpha.9

Choose a tag to compare

变更

  • 错误文案统一走 httpStatusLabel:wire 层 HTTP 状态渲染改用共享助手的 HTTP_xxx 形态,常量收敛到共享层。
  • client 两处 fetch 错误拼装抽取 fetchJsonOrThrow:JSON 响应读取与非 2xx 抛错收敛为一处。

修复

  • probe-store 状态持久化改走官方原子写:改用 dsh-atomic-write,set/clear 转为 async,避免自建写入在中断时留下半截文件。

测试

  • 补根 test/loopback-parity.test.ts 的回环守卫一致性锁:改为实测两包公开面的绝对真值表(不拿一边当基准,防「两边一起改坏仍相等」),并逐项登记实测的 4 处语义差(provider-usage 委托宿主后的 3 项放宽 + 空串 Origin 那一处收紧)。

@chaoset/session-archive v0.3.26-alpha.5

Choose a tag to compare

修复

  • client 打包按行缩进污染模板字面量:scripts/build.mjs 的按行缩进会把 esbuild minify 产出的跨行模板字面量(join("\n") 被 minify 成含真换行的模板字面量)内部注入缩进空格,归档条目文本的分隔符被改写。打包改为 body 直接嵌入不做按行缩进(单测直跑源码不经 minify+缩进故未覆盖,端到端核查发现)。

变更

  • 配置持久化切换官方 configEditor:与 sandbox-extra-roots 同批改造(config-store.ts 两包逐字一致)——退役自建的 ~/.dsh/plugins/session-archive/config.json,0.3.x 的旧配置在启动时一次性并入 profile patch,旧文件改名 *.imported 保留。
  • 配置作用域从全局一份变为 per-profile(官方 patch 模型即如此)。该包远程服务本无配置写入端点,此变化主要影响启动时旧配置文件的读取位置。

@chaoset/sandbox-extra-roots v0.4.22-alpha.4

Choose a tag to compare

修复

  • 设置页保存的目录列表整体失效:client 打包脚本(scripts/build.mjs)对 bundle 按行加缩进时,会把 esbuild minify 产出的跨行模板字面量(split("\n") 被 minify 成含真换行的模板字面量)内部注入缩进空格,分隔符变成 split("\n ")——多行文本不再被拆分成数组,整段文本作为单元素落库后被 normalizeRoots 拒绝,保存静默失效。打包改为 body 直接嵌入不做按行缩进(该缺陷影响所有 client 源码含 \n 字面量的包,单测直跑源码不经 minify+缩进故未覆盖,端到端核查发现)。

变更

  • 配置持久化切换官方 configEditor:设置页保存经 ctx.configEditor.edit() 写入当前 profile 的 cordis.patch.yml 本行 config(与 Web 设置编辑器同一途径,dsh-base 内置),由 Loader 对账后 reload 生效。退役自建的 ~/.dsh/plugins/<name>/config.json 目录(harness 官方目录布局中不存在该目录,清理时会连带丢配置;且 $DSH_HOME 只读环境变量、未走宿主完整解析链)。
  • 配置作用域从全局一份变为 per-profile(官方 patch 模型即如此):desktop 与 web profile 各自保存各自的插件配置。
  • 旧配置自动迁移:0.4.x 的 ~/.dsh/plugins/sandbox-extra-roots/config.json 在启动时一次性并入 profile patch,旧文件改名 *.imported 保留(官方 settings.yaml.imported 同款模式)。

@chaoset/dsh-any-connect v0.4.14-alpha.5

Choose a tag to compare

新增

  • Coding Plan 的 5 小时 / 7 天 / 工具调用额度窗口:pill 此前只报订阅有效性(「有效」),用户看不到用量窗口。反编译 ZCode 客户端定位到它自己的取数端点 GET bigmodel.cn/api/monitor/usage/quota/limit(Authorization 用 coding-plan 的 api-key),实测返回 TOKENS_LIMIT(unit=3/number=5 → 5 小时)、TOKENS_LIMIT(unit=6/number=1 → 7 天)、TIME_LIMIT(工具调用次数),其中 percentage 是已用百分比。现在 pill 展示这三条窗口(剩余百分比 + 进度条 + 重置时间);端点不可用或响应形状不符时回退订阅有效性窗口,绝不编数字。

修复

  • Start Plan 未领取时不再显示「该 provider 不上报额度」:每日 00:00 后新池子尚未发放/领取时 billing/balance 如实返回空 balances,pill 落到通用文案会让用户以为额度功能坏了。现在如实显示「Start Plan: 今日待领取」;有当日池子时照旧显示真实 token 数。
  • 启动时按白名单过滤 saved 名单:saved 目录可能由旧版本写入(那时还没有产品面白名单),实测升级用户的 saved 里躺着 11 个 Coding Plan 模型(客户端只提供 2 个),启动时会先于 live 拉取被发布出来,用户先看到一整屏越界模型。现在启动即用同一份白名单过滤,白名单不可得时保持原样。

@chaoset/dsh-any-connect v0.4.14-alpha.4

Choose a tag to compare

修复

  • Start Plan 额度 pill 显示真实剩余 token 数:composer dock 的额度 pill 在窗口缺 remain 时只渲染「套餐名: 有效」,而 Start Plan 的当日 token 池(billing/balance 的 remain / size 是真实数字)被 currentPlanWindow 丢弃——卡片显示 93M tokens 额度、聊天框下方却看不到剩余额度(用户报告)。现在 sameDay 池带 remain / limit / unit: 'tokens':pill 显示「X tokens 剩余」并画进度条,当日用完是红色空条(正确语义);Coding Plan 订阅的 remain / size 恒为 1(有效性标志而非用量),维持「有效」展示。
  • CLI 的 ZCode 额度输出按变体口径:dsh-any-connect status 此前打印裸 total——Coding Plan 显示「Remaining credit: 1」(订阅有效性计数被当积分),Start Plan 是无单位 token 数;且 CLI 的凭据 store 缺 transformCredential(运行时有),会把 zcode-start-plan 的额度查询指到 coding 池子(反之亦然)。现在与运行时同口径固定计划语义,人读行按 pill 语义输出(Start Plan 带 token 数字 / 上限 / 到期时间,Coding Plan 报订阅名与有效性),--json 新增 quotaWindows(total 保留兼容)。
  • Start Plan 空名单分钟级自愈:上游偶发对 billing/balance 答一个空活动清单(实测 catalog 拉得 live/empty 的同一时刻,直调同端点却有 active 活动与模型授权,余额也正常),分组诚实隐藏后唯一的恢复路径是小时刷新——最长消失一小时,且卡片同屏出现「93M tokens 额度」与「今日没有有效的 Start Plan 活动」的自相矛盾。现在 sweep 里对「目录空 + 领取探测无翻转 + 距上次拉取 ≥ 5 分钟」再拉一拍(拉取无论结果都前移 fetchedAtMs,不会打环);空名单文案改为中性表述,不再断言「无活动」。

文档

  • README 的 ZCode 段重写为双变体现状(zcode / zcode-start-plan 两个独立连接、专属通道已接入且失败如实报错、两变体各自的模型名单口径),并补 --provider 列表漏掉的 zcode-start-plan。此前还停留在「Start Plan 按普通 ZCode 通道使用」「专属模型通道未接入(被风控拦截)」的旧口径。

@chaoset/dsh-any-connect v0.4.14-alpha.3

Choose a tag to compare

修复

  • Coding Plan 模型名单以客户端内置目录为白名单,不再混入开放平台越界模型:/api/paas/v4/models 是 BigModel 开放平台 API 的模型目录,不是 Coding Plan 订阅的产品面——实测对 coding-plan key 返回 11 个 id,其中 7 个(glm-4.5 / 4.5-air / 4.6 / 4.7 / 5 / 5.1 / 5.3-flashx)在官方客户端配置里完全没有绑定到 coding-plan;端点层放行(实测 glm-4.5 在 anthropic 通道返回 200)≠ 订阅覆盖,其订阅内费率/额度语义未经验证,选中即有按 API 余额计费的风险。名单真源改为本机 ZCode 客户端的 zcode-builtin.json(权威来源,随客户端发版更新):fetchModels 先取白名单再过滤上游并集与本地保留行;白名单不可得(客户端未装 / 结构演进)时回退已注册名单且不发上游请求。实测名单由 11 个收敛到官方产品面的 2 个(GLM-5.3、GLM-5.3-Flash),已验证参数(128K / 费率 / 徽章)不受影响。路径口:macOS 标准安装位置 + ZCODE_BUILTIN_CONFIG 显式覆盖;其余平台未经实测不猜路径,一律保守降级。

测试

  • 白名单解析(真实 revision 30 结构 / 大小写空白容忍 / 结构缺失与空名单降级 / Z.AI 系不纳入 / ZCODE_BUILTIN_CONFIG 覆盖口)、白名单外的上游 id 拦截、本地保留行同样受白名单约束、白名单不可得时回退且零上游请求等用例全覆盖;另含读本机真实客户端文件的 darwin smoke 用例(未安装则跳过语义)。

@chaoset/session-archive v0.3.26-alpha.2

Choose a tag to compare

修复

  • 依赖树整体对齐宿主 0.2.1-alpha.1 线,清除旧基线残留:bun.lock 从零重新解析,清掉上一轮适配遗留的 0.2.0-rc.2 旧线子树(packages 条目 611 → 362),@deepseek-ai/* 不再同名双版本并存;cordis 可选 peer 随之修正(cordis-plugin-include 1.0.9 → 1.0.10-alpha.1、cordis-plugin-group 1.0.4 → 1.0.5-alpha.1)。
  • 工具链依赖升到最新补丁:@types/node ^26.6.3 → ^26.6.4、jsdom ^30.1.1 → ^30.1.2。