cabloy 5.1.145 → 5.1.147
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/.cabloy-version +1 -1
- package/.claude/skills/cabloy-backend-scaffold/SKILL.md +16 -16
- package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +3 -3
- package/.claude/skills/cabloy-contract-loop/SKILL.md +5 -5
- package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +1 -1
- package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +1 -1
- package/.claude/skills/cabloy-domain-planning/SKILL.md +3 -3
- package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +26 -26
- package/.claude/skills/cabloy-master-detail/SKILL.md +2 -2
- package/.claude/skills/cabloy-module-removal/SKILL.md +2 -2
- package/.claude/skills/cabloy-resource-field-update/SKILL.md +1 -1
- package/.claude/skills/cabloy-workflow/SKILL.md +10 -10
- package/.claude/skills/cabloy-workflow/evals/evals.json +2 -2
- package/.claude/skills/cabloy-worktree-environment/SKILL.md +3 -3
- package/.claude/skills/cabloy-zova-source-reading/SKILL.md +23 -23
- package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +1 -1
- package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +3 -3
- package/.github/workflows/docs-pages.yml +5 -5
- package/CHANGELOG.md +13 -0
- package/CLAUDE.md +12 -8
- package/README.md +2 -1
- package/package.json +7 -7
- package/{cabloy-docs → repo-docs}/.vitepress/config.mjs +1 -1
- package/{cabloy-docs → repo-docs}/ai/docs-skills-rules-mapping.md +4 -4
- package/{cabloy-docs → repo-docs}/ai/future-skill-roadmap.md +5 -5
- package/{cabloy-docs → repo-docs}/ai/introduction.md +3 -3
- package/{cabloy-docs → repo-docs}/ai/playbook-module-removal.md +2 -2
- package/{cabloy-docs → repo-docs}/ai/repo-guidance.md +3 -3
- package/{cabloy-docs → repo-docs}/ai/rules-and-config.md +1 -1
- package/{cabloy-docs → repo-docs}/ai/virtual-decorator-guidance.md +1 -1
- package/{cabloy-docs → repo-docs}/backend/introduction.md +1 -1
- package/{cabloy-docs → repo-docs}/backend/metrics-guide.md +2 -2
- package/{cabloy-docs → repo-docs}/frontend/router-tabs-introduction.md +2 -2
- package/{cabloy-docs → repo-docs}/frontend/scripts.md +3 -3
- package/{cabloy-docs → repo-docs}/fullstack/quickstart.md +10 -10
- package/{cabloy-docs → repo-docs}/package.json +2 -2
- package/{cabloy-docs → repo-docs}/reference/package-map.md +2 -2
- package/{cabloy-docs → repo-docs}/reference/repo-scripts.md +15 -15
- package/{e2e → repo-e2e}/config/playwright.config.ts +2 -2
- package/{e2e → repo-e2e}/scripts/e2e.ts +2 -2
- package/{observability → repo-observability}/README.md +1 -1
- package/scripts/init.ts +7 -7
- package/scripts/upgrade.ts +12 -34
- package/vona/packages-cli/cli/README.md +1 -1
- package/vona/packages-cli/cli/package.json +1 -1
- package/vona/packages-cli/cli-set-api/README.md +1 -1
- package/vona/packages-cli/cli-set-api/package.json +1 -1
- package/vona/pnpm-lock.yaml +89 -33
- package/vona/pnpm-workspace.yaml +1 -1
- package/zova/packages-cli/cli/README.md +1 -1
- package/zova/packages-cli/cli/package.json +2 -2
- package/zova/packages-cli/cli-set-front/README.md +1 -1
- package/zova/packages-cli/cli-set-front/package.json +1 -1
- package/zova/pnpm-lock.yaml +52 -52
- /package/{cabloy-docs → repo-docs}/.vitepress/public/CNAME +0 -0
- /package/{cabloy-docs → repo-docs}/.vitepress/theme/custom.css +0 -0
- /package/{cabloy-docs → repo-docs}/.vitepress/theme/edition-badges.md +0 -0
- /package/{cabloy-docs → repo-docs}/.vitepress/theme/index.js +0 -0
- /package/{cabloy-docs → repo-docs}/ai/class-placement-rule.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/cli-for-agents.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/cli-to-skill-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/edition-consistency-checklist.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/edition-detection.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/global-bean-lookup.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/playbook-backend-module.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/playbook-contract-regeneration.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/playbook-frontend-page.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/playbook-metadata-refresh.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/playbook-technical-blog-authoring.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/skills.md +0 -0
- /package/{cabloy-docs → repo-docs}/ai/verification.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/aop-overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/auth-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-output-inspection.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-specimen.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-essentials.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-resource-module-contract-chain.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-debug-checklist.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-roadmap.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-verify-playbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/bean-scene-authoring.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/broadcast-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/cache-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/captcha-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/cli.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/config-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/controller-aop-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/controller-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/crud-workflow.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/dto-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/dto-infer-generation.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/dynamic-datasource-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/election-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/entity-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/error-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/event-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/external-aop-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/field-indexes.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/file-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/foundation.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/i18n-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/image-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/internal-aop-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/jwt-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/logger-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/mail-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/markdown-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/master-detail-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/master-detail-workflow.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/menu-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/migration-and-changes.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/model-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/module-dependencies.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/multi-database-datasource.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/multi-instance-and-instance-resolution.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/openapi-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/orm-aggregate-group-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/orm-configuration-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/orm-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/orm-mutation-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/orm-select-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/queue-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/quickstart.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/rate-limit-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/redis-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/redlock-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/relations-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/runtime-and-flavors.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/schedule-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/scripts.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/serialization-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/service-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/sharding-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/startup-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/status-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/telemetry-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/transaction-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/unit-testing.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/upload-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/user-access-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/validation-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/vona-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/websocket-call-flow.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/websocket-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/websocket-protocol-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/websocket-usage-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/backend/worker-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/ai-react-nextjs-enterprise-architecture-cabloy/cover-en-v1.png +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/ai-react-nextjs-enterprise-architecture-cabloy/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/cabloy-fullstack-resource-addressing/cover-en-v1.png +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/cabloy-fullstack-resource-addressing/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/nextjs-integrated-fullstack-cabloy-contract-loop/cover-en-v1.png +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/nextjs-integrated-fullstack-cabloy-contract-loop/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/vue-object-oriented-zova-beginner-mental-model/cover-en-v1.png +0 -0
- /package/{cabloy-docs → repo-docs}/blogs/vue-object-oriented-zova-beginner-mental-model/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/editions/cabloy-basic.md +0 -0
- /package/{cabloy-docs → repo-docs}/editions/cabloy-start.md +0 -0
- /package/{cabloy-docs → repo-docs}/editions/choosing-between-basic-and-start.md +0 -0
- /package/{cabloy-docs → repo-docs}/editions/detection.md +0 -0
- /package/{cabloy-docs → repo-docs}/editions/overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/a-model-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/a-openapi-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/a-router-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/api-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/api-schema-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/app-startup-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/bean-scene-authoring.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/behavior-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/cli.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/command-scene-authoring.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/component-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/component-props-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/component-v-model-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/css-in-js-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/design-principles.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/environment-config-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/fetch-interceptor-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/file-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/filter-query-select-data-flow-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/form-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/form-layout-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/form-scene-to-page-meta-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/foundation.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/frontend-source-reading-roadmap.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-debug-checklist.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-entry-branch.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-list-branch.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-specimen.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-verify-playbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/generic-component-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/icon-engine-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/image-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/introduction.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ioc-and-beans.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/markdown-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/mock-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-architecture.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-resource-best-practices.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-resource-cookbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-resource-internals-deep-dive.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-resource-owner-pattern.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-resource-usage-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/model-state-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/module-scope.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/modules-and-suites.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/navigation-guards-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/openapi-sdk-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/page-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/page-meta-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/page-params-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/page-query-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/page-route-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/permission-formscene-action-visibility-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/quickstart.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/reading-zova-for-vue-developers.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/resource-entry-page-deep-dive.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/resource-list-page-deep-dive.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/rest-resource-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/rest-resource-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/root-behaviors-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/route-alias-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-stack-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-admin-web-comparison.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-layout-integration.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-mechanism.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-route-meta-cookbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-tabs-vs-stack.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/router-view-hosts-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/schema-driven-field-effects-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/sdk-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/server-data.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-architecture-overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-build-deploy-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-client-only.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-env.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-init-data.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-review-checklist.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-seo-meta.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/ssr-troubleshooting-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/state-architecture-for-vue-developers.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/system-startup-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/table-action-visibility-permission-flow-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/table-cell-cookbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/table-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/table-resource-crud-cookbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/theme-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/use-state-data-best-practices.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zod-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-app-guide.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-form-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-form-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-reactivity-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-router-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-table-controller-render-supplement.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-table-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-table-under-the-hood.md +0 -0
- /package/{cabloy-docs → repo-docs}/frontend/zova-vs-vue3-comparison.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/a-pay-payment-suite.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/admin-resource-and-web-self-service.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/cli.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/comparison-with-other-frameworks.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/contract-loop-playbook.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/deploy-cloudflare-docker.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/edition-collaboration-differences.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/file-workflow.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/framework-performance.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/frontend-metadata-to-backend.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/image-workflow.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/introduction.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/openapi-to-sdk.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/parallel-worktree-environment.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/payment-sandbox-configuration.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/suites-and-modules.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-1-first-module.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-2-first-crud.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-3-frontend-metadata-sharing.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-4-custom-level-renderers.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-5-backend-contract-sharing.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorial-6-one-contract-four-uses.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/tutorials-overview.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/vona-zova-integration.md +0 -0
- /package/{cabloy-docs → repo-docs}/fullstack/vscode-extensions.md +0 -0
- /package/{cabloy-docs → repo-docs}/index.md +0 -0
- /package/{cabloy-docs → repo-docs}/pnpm-lock.yaml +0 -0
- /package/{cabloy-docs → repo-docs}/pnpm-workspace.yaml +0 -0
- /package/{cabloy-docs → repo-docs}/reference/backend-directory-structure.md +0 -0
- /package/{cabloy-docs → repo-docs}/reference/bean-scene-boilerplates.md +0 -0
- /package/{cabloy-docs → repo-docs}/reference/cli-reference.md +0 -0
- /package/{cabloy-docs → repo-docs}/reference/frontend-directory-structure.md +0 -0
- /package/{cabloy-docs → repo-docs}/reference/glossary.md +0 -0
- /package/{cabloy-docs → repo-docs}/reference/introduction.md +0 -0
- /package/{e2e → repo-e2e}/scripts/runE2e.ts +0 -0
- /package/{e2e → repo-e2e}/scripts/runE2eArgs.test.ts +0 -0
- /package/{e2e → repo-e2e}/scripts/runE2eArgs.ts +0 -0
- /package/{e2e → repo-e2e}/scripts/startE2eVona.ts +0 -0
- /package/{e2e → repo-e2e}/specs/a-commerce.spec.ts +0 -0
- /package/{e2e → repo-e2e}/specs/cabloy-basic.spec.ts +0 -0
- /package/{e2e → repo-e2e}/specs/home-user-account.spec.ts +0 -0
- /package/{e2e → repo-e2e}/specs/markdown.spec.ts +0 -0
- /package/{observability → repo-observability}/collector/otel-collector.yaml +0 -0
- /package/{observability → repo-observability}/docker-compose.metrics.yml +0 -0
- /package/{observability → repo-observability}/grafana/provisioning/datasources/prometheus.yaml +0 -0
- /package/{observability → repo-observability}/prometheus/prometheus.yaml +0 -0
- /package/vona/patches/{zova-core@5.1.87.patch → zova-core@5.1.88.patch} +0 -0
package/CLAUDE.md
CHANGED
|
@@ -17,8 +17,11 @@ Always detect the active edition before making UI-sensitive assumptions, choosin
|
|
|
17
17
|
- `package.json` is the primary shared workflow entrypoint.
|
|
18
18
|
- `vona/` contains the backend framework, backend modules, and the Vona CLI.
|
|
19
19
|
- `zova/` contains the frontend framework, frontend modules, and the Zova CLI.
|
|
20
|
-
- `
|
|
21
|
-
-
|
|
20
|
+
- `repo-docs/` contains the unified public documentation.
|
|
21
|
+
- `repo-docs-internal/` contains internal engineering notes and ADRs.
|
|
22
|
+
- `repo-specs/` contains product and business specifications, delivery plans, and suite-local ADRs.
|
|
23
|
+
- `repo-e2e/` contains the end-to-end test project.
|
|
24
|
+
- `repo-observability/` contains local observability infrastructure.
|
|
22
25
|
- `.claude/` contains Claude commands, skills, and settings.
|
|
23
26
|
|
|
24
27
|
## Preferred workflow
|
|
@@ -35,8 +38,9 @@ Before inventing a custom implementation path:
|
|
|
35
38
|
|
|
36
39
|
## Documentation boundary
|
|
37
40
|
|
|
38
|
-
- Put user-facing and agent-facing guidance in `
|
|
39
|
-
- Put maintainer rationale, architecture notes, and ADRs in
|
|
41
|
+
- Put user-facing and agent-facing guidance in `repo-docs/`.
|
|
42
|
+
- Put maintainer rationale, architecture notes, and engineering ADRs in `repo-docs-internal/`.
|
|
43
|
+
- Put product and business specifications, delivery plans, acceptance records, and suite-local ADRs in `repo-specs/`.
|
|
40
44
|
- Do not mix internal rationale into public how-to pages unless a trimmed user-facing explanation is genuinely needed.
|
|
41
45
|
|
|
42
46
|
## AI development rules
|
|
@@ -56,19 +60,19 @@ Before inventing a custom implementation path:
|
|
|
56
60
|
- Treat legacy docs as input material, not as unquestioned truth. When docs conflict with source code, prefer current source code.
|
|
57
61
|
- For frontend work, assume Cabloy Basic and Cabloy Start share a frontend engineering layer but may diverge in UI layer, frontend flavors, suite/module availability, SSR site baselines, project assets, and generated outputs.
|
|
58
62
|
- For Zova frontend analysis, do not default to generic Vue reinterpretation first. Read the code through Zova’s controller / bean / IoC architecture before mapping it to Vue concepts.
|
|
59
|
-
- For Zova source-reading or Vue-vs-Zova explanation tasks, start from the frontend reading guides and source-reading map in `
|
|
63
|
+
- For Zova source-reading or Vue-vs-Zova explanation tasks, start from the frontend reading guides and source-reading map in `repo-docs/frontend/` before doing framework-neutral reinterpretation.
|
|
60
64
|
- In Zova application modules under `zova/src/module/**`, `zova/src/module-vendor/**`, `zova/src/suite/**/modules/**`, and `zova/src/suite-vendor/**/modules/**`, use emitted runtime suffixes for relative imports and exports: `.js` for `.ts` targets and `.jsx` for `.tsx` targets, including type-only imports and module tests. Preserve the deliberate `.ts`/`.tsx` convention in `zova/packages-utils/**` and `zova/packages-zova/**`; do not generalize this rule to Vona, CLI/templates, dependencies, generated output, or build artifacts.
|
|
61
65
|
- In Zova page routes, any route with dynamic `params` must define `route.name`; do not rely on unnamed path-keyed routes for typed `$params`. Static routes should omit `route.name` unless a documented named-route requirement exists; use `$router.getPagePath(...)` for canonical static URL generation rather than adding a name or alias for convenience. Ordinary business routes without `locale` params should omit app-config aliases unless a documented system, compatibility, or user-facing URL exception requires one. Choose `ssrProfile` from the page's rendering contract: Web remains `public` by default, while `session` is an explicit choice for cookie-backed state, protected admission, personalized first paint, or private SSR data; the absence of a locale parameter alone does not select a profile. `requiresAuth` is independent, so anonymous routes must explicitly use `requiresAuth: false`. Regenerate page metadata after route changes.
|
|
62
66
|
- For frontend async state that affects rendering or interaction across consumers, prefer model-owned `$useStateData(...)` over controller-managed fetch/cache state.
|
|
63
67
|
- Default to establishing such query state during render. Use `disableSuspenseOnInit: true` only for relatively stable query-backed state when you want to skip the init-time `query.suspense()` kick; it does not prevent query creation, fetches, or hydration-time rendering. If strict readiness is needed later, wait explicitly at the interaction boundary.
|
|
64
68
|
- In SSR, keep server HTML and the client's hydration-time initial render equivalent. When server rendering intentionally omits private, cookie-unavailable, or browser-only state, keep the same neutral shell or placeholder through hydration and defer its query/load/render branch to an explicit post-hydration, admission, mounted, or interaction boundary.
|
|
65
69
|
- Keep repo-wide AI rules in `CLAUDE.md` short and durable; put branching Zova analysis workflows in `.claude/skills/`.
|
|
66
|
-
- Do not modify shared environment identity or ports merely to bypass a busy resource. For intentional parallel worktree setup, follow `
|
|
70
|
+
- Do not modify shared environment identity or ports merely to bypass a busy resource. For intentional parallel worktree setup, follow `repo-docs/fullstack/parallel-worktree-environment.md`; otherwise wait for the shared resource or ask the user. Create or change worktree-local environment overrides only through the explicitly invoked `cabloy-worktree-environment` skill and its confirmation phase, and only in `vona/env/.env.local` and `zova/env/.env.local`; never modify flavor-, mode-, app-mode-, or runtime-specific `.env.*.local` files. The skill derives the standard `APP_NAME`, `SERVER_LISTEN_PORT`, `DEV_SERVER_PORT`, `DEV_SERVER_HMR_PORT`, and API-derived `API_BASE_URL` tuple only from Git worktree metadata and fixed port baselines; never read or expose `.env*` content while recommending values. Admin and Web are alternative commands using this shared tuple and must not run concurrently in one worktree; use another linked worktree for concurrent use. Detect the active edition before choosing scripts, and never run `npm run init` as an automatic follow-up.
|
|
67
71
|
- For SSR theme-sensitive frontend work, detect the active edition marker and UI library before making assumptions. Cabloy Basic currently means DaisyUI + Tailwind CSS assumptions; Cabloy Start currently means Vuetify assumptions.
|
|
68
72
|
- In Web SSR without cookie-backed theme resolution, do not treat server reads of `$theme.dark`, `$theme.darkMode`, or `$token` as final browser truth. Keep theme-sensitive SSR branching hydration-tolerant or defer final theme-sensitive decisions to the client.
|
|
69
73
|
- Do not assume Cabloy Basic and Cabloy Start use the same adapter-level SSR theme handoff. Verify the active theme handler and client hydration path before changing SSR theme behavior.
|
|
70
74
|
- Reuse existing repo terminology: Cabloy, Vona, Zova, suite, module, bean, SSR, SPA, Web, Admin.
|
|
71
|
-
- For backend base-class placement, use the A / B1 / B2 rule from `
|
|
75
|
+
- For backend base-class placement, use the A / B1 / B2 rule from `repo-docs/ai/class-placement-rule.md`.
|
|
72
76
|
- Pure helper bases belong in `src/lib`; subclass-only bases should be evaluated case by case and often belong in `src/lib`.
|
|
73
77
|
- Runtime-anchor bases that still require container-managed or selector/class-token behavior but should not be global beans should prefer `src/service` with `@Service()`.
|
|
74
78
|
- Service-scene runtime-anchor bases that should not register in `IBeanRecordGeneral` should prefer the `src/service/*_.ts` form.
|
|
@@ -77,7 +81,7 @@ Before inventing a custom implementation path:
|
|
|
77
81
|
- When adding a persisted field to an existing backend resource, ask the user whether `vonaModule.fileVersion` should be incremented before changing `meta.version.ts` or the module schema path. If yes, add a new migration version and bump `fileVersion`. If no, keep the current `fileVersion` and fold the schema change into the current version path. Do not assume the versioning strategy without confirmation.
|
|
78
82
|
- In shared-database multitenancy, do not use `table.unique(...)` for business uniqueness. Keep ordinary indexes for lookup performance and enforce tenant-scoped uniqueness in the business layer.
|
|
79
83
|
- In Vona, a tenant corresponds to an instance. Ordinary resource-model CRUD is automatically scoped to the active instance; treat records absent from that scope as absent, and do not use raw cross-instance probes merely to choose between `403` and not-found behavior. Model future multi-merchant boundaries explicitly inside an instance.
|
|
80
|
-
- Model cross-Model query-cache dependencies as one directed, acyclic `modelsClear` / `modelsClearedBy` graph, and verify source mutations refresh warmed dependent queries; read
|
|
84
|
+
- Model cross-Model query-cache dependencies as one directed, acyclic `modelsClear` / `modelsClearedBy` graph, and verify source mutations refresh warmed dependent queries; read `repo-docs-internal/architecture/vona-cross-model-query-cache-dependencies.md` before designing a nontrivial graph.
|
|
81
85
|
- For `@Api.field(...)` and related schemaLike composition, framework guards now preserve previously attached OpenAPI metadata across schema rebuilds, but structure-shaping schemaLike is still order-sensitive. Treat `v.object(...)`, `v.array(...)`, `v.optional()`, `v.nullable()`, `v.default(...)`, and preprocess/transform wrappers as structure-shaping; keep the final structure-defining schemaLike last and verify emitted schema/OpenAPI output after such edits.
|
|
82
86
|
- `@Core.transaction(...)` defaults to `REQUIRED`: it starts a transaction only when none exists and otherwise joins the current datasource transaction without upgrading its isolation. Prefer it over manual `inTransaction` wrappers for atomic service methods; use `REQUIRES_NEW` only when an independently committed boundary is explicitly required.
|
|
83
87
|
- For replay-safe transient failures, use `@Core.retryable(...)` with an explicit `errorCodes` allowlist. It retries the downstream AOP suffix, so place it closest to the method when it must wrap and retry a `@Core.transaction(...)` boundary; use `ownerOnly: true` for dual-role leaves that must not retry inside a caller-owned transaction; do not retry external side effects or infer retryability from isolation level.
|
package/README.md
CHANGED
|
@@ -178,7 +178,8 @@ Contribution guidelines:
|
|
|
178
178
|
|
|
179
179
|
- prefer CLI-backed workflows with `npm run vona` and `npm run zova`
|
|
180
180
|
- put user-facing and agent-facing guidance in [docs.cabloy.com](https://docs.cabloy.com)
|
|
181
|
-
- put maintainer rationale, architecture notes, and ADRs in [
|
|
181
|
+
- put maintainer rationale, architecture notes, and engineering ADRs in [repo-docs-internal/](https://github.com/cabloy/cabloy/tree/main/repo-docs-internal)
|
|
182
|
+
- put product and business specifications, delivery plans, and suite-local ADRs in [repo-specs/](https://github.com/cabloy/cabloy/tree/main/repo-specs)
|
|
182
183
|
- verify framework changes with the narrowest meaningful checks first, then shared root scripts when broader confidence is needed
|
|
183
184
|
|
|
184
185
|
To report bugs or propose changes, use [GitHub Issues](https://github.com/cabloy/cabloy/issues) or open a pull request in [github.com/cabloy/cabloy](https://github.com/cabloy/cabloy).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cabloy",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.147",
|
|
4
4
|
"gitHead": "2c5c19284bab738e492856189acb6fad74b8a7b7",
|
|
5
5
|
"description": "A Node.js fullstack framework",
|
|
6
6
|
"keywords": [
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"start": "cd vona && npm run start",
|
|
47
47
|
"start:one": "cd vona && npm run start:one",
|
|
48
48
|
"test": "cd vona && npm run test",
|
|
49
|
-
"test:e2e": "node e2e/scripts/runE2e.ts --clean",
|
|
50
|
-
"test:e2e:fast": "node e2e/scripts/runE2e.ts --fast",
|
|
49
|
+
"test:e2e": "node repo-e2e/scripts/runE2e.ts --clean",
|
|
50
|
+
"test:e2e:fast": "node repo-e2e/scripts/runE2e.ts --fast",
|
|
51
51
|
"db:reset": "cd vona && npm run db:reset",
|
|
52
52
|
"tsc": "npm run tsc:zova && pnpm --dir vona run tsc",
|
|
53
53
|
"tsc:zova": "pnpm --dir zova run tsc",
|
|
@@ -57,10 +57,10 @@
|
|
|
57
57
|
"format:fix": "oxfmt --write",
|
|
58
58
|
"lint": "oxlint --disable-nested-config",
|
|
59
59
|
"lint:fix": "oxlint --disable-nested-config --fix",
|
|
60
|
-
"docs:dev": "pnpm --dir
|
|
61
|
-
"docs:build": "pnpm --dir
|
|
62
|
-
"docs:preview": "pnpm --dir
|
|
63
|
-
"docs:fix": "textlint --fix ./
|
|
60
|
+
"docs:dev": "pnpm --dir repo-docs docs:dev",
|
|
61
|
+
"docs:build": "pnpm --dir repo-docs docs:build",
|
|
62
|
+
"docs:preview": "pnpm --dir repo-docs docs:preview",
|
|
63
|
+
"docs:fix": "textlint --fix ./repo-docs/**/*.md",
|
|
64
64
|
"release-patch": "node scripts/release.ts patch",
|
|
65
65
|
"release-minor": "node scripts/release.ts minor",
|
|
66
66
|
"release-major": "node scripts/release.ts major",
|
|
@@ -626,7 +626,7 @@ export default defineConfig({
|
|
|
626
626
|
provider: 'local',
|
|
627
627
|
},
|
|
628
628
|
editLink: {
|
|
629
|
-
pattern: 'https://github.com/cabloy/cabloy/edit/main/
|
|
629
|
+
pattern: 'https://github.com/cabloy/cabloy/edit/main/repo-docs/:path',
|
|
630
630
|
},
|
|
631
631
|
footer: {
|
|
632
632
|
message: 'Released under the MIT License.',
|
|
@@ -22,7 +22,7 @@ The goal is to give each layer a distinct job.
|
|
|
22
22
|
|
|
23
23
|
Location:
|
|
24
24
|
|
|
25
|
-
- `
|
|
25
|
+
- `repo-docs/`
|
|
26
26
|
|
|
27
27
|
Use public docs for:
|
|
28
28
|
|
|
@@ -42,7 +42,7 @@ Public docs answer questions like:
|
|
|
42
42
|
|
|
43
43
|
Location:
|
|
44
44
|
|
|
45
|
-
-
|
|
45
|
+
- `repo-docs-internal/`
|
|
46
46
|
|
|
47
47
|
Use internal docs for:
|
|
48
48
|
|
|
@@ -128,7 +128,7 @@ Use this quick rule:
|
|
|
128
128
|
### Example: “How should a backend base class be placed?”
|
|
129
129
|
|
|
130
130
|
- public operational explanation → [Class Placement Rule](/ai/class-placement-rule)
|
|
131
|
-
- maintainer rationale and invariants →
|
|
131
|
+
- maintainer rationale and invariants → `repo-docs-internal/architecture/class-placement-a-b1-b2.md`
|
|
132
132
|
- default repo-wide behavior → `CLAUDE.md`
|
|
133
133
|
- procedural decision workflow → `cabloy-workflow` skill
|
|
134
134
|
|
|
@@ -153,7 +153,7 @@ Use this quick rule:
|
|
|
153
153
|
### Example: “How should AI remove an existing module cleanly?”
|
|
154
154
|
|
|
155
155
|
- public operational explanation → [Playbook: Module Removal](/ai/playbook-module-removal)
|
|
156
|
-
- maintainer rationale and pitfalls →
|
|
156
|
+
- maintainer rationale and pitfalls → `repo-docs-internal/architecture/module-removal-workflow.md`
|
|
157
157
|
- avoid putting the full workflow in `CLAUDE.md` because the task needs branching, cleanup order, generated-runtime recovery, and verification
|
|
158
158
|
- procedural decision workflow → `cabloy-module-removal` skill
|
|
159
159
|
|
|
@@ -42,7 +42,7 @@ Primary dependencies:
|
|
|
42
42
|
|
|
43
43
|
- Vona `create:*`
|
|
44
44
|
- Vona `tools:*`
|
|
45
|
-
- backend docs in `
|
|
45
|
+
- backend docs in `repo-docs/backend/`
|
|
46
46
|
|
|
47
47
|
### 2. Frontend scaffold skill
|
|
48
48
|
|
|
@@ -56,7 +56,7 @@ Primary dependencies:
|
|
|
56
56
|
|
|
57
57
|
- Zova `create:*`
|
|
58
58
|
- Zova `refactor:*`
|
|
59
|
-
- frontend docs in `
|
|
59
|
+
- frontend docs in `repo-docs/frontend/`
|
|
60
60
|
|
|
61
61
|
### 3. Fullstack contract loop skill
|
|
62
62
|
|
|
@@ -85,7 +85,7 @@ Primary dependencies:
|
|
|
85
85
|
|
|
86
86
|
- Vona entity / migration / DTO workflow knowledge
|
|
87
87
|
- Zova metadata/build flows when renderer follow-up is involved
|
|
88
|
-
- the backend resource field workflow note in
|
|
88
|
+
- the backend resource field workflow note in `repo-docs-internal/`
|
|
89
89
|
|
|
90
90
|
### 5. Metadata refresh skill
|
|
91
91
|
|
|
@@ -146,9 +146,9 @@ The purpose of the roadmap is not to create many skills.
|
|
|
146
146
|
|
|
147
147
|
The purpose is to create a small number of high-leverage skills that directly reuse the knowledge system now being built in:
|
|
148
148
|
|
|
149
|
-
- `
|
|
149
|
+
- `repo-docs/`
|
|
150
150
|
- `CLAUDE.md`
|
|
151
|
-
-
|
|
151
|
+
- `repo-docs-internal/`
|
|
152
152
|
- `.claude/skills/`
|
|
153
153
|
- the Vona and Zova CLIs
|
|
154
154
|
|
|
@@ -29,20 +29,20 @@ For contributor and automation workflows in this repository, prefer this order:
|
|
|
29
29
|
|
|
30
30
|
1. inspect the active edition and repo markers before making UI-sensitive or workflow-sensitive assumptions
|
|
31
31
|
2. inspect root scripts, Vona CLI, and Zova CLI before inventing manual scaffolding or custom workflow steps
|
|
32
|
-
3. use public docs for durable user-facing guidance and
|
|
32
|
+
3. use public docs for durable user-facing guidance and `repo-docs-internal/` for maintainer rationale
|
|
33
33
|
4. encode repeatable behavior in Claude rules, commands, or skills instead of relying on unstated habits
|
|
34
34
|
|
|
35
35
|
## The knowledge layers
|
|
36
36
|
|
|
37
37
|
### Public docs
|
|
38
38
|
|
|
39
|
-
Use `
|
|
39
|
+
Use `repo-docs/` for user-facing and agent-facing guidance that should remain durable and source-aligned.
|
|
40
40
|
|
|
41
41
|
For normal project usage, prefer the user-facing entry docs such as [Fullstack Quickstart](/fullstack/quickstart). This AI section focuses on repository workflows and AI vibe coding.
|
|
42
42
|
|
|
43
43
|
### Internal engineering docs
|
|
44
44
|
|
|
45
|
-
Use
|
|
45
|
+
Use `repo-docs-internal/` for architecture notes, ADRs, and maintainership rationale that should not be mixed into public how-to documentation.
|
|
46
46
|
|
|
47
47
|
### Claude rules and commands
|
|
48
48
|
|
|
@@ -38,7 +38,7 @@ Typical locations include:
|
|
|
38
38
|
- generated registries and lockfiles
|
|
39
39
|
- tests that still target the module
|
|
40
40
|
|
|
41
|
-
If the user asked for a public scrub, also inspect `
|
|
41
|
+
If the user asked for a public scrub, also inspect `repo-docs/`. Otherwise, treat docs cleanup as a separate scope decision.
|
|
42
42
|
|
|
43
43
|
## Step 3: Remove source and direct references first
|
|
44
44
|
|
|
@@ -144,7 +144,7 @@ Make this an explicit scope decision:
|
|
|
144
144
|
- code/runtime removal only
|
|
145
145
|
- code/runtime removal plus docs/examples scrub
|
|
146
146
|
|
|
147
|
-
If docs cleanup is in scope, update `
|
|
147
|
+
If docs cleanup is in scope, update `repo-docs/` as a separate pass after runtime cleanup is stable.
|
|
148
148
|
|
|
149
149
|
## AI rule of thumb
|
|
150
150
|
|
|
@@ -8,7 +8,7 @@ Check the root repository signals first:
|
|
|
8
8
|
|
|
9
9
|
- `package.json`
|
|
10
10
|
- edition marker files such as `__CABLOY_BASIC__` or `__CABLOY_START__`
|
|
11
|
-
-
|
|
11
|
+
- `repo-docs-internal/README.md`
|
|
12
12
|
- root `.claude/` assets
|
|
13
13
|
|
|
14
14
|
These files tell the agent which repo it is in, which scripts are canonical, and where public versus internal documentation belongs.
|
|
@@ -29,8 +29,8 @@ This is more reliable than copying old file structures from examples without und
|
|
|
29
29
|
|
|
30
30
|
## 3. Use docs and internal notes for different purposes
|
|
31
31
|
|
|
32
|
-
- use `
|
|
33
|
-
- use
|
|
32
|
+
- use `repo-docs/` to explain how people and agents should work
|
|
33
|
+
- use `repo-docs-internal/` to explain why maintainers designed the repo a certain way
|
|
34
34
|
|
|
35
35
|
## 4. Treat edition detection as mandatory for UI-sensitive work
|
|
36
36
|
|
|
@@ -26,4 +26,4 @@ Use Claude settings for permissions and execution environment, not as the primar
|
|
|
26
26
|
|
|
27
27
|
## Documentation boundary
|
|
28
28
|
|
|
29
|
-
If a rule is important for people and agents to understand, it probably belongs in public docs too. If it explains internal rationale rather than user-facing workflow, it belongs in
|
|
29
|
+
If a rule is important for people and agents to understand, it probably belongs in public docs too. If it explains internal rationale rather than user-facing workflow, it belongs in `repo-docs-internal/`.
|
|
@@ -19,7 +19,7 @@ For contributor and automation workflows in this repository, prefer this order:
|
|
|
19
19
|
1. inspect the root `package.json` and `npm run vona` entrypoint
|
|
20
20
|
2. inspect Vona CLI command families such as `create:*`, `init:*`, `tools:*`, and `bin:*`
|
|
21
21
|
3. inspect the current module or suite layout before creating new files manually
|
|
22
|
-
4. use public docs for user-facing guidance and
|
|
22
|
+
4. use public docs for user-facing guidance and `repo-docs-internal/` for maintainer rationale
|
|
23
23
|
|
|
24
24
|
## Backend reading paths
|
|
25
25
|
|
|
@@ -66,10 +66,10 @@ The Basic Admin **Metrics** page is available only to `systemAdmin`. It shows a
|
|
|
66
66
|
|
|
67
67
|
## Local example
|
|
68
68
|
|
|
69
|
-
A loopback-only local stack is available under the repository's `observability/README.md`:
|
|
69
|
+
A loopback-only local stack is available under the repository's `repo-observability/README.md`:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
docker compose -f observability/docker-compose.metrics.yml up
|
|
72
|
+
docker compose -f repo-observability/docker-compose.metrics.yml up
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
Use it for local validation only. Production networking, TLS/mTLS, secret injection, retention, dashboards, and alert routing are operator-owned.
|
|
@@ -110,7 +110,7 @@ Recommended order:
|
|
|
110
110
|
|
|
111
111
|
1. [Router Tabs Mechanism](/frontend/router-tabs-mechanism)
|
|
112
112
|
2. [Router Tabs Admin and Web Comparison](/frontend/router-tabs-admin-web-comparison)
|
|
113
|
-
3.
|
|
113
|
+
3. `repo-docs-internal/architecture/router-tabs-design-boundaries.md`
|
|
114
114
|
|
|
115
115
|
## Scope boundary
|
|
116
116
|
|
|
@@ -118,7 +118,7 @@ The public router-tabs docs explain the shared frontend mechanism and how to use
|
|
|
118
118
|
|
|
119
119
|
For internal design boundaries, maintenance invariants, and refactor safety rules, see:
|
|
120
120
|
|
|
121
|
-
-
|
|
121
|
+
- `repo-docs-internal/architecture/router-tabs-design-boundaries.md`
|
|
122
122
|
|
|
123
123
|
## See also
|
|
124
124
|
|
|
@@ -61,7 +61,7 @@ npm run build:zova:admin
|
|
|
61
61
|
# Both default Basic sites, then a managed local run
|
|
62
62
|
npm run build:zova
|
|
63
63
|
npm run deps:vona
|
|
64
|
-
npm run test:e2e cabloy-basic account
|
|
64
|
+
npm run test:e2e cabloy-basic home-user-account
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
The managed clean command resets Vona-managed test data and the local Redis namespace, starts one development Vona worker, and runs the selected specs. Browser commands consume already-built artifacts; they do not rebuild them.
|
|
@@ -73,10 +73,10 @@ npm run test:e2e clean local run with database reset
|
|
|
73
73
|
npm run test:e2e:fast fast run without automatic reset
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
Place flat spec basenames directly after the npm script name. Use npm's `--` delimiter before Playwright options. With no names, every spec in `e2e/specs` runs. Native `--grep` and `--grep-invert` remain available, and repeatable `--tag` values require all listed tags:
|
|
76
|
+
Place flat spec basenames directly after the npm script name. Use npm's `--` delimiter before Playwright options. With no names, every spec in `repo-e2e/specs` runs. Native `--grep` and `--grep-invert` remain available, and repeatable `--tag` values require all listed tags:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
npm run test:e2e cabloy-basic account -- --grep @flow
|
|
79
|
+
npm run test:e2e cabloy-basic home-user-account -- --grep @flow
|
|
80
80
|
npm run test:e2e:fast a-commerce -- --tag @web --tag @smoke
|
|
81
81
|
```
|
|
82
82
|
|
|
@@ -112,26 +112,26 @@ npm run upgrade
|
|
|
112
112
|
In Cabloy Basic, upgrade synchronizes the framework-owned SSR browser E2E baseline, the two root E2E scripts, and the `@playwright/test` development dependency. The framework owns these paths:
|
|
113
113
|
|
|
114
114
|
```text
|
|
115
|
-
e2e/config/
|
|
116
|
-
e2e/scripts/
|
|
117
|
-
e2e/specs/cabloy-basic.spec.ts
|
|
118
|
-
e2e/specs/account.spec.ts
|
|
119
|
-
e2e/specs/a-commerce.spec.ts
|
|
115
|
+
repo-e2e/config/
|
|
116
|
+
repo-e2e/scripts/
|
|
117
|
+
repo-e2e/specs/cabloy-basic.spec.ts
|
|
118
|
+
repo-e2e/specs/home-user-account.spec.ts
|
|
119
|
+
repo-e2e/specs/a-commerce.spec.ts
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
Keep additional project-owned browser specs under other filenames in `e2e/specs`. The current baseline is a fresh-project contract; unsupported legacy layouts are not repaired by the upgrader.
|
|
122
|
+
Keep additional project-owned browser specs under other filenames in `repo-e2e/specs`. The current baseline is a fresh-project contract; unsupported legacy layouts are not repaired by the upgrader.
|
|
123
123
|
|
|
124
124
|
### Cabloy Start repository baseline
|
|
125
125
|
|
|
126
126
|
Cabloy Start is checked out from the licensed private repository rather than created through `npm create cabloy`. Its E2E baseline is maintained in that repository:
|
|
127
127
|
|
|
128
128
|
```text
|
|
129
|
-
e2e/config/
|
|
130
|
-
e2e/scripts/
|
|
131
|
-
e2e/specs/cabloy-start/
|
|
129
|
+
repo-e2e/config/
|
|
130
|
+
repo-e2e/scripts/
|
|
131
|
+
repo-e2e/specs/cabloy-start/
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
-
The public Cabloy upgrade flow does not synchronize or repair those Start E2E files, the `test:e2e:start*` scripts, or `@playwright/test`. Keep project-owned browser scenarios outside the baseline paths, for example under `e2e/specs/my-project/`.
|
|
134
|
+
The public Cabloy upgrade flow does not synchronize or repair those Start E2E files, the `test:e2e:start*` scripts, or `@playwright/test`. Keep project-owned browser scenarios outside the baseline paths, for example under `repo-e2e/specs/my-project/`.
|
|
135
135
|
|
|
136
136
|
Prepare and run the managed Start baseline locally with:
|
|
137
137
|
|
|
@@ -6,9 +6,9 @@ This monorepo is organized around a small set of stable top-level areas.
|
|
|
6
6
|
|
|
7
7
|
- `package.json` — shared scripts and release entrypoints
|
|
8
8
|
- `lerna.json` — package topology
|
|
9
|
-
-
|
|
9
|
+
- `repo-docs-internal/` — internal engineering docs
|
|
10
10
|
- `.claude/` — Claude commands, skills, and local settings
|
|
11
|
-
- `
|
|
11
|
+
- `repo-docs/` — unified public docs
|
|
12
12
|
|
|
13
13
|
## Backend side
|
|
14
14
|
|
|
@@ -80,26 +80,26 @@ Run `npm run upgrade:dry-run` before `npm run upgrade` to inspect framework file
|
|
|
80
80
|
Basic upgrade owns these browser baseline paths:
|
|
81
81
|
|
|
82
82
|
```text
|
|
83
|
-
e2e/config/
|
|
84
|
-
e2e/scripts/
|
|
85
|
-
e2e/specs/cabloy-basic.spec.ts
|
|
86
|
-
e2e/specs/account.spec.ts
|
|
87
|
-
e2e/specs/a-commerce.spec.ts
|
|
83
|
+
repo-e2e/config/
|
|
84
|
+
repo-e2e/scripts/
|
|
85
|
+
repo-e2e/specs/cabloy-basic.spec.ts
|
|
86
|
+
repo-e2e/specs/home-user-account.spec.ts
|
|
87
|
+
repo-e2e/specs/a-commerce.spec.ts
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
It also reconciles the two framework E2E scripts and the `@playwright/test` development dependency. Keep additional project browser specs under other filenames in `e2e/specs`; the upgrader updates only the listed framework files. The current fresh baseline is required and is not repaired for unsupported legacy project layouts.
|
|
90
|
+
It also reconciles the two framework E2E scripts and the `@playwright/test` development dependency. Keep additional project browser specs under other filenames in `repo-e2e/specs`; the upgrader updates only the listed framework files. The current fresh baseline is required and is not repaired for unsupported legacy project layouts.
|
|
91
91
|
|
|
92
92
|
### Cabloy Start private repository
|
|
93
93
|
|
|
94
94
|
The Start E2E baseline is maintained in the private repository:
|
|
95
95
|
|
|
96
96
|
```text
|
|
97
|
-
e2e/config/
|
|
98
|
-
e2e/scripts/
|
|
99
|
-
e2e/specs/cabloy-start/
|
|
97
|
+
repo-e2e/config/
|
|
98
|
+
repo-e2e/scripts/
|
|
99
|
+
repo-e2e/specs/cabloy-start/
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
The public-package upgrade flow does not source or reconcile the Start baseline, its `test:e2e:start*` scripts, or `@playwright/test`. Keep project browser tests outside the baseline paths, for example under `e2e/specs/my-project/`.
|
|
102
|
+
The public-package upgrade flow does not source or reconcile the Start baseline, its `test:e2e:start*` scripts, or `@playwright/test`. Keep project browser tests outside the baseline paths, for example under `repo-e2e/specs/my-project/`.
|
|
103
103
|
|
|
104
104
|
## SSR browser checks
|
|
105
105
|
|
|
@@ -108,12 +108,12 @@ The unified runner has two modes:
|
|
|
108
108
|
- `npm run test:e2e`: clean local run; checks the managed port, resets the database, starts one development Vona worker, and runs Playwright.
|
|
109
109
|
- `npm run test:e2e:fast`: skips the reset for quick reruns and may target either the local managed server or an externally managed `E2E_BASE_URL`.
|
|
110
110
|
|
|
111
|
-
Place spec basenames directly after the npm script name; use npm's `--` delimiter only before Playwright options. Multiple spec names are allowed. With no names, every spec in `e2e/specs` is discovered:
|
|
111
|
+
Place spec basenames directly after the npm script name; use npm's `--` delimiter only before Playwright options. Multiple spec names are allowed. With no names, every spec in `repo-e2e/specs` is discovered:
|
|
112
112
|
|
|
113
113
|
```bash
|
|
114
|
-
npm run test:e2e cabloy-basic account
|
|
114
|
+
npm run test:e2e cabloy-basic home-user-account
|
|
115
115
|
npm run test:e2e a-commerce
|
|
116
|
-
npm run test:e2e:fast account
|
|
116
|
+
npm run test:e2e:fast home-user-account
|
|
117
117
|
npm run test:e2e:fast a-commerce -- --grep ATP-SSR
|
|
118
118
|
npm run test:e2e:fast a-commerce -- --grep-invert @admin
|
|
119
119
|
```
|
|
@@ -122,7 +122,7 @@ Tags remain independent from filenames. Repeat `--tag` to require all tags, whil
|
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
124
|
npm run test:e2e:fast a-commerce -- --tag @web --tag @smoke
|
|
125
|
-
npm run test:e2e:fast account -- --grep @flow --tag @web
|
|
125
|
+
npm run test:e2e:fast home-user-account -- --grep @flow --tag @web
|
|
126
126
|
```
|
|
127
127
|
|
|
128
128
|
The existing tags include `@web`, `@admin`, `@smoke`, `@flow`, `@ssr`, `@theme`, and the business tags used by Commerce such as `@cart`, `@payment`, `@shipment`, and `@refund`. No suite tag is required. Clean runs are local-only and reject `E2E_BASE_URL`; fast runs against an external target do not reset, start, stop, or rebuild that target.
|
|
@@ -134,7 +134,7 @@ The Basic baseline exercises Web at `/` and Admin at `/admin` through Vona's SSR
|
|
|
134
134
|
```bash
|
|
135
135
|
npm run build:zova
|
|
136
136
|
npm run deps:vona
|
|
137
|
-
npm run test:e2e cabloy-basic account
|
|
137
|
+
npm run test:e2e cabloy-basic home-user-account
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
Commerce browser acceptance exercises Customer Web at `/commerce` and Operator Admin routing at `/commerce-admin`. Prepare its paired artifacts explicitly:
|
|
@@ -6,7 +6,7 @@ const externalBaseURL = process.env.E2E_BASE_URL;
|
|
|
6
6
|
const baseURL = externalBaseURL || E2E_LOCAL_BASE_URL;
|
|
7
7
|
|
|
8
8
|
export default defineConfig({
|
|
9
|
-
testDir: `${E2E_ROOT_DIR}/e2e/specs`,
|
|
9
|
+
testDir: `${E2E_ROOT_DIR}/repo-e2e/specs`,
|
|
10
10
|
fullyParallel: false,
|
|
11
11
|
workers: 1,
|
|
12
12
|
forbidOnly: !!process.env.CI,
|
|
@@ -19,7 +19,7 @@ export default defineConfig({
|
|
|
19
19
|
webServer: externalBaseURL
|
|
20
20
|
? undefined
|
|
21
21
|
: {
|
|
22
|
-
command: 'node e2e/scripts/startE2eVona.ts',
|
|
22
|
+
command: 'node repo-e2e/scripts/startE2eVona.ts',
|
|
23
23
|
cwd: E2E_ROOT_DIR,
|
|
24
24
|
url: `${baseURL}/`,
|
|
25
25
|
timeout: 180_000,
|
|
@@ -16,5 +16,5 @@ if (!Number.isInteger(e2ePort) || e2ePort <= 0 || e2ePort > 65535) {
|
|
|
16
16
|
|
|
17
17
|
export const E2E_PORT = e2ePort;
|
|
18
18
|
export const E2E_LOCAL_BASE_URL = `http://127.0.0.1:${E2E_PORT}`;
|
|
19
|
-
export const E2E_CONFIG_FILE = resolve(E2E_ROOT_DIR, 'e2e', 'config', 'playwright.config.ts');
|
|
20
|
-
export const E2E_SPECS_DIR = resolve(E2E_ROOT_DIR, 'e2e', 'specs');
|
|
19
|
+
export const E2E_CONFIG_FILE = resolve(E2E_ROOT_DIR, 'repo-e2e', 'config', 'playwright.config.ts');
|
|
20
|
+
export const E2E_SPECS_DIR = resolve(E2E_ROOT_DIR, 'repo-e2e', 'specs');
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Start the local OpenTelemetry Collector, Prometheus, and Grafana stack:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
docker compose -f observability/docker-compose.metrics.yml up
|
|
6
|
+
docker compose -f repo-observability/docker-compose.metrics.yml up
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
Enable the application metric exporter only for local development:
|
package/scripts/init.ts
CHANGED
|
@@ -18,7 +18,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
18
18
|
const ROOT_DIR = resolve(__dirname, '..');
|
|
19
19
|
const VONA_DIR = resolve(ROOT_DIR, 'vona');
|
|
20
20
|
const ZOVA_DIR = resolve(ROOT_DIR, 'zova');
|
|
21
|
-
const
|
|
21
|
+
const REPO_DOCS_DIR = resolve(ROOT_DIR, 'repo-docs');
|
|
22
22
|
const PNPM_VERSION = '11.5.2';
|
|
23
23
|
const VERSION_MARKER_FILE = '.cabloy-version';
|
|
24
24
|
|
|
@@ -284,14 +284,14 @@ function cleanupWorkspaceYaml(): void {
|
|
|
284
284
|
}
|
|
285
285
|
}
|
|
286
286
|
|
|
287
|
-
// --- Step G: init:
|
|
287
|
+
// --- Step G: init:repo-docs ---
|
|
288
288
|
|
|
289
|
-
function
|
|
290
|
-
const pkgPath = resolve(
|
|
289
|
+
function initRepoDocs(): void {
|
|
290
|
+
const pkgPath = resolve(REPO_DOCS_DIR, 'package.json');
|
|
291
291
|
if (!existsSync(pkgPath)) return;
|
|
292
292
|
// eslint-disable-next-line
|
|
293
|
-
console.log('[init] Initializing
|
|
294
|
-
pnpmInstall(
|
|
293
|
+
console.log('[init] Initializing repo-docs...');
|
|
294
|
+
pnpmInstall(REPO_DOCS_DIR);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
// --- Main ---
|
|
@@ -305,7 +305,7 @@ cleanupWorkspaceYaml();
|
|
|
305
305
|
initZova();
|
|
306
306
|
buildSsrZovaAll();
|
|
307
307
|
initVona();
|
|
308
|
-
|
|
308
|
+
initRepoDocs();
|
|
309
309
|
writeVersionMarker();
|
|
310
310
|
// eslint-disable-next-line
|
|
311
311
|
console.log('[init] Done!');
|
package/scripts/upgrade.ts
CHANGED
|
@@ -28,8 +28,8 @@ const OVERWRITE_DIRS: string[] = [
|
|
|
28
28
|
// root
|
|
29
29
|
'scripts',
|
|
30
30
|
'.husky',
|
|
31
|
-
'
|
|
32
|
-
'observability',
|
|
31
|
+
'repo-docs',
|
|
32
|
+
'repo-observability',
|
|
33
33
|
// vona
|
|
34
34
|
'vona/packages-vona',
|
|
35
35
|
'vona/packages-cli',
|
|
@@ -59,28 +59,16 @@ const OVERWRITE_DIRS_CABLOY_BASIC: string[] = [
|
|
|
59
59
|
'zova/src/suite/a-devui',
|
|
60
60
|
];
|
|
61
61
|
|
|
62
|
-
const FRAMEWORK_E2E_DIRS_CABLOY_BASIC: string[] = ['e2e/config', 'e2e/scripts'];
|
|
62
|
+
const FRAMEWORK_E2E_DIRS_CABLOY_BASIC: string[] = ['repo-e2e/config', 'repo-e2e/scripts'];
|
|
63
63
|
|
|
64
64
|
const FRAMEWORK_E2E_FILES_CABLOY_BASIC: string[] = [
|
|
65
|
-
'e2e/specs/cabloy-basic.spec.ts',
|
|
66
|
-
'e2e/specs/account.spec.ts',
|
|
67
|
-
'e2e/specs/a-commerce.spec.ts',
|
|
65
|
+
'repo-e2e/specs/cabloy-basic.spec.ts',
|
|
66
|
+
'repo-e2e/specs/home-user-account.spec.ts',
|
|
67
|
+
'repo-e2e/specs/a-commerce.spec.ts',
|
|
68
68
|
];
|
|
69
69
|
|
|
70
70
|
const FRAMEWORK_E2E_SCRIPT_NAMES_CABLOY_BASIC: string[] = ['test:e2e', 'test:e2e:fast'];
|
|
71
71
|
|
|
72
|
-
const FRAMEWORK_E2E_LEGACY_SCRIPT_NAMES_CABLOY_BASIC: string[] = [
|
|
73
|
-
'test:e2e:basic',
|
|
74
|
-
'test:e2e:basic:web',
|
|
75
|
-
'test:e2e:basic:admin',
|
|
76
|
-
'test:e2e:basic:clean',
|
|
77
|
-
'test:e2e:commerce',
|
|
78
|
-
'test:e2e:commerce:web',
|
|
79
|
-
'test:e2e:commerce:admin',
|
|
80
|
-
'test:e2e:commerce:clean',
|
|
81
|
-
'test:e2e:basic:flow',
|
|
82
|
-
];
|
|
83
|
-
|
|
84
72
|
const FRAMEWORK_E2E_DEV_DEPENDENCY_CABLOY_BASIC = '@playwright/test';
|
|
85
73
|
|
|
86
74
|
const MERGE_DIRS: string[] = [
|
|
@@ -261,12 +249,12 @@ function mergeFrameworkE2eAssets(dryRun?: boolean): void {
|
|
|
261
249
|
}
|
|
262
250
|
|
|
263
251
|
const legacyFrameworkFiles: string[] = [
|
|
264
|
-
'e2e/config/playwright.basic.config.ts',
|
|
265
|
-
'e2e/config/playwright.commerce.config.ts',
|
|
266
|
-
'e2e/config/playwright.shared.config.ts',
|
|
267
|
-
'e2e/specs/cabloy-basic/basic.spec.ts',
|
|
268
|
-
'e2e/specs/cabloy-basic/account.spec.ts',
|
|
269
|
-
'e2e/specs/a-commerce/commerce.spec.ts',
|
|
252
|
+
'repo-e2e/config/playwright.basic.config.ts',
|
|
253
|
+
'repo-e2e/config/playwright.commerce.config.ts',
|
|
254
|
+
'repo-e2e/config/playwright.shared.config.ts',
|
|
255
|
+
'repo-e2e/specs/cabloy-basic/basic.spec.ts',
|
|
256
|
+
'repo-e2e/specs/cabloy-basic/account.spec.ts',
|
|
257
|
+
'repo-e2e/specs/a-commerce/commerce.spec.ts',
|
|
270
258
|
];
|
|
271
259
|
for (const file of legacyFrameworkFiles) {
|
|
272
260
|
const dest = resolve(ROOT_DIR, file);
|
|
@@ -337,16 +325,6 @@ function reconcileFrameworkE2ePackageJson(dryRun?: boolean): void {
|
|
|
337
325
|
}
|
|
338
326
|
}
|
|
339
327
|
|
|
340
|
-
for (const name of FRAMEWORK_E2E_LEGACY_SCRIPT_NAMES_CABLOY_BASIC) {
|
|
341
|
-
if (!projectPackage.scripts?.[name]) continue;
|
|
342
|
-
changed = true;
|
|
343
|
-
if (dryRun) {
|
|
344
|
-
log(` [dry-run] Remove legacy framework E2E script package.json scripts.${name}`);
|
|
345
|
-
} else {
|
|
346
|
-
delete projectPackage.scripts?.[name];
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
|
|
350
328
|
if (!changed) {
|
|
351
329
|
if (dryRun) log(' [dry-run] Framework E2E package entries already match');
|
|
352
330
|
return;
|