fimo 0.7.0-experimental.2 → 0.7.0-experimental.4

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 (384) hide show
  1. package/README.md +1 -1
  2. package/assets/content-templates/hooks-template.eta +27 -73
  3. package/assets/content-templates/types-template.eta +1 -4
  4. package/assets/skills/fimo/SKILL.md +2 -2
  5. package/assets/skills/fimo/references/content.md +42 -46
  6. package/assets/skills/fimo/references/locales.md +0 -8
  7. package/assets/skills/fimo/references/setup-react-router.md +2 -2
  8. package/assets/skills/fimo/references/ui.md +1 -1
  9. package/assets/skills/fimo-cli/references/content.md +14 -17
  10. package/assets/skills/fimo-cli/references/domains.md +1 -1
  11. package/assets/skills/fimo-cli/references/locales.md +0 -6
  12. package/assets/skills/fimo-migration/SKILL.md +22 -2
  13. package/assets/skills/fimo-migration/references/content.md +8 -0
  14. package/assets/skills/fimo-migration/references/manifest.md +35 -0
  15. package/assets/skills/fimo-migration/references/qa.md +24 -2
  16. package/assets/skills/fimo-migration/references/workflow.md +12 -1
  17. package/assets/skills/fimo-migration/references/wrap.md +582 -0
  18. package/assets/skills/fimo-studio/references/custom-domains.md +1 -1
  19. package/assets/skills/fimo-studio/references/visual-editing.md +5 -3
  20. package/dist/build/vite/index.d.ts.map +1 -0
  21. package/dist/build/vite/plugins/content-sync.d.ts.map +1 -0
  22. package/dist/build/vite/plugins/content-sync.test.d.ts +2 -0
  23. package/dist/build/vite/plugins/content-sync.test.d.ts.map +1 -0
  24. package/dist/build/vite/plugins/content-sync.test.js +64 -0
  25. package/dist/build/vite/plugins/data-id.d.ts.map +1 -0
  26. package/dist/build/vite/plugins/fimo-config.d.ts.map +1 -0
  27. package/dist/build/vite/plugins/fimo-config.test.d.ts +2 -0
  28. package/dist/build/vite/plugins/fimo-config.test.d.ts.map +1 -0
  29. package/dist/build/vite/plugins/fimo-config.test.js +46 -0
  30. package/dist/build/vite/plugins/overlay.d.ts.map +1 -0
  31. package/dist/build/vite/plugins/robots.d.ts.map +1 -0
  32. package/dist/build/vite/plugins/seo.d.ts.map +1 -0
  33. package/dist/build/vite/plugins/server-config.d.ts.map +1 -0
  34. package/dist/build/vite/plugins/sitemap.d.ts.map +1 -0
  35. package/dist/build/vite/plugins/translations.d.ts +2 -8
  36. package/dist/build/vite/plugins/translations.d.ts.map +1 -0
  37. package/dist/build/vite/plugins/translations.js +3 -121
  38. package/dist/build/vite/plugins/translations.test.d.ts +2 -0
  39. package/dist/build/vite/plugins/translations.test.d.ts.map +1 -0
  40. package/dist/build/vite/plugins/translations.test.js +266 -0
  41. package/dist/cli/bundle.json +2 -3
  42. package/dist/cli/index.js +117939 -1186
  43. package/dist/runtime/app/FimoProviders.d.ts +1 -11
  44. package/dist/runtime/app/FimoProviders.d.ts.map +1 -0
  45. package/dist/runtime/app/FimoProviders.js +2 -23
  46. package/dist/runtime/app/FimoScripts.d.ts.map +1 -0
  47. package/dist/runtime/app/index.d.ts.map +1 -0
  48. package/dist/runtime/app/prefetch.d.ts.map +1 -0
  49. package/dist/runtime/astro/index.d.ts +2 -0
  50. package/dist/runtime/astro/index.d.ts.map +1 -0
  51. package/dist/runtime/astro/index.js +3 -0
  52. package/dist/runtime/astro/server.d.ts +3 -0
  53. package/dist/runtime/astro/server.d.ts.map +1 -0
  54. package/dist/runtime/astro/server.js +6 -0
  55. package/dist/runtime/content/DataSourcesProvider.d.ts.map +1 -0
  56. package/dist/runtime/content/RefreshContentProvider.d.ts.map +1 -0
  57. package/dist/runtime/content/RefreshContentProvider.test.d.ts +2 -0
  58. package/dist/runtime/content/RefreshContentProvider.test.d.ts.map +1 -0
  59. package/dist/runtime/content/RefreshContentProvider.test.js +33 -0
  60. package/dist/runtime/content/parseCollectionResponse.d.ts.map +1 -0
  61. package/dist/runtime/content/parseCollectionResponse.test.d.ts +2 -0
  62. package/dist/runtime/content/parseCollectionResponse.test.d.ts.map +1 -0
  63. package/dist/runtime/content/parseCollectionResponse.test.js +20 -0
  64. package/dist/runtime/content/utils/retrieve-data-sources.d.ts +0 -1
  65. package/dist/runtime/content/utils/retrieve-data-sources.d.ts.map +1 -0
  66. package/dist/runtime/content/utils/retrieve-data-sources.js +4 -27
  67. package/dist/runtime/core/AppErrorBoundary.d.ts.map +1 -0
  68. package/dist/runtime/core/ViteLifecycles.d.ts.map +1 -0
  69. package/dist/runtime/i18n/FimoLocaleContext.d.ts.map +1 -0
  70. package/dist/runtime/i18n/FimoLocaleContext.js +1 -0
  71. package/dist/runtime/i18n/locale.d.ts.map +1 -0
  72. package/dist/runtime/i18n/locale.test.d.ts +2 -0
  73. package/dist/runtime/i18n/locale.test.d.ts.map +1 -0
  74. package/dist/runtime/i18n/locale.test.js +58 -0
  75. package/dist/runtime/iframe/ConsoleErrorProvider.d.ts.map +1 -0
  76. package/dist/runtime/iframe/ScreenshotProvider.d.ts.map +1 -0
  77. package/dist/runtime/iframe/runtime/overlay-hmr.d.ts.map +1 -0
  78. package/dist/runtime/iframe/runtime/overlay-hmr.js +0 -3
  79. package/dist/runtime/iframe/runtime/overlay-runtime.d.ts.map +1 -0
  80. package/dist/runtime/index.d.ts +0 -3
  81. package/dist/runtime/index.d.ts.map +1 -0
  82. package/dist/runtime/index.js +0 -2
  83. package/dist/runtime/next/FimoNextProviders.d.ts +24 -0
  84. package/dist/runtime/next/FimoNextProviders.d.ts.map +1 -0
  85. package/dist/runtime/next/FimoNextProviders.js +20 -0
  86. package/dist/runtime/next/FimoNextScripts.d.ts +10 -0
  87. package/dist/runtime/next/FimoNextScripts.d.ts.map +1 -0
  88. package/dist/runtime/next/FimoNextScripts.js +19 -0
  89. package/dist/runtime/next/index.d.ts +14 -0
  90. package/dist/runtime/next/index.d.ts.map +1 -0
  91. package/dist/runtime/next/index.js +14 -0
  92. package/dist/runtime/next/server.d.ts +2 -0
  93. package/dist/runtime/next/server.d.ts.map +1 -0
  94. package/dist/runtime/next/server.js +4 -0
  95. package/dist/runtime/nuxt/composables.d.ts +9 -0
  96. package/dist/runtime/nuxt/composables.d.ts.map +1 -0
  97. package/dist/runtime/nuxt/composables.js +57 -0
  98. package/dist/runtime/nuxt/index.d.ts +3 -0
  99. package/dist/runtime/nuxt/index.d.ts.map +1 -0
  100. package/dist/runtime/nuxt/index.js +6 -0
  101. package/dist/runtime/nuxt/server.d.ts +3 -0
  102. package/dist/runtime/nuxt/server.d.ts.map +1 -0
  103. package/dist/runtime/nuxt/server.js +6 -0
  104. package/dist/runtime/paths/get-fimo-paths.d.ts.map +1 -0
  105. package/dist/runtime/paths/get-fimo-paths.js +5 -15
  106. package/dist/runtime/paths/index.d.ts.map +1 -0
  107. package/dist/runtime/paths/types.d.ts.map +1 -0
  108. package/dist/runtime/primitives/components/Boolean.d.ts.map +1 -0
  109. package/dist/runtime/primitives/components/Date.d.ts.map +1 -0
  110. package/dist/runtime/primitives/components/Image.d.ts.map +1 -0
  111. package/dist/runtime/primitives/components/RichText.d.ts.map +1 -0
  112. package/dist/runtime/primitives/components/StaticImage.d.ts.map +1 -0
  113. package/dist/runtime/primitives/components/Text.d.ts.map +1 -0
  114. package/dist/runtime/primitives/components/Video.d.ts.map +1 -0
  115. package/dist/runtime/primitives/components/index.d.ts.map +1 -0
  116. package/dist/runtime/primitives/index.d.ts.map +1 -0
  117. package/dist/runtime/primitives/labels-hook.d.ts +33 -0
  118. package/dist/runtime/primitives/labels-hook.d.ts.map +1 -0
  119. package/dist/runtime/primitives/labels-hook.js +41 -0
  120. package/dist/runtime/primitives/labels-store.d.ts +12 -0
  121. package/dist/runtime/primitives/labels-store.d.ts.map +1 -0
  122. package/dist/runtime/primitives/labels-store.js +60 -0
  123. package/dist/runtime/primitives/labels-store.test.d.ts +2 -0
  124. package/dist/runtime/primitives/labels-store.test.d.ts.map +1 -0
  125. package/dist/runtime/primitives/labels-store.test.js +66 -0
  126. package/dist/runtime/primitives/lib/image-optimization.d.ts.map +1 -0
  127. package/dist/runtime/primitives/lib/index.d.ts.map +1 -0
  128. package/dist/runtime/primitives/lib/primitives.d.ts +2 -2
  129. package/dist/runtime/primitives/lib/primitives.d.ts.map +1 -0
  130. package/dist/runtime/primitives/lib/query.d.ts +3 -5
  131. package/dist/runtime/primitives/lib/query.d.ts.map +1 -0
  132. package/dist/runtime/primitives/lib/template.d.ts.map +1 -0
  133. package/dist/runtime/primitives/lib/useFimoLiveValue.d.ts +5 -3
  134. package/dist/runtime/primitives/lib/useFimoLiveValue.d.ts.map +1 -0
  135. package/dist/runtime/primitives/lib/useFimoLiveValue.js +11 -4
  136. package/dist/runtime/primitives/public-surface.test.d.ts +2 -0
  137. package/dist/runtime/primitives/public-surface.test.d.ts.map +1 -0
  138. package/dist/runtime/primitives/public-surface.test.js +45 -0
  139. package/dist/runtime/primitives/translations.d.ts +1 -27
  140. package/dist/runtime/primitives/translations.d.ts.map +1 -0
  141. package/dist/runtime/primitives/translations.js +7 -85
  142. package/dist/runtime/react/FimoSpaProviders.d.ts +36 -0
  143. package/dist/runtime/react/FimoSpaProviders.d.ts.map +1 -0
  144. package/dist/runtime/react/FimoSpaProviders.js +63 -0
  145. package/dist/runtime/react/index.d.ts +33 -0
  146. package/dist/runtime/react/index.d.ts.map +1 -0
  147. package/dist/runtime/react/index.js +39 -0
  148. package/dist/runtime/react-router/index.d.ts.map +1 -0
  149. package/dist/runtime/react-router/navigation-utils.d.ts.map +1 -0
  150. package/dist/runtime/react-router/navigation.d.ts.map +1 -0
  151. package/dist/runtime/react-router/navigation.test.d.ts +2 -0
  152. package/dist/runtime/react-router/navigation.test.d.ts.map +1 -0
  153. package/dist/runtime/react-router/navigation.test.js +35 -0
  154. package/dist/runtime/react-router/routes.d.ts.map +1 -0
  155. package/dist/runtime/react-router/routes.test.d.ts +2 -0
  156. package/dist/runtime/react-router/routes.test.d.ts.map +1 -0
  157. package/dist/runtime/react-router/routes.test.js +67 -0
  158. package/dist/runtime/remix/FimoRemixProviders.d.ts +16 -0
  159. package/dist/runtime/remix/FimoRemixProviders.d.ts.map +1 -0
  160. package/dist/runtime/remix/FimoRemixProviders.js +12 -0
  161. package/dist/runtime/remix/FimoRemixScripts.d.ts +10 -0
  162. package/dist/runtime/remix/FimoRemixScripts.d.ts.map +1 -0
  163. package/dist/runtime/remix/FimoRemixScripts.js +19 -0
  164. package/dist/runtime/remix/index.d.ts +12 -0
  165. package/dist/runtime/remix/index.d.ts.map +1 -0
  166. package/dist/runtime/remix/index.js +11 -0
  167. package/dist/runtime/remix/server.d.ts +2 -0
  168. package/dist/runtime/remix/server.d.ts.map +1 -0
  169. package/dist/runtime/remix/server.js +2 -0
  170. package/dist/runtime/routing/AppResetScrollOnNavigate.d.ts.map +1 -0
  171. package/dist/runtime/routing/AppRoutesProvider.d.ts.map +1 -0
  172. package/dist/runtime/seo/buildSeoForPath.d.ts +3 -1
  173. package/dist/runtime/seo/buildSeoForPath.d.ts.map +1 -0
  174. package/dist/runtime/seo/buildSeoForPath.js +1 -4
  175. package/dist/runtime/seo/htmlProps.d.ts.map +1 -0
  176. package/dist/runtime/seo/index.d.ts.map +1 -0
  177. package/dist/runtime/seo/resolver.d.ts.map +1 -0
  178. package/dist/runtime/shared/display-routes.d.ts +14 -0
  179. package/dist/runtime/shared/display-routes.d.ts.map +1 -0
  180. package/dist/runtime/shared/display-routes.js +25 -0
  181. package/dist/runtime/shared/fimo-config.server.d.ts.map +1 -0
  182. package/dist/runtime/shared/fimo-config.server.js +1 -0
  183. package/dist/runtime/shared/fimo-config.types.d.ts +2 -0
  184. package/dist/runtime/shared/fimo-config.types.d.ts.map +1 -0
  185. package/dist/runtime/shared/i18n-messages.d.ts +29 -0
  186. package/dist/runtime/shared/i18n-messages.d.ts.map +1 -0
  187. package/dist/runtime/shared/i18n-messages.js +79 -0
  188. package/dist/runtime/shared/i18n-messages.test.d.ts +2 -0
  189. package/dist/runtime/shared/i18n-messages.test.d.ts.map +1 -0
  190. package/dist/runtime/shared/i18n-messages.test.js +39 -0
  191. package/dist/runtime/shared/labels-fetch.pure.d.ts +17 -0
  192. package/dist/runtime/shared/labels-fetch.pure.d.ts.map +1 -0
  193. package/dist/runtime/shared/labels-fetch.pure.js +71 -0
  194. package/dist/runtime/shared/labels-fetch.server.d.ts +7 -0
  195. package/dist/runtime/shared/labels-fetch.server.d.ts.map +1 -0
  196. package/dist/runtime/shared/labels-fetch.server.js +97 -0
  197. package/dist/runtime/shared/labels-t.pure.d.ts +2 -0
  198. package/dist/runtime/shared/labels-t.pure.d.ts.map +1 -0
  199. package/dist/runtime/shared/labels-t.pure.js +10 -0
  200. package/dist/runtime/svelte/index.d.ts +3 -0
  201. package/dist/runtime/svelte/index.d.ts.map +1 -0
  202. package/dist/runtime/svelte/index.js +7 -0
  203. package/dist/runtime/svelte/server.d.ts +3 -0
  204. package/dist/runtime/svelte/server.d.ts.map +1 -0
  205. package/dist/runtime/svelte/server.js +6 -0
  206. package/dist/runtime/t/OptionalTracking.d.ts.map +1 -0
  207. package/dist/runtime/t/OptionalTracking.test.d.ts +2 -0
  208. package/dist/runtime/t/OptionalTracking.test.d.ts.map +1 -0
  209. package/dist/runtime/t/OptionalTracking.test.js +11 -0
  210. package/dist/runtime/t/Pageview.d.ts.map +1 -0
  211. package/dist/runtime/templates.d.ts.map +1 -0
  212. package/dist/runtime/vue/index.d.ts +3 -0
  213. package/dist/runtime/vue/index.d.ts.map +1 -0
  214. package/dist/runtime/vue/index.js +5 -0
  215. package/dist/runtime/vue/server.d.ts +3 -0
  216. package/dist/runtime/vue/server.d.ts.map +1 -0
  217. package/dist/runtime/vue/server.js +6 -0
  218. package/dist/runtime/wrapped/FimoFileLink.d.ts +17 -0
  219. package/dist/runtime/wrapped/FimoFileLink.d.ts.map +1 -0
  220. package/dist/runtime/wrapped/FimoFileLink.js +19 -0
  221. package/dist/runtime/wrapped/FimoMediaImage.d.ts +14 -0
  222. package/dist/runtime/wrapped/FimoMediaImage.d.ts.map +1 -0
  223. package/dist/runtime/wrapped/FimoMediaImage.js +20 -0
  224. package/dist/runtime/wrapped/FimoMediaVideo.d.ts +14 -0
  225. package/dist/runtime/wrapped/FimoMediaVideo.d.ts.map +1 -0
  226. package/dist/runtime/wrapped/FimoMediaVideo.js +20 -0
  227. package/dist/runtime/wrapped/FimoRichTextBlock.d.ts +23 -0
  228. package/dist/runtime/wrapped/FimoRichTextBlock.d.ts.map +1 -0
  229. package/dist/runtime/wrapped/FimoRichTextBlock.js +22 -0
  230. package/dist/runtime/wrapped/FimoText.d.ts +22 -0
  231. package/dist/runtime/wrapped/FimoText.d.ts.map +1 -0
  232. package/dist/runtime/wrapped/FimoText.js +20 -0
  233. package/dist/runtime/wrapped/WrappedContentContext.d.ts +28 -0
  234. package/dist/runtime/wrapped/WrappedContentContext.d.ts.map +1 -0
  235. package/dist/runtime/wrapped/WrappedContentContext.js +30 -0
  236. package/dist/runtime/wrapped/WrappedProviders.d.ts +33 -0
  237. package/dist/runtime/wrapped/WrappedProviders.d.ts.map +1 -0
  238. package/dist/runtime/wrapped/WrappedProviders.js +101 -0
  239. package/dist/runtime/wrapped/dom.d.ts +4 -0
  240. package/dist/runtime/wrapped/dom.d.ts.map +1 -0
  241. package/dist/runtime/wrapped/dom.js +23 -0
  242. package/dist/runtime/wrapped/dom.test.d.ts +2 -0
  243. package/dist/runtime/wrapped/dom.test.d.ts.map +1 -0
  244. package/dist/runtime/wrapped/dom.test.js +16 -0
  245. package/dist/runtime/wrapped/server.d.ts +77 -0
  246. package/dist/runtime/wrapped/server.d.ts.map +1 -0
  247. package/dist/runtime/wrapped/server.js +237 -0
  248. package/dist/runtime/wrapped/server.test.d.ts +2 -0
  249. package/dist/runtime/wrapped/server.test.d.ts.map +1 -0
  250. package/dist/runtime/wrapped/server.test.js +91 -0
  251. package/dist/scripts/apply-wrap-templates.d.ts +61 -0
  252. package/dist/scripts/apply-wrap-templates.js +132 -0
  253. package/dist/scripts/apply-wrap-templates.test.js +199 -0
  254. package/dist/scripts/apply-wrap.d.ts +46 -0
  255. package/dist/scripts/apply-wrap.js +278 -0
  256. package/dist/scripts/apply-wrap.test.d.ts +1 -0
  257. package/dist/scripts/apply-wrap.test.js +226 -0
  258. package/dist/scripts/cms/discover.d.ts +2 -0
  259. package/dist/scripts/cms/discover.js +17 -0
  260. package/dist/scripts/cms/example-content.d.ts +32 -0
  261. package/dist/scripts/cms/example-content.js +87 -0
  262. package/dist/scripts/cms/example-content.test.d.ts +1 -0
  263. package/dist/scripts/cms/example-content.test.js +57 -0
  264. package/dist/scripts/cms/strapi/detect.d.ts +2 -0
  265. package/dist/scripts/cms/strapi/detect.js +185 -0
  266. package/dist/scripts/cms/strapi/detect.test.d.ts +1 -0
  267. package/dist/scripts/cms/strapi/detect.test.js +56 -0
  268. package/dist/scripts/cms/strapi/index.d.ts +3 -0
  269. package/dist/scripts/cms/strapi/index.js +15 -0
  270. package/dist/scripts/cms/strapi/list-source.d.ts +17 -0
  271. package/dist/scripts/cms/strapi/list-source.js +90 -0
  272. package/dist/scripts/cms/strapi/list-source.test.d.ts +1 -0
  273. package/dist/scripts/cms/strapi/list-source.test.js +33 -0
  274. package/dist/scripts/cms/strapi/schema-map.d.ts +9 -0
  275. package/dist/scripts/cms/strapi/schema-map.js +138 -0
  276. package/dist/scripts/cms/strapi/schema-map.test.d.ts +1 -0
  277. package/dist/scripts/cms/strapi/schema-map.test.js +87 -0
  278. package/dist/scripts/cms/types.d.ts +76 -0
  279. package/dist/scripts/cms/types.js +11 -0
  280. package/dist/scripts/detect-framework.d.ts +39 -0
  281. package/dist/scripts/detect-framework.js +133 -0
  282. package/dist/scripts/detect-framework.test.d.ts +1 -0
  283. package/dist/scripts/detect-framework.test.js +122 -0
  284. package/dist/scripts/draft-rows.d.ts +19 -0
  285. package/dist/scripts/draft-rows.js +135 -0
  286. package/dist/scripts/draft-rows.test.d.ts +1 -0
  287. package/dist/scripts/draft-rows.test.js +113 -0
  288. package/dist/scripts/draft-schemas.d.ts +27 -0
  289. package/dist/scripts/draft-schemas.js +188 -0
  290. package/dist/scripts/draft-schemas.test.d.ts +1 -0
  291. package/dist/scripts/draft-schemas.test.js +152 -0
  292. package/dist/scripts/frameworks/astro/routes.d.ts +3 -0
  293. package/dist/scripts/frameworks/astro/routes.js +55 -0
  294. package/dist/scripts/frameworks/astro/template-style.d.ts +7 -0
  295. package/dist/scripts/frameworks/astro/template-style.js +19 -0
  296. package/dist/scripts/frameworks/discover.d.ts +70 -0
  297. package/dist/scripts/frameworks/discover.js +171 -0
  298. package/dist/scripts/frameworks/next/rewire.d.ts +30 -0
  299. package/dist/scripts/frameworks/next/rewire.js +258 -0
  300. package/dist/scripts/frameworks/next/rewire.test.d.ts +1 -0
  301. package/dist/scripts/frameworks/next/rewire.test.js +134 -0
  302. package/dist/scripts/frameworks/next/routes.d.ts +17 -0
  303. package/dist/scripts/frameworks/next/routes.js +134 -0
  304. package/dist/scripts/frameworks/next/routes.test.d.ts +1 -0
  305. package/dist/scripts/frameworks/next/routes.test.js +64 -0
  306. package/dist/scripts/frameworks/next/wiring.d.ts +26 -0
  307. package/dist/scripts/frameworks/next/wiring.js +163 -0
  308. package/dist/scripts/frameworks/next/wiring.test.d.ts +1 -0
  309. package/dist/scripts/frameworks/next/wiring.test.js +146 -0
  310. package/dist/scripts/frameworks/nuxt/routes.d.ts +3 -0
  311. package/dist/scripts/frameworks/nuxt/routes.js +54 -0
  312. package/dist/scripts/frameworks/nuxt/template-style.d.ts +9 -0
  313. package/dist/scripts/frameworks/nuxt/template-style.js +27 -0
  314. package/dist/scripts/frameworks/remix/routes.d.ts +3 -0
  315. package/dist/scripts/frameworks/remix/routes.js +50 -0
  316. package/dist/scripts/frameworks/sveltekit/routes.d.ts +3 -0
  317. package/dist/scripts/frameworks/sveltekit/routes.js +50 -0
  318. package/dist/scripts/frameworks/sveltekit/template-style.d.ts +9 -0
  319. package/dist/scripts/frameworks/sveltekit/template-style.js +54 -0
  320. package/dist/scripts/frameworks/vite/routes.d.ts +15 -0
  321. package/dist/scripts/frameworks/vite/routes.js +93 -0
  322. package/dist/scripts/frameworks/vite/routes.test.d.ts +1 -0
  323. package/dist/scripts/frameworks/vite/routes.test.js +73 -0
  324. package/dist/scripts/frameworks/vite/wiring.d.ts +10 -0
  325. package/dist/scripts/frameworks/vite/wiring.js +99 -0
  326. package/dist/scripts/frameworks/vite/wiring.test.d.ts +1 -0
  327. package/dist/scripts/frameworks/vite/wiring.test.js +88 -0
  328. package/dist/scripts/generated-types.test.d.ts +1 -0
  329. package/dist/scripts/generated-types.test.js +212 -0
  330. package/dist/scripts/lib/validation-report.d.ts +1 -0
  331. package/dist/scripts/lib/validation-report.js +3 -0
  332. package/dist/scripts/lint-translation-keys.test.d.ts +1 -0
  333. package/dist/scripts/lint-translation-keys.test.js +16 -0
  334. package/dist/scripts/render-parity/capture.d.ts +56 -0
  335. package/dist/scripts/render-parity/capture.js +366 -0
  336. package/dist/scripts/render-parity/capture.test.d.ts +1 -0
  337. package/dist/scripts/render-parity/capture.test.js +306 -0
  338. package/dist/scripts/render-parity/compare.d.ts +59 -0
  339. package/dist/scripts/render-parity/compare.js +0 -0
  340. package/dist/scripts/render-parity/compare.test.d.ts +1 -0
  341. package/dist/scripts/render-parity/compare.test.js +98 -0
  342. package/dist/scripts/render-parity/normalize-html.d.ts +13 -0
  343. package/dist/scripts/render-parity/normalize-html.js +223 -0
  344. package/dist/scripts/render-parity/normalize-html.test.d.ts +1 -0
  345. package/dist/scripts/render-parity/normalize-html.test.js +58 -0
  346. package/dist/scripts/render-parity/types.d.ts +41 -0
  347. package/dist/scripts/render-parity/types.js +1 -0
  348. package/dist/scripts/resolve-routes.js +1 -1
  349. package/dist/scripts/scan-wrappable.d.ts +196 -0
  350. package/dist/scripts/scan-wrappable.js +1221 -0
  351. package/dist/scripts/scan-wrappable.test.d.ts +1 -0
  352. package/dist/scripts/scan-wrappable.test.js +502 -0
  353. package/dist/scripts/sync-schemas.test.d.ts +1 -0
  354. package/dist/scripts/sync-schemas.test.js +124 -0
  355. package/dist/scripts/validate-route-metadata.js +11 -0
  356. package/dist/scripts/validate-route-metadata.test.d.ts +1 -0
  357. package/dist/scripts/validate-route-metadata.test.js +116 -0
  358. package/dist/scripts/validate-schemas.test.d.ts +1 -0
  359. package/dist/scripts/validate-schemas.test.js +263 -0
  360. package/package.json +85 -20
  361. package/scripts/add-ext.mjs +47 -0
  362. package/scripts/bump-version.mjs +58 -0
  363. package/scripts/bundle-cli.mjs +123 -0
  364. package/scripts/install-cli.mjs +36 -0
  365. package/scripts/lib/channels.mjs +70 -0
  366. package/scripts/lib/dev-release-state.mjs +44 -0
  367. package/scripts/lib/dev-release-state.test.ts +36 -0
  368. package/scripts/lib/postinstall-onboarding.test.ts +82 -0
  369. package/scripts/lib/release-core.mjs +225 -0
  370. package/scripts/lib/release-core.test.ts +147 -0
  371. package/scripts/migration-qa-gate.test.ts +155 -0
  372. package/scripts/publish-npm.mjs +180 -0
  373. package/templates/react-router/package.json +7 -10
  374. package/templates/react-router/src/pages/Index.tsx +1 -1
  375. package/dist/runtime/content/client/createContentClient.d.ts +0 -5
  376. package/dist/runtime/content/client/createContentClient.js +0 -300
  377. package/dist/runtime/content/client/createSingletonClient.d.ts +0 -5
  378. package/dist/runtime/content/client/createSingletonClient.js +0 -108
  379. package/dist/runtime/content/client/internal.d.ts +0 -44
  380. package/dist/runtime/content/client/internal.js +0 -236
  381. package/dist/runtime/content/client/types.d.ts +0 -136
  382. package/dist/runtime/content/client/useQueryLocale.d.ts +0 -2
  383. package/dist/runtime/content/client/useQueryLocale.js +0 -6
  384. /package/dist/{runtime/content/client/types.js → scripts/apply-wrap-templates.test.d.ts} +0 -0
@@ -20,9 +20,6 @@ Steps 1, 3, and 5 reference the project skill (`fimo`) for shape and React API.
20
20
 
21
21
  ```bash
22
22
  fimo schemas push [TypeName] # push JSON to API (create or update). Omit TypeName to push all.
23
- # Pushing all sends every schema as ONE atomic batch, so types that
24
- # reference each other (even cycles) can be added in a single push.
25
- # Files not present are never deleted — use `schemas delete` for that.
26
23
  fimo schemas list # list all registered schemas
27
24
  fimo schemas get <TypeName> # get a single schema
28
25
  fimo schemas delete <TypeName> # delete a schema
@@ -32,7 +29,7 @@ The command is `fimo schemas` (plural). There is no singular `fimo schema` alias
32
29
 
33
30
  All commands accept `-C, --cwd <dir>` to point at a different project directory.
34
31
 
35
- Schema transitions are automatic. Adding fields and changing labels preserve content. Removing a field removes only that field's values. One-to-many reference changes wrap existing references in arrays. Field type changes, scalar/reference changes, reference target changes, and many-to-one changes clear only the changed field. Collection-to-singleton removes that type's entries and cleans inbound references; singleton-to-collection preserves its entry. There are no reset or data-loss flags: changing the schema is the migration request. Run `fimo validate` after pushing to verify the regenerated client and whole project.
32
+ Schema transitions are automatic. Adding fields and changing labels preserve content. Removing a field removes only that field's stored values. One-to-many reference changes wrap existing references in arrays. Field type changes, scalar/reference changes, reference target changes, and many-to-one changes clear only the changed field. Collection-to-singleton removes that type's entries and cleans inbound references; singleton-to-collection preserves its row. There are no reset or data-loss flags: changing the schema is the migration request. Run `fimo validate` after pushing to verify the regenerated client and whole project.
36
33
 
37
34
  ## Entries CLI commands
38
35
 
@@ -43,9 +40,9 @@ fimo entries create <TypeName> --body '<json>'
43
40
  fimo entries create <TypeName> --locale es --document-id <documentId> --body '<json>'
44
41
  fimo entries list <TypeName> [--limit N] [--offset N] [--search Q] [--where JSON] [--sort F] [--fields FIELDS] [--populate FIELDS]
45
42
  fimo entries list <TypeName> --locale es
46
- fimo entries get <TypeName> <id> [--locale es]
47
- fimo entries update <TypeName> <id> [--locale es] --body '<json>'
48
- fimo entries delete <TypeName> <id> [--locale es]
43
+ fimo entries get <TypeName> <id>
44
+ fimo entries update <TypeName> <id> --locale es --body '<json>'
45
+ fimo entries delete <TypeName> <id>
49
46
  ```
50
47
 
51
48
  `--body` is a **required** option on `create` and `update`. Its JSON shape (where `slug` goes, how `media` fields look, Tiptap richtext format) lives in `fimo/references/content.md`. **Always read that first before constructing an entry payload — slug must be inside `data`, media has a specific shape, richtext must be Tiptap JSONContent.**
@@ -65,12 +62,12 @@ fimo entries list BlogPost --fields slug,title,author --populate author
65
62
  Use the canonical read query flags: `--search`, `--sort`, `--where`, `--limit`, `--offset`, `--fields`, and `--populate`.
66
63
  `--where` is a JSON object keyed by schema field name. Simple values mean equality and stay typed inside the JSON (`{"featured":true}`, `{"category":"react"}`, `{"rank":{"$gte":3}}`); operator objects support `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$in`, `$nin`, `$contains`, `$startsWith`, and `$null`, subject to the field type. Public Fimo-owned metadata lives under `__fimo`; currently `__fimo.contentType` is filterable.
67
64
 
68
- Reference filters take the target `id` string (`{"author":"750e..."}`). On a to-many field, `$eq` and `$contains` mean membership, `$in` means any listed target is present, `$ne` and `$nin` mean none are present, and `$null: true` means empty or missing. Reference fields cannot be sorted; use `--sort field` / `--sort -field` on scalar fields.
69
- `--fields` is a comma-separated projection for list payloads. The API always keeps `id`, `entryId`, `documentId`, and `locale`; pass only the other fields your view needs, such as `slug,title,excerpt,coverImage`.
65
+ Reference filters take the target `documentId` string even though stored values are objects (`{"author":"750e..."}`). On a to-many field, `$eq` and `$contains` mean membership, `$in` means any listed document is present, `$ne` and `$nin` mean none are present, and `$null: true` means empty or missing. Reference fields cannot be sorted; use `--sort field` / `--sort -field` on scalar fields.
66
+ `--fields` is a comma-separated projection for list payloads. The API always keeps `id`; pass only the fields your view needs, such as `slug,title,excerpt,coverImage`.
70
67
 
71
- `--populate` is a comma-separated list of reference fields to embed. Without it, reference fields return reference objects like `{ "id": "..." }`; with `--populate author,contributors`, those fields return the target entry objects for the requested locale. Only reference fields can be populated (scalar fields 400), and populate never selects which target fields come back. A populated target missing in the requested locale resolves to null unless you pass `localeFallbacks=true`, which falls back to the best available locale variant, marked by its `locale` field. Limits: 200 references per to-many write, 500 distinct populated documents per field per request (400 past either).
68
+ `--populate` is a comma-separated list of reference fields to embed. Without it, reference fields return reference objects like `{ "documentId": "..." }`; with `--populate author,contributors`, those fields return the target entry objects for the requested locale. Only reference fields can be populated (scalar fields 400), and populate never selects which target fields come back. A populated target missing in the requested locale resolves to null unless you pass `localeFallbacks=true`, which falls back to the best available locale variant, marked by its `locale` field. Limits: 200 references per to-many write, 500 distinct populated documents per field per request (400 past either).
72
69
 
73
- Polymorphic references declare `targets: ["Post", "Product"]` instead of `target` (never both) and their values carry both parts: `{ "contentType": "Post", "id": "..." }`. Populate returns mixed full entries, and generated hooks expose `$type` on each populated value to branch on. `--where` on polymorphic fields is not supported yet and fails with a clear error.
70
+ Polymorphic references declare `targets: ["Post", "Product"]` instead of `target` (never both) and their values carry both parts: `{ "contentType": "Post", "documentId": "..." }`. Populate returns mixed full entries, and generated hooks expose `$type` on each populated value to branch on. `--where` on polymorphic fields is not supported yet and fails with a clear error.
74
71
 
75
72
  In generated React code, the equivalent is `populate: ['author', 'contributors'] as const` in the schema hook/query params. Let hooks infer the result when possible; if a named TypeScript shape is needed, use the generated `BlogPostResult<TFields, TPopulate>` type documented in `fimo/references/content.md`. Writes use the separate generated `BlogPostInput` type.
76
73
 
@@ -85,28 +82,28 @@ For reference schema JSON and entry value shape, load `fimo/references/content.m
85
82
  }
86
83
  ```
87
84
 
88
- Entry bodies use reference objects with target `id` values:
85
+ Entry bodies store reference objects with target `documentId` values:
89
86
 
90
87
  ```bash
91
- fimo entries create BlogPost --body '{"data":{"slug":"hello","title":"Hello","author":{"id":"750e8400-e29b-41d4-a716-446655440000"},"contributors":[]}}'
88
+ fimo entries create BlogPost --body '{"data":{"slug":"hello","title":"Hello","author":{"documentId":"750e8400-e29b-41d4-a716-446655440000"},"contributors":[]}}'
92
89
  ```
93
90
 
94
- Do not add `localized` or field-level `i18n` to reference fields. The reference value belongs to the entry variant containing it.
91
+ Do not add `localized` or field-level `i18n` to reference fields. The reference value belongs to the entry variant that stores it.
95
92
 
96
93
  ## Localized and shared content
97
94
 
98
- Schemas are localized by default. Omit `--locale` to use the project default. Pass it explicitly when reading, updating, or deleting a non-default variant: public identity is stable `id` plus `locale`.
95
+ Schemas are localized by default. Omit `--locale` for default-locale entries. Pass `--locale <locale>` when creating, listing, reading, or updating a specific non-default locale.
99
96
 
100
97
  When creating a localized variant of an existing entry, pass the source entry's `documentId` with `--document-id`. Keep projects single-locale unless the user asks for multilingual or localized output; when multiple locales are configured, create and update every locale explicitly.
101
98
 
102
- For content shared across locales, define `"i18n": { "enabled": false }` at the schema root and create each entry once. Do not pass `--document-id` to manufacture locale variants. Raw API and CLI responses omit `locale`; generated collection models add the effective active/default locale without creating per-locale variants. No other `i18n` options and no field-level localization settings are supported.
99
+ For content shared across locales, define `"i18n": { "enabled": false }` at the schema root and create each entry once. Do not pass `--document-id` to manufacture locale variants. Shared entry responses omit `locale`; a read locale is only used to resolve populated references that target localized schemas. No other `i18n` options and no field-level localization settings are supported.
103
100
 
104
101
  Use `"isSingleton": true` for a type with exactly one logical document. Generated singleton clients expose `get`/`update` and their React Query hooks, not collection create/remove APIs.
105
102
 
106
103
  ## "Add a blog" recipe
107
104
 
108
105
  1. Load `fimo/references/content.md` for the JSON shape and field types.
109
- 2. Write `src/schemas/BlogPost.json` with fields `title`, `body` (richtext), `coverImage` (media), etc. Do NOT declare a `slug` field — `slug` (and `id`, `entryId`, `documentId`, `locale`, `createdAt`, `updatedAt`, `__fimo`) is reserved entry metadata and will be rejected; every entry gets a `slug` for free.
106
+ 2. Write `src/schemas/BlogPost.json` with fields `title`, `body` (richtext), `coverImage` (media), etc. Do NOT declare a `slug` field — `slug` (and `id`, `documentId`, `locale`, `createdAt`, `updatedAt`, `__fimo`) is reserved entry metadata and will be rejected; every entry gets a `slug` for free.
110
107
  3. Run `fimo schemas push BlogPost`.
111
108
  4. Generate cover images: `fimo generate pruna/p-image --prompt "..."` (per-model flags come from `fimo models show <model>`; see `media.md`).
112
109
  5. Seed entries: `fimo entries create BlogPost --body '{"data": {"slug": "first-post", "title": "...", "coverImage": {...}}}'`.
@@ -132,7 +132,7 @@ Propagation: typically 15–30 minutes, up to 48 hours rarely.
132
132
 
133
133
  ## Web app equivalent
134
134
 
135
- For users on the dashboard, the same workflow lives at **Settings → Domains** (custom domain) and **Organization → Domains** (buy/owned). See `fimo-studio/references/custom-domains.md` and the [public docs](https://fimo.ai/docs/publish/custom-domains).
135
+ For users on the dashboard, the same workflow lives at **Settings → Domains** (custom domain) and **Organization → Domains** (buy/owned). See `fimo-studio/references/custom-domains.md` and the [public docs](https://docs.fimo.ai/publish/custom-domains).
136
136
 
137
137
  ## Anti-patterns
138
138
 
@@ -67,12 +67,6 @@ import { fimoRoutes } from 'fimo/react-router/routes';
67
67
 
68
68
  For custom frameworks, the project may implement its own URL scheme, but it still needs to pass the active locale into Fimo and keep canonical route metadata if it wants Fimo Studio route selection to work.
69
69
 
70
- ## Migrate An Existing Locale System
71
-
72
- Inspect the existing locale provider, route table, switcher, redirects, and public URLs before editing configuration. Preserve working URL behavior during the migration.
73
-
74
- For React Router projects, prefer one contract based on `fimo-config.json`, `fimoRoutes()`, and `FimoLink`; migrate existing wrappers into the framework root instead of layering a second locale context. If that would change established URLs, keep the custom router temporarily, pass its active locale to `FimoProviders`, and ask the user to choose canonical URLs and redirects before rewriting routes.
75
-
76
70
  ## Labels And Content
77
71
 
78
72
  Labels and content are separate translated surfaces:
@@ -17,7 +17,10 @@ exports, source repositories, CMS exports, media folders, or any hybrid of those
17
17
  It owns intake, source inventory, URL crawl bootstrapping, ledger normalization,
18
18
  imports, and QA so any LLM can run the work without silently dropping content.
19
19
 
20
- > Run every `fimo` command as `npx fimo@latest <command>` — always the latest CLI, no global install.
20
+ > Run every `fimo` command as `npx fimo <command>` when the project declares a
21
+ > `fimo` dependency (adopted/wrapped projects pin an exact version tied to their
22
+ > backend — never override it with `@latest`). Only fall back to
23
+ > `npx fimo@latest` when the project has no `fimo` dependency.
21
24
 
22
25
  ## Non-Negotiables
23
26
 
@@ -30,6 +33,13 @@ imports, and QA so any LLM can run the work without silently dropping content.
30
33
  ledger.
31
34
  - Source exports beat inferred crawls. If CSV/XML/JSON exports, media folders, or
32
35
  source code exist, treat the public URL as visual/SEO reference only.
36
+ - A working JS codebase is wrapped, not rewritten. Wrap mode
37
+ (`references/wrap.md`) keeps the user's routing, styling, and components
38
+ untouched; the diff is wiring + wrappers + config only. As the coding
39
+ agent you own the whole wrap loop — run `npx fimo migrate` yourself and
40
+ follow `references/wrap.md` § W0 (relay the recorded data-source
41
+ decisions to the user, then loop `npx fimo migrate wrap --check` to
42
+ exit 0).
33
43
  - Builder HTML is evidence, not the final runtime. Rebuild with Fimo conventions,
34
44
  schemas, forms, media primitives, translations, and routes.
35
45
  - Do not report completion until the QA gate passes or every failed check is
@@ -59,7 +69,15 @@ imports, and QA so any LLM can run the work without silently dropping content.
59
69
  pack.
60
70
  - **hybrid**: source files plus public URL. Use source-backed as truth and URL
61
71
  for route, SEO, visual, and behavior comparison.
62
- 4. Create or update the canonical ledger described in
72
+ 4. Pick the mode:
73
+ - **wrap** (default for a source-backed, working JS codebase — Next.js,
74
+ Vite/React, React Router): keep the user's stack, adopt the repo with
75
+ `fimo init`, and make content editable by wrapping it in place. Never
76
+ rewrite routing, styling, or components. Follow `references/wrap.md`.
77
+ - **rebuild**: url-only sources, builder exports/HTML dumps, non-JS
78
+ backends, or codebases that do not build. Follow the standard workflow
79
+ phases.
80
+ 5. Create or update the canonical ledger described in
63
81
  `references/manifest.md`.
64
82
 
65
83
  ## Workflow
@@ -96,6 +114,8 @@ node <this-skill>/scripts/write-migration-report.mjs <project-root>
96
114
  ## References
97
115
 
98
116
  - `references/workflow.md` - full decision tree and phase order.
117
+ - `references/wrap.md` - wrap mode: adopt a working JS codebase and wrap its
118
+ content in place (default for source-backed JS sites).
99
119
  - `references/manifest.md` - canonical migration ledger schema.
100
120
  - `references/content.md` - CMS, entries, references, and source value rules.
101
121
  - `references/media.md` - media inventory, upload, dedupe, and replacement rules.
@@ -18,6 +18,14 @@ ways:
18
18
  news teasers, and feature lists are almost always collections even when the
19
19
  source renders them inside one page.
20
20
 
21
+ > **Rebuild path only.** These rules apply when Fimo re-authors the site
22
+ > (URL/export migrations): the rebuilt code is disposable, so content belongs
23
+ > in collections aggressively. **Wrap mode is deliberately stricter** — the
24
+ > user's code stays primary, page furniture and nav stay in code with `t()`
25
+ > labels, and every collection candidate is confirmed with the user first.
26
+ > See `wrap.md` (W0 and the generated agent-prompt) — in wrap mode that
27
+ > guidance overrides this section.
28
+
21
29
  After the source-faithful rebuild, treat **any hardcoded array of 3+ items with
22
30
  the same shape** as a collection candidate. Do not leave it hardcoded.
23
31
 
@@ -34,6 +34,7 @@ follow-up agents, and import/QA checks.
34
34
  "seo": [],
35
35
  "unsupported": [],
36
36
  "unresolved": [],
37
+ "wrap": null,
37
38
  "qa": {
38
39
  "status": "not-run|passed|failed|passed-with-unresolved",
39
40
  "checks": []
@@ -41,6 +42,40 @@ follow-up agents, and import/QA checks.
41
42
  }
42
43
  ```
43
44
 
45
+ ## Wrap Block (wrap mode only)
46
+
47
+ When the migration is a wrap (see `references/wrap.md`), set
48
+ `source.mode: "source-backed"` and fill the `wrap` block; leave it `null` for
49
+ rebuild migrations:
50
+
51
+ ```json
52
+ {
53
+ "wrap": {
54
+ "mode": "wrap",
55
+ "framework": "next|react-router|vite",
56
+ "adopted": true,
57
+ "wired": true,
58
+ "coverage": {
59
+ "wrappable": 0,
60
+ "wrapped": 25,
61
+ "ignored": 0,
62
+ "unresolvedItems": 0
63
+ },
64
+ "seeded": {
65
+ "labels": 21,
66
+ "wrappedMedia": 3,
67
+ "wrappedRichText": 1
68
+ },
69
+ "planPath": ".fimo/migration/plan.json"
70
+ }
71
+ }
72
+ ```
73
+
74
+ `coverage` mirrors the final `fimo migrate wrap --check` output: `wrappable`
75
+ must be 0 (or fully accounted for by `ignored` + `unresolvedItems`, each with a
76
+ ledger entry). `seeded` counts must match what `fimo labels list` /
77
+ `fimo entries list` report — fallback-only content is not seeded.
78
+
44
79
  ## Required Item Fields
45
80
 
46
81
  Every route, content type, entry batch, media asset, form, redirect, locale, SEO
@@ -18,8 +18,11 @@ Run this gate before reporting completion.
18
18
  ## Behavior
19
19
 
20
20
  - Dependencies are installed in the target project.
21
- - The project builds successfully.
22
- - Local dev starts without Vite loader/schema/form generation errors.
21
+ - The project builds successfully **with its own toolchain** (`next build`,
22
+ `vite build`, …) — wrapped sites are not Vite/React-Router projects; never
23
+ assume Fimo-template tooling.
24
+ - Local dev starts without loader/schema/form generation errors (Vite errors
25
+ apply to rebuild-mode projects only).
23
26
  - Primary routes render without console/runtime errors.
24
27
  - Collection listing/detail pages work with imported data, seed data, or explicit
25
28
  empty states.
@@ -33,6 +36,25 @@ Run this gate before reporting completion.
33
36
  - Remove generated placeholder copy from visible UI.
34
37
  - Verify media aspect ratios and no broken images on primary routes.
35
38
 
39
+ ## Wrap Mode (additional blocking checks)
40
+
41
+ When the manifest says `mode: "wrap"`:
42
+
43
+ - `fimo migrate wrap --check` exits zero — it enforces coverage (zero
44
+ unwrapped items), render parity (rendered text/marks/media/links identical
45
+ to the pre-wrap baseline), and seeding (every wrapped key exists in the
46
+ database) — or every remaining item is an explicit ignored/unresolved
47
+ ledger entry with a reason.
48
+ - Labels are seeded: every `FimoText`/`t()` key exists in `fimo labels list`
49
+ with the original string. Fallback-only content fails the gate.
50
+ - Wrapped media/rich text have their `WrappedMedia`/`WrappedRichText` entries
51
+ created and assets uploaded.
52
+ - Render parity: pages render identically to pre-migration — same text, same
53
+ formatting marks (bold/italic/underline/links), same media.
54
+ - Diff audit: the migration diff contains only wiring, wrappers, label calls,
55
+ config, and dependency changes. Any routing/styling/component rewrite fails
56
+ the gate.
57
+
36
58
  ## Import Verification
37
59
 
38
60
  Record:
@@ -2,6 +2,14 @@
2
2
 
3
3
  Use this as the phase contract for complete migrations.
4
4
 
5
+ > **Mode fork.** For a source-backed, WORKING JS codebase (Next.js, Vite/React,
6
+ > React Router), wrap mode is the default: skip Phases 0 and 6 below and follow
7
+ > `references/wrap.md` (adopt via `fimo init`, scan via `fimo migrate wrap`,
8
+ > wrap in place, seed, verify). Phases 3–5 (content model, media/forms, import)
9
+ > and Phase 8 (QA + report) still apply — wrap changes how content becomes
10
+ > editable, not the accounting obligations. Everything else here is the rebuild
11
+ > path.
12
+
5
13
  ## Phase 0: Target Safety
6
14
 
7
15
  1. Confirm the target path.
@@ -119,7 +127,10 @@ Required order:
119
127
  Record target IDs, import counts, failures, and unresolved items in the
120
128
  canonical ledger. Generated JSON without import counts is still draft state.
121
129
 
122
- ## Phase 6: Fimo Implementation
130
+ ## Phase 6: Fimo Implementation (rebuild mode)
131
+
132
+ In wrap mode this phase is replaced by `references/wrap.md` phases W3–W5
133
+ (wire, wrap, seed); do not rebuild pages for a wrapped site.
123
134
 
124
135
  Implement routes, schemas, forms, entries, media, redirects, translations, and
125
136
  React pages with Fimo conventions.