@synopackageland/templates 0.40.3 → 0.40.4

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.40.4
4
+
5
+ - Ignore private environment variants, key and certificate files, and npm credentials in every scaffold while keeping `.env.example` trackable
6
+ - Include placeholder-only environment examples for the optional AI tests
7
+ - Document secret storage under `synology/` for upstream forks without changing upstream ignore files
8
+ - Verify Git ignore behavior for every template and UI variant, including upstream forks, using the packed templates and actual CLI
9
+
3
10
  ## 0.40.3
4
11
 
5
12
  - Use CLI architecture names in local package tests and SDK constants in background-limit assertions
package/README.md CHANGED
@@ -354,6 +354,32 @@ configuration and DSM service definition, and upgrades retain the selection.
354
354
  Changing ports uses reinstall. Declare `{port: gateway_https}` runtime bindings
355
355
  when an upstream application needs its public port in its own configuration.
356
356
 
357
+ ## Secret files
358
+
359
+ Every scaffold ignores `.env`, `.env.*`, `*.pem`, `*.key`, `*.p12` and `.npmrc`
360
+ at any depth within its project. `.env.example` remains trackable and contains
361
+ only placeholders for the optional AI tests; those commands load `.env` from
362
+ their working directory. Copy the example only when configuring those tests.
363
+ Keep real credentials out of examples and commits.
364
+
365
+ Templates ship ignore files as `gitignore` because npm excludes `.gitignore`;
366
+ `synopkgland init` restores the `.gitignore` name in the generated project.
367
+ The scaffold tests use the actual packed templates to verify that behavior.
368
+
369
+ ### Upstream fork secret storage
370
+
371
+ For `init --upstream-fork`, all wrapper-owned files belong in `synology/`.
372
+ Store secrets in **`synology/.env`, never the fork root**, and run the optional
373
+ tests from `synology/`. Copy `synology/.env.example` only when configuring the
374
+ optional AI tests. Keep keys, certificates and private npm configuration under
375
+ `synology/` as well.
376
+
377
+ The upstream root `.gitignore` is not ours to edit and may not ignore a root
378
+ `.env`. The generated `synology/.gitignore` protects secrets inside `synology/`;
379
+ it cannot protect files in the parent directory. Preserve upstream ignore files
380
+ and history. Use the CLI's `synopkgland skill show upstream-fork` for the rest of
381
+ the fork workflow.
382
+
357
383
  ## App-open smoke
358
384
 
359
385
  Every generated project includes `tests/e2e/smoke.e2e.ts`, `e2e.config.ts` and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/templates",
3
- "version": "0.40.3",
3
+ "version": "0.40.4",
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": {
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Local tests
4
4
 
5
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
6
+
5
7
  From the project root, install the test tools before running the optional tests:
6
8
 
7
9
  ```sh
@@ -4,3 +4,9 @@ dist/
4
4
  # Private NAS smoke sessions and credentials
5
5
  .e2e/
6
6
  .env
7
+ .env.*
8
+ !.env.example
9
+ *.pem
10
+ *.key
11
+ *.p12
12
+ .npmrc
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Local tests
4
4
 
5
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
6
+
5
7
  From the project root, install the test tools before running the optional tests:
6
8
 
7
9
  ```sh
@@ -14,3 +16,12 @@ After committing the generated root lockfile, use `npm ci --include=dev`.
14
16
  Configure the upstream image and its real readiness endpoint before
15
17
  `test:local`; see `AGENTS.md` for the Compose packaging workflow.
16
18
 
19
+ ## Secrets in an upstream fork
20
+
21
+ With `--upstream-fork`, store secrets in `synology/.env`, never in the fork root.
22
+ Run the optional tests from `synology/`; its `.gitignore` protects `.env`,
23
+ `.env.*`, `*.pem`, `*.key`, `*.p12` and `.npmrc`, while `.env.example` remains
24
+ trackable with placeholders only. The upstream root `.gitignore` is not ours
25
+ to edit and may not ignore a root `.env`.
26
+ See the [fork guide](https://github.com/synopackageland/syno-pkg-land-templates#upstream-fork-secret-storage).
27
+
@@ -1,5 +1,11 @@
1
1
  node_modules/
2
2
  .e2e/
3
3
  .env
4
+ .env.*
5
+ !.env.example
6
+ *.pem
7
+ *.key
8
+ *.p12
9
+ .npmrc
4
10
  dist/
5
11
  *.spk
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -31,6 +31,8 @@ nonblocking job. See the SDK's [request deadline contract](https://github.com/sy
31
31
 
32
32
  ## Local tests
33
33
 
34
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
35
+
34
36
  From the project root, install the test tools before running the optional tests:
35
37
 
36
38
  ```sh
@@ -44,6 +46,15 @@ Before `npm run test:local`, prepare the backend and, for Vue, build the
44
46
  frontend using the steps below and the backend section in `AGENTS.md`, then
45
47
  run `synopkgland ctl generate`.
46
48
 
49
+ ## Secrets in an upstream fork
50
+
51
+ With `--upstream-fork`, store secrets in `synology/.env`, never in the fork root.
52
+ Run the optional tests from `synology/`; its `.gitignore` protects `.env`,
53
+ `.env.*`, `*.pem`, `*.key`, `*.p12` and `.npmrc`, while `.env.example` remains
54
+ trackable with placeholders only. The upstream root `.gitignore` is not ours
55
+ to edit and may not ignore a root `.env`.
56
+ See the [fork guide](https://github.com/synopackageland/syno-pkg-land-templates#upstream-fork-secret-storage).
57
+
47
58
  ## Quick start
48
59
 
49
60
  Needs Node.js with `synopkgland` installed, and Go 1.26.10.
@@ -3,3 +3,9 @@ dist/
3
3
  # Private NAS smoke sessions and credentials
4
4
  .e2e/
5
5
  .env
6
+ .env.*
7
+ !.env.example
8
+ *.pem
9
+ *.key
10
+ *.p12
11
+ .npmrc
@@ -9,6 +9,8 @@ files, portal, jobs and delegate components come from `@synopackageland/sdk/vue`
9
9
 
10
10
  ## Local tests
11
11
 
12
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
13
+
12
14
  From the project root, install the test tools before running the optional tests:
13
15
 
14
16
  ```sh
@@ -22,6 +24,17 @@ Before `npm run test:local`, prepare the backend and, for Vue, build the
22
24
  frontend using the steps below and the backend section in `AGENTS.md`, then
23
25
  run `synopkgland ctl generate`.
24
26
 
27
+ ## Secrets in an upstream fork
28
+
29
+ With `--upstream-fork`, store secrets in `synology/.env`, never in the fork root.
30
+ Run the optional tests from `synology/`; its `.gitignore` protects `.env`,
31
+ `.env.*`, `*.pem`, `*.key`, `*.p12` and `.npmrc`, while `.env.example` remains
32
+ trackable with placeholders only. The upstream root `.gitignore` is not ours
33
+ to edit and may not ignore a root `.env`.
34
+ See the [fork guide](https://github.com/synopackageland/syno-pkg-land-templates#upstream-fork-secret-storage).
35
+
36
+ ## Frontend
37
+
25
38
  ```sh
26
39
  cd frontend
27
40
  npm ci --include=dev
@@ -4,3 +4,9 @@ node_modules/
4
4
  # Private NAS smoke sessions and credentials
5
5
  .e2e/
6
6
  .env
7
+ .env.*
8
+ !.env.example
9
+ *.pem
10
+ *.key
11
+ *.p12
12
+ .npmrc
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -31,6 +31,8 @@ nonblocking job. See the SDK's [request deadline contract](https://github.com/sy
31
31
 
32
32
  ## Local tests
33
33
 
34
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
35
+
34
36
  From the project root, install the test tools before running the optional tests:
35
37
 
36
38
  ```sh
@@ -6,3 +6,9 @@ backend/app/*.js
6
6
  # Private NAS smoke sessions and credentials
7
7
  .e2e/
8
8
  .env
9
+ .env.*
10
+ !.env.example
11
+ *.pem
12
+ *.key
13
+ *.p12
14
+ .npmrc
@@ -9,6 +9,8 @@ delegate components come from `@synopackageland/sdk/vue` (types from
9
9
 
10
10
  ## Local tests
11
11
 
12
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
13
+
12
14
  From the project root, install the test tools before running the optional tests:
13
15
 
14
16
  ```sh
@@ -6,3 +6,9 @@ backend/app/*.js
6
6
  # Private NAS smoke sessions and credentials
7
7
  .e2e/
8
8
  .env
9
+ .env.*
10
+ !.env.example
11
+ *.pem
12
+ *.key
13
+ *.p12
14
+ .npmrc
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -31,6 +31,8 @@ nonblocking job. See the SDK's [request deadline contract](https://github.com/sy
31
31
 
32
32
  ## Local tests
33
33
 
34
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
35
+
34
36
  From the project root, install the test tools before running the optional tests:
35
37
 
36
38
  ```sh
@@ -4,3 +4,9 @@ __pycache__/
4
4
  # Private NAS smoke sessions and credentials
5
5
  .e2e/
6
6
  .env
7
+ .env.*
8
+ !.env.example
9
+ *.pem
10
+ *.key
11
+ *.p12
12
+ .npmrc
@@ -9,6 +9,8 @@ delegate components come from `@synopackageland/sdk/vue` (types from
9
9
 
10
10
  ## Local tests
11
11
 
12
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
13
+
12
14
  From the project root, install the test tools before running the optional tests:
13
15
 
14
16
  ```sh
@@ -5,3 +5,9 @@ node_modules/
5
5
  # Private NAS smoke sessions and credentials
6
6
  .e2e/
7
7
  .env
8
+ .env.*
9
+ !.env.example
10
+ *.pem
11
+ *.key
12
+ *.p12
13
+ .npmrc
@@ -0,0 +1,5 @@
1
+ # Optional AI tests only: replace these placeholders in your private .env.
2
+ # For an upstream fork, use synology/.env, never the fork root.
3
+ E2E_LLM_BASE_URL=https://api.example.com/v1
4
+ E2E_LLM_MODEL=replace-with-model
5
+ E2E_LLM_API_KEY=replace-with-api-key
@@ -31,6 +31,8 @@ nonblocking job. See the SDK's [request deadline contract](https://github.com/sy
31
31
 
32
32
  ## Local tests
33
33
 
34
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
35
+
34
36
  From the project root, install the test tools before running the optional tests:
35
37
 
36
38
  ```sh
@@ -4,3 +4,9 @@ backend/target/
4
4
  # Private NAS smoke sessions and credentials
5
5
  .e2e/
6
6
  .env
7
+ .env.*
8
+ !.env.example
9
+ *.pem
10
+ *.key
11
+ *.p12
12
+ .npmrc
@@ -9,6 +9,8 @@ delegate components come from `@synopackageland/sdk/vue` (types from
9
9
 
10
10
  ## Local tests
11
11
 
12
+ Copy `.env.example` to the ignored `.env` only for optional AI tests; keep real credentials out of examples and commits.
13
+
12
14
  From the project root, install the test tools before running the optional tests:
13
15
 
14
16
  ```sh
@@ -5,3 +5,9 @@ backend/target/
5
5
  # Private NAS smoke sessions and credentials
6
6
  .e2e/
7
7
  .env
8
+ .env.*
9
+ !.env.example
10
+ *.pem
11
+ *.key
12
+ *.p12
13
+ .npmrc