@synopackageland/templates 0.35.1 → 0.35.3
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 +24 -11
- package/package.json +1 -1
- package/templates/compose/dsm-package.yaml +10 -2
- package/templates/native-go/README.md +6 -5
- package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +1 -1
- package/templates/native-go/backend/go.mod +1 -1
- package/templates/native-go/backend/go.sum +2 -2
- package/templates/native-go/backend/internal/app/background_test.go +1 -1
- package/templates/native-go-vue/frontend/package-lock.json +4 -4
- package/templates/native-go-vue/frontend/package.json +1 -1
- package/templates/native-node/README.md +2 -2
- package/templates/native-node/dsm-package.yaml +1 -1
- package/templates/native-python/README.md +2 -2
- package/templates/native-python/dsm-package.yaml +1 -1
- package/templates/native-rust/README.md +2 -2
- package/templates/native-rust/backend/Cargo.lock +2 -2
- package/templates/native-rust/backend/Cargo.toml +1 -1
package/README.md
CHANGED
|
@@ -22,8 +22,8 @@ daemon:
|
|
|
22
22
|
window_seconds: 300
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
-
Templates 0.35.
|
|
26
|
-
Use CLI 0.41.
|
|
25
|
+
Templates 0.35.3 pin UI 0.16.1 and SDK 0.38.2 in native and Compose projects.
|
|
26
|
+
Use CLI 0.41.2. The Vue `AppShell` shows a
|
|
27
27
|
non-blocking **Reload** notice when an upgrade replaced the UI an open page
|
|
28
28
|
loaded. Go Apps select
|
|
29
29
|
their controller from their Go SDK requirement; an identity gateway selects it
|
|
@@ -81,19 +81,19 @@ calls each one from the generated script of the same name (`synopkgland skill sh
|
|
|
81
81
|
The placeholders `__PACKAGE__` (also the Go module path), `__DISPLAY_NAME__` and
|
|
82
82
|
`__BACKGROUND_ENABLED__` are substituted by `init`.
|
|
83
83
|
|
|
84
|
-
`backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.38.
|
|
84
|
+
`backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.38.2`; that line is
|
|
85
85
|
the single source of the SDK version and `frontend/package.json` pins
|
|
86
86
|
`@synopackageland/sdk` to the same version. Python and Node.js name it in
|
|
87
87
|
`backend.sdk`, Rust in the `syno-pkg-land-app` tag of `backend/Cargo.toml`
|
|
88
|
-
(and `Cargo.lock`); all of them pin 0.38.
|
|
89
|
-
`@synopackageland/ui` 0.16.1. SDK 0.38.
|
|
88
|
+
(and `Cargo.lock`); all of them pin 0.38.2. The Vue frontend pins
|
|
89
|
+
`@synopackageland/ui` 0.16.1. SDK 0.38.2 accepts UI `>=0.10.1 <0.18.0`,
|
|
90
90
|
so no UI peer override is needed. Tests use jsdom 30 for UI floating-layer styles.
|
|
91
91
|
|
|
92
92
|
Interactive NAS file operations use same-origin browser calls.
|
|
93
93
|
Custom file handlers use the SDK's
|
|
94
|
-
[session transport migration](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
95
|
-
CLI 0.41.
|
|
96
|
-
executor/v0.32.0 and its executor digests. Its `~0.35.
|
|
94
|
+
[session transport migration](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/dsm-session-transport.md).
|
|
95
|
+
CLI 0.41.2 reads SDK 0.38.2's release manifest, which names immutable
|
|
96
|
+
executor/v0.32.0 and its executor digests. Its `~0.35.2` templates
|
|
97
97
|
dependency selects this release.
|
|
98
98
|
|
|
99
99
|
Every App method must appear in the permissions table, including methods whose
|
|
@@ -108,7 +108,7 @@ Keep punctuation between sentences and intentional loading ellipses.
|
|
|
108
108
|
|
|
109
109
|
## Request deadlines and background work
|
|
110
110
|
|
|
111
|
-
SDK/App 0.38.
|
|
111
|
+
SDK/App 0.38.2 defaults to 300 seconds for cooperative requests and 302 seconds
|
|
112
112
|
for the TS client and generated DSM window. The CLI reads the selected SDK's
|
|
113
113
|
timeout spec; `backend.timeout_seconds` explicitly overrides it for native
|
|
114
114
|
backends, and an earlier parent deadline still wins. Go assembly should fall
|
|
@@ -140,7 +140,7 @@ caps, approved root policy/program budgets and credential lifetimes retain
|
|
|
140
140
|
their existing limits; long root work uses `root.start` / `root.jobs.*`.
|
|
141
141
|
The independent ctl transport keeps its 62-second default: use an explicit
|
|
142
142
|
`--timeout` for long synchronous calls, or an existing nonblocking job flow.
|
|
143
|
-
See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
143
|
+
See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/request-deadlines.md).
|
|
144
144
|
|
|
145
145
|
## Hyper Backup
|
|
146
146
|
|
|
@@ -299,4 +299,17 @@ The bridge examples expose submission, lookup and cancellation through
|
|
|
299
299
|
|
|
300
300
|
## External access
|
|
301
301
|
|
|
302
|
-
With CLI 0.40.0 and SDK 0.38.
|
|
302
|
+
With CLI 0.40.0 and SDK 0.38.2, a gateway App may declare `identity_gateway.external_access: {connect: optional, origin_change: confirm, single_origin: true}` for an upstream that signs in on one fixed URL. The policy is forwarded to the packaged gateway. A single-origin App's `manual_origin` accepts an explicit HTTPS port; the `external-origin` installation setting remains restricted to port 443. The DSM launcher selects a provider destination, probes `/_spl/ping` for up to eight seconds, and explains failures before offering **Open anyway**. A configured single-origin App always opens its primary external origin.
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
Compose templates declare an app-named dedicated shared folder by default. DSM
|
|
306
|
+
creates it and grants the package account the declared permission. The optional
|
|
307
|
+
existing-folder field must pass the CLI's folder and access validation. Native
|
|
308
|
+
Apps that need shared data use the same `install.sharedFolder` declaration with
|
|
309
|
+
`mode: dedicated`, a package-specific `name`, `key` and `permission`.
|
|
310
|
+
|
|
311
|
+
The Compose gateway also enables `install.ports: true`: its manifest listener
|
|
312
|
+
ports prefill the DSM wizard, selected values flow through the SDK-generated
|
|
313
|
+
configuration and DSM service definition, and upgrades retain the selection.
|
|
314
|
+
Changing ports uses reinstall. Declare `{port: gateway_https}` runtime bindings
|
|
315
|
+
when an upstream application needs its public port in its own configuration.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/templates",
|
|
3
|
-
"version": "0.35.
|
|
3
|
+
"version": "0.35.3",
|
|
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": {
|
|
@@ -9,6 +9,13 @@ maintainer: Your Name
|
|
|
9
9
|
os_min_ver: "7.2.1-69057"
|
|
10
10
|
arches: [x86_64, aarch64]
|
|
11
11
|
capabilities: {}
|
|
12
|
+
install:
|
|
13
|
+
ports: true
|
|
14
|
+
sharedFolder:
|
|
15
|
+
mode: dedicated
|
|
16
|
+
key: data
|
|
17
|
+
name: __PACKAGE__
|
|
18
|
+
permission: rw
|
|
12
19
|
# Hyper Backup application backup is off for Compose Apps: their data lives
|
|
13
20
|
# in container volumes, which it does not cover.
|
|
14
21
|
compose:
|
|
@@ -16,10 +23,11 @@ compose:
|
|
|
16
23
|
web: {service: web, port: 8080, health: {path: /, status: 200}}
|
|
17
24
|
network: {egress: isolated}
|
|
18
25
|
identity_gateway:
|
|
19
|
-
sdk: 0.38.
|
|
26
|
+
sdk: 0.38.2
|
|
20
27
|
mode: none
|
|
21
28
|
listen: {http: 28000}
|
|
22
29
|
# Web Apps default to new-page through the shared app-launch resolver.
|
|
23
30
|
# ui: {launch: new-page}
|
|
24
31
|
# Containers use a fixed package UID, never the signed-in user's File Station ACL.
|
|
25
|
-
#
|
|
32
|
+
# Bind shared data with compose.shares, select: install, key: data and the same permission.
|
|
33
|
+
# The dedicated share is created by DSM; an optional existing share must pass wizard validation.
|
|
@@ -17,7 +17,7 @@ DSM main menu → DSM window (ui/app.js)
|
|
|
17
17
|
|
|
18
18
|
## Requests and long work
|
|
19
19
|
|
|
20
|
-
SDK/App 0.38.
|
|
20
|
+
SDK/App 0.38.2 defaults to 300-second requests and a 302-second browser wait.
|
|
21
21
|
Explicit `backend.timeout_seconds` and earlier parent deadlines still apply;
|
|
22
22
|
rebuild the App to use the new SDK. For long NAS work, enable the existing jobs
|
|
23
23
|
capability: return admission and the original job ID promptly, execute in the
|
|
@@ -27,7 +27,7 @@ last queued/running state intact. After a lost admission reply, reuse the same
|
|
|
27
27
|
idempotency key and input instead of replaying a mutation with a new key.
|
|
28
28
|
Jobs default to 30 minutes; approved executor limits remain separate. ctl keeps
|
|
29
29
|
its 62-second transport default; use an explicit `--timeout` or an existing
|
|
30
|
-
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
30
|
+
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/request-deadlines.md).
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
33
33
|
|
|
@@ -393,9 +393,10 @@ or deletes outside the package's own folders.
|
|
|
393
393
|
|
|
394
394
|
## Shared Folder access
|
|
395
395
|
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
396
|
+
Use `install.sharedFolder: {mode: dedicated, key: media, name: __PACKAGE__, permission: rw}`
|
|
397
|
+
for shared data. DSM creates the app-specific folder and grants the declared
|
|
398
|
+
package-account permission. The wizard defaults to it and validates any existing
|
|
399
|
+
folder choice before Next. The backend reports the real state: the `sharedfolder.status` operation (administrators only
|
|
399
400
|
unless you change `permissions.json`) returns each folder with what the App needs, what the
|
|
400
401
|
package account has (`none`, `read`, `write`) and a `state` (`ready`, `pending`, `missing`,
|
|
401
402
|
`ambiguous`). `cfg.SharedFolderPath(key)` returns the path or an error that names the
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
github.com/synopackageland/syno-pkg-land-sdk v0.38.
|
|
2
|
-
github.com/synopackageland/syno-pkg-land-sdk v0.38.
|
|
1
|
+
github.com/synopackageland/syno-pkg-land-sdk v0.38.2 h1:UJh6tbUxhmcRdy8Y6qqJYHcxZtYkShE9UxtXjbN5vV8=
|
|
2
|
+
github.com/synopackageland/syno-pkg-land-sdk v0.38.2/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=
|
|
@@ -113,7 +113,7 @@ func TestBackgroundStatusReportsLimitsAndWorker(t *testing.T) {
|
|
|
113
113
|
t.Fatalf("%s %v", code, out)
|
|
114
114
|
}
|
|
115
115
|
limits := d["limits"].(map[string]any)
|
|
116
|
-
if limits["maxInputBytes"].(float64) != 512*1024 || limits["maxQueued"].(float64) != 16 || limits["maxTotalBytes"].(float64) != 16<<20 || limits["jobTimeoutSeconds"].(float64) != 60 {
|
|
116
|
+
if limits["maxInputBytes"].(float64) != 512*1024 || limits["maxQueued"].(float64) != 16 || limits["maxTotalBytes"].(float64) != 16<<20 || limits["jobTimeoutSeconds"].(float64) != 30*60 {
|
|
117
117
|
t.Fatalf("limits: %v", limits)
|
|
118
118
|
}
|
|
119
119
|
info := background.WorkerInfo{PID: os.Getpid(), UID: os.Getuid(), Username: "pkg"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"name": "native-dsm-vue-app",
|
|
8
8
|
"dependencies": {
|
|
9
9
|
"@lucide/vue": "1.48.0",
|
|
10
|
-
"@synopackageland/sdk": "0.38.
|
|
10
|
+
"@synopackageland/sdk": "0.38.2",
|
|
11
11
|
"@synopackageland/ui": "0.16.1",
|
|
12
12
|
"vue": "3.5.43"
|
|
13
13
|
},
|
|
@@ -1152,9 +1152,9 @@
|
|
|
1152
1152
|
}
|
|
1153
1153
|
},
|
|
1154
1154
|
"node_modules/@synopackageland/sdk": {
|
|
1155
|
-
"version": "0.38.
|
|
1156
|
-
"resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.38.
|
|
1157
|
-
"integrity": "sha512-
|
|
1155
|
+
"version": "0.38.2",
|
|
1156
|
+
"resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.38.2.tgz",
|
|
1157
|
+
"integrity": "sha512-ZSZKn5T8TbOpUF+PYMgq0IU+czw9HG4O9C4JuCeaT8Xoa3gMNiHbv6N1+VdRfxm46GtbtFNHzdQBoZ3mbmvKKg==",
|
|
1158
1158
|
"license": "MIT",
|
|
1159
1159
|
"peerDependencies": {
|
|
1160
1160
|
"@lucide/vue": "^1.48.0",
|
|
@@ -17,7 +17,7 @@ DSM main menu → DSM window (ui/app.js)
|
|
|
17
17
|
|
|
18
18
|
## Requests and long work
|
|
19
19
|
|
|
20
|
-
SDK/App 0.38.
|
|
20
|
+
SDK/App 0.38.2 defaults to 300-second requests and a 302-second browser wait.
|
|
21
21
|
Explicit `backend.timeout_seconds` and earlier parent deadlines still apply;
|
|
22
22
|
rebuild the App to use the new SDK. For long NAS work, enable the existing jobs
|
|
23
23
|
capability: return admission and the original job ID promptly, execute in the
|
|
@@ -27,7 +27,7 @@ last queued/running state intact. After a lost admission reply, reuse the same
|
|
|
27
27
|
idempotency key and input instead of replaying a mutation with a new key.
|
|
28
28
|
Jobs default to 30 minutes; approved executor limits remain separate. ctl keeps
|
|
29
29
|
its 62-second transport default; use an explicit `--timeout` or an existing
|
|
30
|
-
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
30
|
+
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/request-deadlines.md).
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
33
33
|
|
|
@@ -17,7 +17,7 @@ DSM main menu → DSM window (ui/app.js)
|
|
|
17
17
|
|
|
18
18
|
## Requests and long work
|
|
19
19
|
|
|
20
|
-
SDK/App 0.38.
|
|
20
|
+
SDK/App 0.38.2 defaults to 300-second requests and a 302-second browser wait.
|
|
21
21
|
Explicit `backend.timeout_seconds` and earlier parent deadlines still apply;
|
|
22
22
|
rebuild the App to use the new SDK. For long NAS work, enable the existing jobs
|
|
23
23
|
capability: return admission and the original job ID promptly, execute in the
|
|
@@ -27,7 +27,7 @@ last queued/running state intact. After a lost admission reply, reuse the same
|
|
|
27
27
|
idempotency key and input instead of replaying a mutation with a new key.
|
|
28
28
|
Jobs default to 30 minutes; approved executor limits remain separate. ctl keeps
|
|
29
29
|
its 62-second transport default; use an explicit `--timeout` or an existing
|
|
30
|
-
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
30
|
+
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/request-deadlines.md).
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
33
33
|
|
|
@@ -17,7 +17,7 @@ DSM main menu → DSM window (ui/app.js)
|
|
|
17
17
|
|
|
18
18
|
## Requests and long work
|
|
19
19
|
|
|
20
|
-
SDK/App 0.38.
|
|
20
|
+
SDK/App 0.38.2 defaults to 300-second requests and a 302-second browser wait.
|
|
21
21
|
Explicit `backend.timeout_seconds` and earlier parent deadlines still apply;
|
|
22
22
|
rebuild the App to use the new SDK. For long NAS work, enable the existing jobs
|
|
23
23
|
capability: return admission and the original job ID promptly, execute in the
|
|
@@ -27,7 +27,7 @@ last queued/running state intact. After a lost admission reply, reuse the same
|
|
|
27
27
|
idempotency key and input instead of replaying a mutation with a new key.
|
|
28
28
|
Jobs default to 30 minutes; approved executor limits remain separate. ctl keeps
|
|
29
29
|
its 62-second transport default; use an explicit `--timeout` or an existing
|
|
30
|
-
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.
|
|
30
|
+
nonblocking job. See the SDK's [request deadline contract](https://github.com/synopackageland/syno-pkg-land-sdk/blob/v0.38.2/docs/request-deadlines.md).
|
|
31
31
|
|
|
32
32
|
## Quick start
|
|
33
33
|
|
|
@@ -104,8 +104,8 @@ dependencies = [
|
|
|
104
104
|
|
|
105
105
|
[[package]]
|
|
106
106
|
name = "syno-pkg-land-app"
|
|
107
|
-
version = "0.38.
|
|
108
|
-
source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.38.
|
|
107
|
+
version = "0.38.2"
|
|
108
|
+
source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.38.2#103014ec9ec31e91062053d7678b4d2b115be71e"
|
|
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.38.
|
|
12
|
+
syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.38.2" }
|
|
13
13
|
|
|
14
14
|
[profile.release]
|
|
15
15
|
# A handler panic becomes an "internal" reply; abort would end the App without one.
|