@synopackageland/templates 0.10.3 → 0.10.5

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
@@ -38,12 +38,12 @@ calls each one from the generated script of the same name (`synopkgland skill sh
38
38
  The placeholders `__PACKAGE__` (also the Go module path), `__DISPLAY_NAME__` and
39
39
  `__BACKGROUND_ENABLED__` are substituted by `init`.
40
40
 
41
- `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.10.3`; that line is
41
+ `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk v0.10.5`; that line is
42
42
  the single source of the SDK version and `frontend/package.json` pins
43
43
  `@synopackageland/sdk` to the same version. Python and Node.js name it in
44
44
  `backend.sdk`, Rust in the `syno-pkg-land-app` tag of `backend/Cargo.toml`
45
- (and `Cargo.lock`); all of them pin 0.10.3. The Vue frontend pins
46
- `@synopackageland/ui` 0.9.5.
45
+ (and `Cargo.lock`); all of them pin 0.10.5. The Vue frontend pins
46
+ `@synopackageland/ui` 0.9.7.
47
47
 
48
48
  ## Notice writer
49
49
 
@@ -68,6 +68,8 @@ export SYNOPKGLAND_DOCKER_SSH=my-docker-host # optional: the Dock
68
68
  scripts/assemble.sh /tmp/app vue delegate # one combination, as init lays it out
69
69
  scripts/assemble.sh --language rust /tmp/app-rs plain jobs # python, node or rust
70
70
  scripts/gate.sh # layout, every combination, binary, npm pack
71
+ scripts/gate.sh --fast # only the combinations the changes reach
72
+ scripts/assemble.sh --list vue jobs # the templates a combination uses
71
73
  ```
72
74
 
73
75
  Without `SYNOPKGLAND_SDK_DIR` the combinations use the released SDK that
@@ -83,6 +85,21 @@ the tag `Cargo.lock` pins. The gate runs each language's tests on Linux in
83
85
  Docker (`scripts/bridge-linux-test.sh`: Python 3.8, Node.js 18, Rust).
84
86
  CI is not available; `scripts/gate.sh` is the gate.
85
87
 
88
+ Use `scripts/gate.sh --fast` while developing: it tests only the combinations
89
+ that use a template changed since `origin/main` (`SYNOPKGLAND_GATE_BASE`),
90
+ committed or not, and prints the ones it skipped; a change under `scripts/`
91
+ tests them all. Run the full gate once before a release. The gate runs each
92
+ phase's jobs in parallel, `SYNOPKGLAND_GATE_JOBS` (default 3) at a time, and
93
+ prints a failed job's whole log. On `SYNOPKGLAND_DOCKER_SSH` the Rust checks
94
+ run in `synopkgland-gate-templates:<hash>` (`scripts/gate.Dockerfile`) with
95
+ the host's shared `synopkgland-cache-cargo` volume, and wait for one of its
96
+ two gate slots. There the Vue frontends' checks (`scripts/frontend-check.sh`:
97
+ npm install, vitest, the build) run too, in the official `node:24.20.0` image
98
+ with the shared `synopkgland-cache-npm` volume
99
+ (`scripts/frontend-docker-checks.sh`; `SYNOPKGLAND_DOCKER_NPM_REGISTRY` for a
100
+ network that blocks registry.npmjs.org), so the Mac's load cannot slow them.
101
+ Without `SYNOPKGLAND_DOCKER_SSH` they run here.
102
+
86
103
  SDK usage, protocol and API documentation: <https://github.com/synopackageland/syno-pkg-land-sdk>.
87
104
 
88
105
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.10.3",
3
+ "version": "0.10.5",
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": {"type": "git", "url": "git+https://github.com/synopackageland/syno-pkg-land-templates.git"},
@@ -1,6 +1,6 @@
1
1
  Native Go package build dependencies
2
2
 
3
- github.com/synopackageland/syno-pkg-land-sdk v0.10.3 (MIT)
3
+ github.com/synopackageland/syno-pkg-land-sdk v0.10.5 (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.9
6
6
 
7
- require github.com/synopackageland/syno-pkg-land-sdk v0.10.3
7
+ require github.com/synopackageland/syno-pkg-land-sdk v0.10.5
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.10.3 h1:YMwtSPqR7sS6pGKF0x7vMoMxNSY7GIMcxTa++VCTlz8=
2
- github.com/synopackageland/syno-pkg-land-sdk v0.10.3/go.mod h1:hlsvaVuH2wsAoR8jzI1Rg/NeejQSFpAaN6zpIWsVbjI=
1
+ github.com/synopackageland/syno-pkg-land-sdk v0.10.5 h1:HeKZ+4YFdWDJaIllFD2JV1nAJEmMClHAb9lJiQcJjJo=
2
+ github.com/synopackageland/syno-pkg-land-sdk v0.10.5/go.mod h1:hlsvaVuH2wsAoR8jzI1Rg/NeejQSFpAaN6zpIWsVbjI=
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=
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "Die Datei ist größer als zulässig.",
23
23
  "error.read_failed": "Die Datei kann nicht gelesen werden. Bitte versuchen Sie es später erneut.",
24
24
  "error.identity_unavailable": "Dieses Benutzerkonto kann nicht ermittelt werden. Bitte versuchen Sie es später erneut.",
25
+ "error.APP_STOPPED": "Die App ist angehalten. Starten Sie sie im Paket-Zentrum und versuchen Sie es dann erneut.",
26
+ "error.APP_STARTING": "Die App wird gestartet. Versuchen Sie es gleich erneut.",
25
27
  "greeting.adminOnly": "Nur Mitglieder der Gruppe administrators können den Gruß ändern.",
26
28
  "greeting.label": "Neuer Gruß",
27
29
  "greeting.save": "Speichern",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "The file is larger than allowed.",
23
23
  "error.read_failed": "Unable to read the file. Please try again later.",
24
24
  "error.identity_unavailable": "Unable to identify this user account. Please try again later.",
25
+ "error.APP_STOPPED": "The App is stopped. Start it in Package Center, then try again.",
26
+ "error.APP_STARTING": "The App is starting. Try again in a moment.",
25
27
  "greeting.adminOnly": "Only members of the administrators group can change the greeting.",
26
28
  "greeting.label": "New greeting",
27
29
  "greeting.save": "Save",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "El archivo supera el tamaño permitido.",
23
23
  "error.read_failed": "No se puede leer el archivo. Vuelva a intentarlo más tarde.",
24
24
  "error.identity_unavailable": "No se puede identificar esta cuenta de usuario. Vuelva a intentarlo más tarde.",
25
+ "error.APP_STOPPED": "La App está detenida. Iníciela en el Centro de paquetes y vuelva a intentarlo.",
26
+ "error.APP_STARTING": "La App se está iniciando. Vuelva a intentarlo en un momento.",
25
27
  "greeting.adminOnly": "Solo los miembros del grupo administrators pueden cambiar el saludo.",
26
28
  "greeting.label": "Nuevo saludo",
27
29
  "greeting.save": "Guardar",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "Le fichier dépasse la taille autorisée.",
23
23
  "error.read_failed": "Impossible de lire le fichier. Veuillez réessayer ultérieurement.",
24
24
  "error.identity_unavailable": "Impossible d'identifier ce compte utilisateur. Veuillez réessayer ultérieurement.",
25
+ "error.APP_STOPPED": "L’App est arrêtée. Démarrez-la dans le Centre de paquets, puis réessayez.",
26
+ "error.APP_STARTING": "L’App démarre. Réessayez dans un instant.",
25
27
  "greeting.adminOnly": "Seuls les membres du groupe administrators peuvent modifier le message d'accueil.",
26
28
  "greeting.label": "Nouveau message d'accueil",
27
29
  "greeting.save": "Sauvegarder",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "Il file supera le dimensioni consentite.",
23
23
  "error.read_failed": "Impossibile leggere il file. Riprovare più tardi.",
24
24
  "error.identity_unavailable": "Impossibile identificare questo account utente. Riprovare più tardi.",
25
+ "error.APP_STOPPED": "L’App è arrestata. Avviarla in Centro pacchetti, quindi riprovare.",
26
+ "error.APP_STARTING": "L’App è in fase di avvio. Riprovare tra poco.",
25
27
  "greeting.adminOnly": "Solo i membri del gruppo administrators possono modificare il saluto.",
26
28
  "greeting.label": "Nuovo saluto",
27
29
  "greeting.save": "Salva",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "ファイルが許可されたサイズを超えています。",
23
23
  "error.read_failed": "ファイルを読み取れません。後でもう一度お試しください。",
24
24
  "error.identity_unavailable": "このユーザー アカウントを識別できません。後でもう一度お試しください。",
25
+ "error.APP_STOPPED": "App は停止しています。パッケージ センターで起動してから、もう一度お試しください。",
26
+ "error.APP_STARTING": "App を起動しています。しばらくしてから再試行してください。",
25
27
  "greeting.adminOnly": "あいさつを変更できるのは administrators グループのメンバーのみです。",
26
28
  "greeting.label": "新しいあいさつ",
27
29
  "greeting.save": "保存",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "파일이 허용된 크기를 초과합니다.",
23
23
  "error.read_failed": "파일을 읽을 수 없습니다. 나중에 다시 시도하십시오.",
24
24
  "error.identity_unavailable": "이 사용자 계정을 확인할 수 없습니다. 나중에 다시 시도하십시오.",
25
+ "error.APP_STOPPED": "App이 중지되었습니다. 패키지 센터에서 시작한 후 다시 시도하십시오.",
26
+ "error.APP_STARTING": "App을 시작하는 중입니다. 잠시 후 다시 시도하십시오.",
25
27
  "greeting.adminOnly": "administrators 그룹의 구성원만 인사말을 변경할 수 있습니다.",
26
28
  "greeting.label": "새 인사말",
27
29
  "greeting.save": "저장",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "文件超过允许的大小。",
23
23
  "error.read_failed": "无法读取文件。请稍后再试。",
24
24
  "error.identity_unavailable": "无法识别此用户账号。请稍后再试。",
25
+ "error.APP_STOPPED": "App 已停止。请在套件中心启动后重试。",
26
+ "error.APP_STARTING": "App 正在启动,请稍后重试。",
25
27
  "greeting.adminOnly": "只有 administrators 群组的成员可以更改问候语。",
26
28
  "greeting.label": "新的问候语",
27
29
  "greeting.save": "保存",
@@ -22,6 +22,8 @@
22
22
  "error.limit_exceeded": "檔案超過允許的大小。",
23
23
  "error.read_failed": "無法讀取檔案。請稍後再試。",
24
24
  "error.identity_unavailable": "無法識別此使用者帳號。請稍後再試。",
25
+ "error.APP_STOPPED": "App 已停止。請在套件中心啟動後再試一次。",
26
+ "error.APP_STARTING": "App 正在啟動,請稍後再試。",
25
27
  "greeting.adminOnly": "只有 administrators 群組的成員可以變更問候語。",
26
28
  "greeting.label": "新的問候語",
27
29
  "greeting.save": "儲存",
@@ -29,7 +29,7 @@ test('the capability surface uses an explicit long-running facade without legacy
29
29
  } satisfies BackgroundSaveFacade
30
30
  const call=vi.fn(async()=>{throw {code:'unexpected-legacy-call'}})
31
31
  const root=render({delegate:sdk,call,locale:'en'});await settle()
32
- expect(root.textContent).toContain('My saves');expect(sdk.operations).toHaveBeenCalled()
32
+ expect(root.textContent).toContain('Save history');expect(sdk.operations).toHaveBeenCalled()
33
33
  expect(call).not.toHaveBeenCalled()
34
34
  })
35
35
  test('the default surface binds the real routes and the session-only picker',async()=>{
@@ -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.10.3",
11
- "@synopackageland/ui": "0.9.5",
10
+ "@synopackageland/sdk": "0.10.5",
11
+ "@synopackageland/ui": "0.9.7",
12
12
  "vue": "3.5.43"
13
13
  },
14
14
  "devDependencies": {
@@ -1148,9 +1148,9 @@
1148
1148
  }
1149
1149
  },
1150
1150
  "node_modules/@synopackageland/sdk": {
1151
- "version": "0.10.3",
1152
- "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.10.3.tgz",
1153
- "integrity": "sha512-1YsPAtNm4azqCEhAUv/99o10dxwXMtjOg4aRKnwbrSpjrOYQrhsGKfyFj9bFimqIGy0mj2NvRPKGz8ET0HqyEg==",
1151
+ "version": "0.10.5",
1152
+ "resolved": "https://registry.npmjs.org/@synopackageland/sdk/-/sdk-0.10.5.tgz",
1153
+ "integrity": "sha512-8KEU+KDN8zNeEOCD3UHXfEh8qXiq0B98cuuuFOQBukEQeHA2nENLCBZiy7cnWhHKbZeLPGManrawFvCddRNsJA==",
1154
1154
  "license": "MIT",
1155
1155
  "peerDependencies": {
1156
1156
  "@lucide/vue": "^1.48.0",
@@ -1167,9 +1167,9 @@
1167
1167
  }
1168
1168
  },
1169
1169
  "node_modules/@synopackageland/ui": {
1170
- "version": "0.9.5",
1171
- "resolved": "https://registry.npmjs.org/@synopackageland/ui/-/ui-0.9.5.tgz",
1172
- "integrity": "sha512-fytttAWLZ48H0w5UYsDzfJu7I4yBmafFviMoku+WZtwroNm6z26gTBdCgkg9a5MmxghFU8e1p5NWYnKfVVPbEw==",
1170
+ "version": "0.9.7",
1171
+ "resolved": "https://registry.npmjs.org/@synopackageland/ui/-/ui-0.9.7.tgz",
1172
+ "integrity": "sha512-3IY+LsRXBrxwoogpoVjRjyC8nH56PUZrLTHC9DJ9z91NrwFar7SRHPVCpSR9lPNwRVtF+zlgTmRwNLBY6ZE3HA==",
1173
1173
  "license": "MIT",
1174
1174
  "dependencies": {
1175
1175
  "@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.10.3",
12
- "@synopackageland/ui": "0.9.5",
11
+ "@synopackageland/sdk": "0.10.5",
12
+ "@synopackageland/ui": "0.9.7",
13
13
  "vue": "3.5.43"
14
14
  },
15
15
  "devDependencies": {
@@ -49,7 +49,7 @@ backend:
49
49
  runtime: node
50
50
  dir: backend/app
51
51
  entry: main.js
52
- sdk: 0.10.3
52
+ sdk: 0.10.5
53
53
  node: { package: Node.js_v20 }
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.10.3
50
+ sdk: 0.10.5
51
51
 
52
52
  ui:
53
53
  # Static files served at /webman/3rdparty/<package>/app/. app.js and app.css
@@ -104,8 +104,8 @@ dependencies = [
104
104
 
105
105
  [[package]]
106
106
  name = "syno-pkg-land-app"
107
- version = "0.10.3"
108
- source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.10.3#4e0fe8ee1f71a9818e50a38242882cebaa776cee"
107
+ version = "0.10.5"
108
+ source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.10.5#d39f5867764ada47a39faf2787a513b54d063b85"
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.10.3" }
12
+ syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.10.5" }
13
13
 
14
14
  [profile.release]
15
15
  # A handler panic becomes an "internal" reply; abort would end the App without one.