@bleedingdev/modern-js-main-doc 3.2.0-ultramodern.0 → 3.2.0-ultramodern.1
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.
- package/docs/en/_nav.json +3 -3
- package/docs/en/guides/get-started/_meta.json +1 -1
- package/docs/en/guides/get-started/ultramodern.mdx +13 -13
- package/docs/en/index.md +1 -1
- package/docs/zh/_nav.json +3 -3
- package/docs/zh/guides/get-started/_meta.json +1 -1
- package/docs/zh/guides/get-started/ultramodern.mdx +14 -14
- package/docs/zh/index.md +1 -1
- package/main-doc/docs/en/guides/get-started/ultramodern.mdx +26 -26
- package/package.json +2 -2
- package/rspress.config.ts +9 -10
- package/src/i18n/enUS.ts +5 -4
- package/src/i18n/zhCN.ts +4 -4
- package/src/pages/index.module.scss +3 -1
- package/src/pages/index.tsx +3 -3
package/docs/en/_nav.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"text": "
|
|
4
|
-
"link": "/guides/get-started/
|
|
3
|
+
"text": "UltraModern Guide",
|
|
4
|
+
"link": "/guides/get-started/ultramodern",
|
|
5
5
|
"activeMatch": "/guides/"
|
|
6
6
|
},
|
|
7
7
|
{
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"activeMatch": "/community/"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
"text": "Modern.js 2.x Docs",
|
|
33
|
+
"text": "Upstream Modern.js 2.x Docs",
|
|
34
34
|
"link": "https://modernjs.dev/v2"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: UltraModern.js
|
|
2
|
+
title: UltraModern.js 3.0
|
|
3
3
|
sidebar_position: 2
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# UltraModern.js
|
|
6
|
+
# UltraModern.js 3.0 vs Modern.js 3.0
|
|
7
7
|
|
|
8
|
-
This page compares **UltraModern.js
|
|
8
|
+
This page compares **UltraModern.js 3.0** with the Modern.js 3.x line this fork tracks. The baseline is the current merged Modern.js `release-v3.x` baseline, not a frozen patch-version snapshot.
|
|
9
9
|
|
|
10
|
-
UltraModern.js
|
|
10
|
+
UltraModern.js 3.0 is our SuperApp framework forked from Modern.js. It keeps compatibility with the Modern.js plugin/runtime mental model where that helps adoption, but it is positioned as a separate framework for Effect-first BFFs, TanStack Router, SSR, Module Federation, and independently deployable Micro Verticals.
|
|
11
11
|
|
|
12
12
|
## Design Principles
|
|
13
13
|
|
|
14
|
-
- Keep deltas
|
|
15
|
-
- Preserve
|
|
14
|
+
- Keep deltas explicit and auditable.
|
|
15
|
+
- Preserve compatibility with useful Modern.js concepts without presenting UltraModern.js as a preset-only variant.
|
|
16
16
|
- Add platform-level contracts only where they improve cross-team reliability.
|
|
17
17
|
- Keep opt-out switches and explicit compatibility lanes available.
|
|
18
18
|
|
|
19
19
|
## Compatibility Contract
|
|
20
20
|
|
|
21
|
-
UltraModern.js
|
|
21
|
+
UltraModern.js 3.0 keeps:
|
|
22
22
|
|
|
23
23
|
- Modern.js app/config/plugin mental model.
|
|
24
24
|
- Existing project structure and command flow.
|
|
25
25
|
- Progressive adoption path (apps can stay mostly unchanged).
|
|
26
26
|
|
|
27
|
-
UltraModern additions are designed
|
|
27
|
+
UltraModern.js additions are designed as the default product surface for new SuperApps. Compatibility lanes remain available when they reduce migration risk, but the framework direction is Effect + TanStack + SSR + Micro Verticals.
|
|
28
28
|
|
|
29
29
|
## Intentional Differences (v3 line)
|
|
30
30
|
|
|
31
|
-
| Area | Modern.js
|
|
31
|
+
| Area | Modern.js 3.0 baseline | UltraModern.js 3.0 |
|
|
32
32
|
| --- | --- | --- |
|
|
33
33
|
| Build diagnostics | RsDoctor is generally opt-in | Adds `performance.rsdoctor`, default-on diagnostics in production Rspack builds, and `.rsdoctor/ultramodern-diagnostics.json` contract artifact |
|
|
34
34
|
| Output and static serving | Precompression behavior is app-defined | Enables `output.precompress` by default and serves `.br` / `.gz` variants via `Accept-Encoding` negotiation |
|
|
35
35
|
| BFF runtime and contracts | Standard BFF runtime/client generation | Adds `requestId`-aware producer isolation, fail-fast initialization checks, and operation/trace correlation headers |
|
|
36
|
-
| BFF runtime choices | Hono runtime path only in Modern.js
|
|
36
|
+
| BFF runtime choices | Hono runtime path only in Modern.js 3.0 baseline (no built-in Effect runtime path) | Sets Effect as default runtime, enforces strict runtime split (`effect` -> `api/effect`, `hono` -> `api/lambda`), and adds Effect-Schema-first contracts plus MF failure-injection reliability coverage |
|
|
37
37
|
| Telemetry standardization | Observability wiring is often app-specific | Adds framework-level telemetry pipeline with OTLP/VictoriaMetrics exporters, redaction, batching, and backpressure controls |
|
|
38
38
|
| App-level MF SSR handshake | No dedicated super-app app-level stability contract focus | Adds `server.ssr.moduleFederationAppSSR` plus integration-tested env/config handshake |
|
|
39
39
|
| MF remote reliability | Retry/fallback patterns are often implemented per app | Adds deterministic timeout/network/contract-error reliability matrix and distributed OTEL continuity tests |
|
|
@@ -44,14 +44,14 @@ UltraModern additions are designed to land as stronger defaults, explicit compat
|
|
|
44
44
|
|
|
45
45
|
## What We Intentionally Do Not Change
|
|
46
46
|
|
|
47
|
-
- We do not
|
|
48
|
-
- We do not
|
|
47
|
+
- We do not hide the fork behind legacy Modern.js branding.
|
|
48
|
+
- We do not optimize for generic Modern.js defaults when they conflict with SuperApp reliability.
|
|
49
49
|
- We keep both runtime modes (`effect`, `hono`) as explicit choices and avoid implicit fallback between them.
|
|
50
50
|
- We avoid incompatible API changes unless there is a hard reliability requirement.
|
|
51
51
|
|
|
52
52
|
## Adoption Notes
|
|
53
53
|
|
|
54
|
-
For teams already on Modern.js
|
|
54
|
+
For teams already on Modern.js 3.0, the adoption path remains compatibility-aware: keep the pieces that reduce risk, move toward MV-first / TanStack-first / Effect-first defaults, and keep fallback lanes explicit while you adopt UltraModern.js 3.0 as a separate framework.
|
|
55
55
|
|
|
56
56
|
1. Keep existing React Router apps running as-is. TanStack Router is the preferred path for new scaffolds and incremental route adoption, but the React Router lane remains supported while teams move on their own schedule.
|
|
57
57
|
2. Prefer `bff.runtimeFramework: 'effect'` for new BFF work, with the entry implemented at `api/effect/index.ts`. If your app already uses Hono handlers under `api/lambda/**`, keep `bff.runtimeFramework: 'hono'` until you are ready to move them; Hono remains a supported compatibility lane.
|
package/docs/en/index.md
CHANGED
package/docs/zh/_nav.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
|
-
"text": "指南",
|
|
4
|
-
"link": "/guides/get-started/
|
|
3
|
+
"text": "UltraModern 指南",
|
|
4
|
+
"link": "/guides/get-started/ultramodern",
|
|
5
5
|
"activeMatch": "/guides/"
|
|
6
6
|
},
|
|
7
7
|
{
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"activeMatch": "/community/"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
|
-
"text": "Modern.js 2.x 文档",
|
|
33
|
+
"text": "上游 Modern.js 2.x 文档",
|
|
34
34
|
"link": "https://modernjs.dev/v2/zh/"
|
|
35
35
|
}
|
|
36
36
|
]
|
|
@@ -1,39 +1,39 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: UltraModern.js
|
|
2
|
+
title: UltraModern.js 3.0
|
|
3
3
|
sidebar_position: 2
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# UltraModern.js
|
|
6
|
+
# UltraModern.js 3.0 与 Modern.js 3.0 对比
|
|
7
7
|
|
|
8
|
-
本文对比 **UltraModern.js
|
|
8
|
+
本文对比 **UltraModern.js 3.0** 与本 fork 持续跟进的 Modern.js 3.x 版本线。这里的基线应理解为当前已合并的 Modern.js `release-v3.x` 基线,而不是固定的补丁版本快照。
|
|
9
9
|
|
|
10
|
-
UltraModern.js
|
|
10
|
+
UltraModern.js 3.0 是我们从 Modern.js 分叉出来的 SuperApp 框架。它保留有利于接入的 Modern.js 插件/运行时心智模型,但产品定位是独立框架:面向 Effect-first BFF、TanStack Router、SSR、Module Federation 与可独立部署的 Micro Verticals。
|
|
11
11
|
|
|
12
12
|
## 设计原则
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
14
|
+
- 差异要明确、可审计。
|
|
15
|
+
- 保留有价值的 Modern.js 兼容概念,但不再把 UltraModern.js 表达成“只是一个预设”。
|
|
16
16
|
- 仅在跨团队稳定性场景增加平台契约。
|
|
17
17
|
- 保留按应用关闭和显式兼容分支的能力。
|
|
18
18
|
|
|
19
19
|
## 兼容性承诺
|
|
20
20
|
|
|
21
|
-
UltraModern.js
|
|
21
|
+
UltraModern.js 3.0 保持以下不变:
|
|
22
22
|
|
|
23
23
|
- Modern.js 的应用/配置/插件心智模型。
|
|
24
24
|
- 既有项目结构与命令使用方式。
|
|
25
25
|
- 渐进式接入路径(应用无需大规模重构)。
|
|
26
26
|
|
|
27
|
-
UltraModern
|
|
27
|
+
UltraModern.js 的增强能力是新 SuperApp 的默认产品面。兼容分支仍然存在,用于降低迁移风险,但框架方向是 Effect + TanStack + SSR + Micro Verticals。
|
|
28
28
|
|
|
29
|
-
## 有意引入的差异(
|
|
29
|
+
## 有意引入的差异(3.0 线)
|
|
30
30
|
|
|
31
|
-
| 领域 | Modern.js
|
|
31
|
+
| 领域 | Modern.js 3.0 基线 | UltraModern.js 3.0 |
|
|
32
32
|
| --- | --- | --- |
|
|
33
33
|
| 构建诊断能力 | RsDoctor 多为显式开启 | 新增 `performance.rsdoctor`,并在 Rspack 生产构建默认开启,同时产出 `.rsdoctor/ultramodern-diagnostics.json` 契约文件 |
|
|
34
34
|
| 输出与静态资源回源 | 预压缩策略通常由业务自定义 | 默认开启 `output.precompress`,并按 `Accept-Encoding` 协商 `.br` / `.gz` 回源 |
|
|
35
35
|
| BFF 运行时与契约 | 提供标准 BFF 运行时与客户端生成能力 | 增加 `requestId` 维度隔离、初始化 fail-fast 校验与操作/追踪关联 Header |
|
|
36
|
-
| BFF 运行时选型 | Modern.js
|
|
36
|
+
| BFF 运行时选型 | Modern.js 3.0 基线仅提供 Hono 运行时路径(无内建 Effect 运行时) | 将 Effect 设为默认运行时,并采用严格运行时拆分(`effect` -> `api/effect`,`hono` -> `api/lambda`),同时补齐 Effect-Schema-first 契约与 MF failure-injection 覆盖 |
|
|
37
37
|
| Telemetry 标准化 | 可观测链路通常由业务侧自行拼装 | 增加框架级 telemetry 管线,内置 OTLP/VictoriaMetrics,支持脱敏、批处理与背压 |
|
|
38
38
|
| 应用级 MF SSR 协议 | 没有以 super-app 为重点的应用级稳定性契约开关 | 增加 `server.ssr.moduleFederationAppSSR` 配置/环境变量握手,并补齐集成级回归保障 |
|
|
39
39
|
| MF 远程加载可靠性 | 重试/降级策略通常由各业务单独实现 | 增加 timeout/network/contract-error 的确定性可靠性矩阵与分布式 OTEL 连续性断言 |
|
|
@@ -44,14 +44,14 @@ UltraModern 的增强能力会尽量以“更强默认值”“显式兼容分
|
|
|
44
44
|
|
|
45
45
|
## 我们刻意不做的事情
|
|
46
46
|
|
|
47
|
-
-
|
|
48
|
-
-
|
|
47
|
+
- 不再把这个 fork 隐藏在旧 Modern.js 品牌后面。
|
|
48
|
+
- 当通用 Modern.js 默认值与 SuperApp 可靠性冲突时,不优先优化通用默认值。
|
|
49
49
|
- 运行时保持 `effect` 与 `hono` 双模式并存,但不提供隐式回退。
|
|
50
50
|
- 除非稳定性硬需求,否则避免引入破坏性 API 变更。
|
|
51
51
|
|
|
52
52
|
## 迁移说明
|
|
53
53
|
|
|
54
|
-
对于已经在使用 Modern.js
|
|
54
|
+
对于已经在使用 Modern.js 3.0 的团队,迁移路径是“兼容感知”:保留能降低风险的部分,逐步向 MV-first / TanStack-first / Effect-first 默认方向收敛,并把 UltraModern.js 3.0 作为独立框架采用。
|
|
55
55
|
|
|
56
56
|
1. 既有 React Router 应用可以继续按现状运行。TanStack Router 是新脚手架与增量迁移的优先路径,但 React Router 兼容分支仍然保留,团队可以按自己的节奏迁移。
|
|
57
57
|
2. 新建或迁移中的 BFF 能力优先使用 `bff.runtimeFramework: 'effect'`,并将入口实现放在 `api/effect/index.ts`。如果当前应用已经在 `api/lambda/**` 下使用 Hono 处理函数,就继续显式使用 `bff.runtimeFramework: 'hono'`,等准备好再迁移;Hono 仍是受支持的兼容分支。
|
package/docs/zh/index.md
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: UltraModern.js
|
|
2
|
+
title: UltraModern.js 3.0
|
|
3
3
|
sidebar_position: 6
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# UltraModern.js
|
|
6
|
+
# UltraModern.js 3.0 vs Modern.js 3.0
|
|
7
7
|
|
|
8
|
-
UltraModern.js
|
|
8
|
+
UltraModern.js 3.0 is our SuperApp framework forked from Modern.js for large, independently deployable super-app and ERP-style systems.
|
|
9
9
|
|
|
10
|
-
This page is the complete public difference reference for
|
|
10
|
+
This page is the complete public difference reference for the UltraModern.js 3.0 framework line.
|
|
11
11
|
|
|
12
|
-
## Scope (
|
|
12
|
+
## Scope (3.0 Only)
|
|
13
13
|
|
|
14
|
-
- Baseline: Modern.js `release-v3.x
|
|
15
|
-
- Scope: all user-visible differences shipped in UltraModern.js
|
|
16
|
-
- Excluded: roadmap/mainline-only work that is not shipped to
|
|
14
|
+
- Baseline: the current merged Modern.js `release-v3.x` baseline tracked by this fork; this page should not be read as a frozen patch-version comparison.
|
|
15
|
+
- Scope: all user-visible differences shipped in UltraModern.js 3.0.
|
|
16
|
+
- Excluded: roadmap/mainline-only work that is not shipped to UltraModern.js 3.0.
|
|
17
17
|
|
|
18
|
-
## Complete Difference Matrix (
|
|
18
|
+
## Complete Difference Matrix (3.0)
|
|
19
19
|
|
|
20
|
-
| Area | Modern.js
|
|
20
|
+
| Area | Modern.js 3.0 baseline | UltraModern.js 3.0 difference | Status in 3.0 | Notes |
|
|
21
21
|
| --- | --- | --- | --- | --- |
|
|
22
22
|
| Build diagnostics default | RsDoctor usage is opt-in in most projects | Rspack production build enables RsDoctor by default | Implemented | Can be disabled via `performance.rsdoctor` |
|
|
23
23
|
| Build diagnostics config surface | No `performance.rsdoctor` option in framework docs | Adds `performance.rsdoctor` (`boolean` or `{ enabled, disableClientServer, reportDir, mode }`) | Implemented | `disableClientServer` defaults to `true` |
|
|
@@ -39,18 +39,18 @@ This page is the complete public difference reference for that documented V3 pro
|
|
|
39
39
|
| App-level MF SSR contract flag | No dedicated app-level MF SSR stability contract switch | Adds `server.ssr.moduleFederationAppSSR` contract and auto-enables env wiring when MF SSR markers are detected | Implemented | Sets `process.env.MODERN_MF_APP_SSR` |
|
|
40
40
|
| App-level MF SSR runtime bridge | Not a stable default bridge path | V3 applies stable bridge defaults for MF SSR node output/runtime env when server rendering + MF markers are present | Implemented | Keeps explicit opt-out path via config/env |
|
|
41
41
|
| MF remote loader reliability contracts | Remote loading fallback patterns are typically app-defined | Adds deterministic timeout/network/contract-error fallback matrix and distributed OTEL continuity assertions | Implemented | `routes-tanstack-mf` reliability suite |
|
|
42
|
-
| BFF runtime choices | Hono runtime path only in Modern.js
|
|
42
|
+
| BFF runtime choices | Hono runtime path only in Modern.js 3.0 baseline (no built-in Effect runtime path) | Sets Effect as default runtime, enforces strict runtime split (`effect` -> `api/effect`, `hono` -> `api/lambda`), and adds Effect-Schema-only MF data contracts plus failure-injection coverage for federated data fetch | Implemented (Effect-default + strict split) | Stream is explicit about no Zod introduction |
|
|
43
43
|
| Module SDK contract artifact | No framework-level module contract artifact | Adds machine-readable module contract + typed module SDK interfaces | Implemented | `module-sdk-contracts.json` + `moduleSdk.d.ts` |
|
|
44
44
|
| Boundary anti-pattern CI guards | No dedicated boundary anti-pattern workflow | Adds profile-driven CI checks for boundary imports, required hooks, and forbidden module patterns | Implemented | `.github/workflows/boundary-anti-patterns.yml` |
|
|
45
45
|
| Release/module certification gate automation | No super-app release evidence profile in baseline | Adds RC + module-certification gate profiles, evidence metadata validation, and dedicated CI workflows | Implemented | `.github/workflows/release-contract-gates.yml` + module/bun gate workflows |
|
|
46
|
-
| Contract test coverage | No tests for these new contracts in
|
|
46
|
+
| Contract test coverage | No tests for these new contracts in the tracked Modern.js 3.x baseline | Adds focused tests for RsDoctor defaults, BFF requestId, telemetry, SSR MF contract env wiring | Implemented | Reduces regression risk in super-app scenarios |
|
|
47
47
|
| Public docs surface | No UltraModern V3 comparison page | Adds dedicated V3 difference page and linked config docs | Implemented | This page is the reference page for the public preset profile |
|
|
48
48
|
|
|
49
|
-
## Detailed
|
|
49
|
+
## Detailed 3.0 Differences
|
|
50
50
|
|
|
51
51
|
### 1) `performance.rsdoctor` and default-on diagnostics
|
|
52
52
|
|
|
53
|
-
UltraModern.js
|
|
53
|
+
UltraModern.js 3.0 extends performance config with:
|
|
54
54
|
|
|
55
55
|
- `performance.rsdoctor: boolean | { enabled?: boolean; disableClientServer?: boolean; reportDir?: string; mode?: 'normal' | 'brief' | 'lite' }`
|
|
56
56
|
- Rspack + production: enabled by default.
|
|
@@ -75,7 +75,7 @@ export default defineConfig({
|
|
|
75
75
|
|
|
76
76
|
### 2) Cross-project BFF hardening with `requestId`
|
|
77
77
|
|
|
78
|
-
UltraModern.js
|
|
78
|
+
UltraModern.js 3.0 adds explicit producer identity across the BFF toolchain:
|
|
79
79
|
|
|
80
80
|
- `bff.requestId` in plugin config.
|
|
81
81
|
- Loader/client generation passes `requestId` to `createRequest(...)`.
|
|
@@ -92,7 +92,7 @@ configure({
|
|
|
92
92
|
});
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
Contract behavior in
|
|
95
|
+
Contract behavior in 3.0:
|
|
96
96
|
|
|
97
97
|
- Non-default producer calls without prior `configure({ requestId })` throw `ProducerClientNotInitializedError`.
|
|
98
98
|
- `allowedHeaders` / `request` / `setDomain` are isolated by `requestId`.
|
|
@@ -104,7 +104,7 @@ Contract behavior in V3:
|
|
|
104
104
|
|
|
105
105
|
### 3) `server.telemetry` standardization and exporters
|
|
106
106
|
|
|
107
|
-
UltraModern.js
|
|
107
|
+
UltraModern.js 3.0 adds a unified telemetry contract:
|
|
108
108
|
|
|
109
109
|
- Config surface in `server.telemetry`.
|
|
110
110
|
- Internal registry with sampling, batching, redaction, backpressure handling.
|
|
@@ -147,7 +147,7 @@ Important V3 behavior:
|
|
|
147
147
|
|
|
148
148
|
### 4) Trace tags in SSR metrics
|
|
149
149
|
|
|
150
|
-
When an incoming request contains W3C `traceparent`, UltraModern.js
|
|
150
|
+
When an incoming request contains W3C `traceparent`, UltraModern.js 3.0 parses and injects:
|
|
151
151
|
|
|
152
152
|
- `trace_id`
|
|
153
153
|
- `span_id`
|
|
@@ -156,7 +156,7 @@ into SSR metric tags, improving correlation between app metrics and distributed
|
|
|
156
156
|
|
|
157
157
|
### 5) App-level MF SSR stable contract (`server.ssr.moduleFederationAppSSR`)
|
|
158
158
|
|
|
159
|
-
UltraModern.js
|
|
159
|
+
UltraModern.js 3.0 adds:
|
|
160
160
|
|
|
161
161
|
- Preferred flag: `server.ssr.moduleFederationAppSSR` (also works under `server.ssrByEntries`).
|
|
162
162
|
- Global compile-time env:
|
|
@@ -176,7 +176,7 @@ When MF SSR markers are detected in server-rendered entries, V3 now enables the
|
|
|
176
176
|
|
|
177
177
|
### 6) Contract-level test hardening in V3
|
|
178
178
|
|
|
179
|
-
UltraModern.js
|
|
179
|
+
UltraModern.js 3.0 adds dedicated coverage for:
|
|
180
180
|
|
|
181
181
|
- RsDoctor default behavior and opt-out semantics.
|
|
182
182
|
- BFF `requestId` generation/runtime isolation and fail-fast checks.
|
|
@@ -185,7 +185,7 @@ UltraModern.js V3 adds dedicated coverage for:
|
|
|
185
185
|
|
|
186
186
|
### 7) Module SDK contract + boundary anti-pattern guards
|
|
187
187
|
|
|
188
|
-
UltraModern.js
|
|
188
|
+
UltraModern.js 3.0 adds platform-boundary enforcement artifacts for module onboarding:
|
|
189
189
|
|
|
190
190
|
- Contract artifact: `docs/super-app-rfc-adr/contracts/module-sdk-contracts.json`
|
|
191
191
|
- Example manifest: `docs/super-app-rfc-adr/contracts/module-manifest.example.json`
|
|
@@ -200,7 +200,7 @@ UltraModern.js V3 adds platform-boundary enforcement artifacts for module onboar
|
|
|
200
200
|
|
|
201
201
|
### 8) Default precompression + precompressed static serving
|
|
202
202
|
|
|
203
|
-
UltraModern.js
|
|
203
|
+
UltraModern.js 3.0 changes default output and serving behavior for production web assets:
|
|
204
204
|
|
|
205
205
|
- `output.precompress` defaults to `true` in app-tools config.
|
|
206
206
|
- Build emits gzip (`.gz`) and brotli (`.br`) variants for static assets.
|
|
@@ -224,7 +224,7 @@ export default defineConfig({
|
|
|
224
224
|
|
|
225
225
|
### 9) First-class TanStack Router + Tailwind scaffolding
|
|
226
226
|
|
|
227
|
-
UltraModern.js
|
|
227
|
+
UltraModern.js 3.0 adds a first-class TanStack path in runtime and project scaffolding:
|
|
228
228
|
|
|
229
229
|
- Runtime/CLI support for TanStack route tree generation and SSR/stream integration.
|
|
230
230
|
- Create templates include TanStack-ready scaffolds and Tailwind starter wiring.
|
|
@@ -235,7 +235,7 @@ UltraModern.js V3 adds a first-class TanStack path in runtime and project scaffo
|
|
|
235
235
|
|
|
236
236
|
### 10) Effect-first MF data reliability and data-platform contracts
|
|
237
237
|
|
|
238
|
-
UltraModern.js
|
|
238
|
+
UltraModern.js 3.0 shipped additional reliability work aligned to Beads stream D:
|
|
239
239
|
|
|
240
240
|
- `@modern-js/plugin-bff` runtime path migrated to Effect v4.
|
|
241
241
|
- Effect-only MF data-fetch contract guidance (explicitly no Zod layer in this stream).
|
|
@@ -251,7 +251,7 @@ Reference materials:
|
|
|
251
251
|
|
|
252
252
|
### 11) Release and module certification gate model
|
|
253
253
|
|
|
254
|
-
|
|
254
|
+
UltraModern.js 3.0 includes a machine-verifiable gate model beyond baseline Modern.js 3.0:
|
|
255
255
|
|
|
256
256
|
- Gate profiles:
|
|
257
257
|
- `scripts/release-gates/rc-contract-profile.json`
|
|
@@ -273,7 +273,7 @@ This public UltraModern preset profile includes a machine-verifiable gate model
|
|
|
273
273
|
- `.github/workflows/ultramodern-gates.yml`
|
|
274
274
|
- runs `pnpm run ultramodern:check` and `pnpm run build`
|
|
275
275
|
|
|
276
|
-
## Not Part of UltraModern.js
|
|
276
|
+
## Not Part of UltraModern.js 3.0
|
|
277
277
|
|
|
278
278
|
The following are intentionally out of scope for this public V3 preset profile:
|
|
279
279
|
|
package/package.json
CHANGED
|
@@ -18,14 +18,14 @@
|
|
|
18
18
|
"modern",
|
|
19
19
|
"modern.js"
|
|
20
20
|
],
|
|
21
|
-
"version": "3.2.0-ultramodern.
|
|
21
|
+
"version": "3.2.0-ultramodern.1",
|
|
22
22
|
"publishConfig": {
|
|
23
23
|
"registry": "https://registry.npmjs.org/",
|
|
24
24
|
"access": "public"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"mermaid": "^11.15.0",
|
|
28
|
-
"@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.2.0-ultramodern.
|
|
28
|
+
"@modern-js/sandpack-react": "npm:@bleedingdev/modern-js-sandpack-react@3.2.0-ultramodern.1"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@rsbuild/plugin-sass": "1.5.2",
|
package/rspress.config.ts
CHANGED
|
@@ -5,11 +5,11 @@ import path from 'path';
|
|
|
5
5
|
import { pluginOpenGraph } from 'rsbuild-plugin-open-graph';
|
|
6
6
|
|
|
7
7
|
const docPath = path.join(__dirname, 'docs');
|
|
8
|
-
const siteTitle = '
|
|
8
|
+
const siteTitle = 'UltraModern.js 3.0';
|
|
9
9
|
const siteDescription =
|
|
10
|
-
'
|
|
10
|
+
'UltraModern.js 3.0 is a SuperApp framework forked from Modern.js for Effect, TanStack Router, SSR, BFF, and independently deployable Micro Verticals.';
|
|
11
11
|
const socialDescription =
|
|
12
|
-
'A
|
|
12
|
+
'A SuperApp framework for Effect, TanStack Router, SSR, BFF, and Micro Verticals.';
|
|
13
13
|
const socialImage =
|
|
14
14
|
'https://lf3-static.bytednsdoc.com/obj/eden-cn/nuvjhpqnuvr/modern-website/banner.jpeg';
|
|
15
15
|
|
|
@@ -76,7 +76,7 @@ export default defineConfig({
|
|
|
76
76
|
],
|
|
77
77
|
editLink: {
|
|
78
78
|
docRepoBaseUrl:
|
|
79
|
-
'https://github.com/
|
|
79
|
+
'https://github.com/BleedingDev/ultramodern.js/tree/main-ultramodern/packages/document/docs',
|
|
80
80
|
text: 'Edit this page on GitHub',
|
|
81
81
|
},
|
|
82
82
|
socialLinks: [
|
|
@@ -88,7 +88,7 @@ export default defineConfig({
|
|
|
88
88
|
{
|
|
89
89
|
icon: 'github',
|
|
90
90
|
mode: 'link',
|
|
91
|
-
content: 'https://github.com/
|
|
91
|
+
content: 'https://github.com/BleedingDev/ultramodern.js',
|
|
92
92
|
},
|
|
93
93
|
],
|
|
94
94
|
},
|
|
@@ -98,8 +98,7 @@ export default defineConfig({
|
|
|
98
98
|
},
|
|
99
99
|
replaceRules: [
|
|
100
100
|
{
|
|
101
|
-
//
|
|
102
|
-
// so we use a flag to define it.
|
|
101
|
+
// Preserve the upstream replacement contract for inherited docs.
|
|
103
102
|
search: /MAJOR_VERSION/g,
|
|
104
103
|
replace: '2',
|
|
105
104
|
},
|
|
@@ -136,15 +135,15 @@ export default defineConfig({
|
|
|
136
135
|
pluginSass(),
|
|
137
136
|
pluginOpenGraph({
|
|
138
137
|
// Note, title is page-specific
|
|
139
|
-
title: '
|
|
138
|
+
title: 'UltraModern.js 3.0 Home Page',
|
|
140
139
|
// While site name is site wide
|
|
141
140
|
siteName: siteTitle,
|
|
142
141
|
type: 'website',
|
|
143
|
-
url: 'https://
|
|
142
|
+
url: 'https://bleedingdev.github.io/ultramodern.js/',
|
|
144
143
|
image: socialImage,
|
|
145
144
|
description: socialDescription,
|
|
146
145
|
twitter: {
|
|
147
|
-
site: '@
|
|
146
|
+
site: '@BleedingDev',
|
|
148
147
|
card: 'summary_large_image',
|
|
149
148
|
},
|
|
150
149
|
}),
|
package/src/i18n/enUS.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
export const EN_US = {
|
|
2
2
|
// Announcement
|
|
3
3
|
announcementLabel: 'NEW',
|
|
4
|
-
announcementText: '
|
|
4
|
+
announcementText: 'UltraModern.js 3.0 is ready for SuperApps',
|
|
5
5
|
|
|
6
|
-
introduction: '
|
|
7
|
-
quickStart: '
|
|
6
|
+
introduction: 'UltraModern Guide',
|
|
7
|
+
quickStart: 'Start Building',
|
|
8
8
|
|
|
9
9
|
// Slogans
|
|
10
|
-
slogan:
|
|
10
|
+
slogan:
|
|
11
|
+
'The SuperApp framework for Effect, TanStack, SSR, BFF, and Micro Verticals',
|
|
11
12
|
secondSlogan1: 'Enjoy the development experience.',
|
|
12
13
|
secondSlogan2: 'Make innovation happen faster.',
|
|
13
14
|
|
package/src/i18n/zhCN.ts
CHANGED
|
@@ -3,13 +3,13 @@ import type { EN_US } from './enUS';
|
|
|
3
3
|
export const ZH_CN: Record<keyof typeof EN_US, string> = {
|
|
4
4
|
// Announcement
|
|
5
5
|
announcementLabel: 'NEW',
|
|
6
|
-
announcementText: '
|
|
6
|
+
announcementText: 'UltraModern.js 3.0 已面向 SuperApp 就绪',
|
|
7
7
|
|
|
8
|
-
introduction: '
|
|
9
|
-
quickStart: '
|
|
8
|
+
introduction: 'UltraModern 指南',
|
|
9
|
+
quickStart: '开始构建',
|
|
10
10
|
|
|
11
11
|
// Slogans
|
|
12
|
-
slogan: '
|
|
12
|
+
slogan: '面向 Effect、TanStack、SSR、BFF 与 Micro Verticals 的 SuperApp 框架',
|
|
13
13
|
secondSlogan1: '享受愉悦的开发体验,',
|
|
14
14
|
secondSlogan2: '让创新更快发生。',
|
|
15
15
|
|
package/src/pages/index.tsx
CHANGED
|
@@ -15,7 +15,7 @@ const HomepageHeader = () => {
|
|
|
15
15
|
<header className={clsx('hero hero--primary', styles.heroBanner)}>
|
|
16
16
|
<div className={styles.mask} />
|
|
17
17
|
<a
|
|
18
|
-
href={useUrl('/
|
|
18
|
+
href={useUrl('/guides/get-started/ultramodern')}
|
|
19
19
|
className={styles.announcement}
|
|
20
20
|
>
|
|
21
21
|
<span className={styles.announcementLabel}>
|
|
@@ -28,13 +28,13 @@ const HomepageHeader = () => {
|
|
|
28
28
|
</a>
|
|
29
29
|
<h1 className={styles.title}>
|
|
30
30
|
<span className={clsx([styles.titleGradient, styles.mainTitle])}>
|
|
31
|
-
|
|
31
|
+
UltraModern.js 3.0
|
|
32
32
|
</span>
|
|
33
33
|
<div>{t('slogan')}</div>
|
|
34
34
|
</h1>
|
|
35
35
|
<div className={styles.buttons}>
|
|
36
36
|
<a
|
|
37
|
-
href={useUrl('/guides/get-started/
|
|
37
|
+
href={useUrl('/guides/get-started/ultramodern')}
|
|
38
38
|
className={styles.leftButton}
|
|
39
39
|
>
|
|
40
40
|
{t('introduction')}
|