cabloy 5.1.146 → 5.1.148

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/.cabloy-version +1 -1
  2. package/.claude/skills/cabloy-backend-scaffold/SKILL.md +16 -16
  3. package/.claude/skills/cabloy-backend-scaffold/references/follow-up-checklist.md +3 -3
  4. package/.claude/skills/cabloy-contract-loop/SKILL.md +5 -5
  5. package/.claude/skills/cabloy-contract-loop/references/contract-loop-map.md +1 -1
  6. package/.claude/skills/cabloy-contract-loop/references/resource-custom-state-pattern.md +1 -1
  7. package/.claude/skills/cabloy-domain-planning/SKILL.md +3 -3
  8. package/.claude/skills/cabloy-frontend-scaffold/SKILL.md +26 -26
  9. package/.claude/skills/cabloy-master-detail/SKILL.md +2 -2
  10. package/.claude/skills/cabloy-module-removal/SKILL.md +2 -2
  11. package/.claude/skills/cabloy-resource-field-update/SKILL.md +1 -1
  12. package/.claude/skills/cabloy-workflow/SKILL.md +10 -10
  13. package/.claude/skills/cabloy-workflow/evals/evals.json +3 -3
  14. package/.claude/skills/cabloy-worktree-environment/SKILL.md +5 -8
  15. package/.claude/skills/cabloy-worktree-environment/evals/evals.json +1 -1
  16. package/.claude/skills/cabloy-zova-source-reading/SKILL.md +23 -23
  17. package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +1 -1
  18. package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +3 -3
  19. package/.github/workflows/docs-pages.yml +5 -5
  20. package/CHANGELOG.md +12 -0
  21. package/CLAUDE.md +12 -8
  22. package/README.md +2 -1
  23. package/package.json +7 -7
  24. package/{cabloy-docs → repo-docs}/.vitepress/config.mjs +1 -1
  25. package/{cabloy-docs → repo-docs}/ai/docs-skills-rules-mapping.md +4 -4
  26. package/{cabloy-docs → repo-docs}/ai/future-skill-roadmap.md +5 -5
  27. package/{cabloy-docs → repo-docs}/ai/introduction.md +3 -3
  28. package/{cabloy-docs → repo-docs}/ai/playbook-module-removal.md +2 -2
  29. package/{cabloy-docs → repo-docs}/ai/repo-guidance.md +3 -3
  30. package/{cabloy-docs → repo-docs}/ai/rules-and-config.md +1 -1
  31. package/{cabloy-docs → repo-docs}/ai/virtual-decorator-guidance.md +1 -1
  32. package/{cabloy-docs → repo-docs}/backend/introduction.md +1 -1
  33. package/{cabloy-docs → repo-docs}/backend/metrics-guide.md +2 -2
  34. package/{cabloy-docs → repo-docs}/frontend/router-tabs-introduction.md +2 -2
  35. package/{cabloy-docs → repo-docs}/frontend/scripts.md +14 -14
  36. package/{cabloy-docs → repo-docs}/fullstack/parallel-worktree-environment.md +4 -4
  37. package/{cabloy-docs → repo-docs}/fullstack/quickstart.md +12 -12
  38. package/{cabloy-docs → repo-docs}/package.json +2 -2
  39. package/{cabloy-docs → repo-docs}/reference/package-map.md +2 -2
  40. package/{cabloy-docs → repo-docs}/reference/repo-scripts.md +25 -27
  41. package/{e2e → repo-e2e}/config/playwright.config.ts +2 -2
  42. package/{e2e → repo-e2e}/scripts/e2e.ts +2 -2
  43. package/{observability → repo-observability}/README.md +1 -1
  44. package/scripts/init.ts +7 -7
  45. package/scripts/upgrade.ts +12 -34
  46. package/vona/packages-cli/cli/README.md +1 -1
  47. package/vona/packages-cli/cli/package.json +1 -1
  48. package/vona/packages-cli/cli-set-api/README.md +1 -1
  49. package/vona/packages-cli/cli-set-api/package.json +1 -1
  50. package/zova/packages-cli/cli/README.md +1 -1
  51. package/zova/packages-cli/cli/package.json +2 -2
  52. package/zova/packages-cli/cli-set-front/README.md +1 -1
  53. package/zova/packages-cli/cli-set-front/package.json +1 -1
  54. package/zova/pnpm-lock.yaml +15 -15
  55. /package/{cabloy-docs → repo-docs}/.vitepress/public/CNAME +0 -0
  56. /package/{cabloy-docs → repo-docs}/.vitepress/theme/custom.css +0 -0
  57. /package/{cabloy-docs → repo-docs}/.vitepress/theme/edition-badges.md +0 -0
  58. /package/{cabloy-docs → repo-docs}/.vitepress/theme/index.js +0 -0
  59. /package/{cabloy-docs → repo-docs}/ai/class-placement-rule.md +0 -0
  60. /package/{cabloy-docs → repo-docs}/ai/cli-for-agents.md +0 -0
  61. /package/{cabloy-docs → repo-docs}/ai/cli-to-skill-map.md +0 -0
  62. /package/{cabloy-docs → repo-docs}/ai/edition-consistency-checklist.md +0 -0
  63. /package/{cabloy-docs → repo-docs}/ai/edition-detection.md +0 -0
  64. /package/{cabloy-docs → repo-docs}/ai/global-bean-lookup.md +0 -0
  65. /package/{cabloy-docs → repo-docs}/ai/playbook-backend-module.md +0 -0
  66. /package/{cabloy-docs → repo-docs}/ai/playbook-contract-regeneration.md +0 -0
  67. /package/{cabloy-docs → repo-docs}/ai/playbook-frontend-page.md +0 -0
  68. /package/{cabloy-docs → repo-docs}/ai/playbook-metadata-refresh.md +0 -0
  69. /package/{cabloy-docs → repo-docs}/ai/playbook-technical-blog-authoring.md +0 -0
  70. /package/{cabloy-docs → repo-docs}/ai/skills.md +0 -0
  71. /package/{cabloy-docs → repo-docs}/ai/verification.md +0 -0
  72. /package/{cabloy-docs → repo-docs}/backend/aop-overview.md +0 -0
  73. /package/{cabloy-docs → repo-docs}/backend/auth-guide.md +0 -0
  74. /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-output-inspection.md +0 -0
  75. /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-source-reading-map.md +0 -0
  76. /package/{cabloy-docs → repo-docs}/backend/backend-contract-emission-specimen.md +0 -0
  77. /package/{cabloy-docs → repo-docs}/backend/backend-essentials.md +0 -0
  78. /package/{cabloy-docs → repo-docs}/backend/backend-resource-module-contract-chain.md +0 -0
  79. /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-debug-checklist.md +0 -0
  80. /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-roadmap.md +0 -0
  81. /package/{cabloy-docs → repo-docs}/backend/backend-source-reading-verify-playbook.md +0 -0
  82. /package/{cabloy-docs → repo-docs}/backend/bean-scene-authoring.md +0 -0
  83. /package/{cabloy-docs → repo-docs}/backend/broadcast-guide.md +0 -0
  84. /package/{cabloy-docs → repo-docs}/backend/cache-guide.md +0 -0
  85. /package/{cabloy-docs → repo-docs}/backend/captcha-guide.md +0 -0
  86. /package/{cabloy-docs → repo-docs}/backend/cli.md +0 -0
  87. /package/{cabloy-docs → repo-docs}/backend/config-guide.md +0 -0
  88. /package/{cabloy-docs → repo-docs}/backend/controller-aop-guide.md +0 -0
  89. /package/{cabloy-docs → repo-docs}/backend/controller-guide.md +0 -0
  90. /package/{cabloy-docs → repo-docs}/backend/crud-workflow.md +0 -0
  91. /package/{cabloy-docs → repo-docs}/backend/dto-guide.md +0 -0
  92. /package/{cabloy-docs → repo-docs}/backend/dto-infer-generation.md +0 -0
  93. /package/{cabloy-docs → repo-docs}/backend/dynamic-datasource-guide.md +0 -0
  94. /package/{cabloy-docs → repo-docs}/backend/election-guide.md +0 -0
  95. /package/{cabloy-docs → repo-docs}/backend/entity-guide.md +0 -0
  96. /package/{cabloy-docs → repo-docs}/backend/error-guide.md +0 -0
  97. /package/{cabloy-docs → repo-docs}/backend/event-guide.md +0 -0
  98. /package/{cabloy-docs → repo-docs}/backend/external-aop-guide.md +0 -0
  99. /package/{cabloy-docs → repo-docs}/backend/field-indexes.md +0 -0
  100. /package/{cabloy-docs → repo-docs}/backend/file-guide.md +0 -0
  101. /package/{cabloy-docs → repo-docs}/backend/foundation.md +0 -0
  102. /package/{cabloy-docs → repo-docs}/backend/i18n-guide.md +0 -0
  103. /package/{cabloy-docs → repo-docs}/backend/image-guide.md +0 -0
  104. /package/{cabloy-docs → repo-docs}/backend/internal-aop-guide.md +0 -0
  105. /package/{cabloy-docs → repo-docs}/backend/jwt-guide.md +0 -0
  106. /package/{cabloy-docs → repo-docs}/backend/logger-guide.md +0 -0
  107. /package/{cabloy-docs → repo-docs}/backend/mail-guide.md +0 -0
  108. /package/{cabloy-docs → repo-docs}/backend/markdown-guide.md +0 -0
  109. /package/{cabloy-docs → repo-docs}/backend/master-detail-source-reading-map.md +0 -0
  110. /package/{cabloy-docs → repo-docs}/backend/master-detail-workflow.md +0 -0
  111. /package/{cabloy-docs → repo-docs}/backend/menu-guide.md +0 -0
  112. /package/{cabloy-docs → repo-docs}/backend/migration-and-changes.md +0 -0
  113. /package/{cabloy-docs → repo-docs}/backend/model-guide.md +0 -0
  114. /package/{cabloy-docs → repo-docs}/backend/module-dependencies.md +0 -0
  115. /package/{cabloy-docs → repo-docs}/backend/multi-database-datasource.md +0 -0
  116. /package/{cabloy-docs → repo-docs}/backend/multi-instance-and-instance-resolution.md +0 -0
  117. /package/{cabloy-docs → repo-docs}/backend/openapi-guide.md +0 -0
  118. /package/{cabloy-docs → repo-docs}/backend/orm-aggregate-group-guide.md +0 -0
  119. /package/{cabloy-docs → repo-docs}/backend/orm-configuration-guide.md +0 -0
  120. /package/{cabloy-docs → repo-docs}/backend/orm-guide.md +0 -0
  121. /package/{cabloy-docs → repo-docs}/backend/orm-mutation-guide.md +0 -0
  122. /package/{cabloy-docs → repo-docs}/backend/orm-select-guide.md +0 -0
  123. /package/{cabloy-docs → repo-docs}/backend/queue-guide.md +0 -0
  124. /package/{cabloy-docs → repo-docs}/backend/quickstart.md +0 -0
  125. /package/{cabloy-docs → repo-docs}/backend/rate-limit-guide.md +0 -0
  126. /package/{cabloy-docs → repo-docs}/backend/redis-guide.md +0 -0
  127. /package/{cabloy-docs → repo-docs}/backend/redlock-guide.md +0 -0
  128. /package/{cabloy-docs → repo-docs}/backend/relations-guide.md +0 -0
  129. /package/{cabloy-docs → repo-docs}/backend/runtime-and-flavors.md +0 -0
  130. /package/{cabloy-docs → repo-docs}/backend/schedule-guide.md +0 -0
  131. /package/{cabloy-docs → repo-docs}/backend/scripts.md +0 -0
  132. /package/{cabloy-docs → repo-docs}/backend/serialization-guide.md +0 -0
  133. /package/{cabloy-docs → repo-docs}/backend/service-guide.md +0 -0
  134. /package/{cabloy-docs → repo-docs}/backend/sharding-guide.md +0 -0
  135. /package/{cabloy-docs → repo-docs}/backend/startup-guide.md +0 -0
  136. /package/{cabloy-docs → repo-docs}/backend/status-guide.md +0 -0
  137. /package/{cabloy-docs → repo-docs}/backend/telemetry-guide.md +0 -0
  138. /package/{cabloy-docs → repo-docs}/backend/transaction-guide.md +0 -0
  139. /package/{cabloy-docs → repo-docs}/backend/unit-testing.md +0 -0
  140. /package/{cabloy-docs → repo-docs}/backend/upload-guide.md +0 -0
  141. /package/{cabloy-docs → repo-docs}/backend/user-access-guide.md +0 -0
  142. /package/{cabloy-docs → repo-docs}/backend/validation-guide.md +0 -0
  143. /package/{cabloy-docs → repo-docs}/backend/vona-source-reading-map.md +0 -0
  144. /package/{cabloy-docs → repo-docs}/backend/websocket-call-flow.md +0 -0
  145. /package/{cabloy-docs → repo-docs}/backend/websocket-guide.md +0 -0
  146. /package/{cabloy-docs → repo-docs}/backend/websocket-protocol-guide.md +0 -0
  147. /package/{cabloy-docs → repo-docs}/backend/websocket-usage-guide.md +0 -0
  148. /package/{cabloy-docs → repo-docs}/backend/worker-guide.md +0 -0
  149. /package/{cabloy-docs → repo-docs}/blogs/ai-react-nextjs-enterprise-architecture-cabloy/cover-en-v1.png +0 -0
  150. /package/{cabloy-docs → repo-docs}/blogs/ai-react-nextjs-enterprise-architecture-cabloy/index.md +0 -0
  151. /package/{cabloy-docs → repo-docs}/blogs/cabloy-fullstack-resource-addressing/cover-en-v1.png +0 -0
  152. /package/{cabloy-docs → repo-docs}/blogs/cabloy-fullstack-resource-addressing/index.md +0 -0
  153. /package/{cabloy-docs → repo-docs}/blogs/index.md +0 -0
  154. /package/{cabloy-docs → repo-docs}/blogs/nextjs-integrated-fullstack-cabloy-contract-loop/cover-en-v1.png +0 -0
  155. /package/{cabloy-docs → repo-docs}/blogs/nextjs-integrated-fullstack-cabloy-contract-loop/index.md +0 -0
  156. /package/{cabloy-docs → repo-docs}/blogs/vue-object-oriented-zova-beginner-mental-model/cover-en-v1.png +0 -0
  157. /package/{cabloy-docs → repo-docs}/blogs/vue-object-oriented-zova-beginner-mental-model/index.md +0 -0
  158. /package/{cabloy-docs → repo-docs}/editions/cabloy-basic.md +0 -0
  159. /package/{cabloy-docs → repo-docs}/editions/cabloy-start.md +0 -0
  160. /package/{cabloy-docs → repo-docs}/editions/choosing-between-basic-and-start.md +0 -0
  161. /package/{cabloy-docs → repo-docs}/editions/detection.md +0 -0
  162. /package/{cabloy-docs → repo-docs}/editions/overview.md +0 -0
  163. /package/{cabloy-docs → repo-docs}/frontend/a-model-under-the-hood.md +0 -0
  164. /package/{cabloy-docs → repo-docs}/frontend/a-openapi-under-the-hood.md +0 -0
  165. /package/{cabloy-docs → repo-docs}/frontend/a-router-guide.md +0 -0
  166. /package/{cabloy-docs → repo-docs}/frontend/api-guide.md +0 -0
  167. /package/{cabloy-docs → repo-docs}/frontend/api-schema-guide.md +0 -0
  168. /package/{cabloy-docs → repo-docs}/frontend/app-startup-guide.md +0 -0
  169. /package/{cabloy-docs → repo-docs}/frontend/bean-scene-authoring.md +0 -0
  170. /package/{cabloy-docs → repo-docs}/frontend/behavior-guide.md +0 -0
  171. /package/{cabloy-docs → repo-docs}/frontend/cli.md +0 -0
  172. /package/{cabloy-docs → repo-docs}/frontend/command-scene-authoring.md +0 -0
  173. /package/{cabloy-docs → repo-docs}/frontend/component-guide.md +0 -0
  174. /package/{cabloy-docs → repo-docs}/frontend/component-props-guide.md +0 -0
  175. /package/{cabloy-docs → repo-docs}/frontend/component-v-model-guide.md +0 -0
  176. /package/{cabloy-docs → repo-docs}/frontend/css-in-js-guide.md +0 -0
  177. /package/{cabloy-docs → repo-docs}/frontend/design-principles.md +0 -0
  178. /package/{cabloy-docs → repo-docs}/frontend/environment-config-guide.md +0 -0
  179. /package/{cabloy-docs → repo-docs}/frontend/fetch-interceptor-guide.md +0 -0
  180. /package/{cabloy-docs → repo-docs}/frontend/file-guide.md +0 -0
  181. /package/{cabloy-docs → repo-docs}/frontend/filter-query-select-data-flow-guide.md +0 -0
  182. /package/{cabloy-docs → repo-docs}/frontend/form-guide.md +0 -0
  183. /package/{cabloy-docs → repo-docs}/frontend/form-layout-guide.md +0 -0
  184. /package/{cabloy-docs → repo-docs}/frontend/form-scene-to-page-meta-guide.md +0 -0
  185. /package/{cabloy-docs → repo-docs}/frontend/foundation.md +0 -0
  186. /package/{cabloy-docs → repo-docs}/frontend/frontend-source-reading-roadmap.md +0 -0
  187. /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-debug-checklist.md +0 -0
  188. /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-entry-branch.md +0 -0
  189. /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-list-branch.md +0 -0
  190. /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-specimen.md +0 -0
  191. /package/{cabloy-docs → repo-docs}/frontend/generated-contract-consumption-verify-playbook.md +0 -0
  192. /package/{cabloy-docs → repo-docs}/frontend/generic-component-guide.md +0 -0
  193. /package/{cabloy-docs → repo-docs}/frontend/icon-engine-guide.md +0 -0
  194. /package/{cabloy-docs → repo-docs}/frontend/image-guide.md +0 -0
  195. /package/{cabloy-docs → repo-docs}/frontend/introduction.md +0 -0
  196. /package/{cabloy-docs → repo-docs}/frontend/ioc-and-beans.md +0 -0
  197. /package/{cabloy-docs → repo-docs}/frontend/markdown-guide.md +0 -0
  198. /package/{cabloy-docs → repo-docs}/frontend/mock-guide.md +0 -0
  199. /package/{cabloy-docs → repo-docs}/frontend/model-architecture.md +0 -0
  200. /package/{cabloy-docs → repo-docs}/frontend/model-resource-best-practices.md +0 -0
  201. /package/{cabloy-docs → repo-docs}/frontend/model-resource-cookbook.md +0 -0
  202. /package/{cabloy-docs → repo-docs}/frontend/model-resource-internals-deep-dive.md +0 -0
  203. /package/{cabloy-docs → repo-docs}/frontend/model-resource-owner-pattern.md +0 -0
  204. /package/{cabloy-docs → repo-docs}/frontend/model-resource-usage-guide.md +0 -0
  205. /package/{cabloy-docs → repo-docs}/frontend/model-state-guide.md +0 -0
  206. /package/{cabloy-docs → repo-docs}/frontend/module-scope.md +0 -0
  207. /package/{cabloy-docs → repo-docs}/frontend/modules-and-suites.md +0 -0
  208. /package/{cabloy-docs → repo-docs}/frontend/navigation-guards-guide.md +0 -0
  209. /package/{cabloy-docs → repo-docs}/frontend/openapi-sdk-guide.md +0 -0
  210. /package/{cabloy-docs → repo-docs}/frontend/page-guide.md +0 -0
  211. /package/{cabloy-docs → repo-docs}/frontend/page-meta-guide.md +0 -0
  212. /package/{cabloy-docs → repo-docs}/frontend/page-params-guide.md +0 -0
  213. /package/{cabloy-docs → repo-docs}/frontend/page-query-guide.md +0 -0
  214. /package/{cabloy-docs → repo-docs}/frontend/page-route-guide.md +0 -0
  215. /package/{cabloy-docs → repo-docs}/frontend/permission-formscene-action-visibility-guide.md +0 -0
  216. /package/{cabloy-docs → repo-docs}/frontend/quickstart.md +0 -0
  217. /package/{cabloy-docs → repo-docs}/frontend/reading-zova-for-vue-developers.md +0 -0
  218. /package/{cabloy-docs → repo-docs}/frontend/resource-entry-page-deep-dive.md +0 -0
  219. /package/{cabloy-docs → repo-docs}/frontend/resource-list-page-deep-dive.md +0 -0
  220. /package/{cabloy-docs → repo-docs}/frontend/rest-resource-source-reading-map.md +0 -0
  221. /package/{cabloy-docs → repo-docs}/frontend/rest-resource-under-the-hood.md +0 -0
  222. /package/{cabloy-docs → repo-docs}/frontend/root-behaviors-guide.md +0 -0
  223. /package/{cabloy-docs → repo-docs}/frontend/route-alias-guide.md +0 -0
  224. /package/{cabloy-docs → repo-docs}/frontend/router-stack-guide.md +0 -0
  225. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-admin-web-comparison.md +0 -0
  226. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-layout-integration.md +0 -0
  227. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-mechanism.md +0 -0
  228. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-overview.md +0 -0
  229. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-route-meta-cookbook.md +0 -0
  230. /package/{cabloy-docs → repo-docs}/frontend/router-tabs-vs-stack.md +0 -0
  231. /package/{cabloy-docs → repo-docs}/frontend/router-view-hosts-guide.md +0 -0
  232. /package/{cabloy-docs → repo-docs}/frontend/schema-driven-field-effects-guide.md +0 -0
  233. /package/{cabloy-docs → repo-docs}/frontend/sdk-guide.md +0 -0
  234. /package/{cabloy-docs → repo-docs}/frontend/server-data.md +0 -0
  235. /package/{cabloy-docs → repo-docs}/frontend/ssr-architecture-overview.md +0 -0
  236. /package/{cabloy-docs → repo-docs}/frontend/ssr-build-deploy-guide.md +0 -0
  237. /package/{cabloy-docs → repo-docs}/frontend/ssr-client-only.md +0 -0
  238. /package/{cabloy-docs → repo-docs}/frontend/ssr-env.md +0 -0
  239. /package/{cabloy-docs → repo-docs}/frontend/ssr-init-data.md +0 -0
  240. /package/{cabloy-docs → repo-docs}/frontend/ssr-overview.md +0 -0
  241. /package/{cabloy-docs → repo-docs}/frontend/ssr-review-checklist.md +0 -0
  242. /package/{cabloy-docs → repo-docs}/frontend/ssr-seo-meta.md +0 -0
  243. /package/{cabloy-docs → repo-docs}/frontend/ssr-troubleshooting-guide.md +0 -0
  244. /package/{cabloy-docs → repo-docs}/frontend/state-architecture-for-vue-developers.md +0 -0
  245. /package/{cabloy-docs → repo-docs}/frontend/system-startup-guide.md +0 -0
  246. /package/{cabloy-docs → repo-docs}/frontend/table-action-visibility-permission-flow-guide.md +0 -0
  247. /package/{cabloy-docs → repo-docs}/frontend/table-cell-cookbook.md +0 -0
  248. /package/{cabloy-docs → repo-docs}/frontend/table-guide.md +0 -0
  249. /package/{cabloy-docs → repo-docs}/frontend/table-resource-crud-cookbook.md +0 -0
  250. /package/{cabloy-docs → repo-docs}/frontend/theme-guide.md +0 -0
  251. /package/{cabloy-docs → repo-docs}/frontend/use-state-data-best-practices.md +0 -0
  252. /package/{cabloy-docs → repo-docs}/frontend/zod-guide.md +0 -0
  253. /package/{cabloy-docs → repo-docs}/frontend/zova-app-guide.md +0 -0
  254. /package/{cabloy-docs → repo-docs}/frontend/zova-form-source-reading-map.md +0 -0
  255. /package/{cabloy-docs → repo-docs}/frontend/zova-form-under-the-hood.md +0 -0
  256. /package/{cabloy-docs → repo-docs}/frontend/zova-reactivity-under-the-hood.md +0 -0
  257. /package/{cabloy-docs → repo-docs}/frontend/zova-router-under-the-hood.md +0 -0
  258. /package/{cabloy-docs → repo-docs}/frontend/zova-source-reading-map.md +0 -0
  259. /package/{cabloy-docs → repo-docs}/frontend/zova-table-controller-render-supplement.md +0 -0
  260. /package/{cabloy-docs → repo-docs}/frontend/zova-table-source-reading-map.md +0 -0
  261. /package/{cabloy-docs → repo-docs}/frontend/zova-table-under-the-hood.md +0 -0
  262. /package/{cabloy-docs → repo-docs}/frontend/zova-vs-vue3-comparison.md +0 -0
  263. /package/{cabloy-docs → repo-docs}/fullstack/a-pay-payment-suite.md +0 -0
  264. /package/{cabloy-docs → repo-docs}/fullstack/admin-resource-and-web-self-service.md +0 -0
  265. /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-debug-checklist.md +0 -0
  266. /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-source-reading-map.md +0 -0
  267. /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions-verify-playbook.md +0 -0
  268. /package/{cabloy-docs → repo-docs}/fullstack/backend-metadata-to-frontend-table-actions.md +0 -0
  269. /package/{cabloy-docs → repo-docs}/fullstack/cli.md +0 -0
  270. /package/{cabloy-docs → repo-docs}/fullstack/comparison-with-other-frameworks.md +0 -0
  271. /package/{cabloy-docs → repo-docs}/fullstack/contract-loop-playbook.md +0 -0
  272. /package/{cabloy-docs → repo-docs}/fullstack/deploy-cloudflare-docker.md +0 -0
  273. /package/{cabloy-docs → repo-docs}/fullstack/edition-collaboration-differences.md +0 -0
  274. /package/{cabloy-docs → repo-docs}/fullstack/file-workflow.md +0 -0
  275. /package/{cabloy-docs → repo-docs}/fullstack/framework-performance.md +0 -0
  276. /package/{cabloy-docs → repo-docs}/fullstack/frontend-metadata-to-backend.md +0 -0
  277. /package/{cabloy-docs → repo-docs}/fullstack/image-workflow.md +0 -0
  278. /package/{cabloy-docs → repo-docs}/fullstack/introduction.md +0 -0
  279. /package/{cabloy-docs → repo-docs}/fullstack/openapi-to-sdk.md +0 -0
  280. /package/{cabloy-docs → repo-docs}/fullstack/payment-sandbox-configuration.md +0 -0
  281. /package/{cabloy-docs → repo-docs}/fullstack/suites-and-modules.md +0 -0
  282. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-1-first-module.md +0 -0
  283. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-2-first-crud.md +0 -0
  284. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-3-frontend-metadata-sharing.md +0 -0
  285. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-4-custom-level-renderers.md +0 -0
  286. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-5-backend-contract-sharing.md +0 -0
  287. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-6-one-contract-four-uses.md +0 -0
  288. /package/{cabloy-docs → repo-docs}/fullstack/tutorials-overview.md +0 -0
  289. /package/{cabloy-docs → repo-docs}/fullstack/vona-zova-integration.md +0 -0
  290. /package/{cabloy-docs → repo-docs}/fullstack/vscode-extensions.md +0 -0
  291. /package/{cabloy-docs → repo-docs}/index.md +0 -0
  292. /package/{cabloy-docs → repo-docs}/pnpm-lock.yaml +0 -0
  293. /package/{cabloy-docs → repo-docs}/pnpm-workspace.yaml +0 -0
  294. /package/{cabloy-docs → repo-docs}/reference/backend-directory-structure.md +0 -0
  295. /package/{cabloy-docs → repo-docs}/reference/bean-scene-boilerplates.md +0 -0
  296. /package/{cabloy-docs → repo-docs}/reference/cli-reference.md +0 -0
  297. /package/{cabloy-docs → repo-docs}/reference/frontend-directory-structure.md +0 -0
  298. /package/{cabloy-docs → repo-docs}/reference/glossary.md +0 -0
  299. /package/{cabloy-docs → repo-docs}/reference/introduction.md +0 -0
  300. /package/{e2e → repo-e2e}/scripts/runE2e.ts +0 -0
  301. /package/{e2e → repo-e2e}/scripts/runE2eArgs.test.ts +0 -0
  302. /package/{e2e → repo-e2e}/scripts/runE2eArgs.ts +0 -0
  303. /package/{e2e → repo-e2e}/scripts/startE2eVona.ts +0 -0
  304. /package/{e2e → repo-e2e}/specs/a-commerce.spec.ts +0 -0
  305. /package/{e2e → repo-e2e}/specs/cabloy-basic.spec.ts +0 -0
  306. /package/{e2e → repo-e2e}/specs/home-user-account.spec.ts +0 -0
  307. /package/{e2e → repo-e2e}/specs/markdown.spec.ts +0 -0
  308. /package/{observability → repo-observability}/collector/otel-collector.yaml +0 -0
  309. /package/{observability → repo-observability}/docker-compose.metrics.yml +0 -0
  310. /package/{observability → repo-observability}/grafana/provisioning/datasources/prometheus.yaml +0 -0
  311. /package/{observability → repo-observability}/prometheus/prometheus.yaml +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
- - `cabloy-docs/` contains the unified public documentation.
21
- - `.docs-internal/` contains internal engineering notes and ADRs.
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 `cabloy-docs/`.
39
- - Put maintainer rationale, architecture notes, and ADRs in `.docs-internal/`.
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 `cabloy-docs/frontend/` before doing framework-neutral reinterpretation.
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 `cabloy-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.
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 `cabloy-docs/ai/class-placement-rule.md`.
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 `.docs-internal/architecture/vona-cross-model-query-cache-dependencies.md` before designing a nontrivial graph.
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 [.docs-internal/](https://github.com/cabloy/cabloy/tree/main/.docs-internal)
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.146",
3
+ "version": "5.1.148",
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 cabloy-docs docs:dev",
61
- "docs:build": "pnpm --dir cabloy-docs docs:build",
62
- "docs:preview": "pnpm --dir cabloy-docs docs:preview",
63
- "docs:fix": "textlint --fix ./cabloy-docs/**/*.md",
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/cabloy-docs/:path',
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
- - `cabloy-docs/`
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
- - `.docs-internal/`
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 → `.docs-internal/architecture/class-placement-a-b1-b2.md`
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 → `.docs-internal/architecture/module-removal-workflow.md`
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 `cabloy-docs/backend/`
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 `cabloy-docs/frontend/`
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 `.docs-internal/`
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
- - `cabloy-docs/`
149
+ - `repo-docs/`
150
150
  - `CLAUDE.md`
151
- - `.docs-internal/`
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 `.docs-internal/` for maintainer rationale
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 `cabloy-docs/` for user-facing and agent-facing guidance that should remain durable and source-aligned.
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 `.docs-internal/` for architecture notes, ADRs, and maintainership rationale that should not be mixed into public how-to documentation.
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 `cabloy-docs/`. Otherwise, treat docs cleanup as a separate scope decision.
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 `cabloy-docs/` as a separate pass after runtime cleanup is stable.
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
- - `.docs-internal/README.md`
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 `cabloy-docs/` to explain how people and agents should work
33
- - use `.docs-internal/` to explain why maintainers designed the repo a certain way
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 `.docs-internal/`.
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/`.
@@ -203,4 +203,4 @@ Read these pages together:
203
203
 
204
204
  For maintainer-level rationale, also read:
205
205
 
206
- - `.docs-internal/architecture/virtual-decorator-runtime-semantics.md`
206
+ - `repo-docs-internal/architecture/virtual-decorator-runtime-semantics.md`
@@ -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 `.docs-internal/` for maintainer rationale
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. `.docs-internal/architecture/router-tabs-design-boundaries.md`
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
- - `.docs-internal/architecture/router-tabs-design-boundaries.md`
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
 
@@ -98,31 +98,31 @@ Cabloy Start does not expose the Basic Commerce wrapper family.
98
98
 
99
99
  ## Start SSR browser acceptance
100
100
 
101
- The Start Web and Admin browser baseline also exercises Vona SSR dispatch at port `7102`. Prepare current SSR and REST artifacts, then use the managed local command:
101
+ The Start Web and Admin browser baseline also exercises Vona SSR dispatch at the effective local server port. Prepare current SSR and REST artifacts, then use the managed local command:
102
102
 
103
103
  ```bash
104
104
  npm run build:zova
105
105
  npm run deps:vona
106
- npm run test:e2e:start:clean
106
+ npm run test:e2e
107
107
  ```
108
108
 
109
- The Start command family is:
109
+ Start uses the same unified E2E command pair as Basic:
110
110
 
111
111
  ```text
112
- test:e2e:start complete suite
113
- test:e2e:start:web all @web surface scenarios
114
- test:e2e:start:admin all @admin surface scenarios
115
- test:e2e:start:clean managed clean local suite run
112
+ npm run test:e2e managed clean local suite run
113
+ npm run test:e2e:fast fast rerun without an automatic reset
116
114
  ```
117
115
 
118
- Start scenarios currently use `@web`, `@admin`, and `@smoke`. Select a scenario or surface with Playwright arguments:
116
+ Select flat spec basenames and filter scenarios or surfaces with runner tags and native Playwright arguments. Current Start scenarios use tags including `@web`, `@admin`, `@smoke`, `@layout`, `@cabloy-admin`, `@account`, `@ssr`, and `@flow`:
119
117
 
120
118
  ```bash
121
- npm run test:e2e:start:clean -- --grep @web
122
- npm run test:e2e:start -- --grep ATP-START-FLOW-01
119
+ npm run test:e2e cabloy-start
120
+ npm run test:e2e:fast cabloy-start -- --tag @web
121
+ npm run test:e2e:fast cabloy-admin -- --tag @admin --tag @cabloy-admin
122
+ npm run test:e2e:fast cabloy-start -- --grep ATP-START-FLOW-01
123
123
  ```
124
124
 
125
- For a separately managed Start target, set `START_E2E_BASE_URL`. The target owner is responsible for data, cache, and artifact freshness.
125
+ For a separately managed Start target, set `E2E_BASE_URL` and use `test:e2e:fast`. The target owner is responsible for data, cache, artifact freshness, and process lifecycle.
126
126
 
127
127
  ## Zova script model
128
128
 
@@ -75,10 +75,10 @@ For privacy, the skill writes only to absent or empty permitted broad local file
75
75
 
76
76
  Use commands from the active repository root.
77
77
 
78
- | Edition | Marker | Frontend command | Managed clean E2E |
79
- | ------------ | ------------------ | -------------------------------------------------- | ------------------------------ |
80
- | Cabloy Basic | `__CABLOY_BASIC__` | `npm run dev:zova:admin` or `npm run dev:zova:web` | `npm run test:e2e` |
81
- | Cabloy Start | `__CABLOY_START__` | `npm run dev:zova:admin` or `npm run dev:zova:web` | `npm run test:e2e:start:clean` |
78
+ | Edition | Marker | Frontend command | Managed clean E2E |
79
+ | ------------ | ------------------ | -------------------------------------------------- | ------------------ |
80
+ | Cabloy Basic | `__CABLOY_BASIC__` | `npm run dev:zova:admin` or `npm run dev:zova:web` | `npm run test:e2e` |
81
+ | Cabloy Start | `__CABLOY_START__` | `npm run dev:zova:admin` or `npm run dev:zova:web` | `npm run test:e2e` |
82
82
 
83
83
  Run one frontend command, not both, in each worktree. Both managed clean E2E workflows read Vona's effective local `SERVER_LISTEN_PORT`, then reset, start, and target that local runtime.
84
84
 
@@ -112,36 +112,36 @@ 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/
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 private Start E2E files, its root E2E scripts, or `@playwright/test`. Keep project-owned browser scenarios in the flat `repo-e2e/specs/` directory under distinct filenames, for example `repo-e2e/specs/my-project.spec.ts`.
135
135
 
136
136
  Prepare and run the managed Start baseline locally with:
137
137
 
138
138
  ```bash
139
139
  npm run build:zova
140
140
  npm run deps:vona
141
- npm run test:e2e:start:clean
141
+ npm run test:e2e
142
142
  ```
143
143
 
144
- The managed command requires port `7102` to be available and owns the local reset and Vona worker lifecycle. For a separately managed target, set `START_E2E_BASE_URL` and use `test:e2e:start`, `test:e2e:start:web`, or `test:e2e:start:admin`; those commands do not reset, build, start, or stop the target. Install Chromium once when needed with `npx playwright install chromium`. See [Repo Scripts](/reference/repo-scripts#ssr-browser-checks) for the complete command variants.
144
+ The managed command checks the effective local server port and owns the local reset and Vona worker lifecycle. For a separately managed target, set `E2E_BASE_URL` and use `npm run test:e2e:fast`; this mode does not reset, build, start, or stop the target. Select surfaces with `--tag @web` or `--tag @admin`, and exact scenarios with native `--grep` arguments. Install Chromium once when needed with `npx playwright install chromium`. See [Repo Scripts](/reference/repo-scripts#ssr-browser-checks) for the complete command variants.
145
145
 
146
146
  ## 7. Next steps for framework-aware development
147
147
 
@@ -1,7 +1,7 @@
1
1
  {
2
- "name": "cabloy-docs",
2
+ "name": "repo-docs",
3
3
  "private": true,
4
- "description": "Unified Cabloy monorepo docs",
4
+ "description": "Cabloy repository public documentation",
5
5
  "license": "MIT",
6
6
  "author": "zhennann",
7
7
  "type": "module",
@@ -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
- - `.docs-internal/` — internal engineering docs
9
+ - `repo-docs-internal/` — internal engineering docs
10
10
  - `.claude/` — Claude commands, skills, and local settings
11
- - `cabloy-docs/` — unified public docs
11
+ - `repo-docs/` — unified public docs
12
12
 
13
13
  ## Backend side
14
14
 
@@ -63,10 +63,8 @@ Cabloy Start exposes the equivalent Start repository surface:
63
63
  - `npm run start:one`
64
64
  - `npm run test`
65
65
  - `npm run db:reset`
66
- - `npm run test:e2e:start`
67
- - `npm run test:e2e:start:web`
68
- - `npm run test:e2e:start:admin`
69
- - `npm run test:e2e:start:clean`
66
+ - `npm run test:e2e`
67
+ - `npm run test:e2e:fast`
70
68
  - `npm run tsc`
71
69
 
72
70
  Cabloy Start does not expose Basic Commerce or root documentation wrappers.
@@ -80,26 +78,26 @@ Run `npm run upgrade:dry-run` before `npm run upgrade` to inspect framework file
80
78
  Basic upgrade owns these browser baseline paths:
81
79
 
82
80
  ```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
81
+ repo-e2e/config/
82
+ repo-e2e/scripts/
83
+ repo-e2e/specs/cabloy-basic.spec.ts
84
+ repo-e2e/specs/home-user-account.spec.ts
85
+ repo-e2e/specs/a-commerce.spec.ts
88
86
  ```
89
87
 
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.
88
+ 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
89
 
92
90
  ### Cabloy Start private repository
93
91
 
94
92
  The Start E2E baseline is maintained in the private repository:
95
93
 
96
94
  ```text
97
- e2e/config/
98
- e2e/scripts/
99
- e2e/specs/cabloy-start/
95
+ repo-e2e/config/
96
+ repo-e2e/scripts/
97
+ repo-e2e/specs/
100
98
  ```
101
99
 
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/`.
100
+ The public-package upgrade flow does not source or reconcile the private Start baseline, its root E2E scripts, or `@playwright/test`. Keep project browser tests in the flat `repo-e2e/specs/` directory under distinct filenames, for example `repo-e2e/specs/my-project.spec.ts`.
103
101
 
104
102
  ## SSR browser checks
105
103
 
@@ -108,12 +106,12 @@ The unified runner has two modes:
108
106
  - `npm run test:e2e`: clean local run; checks the managed port, resets the database, starts one development Vona worker, and runs Playwright.
109
107
  - `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
108
 
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:
109
+ 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
110
 
113
111
  ```bash
114
- npm run test:e2e cabloy-basic account
112
+ npm run test:e2e cabloy-basic home-user-account
115
113
  npm run test:e2e a-commerce
116
- npm run test:e2e:fast account
114
+ npm run test:e2e:fast home-user-account
117
115
  npm run test:e2e:fast a-commerce -- --grep ATP-SSR
118
116
  npm run test:e2e:fast a-commerce -- --grep-invert @admin
119
117
  ```
@@ -122,7 +120,7 @@ Tags remain independent from filenames. Repeat `--tag` to require all tags, whil
122
120
 
123
121
  ```bash
124
122
  npm run test:e2e:fast a-commerce -- --tag @web --tag @smoke
125
- npm run test:e2e:fast account -- --grep @flow --tag @web
123
+ npm run test:e2e:fast home-user-account -- --grep @flow --tag @web
126
124
  ```
127
125
 
128
126
  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 +132,7 @@ The Basic baseline exercises Web at `/` and Admin at `/admin` through Vona's SSR
134
132
  ```bash
135
133
  npm run build:zova
136
134
  npm run deps:vona
137
- npm run test:e2e cabloy-basic account
135
+ npm run test:e2e cabloy-basic home-user-account
138
136
  ```
139
137
 
140
138
  Commerce browser acceptance exercises Customer Web at `/commerce` and Operator Admin routing at `/commerce-admin`. Prepare its paired artifacts explicitly:
@@ -158,24 +156,24 @@ The Start suite exercises Web at `/` and Admin at `/admin` through Vona's SSR di
158
156
  ```bash
159
157
  npm run build:zova
160
158
  npm run deps:vona
161
- npm run test:e2e:start:clean
159
+ npm run test:e2e
162
160
  ```
163
161
 
164
162
  ```bash
165
163
  # Exact acceptance scenario
166
- npm run test:e2e:start -- --grep ATP-START-FLOW-01
164
+ npm run test:e2e:fast cabloy-start -- --grep ATP-START-FLOW-01
167
165
 
168
166
  # Category or surface selection
169
- npm run test:e2e:start:clean -- --grep @smoke
170
- npm run test:e2e:start:clean -- --grep @admin
167
+ npm run test:e2e:fast cabloy-start -- --tag @smoke
168
+ npm run test:e2e:fast cabloy-admin -- --tag @admin --tag @cabloy-admin
171
169
  ```
172
170
 
173
- For an externally managed Start target, set `START_E2E_BASE_URL` and use matching aggregate, surface, or forwarded-tag commands. The target owner is responsible for data, cache, and artifact freshness:
171
+ For an externally managed Start target, set `E2E_BASE_URL` and use `npm run test:e2e:fast`. The target owner is responsible for data, cache, artifact freshness, and process lifecycle:
174
172
 
175
173
  ```bash
176
- START_E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:start
177
- START_E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:start:admin
178
- START_E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:start -- --grep @web
174
+ E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:fast
175
+ E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:fast cabloy-admin -- --tag @admin
176
+ E2E_BASE_URL=http://127.0.0.1:7102 npm run test:e2e:fast cabloy-start -- --tag @web
179
177
  ```
180
178
 
181
179
  Browser commands consume existing SSR and REST artifacts; they never rebuild them. Install Chromium once when needed with `npx playwright install chromium`.
@@ -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');