> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flowx.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# FlowX.AI 5.8.0 Release Notes

> Runtime authorization overhaul, UI Flow permissions, Custom Components in Processes, new theme components, Angular bulk file upload, and webhook provider adapters.

<style>
  {`@media (max-width: 760px) { .hero-5-8-0-frame { padding-bottom: 260% !important; } }`}
</style>

<div className="hero-5-8-0-frame" style={{position: "relative", width: "100%", paddingBottom: "62%", borderRadius: "12px", overflow: "hidden"}}>
  <iframe src="https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/5.6/hero-5.8.0.html" style={{position: "absolute", top: 0, left: 0, width: "100%", height: "100%", border: "none"}} />
</div>

<Note>
  **Deployment models:**

  * <Badge color="red" icon="building">Self-Hosted</Badge> Features for self-hosted (on-premises) deployments
  * <Badge color="green" icon="globe">All Deployments</Badge> Features available in both self-hosted and SaaS
</Note>

Sharing a FlowX solution used to mean handing out admin keys. **5.8.0 changes that.** The AI Developer now ships the React component you wished you'd had time to build, PII never reaches your LLM by accident, and you can finally invite a reviewer without giving them the platform.

<div style={{position: "relative", width: "100%", paddingBottom: "36.7%", borderRadius: "12px", overflow: "hidden", marginTop: "16px"}}>
  <iframe src="https://s3.eu-west-1.amazonaws.com/docx.flowx.ai/hero-maya-5.8.0.html" style={{position: "absolute", top: 0, left: 0, width: "100%", height: "100%", border: "none"}} />
</div>

### What changed since 5.7.0

| 5.7.0                                                      | 5.8.0                                                                                                                       |
| ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| End-user access management with org-level roles and groups | + **Runtime authorization** with project-version-scoped roles, groups, and attribute-based assignment                       |
| UI Flows accessible to any runtime user                    | + **UI Flow permissions**: assign roles per UI Flow, evaluated at runtime                                                   |
| Custom Components in UI Flows only (Phase 1, React)        | + **Custom Components in Processes** with shared data model, input/output mappings, and AI Developer generation             |
| Built-in UI components                                     | + **Tooltip, Markdown, Progress Bar, Separator** as new theme components                                                    |
| React-only multi-file upload                               | + **Angular SDK bulk file upload**                                                                                          |
| Generic webhook gateway                                    | + **Webhook provider adapters** (Slack, with HMAC signing-secret validation)                                                |
| Oracle Database (basic SQL editor)                         | + **Richer SQL autocomplete** in the Monaco editor: operators, schema-aware tables/columns, and `:paramName` interpolations |
| No personal-information guardrails on AI workflow nodes    | + **PII Guard** with input/output scans, sensitivity presets, and an entity catalog                                         |

***

**What's new?**

<Tabs>
  <Tab title="Platform">
    🔐 [**Runtime authorization**](#runtime-authorization) - Project-scoped roles, end-user groups in FlowX, and Solutions → Share flow\
    📋 [**UI Flow permissions**](#ui-flow-permissions) - Role-based UI Flow visibility with runtime enforcement
  </Tab>

  <Tab title="Builders">
    🧩 [**Custom Components in Processes**](#custom-components-in-processes) - Bundled CCs in Process User Tasks with shared data model\
    🎨 [**New UI components**](#new-ui-components) - Tooltip, Markdown, Progress Bar, Separator\
    📥 [**Angular bulk file upload**](#angular-bulk-file-upload) - Multi-file upload component for the Angular SDK\
    📦 [**UI Flow multi-file upload backend**](#ui-flow-multi-file-upload-backend) - Single bulk endpoint and one completion SSE event for batch uploads\
    🪝 [**Webhook provider adapters**](#webhook-provider-adapters) - Slack inbound webhook support with HMAC signing\
    🗄️ [**Richer SQL autocomplete**](#richer-sql-autocomplete) - Monaco editor enhancements for the Oracle data source SQL editor\
    🧱 [**Data source UX redesign**](#data-source-ux-redesign) - Tile-based creation, type filters, unified settings, save with incomplete config\
    ➕ [**Context menu adds UI components in Processes**](#context-menu-adds-ui-components-in-processes) - Right-click Add UI component in Process User Tasks and Reusable UI Templates\
    👆 [**Pointer cursor on actionable elements**](#pointer-cursor-on-actionable-elements) - Web renderers show pointer on action-bound components
  </Tab>

  <Tab title="AI Platform">
    🛡️ [**PII Guard**](#pii-guard) - Personal information identification on AI inputs\
    🤖 [**AI Developer generates Custom Components**](#ai-developer-generates-custom-components) - Pre-built agent now drafts Custom Component code\
    📚 [**Knowledge Base enhancements**](#knowledge-base-enhancements) - System metadata keys, Kafka indexer→embedder, Qdrant export/delete, error handling\
    🌐 [**Web Crawler multi-URL filters**](#web-crawler-multi-url-filters) - Multiple URL filters per crawler config
  </Tab>
</Tabs>

{/* THEME A — RUNTIME AUTHORIZATION (BLOCKED ON MARIAN re CORE-4616) */}

### **Runtime authorization**

<Card title="Runtime authorization overhaul" icon="shield-keyhole" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      **Before 5.8.0:** a role on a user matched every project that role appeared in. **Now:** roles live at the project version, sharing is explicit, and Designer users still bypass runtime so they can demo without standing up test accounts.

      Runtime access is reorganized around the project. Roles live at the **project version**, each org has a managed catalog of **end-user groups**, and access flows through a **Solutions → Share** modal. FlowX retains authentication and external-IDP federation in Keycloak; runtime roles, end-user groups, and project-scoped sharing live in FlowX itself, evaluated by a custom runtime authorization service tuned for the volume of runtime permission checks. SpiceDB remains the design-time permission engine for Designer access.

      <Card title="Documentation" icon="book" href="/5.9/setup-guides/access-management/runtime-authorization">
        See Setup guides → Access management → Runtime authorization.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Project-scoped roles" icon="diagram-project">
          Each project version declares the runtime roles required to operate it. Roles are org-level entities, defined once and reusable across projects and libraries.
        </Card>

        <Card title="Default `user` role on creation" icon="user-plus">
          New projects spawn with a default `user` role so a fresh project is reachable on day one without extra wiring.
        </Card>

        <Card title="Sharing from Solutions" icon="share-nodes">
          The Solutions page gains a **Share** modal. Pick a user or end-user group, assign a role, and the user can launch the solution at runtime.
        </Card>

        <Card title="End-user groups in FlowX" icon="users">
          Groups previously managed in Keycloak now live in FlowX. Recommended pattern: an "All End Users" group per single-role solution; one group per role for multi-role solutions.
        </Card>

        <Card title="Process swimlane roles" icon="layer-group">
          BPMN swimlanes assign view, execute, and self-assign permissions per role.
        </Card>

        <Card title="Designer-user bypass" icon="user-secret">
          Designer users can run any project they have designer access to without holding a runtime role; they auto-receive view, execute, and self-assign on every swimlane.
        </Card>

        <Card title="Active Policy gate" icon="seal-check">
          The Share modal lists only roles defined in the build set as **Active Policy** for the project. Roles defined in a non-active build do not appear until promoted.
        </Card>
      </CardGroup>
    </Tab>

    <Tab title="Architecture">
      The 5.8.0 release introduces a clear split between authentication and runtime authorization:

      | Concern                            | System             | Notes                                             |
      | ---------------------------------- | ------------------ | ------------------------------------------------- |
      | Authentication, sessions, MFA      | Keycloak           | Unchanged                                         |
      | External IDP federation            | Keycloak           | Configured per organization                       |
      | User attributes (business filters) | Keycloak           | Source of truth for token claims                  |
      | Runtime roles                      | FlowX (custom CAS) | Defined per project version, evaluated at runtime |
      | End-user groups                    | FlowX (custom CAS) | Replaces Keycloak group management                |
      | Project-scoped sharing             | FlowX (custom CAS) | Solutions → Share modal                           |
      | Design-time permissions            | FlowX SpiceDB      | Designer UI access; unchanged from prior releases |

      A `designer-user` Keycloak attribute is auto-managed on each user (`true` for designer users, `false` for end-users), with a mapper on the `flowx-platform-authenticate` client so the engine can check it cheaply on the access token.
    </Tab>

    <Tab title="Migration">
      <Warning>
        **Sharing settings do not export between environments or workspaces.** Configure sharing per environment as a deliberate step when promoting a project to a higher environment.
      </Warning>

      Sharing data does not travel with the project export, so promoting a build from one environment to another (for example, dev to staging) requires a sharing pass in the target environment. Treat it as an explicit step in your deployment checklist.

      Existing FlowX organizations migrate as follows:

      * Roles previously assigned directly to users continue to work for backward compatibility while you rebuild assignments under the project-scoped model.
      * End-user groups configured in Keycloak are migrated into FlowX and become the authoritative source going forward.
      * Existing UI Flows receive the project-level **User** role automatically as their default allowed role on upgrade. See the [UI Flow permissions](#ui-flow-permissions) section for next steps.
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

{/* THEME B — UI FLOW PERMISSIONS */}

### **UI Flow permissions**

<Card title="UI Flow permissions" icon="lock" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      **Before 5.8.0:** every UI Flow was reachable by anyone with runtime access. **Now:** each UI Flow carries its own allow-list and components inside it can be hidden or disabled per role.

      Each UI Flow now carries a list of allowed runtime roles. Users without one of those roles cannot start the UI Flow at runtime, and the UI Flow does not appear in the solutions list returned by the runtime API. Inside a UI Flow session, individual components can be hidden or disabled by permission-based rules evaluated at runtime against the user's permission set.

      <Card title="Documentation" icon="book" href="/5.9/docs/building-blocks/ui-flows#ui-flow-permissions">
        See UI Flows → UI Flow permissions.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Permissions page" icon="user-shield">
          A new **Settings → Permissions** page in the UI Flow editor lets you assign one or more runtime roles to each UI Flow.
        </Card>

        <Card title="Default role on creation" icon="user-plus">
          New UI Flows receive the project-level **User** role by default so they are reachable on day one; tighten the list before deploying.
        </Card>

        <Card title="Per-component hide/disable" icon="eye-slash">
          Components can be hidden or made readonly based on the user's runtime permissions, using the same hide/disable rule machinery as JavaScript expressions.
        </Card>

        <Card title="Permission toast" icon="circle-exclamation">
          Users without the required role see a permission toast in the Designer-hosted runtime preview; the deployed app returns 403 from the start endpoint.
        </Card>

        <Card title="Input-parameter validation" icon="check-double">
          Input parameters are validated against the UI Flow's input schema before the session is created.
        </Card>

        <Card title="Travels with import/export" icon="file-export">
          Allowed roles are saved on the UI Flow resource and travel with project export/import.
        </Card>
      </CardGroup>
    </Tab>

    <Tab title="Migration">
      UI Flows created before 5.8.0 receive the project-level **User** role automatically as their default allowed role on upgrade. Review and tighten the role list per UI Flow as part of the 5.8.0 deployment checklist.
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

{/* THEME C — CUSTOM COMPONENTS IN PROCESSES */}

### **Custom Components in Processes**

<Card title="Custom Components in Processes" icon="puzzle-piece" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      **Before 5.8.0:** Custom Components only ran in UI Flows. **Now:** drag one onto a Process User Task and the React SDK applies the input/output mappings at runtime.

      Bundled Custom Components, previously only usable in UI Flows, now render in **Process User Tasks**. Each Custom Component carries its own **data model** with explicit input and output slices, and you map process data into and out of the component at each use site. Renderer support ships in the React SDK.

      <Card title="Documentation" icon="book" href="/5.9/docs/building-blocks/reusable-resources/custom-components#using-custom-components-in-process-user-tasks">
        See Custom Components → Using Custom Components in Process User Tasks.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Process User Task host" icon="diagram-project">
          Drag a Custom Component onto a Process User Task layout the same way you do in UI Flows.
        </Card>

        <Card title="Custom Component data model" icon="diagram-subtask">
          Each Custom Component declares its own data model. The Designer keeps input and output slices isolated so the component contract is clear at every use site.
        </Card>

        <Card title="INPUT mappings" icon="arrow-right-to-bracket">
          Map process data attributes onto the Custom Component's input slice at runtime, so the component receives only the data it declared.
        </Card>

        <Card title="OUTPUT mappings" icon="arrow-right-from-bracket">
          When the component triggers an action, the React SDK applies the configured OUTPUT mappings before piping `saveData` back to process variables.
        </Card>

        <Card title="Test with sample inputs" icon="vial">
          The Custom Component editor lets you fill input params with sample data for in-Designer preview, mirroring the UI Flow test flow.
        </Card>

        <Card title="Import and export" icon="file-export">
          Custom Components export and import alongside the data model and mappings so a component travels intact between projects.
        </Card>
      </CardGroup>
    </Tab>

    <Tab title="Limitations">
      Phase 1 limitations from 5.7.0 still apply: React SDK only (no Angular renderer), pre-defined dependency set (React, Emotion, Lodash, Axios, date-fns), browser-side bundling, and client-side rendering only. See the [Custom Components limitations](/5.9/docs/building-blocks/reusable-resources/custom-components#limitations-phase-1) section.
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

{/* THEME D — NEW UI COMPONENTS */}

### **New UI components**

<Card title="New UI components" icon="grid-2" iconType="duotone">
  Four new theme components ship with renderer parity across React, Angular, and Android SDKs.

  <CardGroup cols={2}>
    <Card title="Tooltip" icon="message" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/tooltip">
      Contextual hint anchored to any UI element. Configurable text (static, local variable, or computed expression), position handling, and an optional icon.
    </Card>

    <Card title="Markdown" icon="markdown" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/markdown">
      Render Markdown content from a static string or computed expression, with localization formatting for numbers, dates, and currency. Six heading levels and link styling are theme-driven.
    </Card>

    <Card title="Progress Bar" icon="bars-progress" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/progress-bar">
      Visual progress indicator. Set a value between `0` and `1` from a static value, local variable, or computed expression.
    </Card>

    <Card title="Separator" icon="grip-lines" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/separator">
      Visual divider with theme-driven color. Adjustable height for layout spacing.
    </Card>
  </CardGroup>

  All four are exposed in the **Theme Admin** sidebar so theme overrides cascade through templates.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

{/* THEME E — STOP AGENT RESPONSE: REMOVED.
  Verified 2026-05-04 from designer source: all 4 stop-response commits
  (56abef8316, a1d2f913c0, 2ec2eb404b, 59bb27a023) are dated 2026-04-20/21,
  on origin/master before the 5.7.0 freeze (2026-04-28). Feature already
  documented at 5.1/ai-platform/chat-component.mdx:378 (5.7.0 callout) and
  announced in the 5.7.0 RN at lines 186 + 349. The Jira tickets
  RPT-5330/5341/5340/5339/5338 carry fixVersion = 5.8 but the work shipped
  in 5.7.0. Do not re-document in 5.8.0 RN. */}

{/* STANDALONE FEATURES */}

### **Angular bulk file upload**

<Card title="Angular bulk file upload" icon="upload" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      The **Multiple File Upload** component (`BULK_FILE_UPLOAD`), previously available only in the React SDK, now ships in the Angular SDK with the same drag-and-drop area and theming. Existing UI Flows that use the component render across React and Angular containers without configuration changes.

      <Card title="Documentation" icon="book" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/multiple-file-upload">
        See the Multiple File Upload component reference.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Renderer parity" icon="arrows-left-right">
          Same component, same configuration, same theming across React and Angular containers.
        </Card>

        <Card title="Drag-and-drop area" icon="hand-pointer">
          Drop zone with click-to-browse fallback in both renderers.
        </Card>

        <Card title="Theme-driven" icon="palette">
          The component picks up theme overrides for typography, colors, and spacing the same way as built-in components.
        </Card>

        <Card title="No flow changes needed" icon="circle-check">
          UI Flows authored before 5.8.0 render in the Angular SDK without edits.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **UI Flow multi-file upload backend**

<Card title="UI Flow multi-file upload backend" icon="files" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      Multi-file uploads from UI Flows now use a dedicated bulk endpoint and a single completion event in place of the per-file pattern. The upload action accepts a list of temp-file IDs in one request and the SDK receives a single SSE frame when the batch is persisted.

      <Card title="Documentation" icon="book" href="/5.1/docs/building-blocks/ui-designer/ui-component-types/multiple-file-upload#ui-flow-upload-flow">
        See Multiple file upload → UI Flow upload flow.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Single bulk endpoint" icon="upload">
          `POST /ui-flow/{uiFlowSessionId}/upload-multiple` accepts a list of temp-file IDs and returns a server-generated `uploadBatchId`.
        </Card>

        <Card title="Single completion event" icon="bolt">
          One SSE frame (`UI_FLOW_FILE_UPLOAD_MULTIPLE`, namespace = `uploadBatchId`) delivers per-file results once the batch is persisted.
        </Card>

        <Card title="New Kafka topic" icon="message">
          `ai.flowx.plugin.document.trigger.persist.document.session.bulk.v1` carries the bulk command from process-engine to document-plugin.
        </Card>

        <Card title="Session variable mapping" icon="list">
          Per-file results are stored as a list under the upload action's `responseKey` in the UI Flow session.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Webhook provider adapters**

<Card title="Webhook provider adapters" icon="webhook" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      Inbound webhook registrations now select a **provider**: `GENERIC` or `SLACK`. The Slack adapter performs HMAC-SHA256 signature validation against the Slack signing secret on every request, including the `X-Slack-Request-Timestamp` skew check (5 minutes). Provider-segmented URLs (`/webhooks/incoming/slack/...`) keep generic and provider-specific registrations isolated. Future providers plug in behind the same `InboundProviderAdapter` interface without changing the URL contract.

      <Card title="Documentation" icon="book" href="/5.9/docs/platform-deep-dive/integrations/incoming-webhooks#provider-adapters">
        See Incoming webhooks → Provider adapters.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Slack signature validation" icon="shield-check">
          HMAC-SHA256 on `X-Slack-Signature`, with timestamp skew enforced
        </Card>

        <Card title="Slack URL-verification handshake" icon="handshake">
          The gateway answers Slack's `url_verification` challenge automatically
        </Card>

        <Card title="Provider-segmented URLs" icon="link">
          `/webhooks/incoming/{provider}/...` keeps providers isolated; mismatch returns 400
        </Card>

        <Card title="Independent secret rotation" icon="rotate">
          Rotate the provider signing secret without touching the FlowX API key
        </Card>

        <Card title="Settings tab" icon="gear">
          Provider + signing secret moved to a dedicated Settings tab on the webhook system
        </Card>

        <Card title="Pluggable" icon="puzzle-piece">
          New providers add an adapter and an enum value; no URL or registration schema changes
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Richer SQL autocomplete**

<Card title="Richer SQL autocomplete" icon="database" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      The Monaco editor on the Oracle Database data source now ships with a full SQL language definition. Autocomplete suggestions cover SQL keywords and operators, table and column names parsed from the saved schema context, and `:paramName` interpolations resolved from the parameters panel.

      <Card title="Documentation" icon="book" href="/5.9/docs/platform-deep-dive/integrations/oracle-database#sql-editor">
        See the Oracle Database SQL editor documentation.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Keywords and operators" icon="code">
          Full SQL language definition powers keyword highlighting and completion.
        </Card>

        <Card title="Schema-aware suggestions" icon="table-list">
          Tables and columns parsed from the saved schema context appear in completion lists.
        </Card>

        <Card title="Parameter interpolation" icon="brackets-curly">
          `:paramName` placeholders resolve against the parameters panel for inline preview.
        </Card>

        <Card title="Editor consistency" icon="grip-lines">
          Matches the editor experience used by other code surfaces in the Designer.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Data source UX redesign**

<Card title="Data source UX redesign" icon="layer-group" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      The Data Sources resource page is rebuilt around a tile-based creation flow and a unified details view. Each data source type has its own icon and a dedicated tile in the **New Data Source** modal, with a search box that filters tiles as you type. The list view shows the type next to each entry and adds a type filter so you can scope the list by connector. Settings panels for every data source type are normalized to the same card-based layout.

      <Card title="Documentation" icon="book" href="/5.1/docs/platform-deep-dive/integrations/integration-designer">
        See the Integration Designer reference for data source configuration.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Tile-based creation modal" icon="grid-2">
          The **New Data Source** modal lists every connector type as a searchable tile, replacing the previous type dropdown.
        </Card>

        <Card title="Type icons in the list" icon="icons">
          Each entry in the data sources list shows the connector's icon and type, so a long list is easier to scan.
        </Card>

        <Card title="Filter by type" icon="filter">
          Filter the list to a specific connector type (REST, FlowX Database, Email, MCP Server, Knowledge Base, etc.) without scrolling.
        </Card>

        <Card title="Unified settings layout" icon="grip-lines">
          Every data source type now uses the same card-based settings layout, so the configuration experience is consistent across connectors.
        </Card>

        <Card title="Save with incomplete config" icon="floppy-disk">
          Create and save a data source even when some fields (credentials, endpoints) are not yet available. You can reference the data source in workflows and processes immediately and finish the configuration later — the data source will only operate at runtime once required fields are filled in.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **PII Guard**

<Card title="Personal Information Guard" icon="shield-halved" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      **Before 5.8.0:** data-sensitive customers couldn't enable AI workflow nodes at all. **Now:** every AI node carries a per-node guardrail with sensitivity presets, scan directions, and a fail-closed contract.

      AI workflow nodes gain a per-node guardrail that detects and replaces personal information before it reaches the LLM and, optionally, scans LLM output before it flows downstream. The guard runs against the new **Data Privacy** service, configured per node with sensitivity presets, scan directions, and an entity catalog organized into Universal, Regional EN, and Regional RO scopes. Iteration 1 covers Custom Agent, Intent Classification, Extract Data from File, and all AI Text, Document, Image, and Data Operations, including Document Generation.

      <Card title="Documentation" icon="book" href="/5.1/docs/platform-deep-dive/integrations/integration-designer#personal-information-guard">
        See Integration Designer → AI Nodes → Personal Information Guard.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Per-node toggle" icon="toggle-on">
          Enable on any AI node. Choose a sensitivity preset (Strict / Balanced / Relaxed) or set a custom threshold.
        </Card>

        <Card title="Input and output scans" icon="arrow-right-arrow-left">
          Redacts inputs and `systemPrompt` before the LLM call; optionally scans LLM output before it leaves the node.
        </Card>

        <Card title="File redaction" icon="file-shield">
          Document and image nodes get a redacted source artifact uploaded back to the same storage; the file binding is swapped automatically.
        </Card>

        <Card title="Entity catalog" icon="list-check">
          24 entity types (email, phone, IBAN, etc.) grouped under Universal, Regional EN, and Regional RO. Modal supports search and section-level Select All.
        </Card>

        <Card title="System-prompt appender" icon="message-lines">
          Custom Agent nodes get a non-editable system-prompt segment teaching the LLM how to handle `<PII type=.../>` placeholders.
        </Card>

        <Card title="Fail-closed" icon="circle-xmark">
          Any error from the Data Privacy service stops node execution and surfaces on the run log; no partially-redacted prompts reach the LLM.
        </Card>

        <Card title="Run-log visibility" icon="clipboard-list">
          Each scan reports status, per-entity detection counts, and (for file scans) original and redacted storage paths.
        </Card>

        <Card title="New Data Privacy service" icon="server">
          Backed by Presidio. Configured via `FLOWX_DATAPRIVACY_BASEURL` and `FLOWX_DATAPRIVACY_TIMEOUTSECONDS` on integration-designer.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Knowledge Base enhancements**

<Card title="Knowledge Base" icon="database" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      Knowledge Bases gain richer metadata and a more resilient indexing path. Stores and chunks expose system metadata fields you can filter on in the Test KB modal and the Custom Agent node, the indexer and embedder communicate over Kafka instead of synchronous calls, and the Update Knowledge Base node can ingest files by path from inside a workflow.

      <Card title="Documentation" icon="book" href="/5.9/docs/platform-deep-dive/integrations/knowledge-base-integration/knowledge-base-overview">
        See Knowledge Base → Overview.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="System metadata on stores" icon="tags">
          Filter entries by `Source` (Manual or Workflow), `Uploaded`, `Doc name`, `Doc type`, `Doc pages`, and `Store origin`
        </Card>

        <Card title="System metadata on chunks" icon="layer-group">
          Filter chunks by `Chunk counter`, `Chunk type`, `Chunk section`, `Chunk page start`, and `Chunk entry`
        </Card>

        <Card title="Kafka between indexer and embedder" icon="bolt">
          Replaces the previous synchronous gRPC path; per-chunk embedding requests flow through `ai.flowx.ai-platform.knowledgebase.internal.embedding-request.v1`
        </Card>

        <Card title="Delete chunks from Qdrant" icon="trash">
          Indexer forwards a delete job to the embedder, which removes matching points from Qdrant when an entry is deleted
        </Card>

        <Card title="File path mode in Update KB node" icon="file-import">
          The Update Knowledge Base node accepts `contentType: FILE_PATH` so workflows can ingest content uploaded earlier in the run
        </Card>

        <Card title="Doc pages in agent stream" icon="bars-staggered">
          Custom Agent streaming responses include `doc_pages` and chunk metadata (counter, type, section, page start) for richer trace and debug
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Web Crawler multi-URL filters**

<Card title="Web Crawler multi-URL filters" icon="filter" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      The Web Crawler node now accepts up to 20 URL filter patterns per crawler configuration. Open the **URL Filters** modal on the Web Crawler node, add one row per pattern, and the crawler restricts its breadth-first traversal to URLs that match any of the configured filters.

      <Card title="Documentation" icon="book" href="/5.9/setup-guides/web-crawler-setup">
        See the Web Crawler setup guide.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Up to 20 patterns per crawler" icon="list-ol">
          Add one row per pattern in the URL Filters modal; deep crawls match any pattern.
        </Card>

        <Card title="Replaces single-string filter" icon="arrow-right-arrow-left">
          The previous single-string filter is superseded by the new multi-pattern array. Existing crawlers are migrated automatically.
        </Card>

        <Card title="Breadth-first scoping" icon="sitemap">
          Filters apply to the crawler's breadth-first traversal so deep crawls stay within the intended scope.
        </Card>

        <Card title="Per-pattern tuning" icon="sliders">
          Combine narrow and broad patterns in one configuration to handle multi-section sites without spawning multiple crawlers.
        </Card>
      </CardGroup>
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **AI Developer generates Custom Components**

<Card title="AI Developer generates Custom Components" icon="code-branch" iconType="duotone">
  <Tabs>
    <Tab title="Overview">
      **Before 5.8.0:** the AI Developer wrote business rules and JS expressions. **Now:** it ships entire React Custom Components — JSX, CSS, `package.json`, and sample input data — in one prompt.

      The AI Developer pre-built agent gains a **Generate Custom Component** action and an **Edit Custom Component** action. From the Designer's AI command center, describe the component you want, and the agent returns a complete React bundle (JSX, CSS, `package.json`, and sample input data) that you can preview, accept, or iterate on. The same conversation can edit existing components.

      <Card title="Documentation" icon="book" href="/5.9/ai-platform/pre-built-agents/ai-developer">
        See AI Developer → Pre-built agents.
      </Card>
    </Tab>

    <Tab title="Key Features">
      <CardGroup cols={2}>
        <Card title="Generate from natural language" icon="wand-magic-sparkles">
          Describe a component in plain language; receive JSX, CSS, `package.json`, and sample input data in one response.
        </Card>

        <Card title="Sample input field" icon="vial">
          A dedicated input field lets you provide preview data so the generated component renders meaningfully on first run.
        </Card>

        <Card title="Edit existing components" icon="pen-to-square">
          Iterate on a generated or hand-authored component through the same conversation. The agent keeps the component context.
        </Card>

        <Card title="Inline preview" icon="eye">
          The Designer's Preview area renders the generated bundle next to the conversation so you can validate before saving.
        </Card>

        <Card title="Dependency summary" icon="cubes">
          A new dependency summary panel surfaces the npm packages the agent included in `package.json`.
        </Card>

        <Card title="Keep / Discard" icon="circle-check">
          Accept the generated bundle into the workspace or discard it without leaving the conversation.
        </Card>
      </CardGroup>
    </Tab>

    <Tab title="Limitations">
      The first iteration generates the component code, styles, and input parameters. Wiring component actions to host-side handlers (Process or UI Flow actions) is not yet inferred — connect actions manually after accepting the generated bundle.
    </Tab>
  </Tabs>

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **iframe logout postMessage contract**

<Card title="iframe logout postMessage" icon="window" iconType="duotone">
  The runtime SaaS app now notifies an iframe parent when a user logs out. When the parent passes a `parentOrigin` query parameter on the `/{orgCode}/logout` URL, the runtime posts `{ type: 'logout-success' }` to `window.parent` immediately before the sign-out redirect. Host applications that embed the FlowX runtime in an iframe can listen for this message and react (clear local state, navigate, surface a UI cue) without polling the iframe URL.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Context menu adds UI components in Processes**

<Card title="Right-click Add UI component in Processes and Reusable UI Templates" icon="square-plus" iconType="duotone">
  The right-click contextual menu for adding a UI component, previously available only in UI Flows, now works in **Process User Tasks** and **Reusable UI Templates** as well. Right-click a node in the components hierarchy panel to insert any allowed child component without dragging from the palette. Copy and paste styles are also exposed from the same menu.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **Pointer cursor on actionable elements**

<Card title="Pointer cursor on actionable elements" icon="hand-pointer" iconType="duotone">
  Web renderers now switch the cursor to a pointer when hovering over any UI component bound to an action, matching standard web affordances. No configuration change is required — the new behavior applies automatically to elements that already declare an action role.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **"Process Data" → "Local Variables" rename**

<Card title="Process Data renamed to Local Variables" icon="tag" iconType="duotone">
  In the UI Designer, the **Process Data** label is now displayed as **Local Variables** when you are editing a UI Flow or a Reusable UI Template. Process editing is unchanged and continues to use **Process Data**. The data source key and binding behavior are identical; only the user-visible label changed, so existing flows continue to work without any update.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

### **License billing guards**

<Card title="License billing guards" icon="receipt" iconType="duotone">
  The license service no longer creates billing plans for periods past an organization's subscription end date. This prevents stale plan rows from accumulating after a subscription expires and aligns the on-prem billing trail with the SaaS-side license lifecycle.

  <Badge color="red" icon="building">Self-Hosted</Badge>
</Card>

### **Speech-to-text and Web Crawler in AI consumption**

<Card title="Speech-to-text and Web Crawler in AI consumption" icon="chart-line" iconType="duotone">
  AI consumption tracking now includes Speech-to-text and Web Crawler workflow nodes alongside the existing AI Text, Document, Image, and Data Operations. Organizations on AI consumption-based plans see usage and billing reflected for these nodes from 5.8.0 onward.

  <Badge color="green" icon="globe">All Deployments</Badge>
</Card>

***

## Shipped by

This release is the work of the FlowX engineering team — backend, frontend, AI, infra, QA, and docs. It also belongs to the customers who told us what was broken last quarter. Thank you.

***

## Deployment guidelines

For component versions, environment variables, Kafka topics, and migration guidance, see [Deployment guidelines v5.8.0](./deployment-guidelines-v5.8).
