cabloy 5.1.59 → 5.1.60

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 (102) hide show
  1. package/.claude/skills/cabloy-contract-loop/SKILL.md +16 -0
  2. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +26 -0
  3. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +144 -0
  4. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +18 -0
  5. package/.claude/skills/cabloy-resource-field-update/SKILL.md +267 -0
  6. package/.claude/skills/cabloy-resource-field-update/evals/evals.json +53 -0
  7. package/.claude/skills/cabloy-resource-field-update/references/custom-renderer-demo-checklist.md +102 -0
  8. package/.claude/skills/cabloy-resource-field-update/references/field-update-decision-tree.md +120 -0
  9. package/.claude/skills/cabloy-resource-field-update/references/follow-up-checklist.md +80 -0
  10. package/.claude/skills/cabloy-resource-field-update/references/verification-checklist.md +97 -0
  11. package/.github/workflows/docs-pages.yml +2 -0
  12. package/.github/workflows/vona-cov-pg.yml +2 -0
  13. package/.github/workflows/vona-test-crud.yml +4 -2
  14. package/.github/workflows/vona-test-mysql.yml +2 -0
  15. package/.github/workflows/vona-test-pg.yml +2 -0
  16. package/.github/workflows/vona-test-sqlite3.yml +2 -0
  17. package/.github/workflows/vona-tsc.yml +2 -0
  18. package/.github/workflows/zova-ui.yml +2 -0
  19. package/.gitignore +0 -4
  20. package/CHANGELOG.md +30 -0
  21. package/CLAUDE.md +2 -0
  22. package/README.md +15 -0
  23. package/cabloy-docs/.vitepress/config.mjs +43 -0
  24. package/cabloy-docs/ai/class-placement-rule.md +2 -0
  25. package/cabloy-docs/ai/cli-to-skill-map.md +7 -0
  26. package/cabloy-docs/ai/future-skill-roadmap.md +17 -2
  27. package/cabloy-docs/backend/bean-scene-authoring.md +350 -0
  28. package/cabloy-docs/backend/cli.md +26 -1
  29. package/cabloy-docs/backend/foundation.md +28 -3
  30. package/cabloy-docs/backend/introduction.md +8 -0
  31. package/cabloy-docs/backend/service-guide.md +2 -0
  32. package/cabloy-docs/backend/websocket-call-flow.md +435 -0
  33. package/cabloy-docs/backend/websocket-guide.md +455 -0
  34. package/cabloy-docs/backend/websocket-protocol-guide.md +381 -0
  35. package/cabloy-docs/backend/websocket-usage-guide.md +356 -0
  36. package/cabloy-docs/frontend/bean-scene-authoring.md +372 -0
  37. package/cabloy-docs/frontend/behavior-guide.md +449 -0
  38. package/cabloy-docs/frontend/cli.md +12 -0
  39. package/cabloy-docs/frontend/introduction.md +5 -0
  40. package/cabloy-docs/frontend/ioc-and-beans.md +10 -9
  41. package/cabloy-docs/frontend/router-tabs-admin-web-comparison.md +206 -0
  42. package/cabloy-docs/frontend/router-tabs-introduction.md +106 -0
  43. package/cabloy-docs/frontend/router-tabs-mechanism.md +469 -0
  44. package/cabloy-docs/frontend/router-tabs-overview.md +227 -0
  45. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +343 -0
  46. package/cabloy-docs/frontend/ssr-architecture-overview.md +211 -0
  47. package/cabloy-docs/frontend/ssr-build-deploy-guide.md +308 -0
  48. package/cabloy-docs/frontend/ssr-review-checklist.md +184 -0
  49. package/cabloy-docs/frontend/ssr-troubleshooting-guide.md +301 -0
  50. package/cabloy-docs/fullstack/framework-performance.md +3 -3
  51. package/cabloy-docs/fullstack/introduction.md +29 -0
  52. package/cabloy-docs/fullstack/quickstart.md +7 -1
  53. package/cabloy-docs/fullstack/tutorial-1-first-module.md +111 -0
  54. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +122 -0
  55. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +131 -0
  56. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +119 -0
  57. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +144 -0
  58. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +168 -0
  59. package/cabloy-docs/fullstack/tutorials-overview.md +179 -0
  60. package/cabloy-docs/index.md +4 -3
  61. package/cabloy-docs/reference/bean-scene-boilerplates.md +73 -0
  62. package/cabloy-docs/reference/cli-reference.md +2 -0
  63. package/package.json +6 -2
  64. package/scripts/init.ts +18 -2
  65. package/vona/packages-cli/cabloy-cli/package.json +2 -2
  66. package/vona/packages-cli/cli/package.json +1 -1
  67. package/vona/packages-cli/cli-set-api/package.json +1 -1
  68. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.module.ts +4 -0
  69. package/vona/packages-vona/vona/package.json +1 -1
  70. package/vona/pnpm-lock.yaml +133 -1088
  71. package/vona/pnpm-workspace.yaml +0 -1
  72. package/vona/src/suite-vendor/a-vona/modules/a-core/assets/static/img/vona.svg +1 -1
  73. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  74. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  75. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +1 -1
  76. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
  77. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  78. package/zova/package.original.json +1 -1
  79. package/zova/packages-cli/cli/package.json +3 -3
  80. package/zova/packages-cli/cli-set-front/cli/templates/init/icon/boilerplate/icons/default/zova.svg +1 -1
  81. package/zova/packages-cli/cli-set-front/package.json +3 -3
  82. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.module.ts +4 -0
  83. package/zova/packages-cli/cli-set-front/src/lib/command/create.bean.ts +5 -1
  84. package/zova/packages-utils/zova-vite/package.json +2 -2
  85. package/zova/packages-zova/zova/package.json +2 -2
  86. package/zova/pnpm-lock.yaml +284 -1313
  87. package/zova/pnpm-workspace.yaml +0 -1
  88. package/zova/src/suite/a-home/modules/home-icon/icons/social/cabloy.svg +1 -1
  89. package/zova/src/suite/a-home/modules/home-icon/icons/social/vona.svg +1 -1
  90. package/zova/src/suite/a-home/modules/home-icon/icons/social/zova.svg +1 -1
  91. package/zova/src/suite/a-home/modules/home-icon/src/.metadata/icons/groups/social.svg +3 -3
  92. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +9 -0
  93. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  94. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +66 -16
  95. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  96. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  97. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +60 -18
  98. package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableActionRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  99. package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableCell/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  100. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  101. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  102. package/zova/src/suite-vendor/a-zova/package.json +4 -4
@@ -0,0 +1,179 @@
1
+ # Fullstack Quick Start Tutorials
2
+
3
+ <Badge type="info" text="Basic" />
4
+
5
+ This six-part tutorial series gives you one connected, AI-guided path into Cabloy fullstack development.
6
+
7
+ ## Why this series exists
8
+
9
+ Cabloy already has strong reference guides for CRUD, OpenAPI, DTO and entity contracts, schema-driven frontend rendering, and serialization. This series packages those capabilities into one simple workflow: each page gives you one focused prompt, AI completes the next increment, and you use the result to understand the framework model behind it.
10
+
11
+ The core rhythm is:
12
+
13
+ 1. each page provides one focused prompt
14
+ 2. AI completes the tutorial-sized increment
15
+ 3. the generated or affected files become the next teaching surface
16
+ 4. the result is verified in the running app or generated contract output
17
+ 5. deeper reference docs remain available when more background is needed
18
+
19
+ That makes the series practical as a guided, interactive workflow: each tutorial reduces the user action to one prompt, while the generated result becomes the teaching material for the next step.
20
+
21
+ ## The business scenario
22
+
23
+ Throughout the series, you will build and refine a small **Student Training Center** example.
24
+
25
+ The main business object is `student`, and the teaching fields are:
26
+
27
+ - `name`
28
+ - `description`
29
+ - `level`
30
+ - `mobile`
31
+
32
+ Why these fields?
33
+
34
+ - `level` is a good field for schema-driven form and table rendering
35
+ - `mobile` is a good field for validation, OpenAPI output, and serialization or masking
36
+
37
+ This keeps the storyline small enough for beginners while still showing Cabloy’s fullstack contract model.
38
+
39
+ At the beginning of the series, the `demo-student` module does not exist yet. The tutorials build it step by step.
40
+
41
+ ## What you should prepare first
42
+
43
+ Before starting this tutorial series, make sure you already know:
44
+
45
+ - how to bootstrap a Cabloy Basic project
46
+ - how to run the repo from the root
47
+ - how to discover command families through `npm run vona` and `npm run zova`
48
+
49
+ Read these pages first:
50
+
51
+ - [Fullstack Quickstart](/fullstack/quickstart)
52
+ - [Fullstack CLI](/fullstack/cli)
53
+ - [CLI Reference](/reference/cli-reference)
54
+
55
+ Those pages explain the repo entrypoints and the CLI-first workflow model that the tutorial prompts will reuse throughout this series.
56
+
57
+ ## The learning path
58
+
59
+ ### Phase 1: Create the module and CRUD thread
60
+
61
+ - [Tutorial 1: Create Your First Module](/fullstack/tutorial-1-first-module)
62
+ - [Tutorial 2: Create Your First CRUD](/fullstack/tutorial-2-first-crud)
63
+
64
+ ### Phase 2: Share frontend rendering metadata through the backend contract
65
+
66
+ - [Tutorial 3: Frontend Metadata Sharing](/fullstack/tutorial-3-frontend-metadata-sharing)
67
+ - [Tutorial 4: Custom Form/Table Renderers for Level](/fullstack/tutorial-4-custom-level-renderers)
68
+
69
+ ### Phase 3: Share backend contracts forward into frontend consumption
70
+
71
+ - [Tutorial 5: Backend Contract Sharing](/fullstack/tutorial-5-backend-contract-sharing)
72
+
73
+ ### Phase 4: Understand one contract surface through one field story
74
+
75
+ - [Tutorial 6: One Contract Surface, Four Uses](/fullstack/tutorial-6-one-contract-four-uses)
76
+
77
+ ## The standard tutorial structure
78
+
79
+ All six tutorials in this series follow the same learning structure:
80
+
81
+ 1. `Goal`
82
+ 2. `AI Prompt`
83
+ 3. `Why this step matters`
84
+ 4. `CLI commands to inspect/use`
85
+ 5. `Generated or affected files`
86
+ 6. `What those files mean in the business thread`
87
+ 7. `Verification`
88
+ 8. `Read more`
89
+ 9. `Next step`
90
+
91
+ This makes the series easier to execute one page at a time: each page gives AI one clear increment, and the resulting output teaches why that step fits the Cabloy architecture.
92
+
93
+ ## How to use this series with AI
94
+
95
+ Keep this series simple.
96
+
97
+ In each tutorial, your main job is to copy the prompt from the page and give it to AI.
98
+
99
+ That prompt already tells AI how to work in the Cabloy way, including things like:
100
+
101
+ - inspect the CLI first
102
+ - perform only the current tutorial increment
103
+ - explain the commands it used
104
+ - explain the business meaning of the generated or changed files
105
+ - tell you what to verify next
106
+
107
+ So for the user, the workflow is intentionally lightweight:
108
+
109
+ 1. open the current tutorial
110
+ 2. copy the prompt
111
+ 3. send it to AI
112
+ 4. review the result and continue to the next tutorial when ready
113
+
114
+ ## CLI-first rule
115
+
116
+ This series assumes that AI should follow Cabloy’s CLI-first workflow before attempting manual scaffolding.
117
+
118
+ In practice, the tutorial prompt should push AI to follow this rule:
119
+
120
+ 1. inspect the existing CLI family
121
+ 2. run the matching generator or tooling command
122
+ 3. inspect the generated result
123
+ 4. make only the minimal manual follow-up changes that the business case still needs
124
+
125
+ Shared discovery commands from the repo root:
126
+
127
+ ```bash
128
+ npm run vona :
129
+ npm run vona :create
130
+ npm run vona :tools
131
+
132
+ npm run zova :
133
+ npm run zova :create
134
+ npm run zova :openapi
135
+ ```
136
+
137
+ This is one of the most important Cabloy rules for AI-driven development in this series.
138
+
139
+ ## Suggested reading rhythm
140
+
141
+ This series is designed to progress one prompt at a time.
142
+
143
+ Each tutorial assumes that the previous result remains in place, so the workflow should stay incremental:
144
+
145
+ 1. complete the current tutorial prompt
146
+ 2. keep the generated result
147
+ 3. continue to the next tutorial on top of that result
148
+
149
+ If a tutorial creates a new module, the local dev workflow may need `npm run dev` again so the new module is picked up before the next step.
150
+
151
+ Do not jump directly to SDK generation or custom renderers before the module and CRUD thread are in place.
152
+
153
+ ## What you will understand by the end
154
+
155
+ After the six tutorials, the completed workflow should make these Cabloy ideas clear:
156
+
157
+ - when to use Vona and when to use Zova
158
+ - why CRUD generation usually comes before hand-written backend boilerplate
159
+ - how backend field metadata can reuse frontend render resources
160
+ - how to evolve from built-in renderers to custom renderers
161
+ - how backend OpenAPI contracts regenerate frontend SDKs and model helpers
162
+ - how validation, rendering, OpenAPI, and serialization fit into one field-oriented contract model
163
+
164
+ ## Read together with
165
+
166
+ The deeper reference guides behind this workflow include:
167
+
168
+ - [CRUD Workflow](/backend/crud-workflow)
169
+ - [Entity Guide](/backend/entity-guide)
170
+ - [DTO Guide](/backend/dto-guide)
171
+ - [Validation Guide](/backend/validation-guide)
172
+ - [OpenAPI Guide](/backend/openapi-guide)
173
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
174
+ - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
175
+ - [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
176
+ - [API Schema Guide](/frontend/api-schema-guide)
177
+ - [Serialization Guide](/backend/serialization-guide)
178
+
179
+ This series is not meant to replace those guides. It is meant to help you move through them in one practical, task-driven order.
@@ -51,9 +51,10 @@ Start here to learn the shared Cabloy architecture, see how Vona and Zova fit to
51
51
  ### For getting started
52
52
 
53
53
  1. [Fullstack Quickstart](/fullstack/quickstart)
54
- 2. [Editions Overview](/editions/overview)
55
- 3. [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start)
56
- 4. [Fullstack Introduction](/fullstack/introduction)
54
+ 2. [Fullstack Quick Start Tutorials](/fullstack/tutorials-overview)
55
+ 3. [Editions Overview](/editions/overview)
56
+ 4. [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start)
57
+ 5. [Fullstack Introduction](/fullstack/introduction)
57
58
 
58
59
  ### For contributors and AI vibe coding workflows
59
60
 
@@ -0,0 +1,73 @@
1
+ # Bean Scene Boilerplate Variants
2
+
3
+ This page is the fast lookup surface for backend Vona and frontend Zova bean scenes that expose more than one CLI scaffold template.
4
+
5
+ Use it when you need to answer questions such as:
6
+
7
+ - does this bean scene support `--boilerplate=...`
8
+ - which variant names are currently defined
9
+ - where is the source module metadata for that scene
10
+
11
+ ## Shared rule
12
+
13
+ Vona and Zova follow the same practical lookup rule for bean-scene boilerplate variants:
14
+
15
+ - `boilerplate` provides the default template
16
+ - `--boilerplate=web` maps to `boilerplateWeb`
17
+ - more generally, `--boilerplate=name` maps to `boilerplateName`
18
+
19
+ That means the available variants are scene-defined metadata, not a universal list shared by every scene.
20
+
21
+ A practical contributor rule is:
22
+
23
+ 1. use the default template unless you know the scene exposes a named variant
24
+ 2. check this page first for current built-in examples
25
+ 3. if needed, verify the owning module `package.json` metadata before assuming a variant exists
26
+
27
+ ## Backend Vona
28
+
29
+ ### Current built-in scenes with variants
30
+
31
+ | Scene | Default metadata key | Named variant keys | Example command | Source module |
32
+ | -------------- | -------------------- | ------------------- | --------------------------------------------------------------------------------------------- | ---------------------- |
33
+ | `filter` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean filter log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
34
+ | `pipe` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean pipe log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
35
+ | `interceptor` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean interceptor log -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
36
+ | `guard` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean guard auth -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
37
+ | `middleware` | `boilerplate` | `boilerplateGlobal` | `npm run vona :create:bean middleware trace -- --module=demo-student --boilerplate=global` | `vona-module-a-aspect` |
38
+ | `ssrMenu` | `boilerplate` | `boilerplateWeb` | `npm run vona :create:bean ssrMenu menuTest -- --module=demo-student --boilerplate=web` | `vona-module-a-ssr` |
39
+ | `ssrMenuGroup` | `boilerplate` | `boilerplateWeb` | `npm run vona :create:bean ssrMenuGroup groupTest -- --module=demo-student --boilerplate=web` | `vona-module-a-ssr` |
40
+
41
+ These backend entries come from the current `vonaModule.onions` metadata in `a-aspect` and `a-ssr`.
42
+
43
+ ## Frontend Zova
44
+
45
+ ### Current built-in scenes with variants
46
+
47
+ | Scene | Default metadata key | Named variant keys | Example command pattern | Source module |
48
+ | ----------- | -------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------- |
49
+ | `command` | `boilerplate` | `boilerplateCommandBulk`, `boilerplateCommandRow` | `npm run zova :create:bean command test -- --module=demo-student --boilerplate=commandRow` | `zova-module-a-command` |
50
+ | `tableCell` | `boilerplate` | `boilerplateTableActionRow` | `npm run zova :create:bean tableCell test -- --module=demo-student --boilerplate=tableActionRow` | `zova-module-a-table` |
51
+
52
+ These frontend entries come from the current `zovaModule.onions` metadata in `a-command` and `a-table`.
53
+
54
+ ## Guidance for AI-assisted development
55
+
56
+ Do not assume every bean scene supports named variants.
57
+
58
+ For reliable AI-assisted workflow selection:
59
+
60
+ 1. choose `npm run vona` for backend bean scenes and `npm run zova` for frontend bean scenes
61
+ 2. check whether the current scene is listed on this page
62
+ 3. if it is not listed, verify the owning module metadata before recommending `--boilerplate=...`
63
+ 4. treat this page as a current built-in lookup surface, not as a promise that all future scenes will follow the same naming set
64
+
65
+ ## Related guides
66
+
67
+ Use this page together with:
68
+
69
+ - [Backend CLI](/backend/cli)
70
+ - [Frontend CLI](/frontend/cli)
71
+ - [Backend Bean Scene Authoring](/backend/bean-scene-authoring)
72
+ - [Frontend Bean Scene Authoring](/frontend/bean-scene-authoring)
73
+ - [CLI Reference](/reference/cli-reference)
@@ -81,6 +81,8 @@ Representative command modules:
81
81
  - `vona/packages-cli/cli-set-api/src/lib/command/bin.play.ts`
82
82
  - `zova/packages-cli/cli-set-front/src/lib/command/tools.metadata.ts`
83
83
 
84
+ When a `:create:bean` workflow depends on scene-specific boilerplate variants, also see [Bean Scene Boilerplate Variants](/reference/bean-scene-boilerplates).
85
+
84
86
  This is the preferred path for both humans and AI agents because it follows the real registration flow instead of relying on scattered examples.
85
87
 
86
88
  ## Related guides
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.59",
3
+ "version": "5.1.60",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -32,11 +32,15 @@
32
32
  "build": "npm run build:zova && pnpm --dir vona run build",
33
33
  "build:docker": "npm run build:zova && pnpm --dir vona run build:docker",
34
34
  "build:zova": "pnpm --dir zova run build:ssr:cabloyBasicBatch",
35
+ "build:zova:admin": "pnpm --dir zova run build:ssr:cabloyBasicAdmin && pnpm --dir zova run build:rest:cabloyBasicAdmin",
36
+ "build:zova:web": "pnpm --dir zova run build:ssr:cabloyBasicWeb && pnpm --dir zova run build:rest:cabloyBasicWeb",
35
37
  "start": "cd vona && npm run start",
36
38
  "start:one": "cd vona && npm run start:one",
37
39
  "test": "cd vona && npm run test",
38
40
  "tsc": "npm run tsc:zova && pnpm --dir vona run tsc",
39
41
  "tsc:zova": "pnpm --dir zova run tsc",
42
+ "deps:vona": "pnpm --dir vona run vona :tools:deps",
43
+ "deps:zova": "pnpm --dir zova run zova :tools:deps",
40
44
  "format": "oxfmt --check",
41
45
  "format:fix": "oxfmt --write",
42
46
  "lint": "oxlint",
@@ -66,7 +70,7 @@
66
70
  "minimist": "^1.2.8",
67
71
  "oxfmt": "^0.45.0",
68
72
  "oxlint": "^1.65.0",
69
- "tar": "^7.5.11",
73
+ "tar": "^7.5.16",
70
74
  "textlint": "^15.7.0",
71
75
  "textlint-rule-en-no-mixed-period": "^3.0.2",
72
76
  "textlint-rule-ja-no-mixed-period": "^3.0.2",
package/scripts/init.ts CHANGED
@@ -247,7 +247,22 @@ function buildSsrCabloyBasicStartBatch(): void {
247
247
  }
248
248
  }
249
249
 
250
- // --- Step F: cleanupWorkspaceYaml ---
250
+ // --- Step F: initTestData ---
251
+
252
+ function initTestData(): void {
253
+ // eslint-disable-next-line
254
+ console.log('[init] Initializing test data via npm run test...');
255
+ try {
256
+ exec('npm run test');
257
+ } catch {
258
+ // eslint-disable-next-line
259
+ console.warn(
260
+ '[init] npm run test failed after init completed; Redis may be unavailable, skipping test data initialization',
261
+ );
262
+ }
263
+ }
264
+
265
+ // --- Step G: cleanupWorkspaceYaml ---
251
266
 
252
267
  function cleanupWorkspaceYaml(): void {
253
268
  const subProjects = ['vona', 'zova'];
@@ -268,7 +283,7 @@ function cleanupWorkspaceYaml(): void {
268
283
  }
269
284
  }
270
285
 
271
- // --- Step G: init:cabloy-docs ---
286
+ // --- Step H: init:cabloy-docs ---
272
287
 
273
288
  function initCabloyDocs(): void {
274
289
  const pkgPath = resolve(CABLOY_DOCS_DIR, 'package.json');
@@ -291,5 +306,6 @@ initZova();
291
306
  initCabloyDocs();
292
307
  buildSsrCabloyBasicStartBatch();
293
308
  writeVersionMarker();
309
+ initTestData();
294
310
  // eslint-disable-next-line
295
311
  console.log('[init] Done!');
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabloy/cli",
3
- "version": "3.1.17",
3
+ "version": "3.1.18",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "@cabloy/cli",
6
6
  "keywords": [
@@ -55,7 +55,7 @@
55
55
  "is-type-of": "^2.2.0",
56
56
  "istextorbinary": "^3.3.0",
57
57
  "semver": "^7.7.4",
58
- "tmp": "^0.2.5",
58
+ "tmp": "^0.2.7",
59
59
  "urllib": "^4.9.0"
60
60
  },
61
61
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli",
3
- "version": "1.1.111",
3
+ "version": "1.1.112",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona-cli-set-api",
3
- "version": "1.1.109",
3
+ "version": "1.1.110",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "vona cli-set-api",
6
6
  "keywords": [
@@ -81,5 +81,9 @@ export class CliCreateModule extends BeanCliBase {
81
81
  if (!argv.vscode && !argv.ci) {
82
82
  await this.helper.pnpmInstall();
83
83
  }
84
+ // tools.metadata
85
+ if (!argv.nometadata) {
86
+ await this.helper.invokeCli([':tools:metadata', moduleName], { cwd: argv.projectPath });
87
+ }
84
88
  }
85
89
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vona",
3
- "version": "5.1.47",
3
+ "version": "5.1.48",
4
4
  "gitHead": "a79189b882c17af5911573896a781bbb0046d37d",
5
5
  "description": "Vona is an intuitive, elegant and powerful Node.js framework for rapidly developing enterprise applications of any size",
6
6
  "keywords": [