cabloy 5.1.52 → 5.1.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +10 -0
- package/.github/workflows/docs-pages.yml +1 -1
- package/.github/workflows/vona-cov-pg.yml +1 -1
- package/.github/workflows/vona-test-crud.yml +1 -1
- package/.github/workflows/vona-test-mysql.yml +1 -1
- package/.github/workflows/vona-test-pg.yml +1 -1
- package/.github/workflows/vona-test-sqlite3.yml +1 -1
- package/.github/workflows/vona-tsc.yml +1 -1
- package/.github/workflows/zova-ui.yml +1 -1
- package/CHANGELOG.md +33 -0
- package/CLAUDE.md +3 -0
- package/README.md +8 -8
- package/cabloy-docs/.vitepress/config.mjs +144 -50
- package/cabloy-docs/ai/introduction.md +44 -0
- package/cabloy-docs/backend/model-guide.md +7 -0
- package/cabloy-docs/backend/orm-mutation-guide.md +10 -0
- package/cabloy-docs/backend/orm-select-guide.md +7 -6
- package/cabloy-docs/backend/quickstart.md +9 -9
- package/cabloy-docs/editions/cabloy-start.md +3 -3
- package/cabloy-docs/editions/choosing-between-basic-and-start.md +5 -5
- package/cabloy-docs/editions/overview.md +34 -3
- package/cabloy-docs/frontend/css-in-js-guide.md +1 -1
- package/cabloy-docs/frontend/environment-config-guide.md +28 -0
- package/cabloy-docs/frontend/foundation.md +1 -1
- package/cabloy-docs/frontend/introduction.md +69 -1
- package/cabloy-docs/frontend/navigation-guards-guide.md +1 -1
- package/cabloy-docs/frontend/quickstart.md +1 -0
- package/cabloy-docs/frontend/scripts.md +1 -1
- package/cabloy-docs/frontend/ssr-env.md +23 -0
- package/cabloy-docs/frontend/theme-guide.md +140 -7
- package/cabloy-docs/fullstack/cli.md +6 -6
- package/cabloy-docs/fullstack/edition-collaboration-differences.md +1 -1
- package/cabloy-docs/fullstack/introduction.md +39 -1
- package/cabloy-docs/fullstack/quickstart.md +8 -8
- package/cabloy-docs/fullstack/vona-zova-integration.md +1 -1
- package/cabloy-docs/index.md +1 -1
- package/cabloy-docs/pnpm-workspace.yaml +2 -0
- package/cabloy-docs/reference/cli-reference.md +65 -20
- package/cabloy-docs/reference/frontend-directory-structure.md +125 -0
- package/cabloy-docs/reference/introduction.md +47 -0
- package/cabloy-docs/reference/package-map.md +2 -0
- package/cabloy-docs/reference/repo-scripts.md +5 -3
- package/package.json +3 -3
- package/scripts/init.ts +18 -0
- package/vona/README.md +5 -5
- package/vona/README.zh-CN.md +5 -5
- package/vona/package.original.json +1 -6
- package/vona/packages-cli/cabloy-cli/package.json +2 -2
- package/vona/packages-cli/cli/README.md +56 -0
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli/src/bin/vona.ts +0 -26
- package/vona/packages-cli/cli-set-api/README.md +48 -0
- package/vona/packages-cli/cli-set-api/cli/templates/create/module/boilerplate/_package.json +1 -1
- package/vona/packages-cli/cli-set-api/package.json +2 -2
- package/vona/packages-cli/cli-set-api/src/lib/bean/cli.bin.test.ts +16 -5
- package/vona/packages-cli/cli-set-api/src/lib/command/bin.build.ts +2 -2
- package/vona/packages-cli/cli-set-api/src/lib/command/bin.buildGeneral.ts +1 -1
- package/vona/packages-cli/cli-set-api/src/lib/command/bin.buildModule.ts +1 -1
- package/vona/packages-cli/cli-set-api/src/lib/command/bin.play.ts +2 -1
- package/vona/packages-cli/cli-set-api/src/lib/command/bin.test.ts +1 -1
- package/vona/packages-utils/cascade-extend/package.json +2 -2
- package/vona/packages-utils/compose/package.json +2 -2
- package/vona/packages-utils/deps/package.json +2 -2
- package/vona/packages-utils/dotenv/package.json +2 -2
- package/vona/packages-utils/extend/package.json +2 -2
- package/vona/packages-utils/json5/package.json +2 -2
- package/vona/packages-utils/lint/package.json +1 -1
- package/vona/packages-utils/lint/src/oxc/lint.ts +1 -4
- package/vona/packages-utils/lint/src/oxc/lintVue.ts +1 -4
- package/vona/packages-utils/localeutil/package.json +2 -2
- package/vona/packages-utils/module-glob/package.json +2 -2
- package/vona/packages-utils/module-info-pro/package.json +2 -2
- package/vona/packages-utils/password-hash-salt/package.json +2 -2
- package/vona/packages-utils/process-helper/package.json +2 -2
- package/vona/packages-utils/socket/package.json +2 -2
- package/vona/packages-utils/table-identity/package.json +2 -2
- package/vona/packages-utils/utils/package.json +2 -2
- package/vona/packages-utils/zod-errors-custom/package.json +2 -2
- package/vona/packages-utils/zod-openapi/package.json +2 -2
- package/vona/packages-utils/zod-query/package.json +2 -2
- package/vona/packages-vona/vona/package.json +2 -2
- package/vona/packages-vona/vona-core/package.json +2 -2
- package/vona/packages-vona/vona-mock/package.json +2 -2
- package/vona/packages-vona/vona-shared/package.json +2 -2
- package/vona/pnpm-lock.yaml +1520 -1826
- package/vona/pnpm-workspace.yaml +28 -7
- package/vona/src/suite/a-demo/modules/demo-basic/package.json +1 -1
- package/vona/src/suite/a-home/modules/home-base/package.json +1 -1
- package/vona/src/suite/a-home/modules/home-index/package.json +1 -1
- package/vona/src/suite/a-home/modules/home-user/package.json +1 -1
- package/vona/src/suite/cabloy-basic/modules/basic-siteadmin/package.json +1 -1
- package/vona/src/suite/cabloy-basic/modules/basic-siteweb/package.json +1 -1
- package/vona/src/suite-vendor/a-auth/modules/a-auth/package.json +2 -2
- package/vona/src/suite-vendor/a-auth/modules/auth-oauth/package.json +2 -2
- package/vona/src/suite-vendor/a-auth/modules/auth-simple/package.json +2 -2
- package/vona/src/suite-vendor/a-auth/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-cabloy/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasharding/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-datasource/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-socket/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssr/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-ssrhmr/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/modules/a-status/package.json +2 -2
- package/vona/src/suite-vendor/a-cabloy/package.json +1 -1
- package/vona/src/suite-vendor/a-captcha/modules/a-captcha/package.json +2 -2
- package/vona/src/suite-vendor/a-captcha/modules/captcha-simple/package.json +2 -2
- package/vona/src/suite-vendor/a-captcha/package.json +1 -1
- package/vona/src/suite-vendor/a-paypal/modules/a-paypal/package.json +2 -2
- package/vona/src/suite-vendor/a-paypal/package.json +1 -1
- package/vona/src/suite-vendor/a-vona/modules/a-aspect/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-aspectutils/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-bean/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-beanmutate/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-body/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-broadcast/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-cache/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-caching/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-core/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-election/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-error/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-event/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-executor/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-hmr/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-hmrbase/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-index/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-instance/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-jwt/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-locale/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-logger/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-mail/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-mailconfirm/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-menu/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-meta/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-onion/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapi/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapischema/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-openapiutils/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/common/buildWhere.ts +8 -9
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/lib/bean.model/bean.model_cache.ts +15 -9
- package/vona/src/suite-vendor/a-vona/modules/a-orm/src/types/modelWhere.ts +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormdialect/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-ormutils/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-permission/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-play/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-printtip/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-queue/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-redis/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-redlock/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-runtime/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-schedule/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-security/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-serialization/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-startup/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-static/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-summer/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-swagger/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-upload/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-user/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-validation/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-version/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-vona/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-web/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-worker/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/modules/a-zod/package.json +2 -2
- package/vona/src/suite-vendor/a-vona/package.json +1 -1
- package/zova/package.original.json +2 -15
- package/zova/packages-cli/cli/README.md +58 -0
- package/zova/packages-cli/cli/package.json +4 -4
- package/zova/packages-cli/cli/src/bin/zova.ts +0 -25
- package/zova/packages-cli/cli-set-front/README.md +50 -0
- package/zova/packages-cli/cli-set-front/cli/templates/create/module/boilerplate/_package.json +1 -1
- package/zova/packages-cli/cli-set-front/package.json +7 -7
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.bin.buildRest.ts +49 -15
- package/zova/packages-cli/cli-set-front/src/lib/bean/cli.tools.metadata.ts +1 -1
- package/zova/packages-cli/cli-set-front/src/lib/bean/toolsMetadata/generateConfig.ts +2 -12
- package/zova/packages-cli/cli-set-front/src/lib/beans.ts +0 -4
- package/zova/packages-cli/cli-set-front/src/lib/command/bin.buildModule.ts +1 -1
- package/zova/packages-cli/cli-set-front/src/lib/command/bin.buildRest.ts +1 -1
- package/zova/packages-utils/logger/package.json +3 -3
- package/zova/packages-utils/zova-jsx/package.json +6 -6
- package/zova/packages-utils/zova-openapi/package.json +2 -2
- package/zova/packages-utils/zova-vite/package.json +6 -6
- package/zova/packages-zova/zova/package.json +4 -4
- package/zova/packages-zova/zova-core/package.json +13 -13
- package/zova/packages-zova/zova-core/src/core/sys/config.ts +1 -1
- package/zova/pnpm-lock.yaml +427 -375
- package/zova/pnpm-workspace.yaml +21 -0
- package/zova/src/front/config/config/config.ts +1 -1
- package/zova/src/suite/a-demo/modules/demo-basic/package.json +1 -1
- package/zova/src/suite/a-demo/modules/demo-basic/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-demo/modules/demo-todo/package.json +1 -1
- package/zova/src/suite/a-devui/modules/devui-adapter/package.json +1 -1
- package/zova/src/suite/a-devui/modules/devui-adapter/src/bean/meta.themeHandler.ts +1 -0
- package/zova/src/suite/a-home/modules/home-api/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-base/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-base/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-base/src/service/routerGuards.ts +1 -1
- package/zova/src/suite/a-home/modules/home-base/src/service/ssrLayout.ts +1 -0
- package/zova/src/suite/a-home/modules/home-icon/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-indexadmin/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-indexweb/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-layoutadmin/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-layoutadmin/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-layoutempty/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-layoutweb/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-layoutweb/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-layoutweb/src/component/layoutWeb/controller.tsx +2 -2
- package/zova/src/suite/a-home/modules/home-login/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-login/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/a-home/modules/home-passport/package.json +1 -1
- package/zova/src/suite/a-home/modules/home-passport/src/model/passport.ts +2 -2
- package/zova/src/suite/a-home/modules/home-theme/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-adapter/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-captcha/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-captcha/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-commands/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-commandssync/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-currency/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-date/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-form/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-form/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-input/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-page/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-page/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-pageentry/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-select/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-table/package.json +1 -1
- package/zova/src/suite/cabloy-basic/modules/basic-table/src/.metadata/locales.ts +0 -15
- package/zova/src/suite/cabloy-basic/modules/basic-text/package.json +1 -1
- package/zova/src/suite-vendor/a-cabloy/modules/rest-resource/package.json +2 -2
- package/zova/src/suite-vendor/a-cabloy/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-api/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-app/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-bean/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-behavior/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-behaviors/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-boundary/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-command/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-fetch/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-form/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-icon/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-interceptor/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-interceptor/src/bean/interceptor.jwt.ts +1 -1
- package/zova/src/suite-vendor/a-zova/modules/a-logger/package.json +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-meta/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-model/package.json +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-openapi/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-router/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-routerstack/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-routertabs/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-ssr/src/lib/ssrMetaStore.ts +1 -0
- package/zova/src/suite-vendor/a-zova/modules/a-ssrhmr/package.json +3 -3
- package/zova/src/suite-vendor/a-zova/modules/a-ssrserver/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-style/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-style/src/bean/bean.theme.ts +6 -3
- package/zova/src/suite-vendor/a-zova/modules/a-table/package.json +2 -2
- package/zova/src/suite-vendor/a-zova/modules/a-zod/package.json +5 -5
- package/zova/src/suite-vendor/a-zova/modules/a-zod/src/.metadata/locales.ts +0 -15
- package/zova/src/suite-vendor/a-zova/modules/a-zova/package.json +9 -9
- package/zova/src/suite-vendor/a-zova/package.json +26 -26
- package/zova/packages-cli/cli-set-front/src/lib/command/init.legacy.ts +0 -10
- package/zova/packages-cli/cli-set-front/src/lib/command/refactor.componentEmits.ts +0 -33
- package/zova/packages-cli/cli-set-front/src/lib/command/refactor.componentSlots.ts +0 -33
|
@@ -17,9 +17,9 @@ Use Cabloy Start as the edition-aware target when work depends on:
|
|
|
17
17
|
- direct use of the licensed private repository source
|
|
18
18
|
- Vuetify-specific frontend workflows
|
|
19
19
|
- Cabloy Start flavor names in frontend scripts
|
|
20
|
-
-
|
|
21
|
-
- licensed private-repo structure and
|
|
22
|
-
-
|
|
20
|
+
- edition-specific module composition in the licensed Start repository
|
|
21
|
+
- licensed private-repo structure and edition-specific project composition
|
|
22
|
+
- edition-specific SSR site baselines and project assets
|
|
23
23
|
|
|
24
24
|
## Get access and initialize
|
|
25
25
|
|
|
@@ -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
|
|
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.
|
|
10
10
|
|
|
11
11
|
## What stays the same in both editions
|
|
12
12
|
|
|
@@ -38,7 +38,7 @@ Cabloy Start is usually the better fit when you want:
|
|
|
38
38
|
- the private commercial edition
|
|
39
39
|
- purchase-based access to the licensed private repository source
|
|
40
40
|
- direct cloning of the Start repository after authorization
|
|
41
|
-
- Start-specific
|
|
41
|
+
- Start-specific flavors, SSR site baselines, and project assets
|
|
42
42
|
- a UI layer aligned with Vuetify
|
|
43
43
|
- a stronger starting point for more complex business systems
|
|
44
44
|
- edition-specific rules, skills, and docs optimized for the Start repo assumptions
|
|
@@ -58,12 +58,12 @@ Cabloy Start is usually the better fit when you want:
|
|
|
58
58
|
### Repo and asset model
|
|
59
59
|
|
|
60
60
|
- **Cabloy Basic**: public repository and public reference materials
|
|
61
|
-
- **Cabloy Start**: private repository with
|
|
61
|
+
- **Cabloy Start**: private repository with edition-specific SSR sites and project assets
|
|
62
62
|
|
|
63
63
|
### AI workflow assumptions
|
|
64
64
|
|
|
65
65
|
- **Cabloy Basic**: use Basic-specific examples, flavors, modules, and UI assumptions
|
|
66
|
-
- **Cabloy Start**: use Start-specific examples, flavors,
|
|
66
|
+
- **Cabloy Start**: use Start-specific examples, flavors, SSR site baselines, and UI assumptions
|
|
67
67
|
|
|
68
68
|
This is why edition detection matters so much for AI vibe coding.
|
|
69
69
|
|
|
@@ -72,7 +72,7 @@ This is why edition detection matters so much for AI vibe coding.
|
|
|
72
72
|
Use this rule when you need a fast decision:
|
|
73
73
|
|
|
74
74
|
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-
|
|
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**.
|
|
76
76
|
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
77
|
|
|
78
78
|
## Read together with
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Editions Overview
|
|
2
2
|
|
|
3
|
+
This page is the editions hub for deciding which Cabloy baseline you are working with and which assumptions should follow from that choice.
|
|
4
|
+
|
|
3
5
|
Cabloy currently supports two related but distinct editions:
|
|
4
6
|
|
|
5
7
|
- **Cabloy Basic**
|
|
@@ -9,6 +11,35 @@ They share one Cabloy fullstack architecture, but they are distributed, composed
|
|
|
9
11
|
|
|
10
12
|
If you need a recommendation path, start with [Choosing Between Cabloy Basic and Cabloy Start](/editions/choosing-between-basic-and-start).
|
|
11
13
|
|
|
14
|
+
## How to approach editions work
|
|
15
|
+
|
|
16
|
+
For contributor and automation workflows in this repository, prefer this order:
|
|
17
|
+
|
|
18
|
+
1. identify the active edition before making UI-sensitive, flavor-sensitive, module-sensitive, or asset-sensitive assumptions
|
|
19
|
+
2. explain the shared Cabloy architecture once before branching into edition-specific notes
|
|
20
|
+
3. split documentation or workflow guidance only where the editions intentionally diverge
|
|
21
|
+
4. use explicit edition markers and flavor names instead of treating the editions as interchangeable
|
|
22
|
+
|
|
23
|
+
## Editions reading paths
|
|
24
|
+
|
|
25
|
+
Use this page as the main editions hub, then choose the path that matches your task.
|
|
26
|
+
|
|
27
|
+
### Selection path
|
|
28
|
+
|
|
29
|
+
Start here when the task is about choosing the right edition baseline or understanding distribution differences:
|
|
30
|
+
|
|
31
|
+
- [Choosing Basic vs Start](/editions/choosing-between-basic-and-start)
|
|
32
|
+
- [Cabloy Basic](/editions/cabloy-basic)
|
|
33
|
+
- [Cabloy Start](/editions/cabloy-start)
|
|
34
|
+
|
|
35
|
+
### Detection and workflow path
|
|
36
|
+
|
|
37
|
+
Use this path when the task is about repo-aware automation, flavor assumptions, or edition-safe workflow choices:
|
|
38
|
+
|
|
39
|
+
- [Edition Detection](/editions/detection)
|
|
40
|
+
- [Fullstack Introduction](/fullstack/introduction)
|
|
41
|
+
- [AI Development Introduction](/ai/introduction)
|
|
42
|
+
|
|
12
43
|
## Shared fullstack core
|
|
13
44
|
|
|
14
45
|
Both editions are built around the same core direction:
|
|
@@ -38,7 +69,7 @@ Cabloy Start is the private commercial edition.
|
|
|
38
69
|
- the private repository is marked with `__CABLOY_START__`
|
|
39
70
|
- users first purchase a license and obtain repository access, then clone the private repository source directly
|
|
40
71
|
- after cloning, the project is initialized through the Start edition workflow
|
|
41
|
-
- Start
|
|
72
|
+
- Start uses its own edition-specific flavors, SSR site baselines, and project assets for that edition
|
|
42
73
|
|
|
43
74
|
Cabloy Start is optimized as a commercial baseline for more complex business systems while staying on the same Cabloy fullstack direction.
|
|
44
75
|
|
|
@@ -74,13 +105,13 @@ The editions intentionally diverge in several surfaces:
|
|
|
74
105
|
- frontend flavor names
|
|
75
106
|
- suite and module composition
|
|
76
107
|
- admin/web SSR site baselines
|
|
77
|
-
- licensed private-repo structure and
|
|
108
|
+
- licensed private-repo structure and edition-specific project assets
|
|
78
109
|
- rules, skills, and docs used for AI vibe coding
|
|
79
110
|
|
|
80
111
|
For example:
|
|
81
112
|
|
|
82
113
|
- **Cabloy Basic** provides the `cabloy-basic` suites and the `cabloyBasicAdmin` / `cabloyBasicWeb` Zova flavors
|
|
83
|
-
- **Cabloy Start**
|
|
114
|
+
- **Cabloy Start** uses public flavors such as `cabloyStartAdmin` and `cabloyStartWeb`
|
|
84
115
|
|
|
85
116
|
## Why the repo markers matter
|
|
86
117
|
|
|
@@ -109,7 +109,7 @@ A practical rule is:
|
|
|
109
109
|
This is especially important in Cabloy because the two editions diverge in frontend stack choices:
|
|
110
110
|
|
|
111
111
|
- **Cabloy Basic** aligns with DaisyUI + TailwindCSS oriented examples
|
|
112
|
-
- **Cabloy Start** aligns with Vuetify-oriented
|
|
112
|
+
- **Cabloy Start** aligns with Vuetify-oriented frontend workflows
|
|
113
113
|
|
|
114
114
|
A UI-library-independent styling layer makes it easier for the same architectural ideas to survive across both editions.
|
|
115
115
|
|
|
@@ -99,6 +99,34 @@ A representative SSR admin development stack looks like:
|
|
|
99
99
|
|
|
100
100
|
The config side follows the same merge pattern with `config.ts`, `config.[meta].ts`, and `.local` variants.
|
|
101
101
|
|
|
102
|
+
## Flavor-aware capability differences
|
|
103
|
+
|
|
104
|
+
Different SSR flavors can intentionally expose different runtime capabilities rather than behaving identically.
|
|
105
|
+
|
|
106
|
+
A concrete example in the current Cabloy Basic frontend setup is SSR theme resolution:
|
|
107
|
+
|
|
108
|
+
- Web SSR uses a cookie-disabled path
|
|
109
|
+
- Admin SSR uses a cookie-capable path
|
|
110
|
+
|
|
111
|
+
That means the two flavors should not be treated as providing the same guarantee for theme-sensitive SSR output.
|
|
112
|
+
|
|
113
|
+
In practice:
|
|
114
|
+
|
|
115
|
+
- Web SSR is the stricter path and should treat theme-sensitive SSR reads as lower-authority
|
|
116
|
+
- Admin SSR can provide a stronger server/client theme match guarantee
|
|
117
|
+
|
|
118
|
+
This is exactly why flavor selection is not only a packaging choice. It can also define the supported capability boundary for runtime-sensitive behavior.
|
|
119
|
+
|
|
120
|
+
A second practical rule is that flavor alone is not the full story. Contributors should combine:
|
|
121
|
+
|
|
122
|
+
- flavor and `SSR_COOKIE` capability
|
|
123
|
+
- edition marker
|
|
124
|
+
- active UI-library adapter
|
|
125
|
+
|
|
126
|
+
before assuming how SSR theme state is handed off and finalized.
|
|
127
|
+
|
|
128
|
+
For the theme-side contract and edition-aware checklist, see [Theme Guide](/frontend/theme-guide). For the env-side explanation of `SSR_COOKIE`, see [SSR Environment Variables](/frontend/ssr-env).
|
|
129
|
+
|
|
102
130
|
## Scripts and runtime variants
|
|
103
131
|
|
|
104
132
|
Frontend scripts map directly onto the same runtime dimensions.
|
|
@@ -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
|
|
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
|
|
32
32
|
|
|
33
33
|
So docs and skills must separate shared Zova principles from edition-specific UI assumptions.
|
|
34
34
|
|
|
@@ -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
|
|
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.
|
|
26
|
+
!this.sys.config.ssr.cookieDisabledOnServer &&
|
|
27
27
|
to.meta.requiresAuth !== false &&
|
|
28
28
|
!this.$passport.isAuthenticated
|
|
29
29
|
) {
|
|
@@ -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`,
|
|
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
|
-
##
|
|
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.
|
|
150
|
-
2. is the change about
|
|
151
|
-
3.
|
|
152
|
-
4.
|
|
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
|
|
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
|
|
91
|
-
|
|
|
92
|
-
| Root scripts
|
|
93
|
-
| CLI
|
|
94
|
-
| VS Code extensions | In-editor discovery of the same framework workflow families
|
|
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
|
-
##
|
|
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
|
|
|
@@ -6,14 +6,14 @@ This guide explains the fastest way to start a Cabloy fullstack project.
|
|
|
6
6
|
|
|
7
7
|
Before creating a new Cabloy project, make sure your environment has:
|
|
8
8
|
|
|
9
|
-
| Name | Version
|
|
10
|
-
| ------------ |
|
|
11
|
-
| `pnpm` | `>=
|
|
12
|
-
| `Node.js` | `>=24.4.0`
|
|
13
|
-
| `Redis` | `>=7.2.6`
|
|
14
|
-
| `SQLite3` | `Built-in`
|
|
15
|
-
| `MySQL` | `>=8`
|
|
16
|
-
| `PostgreSQL` | `>=16`
|
|
9
|
+
| Name | Version |
|
|
10
|
+
| ------------ | ---------- |
|
|
11
|
+
| `pnpm` | `>=11.5.2` |
|
|
12
|
+
| `Node.js` | `>=24.4.0` |
|
|
13
|
+
| `Redis` | `>=7.2.6` |
|
|
14
|
+
| `SQLite3` | `Built-in` |
|
|
15
|
+
| `MySQL` | `>=8` |
|
|
16
|
+
| `PostgreSQL` | `>=16` |
|
|
17
17
|
|
|
18
18
|
- `Redis`: powers queue, schedule, startup, broadcast, caching, two-layer cache, and redlock
|
|
19
19
|
- `SQLite3`: if you use `better-sqlite3`, set up `node-gyp` before installing dependencies
|
|
@@ -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
|
|
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`
|
package/cabloy-docs/index.md
CHANGED
|
@@ -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. [
|
|
63
|
+
5. [Reference Introduction](/reference/introduction)
|
|
64
64
|
6. [Editions Overview](/editions/overview)
|
|
65
65
|
|
|
66
66
|
## Documentation scope labels
|