cabloy 5.1.59 → 5.1.61

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 (149) hide show
  1. package/.claude/hooks/contract-loop-gate.ts +296 -0
  2. package/.claude/settings.json +16 -0
  3. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +1 -0
  4. package/.claude/skills/cabloy-contract-loop/SKILL.md +103 -14
  5. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +126 -12
  6. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +148 -0
  7. package/.claude/skills/cabloy-contract-loop/references/verification-checklist.md +49 -13
  8. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +11 -0
  9. package/.claude/skills/cabloy-frontend-scaffold/references/follow-up-checklist.md +2 -0
  10. package/.claude/skills/cabloy-module-removal/SKILL.md +144 -0
  11. package/.claude/skills/cabloy-resource-field-update/SKILL.md +274 -0
  12. package/.claude/skills/cabloy-resource-field-update/evals/evals.json +53 -0
  13. package/.claude/skills/cabloy-resource-field-update/references/custom-renderer-demo-checklist.md +102 -0
  14. package/.claude/skills/cabloy-resource-field-update/references/field-update-decision-tree.md +120 -0
  15. package/.claude/skills/cabloy-resource-field-update/references/follow-up-checklist.md +80 -0
  16. package/.claude/skills/cabloy-resource-field-update/references/verification-checklist.md +97 -0
  17. package/.claude/skills/cabloy-zova-source-reading/SKILL.md +221 -0
  18. package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +91 -0
  19. package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +117 -0
  20. package/.github/workflows/docs-pages.yml +2 -0
  21. package/.github/workflows/vona-cov-pg.yml +2 -0
  22. package/.github/workflows/vona-test-crud.yml +4 -2
  23. package/.github/workflows/vona-test-mysql.yml +2 -0
  24. package/.github/workflows/vona-test-pg.yml +2 -0
  25. package/.github/workflows/vona-test-sqlite3.yml +2 -0
  26. package/.github/workflows/vona-tsc.yml +2 -0
  27. package/.github/workflows/zova-ui.yml +2 -0
  28. package/.gitignore +0 -4
  29. package/CHANGELOG.md +52 -0
  30. package/CLAUDE.md +12 -0
  31. package/README.md +15 -0
  32. package/cabloy-docs/.vitepress/config.mjs +89 -0
  33. package/cabloy-docs/ai/class-placement-rule.md +2 -0
  34. package/cabloy-docs/ai/cli-to-skill-map.md +14 -0
  35. package/cabloy-docs/ai/docs-skills-rules-mapping.md +14 -0
  36. package/cabloy-docs/ai/future-skill-roadmap.md +27 -9
  37. package/cabloy-docs/ai/introduction.md +1 -0
  38. package/cabloy-docs/ai/playbook-backend-module.md +6 -0
  39. package/cabloy-docs/ai/playbook-module-removal.md +164 -0
  40. package/cabloy-docs/ai/skills.md +11 -0
  41. package/cabloy-docs/backend/bean-scene-authoring.md +350 -0
  42. package/cabloy-docs/backend/cli.md +26 -1
  43. package/cabloy-docs/backend/dto-guide.md +6 -0
  44. package/cabloy-docs/backend/entity-guide.md +18 -0
  45. package/cabloy-docs/backend/foundation.md +28 -3
  46. package/cabloy-docs/backend/introduction.md +10 -0
  47. package/cabloy-docs/backend/serialization-guide.md +10 -0
  48. package/cabloy-docs/backend/service-guide.md +2 -0
  49. package/cabloy-docs/backend/status-guide.md +271 -0
  50. package/cabloy-docs/backend/websocket-call-flow.md +435 -0
  51. package/cabloy-docs/backend/websocket-guide.md +455 -0
  52. package/cabloy-docs/backend/websocket-protocol-guide.md +381 -0
  53. package/cabloy-docs/backend/websocket-usage-guide.md +356 -0
  54. package/cabloy-docs/frontend/api-guide.md +2 -0
  55. package/cabloy-docs/frontend/bean-scene-authoring.md +374 -0
  56. package/cabloy-docs/frontend/behavior-guide.md +449 -0
  57. package/cabloy-docs/frontend/cli.md +24 -0
  58. package/cabloy-docs/frontend/command-scene-authoring.md +495 -0
  59. package/cabloy-docs/frontend/design-principles.md +6 -0
  60. package/cabloy-docs/frontend/fetch-interceptor-guide.md +440 -0
  61. package/cabloy-docs/frontend/form-guide.md +795 -0
  62. package/cabloy-docs/frontend/foundation.md +29 -0
  63. package/cabloy-docs/frontend/introduction.md +17 -1
  64. package/cabloy-docs/frontend/ioc-and-beans.md +16 -9
  65. package/cabloy-docs/frontend/mock-guide.md +1 -0
  66. package/cabloy-docs/frontend/model-architecture.md +252 -39
  67. package/cabloy-docs/frontend/model-resource-best-practices.md +379 -0
  68. package/cabloy-docs/frontend/model-resource-cookbook.md +505 -0
  69. package/cabloy-docs/frontend/model-resource-owner-pattern.md +382 -0
  70. package/cabloy-docs/frontend/model-resource-usage-guide.md +318 -0
  71. package/cabloy-docs/frontend/model-state-guide.md +366 -13
  72. package/cabloy-docs/frontend/openapi-sdk-guide.md +5 -2
  73. package/cabloy-docs/frontend/page-guide.md +6 -0
  74. package/cabloy-docs/frontend/quickstart.md +4 -0
  75. package/cabloy-docs/frontend/reading-zova-for-vue-developers.md +266 -0
  76. package/cabloy-docs/frontend/router-tabs-admin-web-comparison.md +206 -0
  77. package/cabloy-docs/frontend/router-tabs-introduction.md +106 -0
  78. package/cabloy-docs/frontend/router-tabs-mechanism.md +469 -0
  79. package/cabloy-docs/frontend/router-tabs-overview.md +227 -0
  80. package/cabloy-docs/frontend/router-tabs-route-meta-cookbook.md +343 -0
  81. package/cabloy-docs/frontend/server-data.md +2 -0
  82. package/cabloy-docs/frontend/ssr-architecture-overview.md +211 -0
  83. package/cabloy-docs/frontend/ssr-build-deploy-guide.md +308 -0
  84. package/cabloy-docs/frontend/ssr-review-checklist.md +184 -0
  85. package/cabloy-docs/frontend/ssr-troubleshooting-guide.md +301 -0
  86. package/cabloy-docs/frontend/zova-form-source-reading-map.md +295 -0
  87. package/cabloy-docs/frontend/zova-form-under-the-hood.md +556 -0
  88. package/cabloy-docs/frontend/zova-reactivity-under-the-hood.md +320 -0
  89. package/cabloy-docs/frontend/zova-source-reading-map.md +327 -0
  90. package/cabloy-docs/frontend/zova-vs-vue3-comparison.md +308 -0
  91. package/cabloy-docs/fullstack/contract-loop-playbook.md +350 -0
  92. package/cabloy-docs/fullstack/framework-performance.md +3 -3
  93. package/cabloy-docs/fullstack/frontend-metadata-to-backend.md +44 -1
  94. package/cabloy-docs/fullstack/introduction.md +40 -0
  95. package/cabloy-docs/fullstack/openapi-to-sdk.md +19 -9
  96. package/cabloy-docs/fullstack/quickstart.md +7 -1
  97. package/cabloy-docs/fullstack/tutorial-1-first-module.md +111 -0
  98. package/cabloy-docs/fullstack/tutorial-2-first-crud.md +122 -0
  99. package/cabloy-docs/fullstack/tutorial-3-frontend-metadata-sharing.md +131 -0
  100. package/cabloy-docs/fullstack/tutorial-4-custom-level-renderers.md +144 -0
  101. package/cabloy-docs/fullstack/tutorial-5-backend-contract-sharing.md +146 -0
  102. package/cabloy-docs/fullstack/tutorial-6-one-contract-four-uses.md +170 -0
  103. package/cabloy-docs/fullstack/tutorials-overview.md +192 -0
  104. package/cabloy-docs/index.md +4 -3
  105. package/cabloy-docs/reference/bean-scene-boilerplates.md +75 -0
  106. package/cabloy-docs/reference/cli-reference.md +2 -0
  107. package/package.json +7 -2
  108. package/scripts/initTestData.ts +25 -0
  109. package/scripts/upgrade.ts +17 -2
  110. package/vona/packages-cli/cabloy-cli/package.json +2 -2
  111. package/vona/packages-cli/cli/package.json +1 -1
  112. package/vona/packages-cli/cli-set-api/package.json +1 -1
  113. package/vona/packages-cli/cli-set-api/src/lib/bean/cli.create.module.ts +4 -0
  114. package/vona/packages-vona/vona/package.json +1 -1
  115. package/vona/pnpm-lock.yaml +226 -1091
  116. package/vona/pnpm-workspace.yaml +0 -1
  117. package/vona/src/suite-vendor/a-vona/modules/a-core/assets/static/img/vona.svg +1 -1
  118. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  119. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  120. package/vona/src/suite-vendor/a-vona/modules/a-permission/src/bean/bean.permission.ts +1 -1
  121. package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
  122. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  123. package/zova/package.original.json +1 -1
  124. package/zova/packages-cli/cli/package.json +3 -3
  125. package/zova/packages-cli/cli-set-front/cli/templates/init/icon/boilerplate/icons/default/zova.svg +1 -1
  126. package/zova/packages-cli/cli-set-front/cli/templates/openapi/config/boilerplate/module/openapi.config.ts +6 -1
  127. package/zova/packages-cli/cli-set-front/package.json +3 -3
  128. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.create.module.ts +4 -0
  129. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.openapi.generate.ts +34 -4
  130. package/zova/packages-cli/cli-set-front/src/lib/command/create.bean.ts +5 -1
  131. package/zova/packages-utils/zova-vite/package.json +2 -2
  132. package/zova/packages-zova/zova/package.json +2 -2
  133. package/zova/pnpm-lock.yaml +282 -1311
  134. package/zova/pnpm-workspace.yaml +0 -1
  135. package/zova/src/suite/a-home/modules/home-icon/icons/social/cabloy.svg +1 -1
  136. package/zova/src/suite/a-home/modules/home-icon/icons/social/vona.svg +1 -1
  137. package/zova/src/suite/a-home/modules/home-icon/icons/social/zova.svg +1 -1
  138. package/zova/src/suite/a-home/modules/home-icon/src/.metadata/icons/groups/social.svg +3 -3
  139. package/zova/src/suite/cabloy-basic/modules/basic-select/src/component/formFieldSelect/controller.tsx +9 -0
  140. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +1 -1
  141. package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/src/model/resource.ts +66 -16
  142. package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
  143. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +1 -1
  144. package/zova/src/suite-vendor/a-zova/modules/a-routertabs/src/model/tabs.ts +60 -18
  145. package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableActionRow/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  146. package/zova/src/suite-vendor/a-zova/modules/a-table/cli/tableCell/boilerplate/{{sceneName}}.{{beanName}}.tsx_ +6 -1
  147. package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +1 -1
  148. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  149. package/zova/src/suite-vendor/a-zova/package.json +4 -4
@@ -0,0 +1,308 @@
1
+ # SSR Build and Deploy Guide
2
+
3
+ This guide explains the public SSR build and deploy workflow in Zova within the Cabloy monorepo.
4
+
5
+ ## Why this page exists
6
+
7
+ The other SSR pages explain architecture, behavior, and troubleshooting.
8
+
9
+ This page answers a more operational question:
10
+
11
+ - how do you build and package SSR output correctly for Cabloy?
12
+
13
+ That matters because Cabloy SSR is a fullstack workflow, not only a frontend build command.
14
+
15
+ A complete SSR deployment path usually needs all of these pieces to stay aligned:
16
+
17
+ - the correct frontend SSR flavor build
18
+ - any related REST/type generation steps used by the target workflow
19
+ - the backend runtime that consumes the built frontend output
20
+ - environment/config choices that differ between dev and prod
21
+
22
+ ## Start from the shared root scripts
23
+
24
+ In Cabloy Basic, the root `package.json` is the first workflow surface.
25
+
26
+ Representative current root scripts include:
27
+
28
+ ```bash
29
+ npm run dev:zova:admin
30
+ npm run dev:zova:web
31
+ npm run build:zova
32
+ npm run build:zova:admin
33
+ npm run build:zova:web
34
+ npm run build
35
+ ```
36
+
37
+ A practical rule is:
38
+
39
+ 1. start from the root wrapper when the normal repo workflow already covers your need
40
+ 2. drop into deeper Zova flavor-specific scripts only when you need tighter control or debugging detail
41
+
42
+ Read together with:
43
+
44
+ - [Repo Scripts](/reference/repo-scripts)
45
+ - [Frontend Scripts](/frontend/scripts)
46
+ - [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration)
47
+
48
+ ## Detect the edition first
49
+
50
+ Before documenting or automating SSR build commands, detect the active edition.
51
+
52
+ In the current public repo:
53
+
54
+ - `__CABLOY_BASIC__` means Cabloy Basic
55
+ - current public root wrappers target Basic-specific flavors such as `cabloyBasicAdmin` and `cabloyBasicWeb`
56
+
57
+ For Cabloy Start:
58
+
59
+ - the same high-level SSR workflow still applies
60
+ - but flavor names, site baselines, assets, and project paths can differ
61
+ - do not reuse Basic flavor examples blindly in Start-specific documentation or automation
62
+
63
+ ## Two common workflow levels
64
+
65
+ ### Level 1: root-wrapper workflow
66
+
67
+ Use this when you want the standard Cabloy Basic monorepo workflow.
68
+
69
+ Representative commands:
70
+
71
+ ```bash
72
+ npm run dev:zova:admin
73
+ npm run dev:zova:web
74
+ npm run build:zova
75
+ npm run build
76
+ ```
77
+
78
+ Practical interpretation:
79
+
80
+ - `dev:zova:*` is for normal frontend SSR development entry
81
+ - `build:zova` builds frontend SSR output in batch mode
82
+ - `build:zova:admin` and `build:zova:web` are explicit root-wrapper paths for flavor-specific SSR output plus related REST generation
83
+ - `build` is the fullstack alignment path when frontend and backend output should move together
84
+
85
+ ### Level 2: flavor-specific Zova workflow
86
+
87
+ Use this when you need appMode/flavor detail explicitly.
88
+
89
+ Representative current Basic examples include:
90
+
91
+ ```bash
92
+ cd zova && npm run dev:ssr:cabloyBasicAdmin
93
+ cd zova && npm run dev:ssr:cabloyBasicWeb
94
+ cd zova && npm run build:ssr:cabloyBasicAdmin
95
+ cd zova && npm run build:ssr:cabloyBasicWeb
96
+ cd zova && npm run build:rest:cabloyBasicAdmin
97
+ cd zova && npm run build:rest:cabloyBasicWeb
98
+ ```
99
+
100
+ This level is useful when you need to separate:
101
+
102
+ - admin vs web
103
+ - SSR output vs REST/type output
104
+ - root-wrapper behavior vs lower-level flavor behavior
105
+
106
+ ## Development workflow
107
+
108
+ A normal SSR development workflow in Cabloy Basic is:
109
+
110
+ ```bash
111
+ npm run dev:zova:admin
112
+ ```
113
+
114
+ or:
115
+
116
+ ```bash
117
+ npm run dev:zova:web
118
+ ```
119
+
120
+ Use this when the task is:
121
+
122
+ - page development
123
+ - route debugging
124
+ - SSR UI iteration
125
+ - hydration behavior review
126
+
127
+ If you need deeper script control or need to verify the exact Zova flavor path, inspect the flavor-specific scripts described in [Frontend Scripts](/frontend/scripts).
128
+
129
+ ## Build workflow
130
+
131
+ ### Build frontend SSR output only
132
+
133
+ Use this when you need the frontend SSR artifacts refreshed but do not yet need the full backend build flow.
134
+
135
+ Representative current Basic command:
136
+
137
+ ```bash
138
+ npm run build:zova
139
+ ```
140
+
141
+ This is the first useful step when:
142
+
143
+ - frontend SSR code changed
144
+ - static assets or SSR bundle output need regeneration
145
+ - you want to distinguish frontend build problems from backend runtime problems
146
+
147
+ ### Build the fullstack output together
148
+
149
+ Use this when frontend SSR output and backend runtime should be aligned in one workflow.
150
+
151
+ Representative current root command:
152
+
153
+ ```bash
154
+ npm run build
155
+ ```
156
+
157
+ In the current repo, this means:
158
+
159
+ - build Zova SSR output first
160
+ - then build Vona
161
+
162
+ This is the safer default when a change crosses the frontend/backend SSR boundary.
163
+
164
+ ## Where REST/type generation fits
165
+
166
+ Some workflows need more than SSR HTML output alone.
167
+
168
+ In current Basic examples, there are separate REST/type generation commands such as:
169
+
170
+ ```bash
171
+ cd zova && npm run build:rest:cabloyBasicAdmin
172
+ cd zova && npm run build:rest:cabloyBasicWeb
173
+ ```
174
+
175
+ Treat these deliberately.
176
+
177
+ Use them when the workflow depends on generated contract-aligned frontend surfaces in addition to SSR bundle output.
178
+
179
+ Do **not** assume every SSR-only change needs manual extra regeneration, but do verify whether your target workflow depends on these generated artifacts.
180
+
181
+ ## Dev vs prod mindset
182
+
183
+ A frequent SSR mistake is assuming that “works in dev” means “ready for deploy.”
184
+
185
+ Dev and prod can differ in important ways:
186
+
187
+ - dev may proxy through a frontend dev server
188
+ - prod depends on built SSR output and built client assets
189
+ - asset path assumptions can differ after build
190
+ - runtime env/config choices can differ between dev and prod
191
+
192
+ That is why SSR deployment work should always include both:
193
+
194
+ 1. the build step
195
+ 2. a targeted verification pass against built behavior
196
+
197
+ Read together with:
198
+
199
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
200
+ - [Environment and Config Guide](/frontend/environment-config-guide)
201
+
202
+ ## Practical deployment checklist
203
+
204
+ Use this checklist before treating an SSR build as deploy-ready.
205
+
206
+ ### 1. confirm the target edition and flavor
207
+
208
+ Ask:
209
+
210
+ - am I in Cabloy Basic or Cabloy Start?
211
+ - is this admin or web?
212
+ - am I using the correct SSR flavor for that target?
213
+
214
+ ### 2. confirm the intended workflow level
215
+
216
+ Ask:
217
+
218
+ - is the root wrapper enough?
219
+ - do I need the lower-level Zova flavor script for this task?
220
+ - does the workflow also depend on REST/type generation?
221
+
222
+ ### 3. rebuild the relevant frontend SSR output
223
+
224
+ Use the narrowest meaningful build first.
225
+
226
+ Typical options:
227
+
228
+ - `npm run build:zova`
229
+ - targeted `build:ssr:*` commands inside `zova`
230
+
231
+ ### 4. align backend and frontend when the change crosses the boundary
232
+
233
+ If the change affects the integrated SSR runtime path, prefer:
234
+
235
+ ```bash
236
+ npm run build
237
+ ```
238
+
239
+ That reduces the chance of testing stale frontend output against newer backend code or the reverse.
240
+
241
+ ### 5. verify built behavior, not only dev behavior
242
+
243
+ At minimum, re-check:
244
+
245
+ - the expected page loads through SSR
246
+ - client assets load correctly
247
+ - hydration behaves as expected
248
+ - no edition-specific UI/theme assumption breaks the real target flavor
249
+
250
+ ## Common deployment mistakes
251
+
252
+ ### Mistake 1: only testing dev mode
253
+
254
+ Dev success does not prove that the built SSR bundle and built client assets are correct.
255
+
256
+ ### Mistake 2: building the wrong flavor
257
+
258
+ A command can succeed while still producing output for the wrong target.
259
+
260
+ Always confirm whether the target is:
261
+
262
+ - Basic vs Start
263
+ - admin vs web
264
+ - root-wrapper path vs direct flavor script
265
+
266
+ ### Mistake 3: forgetting the fullstack boundary
267
+
268
+ If the issue appears only after frontend/backend integration, a frontend-only build check may be insufficient.
269
+
270
+ Use the fullstack build path when the change crosses the SSR boundary.
271
+
272
+ ### Mistake 4: assuming deploy problems are page-logic problems
273
+
274
+ Some SSR deploy failures come from stale output, missing assets, wrong flavor selection, or env/config mismatch before they come from page logic itself.
275
+
276
+ ## How this guide relates to other SSR docs
277
+
278
+ Use these pages together:
279
+
280
+ - [SSR Overview](/frontend/ssr-overview) for the baseline SSR feature model
281
+ - [SSR Architecture Overview](/frontend/ssr-architecture-overview) for the fullstack mental model
282
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide) for symptom-based diagnosis
283
+ - [Frontend Scripts](/frontend/scripts) for script lookup
284
+ - [Environment and Config Guide](/frontend/environment-config-guide) for runtime/config selection
285
+ - [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration) for the monorepo integration model
286
+
287
+ ## Recommended reading order
288
+
289
+ If you are deploying or packaging SSR behavior, use this path:
290
+
291
+ 1. this page for build/deploy workflow
292
+ 2. [Frontend Scripts](/frontend/scripts)
293
+ 3. [Environment and Config Guide](/frontend/environment-config-guide)
294
+ 4. [SSR Architecture Overview](/frontend/ssr-architecture-overview)
295
+ 5. [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
296
+ 6. [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration)
297
+
298
+ ## Implementation checks for SSR build/deploy changes
299
+
300
+ Before finalizing an SSR build/deploy change, ask:
301
+
302
+ 1. did I detect the correct edition and target flavor first?
303
+ 2. did I choose the right workflow level: root wrapper or lower-level flavor script?
304
+ 3. did I rebuild the relevant frontend SSR output?
305
+ 4. if the change crosses the frontend/backend SSR boundary, did I verify the aligned fullstack build path?
306
+ 5. did I verify built behavior rather than relying only on dev behavior?
307
+
308
+ That keeps SSR deployment guidance aligned with the real Cabloy monorepo workflow rather than with generic frontend-only assumptions.
@@ -0,0 +1,184 @@
1
+ # SSR Review Checklist
2
+
3
+ This checklist helps contributors and AI workflows review SSR-related changes in Zova within the Cabloy monorepo.
4
+
5
+ ## Why this page exists
6
+
7
+ The other SSR pages explain architecture, build/deploy flow, and troubleshooting.
8
+
9
+ This page answers a narrower review question:
10
+
11
+ - what should you verify before accepting an SSR-related change?
12
+
13
+ That matters because SSR changes can look correct in one narrow path while still being wrong at a framework boundary.
14
+
15
+ Common review failures include:
16
+
17
+ - checking only client behavior and skipping server-render behavior
18
+ - checking only dev behavior and skipping built behavior
19
+ - reviewing page logic without checking the SSR layer it depends on
20
+ - assuming a theme or UI rule is shared across editions when it is not
21
+
22
+ ## Use this checklist with the layer model
23
+
24
+ Use the [SSR Architecture Overview](/frontend/ssr-architecture-overview) as the base model.
25
+
26
+ For review, the practical layers are:
27
+
28
+ 1. **Vona SSR orchestration**
29
+ 2. **frontend build output**
30
+ 3. **Zova SSR server render**
31
+ 4. **client hydration**
32
+
33
+ A good SSR review starts by asking which of these layers the change touches.
34
+
35
+ ## Fast review checklist
36
+
37
+ Use this short checklist for PR review, AI review, or self-review.
38
+
39
+ - [ ] I identified which SSR layer the change touches first.
40
+ - [ ] I checked whether the change affects server render, client hydration, or both.
41
+ - [ ] I verified that the change uses existing SSR abstractions rather than inventing a parallel workaround.
42
+ - [ ] I checked whether the change needs verification in built mode rather than only in dev mode.
43
+ - [ ] I reviewed whether the change depends on edition-specific UI or theme assumptions.
44
+
45
+ ## Layer-by-layer review checklist
46
+
47
+ ### 1. Vona SSR orchestration
48
+
49
+ Review these questions when the change affects SSR site routing, backend-side SSR integration, or request entry behavior.
50
+
51
+ - [ ] Does the request still enter the correct SSR site?
52
+ - [ ] Does the change preserve the intended SSR site/path assumptions?
53
+ - [ ] If route-to-page handoff changed, is it still using the intended SSR render/redirect boundary?
54
+ - [ ] If the issue is dev-only or prod-only, did I verify whether the failure belongs to orchestration rather than page logic?
55
+
56
+ Read together:
57
+
58
+ - [SSR Architecture Overview](/frontend/ssr-architecture-overview)
59
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
60
+
61
+ ### 2. Frontend build output
62
+
63
+ Review these questions when the change affects scripts, flavors, generated assets, or deploy packaging.
64
+
65
+ - [ ] Did I verify the correct edition and target flavor first?
66
+ - [ ] Did I verify whether the change needs the root wrapper or a flavor-specific script path?
67
+ - [ ] Did I check whether built SSR output, client assets, or related generated artifacts need regeneration?
68
+ - [ ] If the change crosses the fullstack SSR boundary, did I verify the aligned build workflow rather than a frontend-only build assumption?
69
+
70
+ Read together:
71
+
72
+ - [SSR Build and Deploy Guide](/frontend/ssr-build-deploy-guide)
73
+ - [Frontend Scripts](/frontend/scripts)
74
+ - [Fullstack Vona + Zova Integration](/fullstack/vona-zova-integration)
75
+
76
+ ### 3. Zova SSR server render
77
+
78
+ Review these questions when the change affects route resolution, server-side data, or server-generated HTML/meta.
79
+
80
+ - [ ] Is the initial server-rendered HTML still correct before hydration begins?
81
+ - [ ] If data is involved, is it prepared through the intended SSR/model/controller flow?
82
+ - [ ] If metadata is involved, is it still produced through the intended SSR-aware meta path?
83
+ - [ ] If the change touches SSR-only behavior, did I verify it at the server-render stage rather than only after client boot?
84
+
85
+ Read together:
86
+
87
+ - [SSR Init Data](/frontend/ssr-init-data)
88
+ - [SSR SEO Meta](/frontend/ssr-seo-meta)
89
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
90
+
91
+ ### 4. Client hydration
92
+
93
+ Review these questions when the change affects browser-only behavior, first paint, or client takeover after SSR.
94
+
95
+ - [ ] Is the client reusing server-provided state rather than recomputing a different first-screen result?
96
+ - [ ] If browser-only behavior is involved, should part of the UI be isolated with `ClientOnly`?
97
+ - [ ] Did I separate a hydration issue from a server-render issue before changing code?
98
+ - [ ] If the final browser state differs from the server output, is that difference expected and framework-supported?
99
+
100
+ Read together:
101
+
102
+ - [SSR ClientOnly](/frontend/ssr-client-only)
103
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
104
+
105
+ ## Theme and edition-sensitive review gate
106
+
107
+ Use this gate whenever a change touches theme, tokens, first paint, or dark/light behavior.
108
+
109
+ - [ ] I identified the active edition before reviewing SSR theme behavior.
110
+ - [ ] I identified the active UI layer before assuming token or hydration behavior.
111
+ - [ ] I checked whether the active SSR path provides cookie-backed theme resolution.
112
+ - [ ] I did not treat server-side theme-sensitive reads as final browser truth when the active SSR path does not guarantee that.
113
+ - [ ] I verified whether the rule is shared across editions or adapter-specific.
114
+
115
+ Read together:
116
+
117
+ - [Theme Guide](/frontend/theme-guide)
118
+ - [SSR Environment Variables](/frontend/ssr-env)
119
+
120
+ ## Build/deploy review gate
121
+
122
+ Use this gate whenever a change may pass in dev but fail in built SSR output.
123
+
124
+ - [ ] I checked whether the change must be verified in built mode.
125
+ - [ ] I verified the relevant build path instead of assuming dev success is enough.
126
+ - [ ] I checked whether client assets and SSR output stay aligned for the target flavor.
127
+ - [ ] If the change crosses the frontend/backend SSR boundary, I reviewed the fullstack build path too.
128
+
129
+ ## What a reviewer should flag immediately
130
+
131
+ Flag the change for follow-up when any of these are true:
132
+
133
+ - the review checked only client behavior and skipped server-render behavior
134
+ - the fix adds a parallel SSR-specific workaround instead of using an existing framework abstraction
135
+ - the change assumes one edition's theme/UI behavior applies universally
136
+ - the change was validated only in dev even though the failure is deploy- or build-sensitive
137
+ - the review never identified which SSR layer was actually changing
138
+
139
+ ## Reviewer template
140
+
141
+ Use this short template in PR review, AI review, or self-review when a change touches SSR behavior.
142
+
143
+ - [ ] I identified the SSR layer first.
144
+ - [ ] I separated server-render checks from hydration checks.
145
+ - [ ] I verified whether the change needs built-mode validation.
146
+ - [ ] I checked whether the change reuses existing SSR abstractions.
147
+ - [ ] I reviewed edition/theme assumptions where relevant.
148
+ - [ ] I verified the most relevant neighboring guide for this change category.
149
+
150
+ ## Prompt-ready reviewer snippet
151
+
152
+ Use this block directly in a reviewer-agent or code-review prompt when a change touches SSR behavior:
153
+
154
+ ```text
155
+ Review this change with the Cabloy SSR checklist in mind.
156
+
157
+ 1. Identify which SSR layer the change touches: Vona SSR orchestration, frontend build output, Zova SSR server render, or client hydration.
158
+ 2. Separate server-render correctness from hydration correctness.
159
+ 3. Verify whether the change reuses the intended framework abstraction instead of adding a parallel workaround.
160
+ 4. Check whether the change needs built-mode validation rather than only dev-mode validation.
161
+ 5. Review edition-sensitive UI/theme assumptions when the change touches first paint, tokens, dark mode, or SSR env behavior.
162
+ 6. Flag any change whose review never identifies the failing or affected SSR layer.
163
+ ```
164
+
165
+ ## Read together
166
+
167
+ Use this page together with:
168
+
169
+ - [SSR Architecture Overview](/frontend/ssr-architecture-overview)
170
+ - [SSR Build and Deploy Guide](/frontend/ssr-build-deploy-guide)
171
+ - [SSR Troubleshooting Guide](/frontend/ssr-troubleshooting-guide)
172
+ - [Theme Guide](/frontend/theme-guide)
173
+ - [Verification](/ai/verification)
174
+
175
+ ## Verification checklist
176
+
177
+ Before accepting an SSR-related change, ask:
178
+
179
+ 1. did the review identify the affected SSR layer clearly?
180
+ 2. did the review cover both the relevant runtime stage and the relevant workflow stage?
181
+ 3. did the review verify edition/theme assumptions when the change was SSR-UI-sensitive?
182
+ 4. did the review use the smallest correct checklist rather than relying on intuition alone?
183
+
184
+ That keeps SSR reviews consistent across human contributors and AI-assisted workflows.