@synopackageland/templates 0.23.0 → 0.25.0

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 CHANGED
@@ -9,6 +9,10 @@ shows the Go status-handler registration and a Vue notice for startup checks and
9
9
  storage failures. It targets the next SDK minor release and leaves default
10
10
  scaffold versions unchanged.
11
11
 
12
+ An opt-in [native UI plus DSM console example](examples/dual-entry-console/README.md)
13
+ shows the `console` declaration for an App that wraps a web service behind the
14
+ identity gateway and keeps its own settings in an administrator-only DSM window.
15
+
12
16
  | Template | What it adds |
13
17
  | --- | --- |
14
18
  | `native-go` | Base: `dsm-package.yaml`, Go module (`backend/cmd/{app,background-worker}`, `backend/internal/app`, `backend/internal/api/permissions.json`), plain `ui/`, i18n |
@@ -43,12 +47,12 @@ calls each one from the generated script of the same name (`synopkgland skill sh
43
47
  The placeholders `__PACKAGE__` (also the Go module path), `__DISPLAY_NAME__` and
44
48
  `__BACKGROUND_ENABLED__` are substituted by `init`.
45
49
 
46
- `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.23.0`; that line is
50
+ `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.25.0`; that line is
47
51
  the single source of the SDK version and `frontend/package.json` pins
48
52
  `@synopackageland/sdk` to the same version. Python and Node.js name it in
49
53
  `backend.sdk`, Rust in the `syno-pkg-land-app` tag of `backend/Cargo.toml`
50
- (and `Cargo.lock`); all of them pin 0.23.0. The Vue frontend pins
51
- `@synopackageland/ui` 0.12.5. SDK 0.23.0 accepts UI `>=0.10.1 <0.14.0`,
54
+ (and `Cargo.lock`); all of them pin 0.25.0. The Vue frontend pins
55
+ `@synopackageland/ui` 0.14.3. SDK 0.25.0 accepts UI `>=0.10.1 <0.14.3`,
52
56
  so no UI peer override is needed. Tests use jsdom 30 for UI floating-layer styles.
53
57
 
54
58
  ## Notice writer
@@ -89,7 +93,7 @@ The Python and Node.js combinations need `SYNOPKGLAND_SDK_DIR` (its `python/`,
89
93
  and `node/` built with `npm ci && npm run build`) for their App SDK, and the
90
94
  Rust ones fetch the SDK crate from it (`scripts/rust-env.sh`), so it must hold
91
95
  the tag `Cargo.lock` pins. The gate runs each language's tests on Linux in
92
- Docker (`scripts/bridge-linux-test.sh`: Python 3.8, Node.js 18, Rust).
96
+ Docker (`scripts/bridge-linux-test.sh`: Python 3.8, Node.js 22, Rust).
93
97
  CI is not available; `scripts/gate.sh` is the gate.
94
98
 
95
99
  Use `scripts/gate.sh --fast` while developing: it tests only the combinations
@@ -101,7 +105,7 @@ prints a failed job's whole log. On `SYNOPKGLAND_DOCKER_SSH` the Rust checks
101
105
  run in `synopkgland-gate-templates:<hash>` (`scripts/gate.Dockerfile`) with
102
106
  the host's shared `synopkgland-cache-cargo` volume, and wait for one of its
103
107
  two gate slots. There the Vue frontends' checks (`scripts/frontend-check.sh`:
104
- npm install, vitest, the build) run too, in the official `node:24.20.0` image
108
+ npm install, vitest, the build) run too, in the official `node:24.22.1` image
105
109
  with the shared `synopkgland-cache-npm` volume
106
110
  (`scripts/frontend-docker-checks.sh`; `SYNOPKGLAND_DOCKER_NPM_REGISTRY` to select an alternate registry), so the Mac's load cannot slow them.
107
111
  Without `SYNOPKGLAND_DOCKER_SSH` they run here.
@@ -146,6 +150,13 @@ Both Compose routes share `contract/app-launch.ts` for defaults and launcher typ
146
150
  An explicit `ui.launch` overrides this default. Native SDK Apps without a web
147
151
  service keep `dsm-window` when `ui.launch` is absent.
148
152
 
153
+ A native App that wraps a web service with `identity_gateway` and has its own
154
+ settings may declare `console: {}`. The main menu then shows the service UI
155
+ (`displayname`, a url launcher that opens a new tab) and an administrator-only
156
+ DSM window, "<displayname> for DSM", running the SDK UI; Package Center's Open
157
+ starts the console. Do not declare `ui.launch` or `portal` with it, and do not
158
+ redirect from the console to the service. Simple wrappers keep one icon.
159
+
149
160
  ## Compose identity and file access
150
161
 
151
162
  The CLI preserves upstream bytes and the SDK planner generates an override and one worker model. No dummy backend, UI or wrapper container is needed. Containers use the fixed package identity and do not inherit each signed-in user's File Station ACL. Shared Folder intent is explicit composeMounts, confirmed by an admin after install; activation is unsupported until official protected ACL/project control is verified. Fine egress allowlists are rejected; isolated/internet are the two declared levels. See the SDK Compose support matrix before deployment.
@@ -159,3 +170,5 @@ window already identifies an administrator and supplies `ctx.batch`. Rebuild
159
170
  with the current CLI and SDK to get that client. Older generated contexts keep
160
171
  the single-call path. Each batch result is handled separately; the shell stays
161
172
  visible while reads run. The backend permissions remain authoritative.
173
+
174
+ Native Node Apps use the official [`Node.js_v22`](https://www.synology.com/en-us/dsm/packages/Node.js_v22) package. The official release history lists DSM 7 series; installation also depends on the model and DSM version supported by Package Center. This dependency does not certify all DSM 7 releases or install Node.js on unsupported models.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.23.0",
3
+ "version": "0.25.0",
4
4
  "description": "Project templates for synopkgland init: native-go, native-python, native-node and native-rust (plain or Vue, with jobs, delegate and root-ops overlays), binary and compose.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -348,3 +348,10 @@ service: omitted `ui.launch` resolves to `new-page`, without Application Portal.
348
348
  Both Compose routes share `contract/app-launch.ts` for defaults and launcher types.
349
349
  An explicit `ui.launch` overrides this default. Native SDK Apps without a web
350
350
  service keep `dsm-window` when `ui.launch` is absent.
351
+
352
+ A native App that wraps a web service with `identity_gateway` and has its own
353
+ settings may declare `console: {}`. The main menu then shows the service UI
354
+ (`displayname`, a url launcher that opens a new tab) and an administrator-only
355
+ DSM window, "<displayname> for DSM", running the SDK UI; Package Center's Open
356
+ starts the console. Do not declare `ui.launch` or `portal` with it, and do not
357
+ redirect from the console to the service. Simple wrappers keep one icon.
@@ -14,7 +14,7 @@ compose:
14
14
  web: {service: web, port: 8080, health: {path: /, status: 200}}
15
15
  network: {egress: isolated}
16
16
  identity_gateway:
17
- sdk: 0.23.0
17
+ sdk: 0.25.0
18
18
  mode: none
19
19
  listen: {http: 28000}
20
20
  # Web Apps default to new-page through the shared app-launch resolver.
@@ -1,6 +1,6 @@
1
1
  Native Go package build dependencies
2
2
 
3
- github.com/synopackageland/syno-pkg-land-sdk v0.23.0 (MIT)
3
+ github.com/synopackageland/syno-pkg-land-sdk v0.25.0 (MIT)
4
4
 
5
5
  Copyright (c) 2026 synopkgland
6
6
 
@@ -2,8 +2,8 @@ module __PACKAGE__
2
2
 
3
3
  go 1.25.0
4
4
 
5
- toolchain go1.26.9
5
+ toolchain go1.26.10
6
6
 
7
- require github.com/synopackageland/syno-pkg-land-sdk v0.23.0
7
+ require github.com/synopackageland/syno-pkg-land-sdk v0.25.0
8
8
 
9
9
  require golang.org/x/sys v0.44.0 // indirect
@@ -1,4 +1,4 @@
1
- github.com/synopackageland/syno-pkg-land-sdk v0.23.0 h1:042BZ1gfiiM/wS/pX6Os2NADmgGl4rEaMdXbYgv5IWQ=
2
- github.com/synopackageland/syno-pkg-land-sdk v0.23.0/go.mod h1:vixf5Lo4PssQDGU5zam0Mb5sFu9wPUP4Ck36BMAVbNc=
1
+ github.com/synopackageland/syno-pkg-land-sdk v0.25.0 h1:6h3kcxWMl6hsh98j4p9hyekXchnNuwfnRb3D8eZY9rs=
2
+ github.com/synopackageland/syno-pkg-land-sdk v0.25.0/go.mod h1:8GwREGbczc8mAk4Gv8FUHaukXXCUstjzkovQrNV59Cc=
3
3
  golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
4
4
  golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
@@ -7,8 +7,8 @@
7
7
  "name": "native-dsm-vue-app",
8
8
  "dependencies": {
9
9
  "@lucide/vue": "1.48.0",
10
- "@synopackageland/sdk": "0.23.0",
11
- "@synopackageland/ui": "0.12.5",
10
+ "@synopackageland/sdk": "0.25.0",
11
+ "@synopackageland/ui": "0.14.3",
12
12
  "vue": "3.5.43"
13
13
  },
14
14
  "devDependencies": {
@@ -1152,13 +1152,13 @@
1152
1152
  }
1153
1153
  },
1154
1154
  "node_modules/@synopackageland/sdk": {
1155
- "version": "0.23.0",
1156
- "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.23.0.tgz",
1157
- "integrity": "sha512-GjTGQzqXpD12zvrhCWpL+Yx08HGsVPkPNxjzU25brhhvlQ+0/OZUEaDF9fv1JKgAgv0zUdRzcRoD8nZJ5WV+YQ==",
1155
+ "version": "0.25.0",
1156
+ "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.25.0.tgz",
1157
+ "integrity": "sha512-bZC8n3L3NX3dUiO2A64XumvUOdy6GZIzL57pJlZGhSzplMw044gzn3w2tw3DPsy7D+qdguMfx8m+RJh+5qnpQg==",
1158
1158
  "license": "MIT",
1159
1159
  "peerDependencies": {
1160
1160
  "@lucide/vue": "^1.48.0",
1161
- "@synopackageland/ui": ">=0.10.1 <0.14.0",
1161
+ "@synopackageland/ui": ">=0.10.1 <0.15.0",
1162
1162
  "vue": "^3.5.0"
1163
1163
  },
1164
1164
  "peerDependenciesMeta": {
@@ -1171,9 +1171,9 @@
1171
1171
  }
1172
1172
  },
1173
1173
  "node_modules/@synopackageland/ui": {
1174
- "version": "0.12.5",
1175
- "resolved": "https://registry.npmjs.org/@synopackageland/ui/-/ui-0.12.5.tgz",
1176
- "integrity": "sha512-EwsRxFVBRi3ip6EKhuTc6LwEFFQjdppoMWb+pHPb6GfL2JV7YszrzEhyo8KzpPnBI2mHnxrXc6ObGNEJTr4Oyg==",
1174
+ "version": "0.14.3",
1175
+ "resolved": "https://registry.npmjs.org/@synopackageland/ui/-/ui-0.14.3.tgz",
1176
+ "integrity": "sha512-AB7KWt44zj49HVnqsR8gDOyX0AtF3w35SSGVY4u66BgVqGRldUWu4QnqiYdFTdCGWl0ZDGLUQ7JHt7HrYARUyA==",
1177
1177
  "license": "MIT",
1178
1178
  "dependencies": {
1179
1179
  "@internationalized/date": "3.12.4",
@@ -8,8 +8,8 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@lucide/vue": "1.48.0",
11
- "@synopackageland/sdk": "0.23.0",
12
- "@synopackageland/ui": "0.12.5",
11
+ "@synopackageland/sdk": "0.25.0",
12
+ "@synopackageland/ui": "0.14.3",
13
13
  "vue": "3.5.43"
14
14
  },
15
15
  "devDependencies": {
@@ -49,8 +49,8 @@ backend:
49
49
  runtime: node
50
50
  dir: backend/app
51
51
  entry: main.js
52
- sdk: 0.23.0
53
- node: { package: Node.js_v20 }
52
+ sdk: 0.25.0
53
+ node: { package: Node.js_v22 }
54
54
 
55
55
  ui:
56
56
  # Non-UI-SDK frontends open a full page; Portal is a separate opt-in.
@@ -47,7 +47,7 @@ backend:
47
47
  runtime: python
48
48
  dir: backend/app
49
49
  entry: main.py
50
- sdk: 0.23.0
50
+ sdk: 0.25.0
51
51
 
52
52
  ui:
53
53
  # Non-UI-SDK frontends open a full page; Portal is a separate opt-in.
@@ -104,8 +104,8 @@ dependencies = [
104
104
 
105
105
  [[package]]
106
106
  name = "syno-pkg-land-app"
107
- version = "0.23.0"
108
- source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.23.0#7c16b531829def1165c76165228f9485d124d966"
107
+ version = "0.25.0"
108
+ source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.25.0#0bf60be0936b09e246251ed5bd811bf1615a815b"
109
109
  dependencies = [
110
110
  "libc",
111
111
  "serde",
@@ -9,7 +9,7 @@ libc = "0.2"
9
9
  serde = { version = "1", features = ["derive"] }
10
10
  serde_json = "1"
11
11
  # The SDK version is the tag; `synopkgland check` reads it from Cargo.lock.
12
- syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.23.0" }
12
+ syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.25.0" }
13
13
 
14
14
  [profile.release]
15
15
  # A handler panic becomes an "internal" reply; abort would end the App without one.