openxiangda 1.0.196 → 1.0.198
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/README.md +9 -6
- package/lib/application-environments.js +2 -0
- package/lib/cli.js +696 -51
- package/lib/release-plan.js +139 -14
- package/openxiangda-skills/SKILL.md +6 -6
- package/openxiangda-skills/references/workspace-state.md +1 -1
- package/openxiangda-skills/skills/openxiangda-core/SKILL.md +6 -6
- package/package.json +2 -1
- package/templates/openxiangda-react-spa/AGENTS.md +8 -10
- package/templates/openxiangda-react-spa/scripts/deploy.mjs +2 -2
- package/templates/sy-lowcode-app-workspace/AGENTS.md +1 -1
package/README.md
CHANGED
|
@@ -56,11 +56,12 @@ openxiangda environment status --json
|
|
|
56
56
|
# 仅限投产前环境角色重分类:原子交换两个既有应用的角色,应用数据和 Release Head 不移动
|
|
57
57
|
openxiangda environment swap --reason "投产前将现有业务应用调整为正式应用" --confirm-production --profile dev
|
|
58
58
|
openxiangda studio
|
|
59
|
-
#
|
|
60
|
-
openxiangda release
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
openxiangda release
|
|
59
|
+
# 环境托管应用日常发布:首次命令只部署预发并停止
|
|
60
|
+
openxiangda release ship --change mainline-release --profile dev
|
|
61
|
+
|
|
62
|
+
# 确认预发结果后,再以同一 candidate 晋级正式;验收备注可选
|
|
63
|
+
openxiangda release ship --change mainline-release --profile dev \
|
|
64
|
+
--confirm-production
|
|
64
65
|
openxiangda policy check
|
|
65
66
|
openxiangda resource explain public-access --json
|
|
66
67
|
openxiangda inspect app --profile dev --json
|
|
@@ -69,7 +70,9 @@ openxiangda app snapshot APP_XXXX --profile dev --json
|
|
|
69
70
|
|
|
70
71
|
User tokens are stored in `~/.openxiangda/profiles.json` with `0600` permissions. Shared workspace environment values, including `APP_OSS_*`, can live in `~/.openxiangda/.env` and are inherited by new workspaces. Project `.env` files still work and override the global defaults. Project state is stored in `.openxiangda/state.json` and contains only profile-specific resource IDs; CLI writes use a workspace lock plus atomic merge/rename so concurrent processes do not truncate another profile's state.
|
|
71
72
|
|
|
72
|
-
An environment-managed workspace keeps one logical application with independent `preproduction` and `production` targets. Each target owns its own `appType`, resource IDs, release heads, data, and side-effect policy; IDs must never be copied across targets. `release
|
|
73
|
+
An environment-managed workspace keeps one logical application with independent `preproduction` and `production` targets. Each target owns its own `appType`, resource IDs, release heads, data, and side-effect policy; IDs must never be copied across targets. `release ship` is deliberately two-phase: the first invocation seals the clean authoritative Git revision and deploys one immutable candidate only to preproduction; it always stops at `awaiting_production_confirmation`. A later invocation includes `--confirm-production` and promotes that exact candidate to production without rebuilding it. Real human acceptance is the recommended default; an optional `--acceptance-note` records it in the deployment evidence, but the platform does not force every low-risk or emergency release through a rigid approval gate. It is impossible to prepare and promote in one invocation. The lower-level `candidate/deploy/test/promote` commands remain available for recovery and diagnostics. Direct `release publish` is retained only for legacy, unmanaged workspaces and fails closed for either target of an environment-managed application.
|
|
74
|
+
|
|
75
|
+
Exact, non-destructive configuration selectors such as Data Views and permission groups are now sequenced automatically inside the same ship journal instead of requiring separate SDD changes. New forms are idempotently ensured per environment before their immutable FormRelease is staged. Unscoped resources and destructive configuration deletes remain fail-closed.
|
|
73
76
|
|
|
74
77
|
Existing workspaces connect to a server-side environment set with `environment attach`. If the legacy `profiles.<profile>` binding has the same `appType` as one environment, its resource mappings are copied only into that matching target (normally preproduction). Production starts with an empty mapping, and later writes update only the selected target even when both targets reuse one login profile.
|
|
75
78
|
|
|
@@ -359,6 +359,8 @@ function buildCandidateBundle(input) {
|
|
|
359
359
|
targets: input.targets,
|
|
360
360
|
files,
|
|
361
361
|
testPlanHash: sha256Canonical(testPlan),
|
|
362
|
+
prepublishVerificationHash:
|
|
363
|
+
input.prepublishVerificationHash || null,
|
|
362
364
|
openxiangdaVersion: input.openxiangdaVersion,
|
|
363
365
|
};
|
|
364
366
|
return {
|