@agent-native/core 0.178.0-nightly-20260909183543 → 0.178.0
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/corpus/README.md +1 -1
- package/corpus/templates/analytics/CHANGELOG.md +16 -0
- package/corpus/templates/calendar/CHANGELOG.md +19 -0
- package/corpus/templates/clips/CHANGELOG.md +6 -0
- package/corpus/templates/content/CHANGELOG.md +5 -0
- package/corpus/templates/content/app/i18n-data.ts +3 -3
- package/corpus/templates/content/app/lib/local-folder-picker-safety.ts +9 -0
- package/corpus/templates/content/app/routes/_app.local-files.tsx +5 -0
- package/corpus/templates/design/CHANGELOG.md +6 -0
- package/corpus/templates/factory/CHANGELOG.md +18 -0
- package/corpus/templates/mail/CHANGELOG.md +20 -0
- package/corpus/templates/plan/CHANGELOG.md +6 -0
- package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +36 -152
- package/corpus/templates/slides/CHANGELOG.md +11 -0
- package/corpus/templates/slides/actions/add-slide.ts +1 -0
- package/corpus/templates/slides/actions/create-deck.ts +1 -1
- package/corpus/templates/slides/actions/export-html.ts +342 -12
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +69 -20
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +3 -2
- package/corpus/templates/slides/app/components/editor/SlideInlineEditor.tsx +49 -15
- package/corpus/templates/slides/app/global.css +27 -22
- package/corpus/templates/slides/app/hooks/use-deck-design-system.ts +19 -15
- package/corpus/templates/slides/app/lib/create-deck-generation.ts +2 -2
- package/corpus/templates/slides/app/lib/normalize-slide-padding.ts +2 -2
- package/corpus/templates/slides/app/pages/Index.tsx +2 -2
- package/corpus/templates/slides/changelog/2026-09-09-slides-default-generation-style.md +6 -0
- package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/slides/shared/slide-background.ts +18 -2
- package/dist/cli/index.js +17 -0
- package/dist/client/org/OrgSwitcher.js +16 -21
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/routes.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +3 -3
- package/dist/observability/routes.d.ts +2 -2
- package/dist/org/federation.d.ts +1 -1
- package/dist/org/federation.js +6 -4
- package/dist/org/index.d.ts +2 -1
- package/dist/org/index.js +2 -1
- package/dist/org/membership.js +1 -1
- package/dist/org/workspace-app-access.d.ts +1 -0
- package/dist/org/workspace-app-access.js +21 -7
- package/package.json +3 -3
package/corpus/README.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable user-facing changes to Agent-Native Analytics are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new") or from Settings.
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Collaborator avatars use a slimmer border.
|
|
11
|
+
|
|
12
|
+
## 2026-09-08
|
|
13
|
+
|
|
14
|
+
### Improved
|
|
15
|
+
|
|
16
|
+
- Login pages use the same mouse-reactive wave background as the docs and booking experiences.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Analytics dashboards and daily emails include current zero-activity dates.
|
|
21
|
+
|
|
6
22
|
## 2026-09-04
|
|
7
23
|
|
|
8
24
|
### Improved
|
|
@@ -3,6 +3,25 @@
|
|
|
3
3
|
All notable user-facing changes to Agent-Native Calendar are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new") or from Settings.
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Calendar can color Google events by meeting type again
|
|
11
|
+
- Connected account avatars use a slimmer border.
|
|
12
|
+
|
|
13
|
+
## 2026-09-08
|
|
14
|
+
|
|
15
|
+
### Improved
|
|
16
|
+
|
|
17
|
+
- Login pages use the same mouse-reactive wave background as the docs and booking experiences.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Calendar overlay status now queries a valid one-day range
|
|
22
|
+
- Calendar shows proposed-time actions for Google event invitations
|
|
23
|
+
- Provider-supplied full-day meetings stay in the compact top bar.
|
|
24
|
+
|
|
6
25
|
## 2026-09-05
|
|
7
26
|
|
|
8
27
|
### Improved
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable user-facing changes to Clips are documented here. Open it any time
|
|
4
4
|
from the command menu (Cmd+K → "What's new") or from Settings.
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Attendee and viewer avatars use a slimmer border.
|
|
11
|
+
|
|
6
12
|
## 2026-09-04
|
|
7
13
|
|
|
8
14
|
### Fixed
|
|
@@ -5,8 +5,13 @@ time from the command menu (Cmd+K → "What's new").
|
|
|
5
5
|
|
|
6
6
|
## 2026-09-09
|
|
7
7
|
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Connected agents can set up ordinary databases, configure fields and table views, and recover them from Trash with verified results.
|
|
11
|
+
|
|
8
12
|
### Fixed
|
|
9
13
|
|
|
14
|
+
- First title edits no longer hit a stale-version conflict, open databases recover after agent Trash and restore actions, and database settings preserve keyboard focus when closing or returning to Add property. Source-managed database fields stay read-only in tables, page property editors, and agent actions, while local fields remain editable. Property editors stay inside mobile Info so edits can be saved without closing the panel.
|
|
10
15
|
- Remote collaborator cursors in the document editor now stay compact above the text instead of expanding into full-width color bars.
|
|
11
16
|
|
|
12
17
|
## 2026-09-03
|
|
@@ -3118,7 +3118,7 @@ const localFilesMessages = {
|
|
|
3118
3118
|
importedLocalFiles: "Imported local files",
|
|
3119
3119
|
importedSource: "Imported source",
|
|
3120
3120
|
lastSync: "Last sync",
|
|
3121
|
-
localFolders: "
|
|
3121
|
+
localFolders: "Folders",
|
|
3122
3122
|
mainFolder: "Main folder",
|
|
3123
3123
|
metaTitle: "Local files - Content",
|
|
3124
3124
|
noFoldersLinked: "No folders linked",
|
|
@@ -3659,7 +3659,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
|
|
|
3659
3659
|
folderLinked: "已链接 {{count}} 个文件夹",
|
|
3660
3660
|
foldersLinked: "已链接 {{count}} 个文件夹",
|
|
3661
3661
|
lastSync: "上次同步",
|
|
3662
|
-
localFolders: "
|
|
3662
|
+
localFolders: "文件夹",
|
|
3663
3663
|
mainFolder: "主文件夹",
|
|
3664
3664
|
metaTitle: "本地文件 - Content",
|
|
3665
3665
|
noFoldersLinked: "未链接文件夹",
|
|
@@ -3900,7 +3900,7 @@ const rawLiteralLocaleMessages: Partial<Record<LocaleCode, PartialMessages>> = {
|
|
|
3900
3900
|
folderLinked: "{{count}} carpeta enlazada",
|
|
3901
3901
|
foldersLinked: "{{count}} carpetas enlazadas",
|
|
3902
3902
|
lastSync: "Última sincronización",
|
|
3903
|
-
localFolders: "Carpetas
|
|
3903
|
+
localFolders: "Carpetas",
|
|
3904
3904
|
mainFolder: "Carpeta principal",
|
|
3905
3905
|
metaTitle: "Archivos locales - Content",
|
|
3906
3906
|
noFoldersLinked: "No hay carpetas enlazadas",
|
|
@@ -22,6 +22,15 @@ export function hasInterruptedNativeFolderPickerAttempt(
|
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
+
export function isUserCancelledFolderPickerError(error: unknown): boolean {
|
|
26
|
+
// DOMException does not extend Error, so check by name/code instead of
|
|
27
|
+
// `instanceof Error`. `showDirectoryPicker()` rejects with this shape when
|
|
28
|
+
// the user dismisses the native picker without choosing a folder.
|
|
29
|
+
if (typeof error !== "object" || error === null) return false;
|
|
30
|
+
const named = error as { name?: unknown; code?: unknown };
|
|
31
|
+
return named.name === "AbortError" || named.code === DOMException.ABORT_ERR;
|
|
32
|
+
}
|
|
33
|
+
|
|
25
34
|
export async function runNativeFolderPickerWithCrashSentinel<T>(
|
|
26
35
|
operation: () => Promise<T>,
|
|
27
36
|
options: {
|
|
@@ -53,6 +53,7 @@ import {
|
|
|
53
53
|
} from "@/lib/local-folder-live-sync";
|
|
54
54
|
import {
|
|
55
55
|
hasInterruptedNativeFolderPickerAttempt,
|
|
56
|
+
isUserCancelledFolderPickerError,
|
|
56
57
|
runNativeFolderPickerWithCrashSentinel,
|
|
57
58
|
} from "@/lib/local-folder-picker-safety";
|
|
58
59
|
import { isUnsafeNativeFolderPickerHost } from "@/lib/local-folder-picker-support";
|
|
@@ -1163,6 +1164,10 @@ export default function LocalFilesRoute() {
|
|
|
1163
1164
|
toast.success(t("localFiles.pulledLocalFiles"));
|
|
1164
1165
|
await connectLocalComponentWorkspaces([selected]);
|
|
1165
1166
|
} catch (err) {
|
|
1167
|
+
if (isUserCancelledFolderPickerError(err)) {
|
|
1168
|
+
// Backing out of the native picker isn't a failure worth surfacing.
|
|
1169
|
+
return;
|
|
1170
|
+
}
|
|
1166
1171
|
setStatus({
|
|
1167
1172
|
kind: "error",
|
|
1168
1173
|
title: t("localFiles.folderAddFailed"),
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable user-facing changes to Design are documented here. Open it any time
|
|
4
4
|
from the command menu (Cmd+K → "What's new") or from Settings.
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Collaborator avatars in the design editor use a slimmer border.
|
|
11
|
+
|
|
6
12
|
## 2026-09-04
|
|
7
13
|
|
|
8
14
|
### Improved
|
|
@@ -3,10 +3,28 @@
|
|
|
3
3
|
All notable user-facing changes to Chat are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new").
|
|
5
5
|
|
|
6
|
+
## 2026-09-08
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- A second GitHub or Sentry automation no longer flips to Slack, and author filters, destinations, and Run now keep the job you actually saved.
|
|
11
|
+
- The automation editor now shows the saved values after you save, refuses to Run now while edits are unsaved, and says so when the automation you opened no longer exists.
|
|
12
|
+
- Factory automations keep Slack channels and display names after enable, disable, or schedule updates.
|
|
13
|
+
- Tagging @builderio-bot now works for factories whose GitHub repository comes from their automation instead of the factory's own field, and a dispatch that would post to a different repository than the factory is configured for is refused instead of posting there.
|
|
14
|
+
- GitHub polling now looks past a page of filtered-out authors or already-queued items to find the pull requests and issues you asked for, and a run that stopped early is recorded as incomplete with the reason named — more pages remained, the author filter skipped something, or the inbox limit was reached — instead of blaming the author filter for all three.
|
|
15
|
+
- PR governance now accepts the repository configured on the automation, so pull requests polled into the inbox are no longer rejected as out of scope when the factory's own repository field is empty.
|
|
16
|
+
|
|
6
17
|
## 2026-09-04
|
|
7
18
|
|
|
19
|
+
### Improved
|
|
20
|
+
|
|
21
|
+
- Inbox rows now show the GitHub pull request or issue title instead of the first line of its description, and the detail view gives every item a title, a single metadata line, and separated Reason, Evidence, and Log sections so Slack and GitHub items read the same way.
|
|
22
|
+
|
|
8
23
|
### Fixed
|
|
9
24
|
|
|
25
|
+
- Audit run rows now show the GitHub pull request or issue title in the collapsible header instead of the first line of its description, and Slack rows keep using the message text because those items have no title of their own.
|
|
26
|
+
- An automation's GitHub author filter now applies when items are polled instead of only when the inbox is read, so pull requests from other authors no longer fill the inbox and consume the item limit ahead of the authors you asked for.
|
|
27
|
+
- PR babysitting now accepts the repository configured on the automation, so pull requests that were polled into the inbox no longer sit unreviewed when the factory's own repository field is empty.
|
|
10
28
|
- The Automations tab still lists Factory jobs after their domain tag is missing.
|
|
11
29
|
- The built-in Factory map can be saved the first time without a stale-version error.
|
|
12
30
|
- Agent view-screen follows the Factory tab you are looking at when more than one is open.
|
|
@@ -3,6 +3,26 @@
|
|
|
3
3
|
All notable user-facing changes to Agent-Native Mail are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new") or from Settings.
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Account avatars use a slimmer border.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Select the first top label by default on open, cycle labels with Tab from anywhere, and eliminate skeleton flicker on label change
|
|
15
|
+
|
|
16
|
+
## 2026-09-08
|
|
17
|
+
|
|
18
|
+
### Improved
|
|
19
|
+
|
|
20
|
+
- Login pages use the same mouse-reactive wave background as the docs and booking experiences.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- Mail renders Gmail signature email and social links correctly
|
|
25
|
+
|
|
6
26
|
## 2026-09-04
|
|
7
27
|
|
|
8
28
|
### Fixed
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable user-facing changes to Agent-Native Plan are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new").
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Collaborator avatars use a slimmer border.
|
|
11
|
+
|
|
6
12
|
## 2026-09-02
|
|
7
13
|
|
|
8
14
|
### Improved
|
|
@@ -157,7 +157,7 @@ pnpm action add-slide --deckId=<id> --layout content --content "..."
|
|
|
157
157
|
Every slide's `content` must use this exact outer div:
|
|
158
158
|
|
|
159
159
|
```html
|
|
160
|
-
<div class="fmd-slide" style="padding: 80px
|
|
160
|
+
<div class="fmd-slide" style="padding: 64px 80px; display: flex; flex-direction: column; justify-content: flex-start; font-family: var(--ds-body-font, Inter, sans-serif);">
|
|
161
161
|
<!-- slide content here -->
|
|
162
162
|
</div>
|
|
163
163
|
```
|
|
@@ -171,8 +171,8 @@ Poppins, cyan, white, black, or a stock radius into new markup.
|
|
|
171
171
|
## Fit budget
|
|
172
172
|
|
|
173
173
|
The canvas is fixed at its aspect-ratio dimensions. With the standard 16:9
|
|
174
|
-
canvas (960x540) and `padding: 80px
|
|
175
|
-
|
|
174
|
+
canvas (960x540) and `padding: 64px 80px`, the usable content area is only
|
|
175
|
+
800x412px. Treat that as a hard budget for the main flow: use at most two title
|
|
176
176
|
lines, three short bullets or cards, and two or three short items per column.
|
|
177
177
|
Split dense source material across slides instead of shrinking it into a dense
|
|
178
178
|
stack. Keep body text at or above 16px. Never hide overflow with zoom,
|
|
@@ -180,13 +180,16 @@ stack. Keep body text at or above 16px. Never hide overflow with zoom,
|
|
|
180
180
|
may reduce the slide's explicit padding, and that padding must remain intact
|
|
181
181
|
when the saved HTML is rendered.
|
|
182
182
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
183
|
+
When no reference deck or hydrated design system is available, use the fallback
|
|
184
|
+
direction: warm neutral paper (`#F5F2EA`), ink text (`#1F2933`), Inter or a
|
|
185
|
+
close sans-serif, 64px vertical and 80px horizontal padding, and one restrained
|
|
186
|
+
blue or coral accent. Build an intentional composition beyond a text dump: use
|
|
187
|
+
a title block, two-column split, metric treatment, rule, callout, visual
|
|
188
|
+
placeholder, or simple diagram where it fits the message. Never use a black
|
|
189
|
+
background with white text as the generic fallback, never omit the padded
|
|
190
|
+
wrapper, and never let body copy touch the canvas edge. Do not add decorative
|
|
191
|
+
cards or shapes without a semantic role, and keep any accent treatment away
|
|
192
|
+
from text so contrast stays readable.
|
|
190
193
|
|
|
191
194
|
## Bounded visual QA
|
|
192
195
|
|
|
@@ -200,149 +203,46 @@ was rendered and compared.
|
|
|
200
203
|
|
|
201
204
|
## Ready-to-Use Templates
|
|
202
205
|
|
|
203
|
-
Copy and fill in the bracketed values.
|
|
204
|
-
|
|
205
|
-
---
|
|
206
|
+
Copy and fill in the bracketed values. Keep the wrapper styles and replace
|
|
207
|
+
tokens with the hydrated design-system values when available.
|
|
206
208
|
|
|
207
209
|
### Title Slide
|
|
208
210
|
|
|
209
211
|
```html
|
|
210
|
-
<div class="fmd-slide" style="padding: 80px
|
|
211
|
-
<div style="font-size:
|
|
212
|
-
<h1 style="font-size:
|
|
213
|
-
<p style="font-size:
|
|
212
|
+
<div class="fmd-slide" style="padding: 64px 80px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 18px; font-family: var(--ds-body-font, Inter, sans-serif);">
|
|
213
|
+
<div style="font-size: 14px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ds-accent, #2457D6);">[LABEL OR DATE]</div>
|
|
214
|
+
<h1 style="font-size: 56px; font-weight: 750; color: var(--ds-text, #1F2933); line-height: 1.05; letter-spacing: -0.04em; margin: 0; max-width: 760px;">[TITLE]</h1>
|
|
215
|
+
<p style="font-size: 20px; color: var(--ds-text-muted, #667085); margin: 4px 0 0;">[SUBTITLE OR PRESENTER]</p>
|
|
214
216
|
</div>
|
|
215
217
|
```
|
|
216
218
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
### Section Divider
|
|
219
|
+
### Content or Two-Column Slide
|
|
220
220
|
|
|
221
221
|
```html
|
|
222
|
-
<div class="fmd-slide" style="padding: 80px
|
|
223
|
-
<div style="font-size:
|
|
224
|
-
<h2 style="font-size:
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
### Content Slide (bullets)
|
|
231
|
-
|
|
232
|
-
```html
|
|
233
|
-
<div class="fmd-slide" style="padding: 80px 110px; display: flex; flex-direction: column; justify-content: flex-start; font-family: 'Poppins', sans-serif;">
|
|
234
|
-
<div style="font-size: 14px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 16px;">[SECTION LABEL]</div>
|
|
235
|
-
<h2 style="font-size: 40px; font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -1px; margin: 0 0 48px 0;">[SLIDE HEADING]</h2>
|
|
236
|
-
<div style="display: flex; flex-direction: column; gap: 20px;">
|
|
237
|
-
<div style="display: flex; align-items: flex-start; gap: 16px;">
|
|
238
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
239
|
-
<span style="font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;">[BULLET TEXT]</span>
|
|
240
|
-
</div>
|
|
241
|
-
<div style="display: flex; align-items: flex-start; gap: 16px;">
|
|
242
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
243
|
-
<span style="font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;">[BULLET TEXT]</span>
|
|
244
|
-
</div>
|
|
245
|
-
<div style="display: flex; align-items: flex-start; gap: 16px;">
|
|
246
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
247
|
-
<span style="font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;">[BULLET TEXT]</span>
|
|
222
|
+
<div class="fmd-slide" style="padding: 64px 80px; display: flex; flex-direction: column; justify-content: flex-start; gap: 18px; font-family: var(--ds-body-font, Inter, sans-serif);">
|
|
223
|
+
<div style="font-size: 13px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ds-accent, #2457D6);">[SECTION LABEL]</div>
|
|
224
|
+
<h2 style="font-size: 34px; font-weight: 750; color: var(--ds-text, #1F2933); line-height: 1.12; letter-spacing: -0.03em; margin: 0 0 18px;">[SLIDE HEADING]</h2>
|
|
225
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start;">
|
|
226
|
+
<div style="display: flex; flex-direction: column; gap: 14px;">
|
|
227
|
+
<div style="border-left: 3px solid var(--ds-accent, #2457D6); padding: 12px 16px; background: var(--ds-surface, #FFFFFF); border-radius: var(--ds-radius, 14px); font-size: 18px; line-height: 1.4;">[KEY POINT]</div>
|
|
228
|
+
<div style="border-left: 3px solid var(--ds-secondary, #C85C3A); padding: 12px 16px; background: var(--ds-surface, #FFFFFF); border-radius: var(--ds-radius, 14px); font-size: 18px; line-height: 1.4;">[KEY POINT]</div>
|
|
248
229
|
</div>
|
|
230
|
+
<div class="fmd-img-placeholder" style="min-height: 220px; border-radius: var(--ds-radius, 14px);">[VISUAL OR IMAGE DESCRIPTION]</div>
|
|
249
231
|
</div>
|
|
250
232
|
</div>
|
|
251
233
|
```
|
|
252
234
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
```html
|
|
258
|
-
<div class="fmd-slide" style="padding: 80px 110px; display: flex; flex-direction: column; justify-content: flex-start; font-family: 'Poppins', sans-serif;">
|
|
259
|
-
<div style="font-size: 14px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 16px;">[SECTION LABEL]</div>
|
|
260
|
-
<h2 style="font-size: 40px; font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -1px; margin: 0 0 40px 0;">[HEADING]</h2>
|
|
261
|
-
<div style="display: flex; gap: 60px; flex: 1;">
|
|
262
|
-
<div style="flex: 1; display: flex; flex-direction: column; gap: 20px;">
|
|
263
|
-
<div style="display: flex; align-items: flex-start; gap: 16px;">
|
|
264
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
265
|
-
<span style="font-size: 20px; color: rgba(255,255,255,0.85); line-height: 1.5;">[BULLET]</span>
|
|
266
|
-
</div>
|
|
267
|
-
<div style="display: flex; align-items: flex-start; gap: 16px;">
|
|
268
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
269
|
-
<span style="font-size: 20px; color: rgba(255,255,255,0.85); line-height: 1.5;">[BULLET]</span>
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
<div class="fmd-img-placeholder" style="flex: 1; border-radius: 12px; min-height: 300px;">[IMAGE DESCRIPTION]</div>
|
|
273
|
-
</div>
|
|
274
|
-
</div>
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
### Statement / Quote Slide
|
|
280
|
-
|
|
281
|
-
```html
|
|
282
|
-
<div class="fmd-slide" style="padding: 80px 110px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; font-family: 'Poppins', sans-serif;">
|
|
283
|
-
<div style="width: 60px; height: 4px; background: #00E5FF; margin-bottom: 40px;"></div>
|
|
284
|
-
<p style="font-size: 48px; font-weight: 800; color: #fff; line-height: 1.2; letter-spacing: -1px; margin: 0 0 32px 0;">“[STATEMENT OR QUOTE]”</p>
|
|
285
|
-
<p style="font-size: 18px; color: rgba(255,255,255,0.45); margin: 0;">[SOURCE OR ATTRIBUTION]</p>
|
|
286
|
-
</div>
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
---
|
|
290
|
-
|
|
291
|
-
### Metrics / Stats Slide
|
|
292
|
-
|
|
293
|
-
```html
|
|
294
|
-
<div class="fmd-slide" style="padding: 80px 110px; display: flex; flex-direction: column; justify-content: flex-start; font-family: 'Poppins', sans-serif;">
|
|
295
|
-
<div style="font-size: 14px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 16px;">[SECTION LABEL]</div>
|
|
296
|
-
<h2 style="font-size: 40px; font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -1px; margin: 0 0 60px 0;">[HEADING]</h2>
|
|
297
|
-
<div style="display: flex; gap: 60px;">
|
|
298
|
-
<div style="flex: 1;">
|
|
299
|
-
<div style="font-size: 72px; font-weight: 900; color: #00E5FF; letter-spacing: -2px; line-height: 1;">[METRIC]</div>
|
|
300
|
-
<div style="font-size: 18px; color: rgba(255,255,255,0.55); margin-top: 12px;">[LABEL]</div>
|
|
301
|
-
</div>
|
|
302
|
-
<div style="flex: 1;">
|
|
303
|
-
<div style="font-size: 72px; font-weight: 900; color: #00E5FF; letter-spacing: -2px; line-height: 1;">[METRIC]</div>
|
|
304
|
-
<div style="font-size: 18px; color: rgba(255,255,255,0.55); margin-top: 12px;">[LABEL]</div>
|
|
305
|
-
</div>
|
|
306
|
-
<div style="flex: 1;">
|
|
307
|
-
<div style="font-size: 72px; font-weight: 900; color: #00E5FF; letter-spacing: -2px; line-height: 1;">[METRIC]</div>
|
|
308
|
-
<div style="font-size: 18px; color: rgba(255,255,255,0.55); margin-top: 12px;">[LABEL]</div>
|
|
309
|
-
</div>
|
|
310
|
-
</div>
|
|
311
|
-
</div>
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
### Closing / CTA Slide
|
|
317
|
-
|
|
318
|
-
```html
|
|
319
|
-
<div class="fmd-slide" style="padding: 80px 110px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; font-family: 'Poppins', sans-serif;">
|
|
320
|
-
<div style="font-size: 16px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 24px;">[LABEL, e.g. GET STARTED]</div>
|
|
321
|
-
<h2 style="font-size: 64px; font-weight: 900; color: #fff; line-height: 1.1; letter-spacing: -2px; margin: 0 0 32px 0;">[CLOSING STATEMENT]</h2>
|
|
322
|
-
<p style="font-size: 22px; color: rgba(255,255,255,0.55); margin: 0;">[CONTACT OR NEXT STEP]</p>
|
|
323
|
-
</div>
|
|
324
|
-
```
|
|
235
|
+
Use the same wrapper and tokens for section, statement, metrics, and closing
|
|
236
|
+
slides, changing only the composition. An image placeholder, metric row,
|
|
237
|
+
short rule, or callout should support the message, not fill empty space.
|
|
325
238
|
|
|
326
239
|
## Image Placeholders
|
|
327
240
|
|
|
328
|
-
When a slide needs a visual, use this div
|
|
329
|
-
|
|
330
|
-
```html
|
|
331
|
-
<div class="fmd-img-placeholder" style="width: 100%; height: 300px; border-radius: 12px;">[Description of what image should show]</div>
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
## Bold Terms with Description
|
|
335
|
-
|
|
336
|
-
For definition-style bullets:
|
|
241
|
+
When a slide needs a visual, use this div. It renders as a styled placeholder
|
|
242
|
+
and can later be replaced with a generated image:
|
|
337
243
|
|
|
338
244
|
```html
|
|
339
|
-
<div style="
|
|
340
|
-
<span style="font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;">●</span>
|
|
341
|
-
<span style="font-size: 22px; line-height: 1.5;">
|
|
342
|
-
<strong style="font-weight: 800; color: #fff;">[Term]</strong>
|
|
343
|
-
<span style="color: rgba(255,255,255,0.55);"> — [description]</span>
|
|
344
|
-
</span>
|
|
345
|
-
</div>
|
|
245
|
+
<div class="fmd-img-placeholder" style="width: 100%; min-height: 220px; border-radius: var(--ds-radius, 14px);">[Description of what image should show]</div>
|
|
346
246
|
```
|
|
347
247
|
|
|
348
248
|
## Bulk Replacement Only
|
|
@@ -351,24 +251,8 @@ Use a non-empty `create-deck --slides '[...]'` payload only for imports or an
|
|
|
351
251
|
intentional atomic bulk replacement. For normal AI-generated decks, use the
|
|
352
252
|
empty-deck plus sequential `add-slide` workflow above.
|
|
353
253
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
```bash
|
|
357
|
-
pnpm action create-deck --title "Product Vision 2025" --slides '[
|
|
358
|
-
{
|
|
359
|
-
"id": "slide-1",
|
|
360
|
-
"layout": "title",
|
|
361
|
-
"content": "<div class=\"fmd-slide\" style=\"padding: 80px 110px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; font-family: '\''Poppins'\'', sans-serif;\"><div style=\"font-size: 16px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 24px;\">ANNUAL STRATEGY</div><h1 style=\"font-size: 64px; font-weight: 900; color: #fff; line-height: 1.1; letter-spacing: -2px; margin: 0 0 24px 0;\">Product Vision 2025</h1><p style=\"font-size: 22px; color: rgba(255,255,255,0.55); margin: 0;\">Engineering Leadership — Q1 2025</p></div>"
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
"id": "slide-2",
|
|
365
|
-
"layout": "content",
|
|
366
|
-
"content": "<div class=\"fmd-slide\" style=\"padding: 80px 110px; display: flex; flex-direction: column; justify-content: flex-start; font-family: '\''Poppins'\'', sans-serif;\"><div style=\"font-size: 14px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: #00E5FF; margin-bottom: 16px;\">OVERVIEW</div><h2 style=\"font-size: 40px; font-weight: 900; color: #fff; line-height: 1.15; letter-spacing: -1px; margin: 0 0 48px 0;\">Three Core Priorities</h2><div style=\"display: flex; flex-direction: column; gap: 20px;\"><div style=\"display: flex; align-items: flex-start; gap: 16px;\"><span style=\"font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;\">●</span><span style=\"font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;\">Ship the agent platform by March</span></div><div style=\"display: flex; align-items: flex-start; gap: 16px;\"><span style=\"font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;\">●</span><span style=\"font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;\">Grow to 10k active teams</span></div><div style=\"display: flex; align-items: flex-start; gap: 16px;\"><span style=\"font-size: 8px; color: #fff; margin-top: 8px; flex-shrink: 0;\">●</span><span style=\"font-size: 22px; color: rgba(255,255,255,0.85); line-height: 1.5;\">Reduce time-to-value to under 5 minutes</span></div></div></div>"
|
|
367
|
-
}
|
|
368
|
-
]'
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
After creating, navigate to the deck:
|
|
254
|
+
For a bulk replacement, pass the same fully styled HTML templates in the
|
|
255
|
+
`slides` array. After creating, navigate to the deck:
|
|
372
256
|
```bash
|
|
373
257
|
pnpm action navigate --deckId=<id>
|
|
374
258
|
```
|
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable user-facing changes to Agent-Native Slides are documented here. Open it any
|
|
4
4
|
time from the command menu (Cmd+K → "What's new").
|
|
5
5
|
|
|
6
|
+
## 2026-09-09
|
|
7
|
+
|
|
8
|
+
### Improved
|
|
9
|
+
|
|
10
|
+
- Comment and editor avatars use a slimmer border.
|
|
11
|
+
- Slides use a polished light visual style by default when no brand system is selected.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- When an agent's slide edit does not match the slide, it now says so instead of reporting an internal server error, so the agent can correct the edit rather than retrying the same one.
|
|
16
|
+
|
|
6
17
|
## 2026-09-03
|
|
7
18
|
|
|
8
19
|
### Fixed
|
|
@@ -115,6 +115,7 @@ export default defineAction({
|
|
|
115
115
|
"For an agent-generated deck with a persisted target slide count, stop once that count is reached. If the user explicitly asks for more slides after the target, re-read the deck and set targetSlideCountOverride to the new total on the first add-slide call. " +
|
|
116
116
|
"Before the first slide you add to an existing deck, call `get-deck` with compact=true once and use its `designSystem`, `deckStyle`, and `representativeSlideId`; if designSystem.scope is summary, call `get-design-system` once with its id. Reuse that context for every following slide. Never use generic slide styling from an id alone. " +
|
|
117
117
|
"Pass presenter-only speaker notes in `notes`; keep them out of the slide HTML. " +
|
|
118
|
+
"Every new slide must be a fully styled composition with the exact padded `fmd-slide` wrapper, a clear type hierarchy, intentional alignment, readable contrast, and at least one visual or structural treatment beyond plain text. If no design system is linked, use a light neutral canvas with ink text and one or two restrained accents; never default to a black canvas with white text. " +
|
|
118
119
|
"For a single-call bulk append, use `patch-deck` with add-slide operations. " +
|
|
119
120
|
"Returns the new slide ID, 1-based slideNumber, updated slide count, and pending layoutFit identity that can be checked later with get-layout-overflows.",
|
|
120
121
|
schema: z.object({
|
|
@@ -123,7 +123,7 @@ export default defineAction({
|
|
|
123
123
|
"For longer decks or live in-app generation, create the deck with slides: [] and then use add-slide sequentially so progress appears live; the new deck is also opened in the connected Slides UI. " +
|
|
124
124
|
"Pass presenter-only speaker notes in each slide's `notes` field; keep them out of slide HTML. " +
|
|
125
125
|
"Pass deckId to replace an existing deck. " +
|
|
126
|
-
"Returns the deck id, title, effective designSystemId, linked designSystem.agentContext when readable, and slide count. Apply that context before authoring slides.",
|
|
126
|
+
"Returns the deck id, title, effective designSystemId, linked designSystem.agentContext when readable, and slide count. Apply that context before authoring slides. Every generated slide must be a fully styled composition with the exact padded `fmd-slide` wrapper, a clear type hierarchy, intentional alignment, readable contrast, and at least one visual or structural treatment beyond plain text. If no design system is linked, use a light neutral canvas with ink text and one or two restrained accents; never default to a black canvas with white text.",
|
|
127
127
|
schema: z.object({
|
|
128
128
|
title: z.string().describe("Deck title"),
|
|
129
129
|
slides: SlidesSchema.describe(
|