@bleedingdev/modern-js-main-doc 3.5.0-ultramodern.2 → 3.5.0-ultramodern.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -197,10 +197,14 @@ The generated `api.client.*` API only exists for loader-materialized `@api/index
197
197
  ## Effect cohort
198
198
 
199
199
  UltraModern-generated workspaces pin the framework-compatible Effect cohort
200
- through `pnpm-workspace.yaml` overrides. For `3.5.0-ultramodern.2`, generated
200
+ through `pnpm-workspace.yaml` overrides. For `3.5.0-ultramodern.4`, generated
201
201
  apps use:
202
202
 
203
203
  ```yaml
204
+ trustPolicyExclude:
205
+ - 'effect@4.0.0-beta.91'
206
+ - '@effect/opentelemetry@4.0.0-beta.91'
207
+
204
208
  overrides:
205
209
  '@effect/vitest': 4.0.0-beta.91
206
210
  effect: 4.0.0-beta.91
@@ -208,7 +212,10 @@ overrides:
208
212
 
209
213
  Do not add a different direct `effect` version in an app package. A mismatched
210
214
  Effect beta can fail while building layers or HTTP middleware because runtime
211
- services come from different package instances.
215
+ services come from different package instances. Keep the generated
216
+ `trustPolicyExclude` entries with the same Effect cohort; they handle the
217
+ `effect` and `@effect/opentelemetry` trusted-publisher to provenance metadata
218
+ transition without weakening UltraModern API architecture checks.
212
219
 
213
220
  ## Contract tests
214
221
 
@@ -78,33 +78,39 @@ mise exec -- pnpm check
78
78
  mise exec -- pnpm build
79
79
  ```
80
80
 
81
- Strict generated API migration requires `3.5.0-ultramodern.2` or newer.
81
+ Strict generated API migration requires `3.5.0-ultramodern.4` or newer.
82
82
  `3.4.0-ultramodern.20` and earlier cohorts do not include this full direct
83
83
  `api/index.ts` generator, generated `.mts` checks, strict Oxlint boundary rule
84
84
  set, Effect cohort overrides, and strict Effect migration command. Agents that
85
85
  cannot install that BleedingDev cohort yet should use the local Modern.js
86
- workspace for migration validation; otherwise pin `3.5.0-ultramodern.2` or
86
+ workspace for migration validation; otherwise pin `3.5.0-ultramodern.4` or
87
87
  newer with `--ultramodern-package-version`.
88
88
 
89
89
  Before hand-editing package aliases or generated metadata, run the framework
90
90
  migration command from the target workspace:
91
91
 
92
92
  ```bash
93
- pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.2 ultramodern \
94
- migrate-strict-effect --version 3.5.0-ultramodern.2
93
+ pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.4 ultramodern \
94
+ migrate-strict-effect --version 3.5.0-ultramodern.4
95
95
  pnpm api:check
96
96
  pnpm contract:check
97
97
  ```
98
98
 
99
99
  The command updates `.modernjs/ultramodern.json`, root
100
- `modernjs.packageSource`, generated Modern package aliases, direct topology API
101
- metadata, and the pnpm lockfile. Remaining failures are source migration work:
102
- move code to `shared/api.ts`, `api/index.ts`, and `src/api/*-client.ts`, then
103
- delete `api/effect`, `api/lambda`, `shared/effect`, and `src/effect`.
100
+ `modernjs.packageSource`, generated Modern package aliases, framework-owned
101
+ toolchain pins, direct topology API metadata, strict Effect pnpm
102
+ overrides/trust policy, and the pnpm lockfile. Remaining failures are source
103
+ migration work: move code to `shared/api.ts`, `api/index.ts`, and
104
+ `src/api/*-client.ts`, then delete `api/effect`, `api/lambda`, `shared/effect`,
105
+ and `src/effect`.
104
106
 
105
107
  Generated strict Effect workspaces pin the compatible Effect cohort with pnpm
106
108
  overrides: `effect@4.0.0-beta.91` and `@effect/vitest@4.0.0-beta.91`. Do not
107
- add app-local direct Effect versions that disagree with those overrides.
109
+ add app-local direct Effect versions that disagree with those overrides. They
110
+ also carry a generated pnpm trust-policy exclusion for
111
+ `effect@4.0.0-beta.91` and `@effect/opentelemetry@4.0.0-beta.91` so pnpm
112
+ no-downgrade checks do not block the Effect beta cohort's trusted-publisher to
113
+ provenance metadata transition.
108
114
 
109
115
  Gradual migration means old, unmigrated Modern.js apps can keep their existing
110
116
  runtime until they are converted. Once a surface is generated or migrated as
@@ -195,16 +195,23 @@ export default defineConfig({
195
195
  ## Effect 版本组
196
196
 
197
197
  UltraModern 生成的 workspace 会通过 `pnpm-workspace.yaml` overrides 锁定与框架兼容的
198
- Effect 版本组。`3.5.0-ultramodern.2` 使用:
198
+ Effect 版本组。`3.5.0-ultramodern.4` 使用:
199
199
 
200
200
  ```yaml
201
+ trustPolicyExclude:
202
+ - 'effect@4.0.0-beta.91'
203
+ - '@effect/opentelemetry@4.0.0-beta.91'
204
+
201
205
  overrides:
202
206
  '@effect/vitest': 4.0.0-beta.91
203
207
  effect: 4.0.0-beta.91
204
208
  ```
205
209
 
206
210
  不要在应用包里添加不同版本的直接 `effect` 依赖。Effect beta 不一致时,Layer 或 HTTP
207
- middleware 构建可能因为运行时 service 来自不同包实例而失败。
211
+ middleware 构建可能因为运行时 service 来自不同包实例而失败。保留生成的
212
+ `trustPolicyExclude` 条目并让它跟随同一个 Effect 版本组;它用于处理 `effect` 和
213
+ `@effect/opentelemetry` 从 trusted-publisher metadata 迁移到 provenance
214
+ attestation 时的 pnpm no-downgrade 检查。
208
215
 
209
216
  ## 契约测试
210
217
 
@@ -71,30 +71,34 @@ mise exec -- pnpm check
71
71
  mise exec -- pnpm build
72
72
  ```
73
73
 
74
- 严格生成 API 迁移要求 `3.5.0-ultramodern.2` 或更新版本。
74
+ 严格生成 API 迁移要求 `3.5.0-ultramodern.4` 或更新版本。
75
75
  `3.4.0-ultramodern.20` 及更早 cohort 还没有这套完整的直接
76
76
  `api/index.ts` 生成器、生成的 `.mts` 检查、严格 Oxlint 边界规则、Effect 版本组
77
77
  overrides 和严格 Effect 迁移命令。还不能安装该 BleedingDev cohort 的 agent 应使用本地
78
78
  Modern.js workspace 做迁移校验;否则用 `--ultramodern-package-version` 固定
79
- `3.5.0-ultramodern.2` 或更新版本。
79
+ `3.5.0-ultramodern.4` 或更新版本。
80
80
 
81
81
  手写 package alias 或生成 metadata 之前,先在目标 workspace 运行框架迁移命令:
82
82
 
83
83
  ```bash
84
- pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.2 ultramodern \
85
- migrate-strict-effect --version 3.5.0-ultramodern.2
84
+ pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.4 ultramodern \
85
+ migrate-strict-effect --version 3.5.0-ultramodern.4
86
86
  pnpm api:check
87
87
  pnpm contract:check
88
88
  ```
89
89
 
90
90
  该命令会更新 `.modernjs/ultramodern.json`、根 `modernjs.packageSource`、生成的
91
- Modern package alias、直接 topology API metadata 和 pnpm lockfile。剩余失败就是源码迁移:
92
- 把代码移到 `shared/api.ts`、`api/index.ts``src/api/*-client.ts`,再删除
93
- `api/effect`、`api/lambda`、`shared/effect` 和 `src/effect`。
91
+ Modern package alias、框架拥有的 toolchain pin、直接 topology API metadata、严格 Effect
92
+ pnpm overrides/trust policy pnpm lockfile。剩余失败就是源码迁移:把代码移到
93
+ `shared/api.ts`、`api/index.ts` 和 `src/api/*-client.ts`,再删除 `api/effect`、
94
+ `api/lambda`、`shared/effect` 和 `src/effect`。
94
95
 
95
96
  严格 Effect 生成 workspace 会通过 pnpm overrides 固定兼容版本组:
96
97
  `effect@4.0.0-beta.91` 和 `@effect/vitest@4.0.0-beta.91`。不要添加与这些
97
- overrides 冲突的 app 本地直接 Effect 版本。
98
+ overrides 冲突的 app 本地直接 Effect 版本。生成的 pnpm policy 还会为
99
+ `effect@4.0.0-beta.91` 和 `@effect/opentelemetry@4.0.0-beta.91` 添加
100
+ trust-policy exclusion,避免 Effect beta 版本组从 trusted-publisher metadata
101
+ 迁移到 provenance attestation 时被 pnpm no-downgrade 检查误拦截。
98
102
 
99
103
  渐进迁移意味着尚未迁移的旧 Modern.js app 可以保留现有 runtime,直到被转换为
100
104
  UltraModern。一个 surface 一旦生成为或迁移为 UltraModern HTTP API,就只能使用
package/package.json CHANGED
@@ -19,14 +19,14 @@
19
19
  "modern.js",
20
20
  "ultramodern.js"
21
21
  ],
22
- "version": "3.5.0-ultramodern.2",
22
+ "version": "3.5.0-ultramodern.4",
23
23
  "publishConfig": {
24
24
  "registry": "https://registry.npmjs.org/",
25
25
  "access": "public"
26
26
  },
27
27
  "dependencies": {
28
28
  "mermaid": "^11.16.0",
29
- "@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.5.0-ultramodern.2"
29
+ "@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.5.0-ultramodern.4"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@rsbuild/plugin-sass": "2.0.0",