@synopackageland/templates 0.42.2 → 0.43.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.
Files changed (94) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +30 -16
  3. package/package.json +2 -2
  4. package/templates/_shared/AGENTS.md +2 -2
  5. package/templates/_shared/package.json +1 -1
  6. package/templates/_shared/pnpm-workspace.yaml +1 -0
  7. package/templates/compose/dsm-package.yaml +1 -1
  8. package/templates/native-go/README.md +3 -0
  9. package/templates/native-go/backend/THIRD_PARTY_NOTICES.txt +1 -1
  10. package/templates/native-go/backend/go.mod +1 -1
  11. package/templates/native-go/backend/go.sum +2 -2
  12. package/templates/native-node/README.md +1 -1
  13. package/templates/native-node/dsm-package.yaml +1 -1
  14. package/templates/native-python/dsm-package.yaml +1 -1
  15. package/templates/native-rust/README.md +3 -0
  16. package/templates/native-rust/backend/Cargo.lock +8 -8
  17. package/templates/native-rust/backend/Cargo.toml +1 -1
  18. package/templates/{native-go-vue → overlays/native-go-vue}/README.md +4 -1
  19. package/templates/{native-go-vue → overlays/native-go-vue}/frontend/package.json +2 -2
  20. package/templates/{native-node-vue → overlays/native-node-vue}/README.md +1 -1
  21. package/templates/{native-python-vue → overlays/native-python-vue}/README.md +1 -1
  22. package/templates/{native-rust-delegate → overlays/native-rust-delegate}/backend/Cargo.lock +8 -8
  23. package/templates/{native-rust-delegate → overlays/native-rust-delegate}/backend/Cargo.toml +1 -1
  24. package/templates/{native-rust-vue → overlays/native-rust-vue}/README.md +1 -1
  25. package/templates/_shared/pnpm-lock.yaml +0 -1636
  26. package/templates/native-go-vue/frontend/pnpm-lock.yaml +0 -2269
  27. package/templates/native-node/backend/pnpm-lock.yaml +0 -207
  28. /package/templates/{native-go-delegate → overlays/native-go-delegate}/backend/cmd/background-worker/main.go +0 -0
  29. /package/templates/{native-go-delegate → overlays/native-go-delegate}/backend/internal/app/delegate.go +0 -0
  30. /package/templates/{native-go-delegate → overlays/native-go-delegate}/backend/internal/app/delegate_on.go +0 -0
  31. /package/templates/{native-go-delegate → overlays/native-go-delegate}/backend/internal/app/delegate_routes_test.go +0 -0
  32. /package/templates/{native-go-delegate → overlays/native-go-delegate}/frontend/src/CapabilityPanels.vue +0 -0
  33. /package/templates/{native-go-delegate → overlays/native-go-delegate}/frontend/test/capability-panels.test.ts +0 -0
  34. /package/templates/{native-go-jobs → overlays/native-go-jobs}/backend/internal/app/background_on.go +0 -0
  35. /package/templates/{native-go-jobs → overlays/native-go-jobs}/backend/internal/app/background_routes_test.go +0 -0
  36. /package/templates/{native-go-jobs → overlays/native-go-jobs}/frontend/test/background-shell.test.ts +0 -0
  37. /package/templates/{native-go-root-ops → overlays/native-go-root-ops}/backend/internal/app/executor.go +0 -0
  38. /package/templates/{native-go-root-ops → overlays/native-go-root-ops}/backend/internal/app/executor_test.go +0 -0
  39. /package/templates/{native-go-root-ops → overlays/native-go-root-ops}/frontend/src/ExecutorGate.vue +0 -0
  40. /package/templates/{native-go-root-ops → overlays/native-go-root-ops}/frontend/test/executor-gate.test.ts +0 -0
  41. /package/templates/{native-go-root-ops → overlays/native-go-root-ops}/root/whoami.sh +0 -0
  42. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/DESIGN.md +0 -0
  43. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/pnpm-workspace.yaml +0 -0
  44. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/App.vue +0 -0
  45. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/CapabilityPanels.vue +0 -0
  46. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/ExecutorGate.vue +0 -0
  47. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/de.json +0 -0
  48. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/en.json +0 -0
  49. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/es.json +0 -0
  50. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/fr.json +0 -0
  51. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/it.json +0 -0
  52. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/ja.json +0 -0
  53. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/ko.json +0 -0
  54. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/zh-CN.json +0 -0
  55. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n/zh-TW.json +0 -0
  56. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/i18n.ts +0 -0
  57. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/main.ts +0 -0
  58. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/src/style.css +0 -0
  59. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/apps.test.ts +0 -0
  60. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/context.ts +0 -0
  61. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/module-bundle.test.ts +0 -0
  62. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/native-controls.test.ts +0 -0
  63. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/page-spacing.test.ts +0 -0
  64. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/test/shell-i18n.test.ts +0 -0
  65. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/tsconfig.json +0 -0
  66. /package/templates/{native-go-vue → overlays/native-go-vue}/frontend/vite.config.ts +0 -0
  67. /package/templates/{native-go-vue → overlays/native-go-vue}/gitignore +0 -0
  68. /package/templates/{native-node-delegate → overlays/native-node-delegate}/backend/src/delegate.ts +0 -0
  69. /package/templates/{native-node-delegate → overlays/native-node-delegate}/backend/test/delegate.test.ts +0 -0
  70. /package/templates/{native-node-delegate → overlays/native-node-delegate}/operations.patch.json +0 -0
  71. /package/templates/{native-node-jobs → overlays/native-node-jobs}/backend/src/jobs.ts +0 -0
  72. /package/templates/{native-node-jobs → overlays/native-node-jobs}/backend/test/jobs.test.ts +0 -0
  73. /package/templates/{native-node-jobs → overlays/native-node-jobs}/operations.patch.json +0 -0
  74. /package/templates/{native-node-root-ops → overlays/native-node-root-ops}/backend/src/root-ops.ts +0 -0
  75. /package/templates/{native-node-root-ops → overlays/native-node-root-ops}/backend/test/root-ops.test.ts +0 -0
  76. /package/templates/{native-node-root-ops → overlays/native-node-root-ops}/operations.patch.json +0 -0
  77. /package/templates/{native-node-vue → overlays/native-node-vue}/gitignore +0 -0
  78. /package/templates/{native-python-delegate → overlays/native-python-delegate}/backend/app/delegate.py +0 -0
  79. /package/templates/{native-python-delegate → overlays/native-python-delegate}/backend/tests/test_delegate.py +0 -0
  80. /package/templates/{native-python-delegate → overlays/native-python-delegate}/operations.patch.json +0 -0
  81. /package/templates/{native-python-jobs → overlays/native-python-jobs}/backend/app/jobs.py +0 -0
  82. /package/templates/{native-python-jobs → overlays/native-python-jobs}/backend/tests/test_jobs.py +0 -0
  83. /package/templates/{native-python-jobs → overlays/native-python-jobs}/operations.patch.json +0 -0
  84. /package/templates/{native-python-root-ops → overlays/native-python-root-ops}/backend/app/root_ops.py +0 -0
  85. /package/templates/{native-python-root-ops → overlays/native-python-root-ops}/backend/tests/test_root_ops.py +0 -0
  86. /package/templates/{native-python-root-ops → overlays/native-python-root-ops}/operations.patch.json +0 -0
  87. /package/templates/{native-python-vue → overlays/native-python-vue}/gitignore +0 -0
  88. /package/templates/{native-rust-delegate → overlays/native-rust-delegate}/backend/src/delegate.rs +0 -0
  89. /package/templates/{native-rust-delegate → overlays/native-rust-delegate}/operations.patch.json +0 -0
  90. /package/templates/{native-rust-jobs → overlays/native-rust-jobs}/backend/src/jobs.rs +0 -0
  91. /package/templates/{native-rust-jobs → overlays/native-rust-jobs}/operations.patch.json +0 -0
  92. /package/templates/{native-rust-root-ops → overlays/native-rust-root-ops}/backend/src/root_ops.rs +0 -0
  93. /package/templates/{native-rust-root-ops → overlays/native-rust-root-ops}/operations.patch.json +0 -0
  94. /package/templates/{native-rust-vue → overlays/native-rust-vue}/gitignore +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.43.0
4
+
5
+ - Move Vue and capability layers under `templates/overlays/`; keep six main templates.
6
+ - Let init resolve compatible SDK/UI releases and its own CLI version from shipped defaults.
7
+ - Refresh offline defaults and remove shipped npm lockfiles; first install creates them.
8
+ - Preserve release checksums and document Go/Rust dependency initialization.
9
+
3
10
  ## 0.42.2
4
11
 
5
12
  - New Apps get no header Refresh. The Vue templates leave `AppShell`'s `#actions` empty (Sign out only with standalone login), so the shell draws no bar above the page; the plain UI's title row drops its Refresh button
package/README.md CHANGED
@@ -24,7 +24,7 @@ daemon:
24
24
  window_seconds: 300
25
25
  ```
26
26
 
27
- Templates pin compatible UI and SDK releases in native and Compose projects.
27
+ Templates carry offline fallback dependency versions; init resolves compatible current releases.
28
28
  Use a CLI that supports executor manifest format 1. The Vue `AppShell` shows a
29
29
  non-blocking **Reload** notice when an upgrade replaced the UI an open page
30
30
  loaded. Go Apps select
@@ -50,15 +50,20 @@ An opt-in [native UI plus DSM console example](examples/dual-entry-console/READM
50
50
  shows the `console` declaration for an App that wraps a web service behind the
51
51
  identity gateway and keeps its own settings in an administrator-only DSM window.
52
52
 
53
- | Template | What it adds |
53
+ The first level of `templates/` contains the six main templates, `_shared/`,
54
+ and `overlays/`. All Vue, jobs, delegate and root-ops layers live under `overlays/`.
55
+ The shipped manifest versions are fallback defaults; init rewrites them through its
56
+ existing substitution pass. SDK/UI/CLI patches do not require a templates release.
57
+
58
+ | Template or overlay | What it adds |
54
59
  | --- | --- |
55
60
  | `native-go` | Base: `dsm-package.yaml`, Go module (`backend/cmd/{app,background-worker}`, `backend/internal/app`, `backend/internal/api/permissions.json`), plain `ui/`, i18n |
56
- | `native-go-vue` | Vue shell in `frontend/` (`App.vue`, `main.ts`, app i18n, `CapabilityPanels.vue`, `ExecutorGate.vue`) |
57
- | `native-go-jobs` | Background job routes in `internal/app` and a shell lifecycle test |
58
- | `native-go-delegate` | Delegate routes, the delegate background worker, the delegate `CapabilityPanels.vue` |
59
- | `native-go-root-ops` | The SDK's executor routes and `root.run` in `internal/app`, an example `root/whoami.sh`, and the Vue `ExecutorGate.vue` that holds the pages until the executor is approved |
61
+ | `overlays/native-go-vue` | Vue shell in `frontend/` (`App.vue`, `main.ts`, app i18n, `CapabilityPanels.vue`, `ExecutorGate.vue`) |
62
+ | `overlays/native-go-jobs` | Background job routes in `internal/app` and a shell lifecycle test |
63
+ | `overlays/native-go-delegate` | Delegate routes, the delegate background worker, the delegate `CapabilityPanels.vue` |
64
+ | `overlays/native-go-root-ops` | The SDK's executor routes and `root.run` in `internal/app`, an example `root/whoami.sh`, and the Vue `ExecutorGate.vue` that holds the pages until the executor is approved |
60
65
  | `native-python` | Base: `dsm-package.yaml` (`backend.runtime: python`), the App in `backend/app` (`routes.py`, stub capability modules, `permissions.json`), unittest tests |
61
- | `native-node` | Base: `dsm-package.yaml` (`backend.runtime: node`), TypeScript in `backend/src` compiled into `backend/app`, node:test tests, `pnpm-lock.yaml` |
66
+ | `native-node` | Base: `dsm-package.yaml` (`backend.runtime: node`), TypeScript in `backend/src` compiled into `backend/app`, node:test tests, an install-generated lockfile |
62
67
  | `native-rust` | Base: `dsm-package.yaml` (`backend.runtime: rust`, `methods`), the Cargo project in `backend` on the `syno-pkg-land-app` crate, `Cargo.lock`, `rust-toolchain.toml` |
63
68
  | `native-{python,node,rust}-{jobs,root-ops,delegate}` | The capability's example module, replacing the base's stub, with its tests |
64
69
  | `native-{python,node,rust}-vue` | The README and `.gitignore` of the Vue shell |
@@ -70,8 +75,8 @@ Overlays are copied over `native-go` in the order root-ops, vue, jobs, delegate.
70
75
  An overlay may replace `internal/app/*_none.go` (the CLI deletes the matching
71
76
  `_none.go` file); nothing outside `internal/app` and the Vue shell differs.
72
77
  The Python, Node.js and Rust templates borrow the Go template's UI: `ui/` and
73
- `i18n/` from `native-go`, `frontend/` from `native-go-vue` (and the jobs and
74
- delegate overlays' frontend files), `root/whoami.sh` from `native-go-root-ops`.
78
+ `i18n/` from `native-go`, `frontend/` from `overlays/native-go-vue` (and the jobs and
79
+ delegate overlays' frontend files), `root/whoami.sh` from `overlays/native-go-root-ops`.
75
80
  Their overlays are copied in the order vue, root-ops, jobs, delegate; delegate
76
81
  also makes `app.status` and `report.save` `authenticated`, and the Rust
77
82
  manifest gets the overlays' methods. `init` copies the App SDK into
@@ -84,13 +89,22 @@ calls each one from the generated script of the same name (`synopkgland skill sh
84
89
  The placeholders `__PACKAGE__` (also the Go module path), `__DISPLAY_NAME__` and
85
90
  `__BACKGROUND_ENABLED__` are substituted by `init`.
86
91
 
87
- `backend/go.mod` requires `github.com/synopackageland/syno-pkg-land-sdk`; that line is
88
- the single source of the SDK version and `frontend/package.json` sets
89
- `@synopackageland/sdk` to a patch range starting at the same version. Python and Node.js name it in
90
- `backend.sdk`, Rust in the `syno-pkg-land-app` tag of `backend/Cargo.toml`
91
- (and `Cargo.lock`). The Vue frontend uses a compatible patch range for
92
- `@synopackageland/ui`. The shipped lockfile fixes both installed versions;
93
- update it deliberately to take newer patches.
92
+ `init` defaults to `native-go` with Vue. The CLI writes its own `~` version,
93
+ selects the newest stable, non-deprecated SDK and UI releases in its declared
94
+ compatibility ranges, and writes the same exact SDK version to npm and the backend.
95
+ UI stays in the supported minor line. Registry errors or unavailable compatible
96
+ releases print one hint and use the shipped defaults; there is no short custom timeout.
97
+ Templates are still read from the installed package, never downloaded by `init`.
98
+ The CLI compatibility ranges live in `src/init-versions.ts`.
99
+
100
+ Templates do not ship npm lockfiles. Run `pnpm install` in the project root and
101
+ frontend (and the Node backend) to create them, then commit them and use
102
+ `pnpm install --frozen-lockfile` for subsequent installs. For Go, run
103
+ `(cd backend && go mod tidy)` before check/build. When init selects a newer Rust
104
+ SDK tag, run `(cd backend && cargo generate-lockfile)` before check/build;
105
+ the old release's Cargo.lock is removed rather than relabeling its commit.
106
+ `SYNOPKGLAND_SDK_DIR` still overrides the generated SDK dependency for local development.
107
+
94
108
  Read the SDK's published peer dependency range with
95
109
  `npm view @synopackageland/sdk peerDependencies` rather than overriding it. Tests use jsdom 30 for UI floating-layer styles.
96
110
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.42.2",
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.",
3
+ "version": "0.43.0",
4
+ "description": "Project templates for synopkgland init: native-go, native-python, native-node and native-rust (plain or Vue, with layers in templates/overlays), binary and compose.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,7 +28,7 @@ sections at the end name each language's files, types and test commands.
28
28
 
29
29
  From the project root, run `synopkgland check --json`,
30
30
  `synopkgland build --json`, then `synopkgland inspect <spk> --json` on the emitted SPK.
31
- For Vue, first run `pnpm install --frozen-lockfile --prod=false` and `pnpm run build` in frontend. Run its tests only if the user chose tests.
31
+ For Vue, first run `pnpm install --prod=false` (creates its lockfile) and `pnpm run build` in frontend. Run its tests only if the user chose tests.
32
32
  Do not connect to or change a NAS without explicit task authorization.
33
33
 
34
34
  ## Optional testing
@@ -408,7 +408,7 @@ their capabilities with `synopkgland init --with`.
408
408
  `new AppError(code, message)`, `AppError.badRequest(message)`. Call services
409
409
  through `service(ctx, op, params)` (`service.ts`), which passes the runtime's
410
410
  refusals on; a bare `ctx.runtime` refusal would reach the browser as `internal`.
411
- - Test with `(cd backend && pnpm install --frozen-lockfile --prod=false && pnpm test && pnpm run typecheck)`; `test/support.ts`'s
411
+ - Test with `(cd backend && pnpm install --prod=false && pnpm test && pnpm run typecheck)`; `test/support.ts`'s
412
412
  `call` plays the runtime.
413
413
 
414
414
  ## Rust backend
@@ -11,7 +11,7 @@
11
11
  "e2e:ai": "node --env-file-if-exists=.env node_modules/@synopackageland/cli/dist/e2e/dsm.js tunnel -- e2e run --config e2e.ai.config.ts tests/e2e/action.ai.e2e.ts"
12
12
  },
13
13
  "devDependencies": {
14
- "@synopackageland/cli": "~0.52.11",
14
+ "@synopackageland/cli": "~0.53.18",
15
15
  "@e2e-dev/web": "^0.14.0",
16
16
  "e2e": "^0.19.0"
17
17
  },
@@ -1,2 +1,3 @@
1
1
  allowBuilds:
2
2
  esbuild: true
3
+ koffi: true
@@ -23,7 +23,7 @@ compose:
23
23
  web: {service: web, port: 8080, health: {path: /, status: 200}}
24
24
  network: {egress: isolated}
25
25
  identity_gateway:
26
- sdk: 0.53.16
26
+ sdk: 0.53.42
27
27
  mode: none
28
28
  listen: {http: 28000}
29
29
  # Web Apps default to new-page through the shared app-launch resolver.
@@ -498,3 +498,6 @@ Keep `synology/backend/`, `synology/i18n/messages/`, `synology/operations.json`
498
498
  the local/ctl tests: the entry gate still needs the backend and message catalogs.
499
499
  Read `synopkgland skill show upstream-fork` and
500
500
  `synopkgland skill show orchestrator` for the wrapper workflow.
501
+
502
+ Before the first check/build, install the project dependencies with `pnpm install`
503
+ and run `(cd backend && go mod tidy)` to populate checksums for the selected SDK.
@@ -1,6 +1,6 @@
1
1
  Native Go package build dependencies
2
2
 
3
- github.com/synopackageland/syno-pkg-land-sdk v0.53.16 (MIT)
3
+ github.com/synopackageland/syno-pkg-land-sdk v0.53.42 (MIT)
4
4
 
5
5
  Copyright (c) 2026 synopkgland
6
6
 
@@ -2,6 +2,6 @@ module __PACKAGE__
2
2
 
3
3
  go 1.26.10
4
4
 
5
- require github.com/synopackageland/syno-pkg-land-sdk v0.53.16
5
+ require github.com/synopackageland/syno-pkg-land-sdk v0.53.42
6
6
 
7
7
  require golang.org/x/sys v0.44.0 // indirect
@@ -1,4 +1,4 @@
1
- github.com/synopackageland/syno-pkg-land-sdk v0.53.16 h1:i4FCBCpOr7ma31zFathuS2QLpCWa13y3v9rWvlg+AfE=
2
- github.com/synopackageland/syno-pkg-land-sdk v0.53.16/go.mod h1:JMfenGwAhlVgGUtoSQFA9XRbtN8Zcs+0xdrOaaam+Fg=
1
+ github.com/synopackageland/syno-pkg-land-sdk v0.53.42 h1:qhbKCjU6ME8OpuMgpz03LHs3KGL66xSwDRvePGWlyEU=
2
+ github.com/synopackageland/syno-pkg-land-sdk v0.53.42/go.mod h1:mmtgnyafLwci1588LJFpRIsWflHwjaHJoDm7grXFh8A=
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=
@@ -51,7 +51,7 @@ run `synopkgland ctl generate`.
51
51
  Needs Node.js 20 or later with `synopkgland` installed. The SPK depends on DSM's **Node.js v20** package (INFO `install_dep_packages`).
52
52
 
53
53
  ```bash
54
- (cd backend && pnpm install --frozen-lockfile --prod=false && pnpm test && pnpm run build) # method tests, then app/*.js
54
+ (cd backend && pnpm install --prod=false && pnpm test && pnpm run build) # method tests, then app/*.js
55
55
  synopkgland ctl generate
56
56
  synopkgland check
57
57
  synopkgland build # → dist/__PACKAGE__-0.1.0-0001-{x86_64,aarch64}.spk
@@ -49,7 +49,7 @@ backend:
49
49
  runtime: node
50
50
  dir: backend/app
51
51
  entry: main.js
52
- sdk: 0.53.16
52
+ sdk: 0.53.42
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.53.16
50
+ sdk: 0.53.42
51
51
 
52
52
  ui:
53
53
  # Non-UI-SDK frontends open a full page; Portal is a separate opt-in.
@@ -225,3 +225,6 @@ Draft writes require a non-mutating preview and explicit human confirmation.
225
225
  Long operations use the existing job flow; tools own polling and pagination.
226
226
 
227
227
  Use a matching SDK/CLI/templates release containing the registry support.
228
+
229
+ After init selects a new SDK tag, run `(cd backend && cargo generate-lockfile)`
230
+ before check/build, then commit the generated Cargo.lock.
@@ -14,15 +14,15 @@ dependencies = [
14
14
 
15
15
  [[package]]
16
16
  name = "itoa"
17
- version = "1.0.18"
17
+ version = "1.0.19"
18
18
  source = "registry+https://github.com/rust-lang/crates.io-index"
19
- checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
19
+ checksum = "3bd1574e617a9a6c1f8f8181bd7e841e1f20e4277607ef28945765188d6284d4"
20
20
 
21
21
  [[package]]
22
22
  name = "libc"
23
- version = "0.2.190"
23
+ version = "0.2.191"
24
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
- checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
25
+ checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
26
26
 
27
27
  [[package]]
28
28
  name = "memchr"
@@ -93,9 +93,9 @@ dependencies = [
93
93
 
94
94
  [[package]]
95
95
  name = "syn"
96
- version = "3.0.9"
96
+ version = "3.0.10"
97
97
  source = "registry+https://github.com/rust-lang/crates.io-index"
98
- checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
98
+ checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79"
99
99
  dependencies = [
100
100
  "proc-macro2",
101
101
  "quote",
@@ -104,8 +104,8 @@ dependencies = [
104
104
 
105
105
  [[package]]
106
106
  name = "syno-pkg-land-app"
107
- version = "0.53.16"
108
- source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.53.16#6751951c140fb032e5f050dc53f5cc58fcd0bf60"
107
+ version = "0.53.42"
108
+ source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.53.42#02d5b526c852b3bd30e4dc9031414c9907fadb57"
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.53.16" }
12
+ syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.53.42" }
13
13
 
14
14
  [profile.release]
15
15
  # A handler panic becomes an "internal" reply; abort would end the App without one.
@@ -37,7 +37,7 @@ See the [fork guide](https://github.com/synopackageland/syno-pkg-land-templates#
37
37
 
38
38
  ```sh
39
39
  cd frontend
40
- pnpm install --frozen-lockfile --prod=false
40
+ pnpm install --prod=false
41
41
  pnpm test
42
42
  pnpm run build
43
43
  ```
@@ -150,3 +150,6 @@ For UI discovery, run `pnpm exec syno-pkg-land-ui catalog --json` and
150
150
  `pnpm exec syno-pkg-land-ui describe Button --json` from the installed frontend.
151
151
  Read its prompt and exported Vue docs/types before choosing component APIs.
152
152
  Use `syno-pkg-land-ui` directly in package scripts; keep AI guidance version-independent.
153
+
154
+ Before the first check/build, install the project dependencies with `pnpm install`
155
+ and run `(cd backend && go mod tidy)` to populate checksums for the selected SDK.
@@ -8,8 +8,8 @@
8
8
  },
9
9
  "dependencies": {
10
10
  "@lucide/vue": "1.48.0",
11
- "@synopackageland/sdk": "~0.53.16",
12
- "@synopackageland/ui": "~0.25.2",
11
+ "@synopackageland/sdk": "~0.53.42",
12
+ "@synopackageland/ui": "~0.25.17",
13
13
  "vue": "3.5.43"
14
14
  },
15
15
  "devDependencies": {
@@ -26,7 +26,7 @@ run `synopkgland ctl generate`.
26
26
 
27
27
  ```sh
28
28
  cd frontend
29
- pnpm install --frozen-lockfile --prod=false
29
+ pnpm install --prod=false
30
30
  pnpm test
31
31
  pnpm run build
32
32
  ```
@@ -26,7 +26,7 @@ run `synopkgland ctl generate`.
26
26
 
27
27
  ```sh
28
28
  cd frontend
29
- pnpm install --frozen-lockfile --prod=false
29
+ pnpm install --prod=false
30
30
  pnpm test
31
31
  pnpm run build
32
32
  ```
@@ -69,15 +69,15 @@ dependencies = [
69
69
 
70
70
  [[package]]
71
71
  name = "itoa"
72
- version = "1.0.18"
72
+ version = "1.0.19"
73
73
  source = "registry+https://github.com/rust-lang/crates.io-index"
74
- checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
74
+ checksum = "3bd1574e617a9a6c1f8f8181bd7e841e1f20e4277607ef28945765188d6284d4"
75
75
 
76
76
  [[package]]
77
77
  name = "libc"
78
- version = "0.2.190"
78
+ version = "0.2.191"
79
79
  source = "registry+https://github.com/rust-lang/crates.io-index"
80
- checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
80
+ checksum = "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
81
81
 
82
82
  [[package]]
83
83
  name = "memchr"
@@ -159,9 +159,9 @@ dependencies = [
159
159
 
160
160
  [[package]]
161
161
  name = "syn"
162
- version = "3.0.9"
162
+ version = "3.0.10"
163
163
  source = "registry+https://github.com/rust-lang/crates.io-index"
164
- checksum = "d78c8dee4c7bf0e14673097256fed6142ce9d3b85a408189d07482442145823b"
164
+ checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79"
165
165
  dependencies = [
166
166
  "proc-macro2",
167
167
  "quote",
@@ -170,8 +170,8 @@ dependencies = [
170
170
 
171
171
  [[package]]
172
172
  name = "syno-pkg-land-app"
173
- version = "0.53.16"
174
- source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.53.16#6751951c140fb032e5f050dc53f5cc58fcd0bf60"
173
+ version = "0.53.42"
174
+ source = "git+https://github.com/synopackageland/syno-pkg-land-sdk?tag=v0.53.42#02d5b526c852b3bd30e4dc9031414c9907fadb57"
175
175
  dependencies = [
176
176
  "libc",
177
177
  "serde",
@@ -10,7 +10,7 @@ libc = "0.2"
10
10
  serde = { version = "1", features = ["derive"] }
11
11
  serde_json = "1"
12
12
  # The SDK version is the tag; `synopkgland check` reads it from Cargo.lock.
13
- syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.53.16" }
13
+ syno-pkg-land-app = { git = "https://github.com/synopackageland/syno-pkg-land-sdk", tag = "v0.53.42" }
14
14
 
15
15
  [profile.release]
16
16
  # A handler panic becomes an "internal" reply; abort would end the App without one.
@@ -26,7 +26,7 @@ run `synopkgland ctl generate`.
26
26
 
27
27
  ```sh
28
28
  cd frontend
29
- pnpm install --frozen-lockfile --prod=false
29
+ pnpm install --prod=false
30
30
  pnpm test
31
31
  pnpm run build
32
32
  ```