Conversation
…h 0.1.5+ dsh 0.1.5 removed the webServer inject from client-connection, so connection.rpc.handle throws 'cannot get property webServer without inject' and every /subscriptions-auth POST falls through to the SPA with HTTP 405 (issues V1ki#77, V1ki#80). Register the endpoints as the exact /api/subscriptions-auth Fetch route (present since 0.1.2-alpha.1), falling back to the legacy channel on 0.1.1-rc.2, and reroute the browser half's calls by the same detection. Applied from PR V1ki#82 by Sunyata-Anatta.
dsh 0.1.5-alpha.1 turned CommandContribution.description into a thunk evaluated per candidate pass; passing the plain string threw inside the registry and took the whole '/' command surface down (issue V1ki#79). Older lines render the function as empty row copy instead of crashing. Applied from PR V1ki#75 by kaijia323.
Some tiers answer the billing endpoint with only currentPeriod; the card now still shows the window and its reset time (used percent falls back to 0) instead of hiding the usage section. Applied from PR V1ki#64 by Frost2026. fix(claude): detect the CLI version on Windows instead of pinning the stale fallback npm installs Claude Code as claude.cmd there, which execFileSync cannot spawn directly since the CVE-2024-27980 fix; probe through cmd.exe with shell:true and raise the probe timeout to 10s. Applied from PR V1ki#74 by w3a11y.
…vider Empty tokens (seen from a corrupted Keychain item after a Claude Code logout) now fail the import gate; store entries without usable tokens are skipped with a warning instead of rejecting the whole load, and the status endpoint degrades one provider's failure to its own detail instead of failing every card. The write path validates sessions with the same strictness. Applied from PR V1ki#59 by CHENHUI-X (test conflict with the V1ki#82 fetch route test resolved by keeping both).
Another plugin registering the same tool name (e.g. @liustack/modsearch owning x_search) made the duplicate insert throw out of the plugin's apply, taking the providers and the auth channel down with it (issue V1ki#76). Each tool now probes the registry and falls back to a namespaced alias — grok_x_search / grok_video_generate / subscriptions_image_generate — and degrades to a skip with a warning when even the alias is taken; the Settings-page switches keep keying on the stable canonical names.
Peer ranges admit the 0.1.3 and 0.1.5 lines, whose transports the feature-detecting rpc registration already serves.
Owner
|
感谢你的贡献和完整的兼容性分析,尤其是对 DSH 0.1.5 认证通道问题、/fast 命令菜单问题以及工具名称冲突的定位和修复建议。 我们已将其中的 /fast 修复(来源于 PR #75)合并到当前 main,并在今天补充了回归测试;认证路由部分此前已由独立实现覆盖。由于本 PR 涉及范围较多,同时包含与现有实现及其他 PR 重复的内容,为避免重复合并和后续维护分叉,现关闭本 PR,不直接合并其整体分支。 预计今天会整体收敛现有 issue 和 PR;其中仍有价值但未被覆盖的部分会拆分后单独评估。感谢你的工作和测试验证。 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Integrated compatibility pass for the dsh 0.1.5 line (rc.1/rc.2), resolving every currently-open blocker issue and folding in the community fixes that were already proposed:
/subscriptions-auth/*RPC returns 405 (login impossible): dsh 0.1.5 removed thewebServerinject fromclient-connection, soconnection.rpc.handlethrowscannot get property "webServer" without injectand the channel never mounts. The endpoints are now served as the exact/api/subscriptions-authFetch route (registry present since 0.1.2-alpha.1), with a fallback to the legacy channel on the rc.2 line; the browser half reroutes its calls by the same feature detection. Based on PR fix(transport): serve settings endpoints as an /api Fetch route on dsh 0.1.5+ #82 by @Sunyata-Anatta (its codec, tests, and transport-pick logic are applied nearly verbatim).CommandContribution.descriptionbecame a thunk in 0.1.5-alpha.1 and the registry calls it per candidate pass, so the plain string threw and aborted the source.descriptionis now a function (older lines render it as empty copy, no crash). From PR fix(client): follow the 0.1.5 command description resolver #75 by @kaijia323.x_searchowner aborts the whole apply (e.g.@liustack/modsearchin the same profile): each tool now probes the registry and falls back to a namespaced alias (grok_x_search,grok_video_generate,subscriptions_image_generate), degrading to a skip-with-warning when even the alias is taken. The Settings-page switches keep keying on the canonical names; the per-agent deny list uses the name that actually registered. (new in this PR, with tests)creditUsagePercentis absent butcurrentPeriodis present.claude.cmdviacmd.exe, 10s probe timeout) instead of pinning the stale fallback.peerDependenciesnow admit the 0.1.3 and 0.1.5 lines (^0.1.3-alpha.1 || ^0.1.5-alpha.1), which the feature-detecting registration already serves. Version bumped to 0.8.1 — happy to drop that commit if releases are cut separately.Testing
pnpm buildclean;pnpm test: 432 pass / 0 fail (was 413 before; +19 from the integrated fixes, incl. a newtest/tool-collision.spec.tsdriving the real plugin wiring against a registry that already ownsx_search).DSH_HOMEwith dsh 0.1.5-rc.2: plugin 0.8.1 installed into a fresh profile,dsh webbooted, cookie minted from the token URL, then:POST /api/subscriptions-auth{endpoint: "status"}→{"ok":true,"value":{"providers":{...}}}(the exact path that 405'd in 0.8.0 on dsh 0.1.5-rc.1: every /subscriptions-auth/* RPC returns 405, login impossible #80)setSpeedwithouttier→bad-request: payload.tier must be "standard" or "fast"(validation intact)proxyGet→{"ok":true,...}(proxy panel path intact)image_generatestill mounts.Notes for reviewers
This is one integrated branch because the four blocking issues compound (e.g. #76's crash also presents as the #77/#80 405). If focused PRs are preferred, each commit is self-contained and credits its source PR — cherry-picks are safe. Closes #76, #77, #79, #80; supersedes #75, #59, #64, #74 and the transport half of #82 (credit retained in both the commits and above).