# 1.1.0 release preparation / 发布准备

Release version: **1.1.0**. Prepared on **2026-11-05**. npm publication is a separate, manual maintainer action; a Git commit or issue closure does not mean the package has been published.

版本：**1.1.0**，准备日期：**2026-11-05**。npm 发布由维护者单独手动执行；代码推送或关闭 issue 不代表 npm 已发布。

## What ships / 本次内容

- Configuration discovery: custom Claude roots, plugin seeds and inline plugins, with explicit configuration taking priority.
- Hooks: 26 of 33 events, five handler types, native tool-name mapping, scoped MCP execution, bounded UTF-8 output and failure blocking.
- MCP: managed/local/project/user/plugin sources, precedence and policy, project helper trust and credential protection, and per-entry failure isolation.
- Session paths: reuse the existing Claude directory encoder for issue [#11](https://github.com/biedongbin/dsh-claude-compat/issues/11), and use DSH's distinct native project key for issue [#12](https://github.com/biedongbin/dsh-claude-compat/issues/12). The duplicate Claude implementation from the bugfix branch is removed.

详细用户变更见 [English changelog](../../CHANGELOG.md) 与[中文更新日志](../../CHANGELOG.zh-CN.md)。本次保留已合入 PR #6–#9 的功能，只整合 bugfix 中尚缺的 DSH 目录修复，不重复添加 Claude 编码器。

## Upgrade checklist / 升级检查

1. HTTP MCP entries need `"type": "http"` or `"streamable-http"`. URL-only, SSE and WebSocket entries are warned and skipped.
2. `mcpTrustProjectConfig` defaults to `false`. Project helpers do not execute and credential references stay literal until explicitly trusted. Trusted project helpers still receive a scrubbed inherited environment, but remain shell commands with filesystem access.
3. Review project hooks before enabling them: there is no workspace-trust dialog. Restart DSH after updates or MCP/hook settings changes.
4. Re-import the original Claude session when an older import is absent from DSH. New imports use the corrected destination; this release does not move or delete old logs automatically.
5. With a custom `userClaudeDir`, prefer explicit `/cc-resume list` and `/cc-resume import <id>`. The default picker-to-skill handoff still does not carry that directory. Direct CLI imports can use `--user-claude-dir`.

升级前请检查 HTTP 类型、项目信任设置与 hooks；更新后重启 DSH。旧会话错位时重新导入源会话，不要直接删除旧日志。自定义 Claude 目录请优先使用显式 list/import 命令。

## Verification scope / 验证范围

- Target runtime: DSH **0.2.1-rc.5** and Desktop-bundled **Node 24.21.0**. Use matching DSH peer packages; the npm `latest` peer tag may be an incompatible older build.
- Canonical repository gate: `npm run check`. In isolated validation, two legacy tests requiring a real `oh-my-claudecode` installation are explicitly excluded rather than supplied with a fabricated installation. All remaining tests must pass or have a stated capability skip.
- Two full AgentLoop contract tests require `@deepseek-ai/dsh-agent-loop-testkit`. Without that optional testkit they skip; real ToolRuntime tests and independent request/cwd producer checks do not turn those skips into passes.
- The session-path regression runs the actual CLI under a temporary HOME, checks compressed output at the expected DSH directory, then verifies imported-status detection. It requires `zstd` on PATH.
- Node 22 has a known URL-normalization property-test difference while the same property passes on the bundled Node 24. The package still declares Node >=20; that broader compatibility matrix is a follow-up item, not a claim of full verification.
- Inspect the npm manifest with `npm pack --dry-run --json`: version 1.1.0, entry point, bundle patch, helper scripts, bilingual README/changelogs and these notes must be present. Private configuration, test fixtures, node_modules and .omc evidence must be absent.

验证使用隔离 HOME 与虚构配置，不读取真实用户凭据、不连接真实 MCP、不调用模型。完整测试计数、跳过原因及打包检查结果见本次交付说明；不能把 Node 22 的失败或缺 testkit 的跳过写成全绿。

### Recorded preparation results / 本次准备结果

- 33 syntax checks passed on the final merged source.
- The isolated release suite completed with **630 tests: 628 passed, 0 failed, 2 skipped** on Node 24.21.0. The two skips require the optional full AgentLoop testkit. Two separate legacy cases that read a real plugin installation were excluded by name, not counted as passing tests.
- The focused session-path, location-variable and markerless-project run passed **61/61**; it overlaps the release suite and is not additional independent coverage.
- `npm pack --dry-run --json` and local `npm pack --ignore-scripts` passed. The manifest contains version 1.1.0 and the required sources, scripts and bilingual release documents, with no private configuration, tests or .omc files.
- These checks do not make a live model request, start a real MCP server, or publish to npm.

合并后的源码通过 33 项语法检查；隔离发布测试为 628 通过、0 失败、2 跳过。另有两项依赖真实插件安装的旧测试按名称排除，不计为通过。会话路径专项 61 项全部通过；它们与发布套件重叠，不重复累计。npm 试打包与本地生成包均成功，未执行发布。

## Manual npm publication / 手动发布

Run from the updated, clean `main` checkout after reviewing the final version and package contents:

```bash
git switch main
git pull --ff-only origin main
node -p "require('./package.json').version"
npm pack --dry-run --json
npm publish
```

Expected version: **1.1.0**. The source is distributed directly, so there is no build step. npm authentication or registry MFA is handled by the maintainer. No publish hook or tag-triggered npm workflow is configured.

请由维护者自行执行最后的 `npm publish`，并按 registry 要求完成登录或 MFA。本次准备过程不会执行该命令，也不会推送发布 tag 来触发其他流程。

## After publication / 发布后

Confirm that npm serves the intended version, then regenerate the plugin-market index from the actual registry data:

```bash
npm view dsh-claude-compat@1.1.0 version
node scripts/update-market-index.mjs
git add site/index.json
git commit -m "chore(market): index 1.1.0"
git push origin main
```

The market workflow deploys `site/` to GitHub Pages when the index is pushed. Do not advertise a prepublication npm version or invent its timestamp in the index. The npm-backed README badge changes after the registry publishes the version.

npm 发布成功后，再更新并提交市场索引；索引使用真实发布时间。发布前不提前添加 1.1.0 条目。
