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.
- package/assets/agent-templates/_default/GOAL.md +2 -2
- package/assets/agent-templates/_default/capabilities.yaml +1 -0
- package/assets/agent-templates/broken-link-sweeper/capabilities.yaml +0 -1
- package/assets/agent-templates/content-translator/GOAL.md +1 -2
- package/assets/agent-templates/content-translator/capabilities.yaml +1 -2
- package/assets/agent-templates/post-deploy-check/capabilities.yaml +0 -1
- package/assets/agent-templates/seo-audit/capabilities.yaml +0 -1
- package/assets/skills/fimo-cli/references/agents.md +28 -32
- package/assets/skills/fimo-cli/references/analytics.md +15 -1
- package/assets/skills/fimo-cli/references/update.md +12 -0
- package/assets/skills/fimo-code/SKILL.md +8 -0
- package/assets/skills/fimo-code/references/analytics.md +104 -0
- package/assets/skills/fimo-code/references/design.md +6 -6
- package/assets/skills/fimo-studio/SKILL.md +36 -36
- package/assets/skills/fimo-studio/references/ai-chat.md +9 -1
- package/assets/skills/fimo-studio/references/analytics.md +28 -0
- package/assets/skills/fimo-studio/references/billing-and-credits.md +10 -0
- package/assets/skills/fimo-studio/references/command-palette.md +1 -2
- package/assets/skills/fimo-studio/references/preview-and-responsive.md +0 -1
- package/assets/skills/fimo-studio/references/sharing-and-collaboration.md +3 -4
- package/assets/skills/fimo-studio/references/visual-editing.md +3 -3
- package/dist/cli/bundle.json +1 -1
- package/dist/cli/index.js +14 -14
- package/dist/runtime/templates.d.ts +1 -1
- package/dist/runtime/templates.js +1 -0
- package/package.json +8 -8
- package/release.json +2 -2
- package/templates/astro/package.json +2 -2
- package/templates/nextjs/package.json +3 -3
- package/templates/react-router/package.json +4 -4
- package/templates/sveltekit/package.json +2 -2
- package/templates/vite/package.json +4 -4
- 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
|
-
-
|
|
20
|
-
-
|
|
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.
|
|
@@ -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
|
|
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.
|
|
@@ -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
|
|
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
|
-
|
|
86
|
-
|
|
87
|
-
or
|
|
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
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
98
|
-
|
|
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
|
-
-
|
|
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
|
-
|
|
120
|
-
|
|
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.
|
|
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
|
|
148
|
-
|
|
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 `
|
|
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
|
|
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
|
|
212
|
-
|
|
213
|
-
publication. If `capabilities.yaml` is absent or empty, the agent keeps baseline project reads such as agent run
|
|
214
|
-
but receives no CMS, asset, or other domain-operation scope
|
|
215
|
-
|
|
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` |
|
|
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 `
|
|
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
|
|
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).
|
|
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
|
|
105
|
-
- **Foreground:** Primary text color (hex
|
|
106
|
-
- **Accent:** Primary accent color (hex
|
|
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
|
|
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:**
|
|
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
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
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 (
|
|
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.
|
|
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
|
|
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.
|