Skip to content

Commit 398f43e

Browse files
committed
fix: finalize deckflow SDK boundary and browser verification
1 parent d0dd75a commit 398f43e

5 files changed

Lines changed: 7 additions & 8 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
## @deckflow/deckops 1.0.0 — migration candidate, 2026-09-05
3+
## @deckflow/deckops 1.0.0 — 2026-09-07
44

55
- Rename the product and its sole CLI to DeckOps / `deckops`; export `DeckOpsError` without a legacy alias. Historical entries below describe the former DeckParse package.
66
- Own the required cloud transport, DTOs and regression tests directly; remove the former SDK dependency and browser patch, with no replacement shared client package.

‎MIGRATION_STATUS.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
- 本仓源码改为 `@deckflow/deckops@1.0.0`,唯一 binary 为 `deckops`;公开错误类改为 `DeckOpsError`,无旧名 alias。
1010
- 保留 DeckIR/schema、manifest v1/v2、parser identity、`producer.deckparse` 和共享 UUID。
1111
- 新增独立产品默认配置和显式 `config migrate [--dry-run]`;只补缺失有效字段,保留旧文件、目标值和 UUID,正常运行不回退旧产品路径。尚未对用户真实配置执行迁移。
12-
- 旧仓库在 `codex/decktools-migration` 准备 `decktools@1.0.0`、`@decktools/sdk@1.0.0`、Go/Python import/module、installer、发布配置及产品环境变量改名。它的实际基线是 `master` 上的 `4a5f70677d6cb7cd5e95ee6a89a88adf942687b0`;不要合入无关历史的 `origin/main`。
12+
- 旧仓库在 `codex/decktools-migration` 准备 `decktools@1.0.0`、`@deckflow/decktools-sdk@1.0.0`、Go/Python import/module、installer、发布配置及产品环境变量改名。它的实际基线是 `master` 上的 `4a5f70677d6cb7cd5e95ee6a89a88adf942687b0`;不要合入无关历史的 `origin/main`。
1313

1414
## 验证结果
1515

@@ -25,15 +25,15 @@
2525
| 消费者预检 | 临时副本中 deckhtml、hyperdeck/deckhtml 编译通过;DeckRender Node/Browser 类型、90 个集成测试、构建和 Browser consumer 检查通过 |
2626
| 真实云端 conformance | 未执行;需要测试凭据和专用测试操作,不以 mock 通过代替 |
2727

28-
消费者预检使用本地候选 SDK tarball 与临时目录,不代表 registry 安装和 lockfile 已验收。三个实际消费者仓库尚未修改。DeckRender 全量单测也未完成:旧 SDK 0.7.3 Browser 源码改写脚本及其单测需在正式切换时删除/替换,Browser 构建应解析正式 `@decktools/sdk/browser` 入口;旧工具配置 fallback 和诊断提示也需清理,避免把新 DeckOps 当作旧 SDK。
28+
消费者预检使用本地候选 SDK tarball 与临时目录,不代表 registry 安装和 lockfile 已验收。三个实际消费者仓库尚未修改。DeckRender 全量单测也未完成:旧 SDK 0.7.3 Browser 源码改写脚本及其单测需在正式切换时删除/替换,Browser 构建应解析正式 `@deckflow/decktools-sdk/browser` 入口;旧工具配置 fallback 和诊断提示也需清理,避免把新 DeckOps 当作旧 SDK。
2929

3030
## 当前阻塞和未做的外部操作
3131

3232
`npm whoami --registry=https://registry.npmjs.org/` 返回 E401,当前无法验证新包发布权限或发布。尚未发布 npm/Python/Go release、push/合并迁移分支、改 GitHub 仓库名、移动本地目录、改真实消费者及其 lockfile、调整全局 CLI 或用户配置。旧工作环境继续保留。
3333

3434
## 恢复实施顺序
3535

36-
1. 用户完成 npm 登录,并确认对 `@decktools/sdk`、`decktools`、`@deckflow/deckops` 的发布权限;发布前重新核验名称及 1.0.0 是否可用。候选已设置 1.0.0,首次发布不要直接运行会额外 bump 的聚合 `release` 命令。
36+
1. 用户完成 npm 登录,并确认对 `@deckflow/decktools-sdk`、`decktools`、`@deckflow/deckops` 的发布权限;发布前重新核验名称及 1.0.0 是否可用。候选已设置 1.0.0,首次发布不要直接运行会额外 bump 的聚合 `release` 命令。
3737
2. 补实际浏览器 smoke;有云端测试凭据时补 conformance,否则明确保留该验收限制。review 并合并本地源码候选至各仓库正确默认分支。
3838
3. 旧仓库先改为 `deckflow/decktools`,更新 remote;按 SDK → CLI 顺序发布新包,验证空目录真实安装。Go/Python 按对应发布通道验证权限并发行;不要把源码改名等同于已发布。
3939
4. 旧本地目录再移至 `/Volumes/workspace/caixuan/decktools`。在实际内部消费者直接更新依赖/import、处理 DeckRender Browser 适配与相关配置引用,生成新 lockfile,frozen install + 完整检查,再切换安装/部署。Hyperdeck 内的 deckhtml 本地分支落后远端,先重新核对并保留它的工作状态。

‎scripts/check-independence.mjs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import fs from 'node:fs';
33
import path from 'node:path';
44

55
const root = path.resolve(import.meta.dirname, '..');
6-
const forbidden = /@(?:deckops|decktools)\/sdk|@deckflow\/cloud-client/;
6+
const forbidden = /@(?:deckops|decktools)\/sdk|@deckflow\/(?:cloud-client|decktools-sdk)/;
77
const manifest = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
88
assert.equal(manifest.name, '@deckflow/deckops');
99
assert.deepEqual(manifest.bin, { deckops: 'dist/cli.js' }, 'Only the new product CLI may be exported');
@@ -21,7 +21,7 @@ for (const directory of ['src', 'dist']) {
2121
if (!/\.(?:ts|js|mjs)$/.test(relative)) continue;
2222
const file = path.join(root, directory, relative);
2323
const content = fs.readFileSync(file, 'utf8');
24-
assert.doesNotMatch(content, /(?:from\s*|import\s*\(|require\s*\()['"](?:@(?:deckops|decktools)\/sdk|@deckflow\/cloud-client)/,
24+
assert.doesNotMatch(content, /(?:from\s*|import\s*\(|require\s*\()['"](?:@(?:deckops|decktools)\/sdk|@deckflow\/(?:cloud-client|decktools-sdk))/,
2525
`Forbidden runtime or type import in ${directory}/${relative}`);
2626
}
2727
}

‎scripts/conformance.mjs‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ const env = {
3232
...process.env,
3333
DECKFLOW_CONFIG_DIR: configDir,
3434
DECKOPS_CONFIG_DIR: configDir,
35-
DECKOPS_CONFIG_DIR: configDir,
3635
};
3736

3837
let failures = 0;

‎tests/browser/smoke.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<head>
44
<meta charset="utf-8">
55
<meta name="viewport" content="width=device-width,initial-scale=1">
6-
<title>Deckparse browser SDK verification</title>
6+
<title>DeckOps browser SDK verification</title>
77
<style>
88
:root { color-scheme: light; font: 16px/1.5 system-ui, sans-serif; color: #132e28; background: #f2f6f3; }
99
body { max-width: 850px; padding: 60px 24px; margin: auto; }

0 commit comments

Comments
 (0)