Changelog
Read below for more information on each version of Esca Automations.
v1.13.0
New features
- Esca, the platform's AI assistant, can now help draft or edit a Script node's Script field in place. It can turn a prompt or comment into a working script, fill in just a selected range of lines, read the fields of a content trigger's chosen content types, and check that a script's field references match the automation's data.
- Owners can now resend a workspace invitation to anyone still waiting to accept it, covering cases where the original email never arrived or its set-password link expired.
- The Content trigger's On Demand event can now collect input from a form before firing, so a button-started automation can ask for additional details instead of relying only on hardcoded values or fields borrowed from the content. The form is either a set of fields declared on the event or a content type's own edit form, and the answers reach later steps under the trigger's
inputoutput. - Content triggers, actions, and fetch steps can now work with a specific revision, draft, or version of a record instead of only its live content, and a new Content Compare action shows the differences between two revisions. An On Demand button opened from a revision or draft now runs against that revision instead of always using live content.
- Content trigger events, Content Fetch, and On Demand presses now include a
revisionoutput that says which revision they carry, along with that revision's values. Binding a later step's Revision field to the trigger's revision keeps the whole automation working on the same revision. Content Fetch can also read a specific revision or past version, and lists the content's unpublished revisions inpendingRevisions. - The Content Edit action can work on a revision. Save gains Keep Live Unchanged, which saves changes as a new revision instead of publishing them, and Revision Name, which lets a later save refine the same pending revision instead of starting another.
- A new Offer On setting on an On Demand event chooses where its button appears—on live content, drafts, revisions, or past versions. By default it appears everywhere except past versions.
- Content trigger events now include
changedFields, so a fire condition can fire only when a particular field changes. The Transitioned, Drafted, and Deleted events gain a Fire On setting that chooses the kinds of content they fire on, and Transitioned and Drafted now also fire for a revision moving through a workflow or saved with Save Draft & Return. - Content trigger events now include the content's front-end URLs:
permalink, the URL to link to, andurls, every URL with its path, type, and site. - Every Content trigger event now names the person who caused it in
initiator, including their name, email, time zone, and locale, and the site they were working in insite, along withfiredAt, the time the event happened.
Improvements
- The Automations area of the navigation menu now uses a lightning-bolt icon, lists Templates after Automations and Connections after Approvals, and offers a quick way to start a new automation directly from the menu.
- A node's Input and Output tabs now show how many mappings each one holds, so reviewing an automation no longer requires opening every node to check.
- When a Dry Run withholds an AI agent's tools to keep it from making real changes, the run log now says so and how many tools were withheld, instead of leaving the step looking as if the model simply chose not to call anything.
- Turning an automation off now only stops it from being started by its triggers; a person with access can still run it by hand in the editor, in whatever mode the automation is in. New automations, duplicates, and AI-drafted automations now start off, and publishing a draft turns it on. A published automation's deliveries can now be replayed live or as a rehearsal, and Fire Test always runs as a rehearsal.
- The trigger menu on a published automation now offers Deliveries, Replay, Fire Test, and Credentials. The Deliveries screen marks a delivery whose run was a rehearsal as Dry Run, and its Event column now names the event for Content and Jira triggers as well as GitHub.
- Restoring an earlier version of an automation keeps its webhook trigger's current address and credentials, so senders keep working, and generating or revoking a webhook credential now appears in History as a status change rather than a version.
- Sleep steps now log how long they are waiting and when they will wake up, and dates and times throughout the tool are shown in the viewing user's own time zone instead of the server's.
- The Add Node picker now lists actions under two sections, General Actions and Integration Actions, with every list sorted alphabetically instead of split between function and connection groupings. The Content actions and trigger now carry a Brightspot badge, AI Judgment uses the same sparkle icon as AI Agent, the Remote AI Agent action is superseded by AI Agent (it is no longer offered in the picker, and automations that already use it keep running and can still be edited), and the built-in Content action is renamed Content Edit.
- The button that opens the variable picker beside a field now uses an icon that reads more clearly as inserting a variable.
- A Content node's Site field, when left blank on a connection with exactly one default site, now shows that site's name as its placeholder instead of appearing empty.
- The Content trigger's Transitioned event is now labeled as a workflow event, to distinguish it from the trigger's other events.
Bug fixes
- Fixed an issue where opening a code editor, such as a saved script or a rich-text code block, in a popup covered the first character of every line with the line-number gutter.
- Save, Publish, and Save as Template are now disabled while a node, note, or settings form has unsaved edits, with a hint explaining why. Leaving the page with unsaved edits now asks for confirmation exactly once instead of sometimes asking twice or not at all, and no longer strands the editor on a page that no longer exists.
- Fixed an issue where a workspace member could not see the Upload and URL options on their own avatar field unless they also had user-administration rights.
- Fixed an issue where granting access to a workspace, or inviting a new person by email, could fail with an error on deployments that sign users in through an external identity provider, and where a failed attempt to create a new workspace left its name unusable for a retry.
- A trigger's Deliveries page now lists every delivery across an automation's live version and its revisions in one place, instead of showing an empty table on a revision even when live had a full history. Replaying a delivery from a revision's page now rehearses the revision instead of running the live automation.
- Fixed an issue where a loop's Collect Results From setting returned nothing when pointed at one of its body node's output mappings, instead of the mapped value.
- A run's workflow view no longer gets stuck partway through on a fast-finishing automation; it now catches up on any updates it missed, and a run that finishes before its page finishes loading still plays out instead of only showing its final result.
- Fixed an issue where a Content Fetch through a Brightspot connection left its values output empty for a found record, which could also cause a later Save's dry run to report every field as changing.
- Fixed an issue where a webhook trigger using a URL-based secret answered every delivery with a 404 instead of reaching the automation it secured.
- A CMS webhook whose trigger has been deleted is now abandoned after a handful of failed deliveries, instead of continuing to receive every matching event indefinitely.
- Fixed an issue where repeated use of On Demand automations in the CMS could exhaust the database connection pool, causing Run buttons and other actions to hang until the server recovered on its own.
- The CMS On Demand widget's Last ran time is now shown in the viewing user's time zone instead of the server's.
- Dry runs of a revision now stay in the automation's run history after the revision is published or discarded, instead of disappearing within the hour, and continue to count toward the automation's retention limit like any other run.
- Fixed an issue where publishing or discarding a revision of an automation could delete the stored values of the live automation's secrets, causing the next save to fail until they were re-entered.
- Fixed an issue where the collapsed navigation rail's quick-add flyout could close just as the pointer reached it.
- Fixed an issue where a content trigger watching a specific workflow transition did not fire when a revision made that transition.
- The variable picker no longer offers ID and Type fields on values such as a content revision or a trigger's payload, since neither ever held a value.
- A run's Input Mappings and References now correctly show values that came from a connected system's record, such as one fetched through a Brightspot connection, instead of showing them as empty.
- A Content Query step on a Brightspot connection can now use Sort By, Skip, and Include Field Values, instead of failing with a message that the connected CMS needed an upgrade.
- Fixed an issue where Complete Work Stream Item's Work Stream field could no longer be bound to a work stream query's output.
- Fixed an issue where an AI Agent step's Payload Type, and an On Demand trigger's Payload, offered an option that saved with no usable schema.
- Links included in an Approval step's question now render as clickable links in Slack instead of plain text.
- Restored the note telling an author to set up a connection when a Content node's Connection field has none configured yet.
- The Connections page's MCP Servers heading now appears correctly when the page opens in a popup.
- An AI Agent step that reports itself finished without providing all of the fields its payload requires now fails with a message naming the missing fields, instead of completing with incomplete data that could silently propagate to later steps.
- An older connected CMS now reports that it needs an upgrade to support Esca's script-writing help, instead of the request timing out.
- Publishing content that has never been published, through the Content Edit action, now publishes it and fires a Published event.
- A Content Fetch by ID with a Content Type set now finds drafts, content in a workflow state, and archived content.
Breaking changes
- The Content action's Save step no longer accepts differences typed or pasted directly into its Differences field. Differences is now set by selecting a variable, such as a script's output, that already holds the map of changes to apply. A Save step that used the previous text field needs to be updated to produce that map through a script.
- Revised, Scheduled, and Unscheduled events now carry the revision's values in
contentValuesinstead of live content's. - On an On Demand event,
initiatorandsiteare now objects rather than IDs; the IDs areinitiator.userIdandsite.siteId. - An automation that stages a new revision now announces it as Drafted, as the edit form's Save Draft & Return does, rather than Revised.
v1.12.0
New features
- Added a plugin-wide setting that lets an administrator allow the HTTP Request action to reach addresses on the local network, for deployments that need to call an internal service; the block remains in place by default everywhere else.
- Webhook triggers now support three authentication schemes, including Standard Webhooks signatures, bearer tokens, and a URL-based secret, along with credentials that can be rotated without breaking a sender and detection of duplicate deliveries. Existing triggers and senders continue to work unchanged. A delivery's query parameters now reach the automation as
_trigger.queryin the trigger's output. - Sleep steps can now pause for a duration with a chosen unit or until a specific timestamp, and either value can be bound to a variable, so how long a run pauses can be decided by data from earlier in the automation. An existing Sleep step is converted automatically and pauses for as long as it did before.
- Schedule triggers can now read their cron expression in a time zone chosen on the trigger, instead of always evaluating it in the server's time zone.
- Added Run Context variables for reading details about the current run, such as the current time, whether it's a dry run, and the execution number, without a separate script step. Comparison operators now also understand timestamps, and a Schedule trigger's output now describes which scheduled occurrence a run was for.
- Exporting an automation now produces a document that reads clearly and can be compared line by line, instead of an opaque data dump.
- A template saved from an automation, and a recipe spliced into one, now carries that automation's description, variables, secrets, and settings along with its graph. Any value left unfilled is flagged for the author to complete before running.
- An automation's settings, including its variables and secrets, can now be edited before the automation has been saved for the first time.
- Automations can now read and write content stored directly in the workspace, not only in a connected CMS, through new Content, Content Query, Content Fetch, and Content Exists actions and a Content trigger. The actions that work with a connected CMS's content remain available under their previous names for automations that already use them, but no longer appear when adding a new step.
- Each of the new Content nodes takes an optional Brightspot connection that points it at that CMS instead of the workspace. With a connection, the node lists the CMS's content types, adds a Site field, and offers the CMS's own operations, including Publish, Archive, Restore, Transition, Post Comment, and Complete Work Stream Item.
- The Content action finds the record it acts on by content type and a lookup field, either the record's ID or one of the type's unique fields, and then saves or deletes it. With Create If Missing, a save creates the record when the lookup finds none, and a dry run of a save reports the fields it would change.
- Without a connection, the Content trigger watches the workspace's own content types and fires when a record is published, archived, restored, or deleted, or on demand from an Automations panel on the record's edit page; a record changed by an automation raises the same events as one changed by a person. With a Brightspot connection, the trigger watches that CMS and offers its draft, schedule, workflow, and comment events.
- The Script action takes an optional Brightspot connection, which lets a script's
dariSDK check field names, types, and values against that CMS's content model. It replaces the Brightspot - Content Script action, which no longer appears when adding a new step. - The On Demand trigger's run form now offers recent past runs as starting points, letting a payload be reused or adjusted instead of retyped for every test run.
- Restored search and added content-creation controls to the workspace navigation.
- Automations can now work with files as first-class values, with new Read File and Write File actions, file fields on custom payloads, and the ability to send or receive a file as the body of an HTTP request. A file a run uploads or writes is deleted when that run is archived.
- Added a Scripts catalog for saving, organizing, and reusing scripts across automations, including scripts that stay in sync with a file in a connected GitHub repository or gist. Each Script step chooses whether its code is written inline, references a saved script so that an edit reaches every step using it, or comes from a value produced earlier in the run.
Improvements
- Moved workspace switching into the navigation rail and labeled it with the name of the current workspace.
- Content types defined in a workspace, and their records, are now available to everyone in that workspace. The content type form and a record's edit page no longer show options that don't apply to a workspace.
- A file in a run's data, such as a file field on a trigger's payload or a body the HTTP Request action saved to storage, now appears in the variable picker as a file with its file name and content type, and a later step can open it rather than only link to it.
- A variable's value is now required only to run an automation, not to save it, and a Needs attention notice on the canvas lists every variable and secret still without a value.
- Run pane step rows now show the step's node name together with its run-specific detail, instead of showing only one or the other.
- Automation run pages now offer an Edit option beside the option to open the live automation, so a mistake found in a run can be corrected directly.
Bug fixes
- Fixed a security issue affecting network request handling.
- An automation with a broken structure, such as a disconnected step or an unterminated loop, now fails clearly for the person who ran or is editing it, instead of failing silently with no record of what happened. The Automations list marks such an automation with a warning naming its problems, and a webhook delivery to it is recorded as skipped rather than failed, so the sender doesn't keep retrying it.
- Restored dark-mode styling for code fields that had reverted to a light background.
- Fixed an issue where a workspace invitation email's sign-in link could lead to a page that didn't exist, and where an invited member could receive a set-password link that never worked.
- Payload forms on an On Demand run are now editable by anyone with permission to run the automation, instead of being read-only for everyone except a system administrator.
- Fixed several display issues in the node editor panel, including overflowing fields, a note overlapping a button, and missing spacing before the footer, and corrected several icons that had been rendering as the wrong glyph.
- Restored the notifications icon to the navigation rail, and added an indicator for pending approvals when the rail is collapsed.
- Fixed an issue where creating a content type with the same name in two different workspaces could silently rename one of them instead of keeping the name its author gave it.
v1.11.3
Bug fixes
- Fixed a security issue affecting change visibility and access controls for automations.
v1.11.2
Bug fixes
- Fixed an issue where publishing a revision of an automation that predated the draft-and-publish workflow could fail with an error instead of saving the change.
v1.11.1
Bug fixes
- Fixed a security issue affecting workspace membership and ownership enforcement.
- Fixed an issue where a run started from an On Demand trigger could still show the trigger as not yet run, even after it had actually completed, until the workflow page was reloaded.
v1.11.0
New features
- Added workspace users and roles: an administrator can invite people to a workspace, assign each one of five roles (Viewer, Operator, Builder, Admin, or Owner), and manage membership and access requests from a new Members page, without needing the CMS Admin area.
- Added a Replay control to a finished run's workflow view. It reanimates the run's steps and logs at their original pace, and playback can be paused and moved to any point in the run.
- Esca Automations is now available in English and Spanish, following the language set on a user's profile.
- A step that is not connected to anything can now be dragged onto the connector between two existing steps to splice it in between them.
- Approval requests, and other steps that wait on a person, now generate notifications for anyone subscribed to watch the approval queue, with optional reminders as a deadline approaches.
- Automations now have a draft-and-publish lifecycle. A new automation starts as a draft, publishing makes it live, and further changes to a live automation are made through a linked revision that rehearses safely before being published over it. A revision is a full working copy, including the automation's variables, secrets, test targets, and settings, and publishing it replaces the live definition in place, so external systems keep the webhook addresses they already use. A revision can be discarded instead.
- On a connected Brightspot CMS, the on-demand automation button offers a Dry run action while the automation has a revision in progress, so editors can rehearse the change on real content.
- Added an Approval gate node that pauses a run for a person to approve or reject, routing the automation down the matching branch. Approvals can be answered directly from Slack, Microsoft Teams, or the CMS.
- Any saved automation can now be saved as a template of its own, appearing alongside the built-in Workflow, Recipe, and Example templates.
- Added per-trigger concurrency control, letting a trigger cap how many of its runs can execute at once for a matching key and choose what happens to an event that arrives over that cap: reject it, cancel the longest-running runs to free a slot, or queue it until one opens.
Improvements
- Automations now start running within milliseconds of their trigger firing, instead of waiting for the next polling cycle.
- A newly created automation now starts enabled instead of needing to be turned on manually.
- A Slack dry run now logs a link to a preview of the message instead of just its raw fallback text.
- The automations list shows publish state and on/off state in separate columns, and its bulk actions read Turn On and Turn Off.
- Run history badges each run of a draft or a revision as such, and a published automation and its revision share one run history and one run numbering.
- Restoring a past version from the History tab now takes a single Restore action, and History records it as a restore rather than an ordinary edit.
- Publishing or discarding a revision is refused while any of its runs are still in progress, so a run waiting on a person can always resume.
- Duplicating an automation now copies its variables, its secrets along with their values, its test targets, and its settings, not just its graph.
- The limit on enabled automations now counts only published automations that are on. A draft or a revision that is on only rehearses, so it does not count toward the limit.
Bug fixes
- Fixed an issue where saving a site's automation settings for the first time discarded everything entered; only a second save persisted the values.
- Settings and Savings Rates are now restricted to Admin and above.
- The link to view a draft or revision an editor cannot change now reads "View" rather than "Edit" or "Continue editing."
- Fixed several display issues, including a read-only form that rendered with no height, a content type's Sites field incorrectly appearing on its form, and an empty content-creation panel reserving blank space above a form.
- Fixed an issue where opening a pending approval's run opened it inside the response frame instead of navigating the full page.
- Invitations to join a workspace now state who sent the invitation and which account it is for.
- An automation with a revision no longer appears as two separate entries in the automations list; the revision now shows as a status alongside its automation.
- Fixed several styling issues across the automation admin screens, including missing spacing in an empty state, an error message that rendered invisibly, misaligned icons, a missing icon, a dropdown menu that could appear behind other page elements, and low-contrast colors for variable references in dark mode.
Breaking changes
- The Dry Run and Live run-mode setting has been removed, and an automation's publish state now decides how it runs. Automations that were set to Live are now published, and those set to Dry Run are now drafts that keep rehearsing until they are published.
v1.10.1
Improvements
- Site AI settings are now presented as a single list instead of split across two tabs, and an unused timezone setting that had no effect has been removed.
Bug fixes
- Dragging a node on the canvas to reposition it no longer disables the Run button; only changes that affect what the automation actually does mark it unsaved and block a run.
- When a run is refused because of unsaved changes, the automation now explains why and offers a direct way to save and run instead of leaving no path forward.
- The status indicators for an automation are now consistent: the status badge reads Active, Idle, or Archived and no longer conflicts with the separate run-mode indicator, and the automations list uses matching terminology. The status and any dry-run notice are also now shown together above the pane, visible whether the automation or one of its nodes is selected.
- Fixed several cases where the enable/disable switch or its related notices could show an incorrect state, including for a newly created automation, an archived automation in dry-run mode, and a switch clicked before the automation had finished loading.
- The Build page's message for an unconfigured AI setup now names the actual setting to configure and, for users with access to Settings, links directly to it, instead of pointing to a screen that doesn't exist.
- When no AI provider account is configured, model selection fields now explain where to add one and link to the Connections page, instead of showing an empty list with no way forward.
- An AI agent that doesn't specify its own model now warns when no model would actually be found to inherit at run time, instead of only failing once the automation runs.
- Fixed an issue where a validation error on an AI agent form, such as a missing name, was also logged as a server error in addition to being shown on the field.
- The site AI settings page no longer offers to delete its own settings record.
- Fixed layout issues affecting forms opened in a popup, including misaligned fields, overlapping notices, and save controls placed incorrectly, some of which also affected unrelated admin pages.
v1.10.0
New features
- Rebuilt the Create with AI screen around canvas nodes connected by a flow, and added a way to stop generation while it's in progress.
- Automation runs are now bounded by the amount of work they actually perform instead of by wall-clock time, so a step waiting on a person, a timer, or a callback no longer counts against the run's time budget. The setting controlling this is renamed from Exec Timeout to Execution Budget. How long a person has to respond to a request is now a separate, configurable limit, and the AI approvals inbox updates live as new requests arrive, shows the time remaining to respond, and lets a request be answered directly from the list.
- Sites can now connect their own AI provider accounts, including OpenAI-compatible endpoints, AWS Bedrock and AgentCore, Azure OpenAI, and Google Gemini and Vertex AI, and run AI steps against those accounts. AI agents are now reusable, named records with their own model, instructions, and tools, selectable from a library of presets or built from scratch and reused across automations.
- Automations can now build and update Brightspot content by running a script with full access to a connected CMS's content model, instead of only through individually configured fields. The Save action's Fields and Embedded Objects controls are consolidated into a single Differences field and a Create If Missing option; an existing Save node keeps working as before and upgrades automatically the next time it is opened, so no manual changes are required. A new Content Fetch action looks up content by a field value without failing when nothing matches.
- Administrators can now configure private network routing for server-to-server traffic between Esca Automations and a connected CMS, keeping that traffic off the public internet in both directions.
- The automation template catalog and recipe picker are now organized into separate Examples, Recipes, and Workflows views, each explaining what that kind of template offers, instead of a single list filtered by tag.
- Dragging a connector onto empty canvas now offers to create the next step where it was dropped, instead of requiring a step to already exist there.
- Connected CMS administrators now have a dedicated administration area for reviewing automation webhooks and on-demand trigger registrations, including a log of every delivery and fire attempt and, when one was skipped, why.
- Added a Microsoft Teams connection and a set of actions for automations to post to and interact with Teams channels.
Improvements
- Table column headers, such as those in the automations and runs lists, now stay visible while scrolling instead of scrolling out of view.
- The execution log viewer is now paginated instead of loading an entire run's log at once.
- Agent responses and tool output in the run log and human-in-the-loop stream now render as formatted text and tables instead of raw, escaped text.
- Double-clicking a node now opens its edit form directly, and clicking a different node while a form is open moves the form to that node instead of requiring it to be closed first.
- A node whose connection type has no connection configured yet now explains that and links to the page for setting one up.
- A script node can now be saved with no source written yet; the source is only required when the automation runs.
- Configuring a custom payload's shape now opens directly to its field list instead of requiring an extra click to add the shape's container object first.
- A run in progress is now labeled Running instead of Pending, matching what the run is doing rather than its internal status name.
Bug fixes
- Fixed an issue where resuming an On Demand trigger placed in the middle of a workflow discarded the payload submitted with it and used the run's original trigger payload instead.
- Fixed an issue where inserting a step between two existing steps could overlap one or both of its neighbors instead of fitting cleanly between them.
- Fixed an issue that prevented a Schedule trigger from being run by hand from the editor.
- Fixed an issue where saving a script node with Auto-generate Output Type enabled could fail, and where an inferred field with no determinable type could permanently block the automation from being saved or archived afterward.
- Fixed the code editor used for scripts and expressions so it grows with its content instead of staying a fixed height, and so clicking into it after resizing a panel places the cursor where clicked.
- Fixed several places in the automation builder where hardcoded colors did not adapt to dark mode, resulting in poor contrast on the Stop button, node icons, and dashboard elements.
- Fixed an issue where a loop with a large number of iterations could cause the run to fail immediately after the loop finished, even though every iteration completed successfully.
- Fixed an issue where a step that failed inside a nested loop could display as skipped instead of showing its actual status.
- Fixed an issue where the node settings panel's Delete and Done buttons could render off-screen at high browser zoom levels.
- Fixed the CMS notifications pane so a notification's topic is the most prominent text in its row, instead of the Unsubscribe button.
- Fixed an issue where typing a forward slash in a code field, including as part of typing two slashes, could unexpectedly open the CMS's global search.
- Fixed an issue where adding a note to an empty canvas didn't dismiss the pulsing hint on the add-step button.
- Fixed an issue where deleting a connection did not stop that connection's webhooks and on-demand triggers from continuing to fire.
- Fixed an issue where enabling or disabling an automation's Dry Run setting in close succession could cause one of the two changes to be silently reverted.
Breaking changes
- Access to Esca Automations' tools on a connected CMS now requires a dedicated administrative permission, and those tools are no longer exposed to the CMS's own AI assistants. Any role used to connect Esca Automations to a CMS must be granted this new permission, or existing connections will stop working until it is.
v1.9.0
New features
- The Run button is now disabled while an automation has unsaved changes, with a tooltip explaining why and a prompt pointing to Save, so an automation can no longer be run against something other than what is on screen.
- Schedule triggers can now be run by hand from the editor instead of only when their schedule comes due. The run delivers the payload configured on the trigger and leaves the schedule untouched, and run history names the person who started it so a hand-started run is distinguishable from a scheduled one.
- Input and Output Mapping field names now default to a name implied by the mapping's source, such as the last segment of a path or reference, instead of requiring every field to be named manually.
Bug fixes
- Content changes made by an automation, including publishing, archiving, restoring, deleting, transitioning, and commenting, are now announced to the CMS, so triggers, editor subscriptions, and other listeners react to them as expected.
- Fixed an issue where a node inside a loop that referenced an earlier node in the same loop body could resolve to the wrong iteration's value instead of the current one.
- The Transition field on a workflow node now displays the transition that was actually selected, instead of an encoded value.
- Editing a node now clears its selection and highlight once the edit is saved, returning the builder to its automation-level controls.
- A trigger's fire condition and fields can now reference values from the data the trigger actually received, including fields not declared up front, registered variables, and secrets.
- An archived automation's editor now shows that it is archived and read-only, instead of continuing to display it as Live.
v1.8.0
New features
- Added a bundled recipe for sending a text message through Twilio.
- Added an option to notify a human-in-the-loop channel only when an AI agent has a question, instead of also sending its running progress.
- Added bulk automation export and import, letting a set of automations be exported together and reimported as a group, with references between them preserved.
- Added search to the automations list, filtering by name and description.
- Added a dedicated Executions page listing every automation's runs across the current site, alongside the existing per-automation run history.
- Slack messages can now be composed as Block Kit blocks, markdown, or raw JSON, in addition to formatted rich text, reaching many more of Slack's block types than before.
- Automation templates now carry tags and can be filtered by node type in the template catalog and recipe picker.
- Added per-site limits on enabled automations and daily automation and node executions, with a warning as a site approaches its limit and a block once it's reached.
- Added bulk Enable, Disable, Archive, and Restore actions to the automations list, applied across a checkbox selection.
Improvements
- The fired trigger now shows a starting indicator while a run is being picked up, instead of a blank canvas.
- On Demand triggers with a simple custom payload now show a plain form with one field per property, instead of a JSON editor.
- Automation settings now open in the builder's own pane instead of a dialog that covers the canvas, and sticky note text can now be selected and copied.
- The recipe picker is now a full-screen dialog sharing the same card layout as the template catalog.
- Adding a second branch off a node that already has one no longer requires a manual drag and connect.
- Polished the automations list toolbar, including a hover preview of which rows a bulk action will affect.
- Redesigned the automations list into a more compact set of columns, with author avatars and a clearer run-status indicator.
- Multi-line variable values, such as a script's output or an AI agent's answer, now keep their line breaks and formatting when they reach Slack, Jira, or other destinations, instead of collapsing to a single line.
- The AI iteration cap for the Create with AI tool is now a configurable setting instead of fixed.
- Blank automation names are now auto-numbered instead of colliding.
v1.7.0
New features
- Added canvas annotations to the automation builder, letting notes be attached directly to nodes with rope-style tethers, editable text, and color coding. Also added categories for automation templates, making it easier to find a starting point for a new automation.
- Added a diagnostic that flags when a connected CMS is running a version that doesn't match, replacing the scattered, hard-to-diagnose symptoms that previously resulted from a version mismatch.
- Made outbound HTTP behavior during Dry Run an explicit, configurable setting instead of an implicit one.
- Added the ability to rename nodes on the automation builder canvas.
- Redesigned variable binding to combine a free-text field that accepts direct typing with pickers that preview the resolved value, replacing the previous picker-only interface.
Improvements
- Automation runs shown on the Activity card now open the run's workflow and display details on hover.
- Restyled the automation History pane with status badges, author avatars, and a page navigator.
- The automations list now indicates which automations are archived.
- Moved Esca Automations' CMS chrome into an opt-in module rather than applying it by default.
- Stopping a run now records what the run actually completed before it stopped, and the stop action is acknowledged immediately instead of waiting on the next poll.
- Added configurable limits on script sandbox memory, CPU, and value sizes to prevent a single script from degrading performance for other runs.
- Improved node-editor pane resizing performance when the pane contains embedded objects, eliminating lag.
v1.6.0
New features
- Added opt-in resilience policies for nodes, allowing retry and circuit-breaker behavior to be configured per node instead of relying on default behavior.
- Added automation run notifications.
- Added a cross-automation AI approvals inbox, giving human-in-the-loop reviewers a single place to approve or reject actions the local AI agent wants to take across all automations.
- Automations now retain version history and a change audit log.
- Added automation export and import, with soft validation that warns about issues instead of blocking the import outright.
- Added Query Driven Execution, which runs an automation against the set of content matched by a query.
- Added a live activity strip to the automation pane showing recent runs.
- Added an on-demand trigger widget with a cooldown indicator, showing when a manually fired trigger becomes available again.
- Node output can now be referenced as a whole payload, rather than requiring individual fields to be selected.
Improvements
- Browser tab titles are now consistently formatted as
[page] | Esca Automations. - Added a toggle to show full timestamps in the runs list.
- The AI response in chat now renders as formatted text instead of raw markdown.
- Enlarged the connection dots in the flow builder for easier clicking.
- Enlarged the Esca chatbot avatar.
- Refreshed AI icons with an animated brand sparkle.
- Automations created from a template now get distinct default names instead of duplicate ones.
v1.5.0
New features
- Added an AI Condition node, letting a condition's branch be decided by an AI evaluation instead of a fixed expression.
- Added trigger fire conditions, which gate whether an automation fires at the moment a webhook is received, rather than always starting a run for every webhook.
- Added a Log action node for writing custom messages to a run's execution log.
Improvements
- The node edit pane can now be resized larger.
- Restored the site switcher in the CMS header.
- Restyled the Last Run tab's empty states and the affordance for viewing a run.
- Styled and componentized the in-tool human-in-the-loop response surface.
- Made several small refinements to the Email node's label, the cost savings override form, and navigation ordering.
v1.4.0
New features
- Added default-site scoping to CMS connections, so a connection can be limited to a specific site.
- Added Estimated Cost Savings, showing an estimate of the time or cost an automation has saved.
- Added Work In Progress snapshots to the automation flow editor, so in-progress edits are preserved.
Improvements
- Added icons to the CMS navigation and flattened single-tool sections in the nav.
- The chat empty state now shows the Esca avatar with a greeting popover.
- Folded the CMS header into the nav column on all tool pages.
v1.3.0
New features
- Added AI agents as a node type, along with a library of automation templates, expanded run observability, and usage tracking across automations.
- Added an automation-specific delegated permission for content types.
Improvements
- Agent lists now use the shared Brightspot UI pagination component in the sticky footer.
- Restyled Agent cards using shared Brightspot UI components, including card shadows and status badges.
- Added the Esca logo to the CMS tool header.
v1.2.0
Improvements
- Moved automation list pagination into a sticky footer.
- Improved the AI builder.
- Improved automation graph performance.
- The node view model now syncs to the canvas without a full page reload.
- Made the workflow run pane resizable.
- Renamed the product from Otto to Esca throughout the UI and AI prompts.
- Restyled run-mode buttons using the shared Brightspot UI button group.
v1.1.0
New features
- Added run-time inspection tabs to the automation builder pane.
Improvements
- Made the automation pane resizable.
v1.0.0
The initial release introduced the automation builder and its core building blocks.
New features
- Added a service account OAuth installation flow for CMS connections.
- Added Dry Run, which previews an automation's execution without side effects.
- Added the payload structure and variable system for passing data between nodes, along with an OpenAPI action node.
- Added node output mapping, error handles, and a redesigned data transformer for reshaping data between nodes.
- Added a Script node, powered by GraalVM, for running custom logic during an automation.
- Added an execution log viewer for inspecting what happened during a run.
- Added a fan-out execution model, allowing a single node to spawn parallel branches of execution.
- Added the ability to manually resume a run mid-workflow using execution-context actions.
- Added the initial set of triggers and content actions, with trigger names phrased in the past tense (for example, "Content Published") to describe the event that already occurred.
- Added an AI Agent action and a Script condition node.
- Added an HTTP Request action, a variable resolver for embedded fields, and an execution output viewer.
- Added variables and secrets, for storing and reusing values — including sensitive credentials — across an automation.
- Added a Jira integration and initial resilience infrastructure (retries and circuit breakers) for node execution.
- Added a human-in-the-loop framework for AI agents, a Slack provider for approvals, and streaming AI agent responses.
- Added an Email action that doesn't require a saved connection, along with a direct-send Slack action.
- Added Loops, for repeating a set of actions over a list of items.
- Added an Automation action and a completion trigger, letting one automation call another and react when it finishes.
- Added an Expression condition node with a shared set of comparison operators.
- Added OAuth support for generic connections, not just the built-in integrations.
- Added a Remote AI Agent action that runs on a connected CMS instead of locally.
- Added site-scoped access boundaries, per-page permissions, and a dedicated view for managing content types.
- Added a Stop button for canceling an automation mid-run.
- AI Agent nodes can now be constrained to return output matching a defined schema.
Improvements
- Automation run history is automatically archived to keep run queries fast over time.
- Removed the iframe used for node editing, improving reliability of the node editor.
- Restructured the automation builder's layout for a clearer editing experience.
- Added distinct icons for each node type, sourced automatically from a brand-icon service where applicable.
- Automation runs now show who or what triggered them.
- A single Jira connection can now back multiple webhook triggers.
- Added a daily snapshot of active automations to usage metrics.
- Hardened the automation engine's resilience and scaling behavior.
- AI Create's activity log can now be shared, and its agent instructions adapt to the active connection.
- Added summary fields to AI agent output.
- The navigation rail and sub-navigation are expanded by default on first visit.