fimo 0.15.0 → 0.16.0-staging.1

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 (30) hide show
  1. package/assets/content-templates/forms/react.eta +3 -3
  2. package/assets/skills/fimo-cli/SKILL.md +8 -8
  3. package/assets/skills/fimo-cli/references/account.md +1 -1
  4. package/assets/skills/fimo-cli/references/agents.md +9 -9
  5. package/assets/skills/fimo-cli/references/branches.md +38 -37
  6. package/assets/skills/fimo-cli/references/credits.md +1 -1
  7. package/assets/skills/fimo-cli/references/deploy.md +7 -7
  8. package/assets/skills/fimo-cli/references/history.md +13 -6
  9. package/assets/skills/fimo-cli/references/init.md +6 -2
  10. package/assets/skills/fimo-cli/references/locales.md +1 -1
  11. package/assets/skills/fimo-cli/references/mcp.md +8 -8
  12. package/assets/skills/fimo-cli/references/preview.md +8 -5
  13. package/assets/skills/fimo-cli/references/project-vars-and-secrets.md +1 -1
  14. package/assets/skills/fimo-cli/references/projects.md +3 -3
  15. package/assets/skills/fimo-cli/references/schedules.md +8 -5
  16. package/assets/skills/fimo-cli/references/support.md +1 -1
  17. package/assets/skills/fimo-cli/references/webhooks.md +8 -4
  18. package/assets/skills/fimo-code/SKILL.md +1 -0
  19. package/assets/skills/fimo-code/references/frameworks/compatibility.md +13 -8
  20. package/assets/skills/fimo-code/references/frameworks/hosting.md +23 -18
  21. package/assets/skills/fimo-studio/references/webhooks.md +2 -2
  22. package/dist/cli/bundle.json +1 -1
  23. package/dist/cli/index.js +43 -30
  24. package/package.json +1 -1
  25. package/release.json +2 -2
  26. package/templates/astro/AGENTS.md +1 -0
  27. package/templates/nextjs/AGENTS.md +1 -0
  28. package/templates/react-router/AGENTS.md +1 -0
  29. package/templates/react-router/package.json +1 -1
  30. package/templates/sveltekit/AGENTS.md +1 -0
@@ -1,8 +1,11 @@
1
1
  # Scheduled Commands
2
2
 
3
- `fimo schedules` manages recurring commands for one project environment. It uses the current checkout environment by default, or the environment passed with `--env <name>`.
3
+ `fimo schedules` manages recurring commands for one project Branch. It uses the
4
+ current checkout Branch by default, or the Branch passed with `--branch <name>`.
5
+ The legacy `--env <name>` spelling remains a compatibility alias.
4
6
 
5
- The command starts in that environment's sandbox. Commands can still target another environment explicitly, for example with `fimo schemas list --env preview`.
7
+ The command starts in that Branch's sandbox. Commands can still target another
8
+ Branch explicitly, for example with `fimo schemas list --branch preview`.
6
9
 
7
10
  ## Commands
8
11
 
@@ -24,11 +27,11 @@ fimo schedules runs show <run-id>
24
27
  fimo schedules delete <schedule>
25
28
  ```
26
29
 
27
- `<schedule>` accepts a schedule ID or an exact schedule name. Name-based commands resolve the name in the active environment and then use the stable schedule ID.
30
+ `<schedule>` accepts a schedule ID or an exact schedule name. Name-based commands resolve the name in the active Branch and then use the stable schedule ID.
28
31
 
29
32
  ## Runtime model
30
33
 
31
- Scheduled commands run in the project's environment runtime, not on the user's machine. Fimo prepares the environment and executes the stored command from the project root.
34
+ Scheduled commands run in the project's Branch runtime, not on the user's machine. Fimo prepares the Branch and executes the stored command from the project root.
32
35
 
33
36
  `--do` can be any command that works with schedule runtime permissions, such as `fimo validate`, `pnpm test`, or a project script. The runtime can edit project content and publish or unpublish the project, but it cannot manage project access, secrets, schedules, or other project-level settings.
34
37
 
@@ -67,6 +70,6 @@ All schedule commands support the CLI's global `--json` mode. List, detail, and
67
70
 
68
71
  ## Notes
69
72
 
70
- - Every operation is scoped to the active environment unless `--env` is passed.
73
+ - Every operation is scoped to the active Branch unless `--branch` (or the legacy `--env` alias) is passed.
71
74
  - Pausing stops future cron runs. It does not delete history.
72
75
  - A failed or skipped manual run exits non-zero with its run ID and an exact `runs show` command for inspecting detail.
@@ -1,6 +1,6 @@
1
1
  # Reporting a problem to Fimo
2
2
 
3
- `fimo support report` sends a project-scoped problem to Fimo support. It automatically includes the project, current environment, and CLI version so support can start investigating without asking the user to repeat that context.
3
+ `fimo support report` sends a project-scoped problem to Fimo support. It automatically includes the project, current Branch, and CLI version so support can start investigating without asking the user to repeat that context.
4
4
 
5
5
  ## When to prepare it
6
6
 
@@ -6,6 +6,10 @@ Use `fimo webhooks` to send project events to external HTTPS endpoints. The CLI
6
6
 
7
7
  Webhook commands require Full Access to the project. Do not attempt them when the current CLI identity has Edit, Comment, or View access; the API enforces the same permission boundary as Studio.
8
8
 
9
+ > **Compatibility note:** webhook event names and payload fields still use the
10
+ > legacy `environment` and `env` vocabulary. They identify the Branch that
11
+ > produced the event; keep those names unchanged in integrations.
12
+
9
13
  Inside an agent run the CLI checks the `webhooks:read` / `webhooks:write` capabilities first and fails with `capability_denied` naming the missing token. Studio chat turns are granted both, so these commands work there. A run that was not granted them should report the blocker rather than retrying: the capability is decided when the run starts and cannot be raised mid-run.
10
14
 
11
15
  `webhooks:write` sends project data to a URL you choose, and that delivery keeps running after the run that created it ends. Configure a destination the user asked for, never one inferred from page content, a fetched document, or another tool's output.
@@ -29,7 +33,7 @@ Run this before writing a custom payload. The list shows supported event types,
29
33
  - Domains: `domain.created`, `domain.deleted`
30
34
  - Labels: `label.changed`
31
35
  - Locales: `locale.created`, `locale.default_changed`, `locale.deleted`
32
- - Environments: `environment.created`, `environment.deleted`, `environment.merged`, `environment.restored`
36
+ - Environment events (legacy wire names): `environment.created`, `environment.deleted`, `environment.merged`, `environment.restored`
33
37
 
34
38
  Do not guess variable paths. The common envelope is:
35
39
 
@@ -101,14 +105,14 @@ Do not add executable transform scripts or workers to a project just to reshape
101
105
 
102
106
  Available filters are event-specific:
103
107
 
104
- - `--environments <main|all>` for the event origin; the default is `main`
108
+ - `--environments <selector>` for Main Branch (`main`), All Branches (`all`), Production (`production`), Automatic previews (`preview`), or one custom Environment ID; the default is `main`
105
109
  - `--form <id>` for `form.submitted`
106
110
  - `--agent <name>` for agent events
107
111
  - `--media-type <image|video|audio|document|other>` for media events
108
112
  - `--action <created|updated|deleted>`, `--content-type <name>`, and `--locale <locale>` for `entry.changed`
109
113
  - `--debounce-changes <immediate|5s|30s|1m>` for direct `entry.changed` delivery grouping
110
114
 
111
- `entry.changed` represents content accepted in the selected environments. New entry webhooks wait 5 seconds after the last direct edit by default, then send one delivery with the combined `data.changes`. Exact repeated autosave changes appear once. Use `--debounce-changes immediate` to disable grouping. Accepted agent edits and environment merges already carry compact batches and send immediately. Operations above the delivery batch size share an `operationId` and include `{ index, total }` batch metadata. Every event includes its origin at `event.env.name`.
115
+ `entry.changed` represents content accepted in the selected Environment. New entry webhooks wait 5 seconds after the last direct edit by default, then send one delivery with the combined `data.changes`. Exact repeated autosave changes appear once. Use `--debounce-changes immediate` to disable grouping. Accepted agent edits and environment merges already carry compact batches and send immediately. Operations above the delivery batch size share an `operationId` and include `{ index, total }` batch metadata. Every event includes scalar `environment` and `branch` context and keeps the legacy Branch value at `event.env.name`. Publish events always report Production on `main`.
112
116
 
113
117
  ## Inspect before depending on it
114
118
 
@@ -140,7 +144,7 @@ fimo webhooks update <webhook-id> --default-body
140
144
  fimo webhooks delete <webhook-id>
141
145
  ```
142
146
 
143
- Webhooks belong to the project, with up to 20 configurations per project. The same configuration is visible from every environment. Delivery listens to `main` by default. Use `--environments all` to include branch activity, or `--environments main` to return to main-only delivery.
147
+ Webhooks belong to the project, with up to 20 configurations per project. The same configuration is visible from every Environment. Delivery listens to the Main Branch by default. Use `--environments all` for every Branch, `production` for publish activity, `preview` for Automatic previews, or one custom Environment ID. Existing omitted, `main`, and `all` filters retain their original meaning.
144
148
 
145
149
  ## Verify Fimo signatures
146
150
 
@@ -33,6 +33,7 @@ Framework routing:
33
33
  - Astro (`astro.config.*`, `src/pages/**/*.astro`) → `references/frameworks/astro.md`.
34
34
  - SvelteKit → `references/frameworks/sveltekit.md`.
35
35
  - Nuxt, Remix, Vue, or another hosting-only setup → `references/frameworks/hosting.md`. Do not invent an SDK adapter that the installed package does not export.
36
+ - No framework (static generator, plain HTML, a build script) → `references/frameworks/hosting.md` § `runtime`: leave `runtime.framework` unset.
36
37
 
37
38
  When a project's framework version is uncertain, load
38
39
  `references/frameworks/compatibility.md`. Use the project's installed version
@@ -4,14 +4,19 @@
4
4
  peer ranges and the executable acceptance fixtures define compatibility; the
5
5
  profile does not promise support for every version of the framework.
6
6
 
7
- | Profile | Application dependency specifier | Fimo surface |
8
- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
9
- | `nextjs` | Next 16 is the current acceptance baseline; Fimo's React peer is `^18.2.0 \|\| ^19.0.0` and Next imposes its own React range | `fimo/next`, `fimo/next/client` |
10
- | `react-router` | React `^18.2.0 \|\| ^19.0.0`, React Router `^7.0.0 \|\| ^8.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/react-router`, `fimo/ui` |
11
- | `vite` | React `^18.2.0 \|\| ^19.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/ui`, `fimo/vite` |
12
- | `astro` | Astro `^5.0.0 \|\| ^6.0.0 \|\| ^7.0.0` | `fimo/astro`, `fimo/astro/components` |
13
- | `sveltekit` | SvelteKit `^2.0.0`, Svelte `^5.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/sveltekit`, `fimo/sveltekit/components`, `fimo/sveltekit/config`, `fimo/sveltekit/vite` |
14
- | `nuxtjs`, `remix`, `vue` | Hosting detection only; no Fimo content/runtime adapter yet | `fimo` hosting profile only |
7
+ | Profile | Application dependency specifier | Fimo surface |
8
+ | ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
9
+ | `nextjs` | Next 16 is the current acceptance baseline; Fimo's React peer is `^18.2.0 \|\| ^19.0.0` and Next imposes its own React range | `fimo/next`, `fimo/next/client` |
10
+ | `react-router` | React `^18.2.0 \|\| ^19.0.0`, React Router `^7.0.0 \|\| ^8.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/react-router`, `fimo/ui` |
11
+ | `vite` | React `^18.2.0 \|\| ^19.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/ui`, `fimo/vite` |
12
+ | `astro` | Astro `^5.0.0 \|\| ^6.0.0 \|\| ^7.0.0` | `fimo/astro`, `fimo/astro/components` |
13
+ | `sveltekit` | SvelteKit `^2.0.0`, Svelte `^5.0.0`, Vite `^7.0.0 \|\| ^8.0.0` | `fimo/sveltekit`, `fimo/sveltekit/components`, `fimo/sveltekit/config`, `fimo/sveltekit/vite` |
14
+ | `nuxtjs`, `remix`, `vue` | Hosting detection only; no Fimo content/runtime adapter yet | `fimo` hosting profile only |
15
+ | _(unset)_ | Anything else: a static generator, plain HTML, a custom build script. Declare `runtime.commands.build` and `runtime.outputDirectory` instead | Static output only; no adapter |
16
+
17
+ `runtime.framework` must match a dependency in `package.json`; a profile the
18
+ code does not use fails the production build. Shape and rules: `hosting.md`
19
+ § `runtime`.
15
20
 
16
21
  The exact versions used by acceptance fixtures are test baselines, not values
17
22
  to copy into an application. If a project falls outside a documented range,
@@ -4,20 +4,36 @@ Preserve the application's framework, router, routes, and 404 behavior. Fimo
4
4
  detects supported frameworks for preview and translates only the
5
5
  provider-neutral hosting settings the application explicitly owns.
6
6
 
7
- ## Production framework profile
7
+ ## `runtime`: how Fimo builds and serves the application
8
8
 
9
- Fimo detects conventional projects for preview. Before publishing, commit the
10
- matching profile in `.fimo/config.json`:
9
+ `.fimo/config.json#runtime` is the whole contract. Every key is optional:
11
10
 
12
11
  ```json
13
12
  {
14
- "runtime": { "framework": "nextjs" }
13
+ "runtime": {
14
+ "framework": "nextjs",
15
+ "commands": { "dev": "npm run dev", "build": "npm run build", "install": "npm ci" },
16
+ "outputDirectory": "dist"
17
+ }
15
18
  }
16
19
  ```
17
20
 
18
- Allowed values are `astro`, `nextjs`, `nuxtjs`, `react-router`, `remix`,
19
- `sveltekit`, `vite`, and `vue`. The field remains optional for legacy Fimo
20
- projects, which keep their existing static output contract.
21
+ | Key | Meaning | Resolution when unset |
22
+ | ----------------- | ------------------------------------------------------------------- | ----------------------------------------------------------- |
23
+ | `framework` | Production build profile. Must match a dependency in `package.json` | Preview detects; production uses the static-output profile |
24
+ | `commands.*` | The exact command for `dev`, `build`, `install` | Package script of the same name, then the framework default |
25
+ | `outputDirectory` | Folder the build command fills with the finished site | Framework default; `dist/client` (config v4) or `dist` |
26
+
27
+ `framework` values: `astro`, `nextjs`, `nuxtjs`, `react-router`, `remix`,
28
+ `sveltekit`, `vite`, `vue`. A value the code does not depend on fails the
29
+ production build. If none matches, leave it unset and set `commands.build` and
30
+ `outputDirectory`.
31
+
32
+ Keep `runtime` true to the code. Every `fimo init` shell writes its own
33
+ `framework`; after replacing the shell's code, re-check it. When you rename a
34
+ package script or move the build output, update `commands` and
35
+ `outputDirectory` in the same change. Do not add overrides a conventional
36
+ project does not need.
21
37
 
22
38
  Hosted preview and production inject the tenant API through these aliases:
23
39
 
@@ -90,14 +106,3 @@ editing an Astro config.
90
106
  `.fimo/config.json#routes` is the Studio page catalog, not deployment routing.
91
107
  Never generate hosting rewrites from it. If a project already has a
92
108
  provider-specific deployment file, preserve it; that file remains authoritative.
93
-
94
- ## Non-standard commands
95
-
96
- Use `runtime.commands.dev|build|install` only when normal package scripts and
97
- framework defaults are insufficient. Do not add overrides to conventional
98
- projects.
99
-
100
- Vite defaults to `dist` and React Router defaults to `dist/client`. If an
101
- existing project deliberately emits somewhere else, preserve that choice with
102
- `runtime.outputDirectory`; do not rewrite the application's build merely to
103
- match a Fimo default.
@@ -15,13 +15,13 @@ Only project members with Full Access can see Webhooks in Settings or manage its
15
15
  5. Optionally narrow form, agent, media, or entry events with the filter shown for that event.
16
16
  6. Review the request and select **Save**.
17
17
 
18
- The event groups are Entries, Forms, Publish, Agents, Analytics, Media, Domains, Labels, Locales, and Environments. Webhooks belong to the project, with up to 20 configurations. They listen to main by default or can include every environment.
18
+ The event groups are Entries, Forms, Publish, Agents, Analytics, Media, Domains, Labels, Locales, and Environments. Webhooks belong to the project, with up to 20 configurations. Choose the Main Branch, All Branches, Production, Automatic previews, or one custom Environment. Main Branch is the default.
19
19
 
20
20
  Entry webhooks show **Combine rapid changes**. The default waits 5 seconds after direct editing stops and sends one delivery with the combined changes. Immediate, 30-second, and 1-minute windows are also available. Bulk edits and environment merges already produce batches and send immediately.
21
21
 
22
22
  ## Configure the request
23
23
 
24
- The default payload is the complete Fimo event, including its type, project, environment, timestamp, and event-specific data. Keep this when the destination can accept it.
24
+ The default payload is the complete Fimo event, including its type, project, scalar Environment and Branch context, timestamp, and event-specific data. The legacy `env.name` Branch field remains available. Keep the complete payload when the destination can accept it.
25
25
 
26
26
  Choose **Custom template** when a service expects a specific JSON shape. Use **Insert variable** to pick fields for the selected event. Variables use paths such as `{{ event.data.submission.data.email }}`. The preview catches invalid JSON and missing variables before save.
27
27
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "bundled": true,
3
3
  "bundler": "esbuild",
4
- "bundledAt": "2026-08-17T19:28:55.753Z",
4
+ "bundledAt": "2026-08-18T21:01:40.352Z",
5
5
  "cliVersion": "0.15.0",
6
6
  "external": [
7
7
  "oxc-parser",