Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4384 commits
Select commit Hold shift + click to select a range
72e0819
fix: Handle multiple outputs in ComponentToolkit and clean edge logic…
Cristhianzl Mar 25, 2026
c291ebe
fix(docker): Remove broken npm self-upgrade from Docker images (#12309)
Cristhianzl Mar 25, 2026
518cee3
feat(models): Add latest OpenAI GPT-5.3 and GPT-5.4 model families …
Cristhianzl Mar 25, 2026
5f2f287
test: add PostgreSQL to migration CI tests (#12257)
jordanrfrazier Mar 25, 2026
098f3b4
fix: File Manager last item cut off in normal view (#12254)
viktoravelino Mar 25, 2026
677f16b
feat: add session_metadata JSON column to message table (#12255)
HimavarshaVS Mar 25, 2026
44024d9
feat(playground): add bulk delete sessions with Select All functional…
keval718 Mar 25, 2026
792808b
fix: prevent path traversal in knowledge base bulk delete (#12243)
AntonioABLima Mar 25, 2026
dd8d47f
fix: replace grep -oP with sed for Node.js version extraction in Dock…
vjgit96 Mar 25, 2026
313eff2
fix: disable dangerous deserialization by default in FAISS component …
RamGopalSrikar Mar 25, 2026
48c5d42
fix: Add ephemeral file upload and credential env fallback (#12333)
Cristhianzl Mar 25, 2026
c30150a
Fix: session metadata migration consistency (#12328)
HimavarshaVS Mar 25, 2026
ae02b4b
fix: prevent overwriting user-selected global variables in provider c…
erichare Mar 25, 2026
9deec30
chore: version bump and merge 1.8.2 (#12335)
Adam-Aghili Mar 26, 2026
2f0bf90
fix: disable dangerous deserialization by default in FAISS component …
Adam-Aghili Mar 26, 2026
ed12502
fix: Use plain axios for external GitHub and Discord API calls (#12347)
Cristhianzl Mar 26, 2026
b35c123
fix: Add ephemeral file upload support …
Cristhianzl Mar 26, 2026
6126d2d
fix(core): Add environment variable fallback for provider API key res…
Cristhianzl Mar 26, 2026
937de01
feat(ui): Add custom build error message transform hook (#12208)
Cristhianzl Mar 26, 2026
41d34b2
fix: prevent path traversal in knowledge base create endpoint (#12337)
AntonioABLima Mar 26, 2026
881b37d
fix: update PyTorch to 2.6.0+ to fix torch.load() RCE vulnerability (…
Jkavia Mar 26, 2026
b0cf8c2
fix: replace removed Langflow-runner with ubuntu-latest for AMD64 Doc…
vjgit96 Mar 26, 2026
42832d0
feat: add core deployment implementation (#12108)
HzaRashid Mar 26, 2026
af8da56
revert: restore Langflow-runner for AMD64 Docker builds
vjgit96 Mar 26, 2026
efbc4a1
fix: prevent MCP command injection via allowlist validation (CWE-78) …
Jkavia Mar 27, 2026
1f73419
ref: add feature flag around BE wxo deployments (#12365)
jordanrfrazier Mar 27, 2026
2473c1b
fix: replace grep -oP with sed for Node.js version extraction in Dock…
vjgit96 Mar 27, 2026
8ab4f5a
fix: enforce ownership check in build_flow endpoint (GHSA-qj98-rhf8-v…
AntonioABLima Mar 27, 2026
b09b3eb
chore: update deps due to security vulnerabilities (#12371)
Adam-Aghili Mar 27, 2026
acc6491
ci: upgrade runtime to python:3.14.3-slim-trixie (#12369)
Adam-Aghili Mar 29, 2026
46d18e3
feat(deployments): add environment variable overrides for IBM IAM URL…
HzaRashid Mar 30, 2026
4a98666
deps: add official wxo client package to langflow-base complete (#12383)
HzaRashid Mar 30, 2026
1f1fb20
fix: enforce message ownership in monitor endpoints (#12202)
andifilhohub Mar 30, 2026
263cfc6
fix(test): Increase timeout and add waitFor on folder rename input (#…
Cristhianzl Mar 31, 2026
51fd75b
perf(test): Optimize CI tests causing timeout on Windows and Python 3…
Cristhianzl Mar 31, 2026
1810174
fix: Fix shareable playground build events and message rendering …
Cristhianzl Mar 31, 2026
4e449da
fix: update npm dependencies (#12412)
Jkavia Mar 31, 2026
be55784
fix: Add platform markers to cuga extra for macOS x86_64 (#12416)
Cristhianzl Mar 31, 2026
ba34729
docs: CSS redesign (#12306)
mendonk Mar 31, 2026
dd70205
fix: Propagate error details to Playground chat on flow build fail…
Cristhianzl Mar 31, 2026
86dd7df
fix: resolve code scanning alerts for URL sanitization and insecure r…
ogabrielluiz Mar 31, 2026
7c5668e
docs: rename data to JSON and dataframe to table (#12352)
mendonk Mar 31, 2026
9543d7d
feat: MCP server for operating Langflow via REST API (#12237)
ogabrielluiz Mar 31, 2026
ccc7ffa
fix: Improve the sub-process handling of the Docling Worker (#12296)
erichare Mar 31, 2026
1b3a656
fix(deps): pin tar-fs to >=2.1.4 to fix symlink following vulnerabili…
Adam-Aghili Mar 31, 2026
811ac4b
chore: bump versions
Adam-Aghili Mar 31, 2026
6cb87cc
fix: Fix shareable playground build events and message rendering (#12…
Cristhianzl Mar 31, 2026
1de571a
feat(wxo): list / update (agents) directly from Langflow API (#12390)
HzaRashid Mar 31, 2026
61fac94
feat: Add Langflow Assistant chat panel for component generation (#11…
Cristhianzl Mar 31, 2026
73f7bb0
feat(deployments): add list (llms) endpoint and wxo implementation (#…
HzaRashid Mar 31, 2026
3815b9b
fix(test): Add missing required `llm` field to Watsonx deployment map…
Cristhianzl Apr 1, 2026
1337a70
fix(test): Add missing required `llm` field and fix flaky assertions …
Cristhianzl Apr 1, 2026
cb665e0
fix(mcp): Stop sending API key as Bearer token in MCP client (#12349)
Cristhianzl Mar 26, 2026
e3b90b7
Revert "fix(mcp): Stop sending API key as Bearer token in MCP client …
ogabrielluiz Apr 1, 2026
1c2a79c
fix: Address a dictionary comprehension ruff error (#12438)
erichare Apr 1, 2026
c43fbc9
feat: LE-374 token usage tracking for LLM and Agent components (#11891)
viktoravelino Apr 1, 2026
389f702
fix: Always resolve first dep for determinism (#12204)
erichare Apr 1, 2026
5a0d36c
fix: Support self-referential MCP JSON schema (#12359)
erichare Apr 1, 2026
2ef9a5f
fix: redact sensitive information from log output (#12271)
ogabrielluiz Apr 1, 2026
9f255dc
chore: remove mypy from CI (#12448)
ogabrielluiz Apr 1, 2026
65c3139
fix: restore langflow-logo-color-black-solid.svg removed in docs rele…
tarciorodrigues Apr 1, 2026
96c9035
docs: point security reports to hackerone (#12368)
mendonk Apr 2, 2026
8c08e1b
feat: opensearch multimodal: support filters, adjust defaults (#12319)
edwinjosechittilappilly Apr 2, 2026
c08a465
docs: block custom components with env var (#12413)
mendonk Apr 2, 2026
a2d3c18
feat: MCP server UX improvements, batch, and spec-based flow creation…
ogabrielluiz Apr 2, 2026
61bc076
fix: restore langflow-logo-color-black-solid.svg removed in docs rele…
tarciorodrigues Apr 2, 2026
45325f6
feat: Langflow SDK and Flow DevOps API Toolkit (#12245)
erichare Apr 2, 2026
b0a8662
docs: add CI optimization analysis for pre-release builds (#12207)
vjgit96 Apr 2, 2026
4bdc87d
fix: Import and Statistics fixes for Knowledge Bases (#12446)
erichare Apr 2, 2026
e6846ea
feat(ui): Add "Connect other models" option for model-type handles (#…
Cristhianzl Apr 2, 2026
103ef7d
fix: Close popup when navigating to MCP settings (#12358)
erichare Apr 2, 2026
4e8c5e7
feat: add Langflow MCP Client settings page (#12321)
ogabrielluiz Apr 2, 2026
cea8b1a
feat: flow event polling for real-time MCP agent activity (#12340)
ogabrielluiz Apr 2, 2026
abd772f
fix: Build and install the langflow-sdk for lfx (fixes nightly) (#12481)
erichare Apr 3, 2026
63e6a1d
fix: upgrade dependencies to address CVE vulnerabilities (#12470)
Jkavia Apr 3, 2026
68642a8
fix: Properly grep for the langflow version (#12486)
erichare Apr 3, 2026
6eaa938
fix: add SSRF protection to URL component (PVR0699081) (#11996)
RamGopalSrikar Apr 3, 2026
32c72b0
fix(mcp): stop sending API key as Bearer token in MCP client (#12441)
ogabrielluiz Apr 3, 2026
3ee4bd5
docs: test harness for api reference code samples (#12338)
mendonk Apr 3, 2026
ed3820b
docs: increase padding for sidebars icons (#12480)
mendonk Apr 3, 2026
e555e47
fix: Cherry-pick nightly SDK build fixes to main (#12491)
erichare Apr 3, 2026
c1bffa8
docs: Flow DevOps Toolkit SDK (#12472)
mendonk Apr 3, 2026
7e74d33
docs: enhance Agentics documentation with embedded video (#12272)
gliozzo Apr 3, 2026
d6c2ec3
feat: Remove deprecated Astra Assistants to support latest docling pa…
erichare Apr 4, 2026
8d01ba4
feat: add var to block custom component execution (#11893)
jordanrfrazier Apr 5, 2026
66c2067
fix: upgrade fastmcp to 3.2.0 to fix SSRF vulnerability (CVE) (#12516)
Jkavia Apr 6, 2026
acf2ae0
fix: Accept inputs for the URL component (#12474)
erichare Apr 6, 2026
2f6400d
fix: enforce IDOR protection on v2 workflow job endpoints (#12398)
AntonioABLima Apr 6, 2026
cabaa2e
feat: add LANGFLOW_MCP_BASE_URL config for MCP server URL override (#…
ogabrielluiz Apr 6, 2026
2fa3b36
Merge remote-tracking branch 'origin/release-1.8.2'
vjgit96 Apr 6, 2026
7f44894
Merge remote-tracking branch 'origin/release-1.8.3'
vjgit96 Apr 6, 2026
1e61ac4
Merge remote-tracking branch 'origin/release-1.8.4'
vjgit96 Apr 6, 2026
4ee94e6
fix(ci): add missing lfx build step to cross-platform workflow_dispat…
vjgit96 Apr 6, 2026
f557b06
fix: upgrade vulnerable dependencies with override enforcement (#12526)
Jkavia Apr 6, 2026
f8aa12d
fix(ci): add missing SDK build step to cross-platform workflow_dispat…
vjgit96 Apr 6, 2026
c6b87e7
fix: preserve nested dictionaries in MCP tool parameters (#11970)
RamGopalSrikar Apr 6, 2026
13bfd4f
docs: investigate PyTorch macOS AMD64 + Python 3.13 CI failure (LE-17…
vjgit96 Apr 6, 2026
f4a3e5f
fix: Search beyond the first page of users (#12203)
erichare Apr 6, 2026
4b64f20
docs: investigate deprecated macOS support and impact on Langflow (LE…
vjgit96 Apr 6, 2026
a2e2b44
feat: add telemetry service to lfx MCP server (#12422)
ogabrielluiz Apr 7, 2026
6938fd1
fix: Display proper error messages and strip null params from tool ca…
Cristhianzl Apr 7, 2026
74f17b4
fix(ui): Fix update banner hidden behind canvas controls (#12527)
Cristhianzl Apr 7, 2026
dbd31e0
fix: Preserve MCP tool selection on flow reload (#12363)
Cristhianzl Apr 7, 2026
4f9beeb
fix: add trailing newline to component_index.json (#12545)
vjgit96 Apr 7, 2026
8c50fca
feat(playground): Add auth gate, session persistence and token displa…
Cristhianzl Apr 7, 2026
ca5fe56
feat(agentics): Refactor bundle components to agenerate/amap/areduce …
Cristhianzl Apr 7, 2026
23eebd0
fix: Restore MCP tool dropdown visibility when adding component from …
Cristhianzl Apr 7, 2026
f30b291
fix: Replace aiofile with aiofiles to prevent caio context leak under…
erichare Apr 7, 2026
6ac84d4
fix: Indefinitely loading KB page for errors (#12295)
olayinkaadelakun Apr 8, 2026
094b4c3
fix: Accept appropriate types in OpenSearch mm (#12547)
erichare Apr 8, 2026
cde9f23
feat: deployment page and stepper UI with watsonx Orchestrate integra…
viktoravelino Apr 8, 2026
5ea4cfc
fix: add missing ownership checks in projects API (GHSA-rpf3-3973-4gj…
andifilhohub Apr 8, 2026
71d3438
fix: frozen vertices crash with TypeError when no cache service avail…
ogabrielluiz Apr 8, 2026
b905ea1
fix: Added dependency updates for security and bug fixes (#12543)
Jkavia Apr 8, 2026
b3666fe
feat: hide advanced fields in InspectionPanel for File and SplitText …
RamGopalSrikar Apr 8, 2026
9be8854
fix: hide header CTA buttons during empty/loading states (#12560)
viktoravelino Apr 8, 2026
8481da4
chore: merge main into release-1.9.0 (excluding Gemini tool_calling d…
vjgit96 Apr 8, 2026
30f3517
feat: IBM Globalization Pipeline integration and i18n setup (#12226)
RamGopalSrikar Apr 8, 2026
aa40af2
ref: update wxo language (#12571)
jordanrfrazier Apr 8, 2026
d8b9cc3
fix: Sort and check for Phase in migration (#12569)
erichare Apr 8, 2026
f53ef24
fix: show empty state message in deployment wizard model dropdown (#1…
viktoravelino Apr 8, 2026
749865b
fix: fixed concurrent tool usage error (#12548)
lucaseduoli Apr 8, 2026
a93e016
fix: cache deployment LLMs query to avoid refetch between wizard step…
viktoravelino Apr 8, 2026
8eceae1
fix: remove retries on connection verification (#12568)
jordanrfrazier Apr 8, 2026
9235406
fix: Show the write file path in Write File Component (#12563)
erichare Apr 8, 2026
f1ecb32
Feat: Playground - Need to accept File uploading (#12326)
olayinkaadelakun Apr 8, 2026
473a470
fix: include connection changes in deployment update payload (#12573)
viktoravelino Apr 8, 2026
eff08ee
fix: ensure global vars load properly on first flow (#12538)
erichare Apr 8, 2026
64f84ab
feat: boazdavid policies component added (#12564)
erichare Apr 8, 2026
ad50d87
feat: expose api_key in InspectionPanel, hide from advanced settings …
RamGopalSrikar Apr 8, 2026
87ff7a6
Fix: Build Output for Table and Dataframes (#12450)
olayinkaadelakun Apr 9, 2026
afbc6b0
perf: enable Gunicorn preload_app to reduce memory per worker (#12364)
severfire Apr 9, 2026
ed6c4ee
fix: Change the order of deps for re parsing (#12581)
erichare Apr 9, 2026
9cdbf1b
Revert: policies component (#12564) (#12585)
erichare Apr 9, 2026
499815a
feat: add policies component for tool protection via ToolGuard (#12592)
erichare Apr 9, 2026
b916174
fix: handle missing lfx package metadata in Docker (#12594)
erichare Apr 9, 2026
2ff6ae5
fix: Don't update the model selection when changing key (#12596)
erichare Apr 9, 2026
dc8be14
fix: enforce brace-expansion override (#12598)
Jkavia Apr 9, 2026
47ac112
fix: deployment UX improvements — error toast, tool name, refetch, ru…
viktoravelino Apr 9, 2026
20e6465
fix: Added handlebars override to fix DepBot issue. (#12602)
Jkavia Apr 9, 2026
adc9431
fix: add message table indexes for PostgreSQL to model (#12572)
HzaRashid Apr 9, 2026
34886de
fix: Updated Pillow minimum version (#12609)
Jkavia Apr 9, 2026
296c148
fix: convert MCP image content to LangChain multimodal format (#12610)
andifilhohub Apr 9, 2026
cab9ba8
fix: Add os catch error to prevent windows failure installation on de…
Cristhianzl Apr 10, 2026
e245d05
docs: langflow assistant feature (#12439)
mendonk Apr 10, 2026
954bc80
fix: Make sure we don't toggle models on hover (#12599)
erichare Apr 10, 2026
767c18b
docs: flow devops toolkit SDK manage multiple environments (#12479)
mendonk Apr 10, 2026
678da97
fix: allow spacebar in chat input textarea (#12612)
keval718 Apr 10, 2026
6585fe6
fix: Remove ddl_if from session_metadata indexes in MessageTable (#12…
ogabrielluiz Apr 10, 2026
3077850
fix: use startswith for safe path traversal and parsing (#12559)
jordanrfrazier Apr 10, 2026
9dad196
ci: add component index sync on label addition (#12590)
jordanrfrazier Apr 10, 2026
fc91e39
fix(mcp): Preserve nested dict arguments sent to MCP tools (#12601)
Cristhianzl Apr 10, 2026
1ddea3a
fix(models): Stop returning 'Custom' for Azure and Watsonx LLMs (#12608)
Cristhianzl Apr 10, 2026
83f9b86
feat: watsonx Orchestrate deployment UI polish (#12621)
viktoravelino Apr 10, 2026
f0f0681
fix: handle read-only filesystem when updating starter project files …
erichare Apr 10, 2026
0b6269d
docs: policies component (#12628)
mendonk Apr 10, 2026
75e596a
feat: wxo api provider data url for provider accounts (#12607)
HzaRashid Apr 10, 2026
4eb35b2
feat: add project_id query param to list /deployments endpoint (#12574)
HzaRashid Apr 10, 2026
2cc8460
fix: Remove test that doesnt test anything (#12633)
erichare Apr 11, 2026
976bb69
fix: Update WXO tests for handling none keys (#12636)
erichare Apr 11, 2026
3fba536
fix(ui): Show welcome page for new users when AUTO_LOGIN is false (#1…
Cristhianzl Apr 11, 2026
ca8547b
fix: MCP Tools loses optional field types (#12622)
erichare Apr 11, 2026
cfaba3e
fix: Remove redundant api key field in KB Ingest (#12624)
erichare Apr 11, 2026
922e731
fix: Make sure flow upgrades work with Agent component and ModelInput…
erichare Apr 11, 2026
d40e316
feat(templates): replace AstraDB with native Knowledge Base in Vector…
lice-reis Apr 11, 2026
e89c124
feat: harden /variables/detections to return only global variables (#…
HzaRashid Apr 13, 2026
da24dfa
docs: components index path env var (#12630)
mendonk Apr 13, 2026
5cb8567
fix: make logs and outputs visible for components in tool mode (#11923)
RamGopalSrikar Apr 13, 2026
349e78c
fix: propagate resource-specific conflict error to api (#12580)
HzaRashid Apr 13, 2026
7e786a7
fix: Raw input value leaks into Global Variables dropdown list (#12660)
olayinkaadelakun Apr 13, 2026
faac7ad
fix: allow booleans, numbers, etc. in root-level tweaks (#12605)
erichare Apr 13, 2026
d698666
fix: restore webhook SSE authentication using FastAPI dependency inje…
Cristhianzl Apr 13, 2026
73a48b5
docs: generate and bump open API spec to 1.9.0 (#12638)
mendonk Apr 13, 2026
a216aa9
fix(ui): refactor connection panel and fix search empty state (#12659)
viktoravelino Apr 13, 2026
0982030
fix: Resolve relative path issues in bundled environment (#12625)
Cristhianzl Apr 13, 2026
ac414d3
fix: Root path option in settings for reverse proxy (#12603)
erichare Apr 13, 2026
953ccd0
fix: Build the correct oauth callback URL for MCP Composer (#12662)
erichare Apr 13, 2026
2da54a5
fix(ui): show moved flow in destination project without page refresh …
Cristhianzl Apr 13, 2026
4be5f7f
chore(i18n): disable automatic browser language detection (#12671)
RamGopalSrikar Apr 13, 2026
17ab88f
fix: fix base64 padding bug and empty Fernet error messages (#12595)
ogabrielluiz Apr 13, 2026
a425540
docs: add flow versioning (#12634)
mendonk Apr 13, 2026
42e84d0
fix: resolve race condition in test_component_logging for Python 3.13…
vjgit96 Apr 13, 2026
95d4c94
fix: upgrade playwright to 1.58.0 to address Chromium CVEs (#12668)
Jkavia Apr 13, 2026
83acc41
docs: mcp client and other changes (#12627)
mendonk Apr 13, 2026
26c4150
feat: add SHA-256 hash-based API key lookup (#12597)
ogabrielluiz Apr 13, 2026
19df460
chore: update deps (#12657)
Adam-Aghili Apr 13, 2026
40c5973
fix: Allow >= specifications in dependencies (#12682)
erichare Apr 14, 2026
389b11b
docs: update wxo signup link (#12683)
jordanrfrazier Apr 14, 2026
2fa3d1c
feat: add langflow-sdk support to release workflow (#12679)
erichare Apr 14, 2026
71fbf5f
docs: cut version 1.9.0 (#12681)
mendonk Apr 14, 2026
33cb664
feat: enforce unique snapshot to flow version relationship (#12680)
jordanrfrazier Apr 14, 2026
f594412
fix(frontend): auto-populate global variable key-value pairs (#12687)
HzaRashid Apr 14, 2026
d274b7b
docs: release note typo (#12690)
mendonk Apr 14, 2026
4ddb55b
refactor: design sweep for 1.9.0 release (#12684)
a-effort Apr 14, 2026
68a8990
feat: validate duplicate tool names at deployment review step (#12675)
viktoravelino Apr 14, 2026
9029c4b
fix: Updates the CI workflow to handle known dependency conflicts. (#…
Jkavia Apr 14, 2026
7b856e7
fix(loop): iterate when only item is connected and render item as a t…
ogabrielluiz Apr 14, 2026
5486c9a
chore: add default models to llm list result from wxo adapter (#12686)
HzaRashid Apr 14, 2026
acbeaf3
feat: rename deployment /executions endpoint to /runs (#12685)
HzaRashid Apr 14, 2026
d93892a
fix(mcp): preserve category when loading component registry (#12694)
ogabrielluiz Apr 14, 2026
b65515f
fix: add uv sync step to SDK version determination job (#12695)
vjgit96 Apr 14, 2026
b96b17e
fix(frontend): improve deployment stepper visibility in light mode (#…
viktoravelino Apr 14, 2026
9539996
feat(deployments): verify wxO credentials against instance API (#12449)
HimavarshaVS Apr 14, 2026
cecc4a6
fix(mcp): expose layout tool as layout_flow to match batch dispatch (…
ogabrielluiz Apr 14, 2026
9f1402e
fix: remove fictional gpt-5.3 ids and surface helpful message on mode…
Cristhianzl Apr 14, 2026
67981c6
fix: retry on flow execution failure and surface friendly message for…
Cristhianzl Apr 14, 2026
9a198b6
fix(mcp): dedupe edges in connect_components (#12701)
ogabrielluiz Apr 14, 2026
0b58f1e
fix(mcp): validate_flow fast-fails and reports partial errors (#12697)
ogabrielluiz Apr 14, 2026
449c26b
fix: failing wxo list llm test (#12700)
HzaRashid Apr 14, 2026
a47f2ad
fix(frontend): add backdrop blur to test deployment modal (#12704)
viktoravelino Apr 14, 2026
07cb95a
fix: add pydantic validation on component assistant (#12706)
Cristhianzl Apr 14, 2026
38d142a
fix: Upgrade cuga to 0.2.20 to resolve playwright dependency conflict…
Jkavia Apr 14, 2026
14fe53e
feat: add customOpenUrl utility for secure external link handling (#1…
viktoravelino Apr 14, 2026
da516b7
Merge release branch
erichare Apr 14, 2026
9aae6de
ci: increase backend test timeout
erichare Apr 15, 2026
ce6507b
ci: add mend integration
Adam-Aghili Apr 6, 2026
88d9575
chore: add whitesource to ignore and scan all src
Adam-Aghili Apr 6, 2026
5d6a7a0
chore: address eric's comment 1
Adam-Aghili Apr 21, 2026
89d1c60
feat: Enhance config loading by applying GUNICORN_CMD_ARGS before pro…
severfire Apr 15, 2026
6b0c95d
refactor: Center truncate deployment provider URL (#12579)
a-effort Apr 15, 2026
5307f40
feat: filter out live connections from wxo adapter (#12744)
HzaRashid Apr 16, 2026
7b06c20
fix(frontend): filter duplicate draft/live connections in deploy moda…
viktoravelino Apr 16, 2026
b398f63
test: add missing test coverage for wxo deployments (#12689)
jordanrfrazier Apr 17, 2026
957ade8
chore: upgrade wxo adk to 2.8.0 (#12707)
HzaRashid Apr 20, 2026
974c5ab
feat(deployments): filter WXO agent list to drafts when load_from_pro…
HzaRashid Apr 20, 2026
0a34421
feat(google): refresh Gemini model list and enable tool calling for G…
erichare Apr 20, 2026
c77c473
feat: e2e tests for deployments api (#12767)
HzaRashid Apr 21, 2026
dc2411c
fix(custom): honor asname in `from X import Y as Z` for custom compon…
erichare Apr 21, 2026
b8fe970
fix(mcp): close path traversal + cross-user disclosure (PVR0754098) (…
erichare Apr 21, 2026
dbc87e7
fix: db guards for deployments (#12339)
HzaRashid Apr 21, 2026
aced13e
docs: clarify autosaving and versioned flow saving (#12794)
mendonk Apr 22, 2026
4beab56
docs: add multi-model opensearch component (#12799)
mendonk Apr 22, 2026
f788307
docs: wxo feature (#12677)
mendonk Apr 22, 2026
0ab5f04
docs: clarify trace storage when multiple providers are enabled (#12816)
mendonk Apr 22, 2026
4fcc243
ref: removes retries from wxo api calls (#12770)
jordanrfrazier Apr 22, 2026
05750a3
fix(traces): serialize enum values for PostgreSQL on trace/span table…
erichare Apr 22, 2026
efae69f
fix: preserve spaces in shareable playground chat input (#12833)
Cristhianzl Apr 22, 2026
8524d49
docs: concatenate and merge options for dataframe operations componen…
mendonk Apr 22, 2026
b566244
fix(security): require auth on deprecated /api/v1/upload/{flow_id} (#…
erichare Apr 22, 2026
f52d0f0
fix: prevent XSS in chat messages with rehype-sanitize (#12718)
Jkavia Apr 22, 2026
b0afe3d
fix(security): close IDOR in get_flow_by_id_or_endpoint_name (LE-639)…
erichare Apr 22, 2026
fc1d32a
ref: set wxo ff to true by default (#12826)
jordanrfrazier Apr 22, 2026
849158e
docs: tip for running local ollama models (#12840)
mendonk Apr 22, 2026
b2d4539
fix(ci): prevent duplicate tags and validate tag format in release wo…
vjgit96 Apr 22, 2026
0e6d284
fix(security): default WEBHOOK_AUTH_ENABLE to True (#12845)
erichare Apr 22, 2026
cc50cae
fix: route memory ops to stubs when DB service is noop (#12808)
jordanrfrazier Apr 23, 2026
0659105
fix: allow backend/frontend Docker builds when main version exists (#…
vjgit96 Apr 23, 2026
0732423
chore: security patch (#12725)
Adam-Aghili Apr 23, 2026
dc26d19
fix: Update signature for WXO tests
erichare Apr 23, 2026
53f7b3a
fix: V-002 security vulnerability
orbisai0security Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
225 changes: 225 additions & 0 deletions .agents/skills/backend-code-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
---
name: backend-code-review
description: Review backend code for quality, security, maintainability, and best practices based on established checklist rules. Use when the user requests a review, analysis, or improvement of backend files (e.g., `.py`) under the `src/backend/` directory. Do NOT use for frontend files (e.g., `.tsx`, `.ts`, `.js`). Supports pending-change review, code snippets review, and file-focused review.
---

# Backend Code Review

## When to use this skill

Use this skill whenever the user asks to **review, analyze, or improve** backend code (e.g., `.py`) under the `src/backend/` directory. Supports the following review modes:

- **Pending-change review**: when the user asks to review current changes (inspect staged/working-tree files slated for commit to get the changes).
- **Code snippets review**: when the user pastes code snippets (e.g., a function/class/module excerpt) into the chat and asks for a review.
- **File-focused review**: when the user points to specific files and asks for a review of those files (one file or a small, explicit set of files, e.g., `src/backend/base/langflow/api/v1/flows.py`).

Do NOT use this skill when:

- The request is about frontend code or UI (e.g., `.tsx`, `.ts`, `.js`, `src/frontend/`).
- The user is not asking for a review/analysis/improvement of backend code.
- The scope is not under `src/backend/` (unless the user explicitly asks to review backend-related changes outside `src/backend/`).

## How to use this skill

Follow these steps when using this skill:

1. **Identify the review mode** (pending-change vs snippet vs file-focused) based on the user's input. Keep the scope tight: review only what the user provided or explicitly referenced.
2. Follow the rules defined in **Checklist** to perform the review. If no Checklist rule matches, apply **General Review Rules** as a fallback to perform the best-effort review.
3. Compose the final output strictly following the **Required Output Format**.

Notes when using this skill:
- Always include actionable fixes or suggestions (including possible code snippets).
- Use best-effort `File:Line` references when a file path and line numbers are available; otherwise, use the most specific identifier you can.

## Checklist

- db schema design: if the review scope includes code/files under `src/backend/base/langflow/services/database/models/` or Alembic migrations under `src/backend/base/langflow/alembic/versions/`, follow [references/db-schema-rule.md](references/db-schema-rule.md) to perform the review
- architecture: if the review scope involves route/service/model layering, dependency direction, or moving responsibilities across modules, follow [references/architecture-rule.md](references/architecture-rule.md) to perform the review
- service abstraction: if the review scope contains table/model operations (e.g., `select(...)`, `session.execute(...)`, joins, CRUD) and is not already inside a service under `src/backend/base/langflow/services/`, follow [references/repositories-rule.md](references/repositories-rule.md) to perform the review
- sqlalchemy patterns: if the review scope involves SQLAlchemy/SQLModel session/query usage, db transaction/crud usage, `session_scope()` usage, or raw SQL usage, follow [references/sqlalchemy-rule.md](references/sqlalchemy-rule.md) to perform the review

## General Review Rules

### 1. Security Review

Check for:
- SQL injection vulnerabilities (especially raw `text()` queries with string interpolation). Consequence: attacker can read/modify/delete any data in the database.
- Server-Side Request Forgery (SSRF) in component HTTP calls. Consequence: attacker uses the server to scan internal networks or access cloud metadata endpoints.
- Command injection (especially in subprocess or shell-executing components). Consequence: attacker gains shell access to the server.
- Insecure deserialization (pickle, yaml.load without SafeLoader). Consequence: arbitrary code execution on the server.
- Hardcoded secrets/credentials. Consequence: secrets leak via git history and are impossible to fully revoke.
- Improper authentication/authorization (missing `CurrentActiveUser` dependency). Consequence: unauthenticated users can access protected endpoints.
- Insecure direct object references (missing `user_id` scoping on queries). Consequence: user A can read/modify user B's flows, variables, API keys.
- Path traversal in file storage operations. Consequence: attacker reads arbitrary server files (e.g., `/etc/passwd`, `.env`).

### 2. Performance Review

Check for:
- N+1 queries (especially in loops calling `session.execute()`). Consequence: 100 flows = 101 DB queries instead of 2; page load goes from 50ms to 5s.
- Missing database indexes on frequently queried columns. Consequence: full table scans on large datasets; queries degrade from O(log n) to O(n).
- Memory leaks (unbounded caches, retained references in long-lived services). Consequence: server OOM after hours of operation; pods restart in production.
- Blocking operations in async code (`time.sleep()`, synchronous I/O, CPU-bound work without `run_in_executor`). Consequence: entire event loop stalls; all concurrent requests hang until the blocking call completes.
- Missing caching opportunities for expensive computations. Consequence: repeated computation of the same result on every request.
- Large result sets loaded entirely into memory without pagination. Consequence: memory spike + slow response when user has 10K+ flows.

### 3. Code Quality Review

Check for:
- Code forward compatibility with Python 3.10-3.13
- Code duplication (DRY violations — extract when the *exact same business rule* is duplicated in 3+ places)
- Functions doing too much (SRP violations — if you need "and" to describe it, split it)
- Deep nesting / complex conditionals (prefer early returns and guard clauses)
- Magic numbers/strings (extract to named constants or enums)
- Poor naming: unclear abbreviations, misleading names, generic names (`data`, `result`, `obj`, `temp`). Functions should use verbs (`get`, `create`, `validate`). Booleans should use prefixes (`is_`, `has_`, `can_`, `should_`).
- Missing error handling (bare `except`, swallowed exceptions, silent failures)
- Incomplete type coverage (use strong typing, avoid `Any` where a concrete type is known)
- Use Python 3.10+ union syntax (`X | Y` not `Union[X, Y]`, `X | None` not `Optional[X]`)
- Use `TYPE_CHECKING` guard for imports only needed for type annotations (prevents circular imports)
- Use `Annotated[Type, Depends(...)]` with project aliases (`CurrentActiveUser`, `DbSession`, `DbSessionReadOnly`) for FastAPI DI
- Google-style docstrings (enforced by Ruff): `Args:`, `Returns:`, `Raises:` sections for public functions
- Violations of SOLID principles
- YAGNI violations (code that anticipates future needs without a present requirement)
- Line length exceeding 120 characters (project Ruff config)
- Comments that explain WHAT instead of WHY (comments should only explain reasoning, not restate code)
- Commented-out code (use version control instead)
- Boolean parameters that switch function behavior (split into two named functions instead)
- Mutable shared state where immutable alternatives exist (prefer returning new objects over mutation)

### 4. File Structure Review

Check for:
- Production files exceeding ~500 lines of code (excluding imports, types, and docstrings). Files above 600 lines are a red flag and should be split by responsibility. Why: Files above 500 lines have statistically higher defect rates and take longer to review. They signal multiple responsibilities (SRP violation). In Langflow, services like `DatabaseService` that grow beyond this limit should have their CRUD operations extracted to dedicated modules.
- Test files exceeding ~1000 lines. Split by logical grouping if exceeded.
- No more than 5 functions with different responsibilities in a single file (per AGENTS-example.md).
- Each file has a single reason to exist and a single reason to change (SRP).
- No generic file names: `utils.py`, `helpers.py`, `misc.py`, `common.py` as standalone files. Why: A file named `utils.py` becomes a dumping ground for unrelated functions. Within months it has 50+ functions covering formatting, validation, parsing, and HTTP calls — violating SRP. Each function group should be in a file named after its responsibility (`formatting.py`, `validation.py`).

### 5. Testing Review

Check for:
- Missing test coverage for new code paths
- Tests that don't test behavior (testing implementation details)
- Flaky test patterns (time-dependent, order-dependent, external-service-dependent)
- Proper use of `pytest.mark.asyncio` for async tests
- Excessive mocking (prefer real integrations per project conventions)
- Coverage target: 80% (minimum acceptable: 75%)
- Test anti-patterns: The Liar (passes but doesn't verify claimed behavior), The Mirror (asserts exactly what code does), The Giant (50+ lines setup), The Mockery (tests only mock setup), The Inspector (coupled to implementation), The Chain Gang (depends on execution order), The Flaky (inconsistent results)

**Happy path tests are the foundation but are NOT enough.** Tests MUST also challenge the code to find real defects:

- **Unexpected inputs**: `None`, `""`, `[]`, `{}`, `0`, `-1`, `UUID("00000000-0000-0000-0000-000000000000")`
- **Boundary values**: max length strings, exactly at the limit, one past the limit, zero items, max items
- **Malformed data**: missing required fields, extra unexpected fields, wrong types, invalid formats
- **Error states**: what happens when the database is down? When an external API returns 500? When the user doesn't exist?
- **What should NOT happen**: verify that user A CANNOT access user B's flows. Verify that a deleted flow returns 404. Verify that invalid `endpoint_name` is rejected with 422.
- **Error messages and types**: not just that it fails, but that it fails with the RIGHT exception and the RIGHT message
- **Concurrency**: what happens when two requests try to update the same flow simultaneously?

**Write tests based on REQUIREMENTS/SPEC, not on what the source code currently does.** This is how you catch bugs where the code diverges from expected behavior.

**When a test fails:** first ask if the CODE is wrong, not the test. Do NOT silently change a failing assertion to match the current code without understanding WHY.

### 6. Observability Review

Check for:
- Use the async logger from `lfx.log.logger` with `a`-prefixed methods (`adebug`, `ainfo`, `awarning`, `aerror`, `aexception`). Never use `print()` or stdlib `logging`.
- Log at key decision points and boundaries, not inside tight loops
- Include: operation name, relevant IDs, outcome (success/failure), duration if relevant
- Correct log levels: ERROR (broken, needs attention), WARN (degraded but recoverable), INFO (significant events), DEBUG (diagnostic, off in prod)
- **ZERO PII TOLERANCE**: Never log email addresses, user names, phone numbers, tokens, passwords. Only approved identifiers: `user_id`, `flow_id`, `session_id`
- No `print()` statements — these go to production logs
- Use `{e!s}` for string representation of exceptions in log messages

### 7. Pre-Commit Verification

For pending-change reviews, verify the author has run:
- `make format_backend` (Ruff formatter) — inconsistent formatting creates noisy diffs that hide real changes in code review. Format first, review second.
- `make lint` (MyPy type checking) — type errors caught at lint time are 10x cheaper to fix than runtime crashes in production. Langflow services use duck typing via `Service` base class; MyPy catches mismatches early.
- `make unit_tests` (pytest) — a failing test means the change breaks existing behavior. Never merge with failing tests; investigate whether the code or the test is wrong.

## Required Output Format

When this skill is invoked, the response must exactly follow one of the two templates:

### Template A (any findings)

```markdown
# Code Review Summary

Found <X> critical issues need to be fixed:

## 🔴 Critical (Must Fix)

### 1. <brief description of the issue>

FilePath: <path> line <line>
<relevant code snippet or pointer>

#### Explanation

<detailed explanation and references of the issue>

#### Suggested Fix

1. <brief description of suggested fix>
2. <code example> (optional, omit if not applicable)

---
... (repeat for each critical issue) ...

Found <Y> suggestions for improvement:

## 🟡 Suggestions (Should Consider)

### 1. <brief description of the suggestion>

FilePath: <path> line <line>
<relevant code snippet or pointer>

#### Explanation

<detailed explanation and references of the suggestion>

#### Suggested Fix

1. <brief description of suggested fix>
2. <code example> (optional, omit if not applicable)

---
... (repeat for each suggestion) ...

Found <Z> optional nits:

## 🟢 Nits (Optional)
### 1. <brief description of the nit>

FilePath: <path> line <line>
<relevant code snippet or pointer>

#### Explanation

<explanation and references of the optional nit>

#### Suggested Fix

- <minor suggestions>

---
... (repeat for each nits) ...

## ✅ What's Good

- <Positive feedback on good patterns>
```

- If there are no critical issues or suggestions or optional nits or good points, just omit that section.
- If the issue number is more than 10, summarize as "Found 10+ critical issues/suggestions/optional nits" and only output the first 10 items.
- Don't compress the blank lines between sections; keep them as-is for readability.
- If there is any issue that requires code changes, append a brief follow-up question to ask whether the user wants to apply the fix(es) after the structured output. For example: "Would you like me to use the Suggested fix(es) to address these issues?"

### Template B (no issues)

```markdown
## Code Review Summary
✅ No issues found.
```
Loading
Loading