cabloy 5.1.155 → 5.1.156

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 (53) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-contract-loop/SKILL.md +1 -1
  3. package/.claude/skills/cabloy-spec-generation/SKILL.md +1 -1
  4. package/.claude/skills/cabloy-workflow/SKILL.md +3 -3
  5. package/CHANGELOG.md +13 -0
  6. package/CLAUDE.md +1 -1
  7. package/README.md +18 -18
  8. package/package.json +1 -1
  9. package/repo-docs/.vitepress/public/CNAME +1 -1
  10. package/repo-docs/ai/edition-consistency-checklist.md +7 -7
  11. package/repo-docs/backend/quickstart.md +1 -1
  12. package/repo-docs/blogs/ai-react-nextjs-enterprise-architecture-cabloy/index.md +8 -8
  13. package/repo-docs/blogs/cabloy-fullstack-resource-addressing/index.md +13 -13
  14. package/repo-docs/blogs/vue-object-oriented-zova-beginner-mental-model/index.md +6 -6
  15. package/repo-docs/editions/cabloy-start.md +10 -12
  16. package/repo-docs/editions/choosing-between-basic-and-start.md +6 -7
  17. package/repo-docs/editions/detection.md +1 -1
  18. package/repo-docs/editions/overview.md +26 -14
  19. package/repo-docs/frontend/foundation.md +1 -1
  20. package/repo-docs/frontend/introduction.md +1 -1
  21. package/repo-docs/frontend/scripts.md +2 -2
  22. package/repo-docs/fullstack/deploy-cloudflare-docker.md +1 -1
  23. package/repo-docs/fullstack/edition-collaboration-differences.md +2 -2
  24. package/repo-docs/fullstack/introduction.md +7 -3
  25. package/repo-docs/fullstack/openapi-to-sdk.md +1 -1
  26. package/repo-docs/fullstack/quickstart.md +4 -4
  27. package/repo-docs/fullstack/vona-zova-integration.md +1 -1
  28. package/repo-docs/index.md +1 -1
  29. package/repo-docs/reference/glossary.md +8 -5
  30. package/repo-docs/reference/introduction.md +1 -1
  31. package/repo-docs/reference/repo-scripts.md +12 -4
  32. package/vona/packages-vona/vona/package.json +1 -1
  33. package/vona/packages-vona/vona-shared/package.json +4 -4
  34. package/vona/pnpm-lock.yaml +8 -3
  35. package/vona/src/suite/a-home/modules/home-user/src/bean/meta.redlock.ts +2 -1
  36. package/vona/src/suite/a-home/modules/home-user/src/service/roleAdapter.ts +115 -6
  37. package/vona/src/suite/a-home/modules/home-user/test/role.test.ts +163 -2
  38. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/package.json +1 -1
  39. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/src/.metadata/index.ts +26 -0
  40. package/vona/src/suite-vendor/a-cabloy/modules/a-rbac/src/bean/eventListener.roleMembershipChanged.ts +25 -0
  41. package/vona/src/suite-vendor/a-cabloy/package.json +2 -2
  42. package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +1 -1
  43. package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +1 -1
  44. package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +1 -1
  45. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/lib/beanQueueBase.ts +1 -1
  46. package/vona/src/suite-vendor/a-vona/modules/a-queue/src/service/queue.ts +2 -2
  47. package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +1 -1
  48. package/vona/src/suite-vendor/a-vona/modules/a-user/src/.metadata/index.ts +15 -0
  49. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/bean.role.ts +44 -3
  50. package/vona/src/suite-vendor/a-vona/modules/a-user/src/bean/event.roleMembershipChanged.ts +16 -0
  51. package/vona/src/suite-vendor/a-vona/modules/a-user/src/types/role.ts +12 -1
  52. package/vona/src/suite-vendor/a-vona/package.json +1 -1
  53. package/zova/pnpm-lock.yaml +1 -1
package/.cabloy-version CHANGED
@@ -1 +1 @@
1
- 5.1.155
1
+ 5.1.156
@@ -225,7 +225,7 @@ Important Cabloy Basic reverse-sync rule:
225
225
  - if the change was consumer-side, low-confidence, cross-edition, or happened outside the Claude hook path, run the reverse sync flow deliberately yourself
226
226
  - prefer visible proof under `zova/src/**/.metadata/**` when it is available; if the effective handoff only appears in `.zova-rest`, treat the safeguard as conservative reminder/auto-sync assistance rather than strict proof
227
227
 
228
- For Cabloy Start, verify the exact Start-specific flavor names, paths, SSR site baselines, and project assets in the licensed Start repo.
228
+ For Cabloy Start, verify the exact Start-specific flavor names, paths, SSR site baselines, and project assets in the active Start repository.
229
229
 
230
230
  ### Schema-driven UI decision branch
231
231
 
@@ -35,7 +35,7 @@ From the repository root, inspect:
35
35
  Interpret the markers as follows:
36
36
 
37
37
  - `__CABLOY_BASIC__` present: use Cabloy Basic source and public-doc assumptions;
38
- - `__CABLOY_START__` present: use Cabloy Start source and resolve its own licensed-site, UI, flavor, and command details;
38
+ - `__CABLOY_START__` present: use Cabloy Start source and resolve its own site, UI, flavor, and command details;
39
39
  - neither present: do not make strong edition-specific assumptions; inspect the nearby project shape and ask the user to confirm the edition.
40
40
 
41
41
  Never copy Basic flavor names, SSR assumptions, UI-library assumptions, or exact command lines into a Start record without verifying them in the active Start repository. The document architecture is shared; edition-specific runtime facts are not.
@@ -267,12 +267,12 @@ Bias toward:
267
267
 
268
268
  Bias toward:
269
269
 
270
- - the private commercial edition
270
+ - the public MIT-licensed edition maintained in its own repository
271
271
  - the Start repo marker
272
- - the licensed private repository source
272
+ - the active Start repository source
273
273
  - Vuetify-sensitive examples
274
274
  - Start-specific frontend flavor names
275
- - Start-specific suites/modules, SSR site baselines, project assets, and licensed private-repo structure
275
+ - Start-specific suites/modules, SSR site baselines, project assets, and separate-repository structure
276
276
 
277
277
  Do not silently reuse Basic examples when Start-specific assumptions matter.
278
278
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.156
4
+
5
+ ### Features
6
+
7
+ - Add a `bean.role` adapter.
8
+ - Update queue push capabilities.
9
+ - Move documentation from `docs.cabloy.com` to `cabloy.com`.
10
+
11
+ ### Improvements
12
+
13
+ - Refresh basic getting-started documentation and README content.
14
+ - Update repository scripts documentation and package configuration.
15
+
3
16
  ## 5.1.155
4
17
 
5
18
  ### Features
package/CLAUDE.md CHANGED
@@ -5,7 +5,7 @@
5
5
  Detect the active edition from the repository-root marker before making edition-sensitive assumptions:
6
6
 
7
7
  - exactly `__CABLOY_BASIC__` present → Cabloy Basic, the public framework/reference edition
8
- - exactly `__CABLOY_START__` present → Cabloy Start, the private commercial edition delivered as licensed source
8
+ - exactly `__CABLOY_START__` present → Cabloy Start, the public MIT-licensed edition maintained in its own repository
9
9
  - both markers present → treat the checkout as invalid or ambiguous and stop before giving edition-specific guidance
10
10
  - neither marker present → inspect the owning `package.json` and nearby repository structure, then ask before making an edition-specific assumption
11
11
 
package/README.md CHANGED
@@ -3,16 +3,16 @@
3
3
  [![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/cabloy/cabloy/blob/main/LICENSE)
4
4
  [![npm version](https://img.shields.io/npm/v/cabloy.svg?style=flat-square&label=cabloy)](https://www.npmjs.com/package/cabloy)
5
5
  [![npm downloads](https://img.shields.io/npm/dm/cabloy?color=orange&label=downloads)](https://www.npmjs.com/package/cabloy)
6
- [![Docs](https://img.shields.io/badge/docs-cabloy-4f46e5.svg?style=flat-square)](https://docs.cabloy.com)
6
+ [![Docs](https://img.shields.io/badge/docs-cabloy-4f46e5.svg?style=flat-square)](https://cabloy.com)
7
7
  [![Demo](https://img.shields.io/badge/demo-cabloy.com-059669.svg?style=flat-square)](https://cabloy.com)
8
8
 
9
9
  Cabloy is a Node.js fullstack framework for AI vibe coding.
10
10
 
11
11
  **One fullstack system for AI vibe coding—bidirectional type sync, CLI-first workflows, docs, and skills.**
12
12
 
13
- Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona, Zova, and suite-based modules provide the aligned architecture behind that workflow.
13
+ Instead of stitching separate backend and frontend stacks together, Cabloy keeps their contracts, tooling, and guidance connected in one repository. Vona is its backend framework and runtime layer, and Zova is its frontend framework and application layer. Cabloy Basic and Cabloy Start are related, complete edition baselines built on that shared architecture; see [Editions Overview](https://cabloy.com/editions/overview) for their deliberate differences.
14
14
 
15
- [Documentation](https://docs.cabloy.com) · [npm](https://www.npmjs.com/package/cabloy) · [Web Demo](https://cabloy.com) · [Admin Demo](https://cabloy.com/admin) · [GitHub](https://github.com/cabloy/cabloy)
15
+ [Documentation](https://cabloy.com) · [npm](https://www.npmjs.com/package/cabloy) · [Web Demo](https://cabloy.com) · [Admin Demo](https://cabloy.com/admin) · [GitHub](https://github.com/cabloy/cabloy)
16
16
 
17
17
  ## Fullstack Principles
18
18
 
@@ -27,7 +27,7 @@ Cabloy’s fullstack model is built around two core principles:
27
27
  - **Backend -> Frontend**: Vona emits Swagger/OpenAPI contracts that Zova can use to generate SDKs and related schema-aware helpers
28
28
  - **Frontend -> Backend**: Zova generates structural metadata and typing surfaces such as routes, components, and icons that can improve backend-side tooling and type hints
29
29
 
30
- For the complete explanation, see [Fullstack Introduction](https://docs.cabloy.com/fullstack/introduction), [Vona + Zova Integration](https://docs.cabloy.com/fullstack/vona-zova-integration), [Backend OpenAPI to Frontend SDK](https://docs.cabloy.com/fullstack/openapi-to-sdk), and [Frontend Metadata Back to Backend](https://docs.cabloy.com/fullstack/frontend-metadata-to-backend).
30
+ For the complete explanation, see [Fullstack Introduction](https://cabloy.com/fullstack/introduction), [Vona + Zova Integration](https://cabloy.com/fullstack/vona-zova-integration), [Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk), and [Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend).
31
31
 
32
32
  ## Get Started
33
33
 
@@ -82,17 +82,17 @@ pnpm_config_minimum_release_age=0 npm create cabloy
82
82
 
83
83
  If you already created the project directory and only need to rerun initialization, use the same environment variable with `npm run init`.
84
84
 
85
- For **Cabloy Start**, purchase access to the licensed private repository, clone `git@github.com:cabloy/cabloy-start.git`, and run `npm run init`. For the complete Start onboarding flow, read the [Cabloy Start](https://docs.cabloy.com/editions/cabloy-start) page.
85
+ For **Cabloy Start**, clone the public MIT-licensed repository at `https://github.com/cabloy/cabloy-start`, then run `npm run init`. For the complete Start onboarding flow, read the [Cabloy Start](https://cabloy.com/editions/cabloy-start) page.
86
86
 
87
87
  Then continue with the framework docs:
88
88
 
89
- - [Fullstack Quickstart](https://docs.cabloy.com/fullstack/quickstart)
90
- - [Documentation](https://docs.cabloy.com)
91
- - [Fullstack Introduction](https://docs.cabloy.com/fullstack/introduction)
92
- - [Backend Introduction](https://docs.cabloy.com/backend/introduction)
93
- - [Frontend Introduction](https://docs.cabloy.com/frontend/introduction)
94
- - [Editions Overview](https://docs.cabloy.com/editions/overview)
95
- - [Choosing Between Cabloy Basic and Cabloy Start](https://docs.cabloy.com/editions/choosing-between-basic-and-start)
89
+ - [Fullstack Quickstart](https://cabloy.com/fullstack/quickstart)
90
+ - [Documentation](https://cabloy.com)
91
+ - [Fullstack Introduction](https://cabloy.com/fullstack/introduction)
92
+ - [Backend Introduction](https://cabloy.com/backend/introduction)
93
+ - [Frontend Introduction](https://cabloy.com/frontend/introduction)
94
+ - [Editions Overview](https://cabloy.com/editions/overview)
95
+ - [Choosing Between Cabloy Basic and Cabloy Start](https://cabloy.com/editions/choosing-between-basic-and-start)
96
96
 
97
97
  To upgrade an existing Cabloy project:
98
98
 
@@ -168,16 +168,16 @@ npm run build
168
168
 
169
169
  For more details, see:
170
170
 
171
- - [Editions Overview](https://docs.cabloy.com/editions/overview)
172
- - [Choosing Between Cabloy Basic and Cabloy Start](https://docs.cabloy.com/editions/choosing-between-basic-and-start)
173
- - [Repo Scripts](https://docs.cabloy.com/reference/repo-scripts)
174
- - [Package Map](https://docs.cabloy.com/reference/package-map)
175
- - [AI Development Introduction](https://docs.cabloy.com/ai/introduction)
171
+ - [Editions Overview](https://cabloy.com/editions/overview)
172
+ - [Choosing Between Cabloy Basic and Cabloy Start](https://cabloy.com/editions/choosing-between-basic-and-start)
173
+ - [Repo Scripts](https://cabloy.com/reference/repo-scripts)
174
+ - [Package Map](https://cabloy.com/reference/package-map)
175
+ - [AI Development Introduction](https://cabloy.com/ai/introduction)
176
176
 
177
177
  Contribution guidelines:
178
178
 
179
179
  - prefer CLI-backed workflows with `npm run vona` and `npm run zova`
180
- - put user-facing and agent-facing guidance in [docs.cabloy.com](https://docs.cabloy.com)
180
+ - put user-facing and agent-facing guidance in [cabloy.com](https://cabloy.com)
181
181
  - put maintainer rationale, architecture notes, and engineering ADRs in [repo-docs-internal/](https://github.com/cabloy/cabloy/tree/main/repo-docs-internal)
182
182
  - put product and business specifications, delivery plans, and suite-local ADRs in [repo-specs/](https://github.com/cabloy/cabloy/tree/main/repo-specs)
183
183
  - verify framework changes with the narrowest meaningful checks first, then shared root scripts when broader confidence is needed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cabloy",
3
- "version": "5.1.155",
3
+ "version": "5.1.156",
4
4
  "gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
5
5
  "description": "A Node.js fullstack framework",
6
6
  "keywords": [
@@ -1 +1 @@
1
- docs.cabloy.com
1
+ cabloy.com
@@ -16,8 +16,8 @@ Before checking details, confirm that the content still tells the same baseline
16
16
 
17
17
  - **Cabloy Basic** is the public framework/reference edition
18
18
  - `npm create cabloy` creates the default Cabloy Basic project route
19
- - **Cabloy Start** is the private commercial edition
20
- - Cabloy Start is used by cloning the licensed private repository source directly
19
+ - **Cabloy Start** is the public MIT-licensed edition maintained in its own repository
20
+ - Cabloy Start is used by cloning its public repository directly and following its initialization workflow
21
21
  - both editions share the same Cabloy fullstack core
22
22
  - both editions share a frontend engineering layer built around Zova, Vue, Vite, Quasar tooling, and related libraries
23
23
  - the editions diverge in UI layer, frontend flavors, suites/modules, SSR site baselines, project assets, and some generated outputs
@@ -38,13 +38,13 @@ Confirm that the content:
38
38
  Confirm that the content states or implies the right project-entry model:
39
39
 
40
40
  - **Cabloy Basic** → `npm create cabloy`
41
- - **Cabloy Start** → licensed private repository clone
41
+ - **Cabloy Start** → public repository clone and edition-specific initialization workflow
42
42
 
43
43
  Watch for drift such as:
44
44
 
45
45
  - implying that Cabloy Start is created through `npm create cabloy`
46
46
  - implying that both editions use the same bootstrap path
47
- - omitting the Start licensing/private-repo model when it matters to the workflow
47
+ - omitting the Start public-repository and edition-specific initialization model when it matters to the workflow
48
48
 
49
49
  ## Checklist 3: shared core vs edition divergence is separated cleanly
50
50
 
@@ -88,7 +88,7 @@ Avoid wording that makes Quasar sound like the edition UI component library when
88
88
  For scripts, flavors, paths, and examples, confirm that:
89
89
 
90
90
  - Basic examples use Basic markers and Basic flavor names
91
- - Start examples tell the reader to verify the Start repo directly
91
+ - Start examples tell the reader to verify the active Start repository directly
92
92
  - Start workflows do not silently reuse Basic script or flavor assumptions
93
93
  - SSR site baseline assumptions match the edition being discussed
94
94
  - project-asset references match the repo being discussed
@@ -119,7 +119,7 @@ When content ends with verification steps, confirm that it reminds the reader or
119
119
  - generated outputs
120
120
  - project assets
121
121
 
122
- For Start-sensitive workflows, confirm that verification points back to the licensed Start repository rather than pretending the current Basic repo is the direct source of truth.
122
+ For Start-sensitive workflows, confirm that verification points back to the active Start repository rather than pretending the current Basic repo is the direct source of truth.
123
123
 
124
124
  ## Checklist 8: wording about system size stays appropriately scoped
125
125
 
@@ -137,7 +137,7 @@ Before you finish an edition-aware change, ask:
137
137
  1. Did I clearly separate shared core from edition-specific divergence?
138
138
  2. Did I preserve the correct Basic vs Start creation path?
139
139
  3. Did I avoid turning UI difference into the whole story?
140
- 4. Did I point Start-specific operational truth back to the licensed Start repo where needed?
140
+ 4. Did I point Start-specific operational truth back to the active Start repository where needed?
141
141
  5. Do docs, rules, and skills each play their proper role?
142
142
 
143
143
  ## Read together with
@@ -87,7 +87,7 @@ Legacy Vona docs described creating projects from templates such as `cabloy-basi
87
87
  That history still matters, because it explains why the Cabloy ecosystem now supports two editions:
88
88
 
89
89
  - **Cabloy Basic**: the public framework/reference edition, including the project route created by `npm create cabloy`, with a shared frontend engineering layer and a DaisyUI + Tailwind CSS oriented UI layer in the current public examples
90
- - **Cabloy Start**: the private commercial edition, accessed by cloning the licensed private repository source, with a Vuetify-oriented UI layer plus edition-specific SSR site baselines and project assets
90
+ - **Cabloy Start**: the public MIT-licensed edition maintained in its own repository, accessed by cloning that repository and following its initialization workflow, with a Vuetify-oriented UI layer plus edition-specific SSR site baselines and project assets
91
91
 
92
92
  In the current monorepo docs, do not treat these as just template names. Treat them as edition boundaries that affect frontend integration, scripts, UI assumptions, and examples.
93
93
 
@@ -163,15 +163,15 @@ npm run dev:zova:admin
163
163
  npm run dev:zova:web
164
164
  ```
165
165
 
166
- Then follow the [Cabloy Fullstack Quick Start Tutorials](https://docs.cabloy.com/fullstack/tutorials-overview). Start with a small module and experience how CRUD, frontend/backend contract sharing, and a fullstack workflow connect in practice.
166
+ Then follow the [Cabloy Fullstack Quick Start Tutorials](https://cabloy.com/fullstack/tutorials-overview). Start with a small module and experience how CRUD, frontend/backend contract sharing, and a fullstack workflow connect in practice.
167
167
 
168
- If you are looking not for another component library or another Next.js starter, but for a framework built for enterprise fullstack collaboration, start with the [Cabloy Fullstack Quickstart](https://docs.cabloy.com/fullstack/quickstart) and give CabloyJS a try.
168
+ If you are looking not for another component library or another Next.js starter, but for a framework built for enterprise fullstack collaboration, start with the [Cabloy Fullstack Quickstart](https://cabloy.com/fullstack/quickstart) and give CabloyJS a try.
169
169
 
170
170
  ## Further reading
171
171
 
172
- - [Cabloy Fullstack Introduction](https://docs.cabloy.com/fullstack/introduction)
173
- - [Cabloy Fullstack Quickstart](https://docs.cabloy.com/fullstack/quickstart)
174
- - [Cabloy Suites and Modules](https://docs.cabloy.com/fullstack/suites-and-modules)
175
- - [Cabloy Vona + Zova Integration](https://docs.cabloy.com/fullstack/vona-zova-integration)
176
- - [Cabloy Contract Loop Playbook](https://docs.cabloy.com/fullstack/contract-loop-playbook)
177
- - [Cabloy Fullstack Quick Start Tutorials](https://docs.cabloy.com/fullstack/tutorials-overview)
172
+ - [Cabloy Fullstack Introduction](https://cabloy.com/fullstack/introduction)
173
+ - [Cabloy Fullstack Quickstart](https://cabloy.com/fullstack/quickstart)
174
+ - [Cabloy Suites and Modules](https://cabloy.com/fullstack/suites-and-modules)
175
+ - [Cabloy Vona + Zova Integration](https://cabloy.com/fullstack/vona-zova-integration)
176
+ - [Cabloy Contract Loop Playbook](https://cabloy.com/fullstack/contract-loop-playbook)
177
+ - [Cabloy Fullstack Quick Start Tutorials](https://cabloy.com/fullstack/tutorials-overview)
@@ -36,7 +36,7 @@ This is not one universal string that travels through every layer, nor is it zer
36
36
 
37
37
  IoC asks a focused question: **who creates, owns, disposes of, and supplies a runtime capability?**
38
38
 
39
- In Zova, a Bean may be held in the `sys`, `app`, or `ctx` container scope. Code can use `@Use` for injection or use containers and Scope for dependency lookup. This single model keeps state sharing, lifecycle behavior, and cross-module collaboration from drifting into unrelated mechanisms. [IoC and Beans](https://docs.cabloy.com/frontend/ioc-and-beans) explains that model in detail.
39
+ In Zova, a Bean may be held in the `sys`, `app`, or `ctx` container scope. Code can use `@Use` for injection or use containers and Scope for dependency lookup. This single model keeps state sharing, lifecycle behavior, and cross-module collaboration from drifting into unrelated mechanisms. [IoC and Beans](https://cabloy.com/frontend/ioc-and-beans) explains that model in detail.
40
40
 
41
41
  Addressing asks a broader question: **when one layer needs something, which identity expresses the target, who resolves it, and what kind of resource results?**
42
42
 
@@ -66,7 +66,7 @@ Cabloy defines a **suite** as a business-domain composition boundary and a **mod
66
66
 
67
67
  In the Student sample, the domain is `a-training` and the module is `training-student`. Vona and Zova both have corresponding suite/module structures, so backend Controllers, Services, Models, Entities, and DTOs can evolve along the same business boundary as frontend pages, APIs, Models, and metadata. What is shared first is a **business coordinate**, not a block of memory shared by Node.js and the browser.
68
68
 
69
- That is why a module name matters more than a directory position. Directories can be reorganized and implementation files can move, while a stable module namespace can continue to carry the logical identity of Services, Models, APIs, locales, errors, Resources, and frontend render resources. See [Suites and Modules](https://docs.cabloy.com/fullstack/suites-and-modules) for the boundary between suites and modules.
69
+ That is why a module name matters more than a directory position. Directories can be reorganized and implementation files can move, while a stable module namespace can continue to carry the logical identity of Services, Models, APIs, locales, errors, Resources, and frontend render resources. See [Suites and Modules](https://cabloy.com/fullstack/suites-and-modules) for the boundary between suites and modules.
70
70
 
71
71
  ## Coordinate two: Bean full names and the Scope facade
72
72
 
@@ -101,7 +101,7 @@ const students = await this.scope.model.student.select();
101
101
  const sku = await this.$scope.commerceCatalog.model.sku.getById(id);
102
102
  ```
103
103
 
104
- Scope does not create another identity system. It raises a container-level full name into an everyday way to navigate a module’s resource catalog. Backend Scope can organize services, models, entities, configuration, locales, and errors; frontend Scope commonly exposes facades for configuration, constants, locales, errors, APIs, and API Schemas. Both [Vona Backend Foundation](https://docs.cabloy.com/backend/foundation) and [Zova Module Scope](https://docs.cabloy.com/frontend/module-scope) describe that division of responsibility.
104
+ Scope does not create another identity system. It raises a container-level full name into an everyday way to navigate a module’s resource catalog. Backend Scope can organize services, models, entities, configuration, locales, and errors; frontend Scope commonly exposes facades for configuration, constants, locales, errors, APIs, and API Schemas. Both [Vona Backend Foundation](https://cabloy.com/backend/foundation) and [Zova Module Scope](https://cabloy.com/frontend/module-scope) describe that division of responsibility.
105
105
 
106
106
  There is an important limit: Scope lookup can resolve only resources from modules that have already been composed into the active application. A correct string does not install, load, or order an absent module. Module dependencies, suite/application composition, and runtime lookup are related but different concerns. The first establishes availability, ordering, and versioning; only then can the latter retrieve a resource from the composed modules.
107
107
 
@@ -187,7 +187,7 @@ If this field needs specialized controls instead of the default Renderer, it can
187
187
 
188
188
  That does not mean each field automatically grows a complete UI, nor that every presentation decision belongs in the backend. It means the field’s business meaning, data contract, and permitted exposure do not have to be copied into backend DTOs, frontend request types, form rules, table columns, and response post-processing—and then manually kept aligned.
189
189
 
190
- In this **forward contract chain**, backend Controllers, DTOs, Entities, and validation rules are the source of truth. Vona generates OpenAPI; Zova then generates or consumes SDK/Schema contract material. When a backend contract changes, the recommended path is to propagate that truth forward rather than hand-edit multiple frontend copies. [Backend OpenAPI to Frontend SDK](https://docs.cabloy.com/fullstack/openapi-to-sdk) and [One Contract Surface, Four Uses](https://docs.cabloy.com/fullstack/tutorial-6-one-contract-four-uses) describe the boundary of that chain.
190
+ In this **forward contract chain**, backend Controllers, DTOs, Entities, and validation rules are the source of truth. Vona generates OpenAPI; Zova then generates or consumes SDK/Schema contract material. When a backend contract changes, the recommended path is to propagate that truth forward rather than hand-edit multiple frontend copies. [Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk) and [One Contract Surface, Four Uses](https://cabloy.com/fullstack/tutorial-6-one-contract-four-uses) describe the boundary of that chain.
191
191
 
192
192
  ## Coordinate five: routes choose a UI scene; Resource identities choose business context
193
193
 
@@ -280,7 +280,7 @@ This has two practical benefits:
280
280
 
281
281
  For example, a `training-student` frontend Model can initialize the generic owner with `training-student:student`, then add semantic entry points for business actions such as `summary(id)` or `deleteForce(id)` while reusing that owner’s item query, mutation, and invalidation boundary.
282
282
 
283
- One more distinction matters: a call-site value such as `['select', ...]` or `['item', id, action]` is only a logical query key. The effective cache identity also incorporates Model Bean identity and selector. A short query key is therefore not an address that is globally unique across the application. [Model Resource Internals Deep Dive](https://docs.cabloy.com/frontend/model-resource-internals-deep-dive) and [Model State Guide](https://docs.cabloy.com/frontend/model-state-guide) explain this owner/state identity layer.
283
+ One more distinction matters: a call-site value such as `['select', ...]` or `['item', id, action]` is only a logical query key. The effective cache identity also incorporates Model Bean identity and selector. A short query key is therefore not an address that is globally unique across the application. [Model Resource Internals Deep Dive](https://cabloy.com/frontend/model-resource-internals-deep-dive) and [Model State Guide](https://cabloy.com/frontend/model-state-guide) explain this owner/state identity layer.
284
284
 
285
285
  ## Coordinate seven: Schema metadata selects concrete UI capabilities
286
286
 
@@ -336,7 +336,7 @@ In other words, `schemaRow` is the current select-response row Schema, and `rest
336
336
 
337
337
  Cabloy resource addressing therefore does not stop at an API. Table cells, form fields, image scenes, and Behaviors can also be selected through module-qualified, scene-aware frontend resource identities. Field metadata can, for example, refer to `training-student:formFieldLevel`, which a registered frontend capability resolves and renders.
338
338
 
339
- This does not mean backend code executes frontend components. More precisely, backend contracts or metadata can declare which frontend rendering resource should be selected at a point; the frontend still owns the renderer implementation and runtime. Frontend-owned facts such as routes, components, icons, table cells, and form fields also have a reverse contract handoff: refresh the frontend metadata/build output first, then let Vona consume the synchronized local dependency result. [Frontend Metadata Back to Backend](https://docs.cabloy.com/fullstack/frontend-metadata-to-backend) describes that reverse chain.
339
+ This does not mean backend code executes frontend components. More precisely, backend contracts or metadata can declare which frontend rendering resource should be selected at a point; the frontend still owns the renderer implementation and runtime. Frontend-owned facts such as routes, components, icons, table cells, and form fields also have a reverse contract handoff: refresh the frontend metadata/build output first, then let Vona consume the synchronized local dependency result. [Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend) describes that reverse chain.
340
340
 
341
341
  The two directions are distinct:
342
342
 
@@ -407,13 +407,13 @@ IoC is one runtime foundation of that chain, but not the whole chain. The engine
407
407
 
408
408
  ### Concepts and workflows
409
409
 
410
- - [Cabloy: Suites and Modules](https://docs.cabloy.com/fullstack/suites-and-modules)
411
- - [Cabloy: Vona Backend Foundation](https://docs.cabloy.com/backend/foundation)
412
- - [Cabloy: Zova IoC and Beans](https://docs.cabloy.com/frontend/ioc-and-beans)
413
- - [Cabloy: Zova Module Scope](https://docs.cabloy.com/frontend/module-scope)
414
- - [Cabloy: Backend OpenAPI to Frontend SDK](https://docs.cabloy.com/fullstack/openapi-to-sdk)
415
- - [Cabloy: Frontend Metadata Back to Backend](https://docs.cabloy.com/fullstack/frontend-metadata-to-backend)
416
- - [Cabloy: Model Resource Internals Deep Dive](https://docs.cabloy.com/frontend/model-resource-internals-deep-dive)
410
+ - [Cabloy: Suites and Modules](https://cabloy.com/fullstack/suites-and-modules)
411
+ - [Cabloy: Vona Backend Foundation](https://cabloy.com/backend/foundation)
412
+ - [Cabloy: Zova IoC and Beans](https://cabloy.com/frontend/ioc-and-beans)
413
+ - [Cabloy: Zova Module Scope](https://cabloy.com/frontend/module-scope)
414
+ - [Cabloy: Backend OpenAPI to Frontend SDK](https://cabloy.com/fullstack/openapi-to-sdk)
415
+ - [Cabloy: Frontend Metadata Back to Backend](https://cabloy.com/fullstack/frontend-metadata-to-backend)
416
+ - [Cabloy: Model Resource Internals Deep Dive](https://cabloy.com/frontend/model-resource-internals-deep-dive)
417
417
 
418
418
  ### Source samples verified for this article
419
419
 
@@ -475,9 +475,9 @@ If you already know Vue 3, try writing one small Zova feature: one Controller, o
475
475
 
476
476
  ## Further reading
477
477
 
478
- - [Zova Frontend Foundation](https://docs.cabloy.com/frontend/foundation)
479
- - [Reading Zova for Vue Developers](https://docs.cabloy.com/frontend/reading-zova-for-vue-developers)
480
- - [Zova vs Vue 3 Comparison](https://docs.cabloy.com/frontend/zova-vs-vue3-comparison)
481
- - [IoC and Beans](https://docs.cabloy.com/frontend/ioc-and-beans)
482
- - [State Architecture for Vue Developers](https://docs.cabloy.com/frontend/state-architecture-for-vue-developers)
483
- - [Model Architecture](https://docs.cabloy.com/frontend/model-architecture)
478
+ - [Zova Frontend Foundation](https://cabloy.com/frontend/foundation)
479
+ - [Reading Zova for Vue Developers](https://cabloy.com/frontend/reading-zova-for-vue-developers)
480
+ - [Zova vs Vue 3 Comparison](https://cabloy.com/frontend/zova-vs-vue3-comparison)
481
+ - [IoC and Beans](https://cabloy.com/frontend/ioc-and-beans)
482
+ - [State Architecture for Vue Developers](https://cabloy.com/frontend/state-architecture-for-vue-developers)
483
+ - [Model Architecture](https://cabloy.com/frontend/model-architecture)
@@ -1,6 +1,6 @@
1
1
  # Cabloy Start
2
2
 
3
- Cabloy Start is the private commercial edition. It is a sibling private repository that shares the Cabloy fullstack direction while intentionally differing from Cabloy Basic.
3
+ Cabloy Start is the public MIT-licensed edition. It is a sibling repository that shares the Cabloy fullstack direction while intentionally differing from Cabloy Basic.
4
4
 
5
5
  ## Repository marker
6
6
 
@@ -14,27 +14,25 @@ Use that marker before choosing examples, UI assumptions, or automation behavior
14
14
 
15
15
  Use Cabloy Start as the edition-aware target when work depends on:
16
16
 
17
- - direct use of the licensed private repository source
17
+ - direct use of the public Cabloy Start repository source
18
18
  - Vuetify-specific frontend workflows
19
19
  - Cabloy Start flavor names in frontend scripts
20
- - edition-specific module composition in the licensed Start repository
21
- - licensed private-repo structure and edition-specific project composition
20
+ - edition-specific module composition in the active Start repository
21
+ - separate-repository structure and edition-specific project composition
22
22
  - edition-specific SSR site baselines and project assets
23
23
 
24
- ## Get access and initialize
24
+ ## Clone and initialize
25
25
 
26
- Cabloy Start is the private commercial edition. It does not use the default `npm create cabloy` project route.
26
+ Cabloy Start is public and MIT-licensed. It does not use the default `npm create cabloy` project route.
27
27
 
28
28
  To use Cabloy Start:
29
29
 
30
- 1. purchase a license and obtain repository access
31
- 2. clone the private repository source directly
32
- 3. run the edition initialization flow in the cloned project
30
+ 1. clone the public repository directly
31
+ 2. run the edition initialization flow in the cloned project
33
32
 
34
- Access surfaces:
33
+ Repository:
35
34
 
36
- - Purchase page: `https://cabloy.com/module/cabloy-start`
37
- - Repository: `https://github.com/cabloy/cabloy-start`
35
+ - `https://github.com/cabloy/cabloy-start`
38
36
 
39
37
  Clone the repository:
40
38
 
@@ -6,7 +6,7 @@ This guide helps you choose the right Cabloy edition before you start a new proj
6
6
 
7
7
  Choose **Cabloy Basic** when you want the public framework/reference edition, the default `npm create cabloy` project route, and a faster path for open, community-oriented, or small-to-medium system development.
8
8
 
9
- Choose **Cabloy Start** when you want the private commercial edition, purchase-based access to the licensed private repository source, and a stronger baseline for more complex business systems built around Start-oriented SSR sites, project assets, and a Vuetify-aligned UI layer.
9
+ Choose **Cabloy Start** when you want the public MIT-licensed edition in its own repository and a stronger baseline for more complex business systems built around Start-oriented SSR sites, project assets, and a Vuetify-aligned UI layer.
10
10
 
11
11
  ## What stays the same in both editions
12
12
 
@@ -35,9 +35,8 @@ Cabloy Basic is usually the better fit when you want:
35
35
 
36
36
  Cabloy Start is usually the better fit when you want:
37
37
 
38
- - the private commercial edition
39
- - purchase-based access to the licensed private repository source
40
- - direct cloning of the Start repository after authorization
38
+ - the public MIT-licensed edition maintained in its own repository
39
+ - direct cloning of the public Start repository
41
40
  - Start-specific flavors, SSR site baselines, and project assets
42
41
  - a UI layer aligned with Vuetify
43
42
  - a stronger starting point for more complex business systems
@@ -48,7 +47,7 @@ Cabloy Start is usually the better fit when you want:
48
47
  ### Project creation path
49
48
 
50
49
  - **Cabloy Basic**: create the project with `npm create cabloy`
51
- - **Cabloy Start**: purchase access, clone the licensed private repository source directly, then run `npm run init`
50
+ - **Cabloy Start**: clone the public repository directly, then run `npm run init`
52
51
 
53
52
  ### UI strategy
54
53
 
@@ -58,7 +57,7 @@ Cabloy Start is usually the better fit when you want:
58
57
  ### Repo and asset model
59
58
 
60
59
  - **Cabloy Basic**: public repository and public reference materials
61
- - **Cabloy Start**: private repository with edition-specific SSR sites and project assets
60
+ - **Cabloy Start**: separate public repository with edition-specific SSR sites and project assets
62
61
 
63
62
  ### AI workflow assumptions
64
63
 
@@ -72,7 +71,7 @@ This is why edition detection matters so much for AI vibe coding.
72
71
  Use this rule when you need a fast decision:
73
72
 
74
73
  1. If you want the public, default, `npm create cabloy` path, choose **Cabloy Basic**.
75
- 2. If you want the licensed private repo with Start-oriented assets, a Vuetify-based business-system baseline, and a clone-plus-`npm run init` onboarding path, choose **Cabloy Start**.
74
+ 2. If you want the public MIT-licensed Start repository with Start-oriented assets, a Vuetify-based business-system baseline, and a clone-plus-`npm run init` onboarding path, choose **Cabloy Start**.
76
75
  3. If AI workflow accuracy matters for UI generation, SSR site assumptions, or flavor-specific commands, confirm the edition before writing prompts, rules, skills, or docs.
77
76
 
78
77
  ## Read together with
@@ -16,7 +16,7 @@ The two editions share many concepts but differ in important operational details
16
16
  - frontend UI library assumptions
17
17
  - flavor-specific frontend scripts
18
18
  - module availability
19
- - value-add project content in the private Start repository
19
+ - Start-specific value-add project content
20
20
 
21
21
  If an agent skips edition detection, it may generate the wrong instructions, recommend the wrong module, or use the wrong UI stack.
22
22
 
@@ -7,7 +7,19 @@ Cabloy currently supports two related but distinct editions:
7
7
  - **Cabloy Basic**
8
8
  - **Cabloy Start**
9
9
 
10
- They share one Cabloy fullstack architecture, but they are distributed, composed, and optimized differently.
10
+ They share one Cabloy fullstack architecture, but they are composed and optimized differently.
11
+
12
+ ## How the names fit together
13
+
14
+ | Name | Functional role |
15
+ | ------------ | --------------------------------------------------------------------------------- |
16
+ | Cabloy | The coordinated Node.js fullstack system. |
17
+ | Vona | Cabloy's backend framework and runtime layer. |
18
+ | Zova | Cabloy's frontend framework and application layer. |
19
+ | Cabloy Basic | The public reference and community edition baseline. |
20
+ | Cabloy Start | The public MIT-licensed business-system edition baseline in a sibling repository. |
21
+
22
+ Vona and Zova answer the architectural-layer question. Cabloy Basic and Cabloy Start answer the complete-edition-baseline question: both use the shared Cabloy architecture, but their UI, frontend flavors, modules, SSR baselines, project assets, generated outputs, root scripts, and onboarding paths can differ.
11
23
 
12
24
  If you need a recommendation path, start with [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start).
13
25
 
@@ -26,7 +38,7 @@ Use this page as the main editions hub, then choose the path that matches your t
26
38
 
27
39
  ### Selection path
28
40
 
29
- Start here when the task is about choosing the right edition baseline or understanding distribution differences:
41
+ Start here when the task is about choosing the right edition baseline or understanding their differences:
30
42
 
31
43
  - [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
32
44
  - [Cabloy Basic](/editions/cabloy-basic)
@@ -44,17 +56,17 @@ Use this path when the task is about repo-aware automation, flavor assumptions,
44
56
 
45
57
  Both editions are built around the same core direction:
46
58
 
47
- - **Vona** as the backend framework
48
- - **Zova** as the frontend framework
59
+ - **Vona** as the backend framework and runtime layer
60
+ - **Zova** as the frontend framework and application layer
49
61
  - suite-based modules across the stack
50
62
  - root-level `npm run vona` and `npm run zova` entrypoints
51
63
  - CLI-backed workflows for generation, refactoring, metadata, and verification
52
64
 
53
- This means the editions are related fullstack baselines, not unrelated products.
65
+ This means the editions are related fullstack baselines, not unrelated products or alternatives to Vona and Zova.
54
66
 
55
67
  ## What "Basic" means
56
68
 
57
- Cabloy Basic is the public framework/reference edition.
69
+ Cabloy Basic is the public reference and community edition of Cabloy.
58
70
 
59
71
  - this public repository is marked with `__CABLOY_BASIC__`
60
72
  - projects created with `npm create cabloy` follow the Cabloy Basic route
@@ -64,14 +76,13 @@ Cabloy Basic is the open-source community edition and is optimized for public re
64
76
 
65
77
  ## What "Start" means
66
78
 
67
- Cabloy Start is the private commercial edition.
79
+ Cabloy Start is the public MIT-licensed edition maintained in its own repository.
68
80
 
69
- - the private repository is marked with `__CABLOY_START__`
70
- - users first purchase a license and obtain repository access, then clone the private repository source directly
71
- - after cloning, the project is initialized through the Start edition workflow
72
- - Start uses its own edition-specific flavors, SSR site baselines, and project assets for that edition
81
+ - the public repository is marked with `__CABLOY_START__`
82
+ - users clone the public repository source directly, then run `npm run init`
83
+ - Start uses its own edition-specific flavors, SSR site baselines, and project assets
73
84
 
74
- Cabloy Start is optimized as a commercial baseline for more complex business systems while staying on the same Cabloy fullstack direction.
85
+ Cabloy Start is optimized as a business-system baseline for more complex systems while staying on the same Cabloy fullstack direction.
75
86
 
76
87
  ## Architecture layering
77
88
 
@@ -105,7 +116,8 @@ The editions intentionally diverge in several surfaces:
105
116
  - frontend flavor names
106
117
  - suite and module composition
107
118
  - admin/web SSR site baselines
108
- - licensed private-repo structure and edition-specific project assets
119
+ - separate-repository structure and edition-specific project assets
120
+ - generated outputs and root scripts
109
121
  - rules, skills, and docs used for AI vibe coding
110
122
 
111
123
  For example:
@@ -134,5 +146,5 @@ Write shared explanations once. Split or annotate only when a workflow changes b
134
146
  - UI library assumptions
135
147
  - frontend flavor names
136
148
  - different modules or assets
137
- - distribution and authorization model
149
+ - repository and initialization model
138
150
  - edition-specific scripts, generated outputs, or AI workflow guidance
@@ -28,7 +28,7 @@ That flexibility matters directly for Cabloy’s edition model:
28
28
 
29
29
  - **Shared frontend engineering layer**: both editions follow the same Zova-centered frontend direction, with Vue, Vite, Quasar tooling, and related libraries
30
30
  - **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-oriented frontend workflows and may use different module composition and SSR site baselines
31
+ - **Cabloy Start UI layer**: the public MIT-licensed edition aligns with Vuetify-oriented frontend workflows and may use different module composition and SSR site baselines
32
32
 
33
33
  So docs and skills must separate shared Zova principles from edition-specific UI assumptions.
34
34
 
@@ -137,6 +137,6 @@ Frontend work is where Cabloy Basic and Cabloy Start differ most clearly.
137
137
 
138
138
  - **Shared frontend engineering layer**: both editions follow the same Zova-centered frontend direction, with Vue, Vite, Quasar tooling, and related libraries.
139
139
  - **Cabloy Basic UI layer**: current public docs and examples align with DaisyUI + Tailwind CSS.
140
- - **Cabloy Start UI layer**: the private commercial edition aligns with Vuetify and may use different frontend modules, SSR site baselines, and project assets.
140
+ - **Cabloy Start UI layer**: the public MIT-licensed edition aligns with Vuetify and may use different frontend modules, SSR site baselines, and project assets.
141
141
 
142
142
  Because of this, automation and docs should always detect the active edition before recommending page-level, component-level, or UI-library-specific work.
@@ -84,7 +84,7 @@ For the complete tag vocabulary, managed-runner argument boundaries, and externa
84
84
 
85
85
  ## Cabloy Start root wrappers
86
86
 
87
- Cabloy Start is the licensed private edition. Its default root wrappers use the `cabloyStartAdmin` and `cabloyStartWeb` flavors:
87
+ Cabloy Start is the public MIT-licensed edition. Its default root wrappers use the `cabloyStartAdmin` and `cabloyStartWeb` flavors:
88
88
 
89
89
  ```bash
90
90
  npm run dev:zova:admin
@@ -160,7 +160,7 @@ cd zova && npm run build:rest:cabloyBasicAdmin
160
160
 
161
161
  ## Cabloy Start
162
162
 
163
- The licensed private repository supports Start-specific flavors:
163
+ The separate public Cabloy Start repository supports Start-specific flavors:
164
164
 
165
165
  - `cabloyStartAdmin`
166
166
  - `cabloyStartWeb`
@@ -124,7 +124,7 @@ For a public route, the default response header depends on whether the URL ident
124
124
  | missing or false `meta.locale` | `Cache-Control: no-cache, no-store, must-revalidate` | Not stored |
125
125
  | `session` profile | `Cache-Control: private, no-store` | Not stored |
126
126
 
127
- For Cabloy Start, verify the effective Web and Admin values in the licensed Start repository before creating the Cloudflare rule. The rule design remains the same: preserve and follow the origin `Cache-Control` response instead of replacing it.
127
+ For Cabloy Start, verify the effective Web and Admin values in the active Start repository before creating the Cloudflare rule. The rule design remains the same: preserve and follow the origin `Cache-Control` response instead of replacing it.
128
128
 
129
129
  A route can override the flavor default through SSR route metadata. An explicit public `meta.ssrProfileOptions.responseCache` policy remains authoritative; the Cloudflare rule follows the resulting response contract and does not replace it.
130
130