diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index d9a94bd9..f0e49b51 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -263,7 +263,7 @@ jobs:
permissions:
contents: read
env:
- # v0.1.0 明确 unsigned:即使 runner 钥匙串里有证书也不自动发现。
+ # v0.1.1 明确 unsigned:即使 runner 钥匙串里有证书也不自动发现。
CSC_IDENTITY_AUTO_DISCOVERY: 'false'
steps:
- name: Checkout
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 05b41140..6ea3ec52 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,22 +1,83 @@
# Changelog
All notable changes to Mebular are documented here.
-All published packages share a single lockstep version.
+The five lockstep packages always share one version; `@mebular/dsh-plugin` keeps its own
+version line.
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project
adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-> Version headings carry the `v` prefix (`## [v0.1.0]`) because it is the release SSOT:
-> the branch name (`release/v0.1.0`), the five `package.json` versions and the Git tag must
-> all agree with this section.
+> Version headings carry the `v` prefix (`## [v0.1.1]`) because it is the release SSOT:
+> the branch name (`release/v0.1.1`), the five lockstep `package.json` versions and the Git
+> tag must all agree with this section. `@mebular/dsh-plugin` keeps its own version line but
+> ships `0.1.1` with this release.
-The GitHub Release body is extracted from this file: everything between `## [v0.1.0]` and the
+The GitHub Release body is extracted from this file: everything between `## [v0.1.1]` and the
next `## [` heading. Keep that section self-contained.
## [Unreleased]
Nothing yet.
+## [v0.1.1] - 2026-10-25
+
+v0.1.1 is a maintenance release for the v0.1.0 line. It fixes the DSH attach MCP bridge
+lifecycle, aligns the six published npm packages at `0.1.1`, and refreshes the install
+documentation. The desktop installers are rebuilt and remain **unsigned**; code signing,
+notarization and auto-update are not part of this release.
+
+### Fixed
+
+- **DSH attach MCP bridge** — the bridge now mounts only while the daemon health is `up`.
+ When the daemon is down, no `mcp__mebular__*` tools are registered, so calls no longer
+ wait silently or fail after a 60-second timeout. A daemon disconnect disposes the client
+ fiber and unregisters its tools; when the daemon recovers, the bridge remounts
+ automatically without restarting DSH. `managed` mode does not mount while the child is
+ `starting`, and does not mount after `managed_start_failed` / `managed_cli_missing`.
+ The panel and logs now state that MCP tools are temporarily unavailable and why.
+- **CI `verify:daemon`** — removed a `JOIN_READY` race in the daemon verification, so the
+ gate is deterministic. This is an internal test fix, not a user-facing feature.
+
+### Changed
+
+- **Six npm packages at `0.1.1`** — `@mebular/core`, `@mebular/service`, `@mebular/fleet`,
+ `@mebular/mcp`, `@mebular/skill`, and `@mebular/dsh-plugin`. The five lockstep packages
+ remain lockstep; the DSH plugin keeps its own version line and is aligned at `0.1.1` for
+ this release.
+- **Install documentation** — README, quickstart, DSH integration guide, desktop release
+ guide and release SOP now point at `0.1.1` and the v0.1.1 installers.
+
+### Desktop installers (unsigned)
+
+- Rebuilt installers for macOS (Universal DMG), Windows (NSIS x64) and Linux (AppImage + deb
+ x64). `SHA256SUMS.txt` is published with them; verify it before installing.
+- v0.1.1 is **unsigned and not notarized**. On macOS, right-click the app and choose
+ **Open** (or **System Settings → Privacy & Security → Open Anyway**). On Windows, choose
+ **More info → Run anyway**.
+- **No auto-update** in this release. Signing, notarization and auto-update remain follow-up
+ work.
+
+### Install
+
+- Desktop: download from [GitHub Releases v0.1.1](https://github.com/Windsander/Mebular/releases/tag/v0.1.1).
+- CLI and server: `npm install -g @mebular/core@0.1.1`.
+- DSH plugin: `dsh plugin --profile web add @mebular/dsh-plugin@0.1.1` (keep the Mebular app
+ or `mebular serve` running; the plugin uses HTTP MCP).
+
+### 中文摘要
+
+- **DSH attach MCP bridge 修复** —— 仅在 daemon 健康状态为 `up` 时挂载;daemon down 时不注册
+ 任何 `mcp__mebular__*` 工具,不会静默等待或 60s 超时。掉线时 dispose 并注销工具,daemon
+ 恢复后自动重挂,无需重启 DSH。`managed` 在 `starting`、`managed_start_failed`、
+ `managed_cli_missing` 时不提前挂载;面板和日志会明确说明 MCP 工具暂不可用及原因。
+- **六个 npm 包统一 `0.1.1`** —— 五个 lockstep 包加 `@mebular/dsh-plugin`;插件仍保留独立
+ 版本线。
+- **安装文档已更新** —— README、快速上手、DSH 集成说明、桌面发布指南与发布 SOP 均指向
+ `0.1.1`。
+- **CI `verify:daemon`** —— 修复 `JOIN_READY` 竞态,仅为内部测试稳定性,不是用户功能。
+- **桌面安装包** —— 三平台 unsigned 安装包重建,附 `SHA256SUMS.txt`;未签名、未公证,也不
+ 包含自动更新。
+
## [v0.1.0] - 2026-10-24
Initial release. Five lockstep packages at `0.1.0`: `@mebular/core`, `@mebular/service`,
@@ -98,5 +159,6 @@ installers.
仓库源码;五个 `@mebular/*` 包来自与 npm 发布相同的已验证 tarball。
- **范围** —— v0.1.0 不做签名、公证与自动更新,留到后续版本。
-[Unreleased]: https://github.com/Windsander/Mebular/compare/v0.1.0...HEAD
+[Unreleased]: https://github.com/Windsander/Mebular/compare/v0.1.1...HEAD
+[v0.1.1]: https://github.com/Windsander/Mebular/releases/tag/v0.1.1
[v0.1.0]: https://github.com/Windsander/Mebular/releases/tag/v0.1.0
diff --git a/README.md b/README.md
index 1049ec59..e272c8b5 100644
--- a/README.md
+++ b/README.md
@@ -61,14 +61,14 @@ Memory and tasks stay on your devices; devices sync directly.
- | Desktop app · v0.1.0 |
+ Desktop app · v0.1.1 |
Download & first launch |
- Unsigned first release macOS Universal · Windows x64 · Linux x64 |
- Download from GitHub Releases Verify with SHA256SUMS.txt. macOS: right-click → Open. Windows: More info → Run anyway. Bundles Electron and its runtime. |
+ Unsigned release macOS Universal · Windows x64 · Linux x64 |
+ Download from GitHub Releases Verify with SHA256SUMS.txt. macOS: right-click → Open. Windows: More info → Run anyway. Bundles Electron and its runtime. |
@@ -135,7 +135,7 @@ mebular print-config --client opencode # MCP config
Use with DSH
Keep the Mebular app running, then install the plugin from npm into DSH's web profile:
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
A Mebular sidebar panel embeds the same Console through ?embed=dsh (loopback only), and the official MCP client reaches the same graph. The plugin discovers the daemon by daemonUrl > MEBULAR_HTTP_PORT > runtime.json > 7331, so custom ports follow automatically. It has its own version line and is not part of the five-package lockstep. For plugin development, install from packages/dsh-plugin instead.
Listed on awesome-dsh-plugin under memory.
DSH plugin guide → · Integration notes →
@@ -172,6 +172,6 @@ Runnable examples: [`examples/quickstart`](examples/quickstart/index.mjs) writes
-v0.1.0 · early · MIT
+v0.1.1 · early · MIT
diff --git a/README_CN.md b/README_CN.md
index 09d1db5a..e52260f6 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -61,14 +61,14 @@
- | 桌面 App · v0.1.0 |
+ 桌面 App · v0.1.1 |
下载与首次打开 |
- 首发版 · 未签名 macOS Universal · Windows x64 · Linux x64 |
- 从 GitHub Releases 下载 用 SHA256SUMS.txt 校验。macOS:右键 →「打开」;Windows:「更多信息 → 仍要运行」。自带 Electron 与 runtime。 |
+ 未签名发布 macOS Universal · Windows x64 · Linux x64 |
+ 从 GitHub Releases 下载 用 SHA256SUMS.txt 校验。macOS:右键 →「打开」;Windows:「更多信息 → 仍要运行」。自带 Electron 与 runtime。 |
@@ -135,7 +135,7 @@ mebular print-config --client opencode # MCP 配置
与 DSH 一起使用
保持 Mebular App 运行,然后从 npm 把插件装入 DSH 的 web profile:
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
侧边栏 Mebular 面板通过 ?embed=dsh(仅 loopback)嵌入同一套 Console,官方 MCP client 连接同一张图。插件按 daemonUrl > MEBULAR_HTTP_PORT > runtime.json > 7331 发现 daemon,自定义端口会自动跟随。插件有独立版本线,不进入五包 lockstep;开发时仍可从 packages/dsh-plugin 本地安装。
已收录于 awesome-dsh-plugin 的 memory 分类。
DSH 插件指南 → · 集成说明 →
@@ -172,6 +172,6 @@ await mebular.initialize();
-v0.1.0 · early · MIT
+v0.1.1 · early · MIT
diff --git a/RELEASE.md b/RELEASE.md
index 9821bdd3..0bc1e662 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -9,6 +9,6 @@ The release operations for this repository live under `docs/operations/`:
- [Changelog](CHANGELOG.md) — release notes; the `## [vX.Y.Z]` section is the source of the
GitHub Release body.
-The current release line is **v0.1.0**: five lockstep npm packages plus the independently
-versioned `@mebular/dsh-plugin@0.1.0`, and unsigned desktop installers for macOS, Windows
-and Linux.
+The current release line is **v0.1.1**: five lockstep npm packages plus the independently
+versioned `@mebular/dsh-plugin@0.1.1`, and unsigned desktop installers for macOS, Windows
+and Linux. Signing, notarization, and auto-update are not part of this release.
diff --git a/apps/desktop/README.md b/apps/desktop/README.md
index 560f64e1..6e7ebd3c 100644
--- a/apps/desktop/README.md
+++ b/apps/desktop/README.md
@@ -1,6 +1,6 @@
# Mebular 桌面 App(apps/desktop)
-> v0.1.0:**壳 + 守护托管 + 内嵌控制台 + 发布 tarball 运行时 + 三平台 unsigned 安装包**。
+> v0.1.1:**壳 + 守护托管 + 内嵌控制台 + 发布 tarball 运行时 + 三平台 unsigned 安装包**。
> 安装包 runtime 来自与 npm 发布同一批 verify tarball;签名、公证与自动更新留到后续版本。
> 发布操作见 [`docs/operations/DESKTOP_RELEASE.md`](../../docs/operations/DESKTOP_RELEASE.md)。
@@ -13,7 +13,7 @@ Electron 薄壳:把**既有控制台**(`127.0.0.1:/console`)装进
```
apps/desktop/
-├── package.json # private + 0.1.0(与 npm 五个 lockstep 包同版本)
+├── package.json # private + 0.1.1(与 npm 五个 lockstep 包同版本)
├── electron-builder.yml # 安装包配置(runtime/node_modules → resources/node_modules)
├── runtime/ # 发布 tarball 安装出的运行时(不入库)
├── src/main/ # Electron 主进程:daemon.mjs(托管逻辑,纯可测)/ index.mjs(壳)/ ipc.mjs / tray-icons.mjs
@@ -32,7 +32,7 @@ npm run dev -- --home ~/.mebular --port 7331 # 透传参数(可选)
npm run smoke # 无 GUI 有界冒烟(CI 用)
```
-## 安装包(v0.1.0,unsigned)
+## 安装包(v0.1.1,unsigned)
安装包里的 Mebular 运行时**不来自仓库源码目录**,而是先用 `npm pack` 产出五个发布
tarball,再由 `prepare-runtime` 一次性 `npm install --omit=dev --ignore-scripts` 到
@@ -75,7 +75,7 @@ node apps/desktop/scripts/smoke-runtime.mjs --runtime apps/desktop/dist/win-unpa
node apps/desktop/scripts/smoke-runtime.mjs --runtime apps/desktop/dist/linux-unpacked/resources
```
-> v0.1.0 产物**未签名、未公证**:macOS Gatekeeper 要求右键 → 打开(或系统设置 → 隐私与
+> v0.1.1 产物**未签名、未公证**:macOS Gatekeeper 要求右键 → 打开(或系统设置 → 隐私与
> 安全性 → 仍要打开),Windows SmartScreen 要求「更多信息 → 仍要运行」。发布前先用
> Release 的 `SHA256SUMS.txt` 校验。签名、公证与自动更新留到后续版本;完整说明见
> [`docs/operations/DESKTOP_RELEASE.md`](../../docs/operations/DESKTOP_RELEASE.md)。
diff --git a/apps/desktop/package-lock.json b/apps/desktop/package-lock.json
index e80b04f6..6d83e859 100644
--- a/apps/desktop/package-lock.json
+++ b/apps/desktop/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@mebular/desktop",
- "version": "0.1.0",
+ "version": "0.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@mebular/desktop",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"devDependencies": {
"electron": "42.11.18",
diff --git a/apps/desktop/package.json b/apps/desktop/package.json
index 316a60ab..b18b4928 100644
--- a/apps/desktop/package.json
+++ b/apps/desktop/package.json
@@ -2,7 +2,7 @@
"name": "@mebular/desktop",
"productName": "Mebular",
"desktopName": "mebular",
- "version": "0.1.0",
+ "version": "0.1.1",
"private": true,
"description": "Mebular 桌面应用(Electron 壳 + 内嵌控制台 + 守护托管)",
"license": "MIT",
diff --git a/apps/desktop/src/main/daemon.mjs b/apps/desktop/src/main/daemon.mjs
index 510f441f..5590d47e 100644
--- a/apps/desktop/src/main/daemon.mjs
+++ b/apps/desktop/src/main/daemon.mjs
@@ -12,7 +12,7 @@ import { homedir } from 'node:os';
import { dirname, join, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
-export const APP_VERSION = '0.1.0';
+export const APP_VERSION = '0.1.1';
export const SERVICE_KIND = 'mebular-serve';
/** 仓库根(apps/desktop/src/main → 上溯 4 层);打包态由 resources 决定。 */
diff --git a/assets/desktop-steps-cn-light.svg b/assets/desktop-steps-cn-light.svg
index da494cf8..1b56d33c 100644
--- a/assets/desktop-steps-cn-light.svg
+++ b/assets/desktop-steps-cn-light.svg
@@ -7,5 +7,5 @@
- 桌面 App从安装到锁定、可用的控制台。1开始部署启动本机服务,接入这台机器上已装好的助手。2新建或加入忆云第一台设备填忆云名;后续设备粘贴一次性令牌。3邀请下一台设备在顶栏点「邀请设备」,把令牌交给下一台机器。v0.1.0 · macOS Universal、Windows x64、Linux x64首发未签名;签名与公证留待后续版本。
+ 桌面 App从安装到锁定、可用的控制台。1开始部署启动本机服务,接入这台机器上已装好的助手。2新建或加入忆云第一台设备填忆云名;后续设备粘贴一次性令牌。3邀请下一台设备在顶栏点「邀请设备」,把令牌交给下一台机器。v0.1.1 · macOS Universal、Windows x64、Linux x64未签名发布;签名与公证留待后续版本。
\ No newline at end of file
diff --git a/assets/desktop-steps-cn.svg b/assets/desktop-steps-cn.svg
index 3895dcf3..31c51790 100644
--- a/assets/desktop-steps-cn.svg
+++ b/assets/desktop-steps-cn.svg
@@ -7,5 +7,5 @@
- 桌面 App从安装到锁定、可用的控制台。1开始部署启动本机服务,接入这台机器上已装好的助手。2新建或加入忆云第一台设备填忆云名;后续设备粘贴一次性令牌。3邀请下一台设备在顶栏点「邀请设备」,把令牌交给下一台机器。v0.1.0 · macOS Universal、Windows x64、Linux x64首发未签名;签名与公证留待后续版本。
+ 桌面 App从安装到锁定、可用的控制台。1开始部署启动本机服务,接入这台机器上已装好的助手。2新建或加入忆云第一台设备填忆云名;后续设备粘贴一次性令牌。3邀请下一台设备在顶栏点「邀请设备」,把令牌交给下一台机器。v0.1.1 · macOS Universal、Windows x64、Linux x64未签名发布;签名与公证留待后续版本。
\ No newline at end of file
diff --git a/assets/desktop-steps-en-light.svg b/assets/desktop-steps-en-light.svg
index 6e039914..9e55390a 100644
--- a/assets/desktop-steps-en-light.svg
+++ b/assets/desktop-steps-en-light.svg
@@ -7,5 +7,5 @@
- DESKTOP APPFrom install to a locked, ready console.1Start deploymentStarts the local serviceand connects yourinstalled assistants.2Create or join a CloudName it on the first device.Paste a one-time tokenon later ones.3Invite the next deviceOpen Invite device in thetop bar and hand thetoken to the next machine.v0.1.0 · macOS Universal, Windows x64, Linux x64Unsigned first release; signing and notarization follow.
+ DESKTOP APPFrom install to a locked, ready console.1Start deploymentStarts the local serviceand connects yourinstalled assistants.2Create or join a CloudName it on the first device.Paste a one-time tokenon later ones.3Invite the next deviceOpen Invite device in thetop bar and hand thetoken to the next machine.v0.1.1 · macOS Universal, Windows x64, Linux x64Unsigned release; signing and notarization follow.
\ No newline at end of file
diff --git a/assets/desktop-steps-en.svg b/assets/desktop-steps-en.svg
index 2a9879a4..a3f45828 100644
--- a/assets/desktop-steps-en.svg
+++ b/assets/desktop-steps-en.svg
@@ -7,5 +7,5 @@
- DESKTOP APPFrom install to a locked, ready console.1Start deploymentStarts the local serviceand connects yourinstalled assistants.2Create or join a CloudName it on the first device.Paste a one-time tokenon later ones.3Invite the next deviceOpen Invite device in thetop bar and hand thetoken to the next machine.v0.1.0 · macOS Universal, Windows x64, Linux x64Unsigned first release; signing and notarization follow.
+ DESKTOP APPFrom install to a locked, ready console.1Start deploymentStarts the local serviceand connects yourinstalled assistants.2Create or join a CloudName it on the first device.Paste a one-time tokenon later ones.3Invite the next deviceOpen Invite device in thetop bar and hand thetoken to the next machine.v0.1.1 · macOS Universal, Windows x64, Linux x64Unsigned release; signing and notarization follow.
\ No newline at end of file
diff --git a/docs/architecture/ARCHITECT.md b/docs/architecture/ARCHITECT.md
index c57ecd58..1d6654b2 100644
--- a/docs/architecture/ARCHITECT.md
+++ b/docs/architecture/ARCHITECT.md
@@ -93,9 +93,9 @@ UNINITIALIZED ── create/join ──▶ INITIALIZING ──▶ READY
- 5 个 lockstep npm 包:`@mebular/core`、`@mebular/service`、`@mebular/fleet`、`@mebular/mcp`、
`@mebular/skill`;根包提供 `mebular` + `fleet` 双 bin。
-- `@mebular/dsh-plugin` 独立版本线,与 v0.1.0 同批发布,但不进入五包 lockstep。
+- `@mebular/dsh-plugin` 独立版本线,与 v0.1.1 同批发布,但不进入五包 lockstep。
- `packages/console` 与 `apps/desktop` 为 private 工作包,不单独发布;控制台随根包/守护分发。
-- Electron 桌面壳包含窗口、托盘、守护托管和云切换;v0.1.0 已纳入三平台 **unsigned** 安装包
+- Electron 桌面壳包含窗口、托盘、守护托管和云切换;v0.1.1 已纳入三平台 **unsigned** 安装包
(macOS Universal DMG、Windows NSIS x64、Linux AppImage/deb x64)。安装包 runtime 来自与
npm 发布同一批 verify tarball,并自带 Electron。签名、公证、自动更新在后续版本处理。
diff --git a/docs/dsh/awesome-dsh-plugin-entry.yml b/docs/dsh/awesome-dsh-plugin-entry.yml
index 7bbaf37a..2d28bbaa 100644
--- a/docs/dsh/awesome-dsh-plugin-entry.yml
+++ b/docs/dsh/awesome-dsh-plugin-entry.yml
@@ -6,7 +6,7 @@
# 说明: 这是 monorepo 子包条目,url 指向 packages/dsh-plugin;name 使用
# owner/repo#subname。以下字段与目标仓库当前条目保持一致。
#
-# 安装: dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+# 安装: dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
# 兼容: DSH >=0.2.1-rc.2 <0.3.0, Node.js >=22.19
url: https://github.com/Windsander/Mebular/tree/main/packages/dsh-plugin
diff --git a/docs/getting-started/QUICKSTART.md b/docs/getting-started/QUICKSTART.md
index f9ef38f6..0c15ff55 100644
--- a/docs/getting-started/QUICKSTART.md
+++ b/docs/getting-started/QUICKSTART.md
@@ -10,12 +10,12 @@ source paths need Node.js >= 20; check with `node -v`.
## 1. Desktop app (recommended)
-1. Download the app from [GitHub Releases](https://github.com/Windsander/Mebular/releases/tag/v0.1.0) and open it.
+1. Download the app from [GitHub Releases](https://github.com/Windsander/Mebular/releases/tag/v0.1.1) and open it.
2. Click **Start deployment**. It starts the local service on this machine, connects the AI assistants already
installed here, and opens the **locked main console**.
3. Choose **Create new Cloud** on your first device, or **Join existing Cloud** on a later one.
-> The v0.1.0 installers are unsigned. Verify `SHA256SUMS.txt` first, then use right-click → **Open**
+> The v0.1.1 installers are unsigned. Verify `SHA256SUMS.txt` first, then use right-click → **Open**
> on macOS or **More info → Run anyway** on Windows. The package bundles Electron and its runtime;
> no local Node.js is needed. Details: [desktop release](../operations/DESKTOP_RELEASE.md).
diff --git a/docs/getting-started/QUICKSTART_CN.md b/docs/getting-started/QUICKSTART_CN.md
index 6ad8cbd1..67770c83 100644
--- a/docs/getting-started/QUICKSTART_CN.md
+++ b/docs/getting-started/QUICKSTART_CN.md
@@ -10,11 +10,11 @@ Mebular 是给 AI 助手用的本地优先记忆层:一台机器跑一个节
## 1. 桌面 App(推荐)
-1. 从 [GitHub Releases](https://github.com/Windsander/Mebular/releases/tag/v0.1.0) 下载 App 并打开。
+1. 从 [GitHub Releases](https://github.com/Windsander/Mebular/releases/tag/v0.1.1) 下载 App 并打开。
2. 点「开始部署」。它会启动本机服务、自动接入本机已装的 AI 助手,然后进入**锁定主控制台**。
3. 第一台设备点「新建忆云」,后续设备点「加入忆云」。
-> v0.1.0 安装包未签名。请先用 `SHA256SUMS.txt` 校验,再在 macOS 上右键 →「打开」,
+> v0.1.1 安装包未签名。请先用 `SHA256SUMS.txt` 校验,再在 macOS 上右键 →「打开」,
> 或在 Windows 上选「更多信息 → 仍要运行」。安装包自带 Electron 与 runtime,不需要本机
> Node.js。详见[桌面安装包发布](../operations/DESKTOP_RELEASE.md)。
diff --git a/docs/integrations/DSH.md b/docs/integrations/DSH.md
index b1c93b67..34a908f6 100644
--- a/docs/integrations/DSH.md
+++ b/docs/integrations/DSH.md
@@ -37,10 +37,10 @@ surface: `/healthz`, `/app/embed/info`, `/mcp` and `/console/?embed=dsh`.
## Install
-From v0.1.0, install the plugin from npm into DSH's web profile:
+Install the plugin from npm into DSH's web profile:
```bash
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
```
For plugin development, install from the repository checkout instead:
@@ -49,7 +49,7 @@ For plugin development, install from the repository checkout instead:
dsh plugin --profile web add ./packages/dsh-plugin
```
-`@mebular/dsh-plugin` has its own version line: it ships with the Mebular v0.1.0 release
+`@mebular/dsh-plugin` has its own version line: it ships with the Mebular v0.1.1 release
train, but its version comes only from `packages/dsh-plugin/package.json` and it is not part
of the five-package lockstep. The plugin is listed in
[awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) under **memory**
@@ -168,9 +168,9 @@ whole, not a separate package repo, so discovery points back here. See the
## Release and versioning
-- The plugin has its own version, `0.1.0`, and its own npm lifecycle.
-- It ships on the **same release train** as Mebular v0.1.0, so the first public plugin and
- the first public Mebular release land together.
+- The plugin has its own version, `0.1.1`, and its own npm lifecycle.
+- It ships on the **same release train** as Mebular v0.1.1; both packages are at `0.1.1`
+ in this release.
- It is **not** part of the five-package lockstep (`core`, `service`, `skill`, `mcp`,
`fleet`). Those five always share one version; the plugin can move independently.
- Publish is idempotent: the `publish-dsh` workflow job reads the version from
diff --git a/docs/integrations/DSH_CN.md b/docs/integrations/DSH_CN.md
index 562bfeec..53b7bc18 100644
--- a/docs/integrations/DSH_CN.md
+++ b/docs/integrations/DSH_CN.md
@@ -35,10 +35,10 @@
## 安装
-v0.1.0 起从 npm 安装到 DSH 的 Web profile:
+从 npm 安装到 DSH 的 Web profile:
```bash
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
```
插件开发时仍可从仓库工作树安装:
@@ -47,7 +47,7 @@ dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
dsh plugin --profile web add ./packages/dsh-plugin
```
-`@mebular/dsh-plugin` 是独立版本线:随 Mebular v0.1.0 release train 发布,但版本号只取自
+`@mebular/dsh-plugin` 是独立版本线:随 Mebular v0.1.1 release train 发布,但版本号只取自
`packages/dsh-plugin/package.json`,不进入五包 lockstep。插件已收录于
[awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 的 **memory**
分类(PR [#9167](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9167))。
@@ -155,9 +155,8 @@ Mebular 仓库,而不是一个独立包仓库,所以搜索会回到这里。
## 发布与版本
-- 插件独立版本 `0.1.0`,有独立的 npm 生命周期。
-- 它和 Mebular v0.1.0 走**同一条 release train**,首个公开插件与首个公开 Mebular 版本一起
- 落地。
+- 插件独立版本 `0.1.1`,有独立的 npm 生命周期。
+- 它和 Mebular v0.1.1 走**同一条 release train**;本版两者都是 `0.1.1`。
- 它**不进入**五包 lockstep(`core`、`service`、`skill`、`mcp`、`fleet`):那五个包永远同
版本,插件可以单独前进。
- 发布是幂等的:`publish-dsh` job 从 `packages/dsh-plugin/package.json` 读取版本,
diff --git a/docs/operations/DESKTOP_RELEASE.md b/docs/operations/DESKTOP_RELEASE.md
index f914f95f..06c60dd4 100644
--- a/docs/operations/DESKTOP_RELEASE.md
+++ b/docs/operations/DESKTOP_RELEASE.md
@@ -1,18 +1,18 @@
# 桌面安装包发布
-面向 Mebular v0.1.0 的桌面安装包构建、验收与后续签名计划。发布流程总览见
+面向 Mebular v0.1.1 的桌面安装包构建、验收与后续签名计划。发布流程总览见
[`RELEASE.md`](RELEASE.md)。
-## 0. v0.1.0 范围
+## 0. v0.1.1 范围
| 平台 | 目标 | 架构 | 产物 |
| --- | --- | --- | --- |
-| macOS | DMG | Universal(arm64 + x64) | `Mebular-0.1.0-universal.dmg` |
-| Windows | NSIS | x64 | `Mebular-Setup-0.1.0.exe` |
-| Linux | AppImage | x64 | `Mebular-0.1.0-x86_64.AppImage` |
-| Linux | deb | x64 | `Mebular-0.1.0-amd64.deb` |
+| macOS | DMG | Universal(arm64 + x64) | `Mebular-0.1.1-universal.dmg` |
+| Windows | NSIS | x64 | `Mebular-Setup-0.1.1.exe` |
+| Linux | AppImage | x64 | `Mebular-0.1.1-x86_64.AppImage` |
+| Linux | deb | x64 | `Mebular-0.1.1-amd64.deb` |
-- 全部为 **unsigned** 首发;不做代码签名、公证或自动更新。
+- 全部为 **unsigned** 发布;不做代码签名、公证或自动更新。
- 每个安装包都自带 Electron 和一份完整的 Mebular runtime,**不需要本机 Node.js**,也不依赖
仓库源码目录。
- GitHub Release 同时提供 `SHA256SUMS.txt`,覆盖上面 4 个安装包。
@@ -157,26 +157,26 @@ electron-builder 的 `artifactName` 固定为:
| 平台 | 配置 | 最终文件名 |
| --- | --- | --- |
-| macOS | `Mebular-${version}-${arch}.${ext}` + `--universal` | `Mebular-0.1.0-universal.dmg` |
-| Windows | `Mebular-Setup-${version}.${ext}` | `Mebular-Setup-0.1.0.exe` |
-| Linux AppImage | `Mebular-${version}-${arch}.${ext}` + x64 | `Mebular-0.1.0-x86_64.AppImage` |
-| Linux deb | 同上;deb 的 arch 宏为 `amd64` | `Mebular-0.1.0-amd64.deb` |
+| macOS | `Mebular-${version}-${arch}.${ext}` + `--universal` | `Mebular-0.1.1-universal.dmg` |
+| Windows | `Mebular-Setup-${version}.${ext}` | `Mebular-Setup-0.1.1.exe` |
+| Linux AppImage | `Mebular-${version}-${arch}.${ext}` + x64 | `Mebular-0.1.1-x86_64.AppImage` |
+| Linux deb | 同上;deb 的 arch 宏为 `amd64` | `Mebular-0.1.1-amd64.deb` |
`SHA256SUMS.txt` 由 release job 在 Linux 上生成,只包含安装包,按文件名 `LC_ALL=C sort`
排序,例如:
```text
- Mebular-0.1.0-amd64.deb
- Mebular-0.1.0-universal.dmg
- Mebular-0.1.0-x86_64.AppImage
- Mebular-Setup-0.1.0.exe
+ Mebular-0.1.1-amd64.deb
+ Mebular-0.1.1-universal.dmg
+ Mebular-0.1.1-x86_64.AppImage
+ Mebular-Setup-0.1.1.exe
```
dry-run 不会生成这个文件;它只在正式 `release` job 创建 GitHub Release 时产生。
## 4. unsigned 安装体验
-v0.1.0 没有 Apple Developer ID、公证或 Windows 代码签名证书。用户会看到系统安全提示,
+v0.1.1 没有 Apple Developer ID、公证或 Windows 代码签名证书。用户会看到系统安全提示,
这是预期行为,不是安装包损坏。
### 4.1 先校验
@@ -202,17 +202,17 @@ Windows 可用 PowerShell 的 `Get-FileHash -Algorithm SHA256` 对照 `SHA256SUM
### 4.3 Windows SmartScreen
-1. 运行 `Mebular-Setup-0.1.0.exe`。
+1. 运行 `Mebular-Setup-0.1.1.exe`。
2. 出现「Windows 已保护你的电脑」时点「更多信息」,再点「仍要运行」。
### 4.4 Linux
```bash
-chmod +x Mebular-0.1.0-x86_64.AppImage
-./Mebular-0.1.0-x86_64.AppImage
+chmod +x Mebular-0.1.1-x86_64.AppImage
+./Mebular-0.1.1-x86_64.AppImage
# Debian / Ubuntu
-sudo apt install ./Mebular-0.1.0-amd64.deb
+sudo apt install ./Mebular-0.1.1-amd64.deb
```
AppImage 需要 FUSE;没有 FUSE 时可使用 `--appimage-extract-and-run`。deb 安装后从应用菜单
@@ -257,7 +257,7 @@ node apps/desktop/scripts/smoke-runtime.mjs --runtime apps/desktop/dist/linux-un
## 6. 签名、公证与自动更新(后续)
-v0.1.0 明确不签名。后续版本的建议顺序:
+v0.1.1 明确不签名。后续版本的建议顺序:
1. **macOS**:申请 Developer ID Application 证书;在 CI 注入 `CSC_LINK` /
`CSC_KEY_PASSWORD`,移除 `electron-builder.yml` 的 `identity: null`;用
diff --git a/docs/operations/RELEASE.md b/docs/operations/RELEASE.md
index e4d08eda..f9ed1bc6 100644
--- a/docs/operations/RELEASE.md
+++ b/docs/operations/RELEASE.md
@@ -3,7 +3,7 @@
面向 `@mebular/*` npm 包与三平台桌面安装包的发布操作手册。核心约束:**分支名即版本号
(SSOT)**、**先构建安装包再发 npm**、**幂等发布**、**按 ref 串行**。
-v0.1.0 一次交付:
+当前 v0.1.1 交付:
- 5 个 lockstep npm 包 + 1 个独立版本插件;
- macOS Universal DMG、Windows NSIS x64、Linux AppImage + deb x64(unsigned);
@@ -21,9 +21,9 @@ v0.1.0 一次交付:
| `@mebular/dsh-plugin` | `packages/dsh-plugin` | DeepSeek Harness 插件;**独立版本线**,不参与 lockstep |
- **版本策略**:5 个 lockstep 包(`core` / `service` / `skill` / `mcp` / `fleet`)永远同版本号。
-- **独立版本包**:`@mebular/dsh-plugin` 与 v0.1.0 同一 release train 首发(自身版本 `0.1.0`),
- 但版本号只取自 `packages/dsh-plugin/package.json`;`bump_version.sh` 不改它,verify 的
- lockstep 校验也不包含它。
+- **独立版本包**:`@mebular/dsh-plugin` 在 v0.1.1 与五包同版本发布(自身版本 `0.1.1`),
+ 但仍保留独立版本线;版本号只取自 `packages/dsh-plugin/package.json`;`bump_version.sh`
+ 不改它,verify 的 lockstep 校验也不包含它。
- **安装入口**:`npm install -g @mebular/core` 是根包,同时提供 `mebular` + `fleet` 两个 bin;
`@mebular/mcp` 单独安装只有 `mebular`,**不能**当作双 bin 安装入口。
- **桌面版本**:`apps/desktop/package.json`、`apps/desktop/package-lock.json` 与
@@ -73,7 +73,7 @@ v0.1.0 一次交付:
超时或被依赖一律 400。按包执行,lockstep 需 5 个包各跑一次,插件单独一次:
```bash
npm unpublish @mebular/core@0.2.0 # 重复 core → service → skill → mcp → fleet
- npm unpublish @mebular/dsh-plugin@0.1.0
+ npm unpublish @mebular/dsh-plugin@0.2.0
```
同一版本被删除后**不可再以相同版本号重新发布**,后续必须升号。
- **npm deprecate(常规手段)**:标记问题版本,安装时会打印警告但不阻断:
@@ -152,7 +152,7 @@ bash scripts/bump_version.sh v0.2.0 # 同步 5 包 + 桌面版本 + CH
`bump_version.sh` 只处理 lockstep 包与桌面版本;`@mebular/dsh-plugin` 的版本单独在
`packages/dsh-plugin/package.json` 维护。
-v0.1.0 的版本号已就位、CHANGELOG 章节已存在,**不需要**再跑 `bump_version.sh`。
+v0.1.1 的版本号已就位、CHANGELOG 章节已存在,**不需要**再跑 `bump_version.sh`。
### 3.2 本地预检(推荐)
@@ -230,8 +230,8 @@ sha256sum release-assets/* # Linux
```bash
git add -A
-git commit -m "release: v0.1.0"
-git push -u origin release/v0.1.0
+git commit -m "release: v0.1.1"
+git push -u origin release/v0.1.1
```
push 后自动执行第 2 节的完整流水线。任一 job 失败即停;安装包未全绿时不会发 npm。
@@ -239,7 +239,7 @@ push 后自动执行第 2 节的完整流水线。任一 job 失败即停;安
### 5.2 观察
```bash
-gh run list --workflow=publish.yml --branch release/v0.1.0 --limit 5
+gh run list --workflow=publish.yml --branch release/v0.1.1 --limit 5
gh run watch
gh run view --log-failed # 失败时
```
@@ -248,26 +248,26 @@ gh run view --log-failed # 失败时
```bash
# npm 六包
-for p in core service skill mcp fleet; do npm view "@mebular/$p@0.1.0" version; done
-npm view @mebular/dsh-plugin@0.1.0 version
+for p in core service skill mcp fleet; do npm view "@mebular/$p@0.1.1" version; done
+npm view @mebular/dsh-plugin@0.1.1 version
# GitHub Release
-gh release view v0.1.0
-gh release view v0.1.0 --json assets --jq '.assets[] | "\(.name) \(.size) bytes"'
+gh release view v0.1.1
+gh release view v0.1.1 --json assets --jq '.assets[] | "\(.name) \(.size) bytes"'
# 根包双 bin
-npm install -g @mebular/core@0.1.0
+npm install -g @mebular/core@0.1.1
command -v mebular && command -v fleet
mebular tools >/dev/null && fleet --version
```
-> 不要用 `npm install -g @mebular/mcp@0.1.0` 冒充双 bin 安装:`@mebular/mcp` 只提供
+> 不要用 `npm install -g @mebular/mcp@0.1.1` 冒充双 bin 安装:`@mebular/mcp` 只提供
> `mebular`,`fleet` 必须来自根包(或单独安装 `@mebular/fleet`)。
插件独立验证(先让 App / 守护运行):
```bash
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
dsh --profile web --dump-config | grep -A3 mebular # host row;transport 由官方 MCP client 挂载
# DSH 会话中确认 mcp__mebular__* 可调用;侧边栏面板加载 /console/?embed=dsh
```
@@ -289,7 +289,7 @@ MEBULAR_HOME="$(mktemp -d)" mebular serve --port 7399
从 Release 下载并校验:
```bash
-gh release download v0.1.0 -D release-assets
+gh release download v0.1.1 -D release-assets
cd release-assets
# Linux
@@ -312,8 +312,8 @@ Get-Content SHA256SUMS.txt | ForEach-Object {
- 文件名与第 0.1 节一致;没有额外平台包或调试产物;
- macOS 打开 DMG 后能启动;Windows NSIS 能安装并启动;Linux AppImage 可执行,deb 可安装;
- 首次启动能进入锁定控制台,`/healthz` 正常;
-- 全部为 **unsigned** 首发:macOS Gatekeeper 与 Windows SmartScreen 会拦截,按 Release
- notes 的绕过步骤操作。签名、公证与自动更新不在 v0.1.0 范围。
+- 全部为 **unsigned** 发布:macOS Gatekeeper 与 Windows SmartScreen 会拦截,按 Release
+ notes 的绕过步骤操作。签名、公证与自动更新不在 v0.1.1 范围。
安装包内的 runtime 结构、本地打包与签名后续见
[`DESKTOP_RELEASE.md`](DESKTOP_RELEASE.md)。
diff --git a/package-lock.json b/package-lock.json
index 25fffb47..ba6f60e4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@mebular/core",
- "version": "0.1.0",
+ "version": "0.1.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@mebular/core",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"workspaces": [
"packages/*"
@@ -9103,7 +9103,7 @@
},
"packages/dsh-plugin": {
"name": "@mebular/dsh-plugin",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"engines": {
"dsh": ">=0.2.1-rc.2 <0.3.0",
@@ -9115,7 +9115,7 @@
},
"packages/fleet": {
"name": "@mebular/fleet",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"dependencies": {
"@mebular/core": "file:../..",
@@ -9131,7 +9131,7 @@
},
"packages/mcp": {
"name": "@mebular/mcp",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"dependencies": {
"@mebular/core": "file:../..",
@@ -9148,7 +9148,7 @@
},
"packages/service": {
"name": "@mebular/service",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"engines": {
"node": ">=20"
@@ -9156,7 +9156,7 @@
},
"packages/skill": {
"name": "@mebular/skill",
- "version": "0.1.0",
+ "version": "0.1.1",
"license": "MIT",
"engines": {
"node": ">=20"
diff --git a/package.json b/package.json
index b3f607cf..a43e7675 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/core",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "本地优先的图式记忆系统:为 Hermes 等 Agent 提供跨设备、可离线、可验证的记忆共享层",
"license": "MIT",
"author": "Windsander",
diff --git a/packages/dsh-plugin/README.md b/packages/dsh-plugin/README.md
index 3f00d3b5..4cb756ce 100644
--- a/packages/dsh-plugin/README.md
+++ b/packages/dsh-plugin/README.md
@@ -32,10 +32,10 @@ curl -sS http://127.0.0.1:7331/healthz
## 安装
-v0.1.0 起从 npm 安装到 DSH 的 Web profile:
+从 npm 安装到 DSH 的 Web profile:
```bash
-dsh plugin --profile web add @mebular/dsh-plugin@0.1.0
+dsh plugin --profile web add @mebular/dsh-plugin@0.1.1
```
插件开发时仍可从仓库工作树安装:
@@ -47,7 +47,7 @@ dsh plugin --profile web add ./packages/dsh-plugin
安装后 `$DSH_HOME/profiles/web/package.json` 的 `dsh.profile.bundles` 会包含
`@mebular/dsh-plugin`。重启 DSH Web 后,侧边栏出现 Mebular 图标;点击后进入全局面板。
-> `@mebular/dsh-plugin` 是**独立版本线**:v0.1.0 与 Mebular v0.1.0 同一 release train,
+> `@mebular/dsh-plugin` 是**独立版本线**:v0.1.1 与 Mebular v0.1.1 同一 release train,
> 但版本号只由 `packages/dsh-plugin/package.json` 决定,不进入五包 lockstep。已收录于
> [awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 的 `memory`
> 分类(PR [#9167](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9167))。
@@ -203,7 +203,7 @@ curl -sS http://127.0.0.1:/mebular/embed-info
"mode": "attach",
"managed": false,
"panel": true,
- "version": "0.1.0",
+ "version": "0.1.1",
"embedProtocol": 1,
"consoleUrl": "http://127.0.0.1:7331/console",
"embedUrl": "http://127.0.0.1:7331/console/?embed=dsh",
@@ -334,10 +334,10 @@ npm run verify:dsh-plugin
## 发布状态
-- 版本:`0.1.0`
-- npm:`@mebular/dsh-plugin@0.1.0`(随 Mebular v0.1.0 release train,独立版本线)
+- 版本:`0.1.1`
+- npm:`@mebular/dsh-plugin@0.1.1`(随 Mebular v0.1.1 release train,独立版本线)
- 官方插件列表:已收录([awesome-dsh-plugin](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) 的 `memory` 分类,PR [#9167](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/pull/9167))
-- 正式安装:`dsh plugin --profile web add @mebular/dsh-plugin@0.1.0`
+- 正式安装:`dsh plugin --profile web add @mebular/dsh-plugin@0.1.1`
- 开发安装:`dsh plugin --profile web add ./packages/dsh-plugin`
- 版本线:不进入 `core` / `service` / `skill` / `mcp` / `fleet` 五包 lockstep
diff --git a/packages/dsh-plugin/package.json b/packages/dsh-plugin/package.json
index 19de477b..9a6ff07e 100644
--- a/packages/dsh-plugin/package.json
+++ b/packages/dsh-plugin/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/dsh-plugin",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Mebular memory, task graph, and shared Console for DeepSeek Harness",
"license": "MIT",
"author": "Windsander",
diff --git a/packages/fleet/package.json b/packages/fleet/package.json
index 680f7b52..db86345b 100644
--- a/packages/fleet/package.json
+++ b/packages/fleet/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/fleet",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Mebular 跨设备多 Agent 协作(任务=记忆):task-as-memory 的派发与回收,无中心协调",
"license": "MIT",
"private": false,
diff --git a/packages/mcp/package.json b/packages/mcp/package.json
index e27b23d6..c62743d2 100644
--- a/packages/mcp/package.json
+++ b/packages/mcp/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/mcp",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Mebular MCP server(stdio + Streamable HTTP):把 Mebular 记忆能力暴露给任意 MCP client",
"license": "MIT",
"private": false,
diff --git a/packages/mcp/scripts/publish-manifest.mjs b/packages/mcp/scripts/publish-manifest.mjs
index bd2c9db0..2a8db415 100644
--- a/packages/mcp/scripts/publish-manifest.mjs
+++ b/packages/mcp/scripts/publish-manifest.mjs
@@ -2,7 +2,7 @@
// G6.5 / D41:發布期改寫 @mebular/core 依賴。
//
// 開發期以 `file:../..` 本地連結(根包非 workspace 成員、本環境 npm 不支援 `workspace:`);
-// `npm pack`/`npm publish` 的 prepack 階段改為 `^0.1.0`,postpack 還原。
+// `npm pack`/`npm publish` 的 prepack 階段改為 `^0.1.1`,postpack 還原。
//
// 用法:node scripts/publish-manifest.mjs set|restore
@@ -14,7 +14,7 @@ import { fileURLToPath } from 'node:url';
const pkgDir = join(dirname(fileURLToPath(import.meta.url)), '..');
const pkgFile = join(pkgDir, 'package.json');
const backupFile = `${pkgFile}.packbak`;
-const PUBLISH_RANGE = '^0.1.0';
+const PUBLISH_RANGE = '^0.1.1';
const action = process.argv[2];
diff --git a/packages/mcp/src/client.mjs b/packages/mcp/src/client.mjs
index 998871dd..10341194 100644
--- a/packages/mcp/src/client.mjs
+++ b/packages/mcp/src/client.mjs
@@ -39,7 +39,7 @@ export async function callToolViaHttp({ endpoint, token, name, args, timeoutMs =
jsonrpc: '2.0',
id: 1,
method: 'initialize',
- params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'mebular-cli', version: '0.1.0' } },
+ params: { protocolVersion: '2024-11-05', capabilities: {}, clientInfo: { name: 'mebular-cli', version: '0.1.1' } },
}, null, timeoutMs);
const sessionId = init.sessionId;
await rpc(url, token, { jsonrpc: '2.0', method: 'notifications/initialized' }, sessionId, timeoutMs);
diff --git a/packages/mcp/src/serve.mjs b/packages/mcp/src/serve.mjs
index 8d34ea54..5c6531de 100644
--- a/packages/mcp/src/serve.mjs
+++ b/packages/mcp/src/serve.mjs
@@ -221,7 +221,7 @@ function settleWithin(promise, ms) {
// /healthz、/app/embed/info 与 /runtime.json 共用的对外版本号与 embed 协议版本。
// 单一真源:不要在 buildEmbedInfo / runtime 写入处再写字面量。
-export const APP_VERSION = '0.1.0';
+export const APP_VERSION = '0.1.1';
export const EMBED_PROTOCOL = 1;
// ---------- 控制台静态托管(D1) ----------
diff --git a/packages/mcp/src/server.mjs b/packages/mcp/src/server.mjs
index e33596f8..914199c3 100644
--- a/packages/mcp/src/server.mjs
+++ b/packages/mcp/src/server.mjs
@@ -26,7 +26,7 @@ const MEMORY_POLICY = `# Mebular 记忆使用规约(memory_policy)
6. 无结果别编:召回为空就如实说明,不要臆造记忆。`;
export function buildServer(service, options = {}) {
- const server = new McpServer({ name: 'mebular', version: '0.1.0' });
+ const server = new McpServer({ name: 'mebular', version: '0.1.1' });
registerTools(server, service, options);
server.registerPrompt(
'memory_policy',
diff --git a/packages/service/package.json b/packages/service/package.json
index 8e68465e..5d1fd7e0 100644
--- a/packages/service/package.json
+++ b/packages/service/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/service",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Mebular 常驻组件服务化:平台单元生成(launchd/systemd/Task Scheduler)+ install/uninstall/status/logs + 进程心跳",
"license": "MIT",
"private": false,
diff --git a/packages/skill/package.json b/packages/skill/package.json
index 7b5bc4e9..e7c61e16 100644
--- a/packages/skill/package.json
+++ b/packages/skill/package.json
@@ -1,6 +1,6 @@
{
"name": "@mebular/skill",
- "version": "0.1.0",
+ "version": "0.1.1",
"description": "Mebular 行为层:可移植的 SKILL.md + MEMORY_POLICY.md 与各 MCP client 接入片段",
"license": "MIT",
"private": false,
diff --git a/scripts/verify-dsh-plugin.mjs b/scripts/verify-dsh-plugin.mjs
index 614df6c7..18615c37 100644
--- a/scripts/verify-dsh-plugin.mjs
+++ b/scripts/verify-dsh-plugin.mjs
@@ -67,7 +67,7 @@ if (existsSync(pkgJsonPath)) {
}
check('name is @mebular/dsh-plugin', pkg.name === '@mebular/dsh-plugin', String(pkg.name));
-check('version is 0.1.0', pkg.version === '0.1.0', String(pkg.version));
+check('version is 0.1.1', pkg.version === '0.1.1', String(pkg.version));
check(
'description is present',
typeof pkg.description === 'string' && pkg.description.length > 0,
@@ -299,7 +299,7 @@ check(
check('README documents the npm name', readme.includes('@mebular/dsh-plugin'));
check(
'README documents npm install',
- readme.includes('dsh plugin --profile web add @mebular/dsh-plugin@0.1.0'),
+ readme.includes('dsh plugin --profile web add @mebular/dsh-plugin@0.1.1'),
);
check(
'README does not claim the npm package is unpublished',
diff --git a/scripts/verify-mcp-publish.mjs b/scripts/verify-mcp-publish.mjs
index 0f557389..f34b5afe 100644
--- a/scripts/verify-mcp-publish.mjs
+++ b/scripts/verify-mcp-publish.mjs
@@ -3,7 +3,7 @@
//
// 1) 對五個可發布套件(@mebular/core / service / fleet / mcp / skill)npm pack;
// 檢驗 tarball 內容,且 mcp/fleet 內的 `@mebular/*` 已於 prepack 由 `file:` 改寫為
-// `^0.1.0`,pack 後本地依賴已還原、備份已清除。
+// `^0.1.1`,pack 後本地依賴已還原、備份已清除。
// 2) 用產出的 tarball 在乾淨目錄安裝;以安裝後的 `mebular status`、`mebular mcp`
// (真实 MCP client)、`fleet --version` 與 `@mebular/skill/scripts/install.mjs` 做冒煙。
// `qrcode-generator@2.0.4` 是 fleet/core 的普通 npm 依賴,安裝時由 registry 解析。
@@ -76,10 +76,10 @@ try {
const mcpManifest = manifestOf(mcp.file);
const fleetManifest = manifestOf(fleet.file);
const coreManifestForDeps = manifestOf(core.file);
- check('mcp tarball 依賴 @mebular/core=^0.1.0', mcpManifest.dependencies?.['@mebular/core'] === '^0.1.0', mcpManifest.dependencies?.['@mebular/core']);
- check('mcp tarball 依賴 @mebular/fleet=^0.1.0', mcpManifest.dependencies?.['@mebular/fleet'] === '^0.1.0', mcpManifest.dependencies?.['@mebular/fleet']);
- check('fleet tarball 依賴 @mebular/core=^0.1.0', fleetManifest.dependencies?.['@mebular/core'] === '^0.1.0', fleetManifest.dependencies?.['@mebular/core']);
- check('fleet tarball 依賴 @mebular/service=^0.1.0', fleetManifest.dependencies?.['@mebular/service'] === '^0.1.0', fleetManifest.dependencies?.['@mebular/service']);
+ check('mcp tarball 依賴 @mebular/core=^0.1.1', mcpManifest.dependencies?.['@mebular/core'] === '^0.1.1', mcpManifest.dependencies?.['@mebular/core']);
+ check('mcp tarball 依賴 @mebular/fleet=^0.1.1', mcpManifest.dependencies?.['@mebular/fleet'] === '^0.1.1', mcpManifest.dependencies?.['@mebular/fleet']);
+ check('fleet tarball 依賴 @mebular/core=^0.1.1', fleetManifest.dependencies?.['@mebular/core'] === '^0.1.1', fleetManifest.dependencies?.['@mebular/core']);
+ check('fleet tarball 依賴 @mebular/service=^0.1.1', fleetManifest.dependencies?.['@mebular/service'] === '^0.1.1', fleetManifest.dependencies?.['@mebular/service']);
check('fleet tarball 依賴 qrcode-generator=2.0.4', fleetManifest.dependencies?.['qrcode-generator'] === '2.0.4', fleetManifest.dependencies?.['qrcode-generator']);
check('core tarball 依賴 qrcode-generator=2.0.4', coreManifestForDeps.dependencies?.['qrcode-generator'] === '2.0.4', coreManifestForDeps.dependencies?.['qrcode-generator']);
const leaks = [
@@ -138,7 +138,7 @@ try {
{ cwd: work, stdio: ['ignore', 'ignore', 'inherit'], env: process.env },
);
const installedCore = JSON.parse(await readFile(join(work, 'node_modules', '@mebular', 'core', 'package.json'), 'utf-8'));
- check('tarball 安裝:@mebular/core@0.1.0', installedCore.version === '0.1.0', installedCore.version);
+ check('tarball 安裝:@mebular/core@0.1.1', installedCore.version === '0.1.1', installedCore.version);
check(
'tarball 安裝:五包齊備',
['core', 'service', 'fleet', 'mcp', 'skill'].every((name) => existsSync(join(work, 'node_modules', '@mebular', name))),
@@ -156,7 +156,7 @@ try {
check('安裝後 mebular status', /^[0-9a-f]{64}$/.test(statusOut.stateHash ?? ''), `deviceId=${statusOut.deviceId}`);
// 安裝後的 stdio MCP 冒煙(真实 MCP client)
- client = new Client({ name: 'mebular-publish-smoke', version: '0.1.0' });
+ client = new Client({ name: 'mebular-publish-smoke', version: '0.1.1' });
const transport = new StdioClientTransport({ command: process.execPath, args: [bin, 'mcp'], env, stderr: 'pipe' });
await client.connect(transport);
const { tools } = await client.listTools();
@@ -183,7 +183,7 @@ try {
// 安裝後的 fleet CLI(來自 fleet tarball)
const fleetBin = join(work, 'node_modules', '.bin', 'fleet');
const fleetOut = execFileSync(process.execPath, [fleetBin, '--version'], { cwd: work, encoding: 'utf-8', env });
- check('安裝後 fleet --version', /0\.1\.0/.test(fleetOut), fleetOut.trim().split('\n').pop());
+ check('安裝後 fleet --version', /0\.1\.1/.test(fleetOut), fleetOut.trim().split('\n').pop());
// ---------- F-INST-1:根包自足(`npm i -g github:…#` 一條命令裝出可用 CLI) ----------
const coreManifest = manifestOf(core.file);
diff --git a/tests/dsh/manifest.test.mjs b/tests/dsh/manifest.test.mjs
index f7285baf..8394cf09 100644
--- a/tests/dsh/manifest.test.mjs
+++ b/tests/dsh/manifest.test.mjs
@@ -19,7 +19,7 @@ const client = read('client.js');
describe('P2 @mebular/dsh-plugin manifest:DSH bundle 形状', () => {
it('package.json 标识、入口与 exports 完整', () => {
expect(pkg.name).toBe('@mebular/dsh-plugin');
- expect(pkg.version).toBe('0.1.0');
+ expect(pkg.version).toBe('0.1.1');
expect(pkg.license).toBe('MIT');
expect(pkg.type).toBe('module');
expect(pkg.main).toBe('index.js');
diff --git a/tests/mcp/console-embed.test.mjs b/tests/mcp/console-embed.test.mjs
index 6848f75b..73f0d477 100644
--- a/tests/mcp/console-embed.test.mjs
+++ b/tests/mcp/console-embed.test.mjs
@@ -115,7 +115,7 @@ describe('P1 console embed:真实 HTTP server', () => {
loopback: true,
capabilities: { embedConsole: true },
});
- expect(APP_VERSION).toBe('0.1.0');
+ expect(APP_VERSION).toBe('0.1.1');
const serialized = JSON.stringify(info).toLowerCase();
for (const word of ['token', 'secret', 'key', 'config', 'home']) {
expect(serialized).not.toContain(word);