Changelog
Read below for more information on each version of Esca 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.
- 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.
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.
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.