Skip to content

Commit 70e5fd9

Browse files
committed
Merge release-1.10.0 into feature/wxo-oauth-sso-support and resolve variable service conflicts
2 parents ecb9511 + 4b46b57 commit 70e5fd9

319 files changed

Lines changed: 23250 additions & 3778 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.secrets.baseline

Lines changed: 269 additions & 214 deletions
Large diffs are not rendered by default.

docker/build_and_push.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
1010
# 2. do not add --platform=$BUILDPLATFORM because the pydantic binaries must be resolved for the final architecture
1111
# Use a Python image with uv pre-installed
12-
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
12+
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim AS builder
1313

1414
# Install the project into `/app`
1515
WORKDIR /app
@@ -75,7 +75,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
7575
# RUNTIME
7676
# Setup user, utilities and copy the virtual environment only
7777
################################
78-
FROM python:3.12.13-slim-trixie AS runtime
78+
FROM python:3.12-slim-trixie AS runtime
7979

8080

8181
RUN apt-get update \

docker/build_and_push_backend.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
################################
99
# BUILDER
1010
################################
11-
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
11+
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim AS builder
1212

1313
WORKDIR /app
1414

@@ -44,7 +44,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
4444
################################
4545
# RUNTIME
4646
################################
47-
FROM python:3.12.13-slim-trixie AS runtime
47+
FROM python:3.12-slim-trixie AS runtime
4848

4949
# Install minimal runtime dependencies
5050
RUN apt-get update \

docker/build_and_push_base.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
1111
# 2. do not add --platform=$BUILDPLATFORM because the pydantic binaries must be resolved for the final architecture
1212
# Use a Python image with uv pre-installed
13-
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
13+
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim AS builder
1414

1515
# Install the project into `/app`
1616
WORKDIR /app
@@ -77,7 +77,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
7777
# RUNTIME
7878
# Setup user, utilities and copy the virtual environment only
7979
################################
80-
FROM python:3.12.13-slim-trixie AS runtime
80+
FROM python:3.12-slim-trixie AS runtime
8181

8282

8383
RUN apt-get update \

docker/build_and_push_ep.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
1010
# 2. do not add --platform=$BUILDPLATFORM because the pydantic binaries must be resolved for the final architecture
1111
# Use a Python image with uv pre-installed
12-
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
12+
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim AS builder
1313

1414
# Install the project into `/app`
1515
WORKDIR /app
@@ -72,7 +72,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
7272
# RUNTIME
7373
# Setup user, utilities and copy the virtual environment only
7474
################################
75-
FROM python:3.12.13-slim-trixie AS runtime
75+
FROM python:3.12-slim-trixie AS runtime
7676

7777
RUN apt-get update \
7878
&& apt-get upgrade -y \

docker/build_and_push_with_extras.Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# 1. use python:3.12.3-slim as the base image until https://github.com/pydantic/pydantic-core/issues/1292 gets resolved
1010
# 2. do not add --platform=$BUILDPLATFORM because the pydantic binaries must be resolved for the final architecture
1111
# Use a Python image with uv pre-installed
12-
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder
12+
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim AS builder
1313

1414
# Install the project into `/app`
1515
WORKDIR /app
@@ -72,7 +72,7 @@ RUN --mount=type=cache,target=/root/.cache/uv \
7272
# RUNTIME
7373
# Setup user, utilities and copy the virtual environment only
7474
################################
75-
FROM python:3.12.13-slim-trixie AS runtime
75+
FROM python:3.12-slim-trixie AS runtime
7676

7777

7878
RUN apt-get update \

docs/DEPRECATED_MACOS_SUPPORT_INVESTIGATION.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Investigation: Deprecated macOS Support — Impact on Langflow
22

3-
**Jira:** LE-265
4-
**Date:** 2026-04-02
5-
**Status:** Complete
3+
**Jira:** LE-265
4+
**Date:** 2026-04-02
5+
**Status:** Complete
66
**Related:** LE-172 (PyTorch macOS x86_64 + Python 3.13 — resolved in PR #12469)
77

88
---
@@ -99,7 +99,6 @@ The following extras have platform markers excluding macOS x86_64 (**as of PR #1
9999
| Workaround | Location | Purpose |
100100
|------------|----------|---------|
101101
| `OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES` | `__main__.py`, `langflow_launcher.py`, CI workflows | Prevents Objective-C fork safety crashes with gunicorn multiprocessing |
102-
| `os.environ["no_proxy"] = "*"` | `__main__.py`, `langflow_launcher.py` | Avoids proxy-related errors with gunicorn on macOS |
103102
| `os.execv()` re-exec pattern | `langflow_launcher.py` | Sets env vars before Objective-C runtime initializes |
104103
| `brew install protobuf` | CI workflow (AMD64 only) | protoc not available on Intel CI runners |
105104

@@ -157,7 +156,7 @@ Langflow **core functionality** (flow builder, API, database, all non-ML compone
157156
PR #12469 has already addressed the most critical issue:
158157
-`altk` and `langchain-huggingface` excluded on macOS x86_64
159158
-`docling` and `easyocr` already excluded (pre-existing)
160-
-`mlx`, `cuga` are ARM64-only
159+
-`mlx`, `cuga` are ARM64-only
161160
- ✅ Experimental CI uses `continue-on-error: true`
162161

163162
### 4.2 Short-Term (Langflow 1.10 / Q2 2026)

docs/docs/API-Reference/api-reference-api-examples.mdx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -372,9 +372,7 @@ The following endpoints are most often used when contributing to the Langflow co
372372
* DELETE `/v1/variables/{variable_id}`: Delete a variable.
373373

374374
* [Use voice mode](/concepts-voice-mode):
375-
* WS `/v1/voice/ws/flow_as_tool/{flow_id}`: Bi-directional voice session exposing the flow as a tool.
376-
* WS `/v1/voice/ws/flow_as_tool/{flow_id}/{session_id}`: Same as above with explicit session ID.
377-
* WS `/v1/voice/ws/flow_tts/{flow_id}`: Voice-to-text session that runs a flow and returns TTS.
375+
* WS `/v1/voice/ws/flow_tts/{flow_id}`: Speech-to-text session that runs a flow and returns TTS.
378376
* WS `/v1/voice/ws/flow_tts/{flow_id}/{session_id}`: Same as above with explicit session ID.
379377
* GET `/v1/voice/elevenlabs/voice_ids`: List available ElevenLabs voice IDs for the user.
380378

docs/docs/Develop/concepts-voice-mode.mdx

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ slug: /concepts-voice-mode
55

66
import Icon from "@site/src/components/icon";
77

8+
:::warning
9+
Voice mode is deprecated as of Langflow 1.10.
10+
11+
The <Icon name="Mic" aria-hidden="true"/> **Microphone** button in the **Playground** now only enables speech-to-text, with no additional voice mode functionality.
12+
Speech-to-text transcribes speech into the Playground's chat input field, but does not provide voice interaction with the Langflow UI or text-to-speech responses.
13+
14+
The `api/v1/voice` WebSocket endpoints described below are still available.
15+
:::
16+
817
:::info
918
Voice mode is not available in Langflow Desktop.
1019
To use voice mode, [Install the Langflow OSS Python package](/get-started-installation#install-and-run-the-langflow-oss-python-package).
@@ -63,35 +72,28 @@ This option changes both the expected input language and the response language.
6372

6473
## Develop applications with websockets endpoints
6574

66-
Langflow exposes two OpenAI Realtime API-compatible websocket endpoints for your flows.
67-
You can build applications against these endpoints the same way you would build against [OpenAI Realtime API websockets](https://platform.openai.com/docs/guides/realtime#connect-with-websockets).
75+
Langflow exposes an OpenAI Realtime API-compatible websocket endpoint for your flows.
76+
You can build applications against this endpoint the same way you would build against [OpenAI Realtime API websockets](https://platform.openai.com/docs/guides/realtime#connect-with-websockets).
6877

69-
The Langflow API's websockets endpoints require an [OpenAI API key](https://platform.openai.com/docs/overview) for authentication, and they support an optional [ElevenLabs](https://elevenlabs.io) integration with an ElevenLabs API key.
78+
The Langflow API's websocket endpoint requires an [OpenAI API key](https://platform.openai.com/docs/overview) for authentication, and supports an optional [ElevenLabs](https://elevenlabs.io) integration with an ElevenLabs API key.
7079

71-
Additionally, both endpoints require that you provide the flow ID in the endpoint path.
72-
73-
### Voice-to-voice audio streaming
74-
75-
The `/ws/flow_as_tool/$FLOW_ID` endpoint establishes a connection to OpenAI Realtime voice, and then invokes the specified flow as a tool according to the [OpenAI Realtime model](https://platform.openai.com/docs/guides/realtime-conversations#handling-audio-with-websockets).
76-
77-
This approach is ideal for low latency applications, but it is less deterministic because the OpenAI voice-to-voice model determines when to call your flow.
80+
Additionally, the endpoint requires that you provide the flow ID in the endpoint path.
7881

7982
### Speech-to-text audio transcription
8083

8184
The `/ws/flow_tts/$FLOW_ID` endpoint converts audio to text using [OpenAI Realtime voice transcription](https://platform.openai.com/docs/guides/realtime-transcription), and then directly invokes the specified flow for each transcript.
8285

83-
This approach is more deterministic but has higher latency.
84-
8586
This is the mode used in the Langflow **Playground**.
8687

8788
### Session IDs for websockets endpoints
8889

89-
Both endpoints accept an optional `/$SESSION_ID` path parameter to provide a unique ID for the conversation.
90+
The endpoint accepts an optional `/$SESSION_ID` path parameter to provide a unique ID for the conversation.
9091
If omitted, Langflow uses the flow ID as the [session ID](/session-id).
9192

9293
However, be aware that voice mode only maintains context within the current conversation instance.
9394
When you close the **Playground** or end a chat, verbal chat history is discarded and not available for future chat sessions.
9495

9596
## See also
9697

97-
* [Test flows in the Playground](/concepts-playground)
98+
* [Test flows in the Playground](/concepts-playground)
99+
* [Voice mode troubleshooting](/troubleshoot#voice-mode)

docs/docs/Develop/contributing-telemetry.mdx

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,26 @@ This telemetry event is sent when an unhandled exception is captured by Langflow
9090
- **Type**: The exception class name, such as `ValueError`.
9191
- **Message**: The exception message that was raised.
9292
- **Context**: Additional contextual information related to where the exception occurred, such as route, component, or operation details, when available.
93-
- **StackTraceHash**: A hash of the stack trace used to group similar exceptions for easier analysis.
93+
- **StackTraceHash**: A hash of the stack trace used to group similar exceptions for easier analysis.
94+
95+
### Deployment provider
96+
97+
This telemetry event is sent for various lifecycle operations on deployment provider accounts, such as create, delete, and update.
98+
99+
- **DeploymentAction**: The specific action performed, such as `provider.create` or `provider.delete`.
100+
- **DeploymentProvider**: The deployment provider used, such as `watsonx-orchestrate`.
101+
- **DeploymentSeconds**: Duration in seconds for the operation, providing performance insights.
102+
- **DeploymentSuccess**: Boolean value indicating whether the operation was successful.
103+
- **DeploymentErrorMessage**: Error message details if the operation was unsuccessful.
104+
- **WxoTenantId**: A unique identifier for the tenant, populated only for `watsonx-orchestrate` deployments, used to understand multi-tenant usage patterns without collecting personal information.
105+
106+
### Deployment
107+
108+
This telemetry event is sent for various lifecycle operations on deployment resources, such as create, delete, and update.
109+
110+
- **DeploymentAction**: The specific action performed, such as `deployment.create`.
111+
- **DeploymentProvider**: The deployment provider used, such as `watsonx-orchestrate`.
112+
- **DeploymentSeconds**: Duration in seconds for the operation, providing performance insights.
113+
- **DeploymentSuccess**: Boolean value indicating whether the operation was successful.
114+
- **DeploymentErrorMessage**: Error message details if the operation was unsuccessful.
115+
- **WxoTenantId**: A unique identifier for the tenant, populated only for `watsonx-orchestrate` deployments, used to understand multi-tenant usage patterns without collecting personal information.

0 commit comments

Comments
 (0)