@synopackageland/templates 0.25.0 → 0.26.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
@@ -4,10 +4,42 @@ Project templates for `synopkgland init` and `synopkgland add`. They hold only
4
4
  the files an App owns; the SDK (`github.com/synopackageland/syno-pkg-land-sdk`, npm
5
5
  `@synopackageland/sdk`) is a dependency of the generated project, never a copy.
6
6
 
7
+ ## Optional native daemon recovery
8
+
9
+ Scaffolds keep automatic daemon recovery **off** by omitting `daemon.restart`.
10
+ For an App that owns a foreground native daemon, a CLI with restart support and
11
+ SDK **0.26.0 or later** can accept this opt-in alongside its existing `exec` and
12
+ `targets`:
13
+
14
+ ```yaml
15
+ daemon:
16
+ # Keep the App's existing exec, targets, args and environment.
17
+ restart:
18
+ mode: on-failure
19
+ initial_seconds: 1
20
+ max_seconds: 30
21
+ max_attempts: 5
22
+ window_seconds: 300
23
+ ```
24
+
25
+ Templates 0.26.0 pin SDK 0.26.0, including the default controller SDK for
26
+ binary/Node daemons. Use CLI 0.26.0 or later. Go Apps select
27
+ their controller from their Go SDK requirement; an identity gateway selects it
28
+ from `identity_gateway.sdk`. The CLI rejects older selected versions, even for
29
+ an explicit `mode: off`, rather than dropping the declaration. A local SDK source
30
+ override does not waive that version check.
31
+
32
+ The SDK owns backoff, the sliding retry cap and stop cancellation. Keep existing
33
+ stop-before-upgrade/uninstall hooks; do not add retry loops in App scripts.
34
+ Clean exits do not restart; initial startup retains its original fail-fast
35
+ deadline. Compose keeps its own supervision. An App backend may map SDK
36
+ `status-json` state/reason to its authenticated status UI; no new status panel is
37
+ generated. See the CLI's [daemon policy guide](https://github.com/synopackageland/syno-pkg-land-cli/blob/main/docs/daemon.md)
38
+ for declaration bounds, SDK selection, build/inspect checks and diagnostics.
39
+
7
40
  An opt-in [Shared Folder permission example](examples/shared-folder-permission/README.md)
8
41
  shows the Go status-handler registration and a Vue notice for startup checks and
9
- storage failures. It targets the next SDK minor release and leaves default
10
- scaffold versions unchanged.
42
+ storage failures. It uses the same SDK 0.26.0 release pinned by the default scaffolds.
11
43
 
12
44
  An opt-in [native UI plus DSM console example](examples/dual-entry-console/README.md)
13
45
  shows the `console` declaration for an App that wraps a web service behind the
@@ -47,12 +79,12 @@ calls each one from the generated script of the same name (`synopkgland skill sh
47
79
  The placeholders `__PACKAGE__` (also the Go module path), `__DISPLAY_NAME__` and
48
80
  `__BACKGROUND_ENABLED__` are substituted by `init`.
49
81
 
50
- `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.25.0`; that line is
82
+ `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.26.0`; that line is
51
83
  the single source of the SDK version and `frontend/package.json` pins
52
84
  `@synopackageland/sdk` to the same version. Python and Node.js name it in
53
85
  `backend.sdk`, Rust in the `syno-pkg-land-app` tag of `backend/Cargo.toml`
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`,
86
+ (and `Cargo.lock`); all of them pin 0.26.0. The Vue frontend pins
87
+ `@synopackageland/ui` 0.14.3. SDK 0.26.0 accepts UI `>=0.10.1 <0.15.0`,
56
88
  so no UI peer override is needed. Tests use jsdom 30 for UI floating-layer styles.
57
89
 
58
90
  ## Notice writer
@@ -72,8 +104,7 @@ and `UI-THIRD_PARTY.md` in the output directory; other files there stay.
72
104
  ## Develop
73
105
 
74
106
  ```sh
75
- export GOPRIVATE='github.com/synopackageland/*' # the SDK repository is private
76
- export SYNOPKGLAND_SDK_DIR=~/Public/synopackageland/sdk # optional sdk checkout: Go module at the root, ts/
107
+ export SYNOPKGLAND_SDK_DIR=/path/to/sdk # optional public SDK checkout: Go module at the root, ts/
77
108
  export SYNOPKGLAND_DOCKER_SSH=my-docker-host # optional: the Docker engine for the Linux tests
78
109
  scripts/assemble.sh /tmp/app vue delegate # one combination, as init lays it out
79
110
  scripts/assemble.sh --language rust /tmp/app-rs plain jobs # python, node or rust
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.25.0",
3
+ "version": "0.26.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": {
@@ -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.25.0
17
+ sdk: 0.26.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.25.0 (MIT)
3
+ github.com/synopackageland/syno-pkg-land-sdk v0.26.0 (MIT)
4
4
 
5
5
  Copyright (c) 2026 synopkgland
6
6
 
@@ -4,6 +4,6 @@ go 1.25.0
4
4
 
5
5
  toolchain go1.26.10
6
6
 
7
- require github.com/synopackageland/syno-pkg-land-sdk v0.25.0
7
+ require github.com/synopackageland/syno-pkg-land-sdk v0.26.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.25.0 h1:6h3kcxWMl6hsh98j4p9hyekXchnNuwfnRb3D8eZY9rs=
2
- github.com/synopackageland/syno-pkg-land-sdk v0.25.0/go.mod h1:8GwREGbczc8mAk4Gv8FUHaukXXCUstjzkovQrNV59Cc=
1
+ github.com/synopackageland/syno-pkg-land-sdk v0.26.0 h1:74lMYZURXwF2ffMRhG+T8u1XF8HsR04+NFjweRuKFw8=
2
+ github.com/synopackageland/syno-pkg-land-sdk v0.26.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,7 +7,7 @@
7
7
  "name": "native-dsm-vue-app",
8
8
  "dependencies": {
9
9
  "@lucide/vue": "1.48.0",
10
- "@synopackageland/sdk": "0.25.0",
10
+ "@synopackageland/sdk": "0.26.0",
11
11
  "@synopackageland/ui": "0.14.3",
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.25.0",
1156
- "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.25.0.tgz",
1157
- "integrity": "sha512-bZC8n3L3NX3dUiO2A64XumvUOdy6GZIzL57pJlZGhSzplMw044gzn3w2tw3DPsy7D+qdguMfx8m+RJh+5qnpQg==",
1155
+ "version": "0.26.0",
1156
+ "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.26.0.tgz",
1157
+ "integrity": "sha512-f6nKQzA+Bn+ilHAtJdoksPg/t3beA0Nxo1tOvFrTIqSuzB8CeMCQ5zZ263NigFvV3yDYwM9T4AD4C0Iw/LXf5Q==",
1158
1158
  "license": "MIT",
1159
1159
  "peerDependencies": {
1160
1160
  "@lucide/vue": "^1.48.0",
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@lucide/vue": "1.48.0",
11
- "@synopackageland/sdk": "0.25.0",
11
+ "@synopackageland/sdk": "0.26.0",
12
12
  "@synopackageland/ui": "0.14.3",
13
13
  "vue": "3.5.43"
14
14
  },
@@ -49,7 +49,7 @@ backend:
49
49
  runtime: node
50
50
  dir: backend/app
51
51
  entry: main.js
52
- sdk: 0.25.0
52
+ sdk: 0.26.0
53
53
  node: { package: Node.js_v22 }
54
54
 
55
55
  ui:
@@ -47,7 +47,7 @@ backend:
47
47
  runtime: python
48
48
  dir: backend/app
49
49
  entry: main.py
50
- sdk: 0.25.0
50
+ sdk: 0.26.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.25.0"
108
- source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.25.0#0bf60be0936b09e246251ed5bd811bf1615a815b"
107
+ version = "0.26.0"
108
+ source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.26.0#ff3b079cf034e12ce69e936e4fefb010cd010b3d"
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.25.0" }
12
+ syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.26.0" }
13
13
 
14
14
  [profile.release]
15
15
  # A handler panic becomes an "internal" reply; abort would end the App without one.