Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
8842e2d
feat(shared): let connector actions carry titles in every language
yannickmonney Oct 8, 2026
880b651
feat(platform): name connector actions in English, German and French
yannickmonney Oct 8, 2026
2a5460a
feat(platform): serve action titles and connector icons in the catalog
yannickmonney Oct 8, 2026
e775355
docs: describe connector action titles and translated display names
yannickmonney Oct 8, 2026
f2ee1b1
feat(ui): colour every code block with one AA palette
yannickmonney Oct 8, 2026
c00b7fe
feat(ui): let a widget claim Escape inside dialogs and sheets
yannickmonney Oct 8, 2026
d63055a
feat(ui): name contenteditable controls and pass go-to its part
yannickmonney Oct 8, 2026
cb5b136
feat(ui): add a CodeEditor for code, JSON, YAML and templates
yannickmonney Oct 8, 2026
bdee0e0
feat(ui): show problems, completion and types in the CodeEditor
yannickmonney Oct 8, 2026
a1902d4
feat(ui): add SchemaTree and move VendorIcon into the package
yannickmonney Oct 8, 2026
00376e6
test(ui): warm Shiki's grammars before checking a highlight
yannickmonney Oct 8, 2026
0b20aac
test(ui): keep CodeMirror out of the code editor's light modules
yannickmonney Oct 8, 2026
6a9b46a
fix(platform): highlight file previews once for both themes
yannickmonney Oct 8, 2026
28ac5a5
docs(ui): guide the code editor, the schema tree and vendor icons
yannickmonney Oct 8, 2026
534b7e4
feat(ui): add usePrefersReducedMotion for motion run from script
yannickmonney Oct 8, 2026
8687e87
feat(ui): lay out flow graphs with ELK in a worker
yannickmonney Oct 8, 2026
eacbad7
feat(ui): draw workflows with WorkflowCanvas, routed edges and node k…
yannickmonney Oct 8, 2026
156d969
refactor(ui): keep the flow layout's helpers inside their modules
yannickmonney Oct 8, 2026
47ac517
test(ui): time 40-node flow layouts in the worker
yannickmonney Oct 8, 2026
51272c7
test(ui): check a pointer reaches a flow edge's detail
yannickmonney Oct 8, 2026
ca4ccc3
docs(ui): guide the workflow canvas
yannickmonney Oct 8, 2026
67a6f1e
fix(ui): pan a flow node into view without scrolling the frame
yannickmonney Oct 8, 2026
afdf901
test(ui): wait for the completion list to follow the dot
yannickmonney Oct 8, 2026
367a6ed
fix(ui): keep a host's top-left controls in the List view
yannickmonney Oct 8, 2026
18799e1
feat(ui): highlight possible paths and list them in FlowPathList
yannickmonney Oct 8, 2026
4deda60
feat(ui): replay runs with flow playback and FlowPlaybackBar
yannickmonney Oct 8, 2026
235a4c5
feat(ui): animate relayouts and show runs and paths on WorkflowCanvas
yannickmonney Oct 8, 2026
06bdaaa
docs(ui): guide workflow paths and playback with live demos
yannickmonney Oct 8, 2026
7cec08e
fix(ui): unpin a flow path from Show all and show every path again
yannickmonney Oct 8, 2026
52c815f
fix(ui): replay a run's details, waits and dots as they happened
yannickmonney Oct 8, 2026
fd3f8a9
test(ui): measure the flow canvas's run and highlight motion
yannickmonney Oct 8, 2026
95b431e
refactor(ui): drop the flow node look hook nothing uses
yannickmonney Oct 8, 2026
67ae13c
docs(ui): list the flow paths and playback entry points
yannickmonney Oct 8, 2026
2e53267
test(ui): cover a relayout mid-transition and following a run
yannickmonney Oct 8, 2026
a179d06
fix(ui): keep a frame's run counter beside its words, not over them
yannickmonney Oct 8, 2026
9157675
feat(platform): ask the draft check for its analysis and shapes
yannickmonney Oct 8, 2026
b808c80
refactor(platform): share the cron field's schedule words
yannickmonney Oct 8, 2026
85ab3be
fix(platform): draw run states with the canvas's glyphs and colours
yannickmonney Oct 8, 2026
fd9f674
fix(ui): keep the host's toolbar in the flow canvas's List view
yannickmonney Oct 8, 2026
36f7576
feat(platform): draw automations with Start, End, conditions and paths
yannickmonney Oct 8, 2026
8acbb1d
refactor(ui): drop the old ELK layout exports
yannickmonney Oct 8, 2026
15b2787
build(platform): keep the flow layout engine out of the cold load
yannickmonney Oct 8, 2026
a8b98fe
docs(platform): say the canvas lays itself out and ignores ui
yannickmonney Oct 8, 2026
bdded78
test(platform): hash the shipped automations the canvas suites read
yannickmonney Oct 8, 2026
524426a
fix(platform): keep every key of an automation through an editor save
yannickmonney Oct 8, 2026
dc0293e
feat(platform): complete, explain and mark automation fields in code
yannickmonney Oct 8, 2026
f18e5b8
feat(platform): edit every node field in the code editor
yannickmonney Oct 8, 2026
8df0018
feat(platform): open Start, End and the source of an automation
yannickmonney Oct 8, 2026
42e935d
refactor(platform): label Start's schema field as the run dialog does
yannickmonney Oct 8, 2026
7ce5726
feat(platform): type a run's input in the code editor
yannickmonney Oct 8, 2026
2e4442d
build(platform): load only the code editor's packages with it
yannickmonney Oct 8, 2026
5a6d26a
test(platform): prove code fields, Start, End and Source in Chromium
yannickmonney Oct 8, 2026
e66963c
test(platform): type the save spy the editor's browser test reads
yannickmonney Oct 8, 2026
9379049
fix(platform): word the canvas strings naturally in German and French
yannickmonney Oct 8, 2026
27d550a
fix(ui): name the Home key Origine in the French flow canvas help
yannickmonney Oct 8, 2026
c86ef9e
test(ui): add the automation canvas terms to the glossary
yannickmonney Oct 8, 2026
7bf673f
docs: describe the automation canvas, paths and code fields
yannickmonney Oct 8, 2026
e091887
docs(designs): state the canvas grammar and the shared code palette
yannickmonney Oct 8, 2026
062224d
test(manual): check the canvas, paths, code fields and Source by hand
yannickmonney Oct 8, 2026
eb30ef5
test(platform): hold the scanners apart on a regex now that comments …
yannickmonney Oct 8, 2026
7436ac9
style(ui): order the dialog imports after moving onto main
yannickmonney Oct 8, 2026
949470d
test(manual): check the code editor and workflow examples by hand
yannickmonney Oct 9, 2026
43b38ad
test(platform): follow a condition's branch from upload to run page
yannickmonney Oct 9, 2026
28b6114
test(platform): photograph the canvas, paths, code fields and Source
yannickmonney Oct 9, 2026
c54e061
docs: keep a no-break space before a colon in the French concepts page
yannickmonney Oct 9, 2026
e32255e
chore: merge main into the automation canvas branch
yannickmonney Oct 9, 2026
37c61eb
chore: merge main into the automation canvas branch again
yannickmonney Oct 9, 2026
0c07f2b
fix(ui): give Start and End the accent and canvas targets 44 px
yannickmonney Oct 9, 2026
ebe95b0
fix(ui): hold code chips to the prose x-height and popover look
yannickmonney Oct 9, 2026
2fac25d
chore: merge main into the automation canvas branch with MCP authoring
yannickmonney Oct 9, 2026
e57da8a
chore: merge main into the automation canvas branch
yannickmonney Oct 9, 2026
140109d
test(ui): read the running bar without an unsafe optional chain
yannickmonney Oct 9, 2026
79b23f6
Merge remote-tracking branch 'origin/main' into feat/automation-canvas
yannickmonney Oct 9, 2026
1c83a55
fix(ui): keep a code field editable when its editor does not load
yannickmonney Oct 9, 2026
c7f62f5
fix(ui): start undo afresh when a code field's text is replaced
yannickmonney Oct 9, 2026
7af3ab5
fix(platform): load the code editor with the automation editor
yannickmonney Oct 9, 2026
01f868b
fix(platform): show how a mixed condition groups
yannickmonney Oct 9, 2026
08cfbbe
fix(ui): show a condition's problems on the step it guards in the Lis…
yannickmonney Oct 9, 2026
ef45e1e
perf(platform): keep the canvas still while a field is typed in
yannickmonney Oct 9, 2026
dd240d7
fix(ui): map a go-to range through the edits made since the check
yannickmonney Oct 9, 2026
ae1afc4
fix(platform): mark a JSON field's problems in the author's own text
yannickmonney Oct 9, 2026
fd48c82
fix(ui): name the history slot among the editor's hook dependencies
yannickmonney Oct 9, 2026
a0e3fbc
chore(platform): merge main into the automation canvas
yannickmonney Oct 9, 2026
7a0754a
fix: carry main's guard fixes (as #4666) for this branch's checks
yannickmonney Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 5 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,11 @@
],
"minimumReleaseAge": null,
"groupName": "better-auth"
},
{
"description": "CodeMirror and Lezer move together: @tale/ui's code editor and Milkdown share one copy of each, and two copies of @codemirror/state or @codemirror/view break the editor (packages/ui/src/components/forms/code-editor/deps.test.ts)",
"matchPackageNames": ["/^@codemirror\\//", "/^@lezer\\//"],
"groupName": "codemirror"
}
]
}
13 changes: 12 additions & 1 deletion bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions configs/platform/system/connectors/confluence/connector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ auth:
- method: basic
actions:
- name: list_pages
title: List pages
i18n:
de:
title: Seiten auflisten
fr:
title: Lister les pages
description: >-
List a Confluence space's pages. Cursor pagination is handled internally
(soft-capped; `truncated: true` beyond the cap). Archived pages are
Expand Down Expand Up @@ -141,6 +147,12 @@ actions:
};
exampleInput: { spaceKey: 'ENG' }
- name: get_page
title: Get page
i18n:
de:
title: Seite abrufen
fr:
title: Récupérer une page
description: >-
Fetch a single page's rendered content by pageId, convert it to plain
text, and store it as a text/plain file.
Expand Down
53 changes: 53 additions & 0 deletions configs/platform/system/connectors/conversation/connector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@
# in one place. `platform` auth — nothing to connect.
name: conversation
displayName: Conversations
i18n:
de:
displayName: Konversationen
fr:
displayName: Conversations
description: >-
Pull mailbox traffic into the org Inbox and expose a one-shot sync and a
multi-credential inbox list for scheduled mail packs.
Expand All @@ -14,6 +19,12 @@ auth:
- method: platform
actions:
- name: sync_mailbox
title: Sync mailboxes
i18n:
de:
title: Postfächer synchronisieren
fr:
title: Synchroniser les boîtes mail
description: >-
List new messages from every active credential on the named mail
connector, fetch each body, and ingest them into conversations (inbound
Expand Down Expand Up @@ -50,6 +61,12 @@ actions:
impl: conversation.sync_mailbox
exampleInput: { connectorSlug: 'imap-smtp', limit: 25 }
- name: list_mailbox_messages
title: List mailbox messages
i18n:
de:
title: Nachrichten der Postfächer auflisten
fr:
title: Lister les messages des boîtes mail
description: >-
List the newest inbox messages from every active credential on the named
mail connector — what triage digests over. IMAP UIDs are scoped per
Expand Down Expand Up @@ -87,6 +104,12 @@ actions:
impl: conversation.list_mailbox_messages
exampleInput: { connectorSlug: 'imap-smtp', limit: 25 }
- name: list_untriaged
title: List untriaged conversations
i18n:
de:
title: Nicht triagierte Konversationen auflisten
fr:
title: Lister les conversations à trier
description: >-
List the open Inbox conversations of one mail connector that are waiting
on the team — the newest message is the customer's — and that no triage
Expand Down Expand Up @@ -128,6 +151,12 @@ actions:
impl: conversation.list_untriaged
exampleInput: { connectorSlug: 'gmail', limit: 25 }
- name: record_triage
title: Record triage
i18n:
de:
title: Triage festhalten
fr:
title: Enregistrer le triage
description: >-
Record a triage pass on Inbox conversations: the verdict is stamped on
each conversation, and its priority is set where no person has set one.
Expand Down Expand Up @@ -180,6 +209,12 @@ actions:
],
}
- name: ingest_emails
title: Import received emails
i18n:
de:
title: Empfangene E-Mails importieren
fr:
title: Importer les e-mails reçus
description: Ingest already-fetched inbound emails into conversations.
effects: write
input:
Expand Down Expand Up @@ -222,6 +257,12 @@ actions:
],
}
- name: ingest_sent_emails
title: Import sent emails
i18n:
de:
title: Gesendete E-Mails importieren
fr:
title: Importer les e-mails envoyés
description: Ingest already-fetched Sent-folder emails into conversations.
effects: write
input:
Expand Down Expand Up @@ -265,6 +306,12 @@ actions:
],
}
- name: draft_reply
title: Draft reply
i18n:
de:
title: Antwortentwurf erstellen
fr:
title: Rédiger un brouillon de réponse
description: >-
Propose a reply on a conversation and leave it for a person. The draft
appears in the Inbox as a pending message; sending it is a human act, and
Expand Down Expand Up @@ -301,6 +348,12 @@ actions:
body: 'Yes, we still have it in stock. Would you like us to hold one?',
}
- name: query_sync_cursor
title: Get last sync time
i18n:
de:
title: Zeitpunkt der letzten Synchronisierung abrufen
fr:
title: Récupérer l’heure de la dernière synchronisation
description: The latest synced message timestamp for a mailbox direction.
effects: read
input:
Expand Down
48 changes: 48 additions & 0 deletions configs/platform/system/connectors/discord/connector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ auth:
scheme: Bot
actions:
- name: list_guilds
title: List servers
i18n:
de:
title: Server auflisten
fr:
title: Lister les serveurs
description: List the guilds (servers) the bot is a member of.
effects: read
input:
Expand Down Expand Up @@ -46,6 +52,12 @@ actions:
return { guilds: r.json() };
exampleInput: { limit: 50 }
- name: get_guild
title: Get server
i18n:
de:
title: Server abrufen
fr:
title: Récupérer un serveur
description: Get a single guild (server) by ID.
effects: read
input:
Expand All @@ -66,6 +78,12 @@ actions:
return { guild: r.json() };
exampleInput: { guild_id: '100000000000000001' }
- name: list_channels
title: List channels
i18n:
de:
title: Kanäle auflisten
fr:
title: Lister les salons
description: List all channels in a guild.
effects: read
input:
Expand All @@ -86,6 +104,12 @@ actions:
return { channels: r.json() };
exampleInput: { guild_id: '100000000000000001' }
- name: list_messages
title: List messages
i18n:
de:
title: Nachrichten auflisten
fr:
title: Lister les messages
description: Fetch recent messages from a channel.
effects: read
input:
Expand Down Expand Up @@ -120,6 +144,12 @@ actions:
return { messages: r.json() };
exampleInput: { channel_id: '300000000000000001', limit: 20 }
- name: send_message
title: Send message
i18n:
de:
title: Nachricht senden
fr:
title: Envoyer un message
description: Send a message to a channel.
effects: write
input:
Expand Down Expand Up @@ -154,6 +184,12 @@ actions:
exampleInput:
{ channel_id: '300000000000000001', content: 'Deploy finished ✅' }
- name: get_user
title: Get user
i18n:
de:
title: Benutzer abrufen
fr:
title: Récupérer un utilisateur
description: Get a Discord user by ID.
effects: read
input:
Expand All @@ -174,6 +210,12 @@ actions:
return { user: r.json() };
exampleInput: { user_id: '200000000000000001' }
- name: list_members
title: List members
i18n:
de:
title: Mitglieder auflisten
fr:
title: Lister les membres
description: List the members of a guild.
effects: read
input:
Expand Down Expand Up @@ -202,6 +244,12 @@ actions:
return { members: r.json() };
exampleInput: { guild_id: '100000000000000001', limit: 100 }
- name: create_channel
title: Create channel
i18n:
de:
title: Kanal erstellen
fr:
title: Créer un salon
description: Create a new channel in a guild.
effects: write
input:
Expand Down
17 changes: 17 additions & 0 deletions configs/platform/system/connectors/document/connector.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@
# text) into a folder as a visible document. Native-backed; `platform` auth.
name: document
displayName: Documents
i18n:
de:
displayName: Dokumente
fr:
displayName: Documents
description: >-
List a folder's stored files and file produced artifacts into folders —
the platform's own document tree as automation steps.
Expand All @@ -12,6 +17,12 @@ auth:
- method: platform
actions:
- name: list
title: List files in folder
i18n:
de:
title: Dateien im Ordner auflisten
fr:
title: Lister les fichiers d’un dossier
description: >-
The files stored inside one folder — direct children by default;
recursive walks the subfolder tree and prefixes each file name with its
Expand Down Expand Up @@ -49,6 +60,12 @@ actions:
impl: document.list
exampleInput: { folderId: 'fld_1' }
- name: create
title: Save document to folder
i18n:
de:
title: Dokument im Ordner ablegen
fr:
title: Enregistrer un document dans un dossier
description: >-
File a document into a folder: claim a harvested blob by storageId, or
store inline text. Idempotent per (folder, name) — re-running refreshes
Expand Down
Loading
Loading