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.
Files changed (313) 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 +2 -2
  14. package/.claude/skills/cabloy-worktree-environment/SKILL.md +3 -3
  15. package/.claude/skills/cabloy-zova-source-reading/SKILL.md +23 -23
  16. package/.claude/skills/cabloy-zova-source-reading/references/analysis-modes.md +1 -1
  17. package/.claude/skills/cabloy-zova-source-reading/references/core-reading-paths.md +3 -3
  18. package/.github/workflows/docs-pages.yml +5 -5
  19. package/CHANGELOG.md +13 -0
  20. package/CLAUDE.md +12 -8
  21. package/README.md +2 -1
  22. package/package.json +7 -7
  23. package/{cabloy-docs → repo-docs}/.vitepress/config.mjs +1 -1
  24. package/{cabloy-docs → repo-docs}/ai/docs-skills-rules-mapping.md +4 -4
  25. package/{cabloy-docs → repo-docs}/ai/future-skill-roadmap.md +5 -5
  26. package/{cabloy-docs → repo-docs}/ai/introduction.md +3 -3
  27. package/{cabloy-docs → repo-docs}/ai/playbook-module-removal.md +2 -2
  28. package/{cabloy-docs → repo-docs}/ai/repo-guidance.md +3 -3
  29. package/{cabloy-docs → repo-docs}/ai/rules-and-config.md +1 -1
  30. package/{cabloy-docs → repo-docs}/ai/virtual-decorator-guidance.md +1 -1
  31. package/{cabloy-docs → repo-docs}/backend/introduction.md +1 -1
  32. package/{cabloy-docs → repo-docs}/backend/metrics-guide.md +2 -2
  33. package/{cabloy-docs → repo-docs}/frontend/router-tabs-introduction.md +2 -2
  34. package/{cabloy-docs → repo-docs}/frontend/scripts.md +3 -3
  35. package/{cabloy-docs → repo-docs}/fullstack/quickstart.md +10 -10
  36. package/{cabloy-docs → repo-docs}/package.json +2 -2
  37. package/{cabloy-docs → repo-docs}/reference/package-map.md +2 -2
  38. package/{cabloy-docs → repo-docs}/reference/repo-scripts.md +15 -15
  39. package/{e2e → repo-e2e}/config/playwright.config.ts +2 -2
  40. package/{e2e → repo-e2e}/scripts/e2e.ts +2 -2
  41. package/{observability → repo-observability}/README.md +1 -1
  42. package/scripts/init.ts +7 -7
  43. package/scripts/upgrade.ts +12 -34
  44. package/vona/packages-cli/cli/README.md +1 -1
  45. package/vona/packages-cli/cli/package.json +1 -1
  46. package/vona/packages-cli/cli-set-api/README.md +1 -1
  47. package/vona/packages-cli/cli-set-api/package.json +1 -1
  48. package/vona/pnpm-lock.yaml +89 -33
  49. package/vona/pnpm-workspace.yaml +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 +52 -52
  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/parallel-worktree-environment.md +0 -0
  281. /package/{cabloy-docs → repo-docs}/fullstack/payment-sandbox-configuration.md +0 -0
  282. /package/{cabloy-docs → repo-docs}/fullstack/suites-and-modules.md +0 -0
  283. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-1-first-module.md +0 -0
  284. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-2-first-crud.md +0 -0
  285. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-3-frontend-metadata-sharing.md +0 -0
  286. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-4-custom-level-renderers.md +0 -0
  287. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-5-backend-contract-sharing.md +0 -0
  288. /package/{cabloy-docs → repo-docs}/fullstack/tutorial-6-one-contract-four-uses.md +0 -0
  289. /package/{cabloy-docs → repo-docs}/fullstack/tutorials-overview.md +0 -0
  290. /package/{cabloy-docs → repo-docs}/fullstack/vona-zova-integration.md +0 -0
  291. /package/{cabloy-docs → repo-docs}/fullstack/vscode-extensions.md +0 -0
  292. /package/{cabloy-docs → repo-docs}/index.md +0 -0
  293. /package/{cabloy-docs → repo-docs}/pnpm-lock.yaml +0 -0
  294. /package/{cabloy-docs → repo-docs}/pnpm-workspace.yaml +0 -0
  295. /package/{cabloy-docs → repo-docs}/reference/backend-directory-structure.md +0 -0
  296. /package/{cabloy-docs → repo-docs}/reference/bean-scene-boilerplates.md +0 -0
  297. /package/{cabloy-docs → repo-docs}/reference/cli-reference.md +0 -0
  298. /package/{cabloy-docs → repo-docs}/reference/frontend-directory-structure.md +0 -0
  299. /package/{cabloy-docs → repo-docs}/reference/glossary.md +0 -0
  300. /package/{cabloy-docs → repo-docs}/reference/introduction.md +0 -0
  301. /package/{e2e → repo-e2e}/scripts/runE2e.ts +0 -0
  302. /package/{e2e → repo-e2e}/scripts/runE2eArgs.test.ts +0 -0
  303. /package/{e2e → repo-e2e}/scripts/runE2eArgs.ts +0 -0
  304. /package/{e2e → repo-e2e}/scripts/startE2eVona.ts +0 -0
  305. /package/{e2e → repo-e2e}/specs/a-commerce.spec.ts +0 -0
  306. /package/{e2e → repo-e2e}/specs/cabloy-basic.spec.ts +0 -0
  307. /package/{e2e → repo-e2e}/specs/home-user-account.spec.ts +0 -0
  308. /package/{e2e → repo-e2e}/specs/markdown.spec.ts +0 -0
  309. /package/{observability → repo-observability}/collector/otel-collector.yaml +0 -0
  310. /package/{observability → repo-observability}/docker-compose.metrics.yml +0 -0
  311. /package/{observability → repo-observability}/grafana/provisioning/datasources/prometheus.yaml +0 -0
  312. /package/{observability → repo-observability}/prometheus/prometheus.yaml +0 -0
  313. /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
- - `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.145",
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 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
 
@@ -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
 
@@ -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
 
@@ -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 CABLOY_DOCS_DIR = resolve(ROOT_DIR, 'cabloy-docs');
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:cabloy-docs ---
287
+ // --- Step G: init:repo-docs ---
288
288
 
289
- function initCabloyDocs(): void {
290
- const pkgPath = resolve(CABLOY_DOCS_DIR, 'package.json');
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 cabloy-docs...');
294
- pnpmInstall(CABLOY_DOCS_DIR);
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
- initCabloyDocs();
308
+ initRepoDocs();
309
309
  writeVersionMarker();
310
310
  // eslint-disable-next-line
311
311
  console.log('[init] Done!');
@@ -28,8 +28,8 @@ const OVERWRITE_DIRS: string[] = [
28
28
  // root
29
29
  'scripts',
30
30
  '.husky',
31
- 'cabloy-docs',
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;