fimo 2.4.0-staging.1 → 2.4.0-staging.3

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 (63) hide show
  1. package/assets/skills/fimo-cli/SKILL.md +2 -2
  2. package/assets/skills/fimo-cli/references/branches.md +4 -4
  3. package/assets/skills/fimo-cli/references/deploy.md +2 -5
  4. package/assets/skills/fimo-cli/references/domains.md +5 -5
  5. package/assets/skills/fimo-cli/references/hosting.md +5 -4
  6. package/assets/skills/fimo-cli/references/preview.md +1 -1
  7. package/assets/skills/fimo-cli/references/projects.md +5 -5
  8. package/assets/skills/fimo-code/SKILL.md +1 -0
  9. package/assets/skills/fimo-code/references/assets.md +4 -2
  10. package/assets/skills/fimo-code/references/best-practices/next.md +0 -2
  11. package/assets/skills/fimo-code/references/content/schema.md +4 -1
  12. package/assets/skills/fimo-code/references/design.md +2 -2
  13. package/assets/skills/fimo-code/references/frameworks/astro.md +37 -1
  14. package/assets/skills/fimo-code/references/frameworks/hosting.md +23 -2
  15. package/assets/skills/fimo-code/references/frameworks/next/app-router.md +7 -21
  16. package/assets/skills/fimo-code/references/frameworks/next/seo.md +168 -0
  17. package/assets/skills/fimo-code/references/frameworks/next.md +1 -1
  18. package/assets/skills/fimo-code/references/frameworks/seo-head.md +78 -0
  19. package/assets/skills/fimo-code/references/frameworks/sveltekit.md +57 -4
  20. package/assets/skills/fimo-migration/SKILL.md +33 -33
  21. package/assets/skills/fimo-migration/references/content.md +1 -1
  22. package/assets/skills/fimo-migration/references/frameworks/nextjs.md +7 -0
  23. package/assets/skills/fimo-migration/references/import-contract.md +4 -6
  24. package/assets/skills/fimo-migration/references/manifest.md +4 -3
  25. package/assets/skills/fimo-migration/references/qa.md +6 -0
  26. package/assets/skills/fimo-migration/references/questions-and-improvements.md +1 -1
  27. package/assets/skills/fimo-migration/references/workflow.md +7 -5
  28. package/assets/skills/fimo-studio/references/billing-and-credits.md +7 -4
  29. package/assets/skills/fimo-studio/references/seo-settings.md +2 -0
  30. package/dist/cli/bundle.json +2 -2
  31. package/dist/cli/index.js +494 -978
  32. package/dist/runtime/seo/head.d.ts +31 -0
  33. package/dist/runtime/seo/head.js +47 -0
  34. package/dist/runtime/seo/index.d.ts +2 -0
  35. package/dist/runtime/seo/index.js +1 -0
  36. package/dist/runtime/seo/resolver.d.ts +16 -2
  37. package/dist/runtime/seo/resolver.js +10 -0
  38. package/dist/runtime/seo/server.d.ts +13 -0
  39. package/dist/runtime/seo/server.js +23 -0
  40. package/dist/runtime/shared/fimo-config.server.d.ts +2 -0
  41. package/dist/runtime/shared/fimo-config.server.js +18 -14
  42. package/package.json +12 -8
  43. package/templates/astro/.fimo/config.json +1 -0
  44. package/templates/astro/AGENTS.md +1 -1
  45. package/templates/astro/astro.config.mjs +1 -0
  46. package/templates/astro/package.json +2 -2
  47. package/templates/astro/src/layouts/Base.astro +20 -4
  48. package/templates/astro/src/pages/[locale]/index.astro +1 -1
  49. package/templates/astro/src/pages/[locale]/projects/[slug].astro +4 -1
  50. package/templates/astro/src/pages/index.astro +1 -1
  51. package/templates/astro/src/pages/projects/[slug].astro +4 -1
  52. package/templates/nextjs/AGENTS.md +1 -1
  53. package/templates/nextjs/package.json +3 -3
  54. package/templates/nextjs/src/app/layout.tsx +5 -3
  55. package/templates/nextjs/src/app/page.tsx +6 -0
  56. package/templates/react-router/package.json +4 -4
  57. package/templates/sveltekit/AGENTS.md +1 -1
  58. package/templates/sveltekit/package.json +2 -2
  59. package/templates/sveltekit/src/routes/+layout.server.ts +4 -0
  60. package/templates/sveltekit/src/routes/+layout.svelte +12 -0
  61. package/templates/sveltekit/src/routes/[[locale=locale]]/+page.svelte +0 -5
  62. package/templates/vite/package.json +4 -4
  63. package/assets/skills/fimo-migration/scripts/build-canonical-manifest.mjs +0 -595
@@ -2,7 +2,8 @@
2
2
 
3
3
  Use this reference when `fimo describe --json` reports
4
4
  `framework.slug: "sveltekit"`. SvelteKit keeps owning routes, load functions,
5
- locale resolution, links, document metadata, and SEO.
5
+ locale resolution, links, document metadata, and per-page SEO; Fimo supplies the
6
+ site-wide SEO defaults from Studio's Settings → SEO.
6
7
 
7
8
  ## Compatibility
8
9
 
@@ -12,7 +13,7 @@ SvelteKit 1 or Svelte 4 projects are compatible.
12
13
 
13
14
  ## Install both packages
14
15
 
15
- Every SvelteKit surface lives in `fimo-sveltekit`, installed at the same version
16
+ SvelteKit-specific APIs live in `fimo-sveltekit`, installed at the same version
16
17
  as `fimo`:
17
18
 
18
19
  ```bash
@@ -95,9 +96,10 @@ export async function load(event) {
95
96
  <script lang="ts">
96
97
  import { afterNavigate } from '$app/navigation';
97
98
  import { FimoProvider } from 'fimo-sveltekit/components';
98
- import type { LayoutData } from './$types';
99
99
  import type { Snippet } from 'svelte';
100
100
 
101
+ import type { LayoutData } from './$types';
102
+
101
103
  let { data, children }: { data: LayoutData; children: Snippet } = $props();
102
104
 
103
105
  afterNavigate(() => {
@@ -110,6 +112,57 @@ export async function load(event) {
110
112
  </FimoProvider>
111
113
  ```
112
114
 
115
+ ## SEO defaults
116
+
117
+ Resolve SEO in the existing server load and return `seoHead`. Preserve the
118
+ load's other data, including labels. A content page resolves after its read:
119
+ `resolveSeoForPath(event.url.pathname, config, { article })`, applies app
120
+ overrides, and returns its complete `seoHead` using `toSeoHead`.
121
+
122
+ ```ts
123
+ // src/routes/+layout.server.ts, or a content page's +page.server.ts
124
+ import { resolveSeoForPath, toSeoHead } from 'fimo/seo';
125
+ import config from '../../.fimo/config.json';
126
+
127
+ export function load({ url }) {
128
+ const seo = resolveSeoForPath(url.pathname, config);
129
+ return {
130
+ seoHead: toSeoHead(seo, {
131
+ canonicalUrl: seo?.url ? new URL(url.pathname, seo.url).href : undefined,
132
+ }),
133
+ };
134
+ }
135
+ ```
136
+
137
+ Render the final merged route data from one head owner. A leaf load's
138
+ `seoHead` replaces the default head as a whole.
139
+
140
+ ```svelte
141
+ <!-- Inside the existing root layout, alongside its provider and children -->
142
+ <script lang="ts">
143
+ import { page } from '$app/state';
144
+ const head = $derived(page.data.seoHead ?? { meta: [], links: [] });
145
+ </script>
146
+
147
+ <svelte:head>
148
+ <title>{head.title ?? 'My site'}</title>
149
+ {#each head.meta as attributes}<meta {...attributes} />{/each}
150
+ {#each head.links as attributes}<link {...attributes} />{/each}
151
+ </svelte:head>
152
+ ```
153
+
154
+ Do not add a second page title beside root social tags. Use the same final
155
+ values for all tags and check client navigation, including returning to a page
156
+ without overrides. Existing apps can keep their current head component and
157
+ extend it in place.
158
+
159
+ The example canonical policy fits a root-hosted site; preserve existing
160
+ production domains, base paths and trailing slashes. Imported config needs
161
+ sync and rebuild/redeploy. Content freshness follows the app's load,
162
+ prerender and cache policy.
163
+
164
+ Read `references/frameworks/seo-head.md` for the field and composition contract.
165
+
113
166
  Generated values are serialized at a `load` boundary and hydrated in the
114
167
  component that renders them. Use `Text`, `RichText`, `Image`, `Video`, `Date`,
115
168
  `DateTime`, `Boolean`, `Json`, and `Number` from
@@ -142,7 +195,7 @@ component, read Fimo preview environment variables, or inject Fimo scripts.
142
195
 
143
196
  ## Boundaries
144
197
 
145
- - SvelteKit owns routing, history, 404s, locale URLs, and SEO.
198
+ - SvelteKit owns routing, history, 404s, locale URLs, and per-page SEO; the root layout renders Fimo's site-wide SEO defaults.
146
199
  - `fimo-sveltekit/vite` owns dev source tagging only.
147
200
  - `FimoProvider` owns labels and the optional Studio preview bridge.
148
201
  - Do not add React, React Query, or a Vite SPA fallback to a SvelteKit project.
@@ -100,9 +100,9 @@ Pick the setup path from the evidence:
100
100
  and adds only the Fimo dependency, `.fimo/project.json`, the `fimo` remote,
101
101
  and `.fimo/config.json#runtime.framework`. It never overlays a template, so
102
102
  the target must already contain the source.
103
- - **Empty target, or an explicit framework conversion** — `fimo init` with the
104
- chosen `--framework`, or `fimo migrate init <url> <dir>` for a URL crawl.
105
- Both refuse a non-empty target and write nothing when they refuse.
103
+ - **Empty target, or an explicit framework conversion** — `fimo init` or
104
+ `fimo migrate init <dir>` with the chosen `--framework`. Both refuse a
105
+ non-empty target and write nothing when they refuse.
106
106
 
107
107
  If authentication, organization selection, project creation, environment
108
108
  resolution, linking, or the verification read fails, stop before workers and
@@ -151,7 +151,7 @@ report the exact failed command and setup requirement.
151
151
  unresolved item with the source evidence, the owner action, and the
152
152
  user-visible impact. Never claim completion while source content is
153
153
  unwired.
154
- - Prefer source code and exports over inferred crawl data. Use a public URL as
154
+ - Prefer source code and exports over what a page renders. Use a public URL as
155
155
  visual, SEO, route, and behavior evidence when better source material exists.
156
156
  When the source defines an active CMS but its deployed records are unavailable,
157
157
  rebuild published content from the public site only after the user explicitly
@@ -205,8 +205,12 @@ report the exact failed command and setup requirement.
205
205
  - **source-backed**: source repository, export, downloaded HTML, CMS data,
206
206
  or media folder. The source files are truth; the workers read them
207
207
  directly.
208
- - **url-only**: only a published URL. Run `fimo migrate <url> [dir]` to
209
- create the draft evidence pack.
208
+ - **url-only**: only a published URL. You read the site yourself: open each
209
+ route in a browser, let client-side rendering finish, and record the
210
+ sections, copy, images, links, and forms you actually see. Fetching HTML
211
+ without executing JavaScript is not evidence — a client-rendered page
212
+ returns an empty root element, which reads as a site with no content.
213
+ Never report a route as covered from a fetch that returned no sections.
210
214
  - **hybrid**: source material plus a public URL. Treat source material as
211
215
  truth and the URL as comparison evidence.
212
216
  4. Read `references/questions-and-improvements.md`, finish its read-only
@@ -220,6 +224,10 @@ report the exact failed command and setup requirement.
220
224
  - Content data/code workers -> `references/workers/content-execution.md`.
221
225
  - Independent validator -> `references/workers/validator.md`.
222
226
  - Next.js source -> `references/frameworks/nextjs.md`.
227
+ - Astro/SvelteKit SEO -> the target's `fimo-code` framework reference and
228
+ `frameworks/seo-head`. Preserve the existing head owner and URL policy;
229
+ follow its value-ownership and edit-and-render contract, preserving
230
+ intentional source overrides rather than freezing editor-owned values.
223
231
  - React Router/Vite source -> load the target project's `fimo-code`
224
232
  `frameworks/react-router`, `frameworks/vite-react`, and
225
233
  `frameworks/hosting` references as applicable.
@@ -254,7 +262,8 @@ instead of inventing an ID:
254
262
 
255
263
  `--source-platform` names what the site is migrated from (`wordpress`, `nextjs`,
256
264
  `astro`, `react-router`, `webflow`, `framer`, `squarespace`, `wix`, `carrd`,
257
- `other`); pass what the source checkout proves, `unknown` only when nothing does.
265
+ `other`); pass what the source proves, `unknown` only when nothing does. It is
266
+ explicit only — nothing detects it, and omitting it records `unknown`.
258
267
 
259
268
  After setup, check `.fimo/config.json#runtime.framework` and the scaffold's
260
269
  framework files before starting workers. A Next.js target must still have its
@@ -268,32 +277,23 @@ deploy happens only after successful local QA (see Completion and deployment).
268
277
 
269
278
  ## Command surface
270
279
 
271
- Plan-only commands operate on local artifacts and work before the target is
272
- linked:
273
-
274
- - `fimo migrate init <url> [dir]` — URL migrations only: crawl the live site
275
- into the draft evidence pack.
276
- - `fimo migrate inspect` — summarize the URL draft or an existing legacy ledger.
277
- - `fimo migrate import` — print the import plan; it writes no data.
278
- - `fimo migrate apply` / `fimo migrate refine` — URL-draft-only scaffold and
279
- refinement handoff; they play no role in a source-backed migration. `apply`
280
- must never run against an initialized non-React-Router target: it is the
281
- legacy React Router scaffold path and must fail instead of downgrading a
282
- Next.js (or another framework) project.
283
- - `fimo migrate manifest` / `fimo migrate report` — legacy URL-draft helpers.
284
- New source-backed migrations use the plain-text migration plan, worker
285
- reports, and final migration report; they do not bootstrap another JSON
286
- registry.
287
-
288
- Commands that perform actual data writes, all requiring the linked target:
280
+ `fimo migrate init <dir>` is the only migration subcommand. It sets the target
281
+ up and nothing else: it never reads, fetches, or renders the source site, and
282
+ it produces no evidence pack, draft, manifest, or scaffold to inspect. Reading
283
+ the source is your job, and every finding is yours to prove.
284
+
285
+ - `fimo migrate init <dir> --project-id <projectId>` — link an owner-supplied
286
+ project.
287
+ - `fimo migrate init <dir> --org <organizationId>` — create a new project.
288
+ - Both accept `--framework`, `--source-platform` (see Target setup),
289
+ `--install` / `--no-install`, `--agents` / `-a`, `--mode`, `--template-root`,
290
+ and `--json`; `-C <dir>` replaces the positional for an already-linked target.
291
+
292
+ The link/creation and its initial commit push are the only remote writes. Data
293
+ writes go through the normal commands against the linked target:
289
294
 
290
295
  - `fimo schemas push`, `fimo assets upload`, `fimo entries create|update`,
291
296
  `fimo singles update`, `fimo labels set|set-many`, `fimo forms push`.
292
- - `fimo migrate init` (source-backed form): the project link/creation and
293
- initial commit push described above. Pass `--source-platform <platform>`
294
- (webflow, framer, squarespace, wix, carrd, wordpress, nextjs, astro,
295
- react-router, other) when the source is known; URL crawls detect it.
296
-
297
297
  - `fimo link`: project creation or selection plus the in-place adoption of a
298
298
  copied source target.
299
299
  - `fimo deploy` / `fimo publish` — owner-approved only.
@@ -378,9 +378,9 @@ Commands that perform actual data writes, all requiring the linked target:
378
378
  - `references/workers/content-execution.md` - data import and code-wiring
379
379
  contracts.
380
380
  - `references/workers/validator.md` - independent fan-in validation.
381
- - Existing manifest/decision helper scripts are legacy compatibility tools for
382
- older migration artifacts. Do not invoke them in a new migration unless the
383
- user explicitly asks to replay an older artifact.
381
+ - `scripts/apply-decision.mjs` and `scripts/write-migration-report.mjs` replay
382
+ an older JSON-ledger migration. A new migration writes the plain-text plan
383
+ and report instead; do not invoke them unless the user asks for that replay.
384
384
 
385
385
  ## Completion and deployment
386
386
 
@@ -119,7 +119,7 @@ Then use source headers, values, and repeated patterns:
119
119
  - excerpt/summary/dek -> `text`
120
120
  - image/photo/thumbnail/media/asset/file -> `media`, carrying the source alt on
121
121
  the media value; never add a separate alt field (`references/media.md`)
122
- - date/published/created/updated -> `date`; use `datetime` only when the crawled
122
+ - date/published/created/updated -> `date`; use `datetime` only when the source
123
123
  values carry a time and a UTC offset, which `datetime` requires
124
124
  - event start/end time -> `datetime`
125
125
  - price/amount/rating/order/count -> `number`
@@ -86,6 +86,13 @@ behavior in place; when one cannot be preserved, record an explicit gap with
86
86
  the affected routes instead of shipping pages that silently lost their share
87
87
  metadata.
88
88
 
89
+ Before adopting Fimo SEO values, load the target's `fimo-code` reference
90
+ `frameworks/next/seo`. Record which fields remain app-owned and which become
91
+ editor-managed. Preserve section robots policies, title templates and
92
+ file-based images; verify the rendered result on representative routes. Link
93
+ the established route pattern in the project's instructions so later pages
94
+ reuse it. Do not replace an existing SEO library or add a universal merge wrapper.
95
+
89
96
  ## Fimo connection
90
97
 
91
98
  Follow the target project's `fimo-code` Next.js reference and render its
@@ -9,18 +9,16 @@ assets, schemas, entries, and forms, or the gaps are owner-visible unresolved
9
9
  items.
10
10
 
11
11
  Every data-plane write in this contract targets the linked project from
12
- workflow Phase 0. Local artifacts never require the link — `fimo migrate
13
- import` only prints the import plan (it writes no data) and warns in an
14
- unlinked directory — running the printed commands is what needs the link.
15
- When no owner-supplied target exists, the writes stay unresolved owner
16
- actions; do not fake a link to make them pass.
12
+ workflow Phase 0. Planning and payload authoring need no link; running the
13
+ writes does. When no owner-supplied target exists, the writes stay unresolved
14
+ owner actions; do not fake a link to make them pass.
17
15
 
18
16
  ## Media Files
19
17
 
20
18
  Discovery must include:
21
19
 
22
20
  - local export media folders
23
- - media URLs from crawled HTML/CSS
21
+ - media URLs found in the source HTML/CSS
24
22
  - CMS media fields
25
23
  - SEO/share images
26
24
  - downloadable files linked from pages or entries
@@ -4,9 +4,10 @@ New migrations do not create a canonical `manifest.json`. The coordinator uses
4
4
  the readable `.fimo/migration/migration-plan.md` and
5
5
  `.fimo/migration/migration-report.md` instead.
6
6
 
7
- Older URL-only migrations may contain `.fimo/migrations/current/manifest.json`.
8
- Read it as source evidence when useful, but do not copy it into another
9
- registry or ask workers to keep it synchronized.
7
+ A pre-existing project may still contain `.fimo/migrations/current/manifest.json`
8
+ from a retired URL crawl. Nothing writes it any more, and it was never
9
+ trustworthy on a client-rendered site: read it as a hint at most, re-verify
10
+ every claim against the source, and do not copy it into another registry.
10
11
 
11
12
  JSON remains appropriate for actual Fimo artifacts: schema files and the
12
13
  content payloads passed to data-plane commands. It is not needed to describe
@@ -67,6 +67,12 @@ items.
67
67
  categories, tags, redirects, and locales are preserved when present.
68
68
  - Existing SEO, OG, and social behavior - including dynamic OG image routes -
69
69
  is preserved or explicitly reported as a gap.
70
+ - Editor-owned SEO remains connected to its setting, entry, or singleton.
71
+ Inspect the implementation lane's before/after edit-and-render receipt from
72
+ an authorized isolated target, including preserved intentional overrides and
73
+ required rebuild/cache steps. If absent, report freshness unproven and hand
74
+ back a bounded test; this read-only validator does not mutate content.
75
+ `fimo validate` and matching initial tags do not prove later edits propagate.
70
76
  - When the source has no low-risk SEO or social value, safe defaults derived
71
77
  from verified page/site data are present or the missing behavior is reported;
72
78
  the migration must not invent marketing claims.
@@ -94,7 +94,7 @@ The question should sound like this:
94
94
 
95
95
  If the owner chooses the public website, stay inside the selected route scope.
96
96
  Public retrieval does not authorize private endpoint discovery, credential use,
97
- or a broader crawl. Record the URL, retrieval time, redirects, and every field
97
+ or a broader sweep. Record the URL, retrieval time, redirects, and every field
98
98
  or relation that remains unknown.
99
99
 
100
100
  ## Ask what happens outside a partial migration
@@ -18,12 +18,11 @@ ask a generic optimization question.
18
18
  1. Confirm the target path. The target is a separate directory; the source
19
19
  checkout remains read-only evidence.
20
20
  2. Initialize or reuse exactly one linked Fimo target before workers start:
21
- - URL migration: `fimo migrate init <source-url> <target-dir> --framework <framework>`
22
21
  - link an existing project: `fimo migrate init <target-dir> --project-id <projectId> --framework <framework>`
23
22
  - create a project: `fimo migrate init <target-dir> --org <organizationId> --framework <framework>`
24
23
  - add `--source-platform <platform>` when the source platform is known
25
24
  (webflow, framer, squarespace, wix, carrd, wordpress, nextjs, astro,
26
- react-router, other); URL crawls detect it themselves.
25
+ react-router, other). Nothing detects it; omitting it records `unknown`.
27
26
  Use the detected source framework for source-backed migrations. A framework
28
27
  conversion requires an explicit user choice; URL-only and rebuild
29
28
  migrations ask the user which framework to use. Never choose a framework by
@@ -78,9 +77,12 @@ Treat absent/private fields as unknown, keep uncertain fields optional, and do
78
77
  not turn sampled values into enums. Bounded retrieval scripts are accelerators
79
78
  the planner may adapt or replace, never schema decision makers.
80
79
 
81
- For URL-only migrations, run `fimo migrate <url> [dir]` and inspect the
82
- generated `.fimo/migrations/current/` files as source evidence. Do not copy
83
- that crawl manifest into another canonical JSON registry.
80
+ For URL-only migrations, read the published site yourself with a browser. Open
81
+ every selected route, let client-side rendering finish, and record the sections,
82
+ copy, images, links, and forms you actually see. An HTML response fetched
83
+ without executing JavaScript is not evidence: a client-rendered page returns an
84
+ empty root element, and treating that as the page reports an empty site as a
85
+ complete one.
84
86
 
85
87
  ## Phase 2: Fan out workers
86
88
 
@@ -19,13 +19,13 @@ From a linked project directory, `fimo credits` shows the same organization bala
19
19
 
20
20
  ## Buying More Credits
21
21
 
22
- Buying credits is available on paid plans, since it charges the payment method already on file.
22
+ Buying credits is available while a paid plan is effective, including after scheduling its cancellation. Cancellation stops automatic spending immediately but keeps the current plan until renewal. A deliberate credit purchase still charges the payment method on file.
23
23
 
24
24
  1. Click the credit display near the chat input.
25
25
  2. Click **Buy credits**.
26
26
  3. Enter a dollar amount (up to $10,000) or pick one of the presets: **$25**, **$50**, **$100**, or **$200**.
27
- 4. You get **1,000 credits per $1** spent.
28
- 5. Confirm the purchase. Your card on file is charged and the credits are added to your account immediately -- there is no separate checkout page to complete.
27
+ 4. Check the rate shown in the dialog. It comes from your current plan, so the same dollar amount can buy a different number of credits on Pay as you go than on Pro.
28
+ 5. Confirm the purchase. Your card on file is charged and the credits are added after confirmation; there is no separate checkout page to complete. If confirmation stays pending, retry the same purchase or contact support. Do not start another purchase to replace an unresolved one.
29
29
 
30
30
  ## Refilling Credits Automatically
31
31
 
@@ -33,7 +33,7 @@ Organization billing admins on a paid plan can configure auto-refill from **Sett
33
33
 
34
34
  1. Choose the balance threshold that should trigger a refill.
35
35
  2. Choose the dollar amount to purchase when the balance crosses that threshold.
36
- 3. Save the configuration. Hyperline stores the setting and charges the payment method on file when the threshold is crossed.
36
+ 3. Check the plan rate shown in the dialog, then save. Fimo charges the payment method on file and buys credits at that rate when the balance crosses the threshold.
37
37
 
38
38
  Turn auto-refill off from the same control. Fimo does not keep a separate copy of this configuration; the Billing page always shows the provider's current setting. Leaving a paid plan clears auto-refill, and billing admins retain the off-switch if provider cleanup is delayed.
39
39
 
@@ -54,6 +54,9 @@ From there:
54
54
  ## Changing or leaving a paid plan
55
55
 
56
56
  - Free to Pay as you go or Pro, and Pay as you go to Pro, use checkout and take effect after payment succeeds.
57
+ - Cancelling Pay as you go or Pro stops auto-refill and paid bandwidth immediately. The current plan, remaining allowances, credits, and reset date stay unchanged until Free takes over at renewal. Manual credit purchases remain available while the paid plan is active.
58
+ - Automatic spending cannot be enabled while cancellation is scheduled. Keep your plan first; then you can immediately enable auto-refill and paid bandwidth independently. Keeping the plan itself leaves both off.
59
+ - Usage before cancellation remains payable. Enabling paid bandwidth again does not make usage from the off-period billable.
57
60
  - Pro to Pay as you go or Free takes effect at the end of the current billing period. Billing shows the destination and effective date until then.
58
61
  - Choosing the current plan again before that date cancels the scheduled change.
59
62
  - Pay as you go requires an active payment method. Removing its only valid card returns the organization to Free immediately.
@@ -24,6 +24,8 @@ This is the image that shows up when someone shares your link on social media (F
24
24
 
25
25
  All SEO changes auto-save as you make them. However, a small amber reminder appears in the top-right corner: "Publish your website to apply your changes." Click Publish to push the changes to your live site.
26
26
 
27
+ Current templates include SEO wiring. For older Next.js, Astro or SvelteKit sites, ask the coding agent to update Fimo and connect these values to the app's existing SEO flow. Route-specific content must reach that flow too. Load the matching recipe: `fimo skills get fimo-code --ref frameworks/next`, `fimo skills get fimo-code --ref frameworks/astro`, or `fimo skills get fimo-code --ref frameworks/sveltekit`.
28
+
27
29
  ## Why SEO Matters
28
30
 
29
31
  - **Favicon** -- Makes your site look professional and easy to find among open tabs.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "bundled": true,
3
3
  "bundler": "esbuild",
4
- "bundledAt": "2026-09-04T20:24:57.392Z",
5
- "cliVersion": "2.3.1",
4
+ "bundledAt": "2026-09-05T15:57:16.360Z",
5
+ "cliVersion": "2.3.2",
6
6
  "external": [
7
7
  "oxc-parser",
8
8
  "fsevents",