cabloy 5.1.52 → 5.1.53

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 (65) hide show
  1. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +10 -0
  2. package/CHANGELOG.md +17 -0
  3. package/CLAUDE.md +3 -0
  4. package/cabloy-docs/.vitepress/config.mjs +144 -50
  5. package/cabloy-docs/ai/introduction.md +44 -0
  6. package/cabloy-docs/backend/quickstart.md +1 -1
  7. package/cabloy-docs/editions/cabloy-start.md +3 -3
  8. package/cabloy-docs/editions/choosing-between-basic-and-start.md +5 -5
  9. package/cabloy-docs/editions/overview.md +34 -3
  10. package/cabloy-docs/frontend/css-in-js-guide.md +1 -1
  11. package/cabloy-docs/frontend/environment-config-guide.md +28 -0
  12. package/cabloy-docs/frontend/foundation.md +1 -1
  13. package/cabloy-docs/frontend/introduction.md +69 -1
  14. package/cabloy-docs/frontend/navigation-guards-guide.md +1 -1
  15. package/cabloy-docs/frontend/quickstart.md +1 -0
  16. package/cabloy-docs/frontend/scripts.md +1 -1
  17. package/cabloy-docs/frontend/ssr-env.md +23 -0
  18. package/cabloy-docs/frontend/theme-guide.md +140 -7
  19. package/cabloy-docs/fullstack/cli.md +6 -6
  20. package/cabloy-docs/fullstack/edition-collaboration-differences.md +1 -1
  21. package/cabloy-docs/fullstack/introduction.md +39 -1
  22. package/cabloy-docs/fullstack/vona-zova-integration.md +1 -1
  23. package/cabloy-docs/index.md +1 -1
  24. package/cabloy-docs/reference/frontend-directory-structure.md +125 -0
  25. package/cabloy-docs/reference/introduction.md +47 -0
  26. package/cabloy-docs/reference/package-map.md +2 -0
  27. package/cabloy-docs/reference/repo-scripts.md +5 -3
  28. package/package.json +1 -1
  29. package/zova/package.original.json +1 -1
  30. package/zova/packages-cli/cli/package.json +2 -2
  31. package/zova/packages-cli/cli-set-front/package.json +2 -2
  32. package/zova/packages-cli/cli-set-front/src/lib/bean/cli.tools.metadata.ts +1 -1
  33. package/zova/packages-cli/cli-set-front/src/lib/bean/toolsMetadata/generateConfig.ts +2 -12
  34. package/zova/packages-utils/zova-jsx/package.json +2 -2
  35. package/zova/packages-utils/zova-vite/package.json +2 -2
  36. package/zova/packages-zova/zova/package.json +3 -3
  37. package/zova/packages-zova/zova-core/package.json +2 -2
  38. package/zova/packages-zova/zova-core/src/core/sys/config.ts +1 -1
  39. package/zova/pnpm-lock.yaml +270 -270
  40. package/zova/src/front/config/config/config.ts +1 -1
  41. package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/locales.ts +0 -15
  42. package/zova/src/suite/a-devui/modules/devui-adapter/src/bean/meta.themeHandler.ts +1 -0
  43. package/zova/src/suite/a-home/modules/home-base/src/.metadata/locales.ts +0 -15
  44. package/zova/src/suite/a-home/modules/home-base/src/service/routerGuards.ts +1 -1
  45. package/zova/src/suite/a-home/modules/home-base/src/service/ssrLayout.ts +1 -0
  46. package/zova/src/suite/a-home/modules/home-layoutadmin/src/.metadata/locales.ts +0 -15
  47. package/zova/src/suite/a-home/modules/home-layoutweb/src/.metadata/locales.ts +0 -15
  48. package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +2 -2
  49. package/zova/src/suite/a-home/modules/home-login/src/.metadata/locales.ts +0 -15
  50. package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +2 -2
  51. package/zova/src/suite/cabloy-basic/modules/basic-captcha/src/.metadata/locales.ts +0 -15
  52. package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/locales.ts +0 -15
  53. package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/locales.ts +0 -15
  54. package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/.metadata/locales.ts +0 -15
  55. package/zova/src/suite/cabloy-basic/modules/basic-table/src/.metadata/locales.ts +0 -15
  56. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +1 -1
  57. package/zova/src/suite-vendor/a-zova/modules/a-interceptor/src/bean/interceptor.jwt.ts +1 -1
  58. package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +1 -1
  59. package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +1 -0
  60. package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +1 -1
  61. package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +6 -3
  62. package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +1 -1
  63. package/zova/src/suite-vendor/a-zova/modules/a-zod/src/.metadata/locales.ts +0 -15
  64. package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +2 -2
  65. package/zova/src/suite-vendor/a-zova/package.json +6 -6
@@ -22,12 +22,80 @@ For contributor and automation workflows in this repository, prefer this order:
22
22
  3. inspect the active edition before assuming a UI stack
23
23
  4. document shared concepts once, then isolate edition-specific notes where the module set or UI library differs
24
24
 
25
+ ## Frontend reading paths
26
+
27
+ Use this page as the main frontend hub, then choose the path that matches your task.
28
+
29
+ ### Getting started and architecture spine
30
+
31
+ Start here when you need the shortest route to the frontend mental model and startup context:
32
+
33
+ - [Quickstart](/frontend/quickstart)
34
+ - [Foundation](/frontend/foundation)
35
+ - [IoC and Beans](/frontend/ioc-and-beans)
36
+ - [Modules and Suites](/frontend/modules-and-suites)
37
+ - [Module Scope](/frontend/module-scope)
38
+ - [Design Principles](/frontend/design-principles)
39
+ - [Environment and Config Guide](/frontend/environment-config-guide)
40
+ - [App Startup Guide](/frontend/app-startup-guide)
41
+ - [System Startup Guide](/frontend/system-startup-guide)
42
+ - [Frontend Directory Structure](/reference/frontend-directory-structure)
43
+
44
+ ### Page and routing flow
45
+
46
+ Use this path when the task is page-oriented, route-oriented, or the first time you need Zod in frontend params and query work:
47
+
48
+ - [Page Guide](/frontend/page-guide)
49
+ - [Page Query Guide](/frontend/page-query-guide)
50
+ - [Page Params Guide](/frontend/page-params-guide)
51
+ - [Zod Guide](/frontend/zod-guide)
52
+ - [Page Route Guide](/frontend/page-route-guide)
53
+ - [Route Alias Guide](/frontend/route-alias-guide)
54
+ - [Navigation Guards Guide](/frontend/navigation-guards-guide)
55
+
56
+ ### Components and UI flow
57
+
58
+ Use this path when the task is about UI composition, component contracts, or theme work:
59
+
60
+ - [Component Guide](/frontend/component-guide)
61
+ - [Component Props Guide](/frontend/component-props-guide)
62
+ - [Component v-model Guide](/frontend/component-v-model-guide)
63
+ - [Generic Component Guide](/frontend/generic-component-guide)
64
+ - [CSS-in-JS Guide](/frontend/css-in-js-guide)
65
+ - [Theme Guide](/frontend/theme-guide)
66
+ - [Icon Engine Guide](/frontend/icon-engine-guide)
67
+
68
+ ### Data, contract, and SSR flow
69
+
70
+ Use this path when the task is about data loading, API contracts, generated SDKs, or SSR behavior:
71
+
72
+ - [Server Data](/frontend/server-data)
73
+ - [API Guide](/frontend/api-guide)
74
+ - [Model Architecture](/frontend/model-architecture)
75
+ - [Model State Guide](/frontend/model-state-guide)
76
+ - [OpenAPI SDK Guide](/frontend/openapi-sdk-guide)
77
+ - [API Schema Guide](/frontend/api-schema-guide)
78
+ - [SDK Guide](/frontend/sdk-guide)
79
+ - [SSR Overview](/frontend/ssr-overview)
80
+ - [SSR Init Data](/frontend/ssr-init-data)
81
+ - [SSR ClientOnly](/frontend/ssr-client-only)
82
+ - [SSR SEO Meta](/frontend/ssr-seo-meta)
83
+ - [SSR Env](/frontend/ssr-env)
84
+
85
+ ### Tooling support
86
+
87
+ Use these pages when the work is about commands, scripts, or mock-driven iteration:
88
+
89
+ - [CLI](/frontend/cli)
90
+ - [Scripts](/frontend/scripts)
91
+ - [Mock Guide](/frontend/mock-guide)
92
+
25
93
  ## Edition impact
26
94
 
27
95
  Frontend work is where Cabloy Basic and Cabloy Start differ most clearly.
28
96
 
29
97
  - **Shared frontend engineering layer**: both editions follow the same Zova-centered frontend direction, with Vue, Vite, Quasar tooling, and related libraries.
30
98
  - **Cabloy Basic UI layer**: current public docs and examples align with DaisyUI + Tailwind CSS.
31
- - **Cabloy Start UI layer**: the private commercial edition aligns with Vuetify and ships different frontend modules, SSR site baselines, and project assets.
99
+ - **Cabloy Start UI layer**: the private commercial edition aligns with Vuetify and may use different frontend modules, SSR site baselines, and project assets.
32
100
 
33
101
  Because of this, automation and docs should always detect the active edition before recommending page-level, component-level, or UI-library-specific work.
@@ -23,7 +23,7 @@ class ServiceRouterGuards {
23
23
  protected onRouterGuards(router: BeanRouter) {
24
24
  router.beforeEach(async to => {
25
25
  if (
26
- !this.sys.config.ssr.ignoreCookieOnServer &&
26
+ !this.sys.config.ssr.cookieDisabledOnServer &&
27
27
  to.meta.requiresAuth !== false &&
28
28
  !this.$passport.isAuthenticated
29
29
  ) {
@@ -73,6 +73,7 @@ Use the root wrappers as the normal entrypoint for this framework repository, th
73
73
 
74
74
  Read together with:
75
75
 
76
+ - [Reference Introduction](/reference/introduction)
76
77
  - [Repo Scripts](/reference/repo-scripts)
77
78
  - [Frontend Scripts](/frontend/scripts)
78
79
 
@@ -71,7 +71,7 @@ The sibling `cabloy-start` repository is the private commercial edition and uses
71
71
  - `cabloyStartAdmin`
72
72
  - `cabloyStartWeb`
73
73
 
74
- Those commands are not driven by the current Basic repo root wrappers, so verify the Start repo’s `package.json`, suites, SSR site baselines, and project assets before documenting or automating them.
74
+ Those commands are not driven by the current Basic repo root wrappers, so verify the Start repo’s `package.json`, flavor names, SSR site baselines, and project assets before documenting or automating them.
75
75
 
76
76
  ## Workflow guidance
77
77
 
@@ -20,6 +20,29 @@ Representative variables include:
20
20
 
21
21
  These affect areas such as cookie-driven SSR behavior, theme defaults, body-load observation, server-side API targeting, and SSR production port behavior.
22
22
 
23
+ ## Theme implications of `SSR_COOKIE`
24
+
25
+ `SSR_COOKIE` is not only a storage choice. It also changes what SSR can guarantee about theme-sensitive output.
26
+
27
+ A practical split is:
28
+
29
+ - `SSR_COOKIE=true`: the server can resolve theme state from cookies during SSR
30
+ - `SSR_COOKIE=false`: the server cannot guarantee that theme-sensitive SSR reads match the browser's eventual selected theme
31
+
32
+ In practice, this means Web SSR and Admin SSR can intentionally expose different theme capabilities.
33
+
34
+ - In a cookie-capable SSR path, theme-sensitive server rendering can rely on a stronger server/client match guarantee.
35
+ - In a cookie-disabled SSR path, SSR should treat theme-sensitive reads as non-authoritative for the browser's final theme and prefer hydration-tolerant or client-finalized decisions when exact matching matters.
36
+
37
+ A practical development rule is:
38
+
39
+ - use `SSR_COOKIE` to determine the capability level
40
+ - use the active edition and UI library to determine how that capability is implemented
41
+
42
+ That matters because Cabloy Basic and Cabloy Start share the same theme architecture but do not use the same adapter-level SSR handoff strategy.
43
+
44
+ For the broader theme usage contract and edition-aware checklist, see [Theme Guide](/frontend/theme-guide). For the runtime/flavor selection model behind these env choices, see [Environment and Config Guide](/frontend/environment-config-guide).
45
+
23
46
  ## Dynamic environment variables
24
47
 
25
48
  The runtime also exposes environment variables that describe the current execution context, such as:
@@ -127,6 +127,19 @@ A useful distinction is:
127
127
  - brand-theme switching changes which named theme provides the token set
128
128
  - both still work through the same `$theme` and token architecture
129
129
 
130
+ ## Edition and UI-library decision gate
131
+
132
+ Before applying SSR theme rules, identify the active edition and UI library first.
133
+
134
+ In the current Cabloy monorepo context:
135
+
136
+ - Cabloy Basic currently means DaisyUI + Tailwind CSS assumptions
137
+ - Cabloy Start currently means Vuetify assumptions
138
+
139
+ The shared Zova theme architecture stays the same, but token shape, SSR output strategy, and hydration integration can vary by adapter.
140
+
141
+ That means a rule that is safe for one edition or UI library is not automatically portable to another.
142
+
130
143
  ## What stays shared across editions
131
144
 
132
145
  Across Cabloy Basic and Cabloy Start, the core theme architecture remains shared:
@@ -140,15 +153,135 @@ What may still vary by edition or UI library is:
140
153
 
141
154
  - the exact token shape
142
155
  - concrete default token values
156
+ - SSR server output strategy
157
+ - client hydration and theme-finalization behavior
143
158
  - integration details for a specific component library or visual system
144
159
 
145
- ## Implementation checks for theme-related changes
160
+ ## SSR flavor capability gate
161
+
162
+ After identifying the edition and UI library, identify the SSR flavor capability level.
163
+
164
+ A practical split is:
165
+
166
+ - Web SSR is usually the lower-authority path for final browser theme when cookie-backed SSR resolution is unavailable
167
+ - Admin SSR is the stronger path for SSR-stable theme-sensitive rendering when cookie-backed SSR resolution is available
168
+
169
+ In practice, always check `SSR_COOKIE` and the active adapter behavior before assuming that server-rendered theme-sensitive output can exactly match the hydrated client state.
170
+
171
+ With `SSR_COOKIE=false`, server reads of `$theme.dark`, `$theme.darkMode`, and `$token` should be treated as non-authoritative for the browser's final theme unless the active adapter explicitly documents a stronger guarantee.
172
+
173
+ With `SSR_COOKIE=true`, SSR theme-sensitive branching can rely on a stronger server/client match guarantee, but should still stay inside the established theme handler and hydration pipeline.
174
+
175
+ For the env-side explanation of `SSR_COOKIE`, see [SSR Environment Variables](/frontend/ssr-env). For the flavor/runtime selection model, see [Environment and Config Guide](/frontend/environment-config-guide).
176
+
177
+ ## Shared development rules
178
+
179
+ Apply these rules before writing adapter-specific logic:
180
+
181
+ 1. keep concrete theme values in theme beans instead of scattering them across pages or components
182
+ 2. use `$token` when code consumes theme-defined design values
183
+ 3. use `$theme` when code needs to inspect or switch theme state itself
184
+ 4. keep adapter-specific DOM/theme application inside the active theme handler or client boot path rather than duplicating it in feature code
185
+ 5. do not assume token fields are portable across UI libraries without checking the active adapter contract
186
+
187
+ ## Cabloy Basic checklist: DaisyUI + Tailwind CSS
188
+
189
+ In the current `__CABLOY_BASIC__` frontend setup:
190
+
191
+ - DaisyUI + Tailwind CSS is the active UI layer
192
+ - theme beans and `$token` remain the shared architectural contract
193
+ - Web SSR emits dual dark/light SSR markers and the browser selects the final theme during bootstrap
194
+ - the active theme handler owns `data-theme` and CSS variable application
195
+
196
+ Apply these rules:
197
+
198
+ - In Web SSR, treat server-rendered reads of `$theme.dark`, `$theme.darkMode`, and theme-derived `$token` values as non-authoritative for the browser's final theme.
199
+ - Keep theme-sensitive SSR output fallback-safe or hydration-tolerant when exact browser theme matching matters.
200
+ - Defer final theme-sensitive decisions to the client when an exact browser theme match is required.
201
+ - Let the theme handler own `data-theme` and CSS variable application instead of duplicating that logic in pages or components.
202
+ - In Admin SSR, cookie-backed theme resolution is the stronger path for SSR-stable theme-sensitive branching.
203
+
204
+ ## Cabloy Start comparison checklist: Vuetify
205
+
206
+ In `__CABLOY_START__`, the theme architecture is still shared, but the adapter behavior is deeper:
207
+
208
+ - Vuetify-oriented token payloads are part of the active theme contract
209
+ - the SSR adapter writes theme name, dark-variant theme data, and token payloads for hydration
210
+ - client boot reconstructs the active Vuetify theme from SSR state
211
+
212
+ Apply these comparison rules:
213
+
214
+ - Do not collapse Cabloy Start behavior into the simpler Cabloy Basic `data-theme` mental model.
215
+ - Treat Vuetify adapter state handoff and client boot hydration as part of the theme contract.
216
+ - When documenting or changing SSR theme rules, verify both the server handoff payload and the client reconstruction path.
217
+ - Web SSR still needs lower-authority assumptions when cookie-backed SSR resolution is unavailable, even though the adapter handoff is richer than in Cabloy Basic.
218
+
219
+ ## Quick comparison table
220
+
221
+ | Edition | UI library | SSR server handoff | Client hydration/finalization | Safe Web SSR rule |
222
+ | ------------ | ---------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
223
+ | Cabloy Basic | DaisyUI + Tailwind CSS | Dual dark/light SSR markers plus handler-owned DOM theme output | Browser bootstrap resolves the final theme and applies `data-theme` | Do not treat server theme-sensitive reads as final browser truth |
224
+ | Cabloy Start | Vuetify | Adapter-driven SSR state including theme name, dark variant data, and token payloads | Client boot reconstructs the active Vuetify theme from SSR state | Do not reduce Start to a Basic-style `data-theme`-only model; still treat Web SSR as lower-authority without cookie-backed resolution |
225
+
226
+ ## SSR theme review checklist
227
+
228
+ Use this short review checklist when editing SSR theme behavior or reviewing AI-generated changes.
229
+
230
+ Do:
231
+
232
+ - identify the active edition marker before applying SSR theme rules
233
+ - identify the active UI library before assuming token shape or hydration behavior
234
+ - keep concrete theme values in theme beans and consume them through `$token`
235
+ - use `$theme` for theme-state control and `$token` for theme-value consumption
236
+ - verify whether the active flavor provides cookie-backed SSR theme resolution before trusting server theme reads
237
+ - keep adapter-specific theme finalization inside the existing theme handler or client boot path
238
+ - verify both server handoff and client hydration behavior when documenting or changing adapter-specific SSR theme logic
239
+ - treat Web SSR as the stricter path unless the active adapter and cookie capability clearly provide a stronger guarantee
240
+
241
+ Don't:
242
+
243
+ - do not assume Cabloy Basic and Cabloy Start use the same adapter-level SSR theme handoff
244
+ - do not assume a Basic `data-theme` pattern fully describes Vuetify-based Start behavior
245
+ - do not treat server reads of `$theme.dark`, `$theme.darkMode`, or `$token` as final browser truth in cookie-disabled Web SSR
246
+ - do not duplicate theme-finalization logic in pages or components when the active adapter already owns that responsibility
247
+
248
+ ## Reviewer template
249
+
250
+ Use this short template in PR review, code review, or AI review when a change touches SSR theme behavior.
251
+
252
+ - [ ] I identified the active edition marker before reviewing SSR theme behavior.
253
+ - [ ] I identified the active UI library before assuming token shape or hydration behavior.
254
+ - [ ] I verified whether the active flavor provides cookie-backed SSR theme resolution.
255
+ - [ ] I checked whether the change treats server reads of `$theme.dark`, `$theme.darkMode`, or `$token` as lower-authority in cookie-disabled Web SSR.
256
+ - [ ] I verified that adapter-specific theme finalization stays inside the existing theme handler or client boot path.
257
+ - [ ] I checked whether the rule or behavior is shared across editions or adapter-specific.
258
+ - [ ] For Cabloy Basic, I verified the change does not over-assume a final browser theme from server-side theme-sensitive reads.
259
+ - [ ] For Cabloy Start, I verified the change respects Vuetify SSR state handoff and client reconstruction rather than reducing it to a Basic-style `data-theme`-only model.
260
+ - [ ] I verified both server handoff and client hydration behavior for the active adapter.
261
+
262
+ ## Prompt-ready reviewer snippet
263
+
264
+ Use this block directly in a reviewer-agent or code-review prompt when a change touches SSR theme behavior:
265
+
266
+ ```text
267
+ Review this change with the Cabloy SSR theme rules in mind.
268
+
269
+ 1. Detect the active edition marker and UI library before assuming SSR theme behavior.
270
+ 2. Do not assume Cabloy Basic and Cabloy Start use the same adapter-level SSR theme handoff.
271
+ 3. In cookie-disabled Web SSR, do not treat server reads of $theme.dark, $theme.darkMode, or $token as final browser truth.
272
+ 4. Verify that adapter-specific theme finalization stays inside the existing theme handler or client boot path.
273
+ 5. Verify both server handoff and client hydration behavior for the active adapter.
274
+ 6. Flag any change that collapses Vuetify-based Start behavior into a Basic-style data-theme-only mental model.
275
+ ```
276
+
277
+ ## Verification checklist
146
278
 
147
- When changing theme behavior, ask:
279
+ When changing theme behavior or writing theme-sensitive SSR code, ask:
148
280
 
149
- 1. should this change live in a theme bean instead of inlining colors into components?
150
- 2. is the change about dark mode, brand style, or both?
151
- 3. should the change be token-driven instead of component-specific?
152
- 4. does the active edition change the UI component library while preserving the same theme architecture?
281
+ 1. which edition marker is active, and which UI library contract does that imply?
282
+ 2. is the change about token design, theme state control, SSR output, or client hydration?
283
+ 3. does the active flavor provide cookie-backed SSR theme resolution?
284
+ 4. is this rule shared across editions, or adapter-specific?
285
+ 5. does the implementation follow the existing handler and hydration path for the active UI library?
153
286
 
154
- That helps keep theme work scalable and edition-aware.
287
+ That keeps theme work scalable, edition-aware, and aligned with the real SSR capability boundary.
@@ -34,7 +34,7 @@ Use this distinction consistently:
34
34
  - use the CLI when you are discovering commands, generating framework resources, running framework-specific tooling, or inspecting workflow families
35
35
  - use root scripts when you are running broader repository workflows such as development, builds, or verification
36
36
 
37
- For the compact root-script lookup surface, see [Repo Scripts](/reference/repo-scripts).
37
+ For the broader Reference landing page, see [Reference Introduction](/reference/introduction). For the compact root-script lookup surface, see [Repo Scripts](/reference/repo-scripts).
38
38
 
39
39
  ## Shared discovery pattern
40
40
 
@@ -87,11 +87,11 @@ For side-specific depth, see:
87
87
 
88
88
  Use these three surfaces for different jobs:
89
89
 
90
- | Surface | Best for | Typical examples |
91
- | --- | --- | --- |
92
- | Root scripts | Repo-wide development, build, and verification workflows | `npm run dev`, `npm run build`, `npm run test` |
93
- | CLI | Framework-aware generation, refactors, initialization, and tooling | `npm run vona :create`, `npm run zova :refactor`, `npm run zova :openapi` |
94
- | VS Code extensions | In-editor discovery of the same framework workflow families | Explorer right-click menus for `Create`, `Init`, `Refactor`, `Tools`, and related groups |
90
+ | Surface | Best for | Typical examples |
91
+ | ------------------ | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
92
+ | Root scripts | Repo-wide development, build, and verification workflows | `npm run dev`, `npm run build`, `npm run test` |
93
+ | CLI | Framework-aware generation, refactors, initialization, and tooling | `npm run vona :create`, `npm run zova :refactor`, `npm run zova :openapi` |
94
+ | VS Code extensions | In-editor discovery of the same framework workflow families | Explorer right-click menus for `Create`, `Init`, `Refactor`, `Tools`, and related groups |
95
95
 
96
96
  ## CLI and VS Code extensions
97
97
 
@@ -26,7 +26,7 @@ The most important differences show up in:
26
26
  - frontend flavor names
27
27
  - frontend module composition
28
28
  - admin/web SSR site baselines
29
- - private value-add content and project assets in Cabloy Start
29
+ - edition-specific private value-add content and project assets in Cabloy Start
30
30
  - potentially different generated output paths or integration details
31
31
 
32
32
  ## Cabloy Basic
@@ -15,6 +15,44 @@ With Vona, Zova, suite-based modules, and CLI-first workflows, Cabloy turns comm
15
15
  - **CLI-first workflows for AI vibe coding** — turn common scaffolding, metadata, refactors, and verification into explicit commands for faster, more accurate AI vibe coding
16
16
  - **Monorepo-native development** — keep framework source, docs, and tooling aligned in one monorepo workflow
17
17
 
18
+ ## How to approach fullstack work
19
+
20
+ For contributor and automation workflows in this repository, prefer this order:
21
+
22
+ 1. inspect the root `package.json` and shared monorepo scripts first
23
+ 2. inspect `npm run vona`, `npm run zova`, and the shared fullstack CLI workflow before inventing custom steps
24
+ 3. detect the active edition before making UI-sensitive or flavor-sensitive assumptions
25
+ 4. explain shared cross-stack concepts once, then isolate edition-specific notes only where the editions intentionally diverge
26
+
27
+ ## Fullstack reading paths
28
+
29
+ Use this page as the main fullstack hub, then choose the path that matches your task.
30
+
31
+ ### Getting started path
32
+
33
+ Start here when you want the shortest route to a working monorepo mental model:
34
+
35
+ - [Quickstart](/fullstack/quickstart)
36
+ - [CLI](/fullstack/cli)
37
+ - [VS Code Extensions](/fullstack/vscode-extensions)
38
+
39
+ ### Architecture and integration path
40
+
41
+ Use this path when the task is about how backend and frontend stay aligned inside one framework system:
42
+
43
+ - [Comparison with Other Frameworks](/fullstack/comparison-with-other-frameworks)
44
+ - [Vona + Zova Integration](/fullstack/vona-zova-integration)
45
+ - [Backend OpenAPI to Frontend SDK](/fullstack/openapi-to-sdk)
46
+ - [Frontend Metadata Back to Backend](/fullstack/frontend-metadata-to-backend)
47
+
48
+ ### Edition-aware collaboration path
49
+
50
+ Use this path when the task depends on edition boundaries, UI assumptions, or cross-repo delivery differences:
51
+
52
+ - [Edition Collaboration Differences](/fullstack/edition-collaboration-differences)
53
+ - [Editions Overview](/editions/overview)
54
+ - [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
55
+
18
56
  ## Shared architecture
19
57
 
20
58
  - **Vona** provides the backend framework capabilities.
@@ -72,7 +110,7 @@ The monorepo makes it possible to keep backend and frontend concepts, tooling, a
72
110
  - **Cabloy Basic**: DaisyUI + Tailwind CSS
73
111
  - **Cabloy Start**: Vuetify
74
112
 
75
- ## Common-first, edition-aware
113
+ ## Edition impact
76
114
 
77
115
  Most framework concepts are shared across Cabloy Basic and Cabloy Start because both editions follow the same Cabloy fullstack core. The documentation prefers a common-first explanation, then adds edition-specific notes only where the editions intentionally diverge.
78
116
 
@@ -56,7 +56,7 @@ Its root script surface uses Start-specific flavors such as:
56
56
  - `cabloyStartAdmin`
57
57
  - `cabloyStartWeb`
58
58
 
59
- Because Start differs in UI layer, module composition, SSR site baselines, and project assets, do not reuse Basic integration examples without first confirming:
59
+ Because Start can differ in UI layer, module composition, SSR site baselines, and project assets, do not reuse Basic integration examples without first confirming:
60
60
 
61
61
  1. the `__CABLOY_START__` marker
62
62
  2. the Start repo’s `package.json`
@@ -60,7 +60,7 @@ Start here to learn the shared Cabloy architecture, see how Vona and Zova fit to
60
60
  2. [Fullstack CLI](/fullstack/cli)
61
61
  3. [VS Code Extensions](/fullstack/vscode-extensions)
62
62
  4. [AI Development Introduction](/ai/introduction)
63
- 5. [Repo Scripts Reference](/reference/repo-scripts)
63
+ 5. [Reference Introduction](/reference/introduction)
64
64
  6. [Editions Overview](/editions/overview)
65
65
 
66
66
  ## Documentation scope labels
@@ -0,0 +1,125 @@
1
+ # Frontend Directory Structure
2
+
3
+ This page gives a compact reference view of the frontend tree under `zova/`.
4
+
5
+ ## Why this page exists
6
+
7
+ The package map explains the architectural meaning of package, module, and suite boundaries.
8
+
9
+ This page complements that by showing the practical frontend tree layout used in the Cabloy repository.
10
+
11
+ ## Simplified frontend tree
12
+
13
+ Representative frontend structure:
14
+
15
+ ```text
16
+ zova/
17
+ ├── packages-cli/
18
+ ├── packages-utils/
19
+ ├── packages-zova/
20
+ ├── env/
21
+ ├── public/
22
+ ├── src-ssr/
23
+ └── src/
24
+ ├── boot/
25
+ ├── css/
26
+ ├── front/
27
+ │ ├── config/
28
+ │ └── typing/
29
+ ├── module/
30
+ ├── module-vendor/
31
+ ├── suite/
32
+ └── suite-vendor/
33
+ ```
34
+
35
+ ## Meaning of the main directories
36
+
37
+ | Path | Meaning |
38
+ | ------------------------- | ---------------------------------------------- |
39
+ | `zova/packages-cli/` | Zova CLI entrypoints and command sets |
40
+ | `zova/packages-utils/` | shared frontend-side utilities |
41
+ | `zova/packages-zova/` | framework packages |
42
+ | `zova/env/` | frontend env files and runtime/build inputs |
43
+ | `zova/public/` | public static assets |
44
+ | `zova/src-ssr/` | SSR entrypoints and SSR-related project source |
45
+ | `zova/src/boot/` | app bootstrapping and startup registration |
46
+ | `zova/src/css/` | project-level CSS and theme entry assets |
47
+ | `zova/src/front/config/` | project-level frontend config overrides |
48
+ | `zova/src/front/typing/` | project-level frontend type definitions |
49
+ | `zova/src/module/` | first-party standalone frontend modules |
50
+ | `zova/src/module-vendor/` | vendor-provided standalone frontend modules |
51
+ | `zova/src/suite/` | first-party frontend suites and their modules |
52
+ | `zova/src/suite-vendor/` | vendor-provided frontend suites and modules |
53
+
54
+ ## Project-level frontend areas
55
+
56
+ Within the frontend application layer, contributors should also know these practical areas:
57
+
58
+ | Path | Meaning |
59
+ | ------------------------ | -------------------------------------------------- |
60
+ | `zova/env/` | frontend env files and runtime/build inputs |
61
+ | `zova/public/` | project-level public static assets |
62
+ | `zova/src-ssr/` | project-level SSR entry and SSR middleware wiring |
63
+ | `zova/src/boot/` | project-level boot registration and startup hooks |
64
+ | `zova/src/css/` | project-level CSS, theme, and style entry assets |
65
+ | `zova/src/front/config/` | project-level frontend config and override surface |
66
+ | `zova/src/front/typing/` | project-level frontend typing definitions |
67
+
68
+ ## Edition note
69
+
70
+ The high-level Zova tree above is intentionally stable across Cabloy Basic and Cabloy Start.
71
+
72
+ A practical rule is:
73
+
74
+ - use the shared tree as the structural reference
75
+ - treat suite names and UI-layer examples as edition-sensitive details
76
+ - in Cabloy Basic, public examples may include suites such as `cabloy-basic` and `a-devui`
77
+ - in Cabloy Start, examples may include suites such as `cabloy-start` and `a-vuetify`
78
+
79
+ Cabloy Start is a sibling repository, not a subdirectory of this monorepo.
80
+
81
+ ## Practical development reading of the tree
82
+
83
+ A useful rule is:
84
+
85
+ - start in `zova/src/module/` when the work belongs to a standalone frontend module
86
+ - start in `zova/src/suite/` when the work belongs to a suite-composed business area
87
+ - inspect `zova/packages-cli/` when the task is about command discovery, generation behavior, or refactor behavior
88
+ - inspect `zova/src/front/config/` when the task is about project-level frontend config overrides rather than module-local defaults
89
+ - inspect `zova/src/boot/` or `zova/src-ssr/` when the task is about startup flow or SSR behavior
90
+ - inspect `zova/src/css/` and `zova/public/` when the task is about project-level styling or static assets
91
+
92
+ A practical generator-oriented reading is:
93
+
94
+ - `create:*` commands choose the structural target before placing frontend resources
95
+ - `init:*` commands create project-level or module-level support assets
96
+ - `refactor:*` commands reshape existing frontend patterns without requiring manual rework from scratch
97
+ - `openapi:*` commands affect generated SDK-related frontend surfaces
98
+
99
+ ## Relationship to other reference pages
100
+
101
+ Read this page together with:
102
+
103
+ - [Package Map](/reference/package-map)
104
+ - [Frontend (Zova)](/frontend/introduction)
105
+ - [Modules and Suites](/frontend/modules-and-suites)
106
+ - [Environment and Config Guide](/frontend/environment-config-guide)
107
+ - [App Startup Guide](/frontend/app-startup-guide)
108
+ - [System Startup Guide](/frontend/system-startup-guide)
109
+ - [Frontend CLI](/frontend/cli)
110
+
111
+ A practical split is:
112
+
113
+ - [Frontend (Zova)](/frontend/introduction) is the broader frontend hub
114
+ - [Package Map](/reference/package-map) explains architecture boundaries and package metadata
115
+ - this page explains the practical directory tree contributors navigate
116
+
117
+ ## Implementation checks for frontend file-location changes
118
+
119
+ When changing frontend code, ask:
120
+
121
+ 1. does this change belong to a standalone module, a suite-contained module, or a project-level frontend area?
122
+ 2. is the task about generation behavior under `packages-cli/`, startup behavior under `src/boot` or `src-ssr`, or feature code under `src/`?
123
+ 3. should the example use a shared structural path, a Cabloy Basic example, or a public Cabloy Start example note?
124
+
125
+ That helps keep frontend file references aligned with the actual monorepo layout.
@@ -0,0 +1,47 @@
1
+ # Reference
2
+
3
+ This page is the reference hub for shared monorepo commands, package lookup, directory lookup, and shared terminology.
4
+
5
+ ## What Reference is responsible for
6
+
7
+ - shared monorepo command entrypoints
8
+ - CLI lookup and command-surface discovery
9
+ - package lookup across the repository
10
+ - backend and frontend directory lookup
11
+ - shared terminology and glossary support
12
+
13
+ ## How to approach reference work
14
+
15
+ For contributor and automation workflows in this repository, prefer this order:
16
+
17
+ 1. inspect the root `package.json` when you need the shared workflow entrypoints
18
+ 2. inspect the CLI reference before inferring command families from memory
19
+ 3. use package and directory lookup pages when the task is about locating code, modules, or shared terms
20
+ 4. pair Reference pages with Backend, Frontend, or Fullstack guides when lookup alone is not enough
21
+
22
+ ## Reference reading paths
23
+
24
+ Use Reference as the lookup area for shared commands, package discovery, directory lookup, and shared terminology.
25
+
26
+ ### Workflow entry path
27
+
28
+ Start here when you first need the shared monorepo command surface:
29
+
30
+ - [Repo Scripts](/reference/repo-scripts)
31
+ - [CLI Reference](/reference/cli-reference)
32
+ - [Fullstack CLI](/fullstack/cli)
33
+
34
+ ### Structure and lookup path
35
+
36
+ Use this path when you need to find where packages, backend directories, frontend directories, or shared terms live:
37
+
38
+ - [Package Map](/reference/package-map)
39
+ - [Backend Directory Structure](/reference/backend-directory-structure)
40
+ - [Frontend Directory Structure](/reference/frontend-directory-structure)
41
+ - [Glossary](/reference/glossary)
42
+
43
+ ## Edition impact
44
+
45
+ Cabloy Start keeps the same high-level workflow pattern while using different frontend flavors such as `cabloyStartAdmin` and `cabloyStartWeb`, plus its own SSR site baselines and project assets in the licensed private repository.
46
+
47
+ When documenting or automating flavor-specific commands, always confirm the active repo first.
@@ -96,6 +96,8 @@ For the broader backend entry path, also see [Backend (Vona)](/backend/introduct
96
96
 
97
97
  For the frontend architectural meaning of modules, suites, scope-driven resources, and runtime/startup structure, see `/frontend/modules-and-suites`, `/frontend/module-scope`, `/frontend/ioc-and-beans`, `/frontend/environment-config-guide`, `/frontend/app-startup-guide`, and `/frontend/system-startup-guide`.
98
98
 
99
+ For the practical frontend directory tree contributors navigate, also see [Frontend Directory Structure](/reference/frontend-directory-structure).
100
+
99
101
  ## Sibling edition
100
102
 
101
103
  - `cabloy-start` is a separate sibling repository, not a subdirectory of this monorepo.
@@ -1,5 +1,9 @@
1
1
  # Repo Scripts
2
2
 
3
+ Use this page when you need the compact lookup surface for the shared root scripts exposed by the Cabloy Basic monorepo.
4
+
5
+ For the broader Reference landing page, see [Reference Introduction](/reference/introduction).
6
+
3
7
  The root `package.json` is the first reference point for shared monorepo workflows.
4
8
 
5
9
  ## Current shared entrypoints in Cabloy Basic
@@ -21,9 +25,7 @@ The root `package.json` is the first reference point for shared monorepo workflo
21
25
 
22
26
  ## Edition-sensitive note
23
27
 
24
- Cabloy Start keeps the same high-level pattern while using different frontend flavors such as `cabloyStartAdmin` and `cabloyStartWeb`, plus its own Start-specific suites, SSR site baselines, and project assets in the licensed private repository.
25
-
26
- ### Documentation and automation guidance
28
+ Cabloy Start keeps the same high-level pattern while using different frontend flavors such as `cabloyStartAdmin` and `cabloyStartWeb`, plus its own SSR site baselines and project assets in the licensed private repository.
27
29
 
28
30
  When documenting or automating flavor-specific commands, always confirm the active repo first.
29
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.52",
3
+ "version": "5.1.53",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -94,7 +94,7 @@
94
94
  "@quasar/app-vite": "npm:@cabloy/quasar-app-vite@^2.5.10",
95
95
  "@vue/babel-plugin-jsx": "npm:@cabloy/vue-babel-plugin-jsx@^2.0.1",
96
96
  "@vue/compiler-sfc": "npm:@cabloy/vue-compiler-sfc@^3.5.14",
97
- "@vue/runtime-core": "npm:@cabloy/vue-runtime-core@^3.5.56",
97
+ "@vue/runtime-core": "npm:@cabloy/vue-runtime-core@^3.5.57",
98
98
  "@vue/runtime-dom": "npm:@cabloy/vue-runtime-dom@^3.5.13",
99
99
  "@vue/reactivity": "npm:@cabloy/vue-reactivity@^3.5.16",
100
100
  "@vue/server-renderer": "npm:@cabloy/vue-server-renderer@^3.5.18",