@agent-native/core 0.63.3 → 0.63.6
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/README.md +33 -97
- package/dist/cli/index.js +7 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +23 -19
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
- package/dist/client/blocks/library/diagram.d.ts.map +1 -1
- package/dist/client/blocks/library/diagram.js +10 -11
- package/dist/client/blocks/library/diagram.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +2 -1
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +5 -1
- package/dist/server/auth.js.map +1 -1
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +50 -5
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/tracking/providers.d.ts.map +1 -1
- package/dist/tracking/providers.js +4 -1
- package/dist/tracking/providers.js.map +1 -1
- package/docs/content/creating-templates.md +1 -1
- package/docs/content/template-analytics.md +11 -41
- package/docs/content/template-assets.md +8 -3
- package/docs/content/template-brain.md +6 -1
- package/docs/content/template-calendar.md +13 -59
- package/docs/content/template-chat.md +6 -9
- package/docs/content/template-clips.md +11 -16
- package/docs/content/template-content.md +14 -48
- package/docs/content/template-design.md +7 -2
- package/docs/content/template-dispatch.md +6 -9
- package/docs/content/template-forms.md +10 -13
- package/docs/content/template-mail.md +12 -27
- package/docs/content/template-plan.md +6 -1
- package/docs/content/template-slides.md +14 -75
- package/docs/content/template-videos.md +11 -52
- package/package.json +1 -1
|
@@ -7,15 +7,12 @@ description: "Agent-native form builder — create, edit, publish, and route for
|
|
|
7
7
|
|
|
8
8
|
Forms is an agent-native form builder. Describe the form you want, refine it in the editor, and publish a public form that stores submissions in your own SQL database.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-->
|
|
17
|
-
|
|
18
|
-

|
|
10
|
+
```an-wireframe
|
|
11
|
+
{
|
|
12
|
+
"surface": "desktop",
|
|
13
|
+
"html": "<div style='display:flex;flex-direction:column;min-height:520px;box-sizing:border-box'><div style='display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1.4px solid var(--wf-line)'><strong>Beta signup</strong><span class='wf-pill accent'>published</span><div style='flex:1'></div><button>Share</button><button class='primary'>Unpublish</button></div><div style='display:flex;gap:8px;padding:12px 16px;border-bottom:1.4px solid var(--wf-line)'><span class='wf-pill accent'>Edit</span><span class='wf-pill'>Results 187</span><span class='wf-pill'>Settings</span><span class='wf-pill'>Integrations</span></div><div style='display:flex;flex-direction:column;gap:12px;padding:30px 78px;overflow:hidden'><h2 style='margin:0'>Beta signup</h2><p class='wf-muted' style='margin:0'>Reserve a spot in the upcoming private beta cohort.</p><div class='wf-card'><strong>Full name</strong><input value='Ada Lovelace'/></div><div class='wf-card'><strong>Work email</strong><input value='you@company.com'/></div><div class='wf-card'><strong>Your role</strong><input value='Select...'/></div><div class='wf-card'><strong>Team size</strong><input value='Select...'/></div></div></div>"
|
|
14
|
+
}
|
|
15
|
+
```
|
|
19
16
|
|
|
20
17
|
When you open the app, you see your forms, the current editor, and a live preview. The agent can create a form from a prompt, update field labels and options, change validation, and connect submission destinations using the same actions the UI uses.
|
|
21
18
|
|
|
@@ -77,13 +74,13 @@ npx @agent-native/core@latest create my-platform
|
|
|
77
74
|
|
|
78
75
|
Pick Forms and any other templates you want during the workspace setup.
|
|
79
76
|
|
|
80
|
-
### Key features
|
|
77
|
+
### Key features {#key-features}
|
|
81
78
|
|
|
82
|
-
|
|
79
|
+
**JSON form definitions.** Fields live in one `fields` JSON column, so the agent can make surgical edits without schema changes for every field type.
|
|
83
80
|
|
|
84
|
-
|
|
81
|
+
**Public fill pages.** Respondents can submit unauthenticated forms, while private settings are stripped before data reaches the browser.
|
|
85
82
|
|
|
86
|
-
|
|
83
|
+
**Server-side destinations.** Slack, Discord, Google Sheets, and webhook integrations live in form settings and run after submission.
|
|
87
84
|
|
|
88
85
|
### Data model
|
|
89
86
|
|
|
@@ -7,17 +7,14 @@ description: "An agent-powered email client. Connect your Gmail and the agent ca
|
|
|
7
7
|
|
|
8
8
|
An agent-powered email client. Connect your Gmail account and the agent can read, draft, send, and organize email for you — alongside a fast, keyboard-first inbox you can drive yourself. Think Superhuman, but the agent is a first-class citizen and the codebase is yours to own.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-->
|
|
17
|
-
|
|
18
|
-

|
|
10
|
+
```an-wireframe
|
|
11
|
+
{
|
|
12
|
+
"surface": "desktop",
|
|
13
|
+
"html": "<div style='display:flex;flex-direction:column;min-height:500px;box-sizing:border-box'><div style='display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1.4px solid var(--wf-line)'><strong>Inbox 16</strong><div style='flex:1'></div><span data-icon='search' aria-label='Search'></span><span data-icon='edit' aria-label='Compose'></span><span data-icon='bell' aria-label='Notify'></span></div><div style='display:flex;flex-direction:column;padding:8px 14px;gap:6px'><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><strong>Priya Mehta</strong><span><strong>Q3 launch</strong> — final assets ready for review</span><span>★</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><strong>Acme Billing</strong><span>Your monthly invoice is ready</span><span>11:10 AM</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><span>Marcus Tang</span><span>Onboarding flow research findings</span><span>Yesterday</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><span>GitHub</span><span>[framework] PR ready for review</span><span>Yesterday</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><span>Linear</span><span>Issue ENG-1287 assigned to you</span><span>May 2</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><span>Stripe</span><span>Weekly payments summary</span><span>Apr 29</span></div><div class='wf-box' style='display:grid;grid-template-columns:155px 1fr auto;gap:12px;align-items:center'><span>Calendly</span><span>New booking confirmed</span><span>Apr 28</span></div></div></div>"
|
|
14
|
+
}
|
|
15
|
+
```
|
|
19
16
|
|
|
20
|
-
When you open the app,
|
|
17
|
+
When you open the app, the keyboard-first inbox and thread view stay focused on the mail itself. The agent always knows which view you're in and which thread you have open, so you can say "archive this" or "draft a friendly decline" without explaining what "this" is.
|
|
21
18
|
|
|
22
19
|
```an-diagram title="How a mail request flows" summary="Keyboard shortcuts and agent prompts run the same actions. Email lives in Gmail; drafts, automations, and tracking live in SQL and application_state."
|
|
23
20
|
{
|
|
@@ -119,27 +116,15 @@ To connect Gmail in dev, you need a Google OAuth client:
|
|
|
119
116
|
|
|
120
117
|
Tokens are stored in the `oauth_tokens` SQL table and refresh automatically. You can connect multiple Gmail accounts once the first is set up.
|
|
121
118
|
|
|
122
|
-
### Key features
|
|
123
|
-
|
|
124
|
-
**Gmail sync (multi-account).** Connect one or many Google accounts via OAuth. List and search actions query all connected inboxes by default; results carry an `accountEmail` field so you can tell which inbox each thread came from. Scope to a single account with `--account=user@example.com`. OAuth tokens are stored via `@agent-native/core/oauth-tokens` under the `"google"` provider.
|
|
125
|
-
|
|
126
|
-
**Multiple compose drafts.** The compose panel supports multiple draft tabs at once. Each draft is stored as an `application_state` entry at `compose-{id}` and syncs live between the agent and the UI. The agent can create a new draft with `manage-draft --action=create`, edit your in-progress draft with `--action=update`, or close tabs with `--action=delete`. Drafts use markdown in the body field; the TipTap editor renders it as rich text and converts to HTML on send.
|
|
127
|
-
|
|
128
|
-
**Queued draft review.** Drafts requested by teammates or Slack are durable SQL rows in `queued_email_drafts`. The agent uses `queue-email-draft` to assign a draft to an org member, returns a review URL such as `/draft-queue/<id>`, and waits for the owner to review or explicitly send. The queue supports listing assigned drafts, editing them, opening one in the compose panel, dismissing it, and sending one or all reviewed drafts.
|
|
129
|
-
|
|
130
|
-
**AI triage via automations.** Mail supports automation rules that run against new inbox email using AI. A rule has a natural-language condition (for example, `"from a newsletter"` or `"subject contains invoice"`) and a list of actions (`label`, `archive`, `mark_read`, `star`, `trash`). Manage them via `pnpm action manage-automations --action=create|list|update|delete|enable|disable`, or through the Settings page. Rules fire automatically and can be triggered manually with `pnpm action trigger-automations`.
|
|
131
|
-
|
|
132
|
-
**Send tracking.** Sent messages get open-pixel and link-click tracking injected automatically. Settings live under `mail-settings.tracking` with `tracking.opens` and `tracking.clicks` (both default `true`). Only links in the new portion of a reply or forward are rewritten — quoted content is left alone. Pull stats for any sent message with `pnpm action get-tracking --id=<message-id>`, or from `GET /api/emails/:id/tracking`. Open and click events are stored in the `email_tracking` and `email_link_tracking` tables.
|
|
119
|
+
### Key features
|
|
133
120
|
|
|
134
|
-
**
|
|
121
|
+
**Multi-account Gmail.** Connect one or more Google accounts, then list, search, draft, send, label, archive, star, or trash across connected inboxes.
|
|
135
122
|
|
|
136
|
-
**
|
|
123
|
+
**Draft workflows.** Multiple compose drafts sync through application state, and queued SQL drafts let teammates or Slack users request mail for the owner to review and send.
|
|
137
124
|
|
|
138
|
-
-
|
|
139
|
-
- `pnpm action export-emails --view=inbox --output=file.json` dumps a view to JSON.
|
|
140
|
-
- Archive, trash, mark-read, and star all accept comma-separated IDs (`--id=id1,id2,id3`) for bulk changes.
|
|
125
|
+
**Automations and tracking.** Natural-language triage rules can label, archive, mark read, star, trash, or trigger manually; sent messages can track opens and clicks.
|
|
141
126
|
|
|
142
|
-
**
|
|
127
|
+
**Search, bulk actions, and previews.** Shared actions power inbox search, bulk archive/export, and inline thread previews the agent can embed in chat.
|
|
143
128
|
|
|
144
129
|
### How the agent sees your context
|
|
145
130
|
|
|
@@ -30,7 +30,12 @@ agent the same way.
|
|
|
30
30
|
}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
```an-wireframe
|
|
34
|
+
{
|
|
35
|
+
"surface": "desktop",
|
|
36
|
+
"html": "<div style='display:grid;grid-template-columns:1fr 250px;gap:14px;padding:16px;min-height:520px;box-sizing:border-box'><main style='display:flex;flex-direction:column;gap:12px;min-width:0'><div style='display:flex;align-items:center;gap:10px'><h1 style='margin:0'>Checkout redesign plan</h1><div style='flex:1'></div><button>Share</button><button class='primary'>Approve</button></div><div class='wf-card' style='display:grid;grid-template-columns:1fr 1fr;gap:10px;min-height:150px'><div class='wf-box'>Current wireframe</div><div class='wf-box'>Proposed wireframe</div></div><div class='wf-card' style='flex:1;display:flex;flex-direction:column;gap:10px'><strong>Implementation plan</strong><div class='wf-box'>Decision: keep existing checkout shell</div><div class='wf-box'>Annotated code walkthrough</div><div class='wf-box'>Open questions</div></div></main><aside class='wf-card' style='display:flex;flex-direction:column;gap:10px'><strong>Comments</strong><div class='wf-box'>Pin on primary CTA</div><div class='wf-box'>Question for agent</div><div class='wf-box'>Resolved copy note</div><button class='primary'>Hand back feedback</button></aside></div>"
|
|
37
|
+
}
|
|
38
|
+
```
|
|
34
39
|
|
|
35
40
|
There are two ways into Plans:
|
|
36
41
|
|
|
@@ -7,17 +7,14 @@ description: "Generate decks from a prompt, edit visually, and present full-scre
|
|
|
7
7
|
|
|
8
8
|
Generate full presentation decks from a prompt, edit slides visually, and present full-screen. Ask the agent for "a 10-slide pitch deck for a coffee subscription service" and watch it stream slide-by-slide into the editor in seconds. An open-source replacement for Google Slides, Pitch, and PowerPoint.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-->
|
|
17
|
-
|
|
18
|
-

|
|
10
|
+
```an-wireframe
|
|
11
|
+
{
|
|
12
|
+
"surface": "desktop",
|
|
13
|
+
"html": "<div style='display:flex;flex-direction:column;gap:12px;padding:16px;min-height:530px;box-sizing:border-box'><div style='display:flex;align-items:center;gap:10px'><h1 style='margin:0'>Q3 Board Update</h1><span class='wf-pill accent'>Title slide</span><div style='flex:1'></div><button>Preview</button><button>Present</button><button class='primary'>Share</button></div><main style='display:grid;grid-template-columns:1fr 220px;gap:12px;flex:1;min-height:0'><section class='wf-card' style='display:flex;align-items:center;justify-content:center;text-align:center;padding:36px'><div><strong style='font-size:28px'>Q3 Board Update</strong><br/><small>Maya Chen · CEO</small><div style='height:46px'></div><span class='wf-pill'>Product momentum</span></div></section><section style='display:flex;flex-direction:column;gap:10px'><div class='wf-card'><strong>Slide outline</strong><div class='wf-box'>1 Title</div><div class='wf-box'>2 Agenda</div><div class='wf-box'>3 Metrics</div><div class='wf-box'>4 Shipped</div></div><div class='wf-card' style='flex:1'><strong>Speaker notes</strong><p class='wf-muted' style='margin:8px 0 0'>Open with launch progress and retention story.</p></div></section></main><div style='display:grid;grid-template-columns:repeat(5,1fr);gap:8px'><div class='wf-box'>1 Title</div><div class='wf-box'>2 Agenda</div><div class='wf-box'>3 Metrics</div><div class='wf-box'>4 Shipped</div><div class='wf-box'>5 Risks</div></div></div>"
|
|
14
|
+
}
|
|
15
|
+
```
|
|
19
16
|
|
|
20
|
-
When you open a deck,
|
|
17
|
+
When you open a deck, the slide canvas, outline, notes, and filmstrip stay in one editor surface while the agent can still create, revise, and navigate slides through actions.
|
|
21
18
|
|
|
22
19
|
```an-diagram title="Prompt to deck" summary="Ask for a deck and the agent streams slides in one at a time through the same actions you could call from the CLI."
|
|
23
20
|
{
|
|
@@ -46,7 +43,7 @@ Live demo: [slides.agent-native.com](https://slides.agent-native.com).
|
|
|
46
43
|
When you open the app:
|
|
47
44
|
|
|
48
45
|
1. Click **New deck**.
|
|
49
|
-
2.
|
|
46
|
+
2. Ask the agent: "Generate a 10-slide pitch deck for a coffee subscription service, audience is investors."
|
|
50
47
|
3. Watch slides stream in. Click any slide to edit, or keep asking the agent to refine.
|
|
51
48
|
|
|
52
49
|
### Useful prompts
|
|
@@ -76,75 +73,17 @@ pnpm install
|
|
|
76
73
|
pnpm dev
|
|
77
74
|
```
|
|
78
75
|
|
|
79
|
-
### Key features
|
|
80
|
-
|
|
81
|
-
#### Import and export
|
|
82
|
-
|
|
83
|
-
The template can pull content in from PPTX (`import-pptx`), DOCX (`import-docx`), Google Docs (`import-google-doc`), arbitrary URLs (`import-from-url`), and GitHub repos (`import-github`). Export paths cover PPTX (`export-pptx`), Google Slides (`export-google-slides`), and HTML (`export-html`). Importing uses the same action surface as the rest of the template — no separate pipeline.
|
|
84
|
-
|
|
85
|
-
#### Design systems
|
|
86
|
-
|
|
87
|
-
Reusable brand tokens are stored in the `design_systems` table (colors, typography, spacing, assets, custom instructions, and an `is_default` flag). Sharing is managed via `design_system_shares`. Actions: `create-design-system`, `update-design-system`, `get-design-system`, `list-design-systems`, `set-default-design-system`, `apply-design-system`, and `analyze-brand-assets` (collects brand data before analysis). See the `design-systems` and `image-generation-via-a2a` skills for the full pattern.
|
|
88
|
-
|
|
89
|
-
#### Deck versions
|
|
90
|
-
|
|
91
|
-
Every significant deck change is snapshotted in the `deck_versions` table (stores a full copy of title and deck data with an optional `changeLabel`). Actions: `list-deck-versions`, `restore-deck-version`, `get-deck-version`.
|
|
92
|
-
|
|
93
|
-
#### Prompt-to-deck generation
|
|
94
|
-
|
|
95
|
-
Ask the agent for a deck and it builds one slide at a time. Slides stream into the editor live as each one is generated — the agent fires parallel `add-slide` calls so you see the deck assemble in seconds.
|
|
96
|
-
|
|
97
|
-
Under the hood, this is powered by the `add-slide` and `create-deck` actions in `templates/slides/actions/`.
|
|
98
|
-
|
|
99
|
-
#### Seven slide layouts
|
|
100
|
-
|
|
101
|
-
Built-in layouts: title, section divider, content with bullets, two-column, statement or quote, metrics or stats, and closing or CTA. Each layout is a pure HTML template with inline styles — the agent picks the right one based on slide purpose. The exact templates live inside `templates/slides/.agents/skills/create-deck/SKILL.md` so the agent can reference them without exploring the codebase.
|
|
102
|
-
|
|
103
|
-
#### Visual and code editing
|
|
104
|
-
|
|
105
|
-
- Double-click any text to edit inline.
|
|
106
|
-
- Click a block to open the bubble menu for styles, alignment, and layout.
|
|
107
|
-
- Switch to the code editor (`app/components/editor/CodeEditor.tsx`) to edit raw slide HTML.
|
|
108
|
-
- Use the slash menu (`SlideSlashMenu.tsx`) to insert blocks by typing `/`.
|
|
109
|
-
|
|
110
|
-
#### AI image generation
|
|
111
|
-
|
|
112
|
-
Generate images through the Assets app when brand libraries matter; once the managed backend is deployed, that path can use Builder-managed image generation and keep the audit trail with the source library. Direct provider-key generation remains the fallback for standalone decks.
|
|
113
|
-
|
|
114
|
-
Actions: `generate-image`, `edit-image`, `image-search`, `logo-lookup`. UI panels: `ImageGenPanel.tsx`, `ImageSearchPanel.tsx`, `LogoSearchPanel.tsx`.
|
|
115
|
-
|
|
116
|
-
#### Logo and stock image search
|
|
117
|
-
|
|
118
|
-
- `logo-lookup --domain acme.com` fetches a company logo via Logo.dev or Brandfetch.
|
|
119
|
-
- `image-search --query "mountain landscape"` searches Google Images for stock photos.
|
|
120
|
-
|
|
121
|
-
#### Comments and threads
|
|
122
|
-
|
|
123
|
-
Leave comments on specific slides, quote selected text, and reply in threads. Stored in the `slide_comments` table. Actions: `add-slide-comment`, `list-slide-comments`.
|
|
124
|
-
|
|
125
|
-
#### Drag and drop reordering
|
|
126
|
-
|
|
127
|
-
Reorder slides in the sidebar, duplicate, or delete with hover controls. The sidebar lives in `app/components/editor/EditorSidebar.tsx`.
|
|
128
|
-
|
|
129
|
-
#### Presentation mode
|
|
130
|
-
|
|
131
|
-
Full-screen presentation at `/deck/:id/present` with keyboard navigation (arrow keys, space, escape), auto-hiding controls, and speaker notes. See `app/routes/deck.$id_.present.tsx` and `app/components/presentation/PresentationView.tsx`.
|
|
132
|
-
|
|
133
|
-
#### Share links
|
|
134
|
-
|
|
135
|
-
Generate a public read-only URL for a deck so reviewers can view without an account. The share page is `app/routes/share.$token.tsx`. Fine-grained sharing (viewer, editor, admin roles, per-user or org-wide) is also available via the framework's `share-resource` action.
|
|
136
|
-
|
|
137
|
-
#### Real-time collaboration
|
|
76
|
+
### Key features {#key-features}
|
|
138
77
|
|
|
139
|
-
|
|
78
|
+
**Prompt-to-deck generation.** Ask for a deck and the agent streams slides into the editor using the same create and edit actions you can run yourself.
|
|
140
79
|
|
|
141
|
-
|
|
80
|
+
**Editable slide canvas.** Inline text editing, slash inserts, code editing, drag-and-drop ordering, undo/redo, comments, and presentation mode all live in the deck surface.
|
|
142
81
|
|
|
143
|
-
|
|
82
|
+
**Import and export.** Bring in PPTX, DOCX, Google Docs, PDFs, URLs, and GitHub repos; export to PPTX, Google Slides, HTML, or a share link.
|
|
144
83
|
|
|
145
|
-
|
|
84
|
+
**Design systems and media.** Saved brand systems, image generation, stock search, and logo lookup keep decks closer to the intended visual direction.
|
|
146
85
|
|
|
147
|
-
|
|
86
|
+
**Collaboration and history.** Real-time Yjs editing, threaded comments, share roles, and deck version snapshots are built in.
|
|
148
87
|
|
|
149
88
|
### Working with the agent
|
|
150
89
|
|
|
@@ -7,15 +7,12 @@ description: "A programmatic video studio for motion graphics, product demos, an
|
|
|
7
7
|
|
|
8
8
|
A programmatic video studio for the kind of motion graphics, product demos, and kinetic-text videos that are a pain to keyframe by hand. Ask the agent for "a 6-second logo reveal that fades in at 2 seconds" and it builds the animation. Tune timing, easing, and camera moves on a timeline, then render to MP4 or WebM.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-->
|
|
17
|
-
|
|
18
|
-

|
|
10
|
+
```an-wireframe
|
|
11
|
+
{
|
|
12
|
+
"surface": "desktop",
|
|
13
|
+
"html": "<div style='display:flex;flex-direction:column;gap:12px;padding:16px;min-height:530px;box-sizing:border-box'><div style='display:flex;align-items:center;gap:10px'><h1 style='margin:0'>Logo reveal</h1><span class='wf-pill accent'>6 seconds</span><div style='flex:1'></div><button>Preview</button><button class='primary'>Render</button></div><div class='wf-card' style='flex:1;display:flex;align-items:center;justify-content:center;min-height:250px'><div style='text-align:center'><strong>Remotion preview</strong><br/><small class='wf-muted'>logo scales in as the title fades</small></div></div><div class='wf-card' style='display:flex;flex-direction:column;gap:10px'><div style='display:flex;gap:8px;align-items:center'><span class='wf-pill'>0s</span><span class='wf-pill'>2s</span><span class='wf-pill'>4s</span><span class='wf-pill'>6s</span><div style='flex:1'></div><button>New track</button></div><div class='wf-box'>Title fade · 0-48 frames</div><div class='wf-box'>Logo scale · 48-120 frames</div><div class='wf-box'>Camera push · 72-144 frames</div></div></div>"
|
|
14
|
+
}
|
|
15
|
+
```
|
|
19
16
|
|
|
20
17
|
When you open the studio, you'll see a list of compositions on the home screen. Click into one and you get a player on top, a timeline at the bottom, and a properties panel on the right. The agent always knows which composition you have open.
|
|
21
18
|
|
|
@@ -82,53 +79,15 @@ pnpm dev
|
|
|
82
79
|
|
|
83
80
|
Open the studio in your browser, create a composition, and start from blank. Ask the agent something like "add a logo reveal that fades in at 2 seconds" and it will edit the composition for you.
|
|
84
81
|
|
|
85
|
-
### Key features
|
|
86
|
-
|
|
87
|
-
#### React-based compositions
|
|
88
|
-
|
|
89
|
-
Every video is a React component built on Remotion primitives (`AbsoluteFill`, `useCurrentFrame`, `useVideoConfig`). The template ships one in-code composition — `BlankComposition` in `app/remotion/compositions/BlankComposition.tsx` — and `app/remotion/registry.ts` exports an empty `compositions` array by default. User and example compositions (kinetic text, logo reveals, particle bursts, interactive UI demos, slideshows) live in SQL and load through `app/hooks/use-database-compositions.ts`. You can still add a code composition by dropping a `.tsx` file in `app/remotion/compositions/` and registering it in `app/remotion/registry.ts`.
|
|
90
|
-
|
|
91
|
-
#### Timeline tracks
|
|
92
|
-
|
|
93
|
-
Animations are tracks, not hardcoded frame checks. A track has `startFrame`, `endFrame`, `easing`, and a list of `animatedProps` (`opacity`, `translateY`, `scale`, rotation, colors, etc.). Three track shapes:
|
|
94
|
-
|
|
95
|
-
- **Duration tracks** — bars you can drag and resize in the timeline.
|
|
96
|
-
- **Keyframe tracks** — diamond markers at specific frames for instant state changes (`startFrame === endFrame`).
|
|
97
|
-
- **Expression tracks** — programmatic animations (typing reveals, particle bursts) flagged with `programmatic: true` and shown with a purple `fx` badge.
|
|
98
|
-
|
|
99
|
-
Helper utilities in `app/remotion/trackAnimation.ts` (`findTrack`, `trackProgress`, `getPropValue`) wire a track's values into a component's render.
|
|
100
|
-
|
|
101
|
-
#### Easing curves
|
|
102
|
-
|
|
103
|
-
30+ easing curves ship in `app/types.ts` — linear, power1-4 in/out/inOut, back, bounce, circ, elastic, expo, sine, and Remotion's `spring`. The Properties panel shows a visual preview of the curve shape for each one.
|
|
104
|
-
|
|
105
|
-
#### Camera controls
|
|
106
|
-
|
|
107
|
-
Each composition has a dedicated `camera` track with six animatable properties: `translateX`, `translateY`, `scale`, `rotateX`, `rotateY`, `perspective`. The camera toolbar above the player has pan, zoom, and tilt tools — click a tool, drag on the preview, and a keyframe is auto-created at the current frame. `CameraHost` (in `app/remotion/CameraHost.tsx`) applies the chained CSS 3D transform to everything inside.
|
|
108
|
-
|
|
109
|
-
#### Multi-keyframe editing
|
|
110
|
-
|
|
111
|
-
Every animated property supports an optional `keyframes` array. Interpolation is linear between keyframes, with hold-at-first and hold-at-last at the edges. In the timeline you can box-select keyframes, shift-click to add or remove, and drag groups while keeping relative timing.
|
|
112
|
-
|
|
113
|
-
#### Adjustable parameters
|
|
114
|
-
|
|
115
|
-
Programmatic animations expose internal magic numbers as user-editable `parameters` — character width, drift distance, particle count, stagger delay. Inputs appear in the Properties panel with min/max/step bounds and save to localStorage automatically.
|
|
116
|
-
|
|
117
|
-
#### Interactive cursor system
|
|
118
|
-
|
|
119
|
-
The `cursor` track drives a visible cursor that moves across the composition. Hover zones on interactive elements (buttons, tabs, inputs, cards) change the cursor appearance — arrow, pointer, or I-beam. See `app/remotion/hooks/useInteractiveComponent.ts` and `app/remotion/ui-components/InteractiveCard.tsx`.
|
|
120
|
-
|
|
121
|
-
#### View range and repeat playback
|
|
122
|
-
|
|
123
|
-
The timeline has a range navigator at the bottom (AE-style triangular handles). Drag to zoom and pan the visible time window. Playback in the player is constrained to that range, with a repeat toggle that loops inside it.
|
|
82
|
+
### Key features
|
|
124
83
|
|
|
125
|
-
|
|
84
|
+
**React-based compositions.** Videos are Remotion-backed React components, with SQL-backed user compositions and an optional code registry for local defaults.
|
|
126
85
|
|
|
127
|
-
|
|
86
|
+
**Timeline-first animation.** Duration tracks, keyframes, easing curves, camera moves, and programmatic expression tracks all edit the same composition data.
|
|
128
87
|
|
|
129
|
-
|
|
88
|
+
**Adjustable motion systems.** Parameters, cursor tracks, interactive hover zones, range navigation, and repeat playback make generated animations tunable without code.
|
|
130
89
|
|
|
131
|
-
|
|
90
|
+
**Render and persistence.** Composition settings, quality, fps, track values, and overrides persist per composition and render to MP4 or WebM through Remotion.
|
|
132
91
|
|
|
133
92
|
### Working with the agent
|
|
134
93
|
|