From fd4554ef9815ae914efac2ce4f63f82112ec3eee Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 14:06:18 +0800 Subject: [PATCH 1/9] chore(release): prepare stable package versions --- .changeset/align-release-token-dry.md | 5 - .changeset/bds-log-filter-solid.md | 6 - .changeset/bds-log-translate-filter.md | 6 - .changeset/bds-pack-update-move.md | 9 - .changeset/bds-update-progress-changelog.md | 6 - .changeset/bds-update-stop-race.md | 6 - .../bedrock-native-deps-and-scoped-clients.md | 13 - .changeset/build-deps-world-packs-solid.md | 6 - .changeset/calm-cows-kick.md | 5 - .changeset/chat-channel-qq-forwarding.md | 7 - .changeset/clear-standing-tests.md | 5 - .changeset/cli-author-surface.md | 8 - .changeset/config-manager-notify-all.md | 8 - .changeset/current-script-api-versions.md | 6 - .changeset/devkit-authoring.md | 8 - .changeset/drop-compat-public-exports.md | 13 - .changeset/drop-mod-create-link-dev.md | 30 -- .changeset/fix-ingame-help-registration.md | 11 - .changeset/fix-scan-dest-occupancy-merge.md | 5 - .changeset/four-turtles-lay.md | 14 - .changeset/friendly-qq-menus.md | 5 - .changeset/gentle-panels-rest.md | 5 - .changeset/khaki-sheep-refuse.md | 6 - .changeset/linux-bds-host.md | 7 - .changeset/live-qq-status.md | 8 - .changeset/llbot-path-dir-spawn.md | 5 - .changeset/llbot-ws-reply.md | 5 - .changeset/manage-qq-tunnel.md | 6 - .changeset/mod-install-npm.md | 16 - .changeset/mod-publish.md | 17 -- .changeset/mod-toggle-local-lock.md | 7 - .changeset/module-index-only.md | 6 - .../native-command-aliases-and-subcommands.md | 5 - .changeset/new-module-template-parity.md | 5 - .changeset/ninety-showers-call.md | 6 - .changeset/npm-create-module-authoring.md | 7 - .changeset/packs-doctor-world-experiments.md | 9 - .../persist-chat-channel-preferences.md | 5 - .changeset/pnpm-stable-release-prep.md | 7 - .changeset/pre.json | 122 -------- .changeset/publish-gh-pr.md | 16 - .changeset/qq-admin-submenu.md | 5 - .changeset/qq-approval-flow-p2.md | 7 - .changeset/qq-chat-bridge-p4.md | 8 - .changeset/qq-command-menu-p0.md | 6 - .changeset/qq-event-push-p2.md | 7 - .changeset/qq-full-group-commands.md | 5 - .changeset/qq-link-join-settings.md | 6 - .changeset/qq-menu-cli-restart.md | 6 - .changeset/qq-menu-panel-bind-p1.md | 7 - .changeset/qq-official-bridge.md | 10 - .changeset/qq-official-webhook.md | 9 - .changeset/qq-platform-refresh.md | 9 - .changeset/qq-player-service-interactions.md | 10 - .changeset/queue-all-db-transactions.md | 5 - .changeset/quiet-dogs-report.md | 8 - .changeset/remove-ext-sandbox.md | 5 - .changeset/remove-remote-control.md | 6 - .changeset/repl-sfmc-platform-window.md | 5 - .changeset/ripe-turkeys-invite.md | 12 - .changeset/sapi-debug-sentry.md | 6 - .changeset/scaffold-eslint-vscode.md | 5 - .changeset/scaffold-redirect.md | 15 - .changeset/scoped-sapi-clients.md | 11 - .changeset/sdk-declarative-ui-host.md | 6 - .changeset/sdk-loader-pin-sdk.md | 6 - .changeset/sdk-module-loader-dip.md | 16 - .changeset/sdk-testing-harness.md | 15 - .changeset/seed-module-config-defaults.md | 7 - .changeset/sfmc-cli-surface-split.md | 9 - .changeset/sfmc-cli-ux-pack-probe.md | 11 - .changeset/sfmc-debug-command.md | 11 - .changeset/sfmc-mod-watch.md | 12 - .changeset/sfmc-module-pack-spawn.md | 10 - .changeset/short-native-command-names.md | 5 - .changeset/silent-garlics-dig.md | 7 - .changeset/status-host-bds-detail.md | 6 - .changeset/stream-complete-command-help.md | 5 - .changeset/sunny-boxes-hang.md | 12 - .changeset/testing-l0-gen.md | 7 - .changeset/testing-sandbox-engine.md | 9 - .changeset/testing-sandbox-fidelity.md | 7 - .changeset/tidy-transactions-recover.md | 5 - .changeset/track-bds-player-xuid.md | 6 - .changeset/twelve-llamas-talk.md | 12 - .changeset/ui-dropdown-options-source.md | 5 - .changeset/ui-studio-confirm-challenge.md | 5 - .changeset/ui-studio-dnd-bindings-fixtures.md | 10 - .changeset/ui-studio-each-editor-slots.md | 5 - .changeset/ui-studio-empty-action-trigger.md | 5 - .changeset/ui-studio-empty-body-dnd.md | 5 - .changeset/ui-studio-fixed-port.md | 6 - .changeset/ui-studio-light-theme.md | 5 - .../ui-studio-preview-bind-highlight.md | 5 - .changeset/ui-studio-project-mode.md | 11 - .changeset/ui-studio-readonly-slice.md | 6 - .changeset/ui-studio-remove-scenarios.md | 5 - .changeset/ui-studio-sidebar-drag-handle.md | 5 - .changeset/ui-studio-slider-click-freeze.md | 5 - .../ui-textfield-placeholder-template.md | 5 - .changeset/ui-toggle-each-bind.md | 5 - .../unpublish-tools-move-capabilities.md | 9 - .changeset/verify-module-publish.md | 14 - .changeset/wild-owls-appear.md | 5 - modules/sdk/@sfmc-eslint-plugin/CHANGELOG.md | 9 + modules/sdk/@sfmc-eslint-plugin/package.json | 2 +- modules/sdk/@sfmc-sdk/CHANGELOG.md | 141 +++++++++ modules/sdk/@sfmc-sdk/package.json | 2 +- packages/bds-tools/CHANGELOG.md | 120 ++++++++ packages/bds-tools/package.json | 2 +- packages/cli/CHANGELOG.md | 287 ++++++++++++++++++ packages/cli/package.json | 2 +- packages/create-module/CHANGELOG.md | 27 ++ packages/create-module/package.json | 2 +- packages/db-server/CHANGELOG.md | 111 +++++++ packages/db-server/package.json | 2 +- packages/devkit/CHANGELOG.md | 110 +++++++ packages/devkit/package.json | 2 +- packages/meta/CHANGELOG.md | 113 +++++++ packages/meta/package.json | 2 +- packages/qq-bridge/CHANGELOG.md | 86 ++++++ packages/qq-bridge/package.json | 2 +- .../sfmc-extension/src/panels/commands.ts | 6 +- packages/tools/CHANGELOG.md | 87 ++++++ packages/tools/package.json | 2 +- 125 files changed, 1104 insertions(+), 943 deletions(-) delete mode 100644 .changeset/align-release-token-dry.md delete mode 100644 .changeset/bds-log-filter-solid.md delete mode 100644 .changeset/bds-log-translate-filter.md delete mode 100644 .changeset/bds-pack-update-move.md delete mode 100644 .changeset/bds-update-progress-changelog.md delete mode 100644 .changeset/bds-update-stop-race.md delete mode 100644 .changeset/bedrock-native-deps-and-scoped-clients.md delete mode 100644 .changeset/build-deps-world-packs-solid.md delete mode 100644 .changeset/calm-cows-kick.md delete mode 100644 .changeset/chat-channel-qq-forwarding.md delete mode 100644 .changeset/clear-standing-tests.md delete mode 100644 .changeset/cli-author-surface.md delete mode 100644 .changeset/config-manager-notify-all.md delete mode 100644 .changeset/current-script-api-versions.md delete mode 100644 .changeset/devkit-authoring.md delete mode 100644 .changeset/drop-compat-public-exports.md delete mode 100644 .changeset/drop-mod-create-link-dev.md delete mode 100644 .changeset/fix-ingame-help-registration.md delete mode 100644 .changeset/fix-scan-dest-occupancy-merge.md delete mode 100644 .changeset/four-turtles-lay.md delete mode 100644 .changeset/friendly-qq-menus.md delete mode 100644 .changeset/gentle-panels-rest.md delete mode 100644 .changeset/khaki-sheep-refuse.md delete mode 100644 .changeset/linux-bds-host.md delete mode 100644 .changeset/live-qq-status.md delete mode 100644 .changeset/llbot-path-dir-spawn.md delete mode 100644 .changeset/llbot-ws-reply.md delete mode 100644 .changeset/manage-qq-tunnel.md delete mode 100644 .changeset/mod-install-npm.md delete mode 100644 .changeset/mod-publish.md delete mode 100644 .changeset/mod-toggle-local-lock.md delete mode 100644 .changeset/module-index-only.md delete mode 100644 .changeset/native-command-aliases-and-subcommands.md delete mode 100644 .changeset/new-module-template-parity.md delete mode 100644 .changeset/ninety-showers-call.md delete mode 100644 .changeset/npm-create-module-authoring.md delete mode 100644 .changeset/packs-doctor-world-experiments.md delete mode 100644 .changeset/persist-chat-channel-preferences.md delete mode 100644 .changeset/pnpm-stable-release-prep.md delete mode 100644 .changeset/pre.json delete mode 100644 .changeset/publish-gh-pr.md delete mode 100644 .changeset/qq-admin-submenu.md delete mode 100644 .changeset/qq-approval-flow-p2.md delete mode 100644 .changeset/qq-chat-bridge-p4.md delete mode 100644 .changeset/qq-command-menu-p0.md delete mode 100644 .changeset/qq-event-push-p2.md delete mode 100644 .changeset/qq-full-group-commands.md delete mode 100644 .changeset/qq-link-join-settings.md delete mode 100644 .changeset/qq-menu-cli-restart.md delete mode 100644 .changeset/qq-menu-panel-bind-p1.md delete mode 100644 .changeset/qq-official-bridge.md delete mode 100644 .changeset/qq-official-webhook.md delete mode 100644 .changeset/qq-platform-refresh.md delete mode 100644 .changeset/qq-player-service-interactions.md delete mode 100644 .changeset/queue-all-db-transactions.md delete mode 100644 .changeset/quiet-dogs-report.md delete mode 100644 .changeset/remove-ext-sandbox.md delete mode 100644 .changeset/remove-remote-control.md delete mode 100644 .changeset/repl-sfmc-platform-window.md delete mode 100644 .changeset/ripe-turkeys-invite.md delete mode 100644 .changeset/sapi-debug-sentry.md delete mode 100644 .changeset/scaffold-eslint-vscode.md delete mode 100644 .changeset/scaffold-redirect.md delete mode 100644 .changeset/scoped-sapi-clients.md delete mode 100644 .changeset/sdk-declarative-ui-host.md delete mode 100644 .changeset/sdk-loader-pin-sdk.md delete mode 100644 .changeset/sdk-module-loader-dip.md delete mode 100644 .changeset/sdk-testing-harness.md delete mode 100644 .changeset/seed-module-config-defaults.md delete mode 100644 .changeset/sfmc-cli-surface-split.md delete mode 100644 .changeset/sfmc-cli-ux-pack-probe.md delete mode 100644 .changeset/sfmc-debug-command.md delete mode 100644 .changeset/sfmc-mod-watch.md delete mode 100644 .changeset/sfmc-module-pack-spawn.md delete mode 100644 .changeset/short-native-command-names.md delete mode 100644 .changeset/silent-garlics-dig.md delete mode 100644 .changeset/status-host-bds-detail.md delete mode 100644 .changeset/stream-complete-command-help.md delete mode 100644 .changeset/sunny-boxes-hang.md delete mode 100644 .changeset/testing-l0-gen.md delete mode 100644 .changeset/testing-sandbox-engine.md delete mode 100644 .changeset/testing-sandbox-fidelity.md delete mode 100644 .changeset/tidy-transactions-recover.md delete mode 100644 .changeset/track-bds-player-xuid.md delete mode 100644 .changeset/twelve-llamas-talk.md delete mode 100644 .changeset/ui-dropdown-options-source.md delete mode 100644 .changeset/ui-studio-confirm-challenge.md delete mode 100644 .changeset/ui-studio-dnd-bindings-fixtures.md delete mode 100644 .changeset/ui-studio-each-editor-slots.md delete mode 100644 .changeset/ui-studio-empty-action-trigger.md delete mode 100644 .changeset/ui-studio-empty-body-dnd.md delete mode 100644 .changeset/ui-studio-fixed-port.md delete mode 100644 .changeset/ui-studio-light-theme.md delete mode 100644 .changeset/ui-studio-preview-bind-highlight.md delete mode 100644 .changeset/ui-studio-project-mode.md delete mode 100644 .changeset/ui-studio-readonly-slice.md delete mode 100644 .changeset/ui-studio-remove-scenarios.md delete mode 100644 .changeset/ui-studio-sidebar-drag-handle.md delete mode 100644 .changeset/ui-studio-slider-click-freeze.md delete mode 100644 .changeset/ui-textfield-placeholder-template.md delete mode 100644 .changeset/ui-toggle-each-bind.md delete mode 100644 .changeset/unpublish-tools-move-capabilities.md delete mode 100644 .changeset/verify-module-publish.md delete mode 100644 .changeset/wild-owls-appear.md diff --git a/.changeset/align-release-token-dry.md b/.changeset/align-release-token-dry.md deleted file mode 100644 index 53d00a2a..00000000 --- a/.changeset/align-release-token-dry.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/tools": patch ---- - -发版编排:GitHub Release 缺失态回退复用 listPackagesWithExistingVersionTags;文档/workflow 对齐 SFMC_GITHUB_TOKEN(兼容旧名) diff --git a/.changeset/bds-log-filter-solid.md b/.changeset/bds-log-filter-solid.md deleted file mode 100644 index 5f584629..00000000 --- a/.changeset/bds-log-filter-solid.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/cli": patch ---- - -fix(logs/config): BDS 级别解析 DRY 到 SDK;剥前缀后勿误判 Error;readJson 剥 BOM;log-filter 走 ensureSchemaConfig diff --git a/.changeset/bds-log-translate-filter.md b/.changeset/bds-log-translate-filter.md deleted file mode 100644 index fff9fe22..00000000 --- a/.changeset/bds-log-translate-filter.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/sdk": patch ---- - -feat(cli/logs): 新增 BDS 原版日志本地化翻译与友好转换引擎,支持自定义规则正则替换与模式字典 diff --git a/.changeset/bds-pack-update-move.md b/.changeset/bds-pack-update-move.md deleted file mode 100644 index 848b60a5..00000000 --- a/.changeset/bds-pack-update-move.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/bds-tools": minor -"@sfmc-bds/cli": patch ---- - -feat(bds-tools): 将 pack-update 域逻辑迁入 `@sfmc-bds/bds-tools/pack-update` - -- 新增 `createPackUpdateApi(deps)` 依赖注入入口;版本策略 / CurseForge / 默认配置语义不变 -- sfmc 保留薄封装注入 ROOT、i18n、theme、clack、logs diff --git a/.changeset/bds-update-progress-changelog.md b/.changeset/bds-update-progress-changelog.md deleted file mode 100644 index 6674113e..00000000 --- a/.changeset/bds-update-progress-changelog.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/sdk": patch ---- - -修复 BDS 更新日志的版本匹配与官方文章链接,并在管道日志中保留下载条形进度。 diff --git a/.changeset/bds-update-stop-race.md b/.changeset/bds-update-stop-race.md deleted file mode 100644 index 36113fdb..00000000 --- a/.changeset/bds-update-stop-race.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/cli": patch ---- - -修复运行中的 BDS 更新时被 CLI 崩溃自启提前拉起的问题,并在覆盖安装目录前确认服务已停止。 diff --git a/.changeset/bedrock-native-deps-and-scoped-clients.md b/.changeset/bedrock-native-deps-and-scoped-clients.md deleted file mode 100644 index 4970923e..00000000 --- a/.changeset/bedrock-native-deps-and-scoped-clients.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/db-server": patch ---- - -fix: BDS 原生依赖过滤与协商、模块作用域代理及数据库表结构解耦与自愈 - -- **bds-tools**: 引入 Bedrock 原生脚本模块白名单机制,过滤 npm 纯数据包;支持自动识别并启用 level.dat 中的 gametest beta 实验性玩法;增强 server.properties 中文本地化与幂等更新。 -- **cli**: 行为包打包期与各模块原生依赖严格协商,协商提升 Bedrock 原生依赖至兼容最高版本;重构 esbuild SDK resolve 插件,为所有包含 `/sapi/` 的业务模块(含跨仓 symlink/junction)自动注入专属作用域虚拟代理,杜绝全局单例状态覆盖与越权。 -- **db-server**: 精简 `initSchema`,移除非底座的业务模块表定义,实现平台核心底座表与业务模组私有表契约解耦;增强 `SchemaRegistry.createPhysical`,自动探测并安全清理历史旧版空表,支持存量表平滑自愈追加缺失列。 -- **sdk**: 优化调试日志门面,显式格式化错误名称、信息与堆栈追踪;确保 SAPI 客户端安全注入请求头;修复 host bootstrap 导出边界以保证 Node 环境引用纯净。 diff --git a/.changeset/build-deps-world-packs-solid.md b/.changeset/build-deps-world-packs-solid.md deleted file mode 100644 index a0a50ab5..00000000 --- a/.changeset/build-deps-world-packs-solid.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/tools": patch -"@sfmc-bds/bds-tools": patch ---- - -发版:build-publishable 拓扑 + listPublishableBuildDeps(npm-publish 应急补发不再硬编码只 build SDK);push 缺失态 DRY 对齐 listUnpushedExistingVersionTags。世界包:readPackDirOccupancy DRY,去掉死不变式,occupancy 保留真实 kind(LSP)。 diff --git a/.changeset/calm-cows-kick.md b/.changeset/calm-cows-kick.md deleted file mode 100644 index 6fac95e3..00000000 --- a/.changeset/calm-cows-kick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/tools": patch ---- - -fix:typecheck diff --git a/.changeset/chat-channel-qq-forwarding.md b/.changeset/chat-channel-qq-forwarding.md deleted file mode 100644 index 77d2d0d0..00000000 --- a/.changeset/chat-channel-qq-forwarding.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/qq-bridge": patch ---- - -Use each chat channel's prefix and QQ forwarding switch for MC messages. Route QQ group messages into the read-only game channel and remove the former bridge channel and MC prefix configuration fields. diff --git a/.changeset/clear-standing-tests.md b/.changeset/clear-standing-tests.md deleted file mode 100644 index 7cde2f43..00000000 --- a/.changeset/clear-standing-tests.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/create-module": patch ---- - -模块脚手架不再生成常驻测试目录或测试命令,改以类型检查、构建和实际联调验收。 diff --git a/.changeset/cli-author-surface.md b/.changeset/cli-author-surface.md deleted file mode 100644 index ad790b6d..00000000 --- a/.changeset/cli-author-surface.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): 作者向 mod test/watch/publish 迁出 CLI - -运维保留 build/reload/install;作者改用 VS Code 扩展与 @sfmc-bds/devkit。 -调用已删子命令时给出迁移提示。 diff --git a/.changeset/config-manager-notify-all.md b/.changeset/config-manager-notify-all.md deleted file mode 100644 index 17c842d5..00000000 --- a/.changeset/config-manager-notify-all.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -fix(sdk/ConfigManager): `refreshModules` 对全部启停键做 diff 广播 - -原先 `_notifyModuleChanges` 在非 force 路径 `break`,只通知 Map 第一项。 -现改为:init 全量通知;refresh 相对 previous 通知变更项(含消失 → false)。 diff --git a/.changeset/current-script-api-versions.md b/.changeset/current-script-api-versions.md deleted file mode 100644 index 989ddf71..00000000 --- a/.changeset/current-script-api-versions.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/create-module": patch ---- - -将 Minecraft Script API 类型与新模块模板更新到 BDS 1.26.51 使用的 server 2.11.0-beta、server-ui 2.3.0-beta,并同步 vanilla-data 版本。 diff --git a/.changeset/devkit-authoring.md b/.changeset/devkit-authoring.md deleted file mode 100644 index dd9ccfbd..00000000 --- a/.changeset/devkit-authoring.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/devkit": minor -"@sfmc-bds/tools": patch ---- - -feat(devkit): 新增模块作者工具包(watch / scaffold / rebuild) - -供 VS Code 扩展直接依赖;tools 导出 new-module.mjs。 diff --git a/.changeset/drop-compat-public-exports.md b/.changeset/drop-compat-public-exports.md deleted file mode 100644 index 2bb819c8..00000000 --- a/.changeset/drop-compat-public-exports.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -"@sfmc-bds/cli": minor -"@sfmc-bds/bds-tools": minor ---- - -chore: 删除已无仓内调用的公开兼容导出 - -破坏性(外部若仍 import 需改用替代): - -- `@sfmc-bds/cli`:移除 `serviceStatus`(用 `queryServicesRuntime`)、`HELP`(用 `getHelp`)、 - `resolveDefaultsDir` / `seedMissingConfigsFromDefaults`、`CommandChannel: "external"` / - `PaletteEntry` / `listPaletteEntries` 等遗留表面。 -- `@sfmc-bds/bds-tools`:移除已不抛出的 `Utf8BomError` 类及 re-export(读 JSON 仍自动剥 BOM)。 diff --git a/.changeset/drop-mod-create-link-dev.md b/.changeset/drop-mod-create-link-dev.md deleted file mode 100644 index 220174ad..00000000 --- a/.changeset/drop-mod-create-link-dev.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): 移除 `mod create` / `mod link` / `mod dev` 三个遗留子命令;为 `mod install` 注册 `i` 短别名(与 `packs i` 对称) - -破坏性变更(CLI 子命令级别): - -- 删除 `sfmc module create` / `sfmc mod create` 子命令(spec + dispatch + help + i18n)。 - 推荐用法:`node tools/new-module.mjs ` 或直接 clone `Tanya7z/sfmc-module-template` 派生仓。 -- 删除 `sfmc module link` / `sfmc mod link` 子命令。`--link` 旗标本身保留, - 使用 `sfmc mod install --from --link` 即可(这就是之前 `mod link` 内部的转发)。 -- 删除 `sfmc module dev` / `sfmc mod dev` 子命令(仅是文本提示)。 - -新增: - -- `sfmc mod i ` 现在与 `sfmc -p i` 等价走 `mod install`(对称 packs 子命令的 `i` 别名)。 -- `sfmc install ` --from `:新增 scheme 预检(`npm:` / `local[:]` / `tgz:` / `zip:` / `dir:` / `github:` / 裸目录), - 拼写错误立即在 sfmc 侧红字提示,不再延迟到子进程 die。 - -清理: - -- `sfmc/src/module-wizard.ts` 整个删除(只剩三个被移除的 wizard + 内部 `runFetchModuleLink`)。 -- `i18n`:`modwiz.*` / `help.module.{create,link,dev}` / `mod.linkNeedsFrom` 全部移除; - 新增 `mod.fromUnknown`(scheme 预检错误文案)+ `mod.install.usage` 补 `--sha256`。 -- 文档:`docs/dev/{index,tools,module-author,platform}.md`、`docs/superpowers/specs/...` 同步更新。 -- 测试:`sfmc/command-surface.test.mjs` 删除 `create 需 TTY` 测试; - `childTokens.includes("create")` 改为 `includes("uninstall")` + 三个 NOT-IN 断言(`create/link/dev`)。 - -无 API/契约破坏:行为包协议、模块 manifest schema、SDK exports、catalog/lock 格式均未改动。 diff --git a/.changeset/fix-ingame-help-registration.md b/.changeset/fix-ingame-help-registration.md deleted file mode 100644 index f9153d73..00000000 --- a/.changeset/fix-ingame-help-registration.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/create-module": patch -"@sfmc-bds/db-server": patch ---- - -将旧版 `!` 聊天前缀命令迁移到 Bedrock 原生自定义命令接口。平台命令统一使用 -`/sfmc:`,模块命令使用 `/sfmc:_`;同时修复内置 -`/sfmc:help` 及其访客权限未注册的问题。 - -交互式数据库事务改为互斥排队执行,避免并发 `beginSession` 清理仍在使用的会话。 diff --git a/.changeset/fix-scan-dest-occupancy-merge.md b/.changeset/fix-scan-dest-occupancy-merge.md deleted file mode 100644 index ed6e42e3..00000000 --- a/.changeset/fix-scan-dest-occupancy-merge.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/bds-tools": patch ---- - -修复 #80/#81 合并后 `scanDestOccupancy` 未赋值 `facts`、引用未声明标识符导致 tsc 构建失败;恢复经 `readPackDirOccupancy` 的 DRY 占用扫描。 diff --git a/.changeset/four-turtles-lay.md b/.changeset/four-turtles-lay.md deleted file mode 100644 index 0bbfff16..00000000 --- a/.changeset/four-turtles-lay.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@sfmc-bds/bds-tools": minor -"@sfmc-bds/cli": minor ---- - -\# feat/reactor:为CLI命令添加命令界面和帮助文本 - -\- 实现了command-surface.ts文件,用于定义CLI命令的规范、通道及可见性规则。 - -\- 创建了help-text.ts文件,根据命令在argv和REPL模式下的可见性提供帮助文档。 - -\- 引入了pack-update/index.ts文件,封装了包含必要依赖项和日志记录的包更新功能。 - -\- 添加了send-target.ts文件,用于在REPL中管理发送目标,包括服务状态和提示符样式。 diff --git a/.changeset/friendly-qq-menus.md b/.changeset/friendly-qq-menus.md deleted file mode 100644 index 9ac40af7..00000000 --- a/.changeset/friendly-qq-menus.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch ---- - -优化 QQ 玩家菜单和信息卡:简化标题与说明,移除 Markdown 正文中重复的按钮列表,统一操作名称并增加状态刷新入口,保留原有命令和纯文本编号操作。 diff --git a/.changeset/gentle-panels-rest.md b/.changeset/gentle-panels-rest.md deleted file mode 100644 index 38671c01..00000000 --- a/.changeset/gentle-panels-rest.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch ---- - -修正官方群指令面板同步:全局面板不再请求关联群,指定群面板仅在缺少目标群时追加关联。 diff --git a/.changeset/khaki-sheep-refuse.md b/.changeset/khaki-sheep-refuse.md deleted file mode 100644 index 8cc57bd2..00000000 --- a/.changeset/khaki-sheep-refuse.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/bds-tools": patch ---- - -feat(sapi): 增强调试日志功能,支持 Sentry 接入,更新相关模块和文档 diff --git a/.changeset/linux-bds-host.md b/.changeset/linux-bds-host.md deleted file mode 100644 index 10179ef1..00000000 --- a/.changeset/linux-bds-host.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/bds-tools": minor -"@sfmc-bds/cli": patch -"@sfmc-bds/db-server": patch ---- - -Linux BDS 宿主:按平台解析可执行文件与下载 URL,启动时设置 LD_LIBRARY_PATH;argv start 在 POSIX 上 daemonize;pgrep 用 -x 避免误匹配 diff --git a/.changeset/live-qq-status.md b/.changeset/live-qq-status.md deleted file mode 100644 index 7937baf9..00000000 --- a/.changeset/live-qq-status.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/db-server": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/qq-bridge": patch ---- - -QQ 查服改用游戏实时在线玩家及世界信息,CLI 托管的 BDS 启停和异常退出现在上报事件。 diff --git a/.changeset/llbot-path-dir-spawn.md b/.changeset/llbot-path-dir-spawn.md deleted file mode 100644 index ba349078..00000000 --- a/.changeset/llbot-path-dir-spawn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/cli": patch ---- - -修复 LLBot 启动:兼容向导把 llbot_path 写成目录导致 spawn ENOENT diff --git a/.changeset/llbot-ws-reply.md b/.changeset/llbot-ws-reply.md deleted file mode 100644 index 16d37335..00000000 --- a/.changeset/llbot-ws-reply.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch ---- - -llbot 指令回复优先经 reverse-WS 发 send_group_msg,避免未开 HTTP 3004 时 ECONNREFUSED diff --git a/.changeset/manage-qq-tunnel.md b/.changeset/manage-qq-tunnel.md deleted file mode 100644 index 638210b2..00000000 --- a/.changeset/manage-qq-tunnel.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/sdk": patch ---- - -将官方 QQ Webhook 的 SSH 反向隧道纳入 SFMC CLI 服务编排,提供配置、启停、断线重试、状态和日志。 diff --git a/.changeset/mod-install-npm.md b/.changeset/mod-install-npm.md deleted file mode 100644 index 58822f92..00000000 --- a/.changeset/mod-install-npm.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(tools): `sfmc mod install` 默认走 npm;`--from local` 接受 dir/.tgz/.zip - -- `tools/lib/npm-resolver.mjs`:单一权威的 npm 包名解析(短 id / feature-* / core-* / @scope/name)。 -- `tools/fetch-module.mjs`: - - 新增 `npm:` 前缀(`npm install --prefix packages/ --omit=dev --no-save` 隔离安装)。 - - 新增 `tgz:` / `zip:` 显式前缀;`local:` 现在接受 dir/`.tgz`/`.zip`,无路径默认 cwd。 - - `fromLocal` 重构为单一入口(resolveLocalPath),避免 dir/tgz/zip 解析分散。 - - zip 安装强制校验内含 `package.json` + `sapi/manifest.json`,缺关键文件硬错误并清理污染目录。 - - tgz 安装委托 `npm install --prefix tmp `(不重新发明 tar,零新依赖)。 - - 缺省 source 解析:先看 first-party registry(兼容 `Tanya7z/sfmc-modules`),否则按 `@sfmc-bds/module-` 走 npm;常见 npm 错误翻译为中文可读 + 下一步动作(404 / EACCES / ERESOLVE / ETIMEDOUT)。 -- `tools/install-resolver.test.mjs` + `tools/local-resolver.test.mjs`:表驱动共 16 用例通过。 -- 文档:`docs/guide/modules.md` + `docs/dev/module-author.md` 增「安装源」表格,钉死 default 解析顺序。 \ No newline at end of file diff --git a/.changeset/mod-publish.md b/.changeset/mod-publish.md deleted file mode 100644 index b5de2ae6..00000000 --- a/.changeset/mod-publish.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): 新增 `sfmc mod publish` 保姆式 CLI - -- 流水线:npm whoami 检测 → scope 推断(默认 ``)→ dry-run 预检 → version bump → `npm publish` 透传 → 薄 index PR(占位)。 -- 错误翻译(npm 原文 → 中文 + 下一步动作):`ENEEDAUTH` / `EOTP` / 邮箱未确认 / 无权限 publish / 402 Payment / 包名太接近 / `ERESOLVE` / `ETIMEDOUT` / 默认透传。 -- dry-run 预检三件套:manifest v2 schema、package.json#files 含 `sapi/`、`npm pack --dry-run` 解析 tarball 文件清单。 -- version bump:`patch` / `minor` / `major` / `custom `;写入 `package.json#version`,**不改** manifest;publish 失败时回滚 bump。 -- scope 模型:作者发自己 scope(`@/sfmc-module-`);**不**触碰 `@sfmc-bds/*`(与 `mod install` 隔离)。 -- 薄 index PR:当前为占位(`gh api` 真实调用需 `gh auth login` + 远端 `sfmc-modules` 仓;保留 `--skip-index-pr` 选项)。 -- Windows 兼容:`spawn npm.cmd` 通过 `cmd /c npm`(避开 DEP0190 安全警告 + `shell:true` 隐患)。同步修复 `cmdModuleTest` 同样问题。 -- 测试:`module-publish.test.mjs` 8 cases(parsePublishFlags / bumpSemver / 错误翻译表 / runPrecheck / defaultScopeFor);sfmc workspace 85/85 通过。 -- i18n:`publish.*` 中英文案 + `help.module.publish` 子命令描述。 - -> CLI 是 `npm publish` 的编排器 + 检查器 + 错误翻译;**不**替身 npm 行为。所有鉴权(`npm login --auth-type=web` / 2FA / 邮箱确认)走 npm 本身。 \ No newline at end of file diff --git a/.changeset/mod-toggle-local-lock.md b/.changeset/mod-toggle-local-lock.md deleted file mode 100644 index 39609f80..00000000 --- a/.changeset/mod-toggle-local-lock.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): mod enable/disable 本地写 lock,db 在线时 best-effort 热同步 - -启停不再强依赖 db-server:先写 `module-lock.json`,再尝试 POST;通知失败仍成功并警告。 diff --git a/.changeset/module-index-only.md b/.changeset/module-index-only.md deleted file mode 100644 index 3c53bc04..00000000 --- a/.changeset/module-index-only.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/tools": patch ---- - -纯 index 契约:`--link` 支持 `local:`;index map 支持 `npm`;拆除旁路 sfmc-modules monorepo DX;`mod publish` 写 map 并拒绝 private/非官方 `@sfmc-bds`。 diff --git a/.changeset/native-command-aliases-and-subcommands.md b/.changeset/native-command-aliases-and-subcommands.md deleted file mode 100644 index e1d2f647..00000000 --- a/.changeset/native-command-aliases-and-subcommands.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -为原生玩家命令增加短别名、枚举子命令与参数透传,并将权限列表合并到 `/c:help permissions`。 diff --git a/.changeset/new-module-template-parity.md b/.changeset/new-module-template-parity.md deleted file mode 100644 index 20568e7c..00000000 --- a/.changeset/new-module-template-parity.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/tools": patch ---- - -chore(tools): new-module 与 sfmc-module-template 同构(DESCRIPTOR、测试、prettier、.vscode) diff --git a/.changeset/ninety-showers-call.md b/.changeset/ninety-showers-call.md deleted file mode 100644 index 252832b9..00000000 --- a/.changeset/ninety-showers-call.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/tools": patch -"@sfmc-bds/cli": patch ---- - -// @ts-check:添加到 23 个 tools/_.mjs 脚本 + 11 个 tools/lib/_.mjs 库 + 5 个 tools/_.test.mjs + 11 个 sfmc/_.test.mjs + 5 个 changeset 系列 diff --git a/.changeset/npm-create-module-authoring.md b/.changeset/npm-create-module-authoring.md deleted file mode 100644 index c6b6ef59..00000000 --- a/.changeset/npm-create-module-authoring.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/create-module": minor -"@sfmc-bds/devkit": major -"@sfmc-bds/cli": patch ---- - -模块作者面改用 `npm create @sfmc-bds/module`(`@sfmc-bds/create-module`)为唯一建仓入口;移除 `@sfmc-bds/devkit` 的 `sfmc-new-module` / `scaffoldModule`。扩展补齐 Create→Test→Link→Watch→Publish 全周期。 diff --git a/.changeset/packs-doctor-world-experiments.md b/.changeset/packs-doctor-world-experiments.md deleted file mode 100644 index aa7234c9..00000000 --- a/.changeset/packs-doctor-world-experiments.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/bds-tools": minor -"@sfmc-bds/cli": minor ---- - -feat(bds-tools,cli): 增强 packs doctor 存档实验性玩法开关诊断与自愈配置 - -- `@sfmc-bds/bds-tools`: 支持检测与修改当前版本已知的全部实验性功能(测试版 API、创作者功能、创作者相机、Voxel形状、村民贸易再平衡、2026年第3次更新、Minecraft Education 功能),提供智能别名解析与安全的原子化 level.dat 修改与灾备。 -- `@sfmc-bds/cli`: `packs doctor` 命令支持 `--experiments`、`--all-experiments`、`--experiments=` 开关;在诊断视图中高亮直观展示当前存档的各实验性玩法启用状态。 diff --git a/.changeset/persist-chat-channel-preferences.md b/.changeset/persist-chat-channel-preferences.md deleted file mode 100644 index b117eb8e..00000000 --- a/.changeset/persist-chat-channel-preferences.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/db-server": patch ---- - -为玩家表补充聊天频道和订阅偏好字段,并迁移已有数据库。 diff --git a/.changeset/pnpm-stable-release-prep.md b/.changeset/pnpm-stable-release-prep.md deleted file mode 100644 index 41ea897c..00000000 --- a/.changeset/pnpm-stable-release-prep.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/create-module": patch -"@sfmc-bds/devkit": patch ---- - -统一模块模板和公开文档的 pnpm 工作流,并将 registry 模块下载改为 pnpm,补齐公开包仓库元数据。 diff --git a/.changeset/pre.json b/.changeset/pre.json deleted file mode 100644 index 41e7333e..00000000 --- a/.changeset/pre.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "mode": "pre", - "tag": "beta", - "initialVersions": { - "@sfmc-bds/bds-tools": "0.1.0", - "@sfmc-bds/db-server": "0.1.0", - "@sfmc-bds/eslint-plugin": "0.1.0", - "@sfmc-bds/sdk": "0.1.0", - "@sfmc-bds/qq-bridge": "0.1.0", - "@sfmc-bds/cli": "0.1.0", - "@sfmc-bds/sfmc": "0.1.0", - "@sfmc-bds/tools": "0.1.1", - "@sfmc-bds/devkit": "0.1.0-beta.0", - "sfmc-extension": "0.1.0", - "@sfmc-bds/create-module": "0.1.0-beta.0", - "@sfmc-bds/docs-site": "0.1.0" - }, - "changesets": [ - "align-release-token-dry", - "bds-log-filter-solid", - "bds-log-translate-filter", - "bds-pack-update-move", - "bds-update-progress-changelog", - "bds-update-stop-race", - "bedrock-native-deps-and-scoped-clients", - "build-deps-world-packs-solid", - "calm-cows-kick", - "chat-channel-qq-forwarding", - "clear-standing-tests", - "cli-author-surface", - "config-manager-notify-all", - "current-script-api-versions", - "devkit-authoring", - "drop-compat-public-exports", - "drop-mod-create-link-dev", - "fix-ingame-help-registration", - "fix-scan-dest-occupancy-merge", - "four-turtles-lay", - "friendly-qq-menus", - "gentle-panels-rest", - "khaki-sheep-refuse", - "linux-bds-host", - "live-qq-status", - "llbot-path-dir-spawn", - "llbot-ws-reply", - "manage-qq-tunnel", - "mod-install-npm", - "mod-publish", - "mod-toggle-local-lock", - "module-index-only", - "native-command-aliases-and-subcommands", - "new-module-template-parity", - "ninety-showers-call", - "npm-create-module-authoring", - "packs-doctor-world-experiments", - "persist-chat-channel-preferences", - "publish-gh-pr", - "qq-admin-submenu", - "qq-approval-flow-p2", - "qq-chat-bridge-p4", - "qq-command-menu-p0", - "qq-event-push-p2", - "qq-full-group-commands", - "qq-link-join-settings", - "qq-menu-cli-restart", - "qq-menu-panel-bind-p1", - "qq-official-bridge", - "qq-official-webhook", - "qq-platform-refresh", - "qq-player-service-interactions", - "queue-all-db-transactions", - "quiet-dogs-report", - "remove-ext-sandbox", - "remove-remote-control", - "repl-sfmc-platform-window", - "ripe-turkeys-invite", - "sapi-debug-sentry", - "scaffold-eslint-vscode", - "scaffold-redirect", - "scoped-sapi-clients", - "sdk-declarative-ui-host", - "sdk-loader-pin-sdk", - "sdk-module-loader-dip", - "sdk-testing-harness", - "seed-module-config-defaults", - "sfmc-cli-surface-split", - "sfmc-cli-ux-pack-probe", - "sfmc-debug-command", - "sfmc-mod-watch", - "sfmc-module-pack-spawn", - "short-native-command-names", - "silent-garlics-dig", - "status-host-bds-detail", - "stream-complete-command-help", - "sunny-boxes-hang", - "testing-l0-gen", - "testing-sandbox-engine", - "testing-sandbox-fidelity", - "tidy-transactions-recover", - "track-bds-player-xuid", - "twelve-llamas-talk", - "ui-dropdown-options-source", - "ui-studio-confirm-challenge", - "ui-studio-dnd-bindings-fixtures", - "ui-studio-each-editor-slots", - "ui-studio-empty-action-trigger", - "ui-studio-empty-body-dnd", - "ui-studio-fixed-port", - "ui-studio-light-theme", - "ui-studio-preview-bind-highlight", - "ui-studio-project-mode", - "ui-studio-readonly-slice", - "ui-studio-remove-scenarios", - "ui-studio-sidebar-drag-handle", - "ui-studio-slider-click-freeze", - "ui-textfield-placeholder-template", - "ui-toggle-each-bind", - "unpublish-tools-move-capabilities", - "verify-module-publish", - "wild-owls-appear" - ] -} diff --git a/.changeset/publish-gh-pr.md b/.changeset/publish-gh-pr.md deleted file mode 100644 index 7366fba6..00000000 --- a/.changeset/publish-gh-pr.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): `mod publish` 接 gh CLI 真实开薄 index PR - -- `openIndexPr` 从占位升级成可执行:检测 `gh` 鉴权 → `gh repo fork` → clone fork → `git checkout -b publish/-` → patch `index.json`(upsert 幂等)→ `git commit` → `git push` → `gh pr create`。 -- 新 CLI flags: - - `--gh-repo OWNER/REPO`(默认 `Tanya7z/sfmc-modules`) - - `--gh-push` 显式 opt-in 真执行(否则只打印意图,避免误污染远端) - - `--gh-fork-remote `(默认 `sfmc-modules-fork`) -- 安全:默认行为 = 打印 intent + gh 命令清单(dry-run 友好);真执行需 `--gh-push`;缺鉴权时降级为 dry-run + 提示 `gh auth login`。 -- 新函数 `indexEntryFor(pkgName, version, sdkRange)` / `splitOwnerRepo(s)` / `patchIndexFile(path, entry)` —— 单一职责,可单测。 -- `patchIndexFile` 校验 `id` 已存在则报错(避免静默覆盖历史版本)。 -- 测试:`module-publish.test.mjs` 加 8 cases(splitOwnerRepo / indexEntryFor / patchIndexFile 缺文件 / 追加排序 / 重复 id / openIndexPr dry-run / skip-index-pr / 非法 repo);sfmc workspace **93/93** 通过。 -- npm publish 成功但 PR 失败 → **不回滚 publish**(包已发);给明确「手动补 index.json」提示。 \ No newline at end of file diff --git a/.changeset/qq-admin-submenu.md b/.changeset/qq-admin-submenu.md deleted file mode 100644 index b91b0b01..00000000 --- a/.changeset/qq-admin-submenu.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch ---- - -QQ 主菜单收拢常用指令;踢人/待审/配置等收入「管理」子菜单(触发词仍可直达) diff --git a/.changeset/qq-approval-flow-p2.md b/.changeset/qq-approval-flow-p2.md deleted file mode 100644 index 7b457f89..00000000 --- a/.changeset/qq-approval-flow-p2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/qq-bridge": minor -"@sfmc-bds/db-server": minor ---- - -QQ 入服审批(INTERACTION 回调按钮)+ 群 OpenAPI info/bot_state + 踢人/白名单队列(BDS 由 qq-link 模块经 server-admin 生效) diff --git a/.changeset/qq-chat-bridge-p4.md b/.changeset/qq-chat-bridge-p4.md deleted file mode 100644 index 11ce6581..00000000 --- a/.changeset/qq-chat-bridge-p4.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/db-server": patch -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/bds-tools": patch ---- - -游戏聊天互通:MC→QQ 仅转发 `bridge_channel_id` 匹配且非 `qq_` 回环的 messages;QQ 指令「频道」只读提示;扫描 `modules/packages` 时跟随 symlink(修复 `--link` 在 Linux 下被当成非目录) diff --git a/.changeset/qq-command-menu-p0.md b/.changeset/qq-command-menu-p0.md deleted file mode 100644 index 145b3385..00000000 --- a/.changeset/qq-command-menu-p0.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/qq-bridge": minor ---- - -QQ 侧指令菜单(official Markdown/键盘与 llbot 编号菜单共用注册表) diff --git a/.changeset/qq-event-push-p2.md b/.changeset/qq-event-push-p2.md deleted file mode 100644 index 5897a902..00000000 --- a/.changeset/qq-event-push-p2.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/db-server": minor -"@sfmc-bds/bds-tools": minor ---- - -QQ 事件推群(节流):join/leave/death 约 1 分钟聚合;BDS 启停立即推;配置 `qq_events`;出站复用现有 MC→QQ 通道 diff --git a/.changeset/qq-full-group-commands.md b/.changeset/qq-full-group-commands.md deleted file mode 100644 index ea974bab..00000000 --- a/.changeset/qq-full-group-commands.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch ---- - -官方 QQ 机器人接收群全量消息时,可直接识别无需 @ 的指令,并避免与群 @ 事件重复处理。 diff --git a/.changeset/qq-link-join-settings.md b/.changeset/qq-link-join-settings.md deleted file mode 100644 index 2361c80b..00000000 --- a/.changeset/qq-link-join-settings.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/db-server": patch ---- - -入服开关落在 configs/qq_link.json;新增只读 treat_group_admins_as_admins(群管视作管理员,仅文件可改) diff --git a/.changeset/qq-menu-cli-restart.md b/.changeset/qq-menu-cli-restart.md deleted file mode 100644 index 6f3ffecb..00000000 --- a/.changeset/qq-menu-cli-restart.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/qq-bridge": patch ---- - -CLI 对外部 db/qq 真正 stop/restart(按入口脚本杀进程,避免双实例);QQ 主/管理菜单中文编号样式(official+llbot 共用);频道/自检增强 diff --git a/.changeset/qq-menu-panel-bind-p1.md b/.changeset/qq-menu-panel-bind-p1.md deleted file mode 100644 index 83b113de..00000000 --- a/.changeset/qq-menu-panel-bind-p1.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/qq-bridge": minor -"@sfmc-bds/db-server": minor ---- - -QQ 官方自定义菜单/指令面板同步、C2C 指令回复、status/online 与 QQ↔MC 绑定平台 API(游戏侧见独立模块 qq-link) diff --git a/.changeset/qq-official-bridge.md b/.changeset/qq-official-bridge.md deleted file mode 100644 index 1f27c781..00000000 --- a/.changeset/qq-official-bridge.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/qq-bridge": minor -"@sfmc-bds/db-server": minor -"@sfmc-bds/cli": patch -"@sfmc-bds/bds-tools": patch ---- - -群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) - \ No newline at end of file diff --git a/.changeset/qq-official-webhook.md b/.changeset/qq-official-webhook.md deleted file mode 100644 index f0d7f361..00000000 --- a/.changeset/qq-official-webhook.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": minor -"@sfmc-bds/sdk": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/bds-tools": patch ---- - -官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 diff --git a/.changeset/qq-platform-refresh.md b/.changeset/qq-platform-refresh.md deleted file mode 100644 index d1d8cb96..00000000 --- a/.changeset/qq-platform-refresh.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/create-module": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/qq-bridge": patch ---- - -更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 diff --git a/.changeset/qq-player-service-interactions.md b/.changeset/qq-player-service-interactions.md deleted file mode 100644 index 19a42dc0..00000000 --- a/.changeset/qq-player-service-interactions.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@sfmc-bds/qq-bridge": minor -"@sfmc-bds/db-server": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/sdk": minor ---- - -统一 QQ 双后端玩家服务菜单、权限核验、敏感操作确认及错误反馈,修复编号菜单与长名单发送,保留查服、版本和 ip 指令习惯。 - -新增 public_server 公开连接配置;版本优先使用 CLI 捕获并经状态接口核验的当前 BDS 启动版本。移除在线状态接口的 64 人上限,不改变入服业务状态与审批策略。 diff --git a/.changeset/queue-all-db-transactions.md b/.changeset/queue-all-db-transactions.md deleted file mode 100644 index 3aa7a499..00000000 --- a/.changeset/queue-all-db-transactions.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/db-server": patch ---- - -将 `TxRunner` 的批量事务与交互式事务会话纳入同一个 SQLite 单连接队列,避免并发备份与查询触发嵌套 `BEGIN` 失败。 diff --git a/.changeset/quiet-dogs-report.md b/.changeset/quiet-dogs-report.md deleted file mode 100644 index a98d6470..00000000 --- a/.changeset/quiet-dogs-report.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/bds-tools": patch ---- - -为 QQ 管理菜单增加可即时生效的服务器事件推送开关,并补充 BDS 正常停服通知。 diff --git a/.changeset/remove-ext-sandbox.md b/.changeset/remove-ext-sandbox.md deleted file mode 100644 index 662030ce..00000000 --- a/.changeset/remove-ext-sandbox.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/devkit": patch ---- - -chore(devkit): new-module 不再生成脚本沙箱剧本(`.sfmc/sandbox-script.json`);README 改为 `npm test` + Sapience + Watch diff --git a/.changeset/remove-remote-control.md b/.changeset/remove-remote-control.md deleted file mode 100644 index 9ff63fe6..00000000 --- a/.changeset/remove-remote-control.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": minor -"@sfmc-bds/sdk": minor ---- - -移除远程控制功能:删除 `sfmc remote` / WebSocket agent、`configs/remote.json` 与对应 schema;不再提供 `@sfmc-bds/remote-controller` 包。 diff --git a/.changeset/repl-sfmc-platform-window.md b/.changeset/repl-sfmc-platform-window.md deleted file mode 100644 index f5164ca2..00000000 --- a/.changeset/repl-sfmc-platform-window.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -REPL 在服务运行期间常驻 SFMC 平台日志窗口,展示除活跃运行服务以外的所有来源日志,并支持 Tab 循环切换与指令执行。 diff --git a/.changeset/ripe-turkeys-invite.md b/.changeset/ripe-turkeys-invite.md deleted file mode 100644 index ec01bdb2..00000000 --- a/.changeset/ripe-turkeys-invite.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/eslint-plugin": patch -"@sfmc-bds/sdk": patch -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/sfmc": patch -"@sfmc-bds/tools": patch ---- - -none diff --git a/.changeset/sapi-debug-sentry.md b/.changeset/sapi-debug-sentry.md deleted file mode 100644 index b5511b38..00000000 --- a/.changeset/sapi-debug-sentry.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/bds-tools": patch ---- - -feat(sapi): 增强 debug 门面(运行时开关 + DebugSink),经 @minecraft/diagnostics 可选接入 Sentry;BP manifest 声明 diagnostics/server-admin diff --git a/.changeset/scaffold-eslint-vscode.md b/.changeset/scaffold-eslint-vscode.md deleted file mode 100644 index 1c424eb5..00000000 --- a/.changeset/scaffold-eslint-vscode.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/tools": patch ---- - -chore(tools): new-module 脚手架写入 eslint.config 与 .vscode(推荐 ESLint 扩展) diff --git a/.changeset/scaffold-redirect.md b/.changeset/scaffold-redirect.md deleted file mode 100644 index a0d5b48a..00000000 --- a/.changeset/scaffold-redirect.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@sfmc-bds/cli": minor -"@sfmc-bds/sdk": patch ---- - -feat(tools): 脚手架转向 cwd 单包根(与 Tanya7z/sfmc-module-template 同构) - -- `tools/new-module.mjs`: - - 默认(缺省 `--root`):写到 **cwd** 作为单包根(包根 = 包仓库根),生成自包含 `package.json` + 自包含 `sapi/tsconfig.json` + `$schema` 指向 `node_modules/@sfmc-bds/sdk`。 - - `--root ` / `SFMC_MODULES_ROOT` 显式 legacy 模式:仍写到 `/packages/`(兼容旧 sfmc-modules 工作区)。 - - 拒绝 `--root` 指向主仓 `modules/packages`(那是 install 落点,不是开发工作区)。 - - 终端打印「模式: cwd 单包根 / legacy 工作区」+ 各自的下一步命令。 -- `tools/scaffold-redirect.test.mjs`:5 cases 表驱动(cwd 单包 / legacy / 拒主仓 / 缺 packages / env fallback)。 -- i18n:`modwiz.genPackage` / `modwiz.skeletonWritten` 等改为 cwd 友好文案。 -- 文档:上一轮 `module-author.md` 已写明 `sfmc module create` 在模块仓根执行 + `--from local --link` 装入主仓;本 PR 落地脚手架默认行为。 \ No newline at end of file diff --git a/.changeset/scoped-sapi-clients.md b/.changeset/scoped-sapi-clients.md deleted file mode 100644 index 6f484700..00000000 --- a/.changeset/scoped-sapi-clients.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/create-module": patch ---- - -fix(sdk): 作用域 db/config/service 客户端,消除多模块身份串桶与全局事务互斥 - -- 新增 createDbClient / createConfigClient / createServiceClient:身份与 tx 状态封闭在闭包 -- 单例 db/config/service 改为按 moduleId 登记表转发(兼容旧代码) -- ModuleRegistry lifecycle 注入 ModuleServices;install 装配配对 inTx 探针 -- create-module 模板引导闭包捕获 services.db diff --git a/.changeset/sdk-declarative-ui-host.md b/.changeset/sdk-declarative-ui-host.md deleted file mode 100644 index 52feacf7..00000000 --- a/.changeset/sdk-declarative-ui-host.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -新增 `@sfmc-bds/sdk/sapi/ui` 宿主级声明式 UI 能力面,统一 feature 注册、页面打开、DDUI 渲染与表单重试;页面 service 调用按 feature 所属模块身份执行。 - diff --git a/.changeset/sdk-loader-pin-sdk.md b/.changeset/sdk-loader-pin-sdk.md deleted file mode 100644 index 9620ba9d..00000000 --- a/.changeset/sdk-loader-pin-sdk.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/tools": patch ---- - -fix(sdk/testing): minecraft-loader 钉死同一 `@sfmc-bds/sdk` 实例,避免模块仓 node_modules 与宿主双包导致 Command/Permission 空清单;脚手架 Command.register 传入 MODULE_ID。 diff --git a/.changeset/sdk-module-loader-dip.md b/.changeset/sdk-module-loader-dip.md deleted file mode 100644 index b9441bbe..00000000 --- a/.changeset/sdk-module-loader-dip.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -feat(sdk/module-loader): 拆 BDS SAPI host 抽象,模块 loader 不再顶层 import `@minecraft/server` - -DIP: - -- 新增 `BdsSystem` / `ModuleAuthHooks`;`trackSystemRun` 与模块身份注入均经钩子,不顶层拉 SAPI client。 -- **`@sfmc-bds/sdk/module-loader` barrel 不再 re-export** `installHostBootstrap` / `createHttpDataAdapter`。 - BDS 入口:`@sfmc-bds/sdk/module-loader/install`;BP esbuild banner 调用 `installHostBootstrap()`。 -- 因此 `import "@sfmc-bds/sdk/module-loader"`(仅 ModuleRegistry / ConfigManager)在 `node --test` - 下**无需** mock `@minecraft/server`。 -- 若测试还 `import "@sfmc-bds/sdk/sapi/runtime"`(Command/Msg 等),仍需 mock(与 loader DIP 无关)。 - -破坏性:原先从 `@sfmc-bds/sdk/module-loader` 取 `installHostBootstrap` 的调用方须改子路径。 diff --git a/.changeset/sdk-testing-harness.md b/.changeset/sdk-testing-harness.md deleted file mode 100644 index 11d831dc..00000000 --- a/.changeset/sdk-testing-harness.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -feat(sdk): 新增 `@sfmc-bds/sdk/testing` 测试 harness - -- `createFakePlayer({ id?, name })`:返回 `{ id, name, log, sendMessage }`;`Msg.*` 通过 duck-typed `sendMessage` 自动收集消息,`assertMsg(player, substring)` 断言。 -- `createFakeWorld()`:极简事件总线(`on(event, handler)` / `emit(event, payload)` / `reset()`),单测跑 `system.events.subscribe` 替换面。 -- `createFakeDb({ provides? })`:in-memory 事务替身,`tx.call(name, input)` 命中 stub 返回 output,未命中抛 `no stub for service ""`;`calls` 数组记录全部调用。 -- `runLifecycle(descriptor, opts?)`:直接调 lifecycle 钩子(registerPermissions / registerCommands / registerEvents / init),绕过 `ConfigManager.isReady()` 门禁;返回 `{ ok, error? }`。`opts.afterWorldLoad` 控制是否跑 init(默认遵守 descriptor 自身设置)。`runCleanup(descriptor)` 同款。 -- `package.json` exports 新增 `./testing` 子路径;`build.mjs` SUBPATHS 增 `testing (node)`。 -- 单元测试:`testing.test.mjs` 9 cases 通过(fake player/world/db + runLifecycle/cleanup 全部覆盖)。 -- README 加「模块测试(无需 BDS)」章节,模板仓 README/test 也已指引走 harness。 - -> `runLifecycle` 不替身 SDK 内部 ConfigManager —— 模块若在 init 内调 db/config/service,须用例自己 stub。本期不模拟真 db-server / 真 BDS。 \ No newline at end of file diff --git a/.changeset/seed-module-config-defaults.md b/.changeset/seed-module-config-defaults.md deleted file mode 100644 index fd2ab937..00000000 --- a/.changeset/seed-module-config-defaults.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/create-module": patch -"@sfmc-bds/eslint-plugin": patch ---- - -安装和更新模块时从 `configs-default` 创建并补全模块配置,且不覆盖用户已有值。 diff --git a/.changeset/sfmc-cli-surface-split.md b/.changeset/sfmc-cli-surface-split.md deleted file mode 100644 index f65b9726..00000000 --- a/.changeset/sfmc-cli-surface-split.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc-cli): 命令通道分层(external / repl / both) - -- 单一权威 `command-surface`:部署类(install/create/debug 等)仅外部;send / logs -f 仅 REPL -- help 按通道过滤;dev 类命令蓝色展示(无独立 devmode 开关) -- 去掉 `devmode` / `runtime.json#developer_mode` 门禁 diff --git a/.changeset/sfmc-cli-ux-pack-probe.md b/.changeset/sfmc-cli-ux-pack-probe.md deleted file mode 100644 index 83fdaf2d..00000000 --- a/.changeset/sfmc-cli-ux-pack-probe.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sfmc-bds/cli": minor -"@sfmc-bds/bds-tools": minor ---- - -feat(sfmc/bds-tools): CLI UX 分层、pack-update 迁出、OS 进程探活 - -- REPL:`/` + Ctrl+P 命令面板、左右光标、quit 干净退出 -- argv:`sfmc i|install`、`sfmc -p …`;help 按通道标准化 -- pack-update 迁入 `@sfmc-bds/bds-tools/pack-update`(CLI 薄封装) -- process-probe:外部 BDS 可识别;status 区分 managed/external diff --git a/.changeset/sfmc-debug-command.md b/.changeset/sfmc-debug-command.md deleted file mode 100644 index 38e41924..00000000 --- a/.changeset/sfmc-debug-command.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): 新增 `debug` 顶层命令管理 BDS 调试配置 - -- 直接读写 `/config/default/variables.json` 与 `secrets.json` -- 子命令:status / enable / disable / sentry on --dsn / sentry off -- 不修改 SDK 现有 `applyDebugFromVariables()` / `initSentryIfConfigured()` 语义 -- CLI = 配置入口;行为包运行时由 SDK 读取 -- 变更后需 `sfmc mod reload` 或重启 BDS 生效 \ No newline at end of file diff --git a/.changeset/sfmc-mod-watch.md b/.changeset/sfmc-mod-watch.md deleted file mode 100644 index 3a39f4f2..00000000 --- a/.changeset/sfmc-mod-watch.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): 新增 `mod watch` 与 `mod test` 子命令 - -- `sfmc mod watch [--from local[:path]] [--no-reload]`:监听 `sapi/src/**` 变更,~200ms 防抖后复用 `mod reload` 同一路径(build → deploy → 直写 BDS stdin 发 `reload`)。改 `sapi/manifest.json` / `sapi/tsconfig.json` 仅提示「SAPI 启动期缓存,请重启 BDS 进程」。 -- `sfmc mod test [--from local[:path]] [-- ]`:解析 `--from local[:path]`,spawn `npm test` 透传 stdio,让模块仓的 `scripts.test` 自己决定怎么跑。 -- 进程探测复用 `queryServicesRuntime` + `probeBdsStatus`(与 `mod reload` 同源),不另写一遍 reload 路径。 -- i18n:新增 `watch.*` / `help.module.watch|test` 中英文案。 -- 模板仓 `Tanya7z/sfmc-module-template` 已在主仓外部 `D:\#WorkPlace\#MCBEProjects\sfmc-module-template\` 初始化并 commit;本仓库仅交付 CLI 与文档改动。 -- 测试:sfmc workspace `npm test` 77/77 通过(含新增 6 个 watch resolver 表驱动用例)。 diff --git a/.changeset/sfmc-module-pack-spawn.md b/.changeset/sfmc-module-pack-spawn.md deleted file mode 100644 index 313ab991..00000000 --- a/.changeset/sfmc-module-pack-spawn.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(sfmc): module build / reload 改走 spawn bds-tools/cli-pack-manager.ts - -- 新增 sfmc/src/module-pack-build.ts:spawn assemble-bp / assemble-rp / deploy / enable-pack / disable-pack / ensure-permission 各 verb -- dispatchModuleCommand 的 build / reload case 改为 import 此文件 -- pack-lifecycle.ts 保留 ensurePacksReady 启动钩子与 wizard 内部消费 -- 模块 build 唯一权威派发入口收敛(与 install/uninstall/create 同架构:CLI = thin wrapper) \ No newline at end of file diff --git a/.changeset/short-native-command-names.md b/.changeset/short-native-command-names.md deleted file mode 100644 index 56de3abb..00000000 --- a/.changeset/short-native-command-names.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -将所有玩家原生命令统一改为 `/c:<命令>`,模块命令不再拼接模块 id;旧的 `/c:<模块>_<命令>` 名称不再注册。 diff --git a/.changeset/silent-garlics-dig.md b/.changeset/silent-garlics-dig.md deleted file mode 100644 index 0d1d1f67..00000000 --- a/.changeset/silent-garlics-dig.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/tools": patch -"@sfmc-bds/cli": patch ---- - -sdk:移除对旧版type的支持 tools,cli:杂项 diff --git a/.changeset/status-host-bds-detail.md b/.changeset/status-host-bds-detail.md deleted file mode 100644 index a2c49bad..00000000 --- a/.changeset/status-host-bds-detail.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/db-server": minor -"@sfmc-bds/qq-bridge": patch ---- - -Enrich GET /api/sfmc/status with host uptime, BDS/db process uptime, and memory/CPU; QQ status command shows the richer summary. diff --git a/.changeset/stream-complete-command-help.md b/.changeset/stream-complete-command-help.md deleted file mode 100644 index 9b57e233..00000000 --- a/.changeset/stream-complete-command-help.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -将 `/c:help` 与权限列表按完整行连续分段发送,避免命令较多时被客户端截断。 diff --git a/.changeset/sunny-boxes-hang.md b/.changeset/sunny-boxes-hang.md deleted file mode 100644 index 93d4c71e..00000000 --- a/.changeset/sunny-boxes-hang.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/tools": patch -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/eslint-plugin": patch -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/sfmc": patch ---- - -none diff --git a/.changeset/testing-l0-gen.md b/.changeset/testing-l0-gen.md deleted file mode 100644 index ec3154d6..00000000 --- a/.changeset/testing-l0-gen.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -feat(sdk/testing): L0 自 `.d.ts` 生成大范围假导出 + 覆盖率门禁 - -对照 Levi 仅作映射笔记(不入库);pin 版 `@minecraft/server` 为契约权威。 diff --git a/.changeset/testing-sandbox-engine.md b/.changeset/testing-sandbox-engine.md deleted file mode 100644 index abf5701d..00000000 --- a/.changeset/testing-sandbox-engine.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -feat(sdk/testing): MockBukkit 风格假引擎 + createSandbox + minecraft-loader - -- 可控 `@minecraft/server` / `server-ui`(L0 生成全表面 + 未实现硬失败、tick、表单队列) -- `createSandbox` 默认 boot;conformance 套件 -- 导出 `@sfmc-bds/sdk/testing/minecraft-loader` diff --git a/.changeset/testing-sandbox-fidelity.md b/.changeset/testing-sandbox-fidelity.md deleted file mode 100644 index 90403199..00000000 --- a/.changeset/testing-sandbox-fidelity.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -feat(sdk/testing): createSandbox 宿主分相;API 保真加深含 server-ui 全表面 L0 - -对照本地 pin server-ui(CustomForm/MessageBox/Observables/uiManager);ItemStack/Container/Entity/Dimension/Scoreboard L2;CI 跑 SDK testing + generated/ 一致性。 diff --git a/.changeset/tidy-transactions-recover.md b/.changeset/tidy-transactions-recover.md deleted file mode 100644 index df889226..00000000 --- a/.changeset/tidy-transactions-recover.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/db-server": patch ---- - -为交互式数据库事务增加空闲租约回收,并为事务槽排队增加超时和 `transaction_busy` 错误,防止孤儿事务永久阻塞所有模块。 diff --git a/.changeset/track-bds-player-xuid.md b/.changeset/track-bds-player-xuid.md deleted file mode 100644 index 7ea2c8c5..00000000 --- a/.changeset/track-bds-player-xuid.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/cli": patch -"@sfmc-bds/db-server": patch ---- - -从 BDS 原生日志同步玩家 XUID,并扩展玩家快照字段以支持重生点、位置、游戏模式与内容指纹。 diff --git a/.changeset/twelve-llamas-talk.md b/.changeset/twelve-llamas-talk.md deleted file mode 100644 index ec01bdb2..00000000 --- a/.changeset/twelve-llamas-talk.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@sfmc-bds/bds-tools": patch -"@sfmc-bds/db-server": patch -"@sfmc-bds/eslint-plugin": patch -"@sfmc-bds/sdk": patch -"@sfmc-bds/qq-bridge": patch -"@sfmc-bds/cli": patch -"@sfmc-bds/sfmc": patch -"@sfmc-bds/tools": patch ---- - -none diff --git a/.changeset/ui-dropdown-options-source.md b/.changeset/ui-dropdown-options-source.md deleted file mode 100644 index 1d5b2ae7..00000000 --- a/.changeset/ui-dropdown-options-source.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -dropdown 的 options 支持从 load 数据源注入(source/as/label/value),与 each 对齐。 diff --git a/.changeset/ui-studio-confirm-challenge.md b/.changeset/ui-studio-confirm-challenge.md deleted file mode 100644 index 813a3820..00000000 --- a/.changeset/ui-studio-confirm-challenge.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -声明式 UI 危险确认支持可选校验文本 challenge(固定字或 {{path}}),未匹配前确认按钮禁用。 diff --git a/.changeset/ui-studio-dnd-bindings-fixtures.md b/.changeset/ui-studio-dnd-bindings-fixtures.md deleted file mode 100644 index b0abc651..00000000 --- a/.changeset/ui-studio-dnd-bindings-fixtures.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -UI Studio 切片 3:拖放组件库 + 数据绑定选择器 + 预览场景管理。 - -- 拖放:左栏新增组件库面板(12 种节点 + 图标 + 合理默认值),HTML5 DnD 拖入画布任意位置(兄弟前/后插入线、when/each 槽位落点、body 末尾追加),画布内节点可拖动重排或跨容器移动(禁止移入自身后代,同容器后移自动修正下标);拖入输入组件时自动补齐 state 声明、each 自动补 load 占位,避免页面因未声明引用立即失验。 -- 数据绑定选择器:bind/source 字段改为 Headless UI Listbox,按 状态/参数/数据源/计算值/玩家 分组展示候选路径(bind 契约限定 state.*),支持自定义路径录入;失验引用仍由诊断区兜底。 -- 预览场景:基础 fixture 之外支持 `.ui-studio/fixtures/.json` 多场景(新建复制基础 fixture、重命名/移动、删除,中文名可用),画布顶部 Listbox 切换场景并重建预览会话,树中标注「使用中」。 -- 修复与打磨:页面失验时选中不再被守卫弹走,Inspector 退化为整文件 JSON 编辑器以便修复;画布空态提示区分「失验」与「无页面」;原生控件主题化(color-scheme、WebKit/Firefox 滚动条、select 自定义箭头与弹出项配色、checkbox accent-color)。 diff --git a/.changeset/ui-studio-each-editor-slots.md b/.changeset/ui-studio-each-editor-slots.md deleted file mode 100644 index 0703332c..00000000 --- a/.changeset/ui-studio-each-editor-slots.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 画布中 each 改为模板/空态常驻:未生效分支灰色可编辑,模板只画一份原型并标注条数。 diff --git a/.changeset/ui-studio-empty-action-trigger.md b/.changeset/ui-studio-empty-action-trigger.md deleted file mode 100644 index 6c00b937..00000000 --- a/.changeset/ui-studio-empty-action-trigger.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 切换按钮 trigger 为 action/navigate 时允许空 id 作为编辑中间态,页面不再被整页踢出结构校验。 diff --git a/.changeset/ui-studio-empty-body-dnd.md b/.changeset/ui-studio-empty-body-dnd.md deleted file mode 100644 index 3c7db50f..00000000 --- a/.changeset/ui-studio-empty-body-dnd.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -修复 UI Studio 空 body 拖入组件后 Chrome 拖放会话无法结束(光标一直握住、页面像卡住)。 diff --git a/.changeset/ui-studio-fixed-port.md b/.changeset/ui-studio-fixed-port.md deleted file mode 100644 index 8a10677b..00000000 --- a/.changeset/ui-studio-fixed-port.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": patch -"@sfmc-bds/cli": patch ---- - -UI Studio 改为固定监听 `127.0.0.1:3003`,避免每次随机端口导致浏览器 IndexedDB 工程丢失。 diff --git a/.changeset/ui-studio-light-theme.md b/.changeset/ui-studio-light-theme.md deleted file mode 100644 index ec8e74b8..00000000 --- a/.changeset/ui-studio-light-theme.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 接上已有 light 令牌:默认跟随系统,顶栏可在浅色 / 深色 / 跟随系统间切换,并记住偏好。 diff --git a/.changeset/ui-studio-preview-bind-highlight.md b/.changeset/ui-studio-preview-bind-highlight.md deleted file mode 100644 index bb83d8eb..00000000 --- a/.changeset/ui-studio-preview-bind-highlight.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 预览将 {{path}} 绑定原样显示并加背景高亮,避免未求值变量变成空白。 diff --git a/.changeset/ui-studio-project-mode.md b/.changeset/ui-studio-project-mode.md deleted file mode 100644 index 02b099e8..00000000 --- a/.changeset/ui-studio-project-mode.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/cli": minor ---- - -UI Studio 切片 2:项目化改造 + 可视化编辑能力。 - -- 项目化:`sfmc ui studio` 不再依赖模块目录,服务端简化为纯静态托管(去令牌/API);项目存于浏览器 IndexedDB,支持多项目新建/打开/重命名/删除,zip 整包导入导出(fflate),导入时自动提取根级 manifest.json 的 services 清单。 -- 编辑能力:属性面板可直接编辑 feature/页面/组件字段,整表 prev/next 撤销重做栈(Ctrl+Z / Ctrl+Shift+Z),600ms 防抖自动持久化;页面文件支持新建/重命名/复制/删除并自动同步 feature.screens 引用,未知字段原样保留。 -- 交互层:引入 @headlessui/react(动作预览弹层改造为 Dialog,焦点陷阱 + ESC 关闭)与 lucide-react 图标;新增顶栏「文件/编辑」下拉菜单(Headless UI Menu)与页面树右键菜单。 -- 修复:编辑器拆分为装载器 + keyed 内层编辑器,杜绝「空文件表初始化草稿后被误持久化覆盖项目数据」的窗口;Inspector 文本/数字字段在外部值变化(撤销/重做)时正确同步。 diff --git a/.changeset/ui-studio-readonly-slice.md b/.changeset/ui-studio-readonly-slice.md deleted file mode 100644 index bf5979e0..00000000 --- a/.changeset/ui-studio-readonly-slice.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@sfmc-bds/sdk": minor -"@sfmc-bds/cli": minor ---- - -新增 `@sfmc-bds/sdk/ui-studio` 与 `sfmc ui studio` 命令:本地只读可视化设计器(切片 1)。仅监听 127.0.0.1、会话令牌鉴权、Origin 检查与路径限制;提供工程树 / 语义预览画布 / 只读属性面板 / 诊断定位,预览求值语义与 gui 运行时对齐。 diff --git a/.changeset/ui-studio-remove-scenarios.md b/.changeset/ui-studio-remove-scenarios.md deleted file mode 100644 index 68b25dcd..00000000 --- a/.changeset/ui-studio-remove-scenarios.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 去掉预览「场景」产品面:不再新建/切换 fixture,新工程也不再写入 preview.fixture.json。 diff --git a/.changeset/ui-studio-sidebar-drag-handle.md b/.changeset/ui-studio-sidebar-drag-handle.md deleted file mode 100644 index 775605f7..00000000 --- a/.changeset/ui-studio-sidebar-drag-handle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -UI Studio 侧栏可拖项改为六点抓手发起拖放,点击选中/展开不再与拖动手势打架。 diff --git a/.changeset/ui-studio-slider-click-freeze.md b/.changeset/ui-studio-slider-click-freeze.md deleted file mode 100644 index 39afa78c..00000000 --- a/.changeset/ui-studio-slider-click-freeze.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -修复 UI Studio 宽跨度滑杆(如金库 1–100000)点击轨道时因 Chrome 逐步派发 input 而卡死页面。 diff --git a/.changeset/ui-textfield-placeholder-template.md b/.changeset/ui-textfield-placeholder-template.md deleted file mode 100644 index 23bcf0ad..00000000 --- a/.changeset/ui-textfield-placeholder-template.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": patch ---- - -textField 的 placeholder 改为模板字符串;空绑定时写入 CustomForm.textField 的 text,作为输入框当前值/占位内容。 diff --git a/.changeset/ui-toggle-each-bind.md b/.changeset/ui-toggle-each-bind.md deleted file mode 100644 index b0704f75..00000000 --- a/.changeset/ui-toggle-each-bind.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/sdk": minor ---- - -声明式 UI 的开关可绑定 each 条目字段,并支持值变化时立即跑 trigger,列表行上的即时开关不必再做成固定槽位。 diff --git a/.changeset/unpublish-tools-move-capabilities.md b/.changeset/unpublish-tools-move-capabilities.md deleted file mode 100644 index 1ec2a84f..00000000 --- a/.changeset/unpublish-tools-move-capabilities.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@sfmc-bds/cli": minor -"@sfmc-bds/devkit": minor -"@sfmc-bds/sfmc": patch ---- - -停发 `@sfmc-bds/tools`:`fetch-module` 迁入 `@sfmc-bds/cli`,`new-module` 迁入 `@sfmc-bds/devkit`;tools 改为 monorepo private(verify/build bins)。meta 不再依赖 tools。发版后请对已发布 beta 执行: - -`npm deprecate @sfmc-bds/tools@"*" "Moved: use @sfmc-bds/cli (mod install) and @sfmc-bds/devkit (scaffold)."` diff --git a/.changeset/verify-module-publish.md b/.changeset/verify-module-publish.md deleted file mode 100644 index 636403f5..00000000 --- a/.changeset/verify-module-publish.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -feat(tools): 新增 `tools/verify-module-publish.mjs` pre-publish 守门 - -- 7 类硬检查(exit 1):manifest v2 schema / 必填字段 / `package.name` 与 `manifest.id` 折叠一致 / `package.files` 含 `sapi/` / `npm pack` 真实产物 tar 解析(验 `package.json` + `sapi/manifest.json` + `sapi/src/**`)/ 无 `@sfmc/sdk` 旧别名 / 显式声明 `@sfmc-bds/sdk` 依赖。 -- 跨模块源码 import 警告(exit 0;不阻塞 publish):相对路径深挖 ≥ 2 级、未授权模块引用。 -- npm pack tar 解析:极简 tar 头解析器(512-byte 块 + null-padded name/size + typeflag);用 `zlib.gunzipSync` 解 gzip(无新依赖)。 -- Windows spawn:直接调 `node npm-cli.js`(不绕 cmd.exe);合并 stdout + stderr(npm 11+ 把 notice 打到 stderr,tgz 名在 stdout)。 -- 复用 `@sfmc-bds/bds-tools/zipx` 已有的同思路(防 zip-slip),不重复发明。 -- 测试 `tools/verify-module-publish.test.mjs` 5 cases:模板仓(good fixture)+ 4 个坏 fixture(缺 manifest / 错 schemaVersion / name 不匹配 / 旧别名)。 -- sfmc workspace 仍 93/93;全仓 typecheck 干净。 -- 单独可跑;CI 可 `node tools/verify-module-publish.mjs` 拦截 publish。 \ No newline at end of file diff --git a/.changeset/wild-owls-appear.md b/.changeset/wild-owls-appear.md deleted file mode 100644 index ffc87bcb..00000000 --- a/.changeset/wild-owls-appear.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@sfmc-bds/cli": minor ---- - -重构:统一服务运行时查询并增强服务状态管理 diff --git a/modules/sdk/@sfmc-eslint-plugin/CHANGELOG.md b/modules/sdk/@sfmc-eslint-plugin/CHANGELOG.md index 33a602eb..64597d60 100644 --- a/modules/sdk/@sfmc-eslint-plugin/CHANGELOG.md +++ b/modules/sdk/@sfmc-eslint-plugin/CHANGELOG.md @@ -1,5 +1,14 @@ # @sfmc-bds/eslint-plugin +## 0.1.1 + +### Patch Changes + +- c1de2a8: none +- d933a02: 安装和更新模块时从 `configs-default` 创建并补全模块配置,且不覆盖用户已有值。 +- f8cbe3b: none +- b6f8adc: none + ## 0.1.1-beta.3 ### Patch Changes diff --git a/modules/sdk/@sfmc-eslint-plugin/package.json b/modules/sdk/@sfmc-eslint-plugin/package.json index 02794601..0ae9e8cd 100644 --- a/modules/sdk/@sfmc-eslint-plugin/package.json +++ b/modules/sdk/@sfmc-eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/eslint-plugin", - "version": "0.1.1-beta.3", + "version": "0.1.1", "description": "ESLint rules for SFMC SDK / module authoring conventions (Msg API, import paths, ModuleRegistry).", "author": "Shiroha7z", "license": "ISC", diff --git a/modules/sdk/@sfmc-sdk/CHANGELOG.md b/modules/sdk/@sfmc-sdk/CHANGELOG.md index 170277b2..ad66ed5a 100644 --- a/modules/sdk/@sfmc-sdk/CHANGELOG.md +++ b/modules/sdk/@sfmc-sdk/CHANGELOG.md @@ -1,5 +1,146 @@ # @sfmc-bds/sdk +## 0.2.0 + +### Minor Changes + +- 74a27c7: 将旧版 `!` 聊天前缀命令迁移到 Bedrock 原生自定义命令接口。平台命令统一使用 + `/sfmc:`,模块命令使用 `/sfmc:_`;同时修复内置 + `/sfmc:help` 及其访客权限未注册的问题。 + + 交互式数据库事务改为互斥排队执行,避免并发 `beginSession` 清理仍在使用的会话。 + +- ea1e57e: 为原生玩家命令增加短别名、枚举子命令与参数透传,并将权限列表合并到 `/c:help permissions`。 +- 89ffceb: QQ 入服审批(INTERACTION 回调按钮)+ 群 OpenAPI info/bot_state + 踢人/白名单队列(BDS 由 qq-link 模块经 server-admin 生效) +- 89ffceb: QQ 侧指令菜单(official Markdown/键盘与 llbot 编号菜单共用注册表) +- 89ffceb: QQ 事件推群(节流):join/leave/death 约 1 分钟聚合;BDS 启停立即推;配置 `qq_events`;出站复用现有 MC→QQ 通道 +- 89ffceb: QQ 官方自定义菜单/指令面板同步、C2C 指令回复、status/online 与 QQ↔MC 绑定平台 API(游戏侧见独立模块 qq-link) +- 89ffceb: 群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) +- 4a9b066: 统一 QQ 双后端玩家服务菜单、权限核验、敏感操作确认及错误反馈,修复编号菜单与长名单发送,保留查服、版本和 ip 指令习惯。 + + 新增 public_server 公开连接配置;版本优先使用 CLI 捕获并经状态接口核验的当前 BDS 启动版本。移除在线状态接口的 64 人上限,不改变入服业务状态与审批策略。 + +- 3c07ced: 移除远程控制功能:删除 `sfmc remote` / WebSocket agent、`configs/remote.json` 与对应 schema;不再提供 `@sfmc-bds/remote-controller` 包。 +- 847bfcb: feat(sapi): 增强 debug 门面(运行时开关 + DebugSink),经 @minecraft/diagnostics 可选接入 Sentry;BP manifest 声明 diagnostics/server-admin +- 5a4eff6: 新增 `@sfmc-bds/sdk/sapi/ui` 宿主级声明式 UI 能力面,统一 feature 注册、页面打开、DDUI 渲染与表单重试;页面 service 调用按 feature 所属模块身份执行。 +- 29d6deb: feat(sdk/module-loader): 拆 BDS SAPI host 抽象,模块 loader 不再顶层 import `@minecraft/server` + + DIP: + + - 新增 `BdsSystem` / `ModuleAuthHooks`;`trackSystemRun` 与模块身份注入均经钩子,不顶层拉 SAPI client。 + - **`@sfmc-bds/sdk/module-loader` barrel 不再 re-export** `installHostBootstrap` / `createHttpDataAdapter`。 + BDS 入口:`@sfmc-bds/sdk/module-loader/install`;BP esbuild banner 调用 `installHostBootstrap()`。 + - 因此 `import "@sfmc-bds/sdk/module-loader"`(仅 ModuleRegistry / ConfigManager)在 `node --test` + 下**无需** mock `@minecraft/server`。 + - 若测试还 `import "@sfmc-bds/sdk/sapi/runtime"`(Command/Msg 等),仍需 mock(与 loader DIP 无关)。 + + 破坏性:原先从 `@sfmc-bds/sdk/module-loader` 取 `installHostBootstrap` 的调用方须改子路径。 + +- 0992ab9: feat(sdk): 新增 `@sfmc-bds/sdk/testing` 测试 harness + + - `createFakePlayer({ id?, name })`:返回 `{ id, name, log, sendMessage }`;`Msg.*` 通过 duck-typed `sendMessage` 自动收集消息,`assertMsg(player, substring)` 断言。 + - `createFakeWorld()`:极简事件总线(`on(event, handler)` / `emit(event, payload)` / `reset()`),单测跑 `system.events.subscribe` 替换面。 + - `createFakeDb({ provides? })`:in-memory 事务替身,`tx.call(name, input)` 命中 stub 返回 output,未命中抛 `no stub for service ""`;`calls` 数组记录全部调用。 + - `runLifecycle(descriptor, opts?)`:直接调 lifecycle 钩子(registerPermissions / registerCommands / registerEvents / init),绕过 `ConfigManager.isReady()` 门禁;返回 `{ ok, error? }`。`opts.afterWorldLoad` 控制是否跑 init(默认遵守 descriptor 自身设置)。`runCleanup(descriptor)` 同款。 + - `package.json` exports 新增 `./testing` 子路径;`build.mjs` SUBPATHS 增 `testing (node)`。 + - 单元测试:`testing.test.mjs` 9 cases 通过(fake player/world/db + runLifecycle/cleanup 全部覆盖)。 + - README 加「模块测试(无需 BDS)」章节,模板仓 README/test 也已指引走 harness。 + + > `runLifecycle` 不替身 SDK 内部 ConfigManager —— 模块若在 init 内调 db/config/service,须用例自己 stub。本期不模拟真 db-server / 真 BDS。 + +- f616527: 将所有玩家原生命令统一改为 `/c:<命令>`,模块命令不再拼接模块 id;旧的 `/c:<模块>_<命令>` 名称不再注册。 +- 8568388: feat(sdk/testing): L0 自 `.d.ts` 生成大范围假导出 + 覆盖率门禁 + + 对照 Levi 仅作映射笔记(不入库);pin 版 `@minecraft/server` 为契约权威。 + +- 8568388: feat(sdk/testing): MockBukkit 风格假引擎 + createSandbox + minecraft-loader + + - 可控 `@minecraft/server` / `server-ui`(L0 生成全表面 + 未实现硬失败、tick、表单队列) + - `createSandbox` 默认 boot;conformance 套件 + - 导出 `@sfmc-bds/sdk/testing/minecraft-loader` + +- 8568388: feat(sdk/testing): createSandbox 宿主分相;API 保真加深含 server-ui 全表面 L0 + + 对照本地 pin server-ui(CustomForm/MessageBox/Observables/uiManager);ItemStack/Container/Entity/Dimension/Scoreboard L2;CI 跑 SDK testing + generated/ 一致性。 + +- 16bba29: UI Studio 切片 3:拖放组件库 + 数据绑定选择器 + 预览场景管理。 + + - 拖放:左栏新增组件库面板(12 种节点 + 图标 + 合理默认值),HTML5 DnD 拖入画布任意位置(兄弟前/后插入线、when/each 槽位落点、body 末尾追加),画布内节点可拖动重排或跨容器移动(禁止移入自身后代,同容器后移自动修正下标);拖入输入组件时自动补齐 state 声明、each 自动补 load 占位,避免页面因未声明引用立即失验。 + - 数据绑定选择器:bind/source 字段改为 Headless UI Listbox,按 状态/参数/数据源/计算值/玩家 分组展示候选路径(bind 契约限定 state.*),支持自定义路径录入;失验引用仍由诊断区兜底。 + - 预览场景:基础 fixture 之外支持 `.ui-studio/fixtures/.json` 多场景(新建复制基础 fixture、重命名/移动、删除,中文名可用),画布顶部 Listbox 切换场景并重建预览会话,树中标注「使用中」。 + - 修复与打磨:页面失验时选中不再被守卫弹走,Inspector 退化为整文件 JSON 编辑器以便修复;画布空态提示区分「失验」与「无页面」;原生控件主题化(color-scheme、WebKit/Firefox 滚动条、select 自定义箭头与弹出项配色、checkbox accent-color)。 + +- 12b7dfc: UI Studio 切片 2:项目化改造 + 可视化编辑能力。 + + - 项目化:`sfmc ui studio` 不再依赖模块目录,服务端简化为纯静态托管(去令牌/API);项目存于浏览器 IndexedDB,支持多项目新建/打开/重命名/删除,zip 整包导入导出(fflate),导入时自动提取根级 manifest.json 的 services 清单。 + - 编辑能力:属性面板可直接编辑 feature/页面/组件字段,整表 prev/next 撤销重做栈(Ctrl+Z / Ctrl+Shift+Z),600ms 防抖自动持久化;页面文件支持新建/重命名/复制/删除并自动同步 feature.screens 引用,未知字段原样保留。 + - 交互层:引入 @headlessui/react(动作预览弹层改造为 Dialog,焦点陷阱 + ESC 关闭)与 lucide-react 图标;新增顶栏「文件/编辑」下拉菜单(Headless UI Menu)与页面树右键菜单。 + - 修复:编辑器拆分为装载器 + keyed 内层编辑器,杜绝「空文件表初始化草稿后被误持久化覆盖项目数据」的窗口;Inspector 文本/数字字段在外部值变化(撤销/重做)时正确同步。 + +- cf3293f: 新增 `@sfmc-bds/sdk/ui-studio` 与 `sfmc ui studio` 命令:本地只读可视化设计器(切片 1)。仅监听 127.0.0.1、会话令牌鉴权、Origin 检查与路径限制;提供工程树 / 语义预览画布 / 只读属性面板 / 诊断定位,预览求值语义与 gui 运行时对齐。 +- 1a4ddda: 声明式 UI 的开关可绑定 each 条目字段,并支持值变化时立即跑 trigger,列表行上的即时开关不必再做成固定槽位。 + +### Patch Changes + +- a5ccbd3: fix(logs/config): BDS 级别解析 DRY 到 SDK;剥前缀后勿误判 Error;readJson 剥 BOM;log-filter 走 ensureSchemaConfig +- e714f86: feat(cli/logs): 新增 BDS 原版日志本地化翻译与友好转换引擎,支持自定义规则正则替换与模式字典 +- 4a9b066: 修复 BDS 更新日志的版本匹配与官方文章链接,并在管道日志中保留下载条形进度。 +- 050da7f: fix: BDS 原生依赖过滤与协商、模块作用域代理及数据库表结构解耦与自愈 + + - **bds-tools**: 引入 Bedrock 原生脚本模块白名单机制,过滤 npm 纯数据包;支持自动识别并启用 level.dat 中的 gametest beta 实验性玩法;增强 server.properties 中文本地化与幂等更新。 + - **cli**: 行为包打包期与各模块原生依赖严格协商,协商提升 Bedrock 原生依赖至兼容最高版本;重构 esbuild SDK resolve 插件,为所有包含 `/sapi/` 的业务模块(含跨仓 symlink/junction)自动注入专属作用域虚拟代理,杜绝全局单例状态覆盖与越权。 + - **db-server**: 精简 `initSchema`,移除非底座的业务模块表定义,实现平台核心底座表与业务模组私有表契约解耦;增强 `SchemaRegistry.createPhysical`,自动探测并安全清理历史旧版空表,支持存量表平滑自愈追加缺失列。 + - **sdk**: 优化调试日志门面,显式格式化错误名称、信息与堆栈追踪;确保 SAPI 客户端安全注入请求头;修复 host bootstrap 导出边界以保证 Node 环境引用纯净。 + +- aadd2de: Use each chat channel's prefix and QQ forwarding switch for MC messages. Route QQ group messages into the read-only game channel and remove the former bridge channel and MC prefix configuration fields. +- 8552772: fix(sdk/ConfigManager): `refreshModules` 对全部启停键做 diff 广播 + + 原先 `_notifyModuleChanges` 在非 force 路径 `break`,只通知 Map 第一项。 + 现改为:init 全量通知;refresh 相对 previous 通知变更项(含消失 → false)。 + +- efa6e73: 将 Minecraft Script API 类型与新模块模板更新到 BDS 1.26.51 使用的 server 2.11.0-beta、server-ui 2.3.0-beta,并同步 vanilla-data 版本。 +- 847bfcb: feat(sapi): 增强调试日志功能,支持 Sentry 接入,更新相关模块和文档 +- aadd2de: 将官方 QQ Webhook 的 SSH 反向隧道纳入 SFMC CLI 服务编排,提供配置、启停、断线重试、状态和日志。 +- efa6e73: 官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 +- 3465c7e: 更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 +- efa6e73: 为 QQ 管理菜单增加可即时生效的服务器事件推送开关,并补充 BDS 正常停服通知。 +- c1de2a8: none +- c72fdc8: feat(tools): 脚手架转向 cwd 单包根(与 Tanya7z/sfmc-module-template 同构) + + - `tools/new-module.mjs`: + - 默认(缺省 `--root`):写到 **cwd** 作为单包根(包根 = 包仓库根),生成自包含 `package.json` + 自包含 `sapi/tsconfig.json` + `$schema` 指向 `node_modules/@sfmc-bds/sdk`。 + - `--root ` / `SFMC_MODULES_ROOT` 显式 legacy 模式:仍写到 `/packages/`(兼容旧 sfmc-modules 工作区)。 + - 拒绝 `--root` 指向主仓 `modules/packages`(那是 install 落点,不是开发工作区)。 + - 终端打印「模式: cwd 单包根 / legacy 工作区」+ 各自的下一步命令。 + - `tools/scaffold-redirect.test.mjs`:5 cases 表驱动(cwd 单包 / legacy / 拒主仓 / 缺 packages / env fallback)。 + - i18n:`modwiz.genPackage` / `modwiz.skeletonWritten` 等改为 cwd 友好文案。 + - 文档:上一轮 `module-author.md` 已写明 `sfmc module create` 在模块仓根执行 + `--from local --link` 装入主仓;本 PR 落地脚手架默认行为。 + +- d9ded8f: fix(sdk): 作用域 db/config/service 客户端,消除多模块身份串桶与全局事务互斥 + + - 新增 createDbClient / createConfigClient / createServiceClient:身份与 tx 状态封闭在闭包 + - 单例 db/config/service 改为按 moduleId 登记表转发(兼容旧代码) + - ModuleRegistry lifecycle 注入 ModuleServices;install 装配配对 inTx 探针 + - create-module 模板引导闭包捕获 services.db + +- e175ed9: fix(sdk/testing): minecraft-loader 钉死同一 `@sfmc-bds/sdk` 实例,避免模块仓 node_modules 与宿主双包导致 Command/Permission 空清单;脚手架 Command.register 传入 MODULE_ID。 +- b81327a: sdk:移除对旧版type的支持 tools,cli:杂项 +- f312e8b: 将 `/c:help` 与权限列表按完整行连续分段发送,避免命令较多时被客户端截断。 +- f8cbe3b: none +- b6f8adc: none +- 1a4ddda: dropdown 的 options 支持从 load 数据源注入(source/as/label/value),与 each 对齐。 +- 1a4ddda: 声明式 UI 危险确认支持可选校验文本 challenge(固定字或 {{path}}),未匹配前确认按钮禁用。 +- dc62ffc: UI Studio 画布中 each 改为模板/空态常驻:未生效分支灰色可编辑,模板只画一份原型并标注条数。 +- 1a4ddda: UI Studio 切换按钮 trigger 为 action/navigate 时允许空 id 作为编辑中间态,页面不再被整页踢出结构校验。 +- dc62ffc: 修复 UI Studio 空 body 拖入组件后 Chrome 拖放会话无法结束(光标一直握住、页面像卡住)。 +- dc62ffc: UI Studio 改为固定监听 `127.0.0.1:3003`,避免每次随机端口导致浏览器 IndexedDB 工程丢失。 +- dc62ffc: UI Studio 接上已有 light 令牌:默认跟随系统,顶栏可在浅色 / 深色 / 跟随系统间切换,并记住偏好。 +- dc62ffc: UI Studio 预览将 {{path}} 绑定原样显示并加背景高亮,避免未求值变量变成空白。 +- 1a4ddda: UI Studio 去掉预览「场景」产品面:不再新建/切换 fixture,新工程也不再写入 preview.fixture.json。 +- dc62ffc: UI Studio 侧栏可拖项改为六点抓手发起拖放,点击选中/展开不再与拖动手势打架。 +- dc62ffc: 修复 UI Studio 宽跨度滑杆(如金库 1–100000)点击轨道时因 Chrome 逐步派发 input 而卡死页面。 +- 1a4ddda: textField 的 placeholder 改为模板字符串;空绑定时写入 CustomForm.textField 的 text,作为输入框当前值/占位内容。 + ## 0.2.0-beta.18 ### Minor Changes diff --git a/modules/sdk/@sfmc-sdk/package.json b/modules/sdk/@sfmc-sdk/package.json index c1a54e5d..a865c064 100644 --- a/modules/sdk/@sfmc-sdk/package.json +++ b/modules/sdk/@sfmc-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/sdk", - "version": "0.2.0-beta.18", + "version": "0.2.0", "description": "ScriptsForMinecraftServer unified SDK — SAPI/Node umbrella covering contracts, runtime, module-loader, and db/config/service capabilities.", "author": "Shiroha7z", "license": "ISC", diff --git a/packages/bds-tools/CHANGELOG.md b/packages/bds-tools/CHANGELOG.md index df38c5a0..a25a821e 100644 --- a/packages/bds-tools/CHANGELOG.md +++ b/packages/bds-tools/CHANGELOG.md @@ -1,5 +1,125 @@ # @sfmc-bds/bds-tools +## 0.2.0 + +### Minor Changes + +- c890a95: feat(bds-tools): 将 pack-update 域逻辑迁入 `@sfmc-bds/bds-tools/pack-update` + + - 新增 `createPackUpdateApi(deps)` 依赖注入入口;版本策略 / CurseForge / 默认配置语义不变 + - sfmc 保留薄封装注入 ROOT、i18n、theme、clack、logs + +- 8552772: chore: 删除已无仓内调用的公开兼容导出 + + 破坏性(外部若仍 import 需改用替代): + + - `@sfmc-bds/cli`:移除 `serviceStatus`(用 `queryServicesRuntime`)、`HELP`(用 `getHelp`)、 + `resolveDefaultsDir` / `seedMissingConfigsFromDefaults`、`CommandChannel: "external"` / + `PaletteEntry` / `listPaletteEntries` 等遗留表面。 + - `@sfmc-bds/bds-tools`:移除已不抛出的 `Utf8BomError` 类及 re-export(读 JSON 仍自动剥 BOM)。 + +- 06e0f19: \# feat/reactor:为CLI命令添加命令界面和帮助文本 + + \- 实现了command-surface.ts文件,用于定义CLI命令的规范、通道及可见性规则。 + + \- 创建了help-text.ts文件,根据命令在argv和REPL模式下的可见性提供帮助文档。 + + \- 引入了pack-update/index.ts文件,封装了包含必要依赖项和日志记录的包更新功能。 + + \- 添加了send-target.ts文件,用于在REPL中管理发送目标,包括服务状态和提示符样式。 + +- 89ffceb: Linux BDS 宿主:按平台解析可执行文件与下载 URL,启动时设置 LD_LIBRARY_PATH;argv start 在 POSIX 上 daemonize;pgrep 用 -x 避免误匹配 +- cc6a12b: feat(bds-tools,cli): 增强 packs doctor 存档实验性玩法开关诊断与自愈配置 + + - `@sfmc-bds/bds-tools`: 支持检测与修改当前版本已知的全部实验性功能(测试版 API、创作者功能、创作者相机、Voxel形状、村民贸易再平衡、2026年第3次更新、Minecraft Education 功能),提供智能别名解析与安全的原子化 level.dat 修改与灾备。 + - `@sfmc-bds/cli`: `packs doctor` 命令支持 `--experiments`、`--all-experiments`、`--experiments=` 开关;在诊断视图中高亮直观展示当前存档的各实验性玩法启用状态。 + +- 89ffceb: QQ 事件推群(节流):join/leave/death 约 1 分钟聚合;BDS 启停立即推;配置 `qq_events`;出站复用现有 MC→QQ 通道 +- c890a95: feat(sfmc/bds-tools): CLI UX 分层、pack-update 迁出、OS 进程探活 + + - REPL:`/` + Ctrl+P 命令面板、左右光标、quit 干净退出 + - argv:`sfmc i|install`、`sfmc -p …`;help 按通道标准化 + - pack-update 迁入 `@sfmc-bds/bds-tools/pack-update`(CLI 薄封装) + - process-probe:外部 BDS 可识别;status 区分 managed/external + +### Patch Changes + +- 4a9b066: 修复 BDS 更新日志的版本匹配与官方文章链接,并在管道日志中保留下载条形进度。 +- 4a9b066: 修复运行中的 BDS 更新时被 CLI 崩溃自启提前拉起的问题,并在覆盖安装目录前确认服务已停止。 +- 050da7f: fix: BDS 原生依赖过滤与协商、模块作用域代理及数据库表结构解耦与自愈 + + - **bds-tools**: 引入 Bedrock 原生脚本模块白名单机制,过滤 npm 纯数据包;支持自动识别并启用 level.dat 中的 gametest beta 实验性玩法;增强 server.properties 中文本地化与幂等更新。 + - **cli**: 行为包打包期与各模块原生依赖严格协商,协商提升 Bedrock 原生依赖至兼容最高版本;重构 esbuild SDK resolve 插件,为所有包含 `/sapi/` 的业务模块(含跨仓 symlink/junction)自动注入专属作用域虚拟代理,杜绝全局单例状态覆盖与越权。 + - **db-server**: 精简 `initSchema`,移除非底座的业务模块表定义,实现平台核心底座表与业务模组私有表契约解耦;增强 `SchemaRegistry.createPhysical`,自动探测并安全清理历史旧版空表,支持存量表平滑自愈追加缺失列。 + - **sdk**: 优化调试日志门面,显式格式化错误名称、信息与堆栈追踪;确保 SAPI 客户端安全注入请求头;修复 host bootstrap 导出边界以保证 Node 环境引用纯净。 + +- 3714053: 发版:build-publishable 拓扑 + listPublishableBuildDeps(npm-publish 应急补发不再硬编码只 build SDK);push 缺失态 DRY 对齐 listUnpushedExistingVersionTags。世界包:readPackDirOccupancy DRY,去掉死不变式,occupancy 保留真实 kind(LSP)。 +- 5ada90e: 修复 #80/#81 合并后 `scanDestOccupancy` 未赋值 `facts`、引用未声明标识符导致 tsc 构建失败;恢复经 `readPackDirOccupancy` 的 DRY 占用扫描。 +- 847bfcb: feat(sapi): 增强调试日志功能,支持 Sentry 接入,更新相关模块和文档 +- efa6e73: QQ 查服改用游戏实时在线玩家及世界信息,CLI 托管的 BDS 启停和异常退出现在上报事件。 +- f3ba416: 游戏聊天互通:MC→QQ 仅转发 `bridge_channel_id` 匹配且非 `qq_` 回环的 messages;QQ 指令「频道」只读提示;扫描 `modules/packages` 时跟随 symlink(修复 `--link` 在 Linux 下被当成非目录) +- 89ffceb: 群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) +- efa6e73: 官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 +- efa6e73: 为 QQ 管理菜单增加可即时生效的服务器事件推送开关,并补充 BDS 正常停服通知。 +- c1de2a8: none +- 847bfcb: feat(sapi): 增强 debug 门面(运行时开关 + DebugSink),经 @minecraft/diagnostics 可选接入 Sentry;BP manifest 声明 diagnostics/server-admin +- f8cbe3b: none +- b6f8adc: none +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [74a27c7] +- Updated dependencies [847bfcb] +- Updated dependencies [aadd2de] +- Updated dependencies [ea1e57e] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] + - @sfmc-bds/sdk@0.2.0 + ## 0.2.0-beta.18 ### Patch Changes diff --git a/packages/bds-tools/package.json b/packages/bds-tools/package.json index d823f3e6..496775d8 100644 --- a/packages/bds-tools/package.json +++ b/packages/bds-tools/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/bds-tools", - "version": "0.2.0-beta.18", + "version": "0.2.0", "description": "SFMC BDS auto-updater, lifecycle manager, and behavior-pack assembler", "author": "Shiroha7z", "license": "AGPL-3.0-only", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 479f3ac4..48036434 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,292 @@ # @sfmc-bds/cli +## 0.2.0 + +### Minor Changes + +- 8552772: feat(sfmc): 作者向 mod test/watch/publish 迁出 CLI + + 运维保留 build/reload/install;作者改用 VS Code 扩展与 @sfmc-bds/devkit。 + 调用已删子命令时给出迁移提示。 + +- 8552772: chore: 删除已无仓内调用的公开兼容导出 + + 破坏性(外部若仍 import 需改用替代): + + - `@sfmc-bds/cli`:移除 `serviceStatus`(用 `queryServicesRuntime`)、`HELP`(用 `getHelp`)、 + `resolveDefaultsDir` / `seedMissingConfigsFromDefaults`、`CommandChannel: "external"` / + `PaletteEntry` / `listPaletteEntries` 等遗留表面。 + - `@sfmc-bds/bds-tools`:移除已不抛出的 `Utf8BomError` 类及 re-export(读 JSON 仍自动剥 BOM)。 + +- b81327a: feat(sfmc): 移除 `mod create` / `mod link` / `mod dev` 三个遗留子命令;为 `mod install` 注册 `i` 短别名(与 `packs i` 对称) + + 破坏性变更(CLI 子命令级别): + + - 删除 `sfmc module create` / `sfmc mod create` 子命令(spec + dispatch + help + i18n)。 + 推荐用法:`node tools/new-module.mjs ` 或直接 clone `Tanya7z/sfmc-module-template` 派生仓。 + - 删除 `sfmc module link` / `sfmc mod link` 子命令。`--link` 旗标本身保留, + 使用 `sfmc mod install --from --link` 即可(这就是之前 `mod link` 内部的转发)。 + - 删除 `sfmc module dev` / `sfmc mod dev` 子命令(仅是文本提示)。 + + 新增: + + - `sfmc mod i ` 现在与 `sfmc -p i` 等价走 `mod install`(对称 packs 子命令的 `i` 别名)。 + - `sfmc install ` --from `:新增 scheme 预检(`npm:`/`local[:]`/`tgz:`/`zip:`/`dir:`/`github:` / 裸目录), + 拼写错误立即在 sfmc 侧红字提示,不再延迟到子进程 die。 + + 清理: + + - `sfmc/src/module-wizard.ts` 整个删除(只剩三个被移除的 wizard + 内部 `runFetchModuleLink`)。 + - `i18n`:`modwiz.*` / `help.module.{create,link,dev}` / `mod.linkNeedsFrom` 全部移除; + 新增 `mod.fromUnknown`(scheme 预检错误文案)+ `mod.install.usage` 补 `--sha256`。 + - 文档:`docs/dev/{index,tools,module-author,platform}.md`、`docs/superpowers/specs/...` 同步更新。 + - 测试:`sfmc/command-surface.test.mjs` 删除 `create 需 TTY` 测试; + `childTokens.includes("create")` 改为 `includes("uninstall")` + 三个 NOT-IN 断言(`create/link/dev`)。 + + 无 API/契约破坏:行为包协议、模块 manifest schema、SDK exports、catalog/lock 格式均未改动。 + +- 06e0f19: \# feat/reactor:为CLI命令添加命令界面和帮助文本 + + \- 实现了command-surface.ts文件,用于定义CLI命令的规范、通道及可见性规则。 + + \- 创建了help-text.ts文件,根据命令在argv和REPL模式下的可见性提供帮助文档。 + + \- 引入了pack-update/index.ts文件,封装了包含必要依赖项和日志记录的包更新功能。 + + \- 添加了send-target.ts文件,用于在REPL中管理发送目标,包括服务状态和提示符样式。 + +- 466d214: feat(tools): `sfmc mod install` 默认走 npm;`--from local` 接受 dir/.tgz/.zip + + - `tools/lib/npm-resolver.mjs`:单一权威的 npm 包名解析(短 id / feature-* / core-* / @scope/name)。 + - `tools/fetch-module.mjs`: + - 新增 `npm:` 前缀(`npm install --prefix packages/ --omit=dev --no-save` 隔离安装)。 + - 新增 `tgz:` / `zip:` 显式前缀;`local:` 现在接受 dir/`.tgz`/`.zip`,无路径默认 cwd。 + - `fromLocal` 重构为单一入口(resolveLocalPath),避免 dir/tgz/zip 解析分散。 + - zip 安装强制校验内含 `package.json` + `sapi/manifest.json`,缺关键文件硬错误并清理污染目录。 + - tgz 安装委托 `npm install --prefix tmp `(不重新发明 tar,零新依赖)。 + - 缺省 source 解析:先看 first-party registry(兼容 `Tanya7z/sfmc-modules`),否则按 `@sfmc-bds/module-` 走 npm;常见 npm 错误翻译为中文可读 + 下一步动作(404 / EACCES / ERESOLVE / ETIMEDOUT)。 + - `tools/install-resolver.test.mjs` + `tools/local-resolver.test.mjs`:表驱动共 16 用例通过。 + - 文档:`docs/guide/modules.md` + `docs/dev/module-author.md` 增「安装源」表格,钉死 default 解析顺序。 + +- 53d7119: feat(sfmc): 新增 `sfmc mod publish` 保姆式 CLI + + - 流水线:npm whoami 检测 → scope 推断(默认 ``)→ dry-run 预检 → version bump → `npm publish` 透传 → 薄 index PR(占位)。 + - 错误翻译(npm 原文 → 中文 + 下一步动作):`ENEEDAUTH` / `EOTP` / 邮箱未确认 / 无权限 publish / 402 Payment / 包名太接近 / `ERESOLVE` / `ETIMEDOUT` / 默认透传。 + - dry-run 预检三件套:manifest v2 schema、package.json#files 含 `sapi/`、`npm pack --dry-run` 解析 tarball 文件清单。 + - version bump:`patch` / `minor` / `major` / `custom `;写入 `package.json#version`,**不改** manifest;publish 失败时回滚 bump。 + - scope 模型:作者发自己 scope(`@/sfmc-module-`);**不**触碰 `@sfmc-bds/*`(与 `mod install` 隔离)。 + - 薄 index PR:当前为占位(`gh api` 真实调用需 `gh auth login` + 远端 `sfmc-modules` 仓;保留 `--skip-index-pr` 选项)。 + - Windows 兼容:`spawn npm.cmd` 通过 `cmd /c npm`(避开 DEP0190 安全警告 + `shell:true` 隐患)。同步修复 `cmdModuleTest` 同样问题。 + - 测试:`module-publish.test.mjs` 8 cases(parsePublishFlags / bumpSemver / 错误翻译表 / runPrecheck / defaultScopeFor);sfmc workspace 85/85 通过。 + - i18n:`publish.*` 中英文案 + `help.module.publish` 子命令描述。 + + > CLI 是 `npm publish` 的编排器 + 检查器 + 错误翻译;**不**替身 npm 行为。所有鉴权(`npm login --auth-type=web` / 2FA / 邮箱确认)走 npm 本身。 + +- 8552772: feat(sfmc): mod enable/disable 本地写 lock,db 在线时 best-effort 热同步 + + 启停不再强依赖 db-server:先写 `module-lock.json`,再尝试 POST;通知失败仍成功并警告。 + +- cc6a12b: feat(bds-tools,cli): 增强 packs doctor 存档实验性玩法开关诊断与自愈配置 + + - `@sfmc-bds/bds-tools`: 支持检测与修改当前版本已知的全部实验性功能(测试版 API、创作者功能、创作者相机、Voxel形状、村民贸易再平衡、2026年第3次更新、Minecraft Education 功能),提供智能别名解析与安全的原子化 level.dat 修改与灾备。 + - `@sfmc-bds/cli`: `packs doctor` 命令支持 `--experiments`、`--all-experiments`、`--experiments=` 开关;在诊断视图中高亮直观展示当前存档的各实验性玩法启用状态。 + +- 2a5b502: feat(sfmc): `mod publish` 接 gh CLI 真实开薄 index PR + + - `openIndexPr` 从占位升级成可执行:检测 `gh` 鉴权 → `gh repo fork` → clone fork → `git checkout -b publish/-` → patch `index.json`(upsert 幂等)→ `git commit` → `git push` → `gh pr create`。 + - 新 CLI flags: + - `--gh-repo OWNER/REPO`(默认 `Tanya7z/sfmc-modules`) + - `--gh-push` 显式 opt-in 真执行(否则只打印意图,避免误污染远端) + - `--gh-fork-remote `(默认 `sfmc-modules-fork`) + - 安全:默认行为 = 打印 intent + gh 命令清单(dry-run 友好);真执行需 `--gh-push`;缺鉴权时降级为 dry-run + 提示 `gh auth login`。 + - 新函数 `indexEntryFor(pkgName, version, sdkRange)` / `splitOwnerRepo(s)` / `patchIndexFile(path, entry)` —— 单一职责,可单测。 + - `patchIndexFile` 校验 `id` 已存在则报错(避免静默覆盖历史版本)。 + - 测试:`module-publish.test.mjs` 加 8 cases(splitOwnerRepo / indexEntryFor / patchIndexFile 缺文件 / 追加排序 / 重复 id / openIndexPr dry-run / skip-index-pr / 非法 repo);sfmc workspace **93/93** 通过。 + - npm publish 成功但 PR 失败 → **不回滚 publish**(包已发);给明确「手动补 index.json」提示。 + +- 3c07ced: 移除远程控制功能:删除 `sfmc remote` / WebSocket agent、`configs/remote.json` 与对应 schema;不再提供 `@sfmc-bds/remote-controller` 包。 +- d933a02: REPL 在服务运行期间常驻 SFMC 平台日志窗口,展示除活跃运行服务以外的所有来源日志,并支持 Tab 循环切换与指令执行。 +- c72fdc8: feat(tools): 脚手架转向 cwd 单包根(与 Tanya7z/sfmc-module-template 同构) + + - `tools/new-module.mjs`: + - 默认(缺省 `--root`):写到 **cwd** 作为单包根(包根 = 包仓库根),生成自包含 `package.json` + 自包含 `sapi/tsconfig.json` + `$schema` 指向 `node_modules/@sfmc-bds/sdk`。 + - `--root ` / `SFMC_MODULES_ROOT` 显式 legacy 模式:仍写到 `/packages/`(兼容旧 sfmc-modules 工作区)。 + - 拒绝 `--root` 指向主仓 `modules/packages`(那是 install 落点,不是开发工作区)。 + - 终端打印「模式: cwd 单包根 / legacy 工作区」+ 各自的下一步命令。 + - `tools/scaffold-redirect.test.mjs`:5 cases 表驱动(cwd 单包 / legacy / 拒主仓 / 缺 packages / env fallback)。 + - i18n:`modwiz.genPackage` / `modwiz.skeletonWritten` 等改为 cwd 友好文案。 + - 文档:上一轮 `module-author.md` 已写明 `sfmc module create` 在模块仓根执行 + `--from local --link` 装入主仓;本 PR 落地脚手架默认行为。 + +- c890a95: feat(sfmc-cli): 命令通道分层(external / repl / both) + + - 单一权威 `command-surface`:部署类(install/create/debug 等)仅外部;send / logs -f 仅 REPL + - help 按通道过滤;dev 类命令蓝色展示(无独立 devmode 开关) + - 去掉 `devmode` / `runtime.json#developer_mode` 门禁 + +- c890a95: feat(sfmc/bds-tools): CLI UX 分层、pack-update 迁出、OS 进程探活 + + - REPL:`/` + Ctrl+P 命令面板、左右光标、quit 干净退出 + - argv:`sfmc i|install`、`sfmc -p …`;help 按通道标准化 + - pack-update 迁入 `@sfmc-bds/bds-tools/pack-update`(CLI 薄封装) + - process-probe:外部 BDS 可识别;status 区分 managed/external + +- 1f7b2c7: feat(sfmc): 新增 `debug` 顶层命令管理 BDS 调试配置 + + - 直接读写 `/config/default/variables.json` 与 `secrets.json` + - 子命令:status / enable / disable / sentry on --dsn / sentry off + - 不修改 SDK 现有 `applyDebugFromVariables()` / `initSentryIfConfigured()` 语义 + - CLI = 配置入口;行为包运行时由 SDK 读取 + - 变更后需 `sfmc mod reload` 或重启 BDS 生效 + +- 2580488: feat(sfmc): 新增 `mod watch` 与 `mod test` 子命令 + + - `sfmc mod watch [--from local[:path]] [--no-reload]`:监听 `sapi/src/**` 变更,~200ms 防抖后复用 `mod reload` 同一路径(build → deploy → 直写 BDS stdin 发 `reload`)。改 `sapi/manifest.json` / `sapi/tsconfig.json` 仅提示「SAPI 启动期缓存,请重启 BDS 进程」。 + - `sfmc mod test [--from local[:path]] [-- ]`:解析 `--from local[:path]`,spawn `npm test` 透传 stdio,让模块仓的 `scripts.test` 自己决定怎么跑。 + - 进程探测复用 `queryServicesRuntime` + `probeBdsStatus`(与 `mod reload` 同源),不另写一遍 reload 路径。 + - i18n:新增 `watch.*` / `help.module.watch|test` 中英文案。 + - 模板仓 `Tanya7z/sfmc-module-template` 已在主仓外部 `D:\#WorkPlace\#MCBEProjects\sfmc-module-template\` 初始化并 commit;本仓库仅交付 CLI 与文档改动。 + - 测试:sfmc workspace `npm test` 77/77 通过(含新增 6 个 watch resolver 表驱动用例)。 + +- 2c91645: feat(sfmc): module build / reload 改走 spawn bds-tools/cli-pack-manager.ts + + - 新增 sfmc/src/module-pack-build.ts:spawn assemble-bp / assemble-rp / deploy / enable-pack / disable-pack / ensure-permission 各 verb + - dispatchModuleCommand 的 build / reload case 改为 import 此文件 + - pack-lifecycle.ts 保留 ensurePacksReady 启动钩子与 wizard 内部消费 + - 模块 build 唯一权威派发入口收敛(与 install/uninstall/create 同架构:CLI = thin wrapper) + +- 12b7dfc: UI Studio 切片 2:项目化改造 + 可视化编辑能力。 + + - 项目化:`sfmc ui studio` 不再依赖模块目录,服务端简化为纯静态托管(去令牌/API);项目存于浏览器 IndexedDB,支持多项目新建/打开/重命名/删除,zip 整包导入导出(fflate),导入时自动提取根级 manifest.json 的 services 清单。 + - 编辑能力:属性面板可直接编辑 feature/页面/组件字段,整表 prev/next 撤销重做栈(Ctrl+Z / Ctrl+Shift+Z),600ms 防抖自动持久化;页面文件支持新建/重命名/复制/删除并自动同步 feature.screens 引用,未知字段原样保留。 + - 交互层:引入 @headlessui/react(动作预览弹层改造为 Dialog,焦点陷阱 + ESC 关闭)与 lucide-react 图标;新增顶栏「文件/编辑」下拉菜单(Headless UI Menu)与页面树右键菜单。 + - 修复:编辑器拆分为装载器 + keyed 内层编辑器,杜绝「空文件表初始化草稿后被误持久化覆盖项目数据」的窗口;Inspector 文本/数字字段在外部值变化(撤销/重做)时正确同步。 + +- cf3293f: 新增 `@sfmc-bds/sdk/ui-studio` 与 `sfmc ui studio` 命令:本地只读可视化设计器(切片 1)。仅监听 127.0.0.1、会话令牌鉴权、Origin 检查与路径限制;提供工程树 / 语义预览画布 / 只读属性面板 / 诊断定位,预览求值语义与 gui 运行时对齐。 +- 9dd77b4: 停发 `@sfmc-bds/tools`:`fetch-module` 迁入 `@sfmc-bds/cli`,`new-module` 迁入 `@sfmc-bds/devkit`;tools 改为 monorepo private(verify/build bins)。meta 不再依赖 tools。发版后请对已发布 beta 执行: + + `npm deprecate @sfmc-bds/tools@"*" "Moved: use @sfmc-bds/cli (mod install) and @sfmc-bds/devkit (scaffold)."` + +- af175bc: feat(tools): 新增 `tools/verify-module-publish.mjs` pre-publish 守门 + + - 7 类硬检查(exit 1):manifest v2 schema / 必填字段 / `package.name` 与 `manifest.id` 折叠一致 / `package.files` 含 `sapi/` / `npm pack` 真实产物 tar 解析(验 `package.json` + `sapi/manifest.json` + `sapi/src/**`)/ 无 `@sfmc/sdk` 旧别名 / 显式声明 `@sfmc-bds/sdk` 依赖。 + - 跨模块源码 import 警告(exit 0;不阻塞 publish):相对路径深挖 ≥ 2 级、未授权模块引用。 + - npm pack tar 解析:极简 tar 头解析器(512-byte 块 + null-padded name/size + typeflag);用 `zlib.gunzipSync` 解 gzip(无新依赖)。 + - Windows spawn:直接调 `node npm-cli.js`(不绕 cmd.exe);合并 stdout + stderr(npm 11+ 把 notice 打到 stderr,tgz 名在 stdout)。 + - 复用 `@sfmc-bds/bds-tools/zipx` 已有的同思路(防 zip-slip),不重复发明。 + - 测试 `tools/verify-module-publish.test.mjs` 5 cases:模板仓(good fixture)+ 4 个坏 fixture(缺 manifest / 错 schemaVersion / name 不匹配 / 旧别名)。 + - sfmc workspace 仍 93/93;全仓 typecheck 干净。 + - 单独可跑;CI 可 `node tools/verify-module-publish.mjs` 拦截 publish。 + +- 5567073: 重构:统一服务运行时查询并增强服务状态管理 + +### Patch Changes + +- a5ccbd3: fix(logs/config): BDS 级别解析 DRY 到 SDK;剥前缀后勿误判 Error;readJson 剥 BOM;log-filter 走 ensureSchemaConfig +- e714f86: feat(cli/logs): 新增 BDS 原版日志本地化翻译与友好转换引擎,支持自定义规则正则替换与模式字典 +- c890a95: feat(bds-tools): 将 pack-update 域逻辑迁入 `@sfmc-bds/bds-tools/pack-update` + + - 新增 `createPackUpdateApi(deps)` 依赖注入入口;版本策略 / CurseForge / 默认配置语义不变 + - sfmc 保留薄封装注入 ROOT、i18n、theme、clack、logs + +- 4a9b066: 修复运行中的 BDS 更新时被 CLI 崩溃自启提前拉起的问题,并在覆盖安装目录前确认服务已停止。 +- 050da7f: fix: BDS 原生依赖过滤与协商、模块作用域代理及数据库表结构解耦与自愈 + + - **bds-tools**: 引入 Bedrock 原生脚本模块白名单机制,过滤 npm 纯数据包;支持自动识别并启用 level.dat 中的 gametest beta 实验性玩法;增强 server.properties 中文本地化与幂等更新。 + - **cli**: 行为包打包期与各模块原生依赖严格协商,协商提升 Bedrock 原生依赖至兼容最高版本;重构 esbuild SDK resolve 插件,为所有包含 `/sapi/` 的业务模块(含跨仓 symlink/junction)自动注入专属作用域虚拟代理,杜绝全局单例状态覆盖与越权。 + - **db-server**: 精简 `initSchema`,移除非底座的业务模块表定义,实现平台核心底座表与业务模组私有表契约解耦;增强 `SchemaRegistry.createPhysical`,自动探测并安全清理历史旧版空表,支持存量表平滑自愈追加缺失列。 + - **sdk**: 优化调试日志门面,显式格式化错误名称、信息与堆栈追踪;确保 SAPI 客户端安全注入请求头;修复 host bootstrap 导出边界以保证 Node 环境引用纯净。 + +- 89ffceb: Linux BDS 宿主:按平台解析可执行文件与下载 URL,启动时设置 LD_LIBRARY_PATH;argv start 在 POSIX 上 daemonize;pgrep 用 -x 避免误匹配 +- efa6e73: QQ 查服改用游戏实时在线玩家及世界信息,CLI 托管的 BDS 启停和异常退出现在上报事件。 +- 89ffceb: 修复 LLBot 启动:兼容向导把 llbot_path 写成目录导致 spawn ENOENT +- aadd2de: 将官方 QQ Webhook 的 SSH 反向隧道纳入 SFMC CLI 服务编排,提供配置、启停、断线重试、状态和日志。 +- b55557b: 纯 index 契约:`--link` 支持 `local:`;index map 支持 `npm`;拆除旁路 sfmc-modules monorepo DX;`mod publish` 写 map 并拒绝 private/非官方 `@sfmc-bds`。 +- e7e7e61: // @ts-check:添加到 23 个 tools/_.mjs 脚本 + 11 个 tools/lib/_.mjs 库 + 5 个 tools/_.test.mjs + 11 个 sfmc/_.test.mjs + 5 个 changeset 系列 +- e5b9142: 模块作者面改用 `npm create @sfmc-bds/module`(`@sfmc-bds/create-module`)为唯一建仓入口;移除 `@sfmc-bds/devkit` 的 `sfmc-new-module` / `scaffoldModule`。扩展补齐 Create→Test→Link→Watch→Publish 全周期。 +- 533716d: 统一模块模板和公开文档的 pnpm 工作流,并将 registry 模块下载改为 pnpm,补齐公开包仓库元数据。 +- f3ba416: 游戏聊天互通:MC→QQ 仅转发 `bridge_channel_id` 匹配且非 `qq_` 回环的 messages;QQ 指令「频道」只读提示;扫描 `modules/packages` 时跟随 symlink(修复 `--link` 在 Linux 下被当成非目录) +- ec728dd: CLI 对外部 db/qq 真正 stop/restart(按入口脚本杀进程,避免双实例);QQ 主/管理菜单中文编号样式(official+llbot 共用);频道/自检增强 +- 89ffceb: 群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) +- efa6e73: 官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 +- 3465c7e: 更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 +- 4a9b066: 统一 QQ 双后端玩家服务菜单、权限核验、敏感操作确认及错误反馈,修复编号菜单与长名单发送,保留查服、版本和 ip 指令习惯。 + + 新增 public_server 公开连接配置;版本优先使用 CLI 捕获并经状态接口核验的当前 BDS 启动版本。移除在线状态接口的 64 人上限,不改变入服业务状态与审批策略。 + +- c1de2a8: none +- d933a02: 安装和更新模块时从 `configs-default` 创建并补全模块配置,且不覆盖用户已有值。 +- b81327a: sdk:移除对旧版type的支持 tools,cli:杂项 +- f8cbe3b: none +- 0aacac4: 从 BDS 原生日志同步玩家 XUID,并扩展玩家快照字段以支持重生点、位置、游戏模式与内容指纹。 +- b6f8adc: none +- dc62ffc: UI Studio 改为固定监听 `127.0.0.1:3003`,避免每次随机端口导致浏览器 IndexedDB 工程丢失。 +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [c890a95] +- Updated dependencies [4a9b066] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [3714053] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [8552772] +- Updated dependencies [74a27c7] +- Updated dependencies [5ada90e] +- Updated dependencies [06e0f19] +- Updated dependencies [847bfcb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [aadd2de] +- Updated dependencies [ea1e57e] +- Updated dependencies [cc6a12b] +- Updated dependencies [89ffceb] +- Updated dependencies [f3ba416] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [c890a95] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] + - @sfmc-bds/sdk@0.2.0 + - @sfmc-bds/bds-tools@0.2.0 + ## 0.2.0-beta.21 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 5ce05174..28f7c1bd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/cli", - "version": "0.2.0-beta.21", + "version": "0.2.0", "description": "SFMC management CLI — REPL, service supervisor, module install, behavior-pack build/deploy", "author": "Shiroha7z", "license": "AGPL-3.0-only", diff --git a/packages/create-module/CHANGELOG.md b/packages/create-module/CHANGELOG.md index d0a98c70..020922c9 100644 --- a/packages/create-module/CHANGELOG.md +++ b/packages/create-module/CHANGELOG.md @@ -1,5 +1,32 @@ # @sfmc-bds/create-module +## 0.1.0 + +### Minor Changes + +- e5b9142: 模块作者面改用 `npm create @sfmc-bds/module`(`@sfmc-bds/create-module`)为唯一建仓入口;移除 `@sfmc-bds/devkit` 的 `sfmc-new-module` / `scaffoldModule`。扩展补齐 Create→Test→Link→Watch→Publish 全周期。 + +### Patch Changes + +- 4a9b066: 模块脚手架不再生成常驻测试目录或测试命令,改以类型检查、构建和实际联调验收。 +- efa6e73: 将 Minecraft Script API 类型与新模块模板更新到 BDS 1.26.51 使用的 server 2.11.0-beta、server-ui 2.3.0-beta,并同步 vanilla-data 版本。 +- 74a27c7: 将旧版 `!` 聊天前缀命令迁移到 Bedrock 原生自定义命令接口。平台命令统一使用 + `/sfmc:`,模块命令使用 `/sfmc:_`;同时修复内置 + `/sfmc:help` 及其访客权限未注册的问题。 + + 交互式数据库事务改为互斥排队执行,避免并发 `beginSession` 清理仍在使用的会话。 + +- 533716d: 统一模块模板和公开文档的 pnpm 工作流,并将 registry 模块下载改为 pnpm,补齐公开包仓库元数据。 +- 3465c7e: 更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 +- d9ded8f: fix(sdk): 作用域 db/config/service 客户端,消除多模块身份串桶与全局事务互斥 + + - 新增 createDbClient / createConfigClient / createServiceClient:身份与 tx 状态封闭在闭包 + - 单例 db/config/service 改为按 moduleId 登记表转发(兼容旧代码) + - ModuleRegistry lifecycle 注入 ModuleServices;install 装配配对 inTx 探针 + - create-module 模板引导闭包捕获 services.db + +- d933a02: 安装和更新模块时从 `configs-default` 创建并补全模块配置,且不覆盖用户已有值。 + ## 0.1.0-beta.4 ### Patch Changes diff --git a/packages/create-module/package.json b/packages/create-module/package.json index 1c32a49f..80f0322f 100644 --- a/packages/create-module/package.json +++ b/packages/create-module/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/create-module", - "version": "0.1.0-beta.4", + "version": "0.1.0", "description": "Create an SFMC SAPI module with pnpm", "repository": { "type": "git", diff --git a/packages/db-server/CHANGELOG.md b/packages/db-server/CHANGELOG.md index f4dc4906..2988887d 100644 --- a/packages/db-server/CHANGELOG.md +++ b/packages/db-server/CHANGELOG.md @@ -1,5 +1,116 @@ # @sfmc-bds/db-server +## 0.2.0 + +### Minor Changes + +- 89ffceb: QQ 入服审批(INTERACTION 回调按钮)+ 群 OpenAPI info/bot_state + 踢人/白名单队列(BDS 由 qq-link 模块经 server-admin 生效) +- 89ffceb: QQ 事件推群(节流):join/leave/death 约 1 分钟聚合;BDS 启停立即推;配置 `qq_events`;出站复用现有 MC→QQ 通道 +- 89ffceb: QQ 官方自定义菜单/指令面板同步、C2C 指令回复、status/online 与 QQ↔MC 绑定平台 API(游戏侧见独立模块 qq-link) +- 89ffceb: 群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) +- 89ffceb: Enrich GET /api/sfmc/status with host uptime, BDS/db process uptime, and memory/CPU; QQ status command shows the richer summary. + +### Patch Changes + +- 050da7f: fix: BDS 原生依赖过滤与协商、模块作用域代理及数据库表结构解耦与自愈 + + - **bds-tools**: 引入 Bedrock 原生脚本模块白名单机制,过滤 npm 纯数据包;支持自动识别并启用 level.dat 中的 gametest beta 实验性玩法;增强 server.properties 中文本地化与幂等更新。 + - **cli**: 行为包打包期与各模块原生依赖严格协商,协商提升 Bedrock 原生依赖至兼容最高版本;重构 esbuild SDK resolve 插件,为所有包含 `/sapi/` 的业务模块(含跨仓 symlink/junction)自动注入专属作用域虚拟代理,杜绝全局单例状态覆盖与越权。 + - **db-server**: 精简 `initSchema`,移除非底座的业务模块表定义,实现平台核心底座表与业务模组私有表契约解耦;增强 `SchemaRegistry.createPhysical`,自动探测并安全清理历史旧版空表,支持存量表平滑自愈追加缺失列。 + - **sdk**: 优化调试日志门面,显式格式化错误名称、信息与堆栈追踪;确保 SAPI 客户端安全注入请求头;修复 host bootstrap 导出边界以保证 Node 环境引用纯净。 + +- aadd2de: Use each chat channel's prefix and QQ forwarding switch for MC messages. Route QQ group messages into the read-only game channel and remove the former bridge channel and MC prefix configuration fields. +- 74a27c7: 将旧版 `!` 聊天前缀命令迁移到 Bedrock 原生自定义命令接口。平台命令统一使用 + `/sfmc:`,模块命令使用 `/sfmc:_`;同时修复内置 + `/sfmc:help` 及其访客权限未注册的问题。 + + 交互式数据库事务改为互斥排队执行,避免并发 `beginSession` 清理仍在使用的会话。 + +- 89ffceb: Linux BDS 宿主:按平台解析可执行文件与下载 URL,启动时设置 LD_LIBRARY_PATH;argv start 在 POSIX 上 daemonize;pgrep 用 -x 避免误匹配 +- efa6e73: QQ 查服改用游戏实时在线玩家及世界信息,CLI 托管的 BDS 启停和异常退出现在上报事件。 +- 0da9c98: 为玩家表补充聊天频道和订阅偏好字段,并迁移已有数据库。 +- f3ba416: 游戏聊天互通:MC→QQ 仅转发 `bridge_channel_id` 匹配且非 `qq_` 回环的 messages;QQ 指令「频道」只读提示;扫描 `modules/packages` 时跟随 symlink(修复 `--link` 在 Linux 下被当成非目录) +- 89ffceb: 入服开关落在 configs/qq_link.json;新增只读 treat_group_admins_as_admins(群管视作管理员,仅文件可改) +- efa6e73: 官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 +- 3465c7e: 更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 +- 4a9b066: 统一 QQ 双后端玩家服务菜单、权限核验、敏感操作确认及错误反馈,修复编号菜单与长名单发送,保留查服、版本和 ip 指令习惯。 + + 新增 public_server 公开连接配置;版本优先使用 CLI 捕获并经状态接口核验的当前 BDS 启动版本。移除在线状态接口的 64 人上限,不改变入服业务状态与审批策略。 + +- 349b070: 将 `TxRunner` 的批量事务与交互式事务会话纳入同一个 SQLite 单连接队列,避免并发备份与查询触发嵌套 `BEGIN` 失败。 +- efa6e73: 为 QQ 管理菜单增加可即时生效的服务器事件推送开关,并补充 BDS 正常停服通知。 +- c1de2a8: none +- f8cbe3b: none +- 8d71b80: 为交互式数据库事务增加空闲租约回收,并为事务槽排队增加超时和 `transaction_busy` 错误,防止孤儿事务永久阻塞所有模块。 +- 0aacac4: 从 BDS 原生日志同步玩家 XUID,并扩展玩家快照字段以支持重生点、位置、游戏模式与内容指纹。 +- b6f8adc: none +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [c890a95] +- Updated dependencies [4a9b066] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [3714053] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [8552772] +- Updated dependencies [74a27c7] +- Updated dependencies [5ada90e] +- Updated dependencies [06e0f19] +- Updated dependencies [847bfcb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [aadd2de] +- Updated dependencies [ea1e57e] +- Updated dependencies [cc6a12b] +- Updated dependencies [89ffceb] +- Updated dependencies [f3ba416] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [c890a95] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] + - @sfmc-bds/sdk@0.2.0 + - @sfmc-bds/bds-tools@0.2.0 + ## 0.2.0-beta.15 ### Patch Changes diff --git a/packages/db-server/package.json b/packages/db-server/package.json index 7f469af8..2a0ad6dd 100644 --- a/packages/db-server/package.json +++ b/packages/db-server/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/db-server", - "version": "0.2.0-beta.15", + "version": "0.2.0", "description": "SFMC SQLite HTTP REST backend — configs, modules, gameplay data", "author": "Shiroha7z", "license": "AGPL-3.0-only", diff --git a/packages/devkit/CHANGELOG.md b/packages/devkit/CHANGELOG.md index 598795cc..b5f45ea0 100644 --- a/packages/devkit/CHANGELOG.md +++ b/packages/devkit/CHANGELOG.md @@ -1,5 +1,115 @@ # @sfmc-bds/devkit +## 1.0.0 + +### Major Changes + +- e5b9142: 模块作者面改用 `npm create @sfmc-bds/module`(`@sfmc-bds/create-module`)为唯一建仓入口;移除 `@sfmc-bds/devkit` 的 `sfmc-new-module` / `scaffoldModule`。扩展补齐 Create→Test→Link→Watch→Publish 全周期。 + +### Minor Changes + +- 4dd2d16: feat(devkit): 新增模块作者工具包(watch / scaffold / rebuild) + + 供 VS Code 扩展直接依赖;tools 导出 new-module.mjs。 + +- 9dd77b4: 停发 `@sfmc-bds/tools`:`fetch-module` 迁入 `@sfmc-bds/cli`,`new-module` 迁入 `@sfmc-bds/devkit`;tools 改为 monorepo private(verify/build bins)。meta 不再依赖 tools。发版后请对已发布 beta 执行: + + `npm deprecate @sfmc-bds/tools@"*" "Moved: use @sfmc-bds/cli (mod install) and @sfmc-bds/devkit (scaffold)."` + +### Patch Changes + +- 533716d: 统一模块模板和公开文档的 pnpm 工作流,并将 registry 模块下载改为 pnpm,补齐公开包仓库元数据。 +- 4fc6ef9: chore(devkit): new-module 不再生成脚本沙箱剧本(`.sfmc/sandbox-script.json`);README 改为 `npm test` + Sapience + Watch +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [c890a95] +- Updated dependencies [4a9b066] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [3714053] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [8552772] +- Updated dependencies [b81327a] +- Updated dependencies [74a27c7] +- Updated dependencies [5ada90e] +- Updated dependencies [06e0f19] +- Updated dependencies [847bfcb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [89ffceb] +- Updated dependencies [aadd2de] +- Updated dependencies [466d214] +- Updated dependencies [53d7119] +- Updated dependencies [8552772] +- Updated dependencies [b55557b] +- Updated dependencies [ea1e57e] +- Updated dependencies [e7e7e61] +- Updated dependencies [e5b9142] +- Updated dependencies [cc6a12b] +- Updated dependencies [533716d] +- Updated dependencies [2a5b502] +- Updated dependencies [89ffceb] +- Updated dependencies [f3ba416] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [ec728dd] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [d933a02] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [d933a02] +- Updated dependencies [c890a95] +- Updated dependencies [c890a95] +- Updated dependencies [1f7b2c7] +- Updated dependencies [2580488] +- Updated dependencies [2c91645] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [0aacac4] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [9dd77b4] +- Updated dependencies [af175bc] +- Updated dependencies [5567073] + - @sfmc-bds/sdk@0.2.0 + - @sfmc-bds/cli@0.2.0 + - @sfmc-bds/bds-tools@0.2.0 + ## 1.0.0-beta.12 ### Patch Changes diff --git a/packages/devkit/package.json b/packages/devkit/package.json index d5229d58..005ca986 100644 --- a/packages/devkit/package.json +++ b/packages/devkit/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/devkit", - "version": "1.0.0-beta.12", + "version": "1.0.0", "description": "SFMC module authoring toolkit — watch, rebuild, enable/disable (for VS Code extension & tooling)", "repository": { "type": "git", diff --git a/packages/meta/CHANGELOG.md b/packages/meta/CHANGELOG.md index 607a40ce..36c05230 100644 --- a/packages/meta/CHANGELOG.md +++ b/packages/meta/CHANGELOG.md @@ -1,5 +1,118 @@ # @sfmc-bds/sfmc +## 0.2.0 + +### Patch Changes + +- c1de2a8: none +- f8cbe3b: none +- b6f8adc: none +- 9dd77b4: 停发 `@sfmc-bds/tools`:`fetch-module` 迁入 `@sfmc-bds/cli`,`new-module` 迁入 `@sfmc-bds/devkit`;tools 改为 monorepo private(verify/build bins)。meta 不再依赖 tools。发版后请对已发布 beta 执行: + + `npm deprecate @sfmc-bds/tools@"*" "Moved: use @sfmc-bds/cli (mod install) and @sfmc-bds/devkit (scaffold)."` + +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [c890a95] +- Updated dependencies [4a9b066] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [3714053] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [8552772] +- Updated dependencies [b81327a] +- Updated dependencies [74a27c7] +- Updated dependencies [5ada90e] +- Updated dependencies [06e0f19] +- Updated dependencies [efa6e73] +- Updated dependencies [efa6e73] +- Updated dependencies [847bfcb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [aadd2de] +- Updated dependencies [466d214] +- Updated dependencies [53d7119] +- Updated dependencies [8552772] +- Updated dependencies [b55557b] +- Updated dependencies [ea1e57e] +- Updated dependencies [e7e7e61] +- Updated dependencies [e5b9142] +- Updated dependencies [cc6a12b] +- Updated dependencies [0da9c98] +- Updated dependencies [533716d] +- Updated dependencies [2a5b502] +- Updated dependencies [5712b87] +- Updated dependencies [89ffceb] +- Updated dependencies [f3ba416] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [89ffceb] +- Updated dependencies [ec728dd] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [349b070] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [d933a02] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [d933a02] +- Updated dependencies [c890a95] +- Updated dependencies [c890a95] +- Updated dependencies [1f7b2c7] +- Updated dependencies [2580488] +- Updated dependencies [2c91645] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [89ffceb] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8d71b80] +- Updated dependencies [0aacac4] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [9dd77b4] +- Updated dependencies [af175bc] +- Updated dependencies [5567073] + - @sfmc-bds/sdk@0.2.0 + - @sfmc-bds/cli@0.2.0 + - @sfmc-bds/bds-tools@0.2.0 + - @sfmc-bds/db-server@0.2.0 + - @sfmc-bds/qq-bridge@0.2.0 + ## 0.2.0-beta.16 ### Patch Changes diff --git a/packages/meta/package.json b/packages/meta/package.json index 7e9a19e3..dbbcfed0 100644 --- a/packages/meta/package.json +++ b/packages/meta/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/sfmc", - "version": "0.2.0-beta.16", + "version": "0.2.0", "description": "SFMC all-in-one meta package — CLI + db-server + qq-bridge + bds-tools. One install, then `sfmc` to init and run.", "author": "Shiroha7z", "license": "AGPL-3.0-only", diff --git a/packages/qq-bridge/CHANGELOG.md b/packages/qq-bridge/CHANGELOG.md index f9ef6c5a..f4ad426e 100644 --- a/packages/qq-bridge/CHANGELOG.md +++ b/packages/qq-bridge/CHANGELOG.md @@ -1,5 +1,91 @@ # @sfmc-bds/qq-bridge +## 0.2.0 + +### Minor Changes + +- 89ffceb: QQ 入服审批(INTERACTION 回调按钮)+ 群 OpenAPI info/bot_state + 踢人/白名单队列(BDS 由 qq-link 模块经 server-admin 生效) +- 89ffceb: QQ 侧指令菜单(official Markdown/键盘与 llbot 编号菜单共用注册表) +- 89ffceb: QQ 官方自定义菜单/指令面板同步、C2C 指令回复、status/online 与 QQ↔MC 绑定平台 API(游戏侧见独立模块 qq-link) +- 89ffceb: 群服互通支持 QQ 开放平台官方 Bot(双后端可切回 LLBot) +- efa6e73: 官方 QQ 机器人可选择 Webhook 接收事件;官方与 LLBot 配置改为分组对象。Webhook 模式自动跳过游戏机的桥进程,并安全同步共享配置到云端。群全量事件中的 `<@…>` 机器人提及也能正确触发指令面板命令。官方回复不再附带 LLBot 风格的编号和“发送:”列表。 +- 4a9b066: 统一 QQ 双后端玩家服务菜单、权限核验、敏感操作确认及错误反馈,修复编号菜单与长名单发送,保留查服、版本和 ip 指令习惯。 + + 新增 public_server 公开连接配置;版本优先使用 CLI 捕获并经状态接口核验的当前 BDS 启动版本。移除在线状态接口的 64 人上限,不改变入服业务状态与审批策略。 + +### Patch Changes + +- aadd2de: Use each chat channel's prefix and QQ forwarding switch for MC messages. Route QQ group messages into the read-only game channel and remove the former bridge channel and MC prefix configuration fields. +- efa6e73: 优化 QQ 玩家菜单和信息卡:简化标题与说明,移除 Markdown 正文中重复的按钮列表,统一操作名称并增加状态刷新入口,保留原有命令和纯文本编号操作。 +- efa6e73: 修正官方群指令面板同步:全局面板不再请求关联群,指定群面板仅在缺少目标群时追加关联。 +- efa6e73: QQ 查服改用游戏实时在线玩家及世界信息,CLI 托管的 BDS 启停和异常退出现在上报事件。 +- 89ffceb: llbot 指令回复优先经 reverse-WS 发 send_group_msg,避免未开 HTTP 3004 时 ECONNREFUSED +- 5712b87: QQ 主菜单收拢常用指令;踢人/待审/配置等收入「管理」子菜单(触发词仍可直达) +- f3ba416: 游戏聊天互通:MC→QQ 仅转发 `bridge_channel_id` 匹配且非 `qq_` 回环的 messages;QQ 指令「频道」只读提示;扫描 `modules/packages` 时跟随 symlink(修复 `--link` 在 Linux 下被当成非目录) +- efa6e73: 官方 QQ 机器人接收群全量消息时,可直接识别无需 @ 的指令,并避免与群 @ 事件重复处理。 +- 89ffceb: 入服开关落在 configs/qq_link.json;新增只读 treat_group_admins_as_admins(群管视作管理员,仅文件可改) +- ec728dd: CLI 对外部 db/qq 真正 stop/restart(按入口脚本杀进程,避免双实例);QQ 主/管理菜单中文编号样式(official+llbot 共用);频道/自检增强 +- 3465c7e: 更新 QQ 账号和服务器信息面板、频道来源控制及模块和世界包查询;移除 QQ 踢人指令,完善 CLI 服务窗口提示与模块配置行为。 +- efa6e73: 为 QQ 管理菜单增加可即时生效的服务器事件推送开关,并补充 BDS 正常停服通知。 +- c1de2a8: none +- 89ffceb: Enrich GET /api/sfmc/status with host uptime, BDS/db process uptime, and memory/CPU; QQ status command shows the richer summary. +- f8cbe3b: none +- b6f8adc: none +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [74a27c7] +- Updated dependencies [847bfcb] +- Updated dependencies [aadd2de] +- Updated dependencies [ea1e57e] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] + - @sfmc-bds/sdk@0.2.0 + ## 0.2.0-beta.13 ### Minor Changes diff --git a/packages/qq-bridge/package.json b/packages/qq-bridge/package.json index cae9f379..c09f31de 100644 --- a/packages/qq-bridge/package.json +++ b/packages/qq-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/qq-bridge", - "version": "0.2.0-beta.13", + "version": "0.2.0", "description": "SFMC QQ ↔ MC bridge — official QQ Open Platform Bot and/or LLBot OneBot 11", "author": "Shiroha7z", "license": "AGPL-3.0-only", diff --git a/packages/sfmc-extension/src/panels/commands.ts b/packages/sfmc-extension/src/panels/commands.ts index 2508156b..a696b56c 100644 --- a/packages/sfmc-extension/src/panels/commands.ts +++ b/packages/sfmc-extension/src/panels/commands.ts @@ -155,8 +155,8 @@ export async function cmdNewModule(): Promise { const kind = await vscode.window.showQuickPick( [ - { label: "社区包", description: "@/sfmc-module-", kind: "community" as const }, - { label: "官方包", description: "@sfmc-bds/module-", kind: "official" as const }, + { label: "社区包", description: "@/sfmc-module-", moduleKind: "community" as const }, + { label: "官方包", description: "@sfmc-bds/module-", moduleKind: "official" as const }, ], { placeHolder: "npm 包范围" } ); @@ -164,7 +164,7 @@ export async function cmdNewModule(): Promise { let scope: string | undefined; let official = false; - if (kind.kind === "official") { + if (kind.moduleKind === "official") { official = true; } else { scope = await vscode.window.showInputBox({ diff --git a/packages/tools/CHANGELOG.md b/packages/tools/CHANGELOG.md index 96279fc8..1cc64bce 100644 --- a/packages/tools/CHANGELOG.md +++ b/packages/tools/CHANGELOG.md @@ -1,5 +1,92 @@ # @sfmc-bds/tools +## 0.2.0 + +### Patch Changes + +- 61379c7: 发版编排:GitHub Release 缺失态回退复用 listPackagesWithExistingVersionTags;文档/workflow 对齐 SFMC_GITHUB_TOKEN(兼容旧名) +- 3714053: 发版:build-publishable 拓扑 + listPublishableBuildDeps(npm-publish 应急补发不再硬编码只 build SDK);push 缺失态 DRY 对齐 listUnpushedExistingVersionTags。世界包:readPackDirOccupancy DRY,去掉死不变式,occupancy 保留真实 kind(LSP)。 +- d1331e3: fix:typecheck +- 4dd2d16: feat(devkit): 新增模块作者工具包(watch / scaffold / rebuild) + + 供 VS Code 扩展直接依赖;tools 导出 new-module.mjs。 + +- b55557b: 纯 index 契约:`--link` 支持 `local:`;index map 支持 `npm`;拆除旁路 sfmc-modules monorepo DX;`mod publish` 写 map 并拒绝 private/非官方 `@sfmc-bds`。 +- 2326e6d: chore(tools): new-module 与 sfmc-module-template 同构(DESCRIPTOR、测试、prettier、.vscode) +- e7e7e61: // @ts-check:添加到 23 个 tools/_.mjs 脚本 + 11 个 tools/lib/_.mjs 库 + 5 个 tools/_.test.mjs + 11 个 sfmc/_.test.mjs + 5 个 changeset 系列 +- c1de2a8: none +- b252a35: chore(tools): new-module 脚手架写入 eslint.config 与 .vscode(推荐 ESLint 扩展) +- e175ed9: fix(sdk/testing): minecraft-loader 钉死同一 `@sfmc-bds/sdk` 实例,避免模块仓 node_modules 与宿主双包导致 Command/Permission 空清单;脚手架 Command.register 传入 MODULE_ID。 +- b81327a: sdk:移除对旧版type的支持 tools,cli:杂项 +- f8cbe3b: none +- b6f8adc: none +- Updated dependencies [a5ccbd3] +- Updated dependencies [e714f86] +- Updated dependencies [c890a95] +- Updated dependencies [4a9b066] +- Updated dependencies [4a9b066] +- Updated dependencies [050da7f] +- Updated dependencies [3714053] +- Updated dependencies [aadd2de] +- Updated dependencies [8552772] +- Updated dependencies [efa6e73] +- Updated dependencies [8552772] +- Updated dependencies [74a27c7] +- Updated dependencies [5ada90e] +- Updated dependencies [06e0f19] +- Updated dependencies [847bfcb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [aadd2de] +- Updated dependencies [ea1e57e] +- Updated dependencies [cc6a12b] +- Updated dependencies [89ffceb] +- Updated dependencies [f3ba416] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [89ffceb] +- Updated dependencies [efa6e73] +- Updated dependencies [3465c7e] +- Updated dependencies [4a9b066] +- Updated dependencies [efa6e73] +- Updated dependencies [3c07ced] +- Updated dependencies [c1de2a8] +- Updated dependencies [847bfcb] +- Updated dependencies [c72fdc8] +- Updated dependencies [d9ded8f] +- Updated dependencies [5a4eff6] +- Updated dependencies [e175ed9] +- Updated dependencies [29d6deb] +- Updated dependencies [0992ab9] +- Updated dependencies [c890a95] +- Updated dependencies [f616527] +- Updated dependencies [b81327a] +- Updated dependencies [f312e8b] +- Updated dependencies [f8cbe3b] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [8568388] +- Updated dependencies [b6f8adc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] +- Updated dependencies [16bba29] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [12b7dfc] +- Updated dependencies [cf3293f] +- Updated dependencies [1a4ddda] +- Updated dependencies [dc62ffc] +- Updated dependencies [dc62ffc] +- Updated dependencies [1a4ddda] +- Updated dependencies [1a4ddda] + - @sfmc-bds/sdk@0.2.0 + - @sfmc-bds/bds-tools@0.2.0 + ## 0.2.0-beta.19 ### Patch Changes diff --git a/packages/tools/package.json b/packages/tools/package.json index ed73a15d..a12bf61b 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -1,6 +1,6 @@ { "name": "@sfmc-bds/tools", - "version": "0.2.0-beta.19", + "version": "0.2.0", "private": true, "description": "SFMC monorepo-only scripts — verify, docs, release, build bins (not published to npm)", "author": "Shiroha7z", From 1f645a73635c25c9564c445232d7d98123529538 Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 14:08:59 +0800 Subject: [PATCH 2/9] docs: record stable release gate results --- docs/zh/dev/stable-release-plan.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index e4fc1746..f4f22255 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -84,3 +84,7 @@ - 发布鉴权采用 GitHub Actions;本机 `pnpm login` / `pnpm whoami` 不是必要发布门禁。GitHub Secrets 清单已核实主仓有 `NPM_TOKEN` 和 `SFMC_GITHUB_TOKEN`(仅确认名称,未读取值)。主仓 Changesets workflow 可使用这些 secret 创建 Version PR 与发布平台包。 - 19 个独立模块仓的 GitHub Secrets 清单均无 `NPM_TOKEN`,而各仓当前 release workflow 在发布前要求它;因此模块独立发布通道尚不能使用。需在模块仓配置发布凭据,或完成并验证由主仓集中发布的工作流。现有 `id-token: write` 尚未接入 npm Trusted Publishing,不能当作已配置的无 token 发布通道。 - 主仓新增手动 `module-publish` 工作流:只接受 19 个已知模块、模块仓 `main` 上的完整提交 SHA 和与 `package.json` 一致的正式版本;默认只运行凭据、pnpm 检查与打包。dry run 会用主仓的 `NPM_TOKEN` 查询 npm 登录态,并核对 `SFMC_GITHUB_TOKEN` 对模块仓的推送权限;实际发布时再用它们发布 npm 包、创建标签与 Release。此流程尚待推送后的 dry run 和首包发布复验;各模块仓原有独立发布 workflow 仍依赖本仓未配置的 secret,应在集中发布路径验证后统一收敛。 +- GitHub CLI 已完成 `workflow` scope 补充授权。主仓准备 PR #109 通过 Ubuntu/Windows CI 后合并,主仓 `module-publish` 工作流已在默认分支启用。`activity-log` 模块主分支提交 `35c33e4` 的集中发布 dry run 成功:npm 凭据、跨仓推送权限、pnpm 安装、类型检查、lint、既有测试与打包均通过;发布步骤按预期跳过。 +- 18 个模块仓的 pnpm/CI 准备 PR 均通过各自 CI 并已合并。`qq-link` 暂未纳入:旧主分支使用当前 `@minecraft/server-admin` 已移除的 `dedicatedServer` 与 `kickPlayer`,类型检查失败;工作区中的新实现还需真实 BDS 验收。隔离检出的本机测试还遇到 Node 26 的 `uv_os_get_passwd ENOMEM`,不能把测试启动失败当作功能结果。 +- 主仓隔离候选检出已退出 Changesets beta pre 模式,生成正式版候选:SDK/CLI/BDS 工具/db-server/QQ 桥接/聚合包/tools 为 `0.2.0`,eslint-plugin 为 `0.1.1`,create-module 为 `0.1.0`,devkit 为 `1.0.0`。同时修复 VS Code 扩展创建模块菜单的类型字段冲突。候选的 pnpm 安装、构建、整仓类型检查、lint(0 error)、平台 verify(12/12)与 9 包打包检查通过;聚合包 tgz 内部依赖均解析为 `0.2.0`。 +- 正式版候选作为 Draft PR #111 提交,等待 CI 和运行验收。自动创建的 beta Version PR #110 不应合并;合并 #111 可能直接触发正式包发布,在部署、升级、回退与 BDS/客户端验收完成前保持 Draft。 From 340b1dc457302b1328136cad4dacc9a611697926 Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 14:29:29 +0800 Subject: [PATCH 3/9] docs: record stable release registry and CI status --- docs/zh/dev/stable-release-plan.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index f4f22255..fd73be80 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -88,3 +88,8 @@ - 18 个模块仓的 pnpm/CI 准备 PR 均通过各自 CI 并已合并。`qq-link` 暂未纳入:旧主分支使用当前 `@minecraft/server-admin` 已移除的 `dedicatedServer` 与 `kickPlayer`,类型检查失败;工作区中的新实现还需真实 BDS 验收。隔离检出的本机测试还遇到 Node 26 的 `uv_os_get_passwd ENOMEM`,不能把测试启动失败当作功能结果。 - 主仓隔离候选检出已退出 Changesets beta pre 模式,生成正式版候选:SDK/CLI/BDS 工具/db-server/QQ 桥接/聚合包/tools 为 `0.2.0`,eslint-plugin 为 `0.1.1`,create-module 为 `0.1.0`,devkit 为 `1.0.0`。同时修复 VS Code 扩展创建模块菜单的类型字段冲突。候选的 pnpm 安装、构建、整仓类型检查、lint(0 error)、平台 verify(12/12)与 9 包打包检查通过;聚合包 tgz 内部依赖均解析为 `0.2.0`。 - 正式版候选作为 Draft PR #111 提交,等待 CI 和运行验收。自动创建的 beta Version PR #110 不应合并;合并 #111 可能直接触发正式包发布,在部署、升级、回退与 BDS/客户端验收完成前保持 Draft。 +- GitHub device login 过期后已重新授权;`gh auth status` 再次确认 `Tanya7z` 登录有效。Draft PR #111 的 Ubuntu、Windows smoke CI 均成功,保持 Draft 等待运行验收。 +- `qq-link` 功能修复和 pnpm 发布准备已作为 Draft PR [Tanya7z/sfmc-module-qq-link#1](https://github.com/Tanya7z/sfmc-module-qq-link/pull/1) 提交,CI 成功,仍需真实 BDS 验收后合并。 +- 模块索引仓已通过 [Tanya7z/sfmc-modules#1](https://github.com/Tanya7z/sfmc-modules/pull/1) 切换 pnpm 并合并;合并后的索引发布工作流成功。索引本地校验、26 项既有测试和 19 项构建成功;公共 registry 网络校验显示 19 个索引记录的精确版本全部为 HTTP 404,需先发布模块包再更新索引。 +- 索引当前有 3 处版本差异:`activity-log` 和 `data-backup` 的索引为 `0.2.0`、候选包为 `0.2.1`;`qq-link` 的索引为 `0.2.0`、候选包为 `0.1.0`。正式发布模块后应按实际已发布版本修正,不能预先把未发布版本写成可安装。 +- 当前公共 npm registry 尚无平台候选的精确正式版本;`@sfmc-bds/sfmc` 与 SDK 的 `latest` 仍为 `0.1.0`。平台发布、npm `latest`、全新公共安装和客户端验收仍未完成。 From 3cbc36009fa12f7c59e02c106436a98920e17828 Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 14:34:01 +0800 Subject: [PATCH 4/9] fix: keep module publishing pnpm only --- docs/zh/dev/stable-release-plan.md | 2 ++ packages/qq-bridge/index.js | 8 +++--- .../sfmc-extension/src/panels/commands.ts | 28 +++++-------------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index fd73be80..1fa9e2b4 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -93,3 +93,5 @@ - 模块索引仓已通过 [Tanya7z/sfmc-modules#1](https://github.com/Tanya7z/sfmc-modules/pull/1) 切换 pnpm 并合并;合并后的索引发布工作流成功。索引本地校验、26 项既有测试和 19 项构建成功;公共 registry 网络校验显示 19 个索引记录的精确版本全部为 HTTP 404,需先发布模块包再更新索引。 - 索引当前有 3 处版本差异:`activity-log` 和 `data-backup` 的索引为 `0.2.0`、候选包为 `0.2.1`;`qq-link` 的索引为 `0.2.0`、候选包为 `0.1.0`。正式发布模块后应按实际已发布版本修正,不能预先把未发布版本写成可安装。 - 当前公共 npm registry 尚无平台候选的精确正式版本;`@sfmc-bds/sfmc` 与 SDK 的 `latest` 仍为 `0.1.0`。平台发布、npm `latest`、全新公共安装和客户端验收仍未完成。 +- 19 个模块的 `peerDependencies` 均接受候选 SDK `0.2.0`,未发现模块之间的直接 npm 依赖;模块发布顺序仍应排在 SDK 正式发布之后。模块开发依赖还锁在已存在的 SDK beta 区间,发布后可再逐仓切到正式 SDK 进行构建复验。 +- VS Code 扩展的模块发布按钮已去掉 npm 回退,仅调用 pnpm;QQ 桥接入口的安装者提示也改为 pnpm。扩展类型检查和 QQ 桥接构建通过。 diff --git a/packages/qq-bridge/index.js b/packages/qq-bridge/index.js index 1ad86735..3194260a 100644 --- a/packages/qq-bridge/index.js +++ b/packages/qq-bridge/index.js @@ -9,16 +9,16 @@ * 3. tools/check-ootb.mjs 自检要求该文件存在 * * 启动方式: - * - `npm start` -> `node dist/index.js` (直接走编译产物) + * - `pnpm start` -> `node dist/index.js` (直接走编译产物) * - `node index.js` -> 经本 shim 委托到 dist/index.js - * - `npm run dev` -> `tsx src/index.ts` (开发态,不走 dist) - * - `npm run build` -> `tsc -p tsconfig.json` 生成 dist/ + * - `pnpm run dev` -> `tsx src/index.ts` (开发态,不走 dist) + * - `pnpm run build` -> `tsc -p tsconfig.json` 生成 dist/ */ import("./dist/index.js").catch((e) => { const msg = e instanceof Error ? e.message : String(e); if (/MODULE_NOT_FOUND|Cannot find module/.test(msg)) { - console.error("[QQBridge] dist/ 未找到,请先运行 `npm run build`"); + console.error("[QQBridge] dist/ 未找到,请先运行 `pnpm run build`"); process.exit(2); } console.error("[QQBridge] 启动失败:", msg); diff --git a/packages/sfmc-extension/src/panels/commands.ts b/packages/sfmc-extension/src/panels/commands.ts index a696b56c..89a983d7 100644 --- a/packages/sfmc-extension/src/panels/commands.ts +++ b/packages/sfmc-extension/src/panels/commands.ts @@ -219,11 +219,10 @@ export async function cmdNewModule(): Promise { function runPackageManager( cwd: string, - manager: "pnpm" | "npm", args: string[] ): Promise<{ ok: boolean; output: string; unavailable: boolean }> { return new Promise((resolve) => { - const cmd = process.platform === "win32" ? `${manager}.cmd` : manager; + const cmd = process.platform === "win32" ? "pnpm.cmd" : "pnpm"; const proc = spawn(cmd, args, { cwd, stdio: ["ignore", "pipe", "pipe"], @@ -245,19 +244,6 @@ function runPackageManager( }); } -/** 依次尝试 pnpm、npm,执行 package.json 脚本(如 publish)。 */ -async function runPackageScript( - cwd: string, - args: string[] -): Promise<{ ok: boolean; output: string; manager: "pnpm" | "npm" | null }> { - for (const manager of ["pnpm", "npm"] as const) { - const result = await runPackageManager(cwd, manager, args); - if (result.unavailable) continue; - return { ok: result.ok, output: result.output, manager }; - } - return { ok: false, output: "未找到 pnpm 或 npm", manager: null }; -} - /** Tree / 命令面板传入的模块根:字符串或带 modRoot 的节点。 */ export function coerceModRoot(arg?: unknown): string | undefined { if (typeof arg === "string" && arg.trim()) return arg.trim(); @@ -302,26 +288,26 @@ export async function cmdPublishModule(modRootArg?: unknown): Promise { if (!modRoot) modRoot = await pickModuleRoot(); if (!modRoot) return; const confirm = await vscode.window.showWarningMessage( - `将在 ${modRoot} 执行 pnpm publish --access public(或 npm publish --access public)?`, + `将在 ${modRoot} 执行 pnpm publish --access public?`, { modal: true }, "发布" ); if (confirm !== "发布") return; ExtLog.show(); - ExtLog.info("publish", `pnpm publish / npm publish --access public @ ${modRoot}`); - const r = await runPackageScript(modRoot, ["publish", "--access", "public"]); - ExtLog.raw("publish", r.output); + ExtLog.info("publish", `pnpm publish --access public @ ${modRoot}`); + const r = await runPackageManager(modRoot, ["publish", "--access", "public"]); + ExtLog.raw("publish", r.unavailable ? "未找到 pnpm" : r.output); if (r.ok) { const openDocs = "打开发布指南"; const choice = await vscode.window.showInformationMessage( - "发布成功(pnpm publish / npm publish)。请向 sfmc-modules 的 index.json 开 PR。", + "发布成功(pnpm publish)。请向 sfmc-modules 的 index.json 开 PR。", openDocs ); if (choice === openDocs) { await cmdOpenPublishGuide(); } } else { - vscode.window.showErrorMessage("发布失败(pnpm publish / npm publish),见「SFMC 扩展」输出"); + vscode.window.showErrorMessage("发布失败(pnpm publish),见「SFMC 扩展」输出"); } } From 9199163e8e99b3ebe99e6d4bce3ed7fdde59820d Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 19:15:52 +0800 Subject: [PATCH 5/9] fix(cli): bundle configured database port into behavior pack --- docs/zh/dev/stable-release-plan.md | 2 ++ packages/cli/src/module-pack-build.ts | 6 +++--- packages/cli/src/pack-lifecycle.ts | 20 +++++++++++++++++--- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index 1fa9e2b4..30459fb7 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -95,3 +95,5 @@ - 当前公共 npm registry 尚无平台候选的精确正式版本;`@sfmc-bds/sfmc` 与 SDK 的 `latest` 仍为 `0.1.0`。平台发布、npm `latest`、全新公共安装和客户端验收仍未完成。 - 19 个模块的 `peerDependencies` 均接受候选 SDK `0.2.0`,未发现模块之间的直接 npm 依赖;模块发布顺序仍应排在 SDK 正式发布之后。模块开发依赖还锁在已存在的 SDK beta 区间,发布后可再逐仓切到正式 SDK 进行构建复验。 - VS Code 扩展的模块发布按钮已去掉 npm 回退,仅调用 pnpm;QQ 桥接入口的安装者提示也改为 pnpm。扩展类型检查和 QQ 桥接构建通过。 +- 新建了与现有世界分离的 BDS `1.26.51.1` 测试目录和 SFMC_ROOT;用 `activity-log` 0.2.1 的本地 tarball 安装、构建并部署聚合包。新世界经 `packs doctor --fix` 开启 Beta APIs 后,BDS 日志确认行为包加载、模块启动和数据库请求成功。测试环境使用独立端口与数据文件;为绕过测试机的微软在线服务连接失败使用离线模式,因此此结果不覆盖正式服在线鉴权或客户端验收。 +- 隔离运行首次发现:聚合行为包的 HttpDB 默认固定连接数据库端口 3001,未跟随 `configs/db_config.json#db_port`,导致测试包曾短暂连到本机已有数据库服务;测试服已立即关闭。候选已修复打包时注入配置端口并把端口纳入部署 catalog 比较,配置变更会触发重建。改用独立数据库后复验,BDS 日志确认连接到新端口并启动 `activity-log`;测试服务均已关闭。CLI 类型检查、构建和平台自检 12/12 通过。 diff --git a/packages/cli/src/module-pack-build.ts b/packages/cli/src/module-pack-build.ts index 1789a2c7..cf4ebca7 100644 --- a/packages/cli/src/module-pack-build.ts +++ b/packages/cli/src/module-pack-build.ts @@ -64,7 +64,7 @@ function spawnPackManager(args: string[]): Promise { } /* esbuild bundle —— JS bundler 是 in-process 库,不走 spawn。 */ -async function bundleBehaviorPackScript(): Promise { +async function bundleBehaviorPackScript(dbPort: number): Promise { const mods = await scanLocalModules(); const entries = mods.filter((m) => m.enabled && m.entryPath).map((m) => m.entryPath!); const outFile = path.join(bpSrc(), "scripts", "main.js"); @@ -105,7 +105,7 @@ async function bundleBehaviorPackScript(): Promise { skipLibCheck: true, }, }), - plugins: [createSdkResolvePlugin(sdkRoot)], + plugins: [createSdkResolvePlugin(sdkRoot, dbPort)], }); pushLog(`esbuild bundled ${entries.length} entr(y/ies)`, "pack", "info"); } @@ -356,7 +356,7 @@ export async function buildModulePacks(force = false): Promise = {}; diff --git a/packages/cli/src/pack-lifecycle.ts b/packages/cli/src/pack-lifecycle.ts index c291c4d1..b23757df 100644 --- a/packages/cli/src/pack-lifecycle.ts +++ b/packages/cli/src/pack-lifecycle.ts @@ -10,11 +10,13 @@ import { configPath, + DEFAULT_DB_CONFIG, modulePath, readJson, writeJson, type BdsUpdaterConfig, type Catalog, + type DBConfig, type ModuleLock, } from "@sfmc-bds/sdk/node/config"; import { existsSync, readFileSync } from "node:fs"; @@ -53,7 +55,7 @@ export const DEPLOY_CATALOG_NAME = "sfmc-deploy-catalog.json"; export const DEFAULT_PACK_VERSION: [number, number, number] = [1, 0, 0]; /** 将 @sfmc/sdk 与 @sfmc-bds/sdk 子路径解析到 SDK 包内真实文件,并注入 sfmc:host 引导入口 */ -export function createSdkResolvePlugin(sdkRoot: string): import("esbuild").Plugin { +export function createSdkResolvePlugin(sdkRoot: string, dbPort: number): import("esbuild").Plugin { const pkg = JSON.parse(readFileSync(path.join(sdkRoot, "package.json"), "utf8")) as { exports?: Record; }; @@ -79,7 +81,7 @@ export function createSdkResolvePlugin(sdkRoot: string): import("esbuild").Plugi build.onLoad({ filter: /.*/, namespace: "sfmc-host" }, () => ({ contents: [ 'import { installHostBootstrap } from "@sfmc-bds/sdk/module-loader/install";', - "installHostBootstrap();", + `installHostBootstrap({ dbServerUrl: ${JSON.stringify(`http://127.0.0.1:${dbPort}`)} });`, ].join("\n"), loader: "ts", })); @@ -228,6 +230,7 @@ export interface DeployCatalogModule { export interface DeployCatalog { schemaVersion: 1; + dbPort: number; bpUuid: string; rpUuid: string | null; bpVersion: [number, number, number]; @@ -273,6 +276,15 @@ function catalogPath(): string { return modulePath(path.join(ROOT, "modules"), "catalog.json"); } +function configuredDbPort(root: string): number { + const configured = readJson(configPath(root, "db_config.json")); + const port = configured?.db_port ?? DEFAULT_DB_CONFIG.db_port ?? 3001; + if (!Number.isInteger(port) || port < 1 || port > 65535) { + throw new Error(`configs/db_config.json: db_port 必须是 1–65535 的整数 (当前 ${port})`); + } + return port; +} + /** 读 BDS 路径与 level-name(level 权威:pack-manager-lib.readLevelNameSync,DIP) */ export function resolveBdsContext(root: string = getRoot()): { bdsRoot: string; levelName: string } { const cfg = (readJson(configPath(root, "bds_updater.json")) ?? {}) as BdsUpdaterConfig; @@ -562,6 +574,7 @@ export async function computeDesiredCatalog(opts?: { return { schemaVersion: 1, + dbPort: configuredDbPort(getRoot()), bpUuid, rpUuid, bpVersion, @@ -587,6 +600,7 @@ export function readDeployedCatalog(bdsRoot: string, levelName: string): DeployC /** 比较键:模块集合 + enabled/version/fingerprint/hasRP + bp/rp uuid + sdkVersion + dependencies */ export function catalogsEqual(a: DeployCatalog, b: DeployCatalog): boolean { + if (a.dbPort !== b.dbPort) return false; if (a.bpUuid !== b.bpUuid) return false; if ((a.rpUuid ?? null) !== (b.rpUuid ?? null)) return false; if ((a.sdkVersion ?? null) !== (b.sdkVersion ?? null)) return false; @@ -681,7 +695,7 @@ export async function buildPacks(desired?: DeployCatalog): Promise Date: Sun, 27 Sep 2026 19:23:08 +0800 Subject: [PATCH 6/9] docs: record isolated qq-link release smoke --- docs/zh/dev/stable-release-plan.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index 30459fb7..75e01cb2 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -97,3 +97,4 @@ - VS Code 扩展的模块发布按钮已去掉 npm 回退,仅调用 pnpm;QQ 桥接入口的安装者提示也改为 pnpm。扩展类型检查和 QQ 桥接构建通过。 - 新建了与现有世界分离的 BDS `1.26.51.1` 测试目录和 SFMC_ROOT;用 `activity-log` 0.2.1 的本地 tarball 安装、构建并部署聚合包。新世界经 `packs doctor --fix` 开启 Beta APIs 后,BDS 日志确认行为包加载、模块启动和数据库请求成功。测试环境使用独立端口与数据文件;为绕过测试机的微软在线服务连接失败使用离线模式,因此此结果不覆盖正式服在线鉴权或客户端验收。 - 隔离运行首次发现:聚合行为包的 HttpDB 默认固定连接数据库端口 3001,未跟随 `configs/db_config.json#db_port`,导致测试包曾短暂连到本机已有数据库服务;测试服已立即关闭。候选已修复打包时注入配置端口并把端口纳入部署 catalog 比较,配置变更会触发重建。改用独立数据库后复验,BDS 日志确认连接到新端口并启动 `activity-log`;测试服务均已关闭。CLI 类型检查、构建和平台自检 12/12 通过。 +- `qq-link` Draft PR #1 复核发现一条玩家可见的绑定错误文案被终端提示污染,现已修正;安装包也补齐 `configs-default/qq_link.json`,全新隔离安装能播种配置且 `check-modules OK`。候选包与 `activity-log` 一起在隔离 BDS 中完成启动,日志确认两个模块均已启用;没有玩家连接,因此绑定门槛、踢人和 QQ 实际投递仍待客户端与平台联调。`qq-link` 类型检查、lint(0 error)通过;原有 3 项测试在绕过本机 Node `os.userInfo()` 故障后通过,远程 Node 22 CI 仍需确认。 From 8cf73585487b8e97df1207f09d2b972a7164d1d5 Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 19:29:19 +0800 Subject: [PATCH 7/9] docs: record module config and dependency audit --- docs/zh/dev/stable-release-plan.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index 75e01cb2..3230e0d0 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -97,4 +97,6 @@ - VS Code 扩展的模块发布按钮已去掉 npm 回退,仅调用 pnpm;QQ 桥接入口的安装者提示也改为 pnpm。扩展类型检查和 QQ 桥接构建通过。 - 新建了与现有世界分离的 BDS `1.26.51.1` 测试目录和 SFMC_ROOT;用 `activity-log` 0.2.1 的本地 tarball 安装、构建并部署聚合包。新世界经 `packs doctor --fix` 开启 Beta APIs 后,BDS 日志确认行为包加载、模块启动和数据库请求成功。测试环境使用独立端口与数据文件;为绕过测试机的微软在线服务连接失败使用离线模式,因此此结果不覆盖正式服在线鉴权或客户端验收。 - 隔离运行首次发现:聚合行为包的 HttpDB 默认固定连接数据库端口 3001,未跟随 `configs/db_config.json#db_port`,导致测试包曾短暂连到本机已有数据库服务;测试服已立即关闭。候选已修复打包时注入配置端口并把端口纳入部署 catalog 比较,配置变更会触发重建。改用独立数据库后复验,BDS 日志确认连接到新端口并启动 `activity-log`;测试服务均已关闭。CLI 类型检查、构建和平台自检 12/12 通过。 -- `qq-link` Draft PR #1 复核发现一条玩家可见的绑定错误文案被终端提示污染,现已修正;安装包也补齐 `configs-default/qq_link.json`,全新隔离安装能播种配置且 `check-modules OK`。候选包与 `activity-log` 一起在隔离 BDS 中完成启动,日志确认两个模块均已启用;没有玩家连接,因此绑定门槛、踢人和 QQ 实际投递仍待客户端与平台联调。`qq-link` 类型检查、lint(0 error)通过;原有 3 项测试在绕过本机 Node `os.userInfo()` 故障后通过,远程 Node 22 CI 仍需确认。 +- `qq-link` Draft PR #1 复核发现一条玩家可见的绑定错误文案被终端提示污染,现已修正;安装包也补齐 `configs-default/qq_link.json`,全新隔离安装能播种配置且 `check-modules OK`。候选包与 `activity-log` 一起在隔离 BDS 中完成启动,日志确认两个模块均已启用;没有玩家连接,因此绑定门槛、踢人和 QQ 实际投递仍待客户端与平台联调。`qq-link` 类型检查、lint(0 error)通过;原有 3 项测试在绕过本机 Node `os.userInfo()` 故障后通过,远程 Node 22 CI 成功。 +- 对 19 个模块的 `configKey` 与 tarball 文件清单做了逐项检查:`coop` 是唯一缺少 `configs-default/.json` 的模块。其空配置文件已通过 [Tanya7z/sfmc-module-coop#2](https://github.com/Tanya7z/sfmc-module-coop/pull/2) 合并;pnpm pack 确认文件进入 tarball,CI 成功。修复在隔离 worktree 中完成,未覆盖合作社仓库原工作区的界面改动。 +- 模块 manifest 的运行依赖应按拓扑顺序安装:基础模块 `activity-log`、`area`、`chat`、`economy`、`inventory-switcher` 等先到位,再安装依赖它们的 `coop`、`land`、`qa`、`chat-sounds`、`clean`、`fly-area`、`gamemode-area`、`peace-area`。这是运行时 `requires` 关系;npm 包本身没有跨模块依赖。 From d26dc1c04026775feba896feb157eb7f02c8a0ca Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 19:41:11 +0800 Subject: [PATCH 8/9] docs: prepare stable installation and record runtime gap --- .changeset/README.md | 7 ++----- README.md | 4 ++-- docs/en/guide/backup-upgrade.mdx | 4 ++-- docs/en/guide/index.mdx | 6 +++--- docs/zh/dev/contributing.md | 2 +- docs/zh/dev/publish.md | 2 +- docs/zh/dev/stable-release-plan.md | 2 ++ docs/zh/dev/style-sample.mdx | 4 ++-- docs/zh/guide/backup-upgrade.mdx | 2 +- docs/zh/guide/index.mdx | 4 ++-- 10 files changed, 18 insertions(+), 19 deletions(-) diff --git a/.changeset/README.md b/.changeset/README.md index 72642595..cce287ba 100644 --- a/.changeset/README.md +++ b/.changeset/README.md @@ -2,18 +2,15 @@ 本仓用 [changesets](https://github.com/changesets/changesets) 管理 `@sfmc-bds/*` 的独立 semver。 -## 当前阶段:beta-only(pre mode) +## 正式版发布 -见 `pre.json`:`mode: pre`, `tag: beta`。版本形如 `0.2.0-beta.0`,npm dist-tag 为 **`beta`**。 - -未达 release 门槛前 **禁止** `changeset pre exit` / 发到 `latest`。 +正式版通过 npm `latest` 安装。需要预发布版本时再进入 Changesets pre mode,使用 `beta` dist-tag;切换前核对 `.changeset/pre.json` 和版本 PR。 ## 日常开发 ```bash # 改完可发包代码后 pnpm run changeset -npm run changeset # 选受影响的包 + patch|minor|major,写中文摘要 ``` diff --git a/README.md b/README.md index bc78698d..93bd7e55 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ SFMC 希望通过模块化架构补充基岩版的原生开发体验。 # 检查 Node.js 版本(需要 v22.13+) node -v -# 安装当前公测版 SFMC CLI -pnpm add -g @sfmc-bds/sfmc@beta +# 安装 SFMC CLI 正式版 +pnpm add -g @sfmc-bds/sfmc # 创建服务器目录 mkdir my-server && cd my-server diff --git a/docs/en/guide/backup-upgrade.mdx b/docs/en/guide/backup-upgrade.mdx index f89d120d..ff30a5d0 100644 --- a/docs/en/guide/backup-upgrade.mdx +++ b/docs/en/guide/backup-upgrade.mdx @@ -28,10 +28,10 @@ Do not copy `.db` files while db-server is running. - + ```bash -pnpm add -g @sfmc-bds/sfmc@beta +pnpm add -g @sfmc-bds/sfmc ``` diff --git a/docs/en/guide/index.mdx b/docs/en/guide/index.mdx index 7d46d218..10d99dc0 100644 --- a/docs/en/guide/index.mdx +++ b/docs/en/guide/index.mdx @@ -32,10 +32,10 @@ flowchart LR - + ```bash -pnpm add -g @sfmc-bds/sfmc@beta +pnpm add -g @sfmc-bds/sfmc mkdir my-server && cd my-server sfmc ``` @@ -54,7 +54,7 @@ sfmc :::tip Note -Only **beta** is published today; install with `@beta`. +This installs the stable `latest` release. Add `@beta` only when you want a prerelease. Data defaults to the current directory; set `SFMC_ROOT` to use another root. Build the monorepo once before first use. Type `help` in the console for available commands. diff --git a/docs/zh/dev/contributing.md b/docs/zh/dev/contributing.md index 4e9c3ab7..a21a309f 100644 --- a/docs/zh/dev/contributing.md +++ b/docs/zh/dev/contributing.md @@ -57,7 +57,7 @@ pnpm exec syncpack format --check | `pnpm run changeset` | 添加 changeset;push `main` 后 CI 开 Version PR | | `node packages/tools/pack-verify.mjs` | 检查发布包内容 | -日常发版:**合并 Version PR 即可**,无需本地 `prerelease` / `release`。当前 **beta-only**。模块作者发包见 [发布你的模块](./publish.md)。 +日常发版:**合并 Version PR 即可**,无需本地 `prerelease` / `release`。正式版使用 npm `latest`;预发布需单独启用 Changesets pre mode。模块作者发包见 [发布你的模块](./publish.md)。 ## 仓库规则 diff --git a/docs/zh/dev/publish.md b/docs/zh/dev/publish.md index d951e99c..61670156 100644 --- a/docs/zh/dev/publish.md +++ b/docs/zh/dev/publish.md @@ -24,7 +24,7 @@ pnpm publish --tag beta 向薄 index 开 PR:在 `sfmc-modules` 仓库的 `index.json` 增加条目(`id` / `npm` / 版本说明)。可用 GitHub CLI 自行开 PR。 :::tip 提示 -当前生态以 **beta** 为主时,安装侧请写 `@beta` 或按你包上的 dist-tag 说明。 +正式版默认使用 npm `latest`;只有预发布包才在安装命令中显式指定对应的 dist-tag(例如 `@beta`)。 ::: diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index 3230e0d0..012f5069 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -100,3 +100,5 @@ - `qq-link` Draft PR #1 复核发现一条玩家可见的绑定错误文案被终端提示污染,现已修正;安装包也补齐 `configs-default/qq_link.json`,全新隔离安装能播种配置且 `check-modules OK`。候选包与 `activity-log` 一起在隔离 BDS 中完成启动,日志确认两个模块均已启用;没有玩家连接,因此绑定门槛、踢人和 QQ 实际投递仍待客户端与平台联调。`qq-link` 类型检查、lint(0 error)通过;原有 3 项测试在绕过本机 Node `os.userInfo()` 故障后通过,远程 Node 22 CI 成功。 - 对 19 个模块的 `configKey` 与 tarball 文件清单做了逐项检查:`coop` 是唯一缺少 `configs-default/.json` 的模块。其空配置文件已通过 [Tanya7z/sfmc-module-coop#2](https://github.com/Tanya7z/sfmc-module-coop/pull/2) 合并;pnpm pack 确认文件进入 tarball,CI 成功。修复在隔离 worktree 中完成,未覆盖合作社仓库原工作区的界面改动。 - 模块 manifest 的运行依赖应按拓扑顺序安装:基础模块 `activity-log`、`area`、`chat`、`economy`、`inventory-switcher` 等先到位,再安装依赖它们的 `coop`、`land`、`qa`、`chat-sounds`、`clean`、`fly-area`、`gamemode-area`、`peace-area`。这是运行时 `requires` 关系;npm 包本身没有跨模块依赖。 +- 旧 beta Version PR #110 已改为 Draft,避免候选验收期间误合并。 +- 隔离 BDS 和独立 db-server 再次启动,日志确认 `activity-log`、`feature-qq-link` 启动,且 HttpDB 连接独立端口 `30131`。本机客户端暂时无法连接测试服;用户要求跳过这次客户端实测,因此未绑定入服、绑定放行、踢人和重新进服仍是未验证的运行项,不记为通过。隔离服务已正常关闭,正式服未重启。 diff --git a/docs/zh/dev/style-sample.mdx b/docs/zh/dev/style-sample.mdx index bfb3c3ac..bdd17524 100644 --- a/docs/zh/dev/style-sample.mdx +++ b/docs/zh/dev/style-sample.mdx @@ -37,7 +37,7 @@ flowchart LR ```bash -pnpm add -g @sfmc-bds/sfmc@beta +pnpm add -g @sfmc-bds/sfmc mkdir my-server && cd my-server sfmc ``` @@ -56,7 +56,7 @@ sfmc :::tip 提示 -当前仅发布 **beta**,请使用 `@beta` 安装。 +默认安装正式版;仅在试用预发布版本时添加 `@beta`。 数据默认写在当前目录;若要换目录,设置环境变量 `SFMC_ROOT`。 monorepo 首次使用前请先完成 build。 进入控制台后输入 `help`,可查看当前可用命令。 diff --git a/docs/zh/guide/backup-upgrade.mdx b/docs/zh/guide/backup-upgrade.mdx index 99a090fa..b0268363 100644 --- a/docs/zh/guide/backup-upgrade.mdx +++ b/docs/zh/guide/backup-upgrade.mdx @@ -79,7 +79,7 @@ SFMC 平台的各层组件相互解耦,可按需分别升级: ```bash # 获取最新版官方 CLI -pnpm add -g @sfmc-bds/sfmc@beta +pnpm add -g @sfmc-bds/sfmc # 验证更新后版本 sfmc version diff --git a/docs/zh/guide/index.mdx b/docs/zh/guide/index.mdx index 9b952b16..3148eb38 100644 --- a/docs/zh/guide/index.mdx +++ b/docs/zh/guide/index.mdx @@ -50,11 +50,11 @@ SFMC 提供了全局编排 CLI 工具,可实现从 BDS 自动下载配置到 ### 步骤 1:全局安装 SFMC CLI ```bash -pnpm add -g @sfmc-bds/sfmc@beta +pnpm add -g @sfmc-bds/sfmc ``` :::tip 提示 -当前版本处于公测阶段,请务必添加 `@beta` 标签进行安装。如需在特定文件夹持久化数据,也可通过配置 `SFMC_ROOT` 环境变量指定自定义工作目录。 +默认安装正式版。若要试用预发布版本,再显式添加 `@beta`。如需在特定文件夹持久化数据,可通过配置 `SFMC_ROOT` 环境变量指定自定义工作目录。 ::: ### 步骤 2:创建服务器工作区并启动向导 From ed4c469764800f90a251f4e8309904b4c4cb35dd Mon Sep 17 00:00:00 2001 From: Shiroha7z Date: Sun, 27 Sep 2026 19:43:43 +0800 Subject: [PATCH 9/9] docs: record isolated backup restore rehearsal --- docs/zh/dev/stable-release-plan.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/zh/dev/stable-release-plan.md b/docs/zh/dev/stable-release-plan.md index 012f5069..c5c7fee1 100644 --- a/docs/zh/dev/stable-release-plan.md +++ b/docs/zh/dev/stable-release-plan.md @@ -102,3 +102,4 @@ - 模块 manifest 的运行依赖应按拓扑顺序安装:基础模块 `activity-log`、`area`、`chat`、`economy`、`inventory-switcher` 等先到位,再安装依赖它们的 `coop`、`land`、`qa`、`chat-sounds`、`clean`、`fly-area`、`gamemode-area`、`peace-area`。这是运行时 `requires` 关系;npm 包本身没有跨模块依赖。 - 旧 beta Version PR #110 已改为 Draft,避免候选验收期间误合并。 - 隔离 BDS 和独立 db-server 再次启动,日志确认 `activity-log`、`feature-qq-link` 启动,且 HttpDB 连接独立端口 `30131`。本机客户端暂时无法连接测试服;用户要求跳过这次客户端实测,因此未绑定入服、绑定放行、踢人和重新进服仍是未验证的运行项,不记为通过。隔离服务已正常关闭,正式服未重启。 +- 在隔离服务关闭后,将测试数据、配置、模块目录及测试世界冷备份并解压至另一测试目录;54 个文件逐项 SHA256 相同,恢复数据库 `PRAGMA integrity_check` 为 `ok`。从恢复目录启动候选 db-server 后,健康检查与 QQ 管理队列均返回成功,再正常停止。这只验证隔离样本的备份/恢复,不代表正式服历史数据迁移已经验收。