> For the complete documentation index, see [llms.txt](https://docs.appmixer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.appmixer.com/changelog/version-6/6/6.5/6.5.0.md).

# 6.5.0

## New Features

#### New Diagram <a href="#new-diagram" id="new-diagram"></a>

A new, modern diagram for the flow builder canvas: more responsive, with new effects and animations, and new features such as **auto-connect** and **auto-align**. It also provides more visual feedback, especially when testing — you can see the status of each component and view its log data directly on the canvas by hovering over it.

An empty canvas now shows a placeholder that guides you to the two ways of starting a flow: adding a trigger manually or building the flow with AI.

The new diagram currently only supports the **left to right** layout. Customers using the **top to bottom** layout will automatically keep seeing the old diagram. We strongly recommend switching to the new diagram to get all of the new upgrades and features — after switching from top to bottom to left to right, the **auto-align** button (brush icon) in the lower left toolbar makes it easy to align your flows.

#### Flow Versioning & Drafts <a href="#flow-versioning--drafts" id="flow-versioning--drafts"></a>

**Versioning Panel**

A new side panel in the Designer lets you manage the version history of a flow: save named snapshots, rename, restore, clone a version into a new flow, or delete versions. A status bar above the canvas shows which historical version you are browsing.

**Draft System for Running Flows**

Running flows can now be edited safely through drafts. Clicking **Edit** on a running flow creates a draft; the live flow keeps running unchanged while you make your changes. **Publish Changes** merges the draft back into the original flow and automatically creates a version snapshot of the pre-publish state.

**Restore for Running Flows**

Versions can be restored even while a flow is running — the version is restored into a draft (an existing draft is replaced), never directly into the live flow. Restoring a stopped flow without a draft restores it in place and creates an automatic restore point first.

**Flow Versions API**

The new Flow Versions API powers all of the above: version CRUD, draft-aware restore, cloning a version into a new independent flow, version types (`manual`, `autosave`, `publish`, `restore-point`) and automatic garbage collection with configurable retention.

[Learn more](https://docs.appmixer.com/6.0/6.5/api/flows#flow-versions)

#### Flow Testing <a href="#flow-testing" id="flow-testing"></a>

**Test Flow in the Designer**

A new **Test flow** button executes a single test run of the current flow **without starting it**. Per-component progress is streamed live onto the canvas with status badges and connector colours; clicking a component's result badge opens its output, and the results link into the flow logs. Test runs never change the flow's stage and never touch production state.

**Trigger Test Inputs**

Dedicated test-input surfaces for common trigger types: a JSON payload dialog for **Webhook** triggers (with the option to load a recent live run), a conversational side panel for **Chat** triggers, and a form dialog for **Form** triggers rendering the trigger's configured fields.

**Test Data Resolution**

When no test data is supplied, the engine resolves the trigger's output using a fallback chain — the trigger's new `test(context)` method (real data), past runs from the flow logs, or a sample generated from the output port JSON schema — and reports which data source was used (`real`, `logs`, `dummy`, `manual`) so the Designer can inform the user.

**Test Runs API & Logs**

The test mechanism is available via a new SSE endpoint (`POST /flows/{flowId}/test`) with an abort endpoint. All log records produced by a test run — component outputs, `context.log()` output, static component calls and component errors — are marked with a `testRunId`, and the Logs API accepts a `testRunId` filter, so test executions are clearly marked and filterable in the Logs. In the UI, a consistent test-run indicator is shown in the Insights logs (in a dedicated column), the log detail, the Designer flow logs and the executions list.

Connector developers can implement the new `test(context)` virtual method to provide real sample data for their triggers.

[Learn more](https://docs.appmixer.com/6.0/6.5/api/flows#test-flow)

#### Flow Validation <a href="#flow-validation" id="flow-validation"></a>

* The validation sidebar in the Designer has been replaced with a floating validation panel attached to the **Start flow** / **Test flow** buttons.
* The Flow Validation API now reports components that require authentication but have no connected account — such flows fail validation instead of failing at runtime with "Missing access token".
* Required fields inside expression-type inspector fields are now validated as well.

#### Per-Component Error Handling <a href="#per-component-error-handling" id="per-component-error-handling"></a>

Each step in a flow can now define its own error handling (Designer: cogwheel → **Error handling**; API: the `errorHandling` component descriptor property):

* **Automatic retry** toggle with a configurable number of retries.
* **On error** action once retries are exhausted: route the error to a virtual **error output port** that can be wired to any downstream component (with error details and flow data available as variables), **stop the flow**, or **store the message as unprocessed** (the previous behaviour, still the default).

[Learn more](https://docs.appmixer.com/6.0/6.5/getting-started/system-webhooks)

#### AI Copilot <a href="#ai-copilot" id="ai-copilot"></a>

A new AI assistant built into the Designer that builds, edits and explains flows from natural language. Copilot designs flows directly on the canvas — selecting connectors, wiring components and filling in parameters — and can read the open flow to modify, remap or explain it. For running flows, Copilot works on a draft.

* Ships as an engine system plugin (`SYSTEM_PLUGINS=copilot`) with configurable LLM provider, model and base URL (`COPILOT_LLM_URL`) — so Copilot can also target an Anthropic-compatible LLM gateway or proxy.
* Conversation is retained per flow and restored when the panel is reopened; replies render as Markdown.
* The panel is resizable — drag its edge to change the width, double-click the resize handle to reset it.
* Configurable example prompts via the Designer widget options (`options.copilot.examplePrompts`).
* The Copilot button is automatically hidden when the plugin is not enabled.

**AI Usage Monitoring**

The **Insights** menu is now split into two sections: **Flow activity** (the flow execution logs) and **AI usage** (visible to administrators only). The AI usage dashboard shows Copilot spend: summary cards with an input/output token breakdown, a daily consumption chart, and a paged, searchable per-user / per-group / per-scope cost breakdown with drill-down into individual LLM requests — backed by new admin usage API endpoints.

The usage API supports optional `offset`/`limit` paging with a `totalCount` in the response (`totals` always describe the whole reporting window). Cost computation handles multiple models correctly: requests made with models missing from the pricing table report their token counts but add zero cost instead of invalidating the total, and group/scope breakdowns include a per-user breakdown.

[Learn more](https://docs.appmixer.com/6.0/6.5/getting-started/ai-copilot)

#### TypeScript Connectors <a href="#typescript-connectors" id="typescript-connectors"></a>

Component behaviour files can now be written in TypeScript. The engine runs them using Node.js native type stripping — no build step required, upload `.ts` files the same way as `.js` files.

[Learn more](https://docs.appmixer.com/6.0/6.5/building-connectors/basic-structure#typescript-components)

#### Conditional Auth Fields <a href="#conditional-auth-fields" id="conditional-auth-fields"></a>

Fields in a connector's authentication dialog can now declare a display precondition with the `when` property (`eq`/`neq` operators), so a field is only shown when another field has (or does not have) a specific value — for example, showing an AWS region field only when the Amazon Bedrock provider is selected. Hidden fields are excluded from validation and from the submitted credentials.

[Learn more](https://docs.appmixer.com/6.0/6.5/building-connectors/authentication#conditional-fields-when)

#### Flow & Integrations Manager Filters <a href="#flow--integrations-manager-filters" id="flow--integrations-manager-filters"></a>

Filters in the Flow Manager and Integrations manager now clearly indicate when they are applied and can easily be reset: each filter renders as a chip with a `Group: value` label that is highlighted when active, an **×** button clears a single filter group, and every filter menu offers an **All** option with a checkmark marking the active choice — in both grid and list layouts.

#### New APIs <a href="#new-apis" id="new-apis"></a>

**Resource Transfer**

New admin endpoint `PUT /resources/transfer` transfers all resources (flows, accounts, tokens, data stores, files, ...) from a user or group to another user or group as a background task — for example when an employee leaves. Deleting a group that still owns flows is now rejected unless its resources are transferred first (or `?force=true` is used).

**Progressive Component Loading**

`GET /components` accepts a `selectors[]` query parameter to request multiple component patterns in a single call, and the new `GET /flows/{flowId}/components` endpoint returns only the manifests used by a flow — so clients can load manifests progressively instead of fetching the full catalogue.

**AI Agent Tools Observability**

The static component call API accepts a new `log` flag that records the call in the execution logs (component identity, input/output, status, duration, correlation) — used to make AI Agent tool calls observable in the Logs UI.

#### Automation Hub <a href="#automation-hub" id="automation-hub"></a>

Automation Hub tiles now render a flow image in the card body when the flow's `image` field is set, instead of the connector icon strip.

#### OpenTelemetry Support <a href="#opentelemetry-support" id="opentelemetry-support"></a>

Opt-in OpenTelemetry instrumentation for HTTP, MongoDB, Redis and RabbitMQ across all engine services. Enable it by pointing `OTEL_EXPORTER_OTLP_ENDPOINT` at your collector; individual instrumentations can be toggled with env vars, with zero overhead when disabled.

[Learn more](https://docs.appmixer.com/6.0/6.5/appmixer-self-managed/monitoring-and-observability#opentelemetry)

## Performance & Technical Improvements

* **Faster Designer load** — the Designer loading sequence was reworked to significantly speed up opening flows.
* **Module preloader** — API nodes prebuild the most recently used component module caches right after startup, removing cold-start latency from component and variables endpoints. Shared `node_modules` are loaded once per component version, and preloading recovers gracefully from individual module failures.
* **Faster `GET /variables`** — eliminated excessive filesystem checks and redundant module resolution in component loading; component synchronization is now enabled by default with batched writes.
* **Optimized connector manifest loading** — component icons in `GET /apps` and `GET /components` responses are served as URLs instead of inline base64 data, dramatically reducing payload sizes.
* **Optimized `GET /logs`** — limited projections for single-flow queries and cached user→shared-flows relationships to avoid repeated database requests.
* **Concurrency improvements** — removed read/write locks from the component factory and uploader; concurrent component requests no longer serialize.
* **Poisoned message handling** — messages that repeatedly crash their consumer are detected via the broker delivery count and moved to the unprocessed messages collection instead of being redelivered indefinitely.
* **Webhook retries index** — added a missing `{ url: 1, due: 1 }` database index on the `webhookRetries` collection, so webhook circuit-breaker probe queries no longer run unindexed.
* **Improved flow token validation** — refactored authentication status resolution (`getAuthStatus`).
* **Dependency upgrades** — `ioredis` upgraded to the latest 5.x release; `axios`, `ajv`, `moment`, `adm-zip`, the OpenTelemetry packages and other dependencies updated to their latest releases.
* **Slimmer SDK** — the Plotly vendor library was removed and the SDK now uses a single vendored JointJS+ 4.2.4 runtime; redundant API calls from Designer Inspector input changes were eliminated.

## Bug Fixes

* **New diagram polish & performance** — fixed theming regressions and dark-mode contrast issues, sped up flow thumbnail capture on larger flows, removed the canvas scrollbars, improved note editing focus behaviour, added fallback icons with proper loading states for connector images, and restored the full zoom-out range and unbounded **Zoom to fit** so large flows can be brought fully into view.
* **Flow thumbnails** — thumbnails are now captured also for flows whose content is written on the server: flows built by AI Copilot, restored versions and published drafts previously ended up with a missing or stale thumbnail in the Flow Manager.
* **Component names without a manifest** — components whose connector manifest cannot be resolved (a removed connector, or one hidden by an ACL change) now display a readable name derived from the component type instead of a raw component ID — most visibly in the Wizard Builder.
* **Backoffice: Public Files upload errors** — failed uploads (for example a file exceeding the maximum allowed size) now show an error message instead of failing silently with a stuck loading indicator.
* **API version mismatch alert shown to admins only** — the Designer alert warning about an SDK/engine API version mismatch is now shown only to admin users; end users of embedded integrations no longer see a deployment concern they cannot act on. The SDK's `warning` event still fires for all consumers and now carries a stable `code` field (`apiVersionMismatch`, `apiValidationFailure`) for programmatic handling.

## Removed

* The **Insights Chart Editor** and **Insights Dashboard** SDK widgets (`appmixer.ui.InsightsChartEditor`, `appmixer.ui.InsightsDashboard`) have been removed, together with the histogram section of the Insights Logs widget. The Charts REST API remains available for existing chart data.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.appmixer.com/changelog/version-6/6/6.5/6.5.0.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
