Skip to content

fix: DSH Desktop 插件树加载崩溃(v0.7.23 回归) - #93

Merged
modusensus merged 1 commit into
mainfrom
fix/webServer-desktop-crash
Sep 8, 2026
Merged

modusensus merged 1 commit into
mainfrom
fix/webServer-desktop-crash

Conversation

@modusensus

@modusensus modusensus commented Sep 8, 2026 •

Copy link
Copy Markdown
Member

修复内容

v0.7.23 的「webServer 可选化」导致 DSH Desktop 插件树加载崩溃(Windows 重启即报 cannot get property "webServer" without inject)。

根因:cordis 4 的 ctx 是 Proxy——直接访问未在 inject 声明的属性会抛错而非返回 undefined,if (ctx.webServer) 守卫失效;且去掉 inject 后 cordis 不再等待宿主 webServer 服务就绪,apply 时服务未提供即崩。

修复:

  • 恢复 webServer 到 inject 声明(cordis 等宿主服务就绪后再 apply,路由注册不落时序)
  • apply/register 守卫改 ctx.reflect.get(免 inject 读取、未提供返回 undefined 不抛错,未来 headless 移出 inject 也安全)

验证:

  • 真实 cordis + dsh-host-webserver 插件本地实测:GET /api/dsh-mneme/list → 200 JSON、未知路径 → 404 JSON、headless 无 webServer → 静默不激活
  • 新增 test/webServer-optional.test.js 回归测试(真实 cordis 两种宿主形态)
  • 714 测试全绿

Summary by CodeRabbit

  • Bug Fixes

    • Fixed a crash that prevented the DSH Desktop plugin tree from loading.
    • Improved plugin startup when the host web server is unavailable, preventing unexpected errors in headless environments.
    • Restored reliable API route registration when a web server is present.
  • Documentation

    • Added v0.7.24 release information and updated documented test counts.
  • Tests

    • Added regression coverage for desktop and headless plugin startup scenarios.

cordis 4 的 ctx 是 Proxy:直接访问未在 inject 声明的属性会抛
"cannot get property without inject"(而非返回 undefined),v0.7.23
把 webServer 移出 inject 后 `if (ctx.webServer)` 守卫失效;且去掉
inject 后 cordis 不再等待宿主 webServer 服务就绪,桌面端 apply 时
服务未提供即崩。修复:恢复 webServer 到 inject(cordis 等宿主就绪
再 apply)+ apply/register 守卫改 ctx.reflect.get(免 inject 读取、
未提供返回 undefined 不抛错,未来 headless 移出 inject 也安全)。
真实 cordis + dsh-host-webserver 插件实测:API 路由 200、未知路径
404、headless 静默不激活。新增 webServer-optional 回归测试(真实
cordis 两种宿主形态)。714 测试全绿。

Co-authored-by: Anans-Ivresse <[email protected]>
@modusensus
modusensus merged commit b4c6c53 into main Sep 8, 2026
4 of 5 checks passed
@modusensus
modusensus deleted the fix/webServer-desktop-crash branch September 8, 2026 21:12
@coderabbitai

coderabbitai Bot commented Sep 8, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 7baa9f94-2f75-4eac-9342-548dd2f45d2c

📥 Commits

Reviewing files that changed from the base of the PR and between cbf3489 and c375232.

⛔ Files ignored due to path filters (1)
  • dsh-mneme/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (9)
  • dsh-mneme/CHANGELOG.md
  • dsh-mneme/README.en.md
  • dsh-mneme/README.md
  • dsh-mneme/lib/api.js
  • dsh-mneme/lib/index.js
  • dsh-mneme/package.json
  • dsh-mneme/src/api.js
  • dsh-mneme/src/index.js
  • dsh-mneme/test/webServer-optional.test.js

📝 Walkthrough

Walkthrough

The plugin restores webServer injection, uses guarded context access for API registration, adds desktop and headless regression tests, and updates v0.7.24 release metadata and documentation.

Changes

webServer readiness and regression fix

Layer / File(s) Summary
Dependency injection and guarded API registration
dsh-mneme/src/index.js, dsh-mneme/lib/index.js, dsh-mneme/src/api.js, dsh-mneme/lib/api.js
webServer is restored to inject. API registration and route disposal use ctx.reflect.get("webServer") when available, with fallback access for mock contexts.
Desktop and headless host validation
dsh-mneme/test/webServer-optional.test.js
Tests verify route registration with webServer and non-throwing loading without webServer.
Version and release documentation
dsh-mneme/package.json, dsh-mneme/CHANGELOG.md, dsh-mneme/README.md, dsh-mneme/README.en.md
The package is versioned as 0.7.24. Release notes describe the fix, and documented test counts increase to 714.

Estimated code review effort: 2 (Simple) | ~15 minutes

Severity of issue fixed: Medium

Suggested reviewers: anans-ivresse

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/webServer-desktop-crash

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant