fimo 2.7.1 → 2.8.0-staging.2

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 (33) hide show
  1. package/assets/agent-templates/_default/GOAL.md +2 -2
  2. package/assets/agent-templates/_default/capabilities.yaml +1 -0
  3. package/assets/agent-templates/broken-link-sweeper/capabilities.yaml +0 -1
  4. package/assets/agent-templates/content-translator/GOAL.md +1 -2
  5. package/assets/agent-templates/content-translator/capabilities.yaml +1 -2
  6. package/assets/agent-templates/post-deploy-check/capabilities.yaml +0 -1
  7. package/assets/agent-templates/seo-audit/capabilities.yaml +0 -1
  8. package/assets/skills/fimo-cli/references/agents.md +28 -32
  9. package/assets/skills/fimo-cli/references/analytics.md +15 -1
  10. package/assets/skills/fimo-cli/references/update.md +12 -0
  11. package/assets/skills/fimo-code/SKILL.md +8 -0
  12. package/assets/skills/fimo-code/references/analytics.md +104 -0
  13. package/assets/skills/fimo-code/references/design.md +6 -6
  14. package/assets/skills/fimo-studio/SKILL.md +36 -36
  15. package/assets/skills/fimo-studio/references/ai-chat.md +9 -1
  16. package/assets/skills/fimo-studio/references/analytics.md +28 -0
  17. package/assets/skills/fimo-studio/references/billing-and-credits.md +10 -0
  18. package/assets/skills/fimo-studio/references/command-palette.md +1 -2
  19. package/assets/skills/fimo-studio/references/preview-and-responsive.md +0 -1
  20. package/assets/skills/fimo-studio/references/sharing-and-collaboration.md +3 -4
  21. package/assets/skills/fimo-studio/references/visual-editing.md +3 -3
  22. package/dist/cli/bundle.json +1 -1
  23. package/dist/cli/index.js +14 -14
  24. package/dist/runtime/templates.d.ts +1 -1
  25. package/dist/runtime/templates.js +1 -0
  26. package/package.json +8 -8
  27. package/release.json +2 -2
  28. package/templates/astro/package.json +2 -2
  29. package/templates/nextjs/package.json +3 -3
  30. package/templates/react-router/package.json +4 -4
  31. package/templates/sveltekit/package.json +2 -2
  32. package/templates/vite/package.json +4 -4
  33. package/assets/skills/fimo-studio/references/code-editor.md +0 -65
@@ -16,6 +16,6 @@ Adapt these defaults to the risk and scope of this agent:
16
16
 
17
17
  - Proceed without asking when the work is within scope and a safe, reversible choice exists.
18
18
  - Ask when a missing human decision changes what the correct result should be.
19
- - Retain when the work is complete but all changes should be reviewed before merge.
20
- - Request merge only when the result is complete, verified, and clearly safe for this agent's scope.
19
+ - Keep work open and request review when a human decision or approval is needed.
20
+ - Merge completed, verified work within scope when runtime:auto_merge is granted; otherwise request human review.
21
21
  - Discard when the run produced no useful changes or deliberately abandoned them.
@@ -8,3 +8,4 @@
8
8
  - fimo:history:read
9
9
  - fimo:logs:read
10
10
  - fimo:preview:read
11
+ - runtime:auto_merge
@@ -1,2 +1 @@
1
- - net:fetch
2
1
  - fimo:analytics:read
@@ -16,8 +16,7 @@ JSON files or put translated values in source code.
16
16
  For each entry:
17
17
 
18
18
  1. Read the default-locale field via `cms:read`.
19
- 2. Translate to every missing locale (via `net:fetch` to your translation
20
- provider of choice).
19
+ 2. Translate to every missing locale.
21
20
  3. Write the translation back to the matching locale entry via `cms:write`.
22
21
  4. For static UI labels, update values with the i18n/labels API rather
23
22
  than editing files.
@@ -1,6 +1,5 @@
1
- # Reads CMS and writes DB-backed localized content / labels. Net is for the translation provider.
1
+ # Reads CMS and writes DB-backed localized content / labels.
2
2
  - cms:read
3
3
  - cms:write
4
4
  - i18n:read
5
5
  - i18n:write
6
- - net:fetch
@@ -1,2 +1 @@
1
- - net:fetch
2
1
  - fimo:logs:read
@@ -1,4 +1,3 @@
1
1
  # Read-only audit — no writes to project files or CMS.
2
2
  - cms:read
3
- - net:fetch
4
3
  - fimo:analytics:read
@@ -77,25 +77,20 @@ runtime:
77
77
  All four keys are optional; an absent `runtime` block behaves as if every key were unset. There is no platform step cap
78
78
  and no platform per-run cost ceiling — the only stops are these author-owned limits, the organization running out of
79
79
  credits (`insufficient_credits`), and the agent-hours allowance. A limit that fires records a truthful terminal reason
80
- (`max_steps`, `budget_exceeded`, `insufficient_credits`, or `finish_run_missing` when a run ends without calling
81
- `finish_run`), readable via `fimo agents report` and the Studio run page.
80
+ (`max_steps`, `budget_exceeded`, or `insufficient_credits`), readable via `fimo agents report` and the Studio run page.
82
81
 
83
82
  ## How a cloud run ends
84
83
 
85
- Fimo creates one task Branch and environment for a cloud run, tells the agent their names, and manages their lifecycle.
86
- The agent works only in that checkout. Extra branches, worktrees, and `git push` are unsupported and cannot be cleaned up
87
- or handed off correctly.
84
+ Runs perform compute; explicit work sessions hold project changes. Ordinary conversation and research need no session.
85
+ Project operations name their session. Save accumulated work before a risky operation or handoff. A confirmed save
86
+ commits and pushes without merging or publishing; Fimo also attempts a bounded save when compute ends.
88
87
 
89
- - **Merge** when the work is ready for the target Branch. Fimo applies the complete task environment or, if it conflicts,
90
- leaves the target unchanged and keeps the work for review without choosing a side.
91
- - **Retain** when the completed work should be reviewed before merge, or when the run stops, fails, or may need recovery.
92
- Fimo leaves the target unchanged, keeps the complete task Branch, and sends an Inbox notification asking a person to
93
- review all of its changes. A later follow-up can continue from that retained work.
94
- - **Discard** when none of the run's work should be applied, including when it made no useful changes or deliberately
95
- abandoned an approach. This permanently deletes the task Branch and every change in it without review.
88
+ Merge ready work explicitly. Resolve clear conflicts through the existing merge tools; ask when the resolution requires
89
+ product intent. Request review with one sessionId; request_review saves current work itself and makes that same session visible and durable. Inspecting or leaving a session open creates no review.
90
+ Discard only unwanted work within the requested scope. Ending a run does none of these operations implicitly.
96
91
 
97
- If the agent exits without a decision, Fimo retains the task Branch. `fimo deploy` inside a run may build a preview of
98
- that Branch for inspection or screenshots; it does not finish or hand off the run.
92
+ The autonomous `report` tool records a structured report without ending compute or deciding session fate. The model may
93
+ continue working after reporting. A normal model stop ends compute. Scheduled work has no implicit publication grant.
99
94
 
100
95
  The run report is a concise outcome summary: what changed, what was verified, and what is still blocked. It is not a
101
96
  chronological account, and it should not use decorative emoji.
@@ -106,18 +101,22 @@ When authoring or editing an agent, add a short **Decision policy** to its `GOAL
106
101
  acting, asking, review, and merge; do not copy Fimo's tool protocol. Use this shape and replace the examples with rules
107
102
  specific to the agent:
108
103
 
104
+ Infer the intended autonomy from the user's request when it is clear. Otherwise ask what the agent may apply itself,
105
+ what needs review, and whether it may publish. Record that policy in `GOAL.md`; do not impose review-first on every
106
+ agent or treat permission to merge as permission to publish. A routine fixer and a proposal writer need different policies.
107
+
109
108
  ```md
110
109
  ## Decision policy
111
110
 
112
111
  - Proceed without asking when the work is within scope and a safe, reversible choice exists.
113
112
  - Ask when a missing human decision changes what the correct result should be.
114
- - Retain when the work is complete but all changes should be reviewed before merge.
113
+ - Request review of the saved session when completed work needs a person's approval before merge.
115
114
  - Request merge only when the result is complete, verified, and clearly safe for this agent's scope.
116
115
  - Discard when the run produced no useful changes or deliberately abandoned them.
117
116
  ```
118
117
 
119
- Asking and review are different: `ask_user` is for a decision required before correct work can continue; `retain` ends
120
- the run with its complete proposal waiting for review and does not ask a question.
118
+ `ask_user` requests a blocking decision and ends the current invocation. `request_review` saves and captures one selected session for approval
119
+ without ending compute. Neither operation merges or discards sessions.
121
120
 
122
121
  Make those rules concrete enough that the agent can decide without guessing. For example:
123
122
 
@@ -126,8 +125,7 @@ Make those rules concrete enough that the agent can decide without guessing. For
126
125
  verification is blocked. Discard when the scan is clean or exploratory edits were reverted.
127
126
  - **Launch-copy agent:** draft from an approved brief without asking about routine wording. Ask before choosing pricing,
128
127
  product promises, brand direction, or deletions. Retain every completed draft for human review; never request merge.
129
- - **Read-only auditor:** inspect and report autonomously. Ask only when the requested scope cannot be inferred. Discard
130
- the unchanged task environment after recording the report.
128
+ - **Read-only auditor:** inspect and report autonomously. Ask only when the requested scope cannot be inferred.
131
129
  - **Missing capability:** ask once for the exact capability and explain which operation it unlocks. Do not retain partial
132
130
  work as a substitute for the blocking permission decision.
133
131
 
@@ -144,9 +142,8 @@ A review-first content agent could use this complete policy:
144
142
  ```
145
143
 
146
144
  When a run cannot continue correctly without a decision from a project member, it may call `ask_user` instead. The
147
- question goes to the Fimo Inbox, the current invocation ends, and Fimo keeps the same task Branch and environment until
148
- an authorized member answers. The answer starts one ordinary continuation in the same run thread; the original model
149
- process does not wait.
145
+ question goes to the Fimo Inbox and the current invocation ends. It can reference zero or more sessions. An authorized
146
+ answer starts a continuation in the same thread; the referenced work stays open and the original model process does not wait.
150
147
 
151
148
  Use `ask_user` sparingly, especially from scheduled agents:
152
149
 
@@ -156,7 +153,7 @@ Use `ask_user` sparingly, especially from scheduled agents:
156
153
  - Use choices for compact text options. Use cards only when an option benefits from an image or a richer title and
157
154
  subtitle. Use assets when the image itself is the answer, and tables when options need the same structured comparison.
158
155
  - Do not repeat a question or request already waiting in prior run history.
159
- - Use `finish_run` with `retain` when the work is ready for review but no answer is required.
156
+ - Use `request_review` with one sessionId when approval is needed. No pre-save or promotion is required; other sessions stay unchanged and work can continue.
160
157
 
161
158
  An agent may include one multi-select `capabilities` step in that same form to request public Fimo capabilities it does
162
159
  not currently hold. Group related tokens in one request. Selected tokens apply only to the continuation started by that
@@ -169,7 +166,7 @@ behavior. Keep it under 4 KB, record no secrets or run log, and prune stale entr
169
166
 
170
167
  When three or more earlier runs still await a question answer, review, conflict resolution, or recovery, the agent
171
168
  normally starts no new independent work. Unless the current trigger explicitly asks it to proceed anyway, it makes no
172
- changes and finishes with `discard` and a brief report of what is waiting.
169
+ changes and records a brief report of what is waiting.
173
170
 
174
171
  ## Define reporting preferences when they matter
175
172
 
@@ -208,11 +205,11 @@ audience or emphasis. Even then, the brief remains the external handoff and the
208
205
 
209
206
  ## Capabilities
210
207
 
211
- Capabilities describe the opt-in Fimo and network actions an agent may take. Managed agents always receive project
212
- filesystem access, a shell, and the ability to commit their task-environment changes; Fimo owns branch creation and
213
- publication. If `capabilities.yaml` is absent or empty, the agent keeps baseline project reads such as agent run history,
214
- but receives no CMS, asset, or other domain-operation scope and no web-fetch tool. Once you add a capabilities file,
215
- list every Fimo or network permission the agent needs.
208
+ Capabilities describe the opt-in Fimo actions an agent may take. Managed agents always receive project filesystem
209
+ access, a shell, the ability to commit their task-environment changes, and web and data tools; Fimo owns branch creation
210
+ and publication. If `capabilities.yaml` is absent or empty, the agent keeps baseline project reads such as agent run
211
+ history, but receives no CMS, asset, or other domain-operation scope. Once you add a capabilities file, list every Fimo
212
+ permission the agent needs. `net:fetch` is no longer needed and is ignored.
216
213
  Namespace selectors such as `cms:*`, `assets:*`, `i18n:*`, and `forms:*` grant every current and future declarable capability
217
214
  in that namespace. Fimo expands selectors to concrete grants when a run starts. Use exact tokens for narrower agents.
218
215
  The default template includes those four selectors plus read access to analytics, deployment logs, history, previews,
@@ -238,9 +235,8 @@ webhooks, and schedules; remove entries when an agent should have less access.
238
235
  | `fimo:preview:read` | Read a current preview URL | Low |
239
236
  | `fimo:history:read` | Read project restore points | Low |
240
237
  | `fimo:deploy` | Trigger a production deploy | Critical |
241
- | `net:fetch` | Make outbound HTTP requests | Medium |
242
238
  | `agent:delegate` | Invoke declared sub-agents | Medium |
243
- | `runtime:auto_merge` | Auto-merge trivial proposed branches | Critical |
239
+ | `runtime:auto_merge` | Merge work sessions without per-change review | Critical |
244
240
 
245
241
  If a public Fimo capability is missing and the work is genuinely blocked, the agent can request it through `ask_user`.
246
242
  Fimo grants only the selected subset to the next invocation in that run thread. Unknown capabilities, internal runtime
@@ -282,7 +278,7 @@ fimo agents report <name> [--session <id>] [--branch <branch>] [--project <id>]
282
278
  A refusal that clears on its own (`agent-paused`, `run-in-progress`, `task-branch-budget`) exits **0** and prints `Dispatch was skipped: <reason>`. **Pre-flight drift check**: if `.fimo/agents/<name>/` (or the legacy root bundle) has uncommitted git changes, the command refuses — the server would dispatch the _deployed_ version, so deploy first. Pass `--skip-drift-check` to dispatch the deployed bundle anyway. Defaults `--branch` to `main`.
283
279
 
284
280
  - **`runs <name>`** — list past run sessions for the agent in a compact table (id, started, duration, status, trigger, Branch, credits — settled credit consumption, `—` until a run settles). Default `--limit 20`; `--branch` filters to one Branch. The response uses the canonical `branch` field.
285
- - **`report <name>`** — print a run's structured **report**: its durable outcome summary (for a read-only agent like `seo-audit` this _is_ the audit; for a write agent it's a "what I changed" summary). A run that returns plain text without calling `finish_run` receives a small structured fallback document. With no `--session`, the most recent run for `<name>` is used (combine with `--branch` to scope); `--session <id>` targets a specific run. Output is projected Markdown, so it stays readable in the terminal and pipes cleanly (e.g. `fimo agents report seo-audit | glow`). If the run hasn't finished, or produced no report, it says so (and shows the stop reason when there is one).
281
+ - **`report <name>`** — print a run's structured **report**: its durable outcome summary (for a read-only agent like `seo-audit` this _is_ the audit; for a write agent it's a "what I changed" summary). A run that returns plain text without calling `report` receives a small structured fallback document. With no `--session`, the most recent run for `<name>` is used (combine with `--branch` to scope); `--session <id>` targets a specific run. Output is projected Markdown, so it stays readable in the terminal and pipes cleanly (e.g. `fimo agents report seo-audit | glow`). If the run hasn't finished, or produced no report, it says so (and shows the stop reason when there is one).
286
282
 
287
283
  ## How triggers get wired
288
284
 
@@ -1,9 +1,23 @@
1
1
  # Analytics workflow
2
2
 
3
- Pageview aggregates for the **published** site are stored in Fimo's analytics pipeline. Preview traffic is not recorded.
3
+ Pageview aggregates are read for the selected branch. Fimo production builds enable
4
+ the React Router tracker; hosted preview builds disable it. Ingestion itself accepts
5
+ resolved branches, so do not assume that every possible preview sender is excluded.
6
+
7
+ For tracking setup, load `fimo-code`. Reading analytics does not install a tracker.
8
+ If counts are zero, check the selected branch, built scripts, enabled setting,
9
+ browser requests and stored results before diagnosing a missing implementation.
10
+ A successful HTTP response alone does not establish that a row was stored.
11
+ Use `fimo-code` analytics setup for the standalone `fimo-analytics` APIs.
12
+ Confirm that the selected package release contains them before generating imports;
13
+ older Fimo releases and existing published sites do not acquire a tracker automatically.
4
14
 
5
15
  Analytics has a **retained preview for every org** — free included. The free default is a 7-day retention window, so short ranges (`today`, `yesterday`, `this_week`, `last_week`, `last_7_days`) work for everyone. **Extended date ranges and longer retention are paid** — `last_30_days`, `last_90_days`, `this_month`, `last_month`, `last_quarter`, `last_year`, and `custom` require the `canUseExtendedDateRanges` privilege, which only paid orgs have. Asking for an extended range as a free user returns a 403 with an upgrade hint.
6
16
 
17
+ For Studio tracking verification, load `fimo-studio` and its analytics reference.
18
+ Its tracking status is independent of the chart range and device filter; a failed
19
+ status check is not evidence of missing tracking.
20
+
7
21
  ## Select published traffic
8
22
 
9
23
  For traffic, growth, or site-performance questions, read **`prod`**, regardless of the current Git branch, `FIMO_ENV`, or the source branch published to Production. Analytics reads (`pageviews`, `top`, `annotations list`) default to this canonical published target. On older CLI versions, select it explicitly:
@@ -22,6 +22,18 @@ What it refuses to touch:
22
22
  - `file:` and development-tarball pins select a development build on purpose; they are reported as blockers, never replaced.
23
23
  - Ambiguous imports (template literals, `fimo/astro/config`) are reported as manual steps instead of guessed at.
24
24
 
25
+ ## Analytics when updating
26
+
27
+ Existing analytics tracking remains supported. Keep the existing integration;
28
+ do not add a second tracker. If the project declares `fimo-analytics`, the
29
+ update keeps it aligned with the other Fimo packages.
30
+
31
+ Updating a project without a tracker does not enable analytics. If analytics
32
+ is wanted, load `fimo skills get fimo-code --ref analytics` and check for any
33
+ existing tracker before adding one. After the developer publishes the update,
34
+ verify new pageviews in Studio. Existing analytics history remains available.
35
+ The update command itself does not publish the website.
36
+
25
37
  ## Reading the report
26
38
 
27
39
  `--json` returns one envelope whose `data` is stable for agents:
@@ -76,6 +76,14 @@ Each reference defines one package contract. Fetch it when the task reaches that
76
76
  - Framework detection, production routing, and hosting adapters → `references/frameworks/hosting.md`
77
77
  - Major visual work → `references/design.md`
78
78
 
79
+ ## Analytics
80
+
81
+ For pageview installation, read [references/analytics.md](references/analytics.md).
82
+ `FimoProviders` from `fimo-react-router` already tracks when `VITE_API_URL` and
83
+ `VITE_ENABLE_ANALYTICS=true` are configured. Inspect the installed version and
84
+ browser requests before adding a sender. Hosting or the neutral Vite plugin alone
85
+ does not install a tracker. Older releases do not acquire new package exports.
86
+
79
87
  ## Non-negotiable boundaries
80
88
 
81
89
  - Do not hardcode editor-owned collections, page content, labels, or media in JSX.
@@ -0,0 +1,104 @@
1
+ # Pageview tracking
2
+
3
+ First inspect the installed package and the built page. React Router's
4
+ `FimoProviders` already tracks when `VITE_API_URL` and
5
+ `VITE_ENABLE_ANALYTICS=true` are present. Do not mount another sender beside an
6
+ unmodified legacy tracker. The neutral Vite plugin and hosting alone do not
7
+ install tracking.
8
+
9
+ ## Standalone setup
10
+
11
+ Install a released version of `fimo-analytics` that exposes the adapter you need.
12
+ Keep any version/channel selector the user already chose. An older `fimo`
13
+ release does not imply these standalone APIs exist, and existing published
14
+ sites need a code update to gain missing instrumentation.
15
+
16
+ ```sh
17
+ pnpm add fimo-analytics
18
+ ```
19
+
20
+ Obtain the tenant API base URL from the project's configured Fimo connection,
21
+ and append `/e/p`. Pass that complete URL as `endpoint`. Never infer it from the
22
+ site's public URL, guess a project hostname, or invent a discovery command. If
23
+ the connection does not supply a tenant endpoint, obtain it before enabling
24
+ tracking. A configured origin-relative proxy is also accepted.
25
+
26
+ | Framework | Import | Placement |
27
+ | -------------- | --------------------------------------------------- | -------------------------------------------- |
28
+ | React | `{ Analytics }` from `fimo-analytics/react` | Application root |
29
+ | React Router | `{ Analytics }` from `fimo-analytics/react-router` | Inside root router |
30
+ | Next App/Pages | `{ Analytics }` from `fimo-analytics/next` | Root layout or `_app` |
31
+ | Astro | default `Analytics` from `fimo-analytics/astro` | Shared layout, no `client:*` |
32
+ | Svelte | default `Analytics` from `fimo-analytics/svelte` | Root component |
33
+ | SvelteKit | default `Analytics` from `fimo-analytics/sveltekit` | Root `+layout.svelte` |
34
+ | Vue | `{ Analytics }` from `fimo-analytics/vue` | Root component, history routing |
35
+ | Nuxt | `modules: ['fimo-analytics/nuxt']` | `analytics: { endpoint, enabled }` in config |
36
+
37
+ Components accept `endpoint` and `enabled`. React example:
38
+
39
+ ```tsx
40
+ import { Analytics } from 'fimo-analytics/next';
41
+ <Analytics endpoint={endpoint} enabled={isProduction} />;
42
+ ```
43
+
44
+ For Nuxt, also install the optional build peer with `pnpm add -D @nuxt/kit`.
45
+ Next owns its client and Suspense boundaries. SvelteKit uses committed
46
+ navigation; Nuxt covers reused pages and query changes. Generic React, Vue and
47
+ Svelte observe history. For a router that changes the URL before committing,
48
+ use the manual core. For Vue Router, initialize in `onMounted` after initial
49
+ router readiness, send once, subscribe to `router.afterEach`, send only when
50
+ `failure` is falsy, and remove the subscription and destroy on unmount.
51
+
52
+ ```ts
53
+ import { init } from 'fimo-analytics';
54
+ const analytics = init({ endpoint, enabled: isProduction, routing: 'manual' });
55
+ // In the router's successful-navigation callback:
56
+ analytics.pageview();
57
+ // During cleanup:
58
+ analytics.destroy();
59
+ ```
60
+
61
+ Vanilla apps can omit `routing` to track the initial page and browser history.
62
+ Hash routers can pass `{ path: resolvedVirtualPath, pageName }` to `pageview`;
63
+ the React Router adapter already reads its router's virtual location.
64
+
65
+ For plain HTML, copy the installed `dist/browser.js` into static assets:
66
+
67
+ ```html
68
+ <script defer src="/fimo-analytics.js" data-endpoint="https://YOUR-TENANT-API-HOST/e/p" data-enabled="true"></script>
69
+ ```
70
+
71
+ Use a classic script, not `type="module"`. Set `data-enabled="false"` in preview
72
+ builds. No framework peer is required for core or HTML. Framework peers are
73
+ optional and only the chosen adapter's framework is needed.
74
+
75
+ ## Choose the enabled guard
76
+
77
+ Tracking defaults to enabled, so always pass `enabled`. Never use `NODE_ENV`:
78
+ a Fimo hosted preview is a production build, so that guard leaves previews
79
+ reporting. Read the build variable Fimo already sets:
80
+
81
+ | Framework | Guard |
82
+ | ------------------------- | -------------------------------------------------- |
83
+ | React Router and any Vite | `import.meta.env.VITE_ENABLE_ANALYTICS === 'true'` |
84
+ | Next.js | `process.env.NEXT_PUBLIC_FIMO_ENV === 'prod'` |
85
+ | Build-time server env | `process.env.FIMO_ENV === 'prod'` |
86
+
87
+ Astro, SvelteKit, Svelte and Vue have no browser-visible environment name from
88
+ Fimo. Read `FIMO_ENV` at build time and pass the boolean into the bundle through
89
+ the framework's own public-variable mechanism. Do not invent a `PUBLIC_FIMO_ENV`
90
+ and do not expose the whole environment name when a boolean is enough.
91
+
92
+ ## Verify the installed integration
93
+
94
+ Standalone tracking defaults to enabled. Supply an explicit production guard;
95
+ `bl_preview_token` also suppresses sends. SSR and disabled calls are inert.
96
+ Do not add browser secrets, project IDs or branch claims to payloads.
97
+
98
+ Verify one initial POST, navigation, query-only changes, back/forward and a
99
+ route revisit. Check duplicate mounts and cleanup. Existing visitor/session
100
+ storage keys are retained; blocked storage uses per-document IDs. Delivery is
101
+ best effort and has no retries. A 202 response alone does not prove persistence;
102
+ check recorded analytics separately. Framework peer ranges are not proof that
103
+ every older framework release was tested. Use the installed package's version
104
+ qualification and preserve existing supported integrations when upgrading.
@@ -24,7 +24,7 @@ Before coding, understand the context and commit to a BOLD aesthetic direction:
24
24
  ## Frontend aesthetics guidelines
25
25
 
26
26
  - **Typography**: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt for distinctive choices. Pair a distinctive display font with a refined body font. Limit to 2 font families total.
27
- - **Color & Theme**: Commit to a cohesive aesthetic. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. Reserve high-saturation colors for small actionable elements (icons, charts, buttons). Maintain WCAG AA contrast (4.5:1 body, 3:1 large text). Write palette values into the shadcn CSS variables in `src/index.css` — see `references/ui.md` for the Tailwind integration.
27
+ - **Color & Theme**: Commit to a cohesive aesthetic. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. Reserve high-saturation colors for small actionable elements (icons, charts, buttons). Maintain WCAG AA contrast (4.5:1 body, 3:1 large text). Put palette values in the project's existing theme tokens instead of hard-coding colors in components.
28
28
  - **Motion**: Use animations for effects and micro-interactions. Prioritize CSS-only solutions; use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
29
29
  - **Spatial Composition**: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density. Dramatic whitespace contrast: tight clusters + generous breathing room.
30
30
  - **Backgrounds & Visual Details**: Create atmosphere and depth rather than defaulting to solid colors — gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, grain overlays.
@@ -101,13 +101,13 @@ Example: "**Linear meets Stripe** — polished SaaS with premium editorial touch
101
101
  ### Color & Theme
102
102
 
103
103
  - **Like:** Reference site(s) for color inspiration
104
- - **Background:** Primary background color (hex → `--background`)
105
- - **Foreground:** Primary text color (hex → `--foreground`)
106
- - **Accent:** Primary accent color (hex → `--primary`)
104
+ - **Background:** Primary background color (hex)
105
+ - **Foreground:** Primary text color (hex)
106
+ - **Accent:** Primary accent color (hex)
107
107
  - **Secondary accents:** Additional colors if needed
108
108
  - **Dark mode:** Direction for dark mode palette (if applicable)
109
109
 
110
- Write into `src/index.css` as shadcn CSS variables, then use `bg-background` / `text-foreground` / `bg-primary` in components.
110
+ Write these into the project's existing theme tokens and reference the tokens from components.
111
111
 
112
112
  ### Motion & Interaction
113
113
 
@@ -130,7 +130,7 @@ If the user hasn't supplied images and one is needed, run `fimo image generate -
130
130
 
131
131
  - **Like:** Reference site(s) for icon style
132
132
  - **Style:** Line icons, filled, duotone, custom
133
- - **Library:** Lucide (already in the template), Heroicons, custom, or none
133
+ - **Library:** the icon set the project already uses, a custom set, or none
134
134
  - **Usage:** Sparse and meaningful vs. decorative
135
135
 
136
136
  ### Quality Bar
@@ -29,42 +29,42 @@ Use plain, friendly language. Describe what users see, where they click, and wha
29
29
 
30
30
  Read the relevant reference file when the user's question matches a topic.
31
31
 
32
- | Topic | Reference | When to read |
33
- | ------------------------ | --------------------------------------- | ----------------------------------------------------- |
34
- | Command Palette | references/command-palette.md | "What can I open with Cmd+K?", "Quick actions" |
35
- | Publish & Deploy | references/publish-and-deploy.md | "How do I publish?", "How do I make my site live?" |
36
- | Custom Domains | references/custom-domains.md | "How do I use my own domain?", "DNS setup" |
37
- | Content Management (CMS) | references/cms.md | "How does the CMS work?", "How do I add blog posts?" |
38
- | Media Library | references/media-library.md | "How do I upload images?", "Where are my files?" |
39
- | AI Chat | references/ai-chat.md | "What can the AI do?", "How do I give context?" |
40
- | Code Editor | references/code-editor.md | "How do I edit code?", "Where are my files?" |
41
- | SEO Settings | references/seo-settings.md | "How do I set up SEO?", "Favicon, title, share image" |
42
- | Agents | references/agents.md | "Run an agent", "Pause an agent", "Next agent run" |
43
- | Schedules | references/schedules.md | "Recurring commands", "Run history", "Run now" |
44
- | Webhooks | references/webhooks.md | "React to forms", "Send events to another service" |
45
- | Connections | references/connections.md | "Connect a service", "Add an MCP server" |
46
- | Preview & Responsive | references/preview-and-responsive.md | "How does it look on mobile?", "How do I test sizes?" |
47
- | Visual Editing | references/visual-editing.md | "Can I edit visually?", "How do I change colors?" |
48
- | Version History | references/version-history.md | "How do I undo?", "How do I go back?" |
49
- | Sharing & Collaboration | references/sharing-and-collaboration.md | "How do I share?", "How do I invite someone?" |
50
- | Project Creation | references/project-creation.md | "How do I start a new project?" |
51
- | Billing & Credits | references/billing-and-credits.md | "What are credits?", "How do I upgrade?" |
52
- | Drawing & Wireframing | references/drawing-and-wireframing.md | "How do I sketch my idea?" |
32
+ | Topic | Reference | When to read |
33
+ | ------------------------ | --------------------------------------- | ------------------------------------------------------------------ |
34
+ | Command Palette | references/command-palette.md | "What can I open with Cmd+K?", "Quick actions" |
35
+ | Publish & Deploy | references/publish-and-deploy.md | "How do I publish?", "How do I make my site live?" |
36
+ | Analytics | references/analytics.md | "Is tracking working?", "Why are analytics empty?" |
37
+ | Custom Domains | references/custom-domains.md | "How do I use my own domain?", "DNS setup" |
38
+ | Content Management (CMS) | references/cms.md | "How does the CMS work?", "How do I add blog posts?" |
39
+ | Media Library | references/media-library.md | "How do I upload images?", "Where are my files?" |
40
+ | AI Chat | references/ai-chat.md | "What can the AI do?", "How do I give context?" |
41
+ | SEO Settings | references/seo-settings.md | "How do I set up SEO?", "Favicon, title, share image" |
42
+ | Agents | references/agents.md | "Run an agent", "Pause an agent", "Next agent run" |
43
+ | Schedules | references/schedules.md | "Recurring commands", "Run history", "Run now" |
44
+ | Webhooks | references/webhooks.md | "React to forms", "Send events to another service" |
45
+ | Connections | references/connections.md | "Connect a service", "Add an MCP server" |
46
+ | Preview & Responsive | references/preview-and-responsive.md | "How does it look on mobile?", "How do I test sizes?" |
47
+ | Visual Editing | references/visual-editing.md | "Can I edit visually?", "How do I change colors?" |
48
+ | Version History | references/version-history.md | "How do I undo?", "How do I go back?" |
49
+ | Sharing & Collaboration | references/sharing-and-collaboration.md | "How do I share?", "How do I invite someone?" |
50
+ | Project Creation | references/project-creation.md | "How do I start a new project?" |
51
+ | Billing & Credits | references/billing-and-credits.md | "What are credits?", "How do I upgrade?", "How do referrals work?" |
52
+ | Drawing & Wireframing | references/drawing-and-wireframing.md | "How do I sketch my idea?" |
53
53
 
54
54
  ## Cross-feature references
55
55
 
56
- | When user asks about... | Also mention... |
57
- | ----------------------- | ------------------------------------------------------------------------------ |
58
- | Publishing | SEO settings, Custom domains |
59
- | Custom domains | Publishing (must publish first), Billing (premium required) |
60
- | Adding images | Media Library, AI Chat, Edit Mode |
61
- | Content/CMS | AI Chat, Media Library |
62
- | Webhooks | Project secrets, Forms, Publishing, Agents |
63
- | Connections | AI Chat, Agents, Project secrets |
64
- | Agents | Connections, Project secrets, Branches |
65
- | Schedules | Project secrets, Environments, Agents |
66
- | Visual changes | Edit Mode (quick tweaks), AI Chat (bigger changes), Code Editor (full control) |
67
- | Something went wrong | Version History, AI Chat |
68
- | Working with others | Sharing, Collaboration |
69
- | Starting a project | Preview & Responsive, Publish & Deploy |
70
- | Running out of credits | Billing |
56
+ | When user asks about... | Also mention... |
57
+ | ----------------------- | -------------------------------------------------------------------- |
58
+ | Publishing | SEO settings, Custom domains |
59
+ | Custom domains | Publishing (must publish first), Billing (premium required) |
60
+ | Adding images | Media Library, AI Chat, Edit Mode |
61
+ | Content/CMS | AI Chat, Media Library |
62
+ | Webhooks | Project secrets, Forms, Publishing, Agents |
63
+ | Connections | AI Chat, Agents, Project secrets |
64
+ | Agents | Connections, Project secrets, Branches |
65
+ | Schedules | Project secrets, Environments, Agents |
66
+ | Visual changes | Edit Mode (CMS content), AI Chat (layout, styling, and code changes) |
67
+ | Something went wrong | Version History, AI Chat |
68
+ | Working with others | Sharing, Collaboration |
69
+ | Starting a project | Preview & Responsive, Publish & Deploy |
70
+ | Running out of credits | Billing |
@@ -13,7 +13,7 @@ On desktop, the AI chat opens docked on the left by default. You can make it flo
13
13
 
14
14
  The AI can place choices, cards, tables, images, and contextual actions directly in its reply. Optional suggestions do not interrupt the conversation.
15
15
 
16
- When the AI needs an answer before it can continue, it pins a form directly above the message box and waits for your response. The form stays there while you scroll the conversation; the message that asked shows **Waiting for your answer...** in its place in the history. Select **Minimize** to fold the form to one line without losing your answers, then select that line to reopen it. **Submit** sends only the completed form and leaves anything typed in the message box unsent. Sending from the message box includes any selections already made in the form with your message; with no selections, it is an ordinary reply. A form with many steps scrolls inside its own area, and its **Next** / **Submit** buttons stay in view.
16
+ When the AI needs an answer before it can continue, it pins a form directly above the message box and waits for your response. While the question is the last message, the form stays there as you scroll the conversation; the message that asked shows **Waiting for your answer...** in its place in the history. If you send a message that does not answer it, the question moves back to its place in the history, folded to one line with an orange **?**. Select it to open it there and answer it at any time, with an optional note from **Add a note**; the answer is sent as a new message at the end of the chat. An answered question shows a gray check next to its title. Select **Minimize** to fold the form to one line without losing your answers, then select that line to reopen it. **Submit** sends only the completed form and leaves anything typed in the message box unsent. Sending from the message box includes any selections already made in the form with your message; with no selections, it is an ordinary reply and the question stays open. A form with many steps scrolls inside its own area, and its **Next** / **Submit** buttons stay in view.
17
17
 
18
18
  ## Attaching Context
19
19
 
@@ -39,6 +39,14 @@ To halt the AI mid-generation, use the **Stop button** in the input bar — whil
39
39
 
40
40
  While the AI works, you see small badges in the chat showing what it is doing. Each badge displays a tool name and its current status. Examples include reading files, writing code, searching your project, or generating images. These badges help you follow along without needing to understand the technical details.
41
41
 
42
+ ## Reviewing Proposals
43
+
44
+ Ask the AI to keep alternatives as named proposals. Open the Branch picker and choose one from **Proposals** to preview its work. Each proposal has its own changes. The picker follows visibility: internal work stays hidden even when saved, durable, or given more time. Extending retention does not show the work.
45
+
46
+ A review request saves the selected session's current work and makes that same session visible and durable. Follow its review card to the proposal, or its Preview and Changes links from chat, Slack, or an agent report. These links open the current Branch in Studio and require project access. A review request refers to saved work: if that work changes, request a new review before merging. Exploring or merging proposal B keeps A, C, and D available unless you ask to discard them. Merging does not publish the site.
47
+
48
+ Delete a proposal from the Branch picker when you no longer need it. Pull is unavailable for proposals; ask the AI to update the proposal instead. New Branch defaults to the proposal's upstream. Merge the proposal first if you want to create a Branch from its changes.
49
+
42
50
  ## Reviewing Changes That Could Not Merge
43
51
 
44
52
  Chat changes are prepared separately and then applied to the environment you are viewing. Most changes merge automatically.
@@ -0,0 +1,28 @@
1
+ # Analytics
2
+
3
+ Open **Analytics** in the project's workspace navigation. It may be inside
4
+ **More** at narrower desktop widths. This workspace reports the published site,
5
+ regardless of the editing branch currently selected.
6
+
7
+ Publishing alone does not confirm pageview tracking. Before publication, the
8
+ page offers setup guidance without an **Open site** link.
9
+
10
+ For a published site:
11
+
12
+ - **Waiting for the first pageview** means no pageviews are stored for it.
13
+ **Open site** lets the user visit the published address. **Set up tracking**
14
+ opens the installation guide. A visit must run a configured tracker to count.
15
+ - **Pageviews received** shows the last pageview timestamp across available
16
+ history. Changing the chart's date range or device filter does not reset it.
17
+ Earlier traffic proves tracking worked then, not that a later deployment
18
+ still sends events.
19
+ - **Tracking status unavailable** means the status could not be checked.
20
+ **Check again** retries it. Do not interpret this as an uninstalled tracker.
21
+ Charts that loaded successfully remain visible.
22
+
23
+ Studio checks every 15 seconds while waiting in a visible tab. The first
24
+ pageview refreshes the charts automatically. Processing may take longer than
25
+ one check. Do not diagnose a missing tracker from zero chart counts alone.
26
+
27
+ Users need analytics viewing permission. Date ranges and grouping apply to the
28
+ charts; available history depends on the organization's analytics access.
@@ -17,6 +17,16 @@ Look for the **coin icon with a number** near the chat send button. That number
17
17
 
18
18
  From a linked project directory, `fimo credits` shows the same organization balance in the CLI. Its "Available now" total already includes the visible buckets.
19
19
 
20
+ ## Referral progress
21
+
22
+ Open **Earn free credits** from the project header (or the project menu on mobile), then use **Copy** inside the link field.
23
+
24
+ - **Signed up** counts people who registered through your link, including those who later published. Link visits do not count.
25
+ - **Published** counts people who published their first project, not the number of projects they publish.
26
+ - **AI credits earned** shows inviter rewards already credited to you. It excludes your own bonus for joining through someone else's link; a publication can appear before its reward is credited.
27
+
28
+ Each signup uses one of the five referral slots. Publishing unlocks the reward but does not reopen a slot. The dialog shows signups used and how many people have not published yet. **Terms and Conditions** opens the program terms; **Close** dismisses the dialog.
29
+
20
30
  ## Buying More Credits
21
31
 
22
32
  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.
@@ -12,7 +12,7 @@ The palette includes the destinations you are allowed to use:
12
12
  - Individual page templates and forms
13
13
  - Agent runs, definitions, and individual agents
14
14
  - Project settings sections, individual schedules and webhooks, connections, and MCP servers
15
- - Asset folders and code files
15
+ - Asset folders
16
16
 
17
17
  You can also open documentation, feedback, account actions, project history, invitations, and the Publish review flow. Use **Escape** to return from a searchable subpage to the main command list, then press it again to close the palette.
18
18
 
@@ -23,7 +23,6 @@ Studio adds commands that are relevant to the page you are viewing. Depending on
23
23
  - Refreshing Preview or opening it in a new tab
24
24
  - Creating a CMS entry or changing the content locale
25
25
  - Uploading an asset, creating a folder, or generating an image
26
- - Opening a code file or toggling the code sidebar
27
26
  - Running an agent, opening its Preview result, or resolving proposed changes
28
27
  - Editing or opening the current CMS page in Preview
29
28
  - Marking the current Inbox item read or unread, and archiving or restoring it
@@ -48,7 +48,6 @@ The preview is one of several workspaces, and only one is shown at a time. Switc
48
48
  - **Alt+1** -- Preview
49
49
  - **Alt+2** -- Content (CMS)
50
50
  - **Alt+3** -- Assets
51
- - **Alt+4** -- Code
52
51
  - **Alt+5** -- Settings
53
52
 
54
53
  When the Preview workspace is open, the visual editor can appear alongside it as a preview side panel.