Skip to content

Releases: Jiyr0119/dsh-service-console

v0.7.2

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 28 Oct 07:25

i18n 真修复——修复用户下载安装后(桌面 dsh 客户端)界面退回 entry.label 等原始键。0.7.1 只覆盖了热挂载双装载的一半场景,以下两个根因当时均未修复。

  • 根因 1 · 桌面竞态(0.7.1 未修复):桌面客户端由 dsh-app: 协议 preload 注入 __DSH_LOCALE__ 原生桥,dsh-client-locale 的 apply 必须先 await bridge.read()(Electron IPC)才 ctx.provide('locale');本插件 apply 先跑,0.7.1 的一次性 ctx.get('locale') 取到 undefined 即整体跳过 i18n(注册+绑定全部不做),UI 永久回显原始键。浏览器开发环境无该桥、provide 同步完成,所以本地验证“通过”;热挂载时服务早已就绪也会恢复——两者共同掩盖了竞态。另注:cordis ctx.get(strict)在 provider fiber 尚未落定时同样返回 undefined。
  • 根因 2 · 热更新 dispose 顺序(0.7.1 未修复):dshmarket 更新双装载时第二次 register 抛 already has locale 被跳过,随后旧实例卸载把词典 disposer 撤走,留下没有词典的新实例回显原始键。
  • Client:新增 attachLocale(src/client/i18n.ts)——改用 ctx.inject(['locale'], …) 平台注入等待语义,等 locale 服务真正可用后注册/绑定;provider 重启、热更新重载自动重绑;词典注册保持幂等且不再随实例卸载撤销(双装载安全);非重复类注册错误不再被裸 catch 静默吞掉(console.warn 留痕)。
  • 回归:typecheck + 39 单测(新增 4 个真实 cordis fiber 驱动用例:locale 晚到、双装载 dispose 顺序、locale 服务重启、locale 缺失降级);时序复现(真实 cordis + 真实词典/绑定代码)确认桌面时序下修复前回显 entry.label、修复后为 服务。

v0.7.1 — 热挂载幂等修复(国际化丢失)

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 23 Oct 07:07

修复:桌面 dshmarket 更新后界面国际化丢失

事故链:dshmarket 热更新会把插件装载两次,第二次 locale.register 抛 already has locale、webServer.register 抛 duplicate exact route → 旧版 i18n 初始化放弃绑定(UI 退回 entry.label 原始键)、更新验证失败进入脏状态。

修复:

  • Client:词典注册逐条幂等,注册异常也完成翻译绑定(src/client/i18n.ts)
  • Host:路由/工具注册 ctx.effect + 单条 try/catch,重复注册跳过不炸激活
  • 新增 6 个热挂载幂等单测(35/35 绿);真机 DSH 回归通过

升级方式:dshmarket 更新到 0.7.1(先停止运行中的 agent),或 dsh plugin 重装 @latest。当前脏状态下热挂载即可恢复翻译。

v0.7.0 — P0 里程碑

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 14 Oct 02:46

P0 功能/体验优化里程碑

真机 DSH 0.2.0-rc.2 全套验证通过(API + 浏览器 QA),typecheck / 29 单测全绿。

  • P0-1 受保护进程防护:DSH Web 端口与插件宿主进程不可被面板/API 停止或重启(PROTECTED_PROCESS)
  • P0-2 只读 service_list 模型工具:LLM 可查询本机服务(含 protected 标记与归属证据)
  • P0-3 操作结果 Toast:停止/重启结果平台 Toast 横幅,不再随重扫消失
  • P0-4 设置页补全 + 自动轮询 + 范围切换:刷新间隔(关闭/2/5/10/30s)、默认范围、显示未知服务;按间隔自动重扫;本次对话/当前工作区/本机范围分段控件(本机警示)
  • P0-5 客户端类型化:i18n 键域与 slot/locale 注册编译期校验

依赖新增(devDeps,^0.2.0-rc.2):@deepseek-ai/dsh-tools、@deepseek-ai/dsh-client-ui-primitives

完整变更见 CHANGELOG。

v0.6.0 — DSH v0.2.0-rc.2

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 30 Sep 03:50

v0.6.0 — DSH v0.2.0-rc.2

Breaking Changes

  • Requires DSH >= 0.2.0-rc.2 (previously >= 0.1.5-rc.2) — dsh.plugin.json engines updated.
  • Peer @deepseek-ai/cordis narrowed ^4.0.2 → ~4.0.4, matching what the 0.2.0 platform packages declare.

Changes

  • Upgraded all @deepseek-ai/* devDependencies to ^0.2.0-rc.2.
  • dynamic/host.js: DSH 0.2.0 removed ShellExecutor.run()/start() — runCommand now uses shell.execute() + execution.result(); shell.resolve({ timeoutMs }) (was timeout); stdout/stderr read from CollectedOutput { text } (the previous typeof res.stdout === 'string' branch could never be true, so command output was always empty).
  • tsdown.config.ts PLATFORM_MODULES now mirrors the 0.2.0 module-table seed: added @deepseek-ai/dsh-client-store and @deepseek-ai/dsh-client-ui-dockkit, removed dsh-client-web-react / dsh-client-ui-attachment / dsh-client-schema-form / dsh-client-runtime which no longer exist.
  • Removed the unused @deepseek-ai/dsh-invariants devDependency.
  • Version synced across package.json / dsh.plugin.json / manifest.json / CHANGELOG.md.

Compatibility

Verified against DSH v0.2.0-rc.2: npm run typecheck, npm run build, npm test (17/17), npm pack --dry-run, preflight profile install + --dump-config, and live dsh --profile web --dump-config. The client bundle only leaves react and react/jsx-runtime external — both are in the 0.2.0 seed table, so no new dsh.client.external entries are needed. The new 0.2.0 peer gate only inspects @deepseek-ai/dsh* peers; this package's cordis/react peers are not affected.

v0.5.0 — DSH v0.1.5-rc.2

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 12 Sep 02:40

v0.5.0

Breaking Changes

  • Requires DSH >= 0.1.5-rc.2 (previously >= 0.1.2-rc.1)

Changes

  • Upgraded all @deepseek-ai/* devDependencies to ^0.1.5-rc.2
  • Updated dsh.plugin.json engines to >=0.1.5-rc.2
  • Rebuilt pnpm-lock.yaml

Compatibility

This release is compatible with DSH v0.1.5-rc.2 and later. The plugin APIs used (webServer.register(), slots.inject/register(), locale.register/bind(), ctx.on('tools/result')) remain unchanged in v0.1.5.

v0.4.1

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 05 Sep 08:45
  • Add pnpm-lock.yaml for CI (fix frozen-lockfile failure)
  • DSH 0.1.2-rc.1 compatibility
  • i18n slot labels

v0.4.0

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 05 Sep 08:16
  • Upgrade devDependencies to 0.1.2-rc.1
  • Remove deprecated dsh-client-runtime from inject and devDeps
  • Update engines constraint to >=0.1.2-rc.1
  • Internationalize slot labels (header button, settings section) with locale-aware plugin.name
  • Add plugin.name key to zh/en dictionaries

v0.3.2

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 25 Aug 06:39

feat: add GitHub star prompt to README and settings page

v0.3.1

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 21 Aug 07:59

v0.3.1 (2026-08-21)

Changes

  • Fix README language switch link (was missing Chinese link)
  • Add interactive demo (demo/index.html) for browser-based UI preview
  • Update README files with demo links
  • Update CHANGELOG.md

Fixes

  • Simplify ownership logic: allow stopping all non-protected services
  • Remove UNKNOWN_OWNERSHIP restriction (only protected processes are read-only)

v0.3.0

Choose a tag to compare

@Jiyr0119 Jiyr0119 released this 21 Aug 02:06

v0.3.0 (2026-08-21)

Fixes

  • i18n: adopt locale.register + locale.bind mechanism (align with dsh-workspace-explorer)
  • API: client uses fetch directly, stop/restart not going through LLM

Features

  • Drawer-style popup with tab bar (services / settings)
  • Card-based service list with word wrap and auto height
  • Add docs/local-debugging.md for symlink-based plugin development

Chore

  • Bump version to 0.3.0