@synopackageland/cli 0.10.10 → 0.10.12
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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.10.12 (2026-10-15)
|
|
4
|
+
|
|
5
|
+
- Generated Apps use templates 0.10.13, SDK 0.10.12 and UI 0.9.10, including PageInfo, responsive page headers and confirmation before removing a Portal page's own entry.
|
|
6
|
+
- Executor and lifecycle digests are unchanged from SDK 0.10.11 for all three architectures.
|
|
7
|
+
|
|
8
|
+
繁中摘要:更新 templates 至 0.10.13、SDK 至 0.10.12、UI 至 0.9.10;帶入頁面附註、標題換行與入口移除確認。三架構 executor/lifecycle digest 不變。
|
|
9
|
+
|
|
10
|
+
## 0.10.11 (2026-10-15)
|
|
11
|
+
|
|
12
|
+
- Bridge App builds with a manifest minimum below DSM 7.2 inject executor portal mode so Rust, Python and Node Apps can use the fixed entry enable/remove routes on DSM 7.1 and 7.4.
|
|
13
|
+
- Pin templates 0.10.12 and SDK 0.10.11, including the three updated executor digests. Generated Vue Apps use UI 0.9.9.
|
|
14
|
+
|
|
15
|
+
繁中摘要:manifest 最低 DSM 低於 7.2 時,bridge App 建置帶入 executor portal mode,提供 DSM 7.1/7.4 的入口啟用與移除;更新 templates 0.10.12、SDK 0.10.11 及三架構 executor digest,UI 保持 0.9.9。
|
|
16
|
+
|
|
3
17
|
## 0.10.10 (2026-10-15)
|
|
4
18
|
|
|
5
19
|
- Uses SDK 0.10.10, templates 0.10.11 and UI 0.9.9. `init` pins these versions for the generated project, and the executor digest table pins SDK 0.10.10 for x86_64, aarch64 and armv7.
|
|
@@ -119,5 +119,27 @@
|
|
|
119
119
|
"armv7": "cafc97c89f5645c14a8cf31d6d9f258394ed6f2d086478a7aebd04d57c274b4e"
|
|
120
120
|
},
|
|
121
121
|
"goToolchain": "go1.26.9"
|
|
122
|
+
},
|
|
123
|
+
"0.10.11": {
|
|
124
|
+
"x86_64": "7fe3118a8de76b2d83ff4410ce76dd1aca791388286a0929602beaf4536a7194",
|
|
125
|
+
"aarch64": "0d44c4da7c464d62fcdba8d0ea5f65b935fc505e0faaa8bd61bbb5ec4deb1cea",
|
|
126
|
+
"armv7": "720a321c56669f31bc289e303627b9b88a56b9ca195ce837821639479491ab8f",
|
|
127
|
+
"lifecycle": {
|
|
128
|
+
"x86_64": "d65500c4f04713a32b45d360059281391acfa5e00ee24895fdd2de7b82735372",
|
|
129
|
+
"aarch64": "94f6cd119186ff482b8aea56541dd1f9d53c147566bc1efdca6f5a1c86198331",
|
|
130
|
+
"armv7": "cafc97c89f5645c14a8cf31d6d9f258394ed6f2d086478a7aebd04d57c274b4e"
|
|
131
|
+
},
|
|
132
|
+
"goToolchain": "go1.26.9"
|
|
133
|
+
},
|
|
134
|
+
"0.10.12": {
|
|
135
|
+
"x86_64": "7fe3118a8de76b2d83ff4410ce76dd1aca791388286a0929602beaf4536a7194",
|
|
136
|
+
"aarch64": "0d44c4da7c464d62fcdba8d0ea5f65b935fc505e0faaa8bd61bbb5ec4deb1cea",
|
|
137
|
+
"armv7": "720a321c56669f31bc289e303627b9b88a56b9ca195ce837821639479491ab8f",
|
|
138
|
+
"lifecycle": {
|
|
139
|
+
"x86_64": "d65500c4f04713a32b45d360059281391acfa5e00ee24895fdd2de7b82735372",
|
|
140
|
+
"aarch64": "94f6cd119186ff482b8aea56541dd1f9d53c147566bc1efdca6f5a1c86198331",
|
|
141
|
+
"armv7": "cafc97c89f5645c14a8cf31d6d9f258394ed6f2d086478a7aebd04d57c274b4e"
|
|
142
|
+
},
|
|
143
|
+
"goToolchain": "go1.26.9"
|
|
122
144
|
}
|
|
123
145
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { portalByExecutor } from "../build-spk/dsm-version.js";
|
|
1
2
|
import { goChildEnv } from "../runtime/go-env.js";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { PINNED_GO_HINT, pinnedGoBuildEnv, pinnedGoProblem } from "../build-spk/go-toolchain.js";
|
|
@@ -26,6 +27,7 @@ export async function buildBridgeRuntime(m, arch, work, run, digests) {
|
|
|
26
27
|
`-X main.packageID=${m.package}`,
|
|
27
28
|
`-X main.manifestDigest=${digests.manifest}`,
|
|
28
29
|
`-X main.permissionsDigest=${digests.permissions}`,
|
|
30
|
+
...(m.portal && portalByExecutor(m.os_min_ver) ? ["-X main.portalMode=executor"] : []),
|
|
29
31
|
`-X ${SDK_MODULE}/api.expectedSDKPermissionsDigest=${m.apiSDKPermissionsDigest}`,
|
|
30
32
|
].join(" ");
|
|
31
33
|
const result = await run("go", ["build", "-trimpath", "-buildvcs=false", "-ldflags", ldflags, "-o", out, RUNTIME_MAIN], {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.12",
|
|
4
4
|
"description": "Syno Package Land Developer Kit CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepublishOnly": "npm run build"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@synopackageland/templates": "0.10.
|
|
28
|
+
"@synopackageland/templates": "0.10.13",
|
|
29
29
|
"ajv": "^8.17.1",
|
|
30
30
|
"commander": "^13.1.0",
|
|
31
31
|
"tar": "^7.4.3",
|
|
@@ -22,7 +22,7 @@ Activate: DSM owns the saved setting. Administrators use the app's portal panel
|
|
|
22
22
|
|
|
23
23
|
Read: ordinary users call the Go backend's `portal.status` (`authenticated`), which reads `/var/packages/<package>/etc/AppPortal.json` read-only, bounded (64 KiB, no symlinks, one JSON object, matching app id). Anything else is `unavailable` and the UI shows "ask an administrator". A binary CGI must implement the same `{state, alias}` answer itself or ordinary users never see the link.
|
|
24
24
|
|
|
25
|
-
Executor mode (7.1-42661 ≤ os_min_ver < 7.2-64570): no web-config resource, no `etc/portal.*`, no alias wizard step or alias lifecycle. The executor policy carries `portal: {application: <displayname>, alias}` and the operations `portal.register` and `portal.unregister`; the executor writes `/usr/syno/etc/www/app.d/<package>.{json,mustache}`. The package name must match `^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$` (≤ 64) and displayname be 1–64 characters without control characters, or build fails with `STANDALONE_PORTAL_ENTRY_INVALID`. The CGI is built with `-X main.portal=executor`: `portal.status` adds `entry` (`registered`, `unregistered`, `cleanup-required`; an unreadable executor is `unavailable`), and `portal.register` / `portal.unregister` take the administrator's DSM session and return the fresh status. `ctx.portal.register()` / `unregister()` call them; the plain panel shows text and "Enable entry" while unregistered, the alias form and "Remove entry" once registered, text and "Remove entry" when cleanup is required, and no entry buttons for non-administrators. Executor refusals keep their code (`PORTAL_FAILED`). Needs templates with the executor portal routes (after 0.9.4) and an SDK with the `portal` entry API (after 0.9.5).
|
|
25
|
+
Executor mode (7.1-42661 ≤ os_min_ver < 7.2-64570): no web-config resource, no `etc/portal.*`, no alias wizard step or alias lifecycle. The executor policy carries `portal: {application: <displayname>, alias}` and the operations `portal.register` and `portal.unregister`; the executor writes `/usr/syno/etc/www/app.d/<package>.{json,mustache}`. The package name must match `^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$` (≤ 64) and displayname be 1–64 characters without control characters, or build fails with `STANDALONE_PORTAL_ENTRY_INVALID`. The native Go CGI is built with `-X main.portal=executor`; the Python/Node/Rust bridge CGI uses `-X main.portalMode=executor`: `portal.status` adds `entry` (`registered`, `unregistered`, `cleanup-required`; an unreadable executor is `unavailable`), and `portal.register` / `portal.unregister` take the administrator's DSM session and return the fresh status. `ctx.portal.register()` / `unregister()` call them; the plain panel shows text and "Enable entry" while unregistered, the alias form and "Remove entry" once registered, text and "Remove entry" when cleanup is required, and no entry buttons for non-administrators. Executor refusals keep their code (`PORTAL_FAILED`). Needs templates with the executor portal routes (after 0.9.4) and an SDK with the `portal` entry API (after 0.9.5).
|
|
26
26
|
|
|
27
27
|
DSM floor: os_min_ver must be 7.1-42661 or later; below 7.2-64570 the executor registers the entry (above). DSM 7.1 marks the web-config worker Synology-only, so it refuses an unsigned SPK whose conf/resource carries web-config (Package Center error 320, "non-synology-signed package should not use internal worker"; seen on 7.1.1-42962). synopkg from DSM 7.2 on drops that mark, the only change to its worker table; the 7.2 floor comes from that source and is not yet verified on a 7.2 NAS. 7.3.2-86009 and 7.4 install it. Below 7.1 validate/build fail with `STANDALONE_PORTAL_MIN_DSM`, `--min-dsm` cannot go below 7.1, `add portal` raises a lower os_min_ver to 7.1-42661, and inspect flags an INFO os_min_ver below the floor of the SPK's mode. Fix: raise os_min_ver or remove the portal.
|
|
28
28
|
|