π What's New in v1.8.1? π
Welcome to version 1.8.1! πππ This release focuses on stability, performance improvements, and developer experience enhancements. We've built great features and resolved critical database issues based on community feedback.
π Features
- Export DSL from History: Able to export workflow DSL directly from version history panel. (See #24939, by GuanMu)
- Downvote with Reason: Enhanced feedback system allowing users to provide specific reasons when downvoting responses. (See #24922, by jubinsoni)
- Multi-modal/File: Added filename support to multi-modal prompt messages. (See #24777, by -LAN-)
- Advanced Chat File Handling: Improved assistant content parts and file handling in advanced chat mode. (See #24663, by QIN2DIM)
β‘ Enhancements
- DB Query: Optimized SQL queries that were performing partial full table scans. (See #24786, by Novice)
- Type Checking: Migrated from MyPy to Basedpyright. (See #25047, by -LAN-)
- Indonesian Language Support: Added Indonesian (id-ID) language support. (See #24951, by lyzno1)
- Jinja2 Template: LLM prompt Jinja2 templates now support more variables. (See #24944, by 17hz)
π Fixes
- Security/XSS: Fixed XSS vulnerability in block-input and support-var-input components. (See #24835, by lyzno1)
- Persistence Session Management: Resolved critical database session binding issues that were causing "not bound to a Session" errors. (See #25010, #24966, by Will)
- Workflow & UI Issues: Fixed workflow publishing problems, resolved UUID v7 conflicts, and addressed various UI component issues including modal handling and input field improvements. (See #25030, #24643, #25034, #24864, by Will, -LAN-, 17hz & Atif)
Version 1.8.1 represents a significant step forward in platform stability and developer experience. The migration to modern type checking and database systems, combined with comprehensive bug fixes, creates a more robust foundation for future features.
Huge thanks to all our contributors who made this release possible! We welcome your ongoing feedback to help us continue improving the platform together.
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes
-
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.8.1
-
Update Python dependencies:
cd api uv sync
-
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- feat: datasets hit-testing retrieve chunking detail answer when docum⦠by @lcedaw in #24600
- feat: migrate part of the web API module to Flask-RESTX by @liugddx in #24577
- chore: optimize pnpm version management and migrate from next lint to eslint cli by @lyzno1 in #24514
- Refactor: replace count() > 0 check with exists() by @hyongtao-code in #24583
- Fix/web app auth error by @douxc in #24637
- add more current_user typing by @asukaminato0721 in #24612
- Fix token expiry miscalculation by @hyongtao-code in #24639
- fix:
files
parameter in JavaScript sdk incorrectly annotated as theFile
type in WebAPI by @sheey11 in #24644 - fix: workflow log panel's round style by @ZeroZ-lab in #24658
- feat: migrate part of the web chat module to Flask-RESTX by @liugddx in #24664
- refactor: Migrate part of the web API module to Flask-RESTX by @liugddx in #24659
- Feature add test containers workflow service by @NeatGuyCoding in #24666
- example try rm ignore by @asukaminato0721 in #24649
- Typing test by @asukaminato0721 in #24651
- example for rm extra cast by @asukaminato0721 in #24646
- chore: Plugin_daemon Service Add Sentry configuration by @Hwting in #24516
- chore: bump supabase and pyjwt versions and added tests by @chazzhou in #24681
- fix_trace_config by @mr0609 in #24669
- fix: can not choose file type var in aggreggator node by @iamjoel in #24689
- feat: add MCP configuration for Claude Code optimization by @lyzno1 in #24679
- refactor: relocate China npm registry config to base image by @17hz in #24678
- β¨fix: has_more logic in ChatMessageListApi to ensure correct on behavior when no more messages are available. by @Eric-Guo in #24661
- clean typos words. by @zhanluxianshen in #24667
- fix: Default value for input variable is null when starting new conversations on the web app by @17hz in #24709
- chore: simplify the workflow details logic by @crazywoola in #24714
- chore: fix some api desc by @zalcit in #24715
- feat: Add support for slash commands, optimize command selector logic. by @ZeroZ-lab in #24723
- chore: use DataFrame.map instead of deprecated DataFrame.applymap by @IthacaDream in #24726
- chore: cleanup unnecessary mypy suppressions on imports by @bowenliang123 in #24712
- chore: translate i18n files by @github-actions[bot] in #24727
- fix: unclosing tag by @crazywoola in #24733
- Chore: remove dead func AppModelConfig.copy() with wrong logic by @hyongtao-code in #24747
- feat: add test containers based tests for workspace service by @NeatGuyCoding in #24752
- fix: inconsistent text color for settings button in webapp cards by @lyzno1 in #24754
- feat: orchestrate CI workflows to prevent duplicate runs when autofix makes changes by @laipz8200 in #24758
- chore: use orjson in streaming event JSON serialisation for performance improvement by @bowenliang123 in #24763
- feat: oauth provider by @RockChinQ in #24206
- Chore: remove dupliacte logic in DatasetApi.get() by @kenwoodjw in #24769
- chore: translate i18n files by @github-actions[bot] in #24770
- feat(api): maintain assistant content parts and file handling in advanced chat by @QIN2DIM in #24663
- fix(web): fix error notify when tagInput component is not required (#β¦ by @zyileven in #24774
- refactor: Promote basepath to environment variable by @17hz in #24445
- feat: add filename support to multi-modal prompt messages by @laipz8200 in #24777
- fix(web): improve floating UI positioning when scrolling (#24595) by @zyileven in #24782
- chore: change the oauth_provider_apps table to uuidV7 by @hjlarry in #24792
- fix: change the mcp server strucutre to support github copilot by @Nov1c444 in #24788
- fix(api): fix
DetachedInstanceError
for Account.current_tenant_id by @QuantumGhost in #24789 - chore(api): fix Alembic offline migration compatibility by @QuantumGhost in #24795
- fix: add missing statuses permission to main CI workflow by @laipz8200 in #24809
- refactor: remove duplicate pull_request triggers from workflow files by @laipz8200 in #24814
- refactor: reorganize the CI pipeline by @laipz8200 in #24817
- fix: workflow_finish_to_stream_response assert exception with celery β¦ by @horochx in #24674
- Fix: rm invalid errorMessage on e.toString() by @hyongtao-code in #24805
- chore[docker]: Fix Redis health check error but display healthy by @Hwting in #24778
- poc of validate config by @asukaminato0721 in #24837
- Remove redundant from_variable_selector null-check by @hyongtao-code in #24842
- Feature add test containers mcp tools manage service by @NeatGuyCoding in #24840
- fix: XSS vulnerability in block-input and support-var-input components by @lyzno1 in #24835
- chore: remove duplicate Python style checks handled by autofix CI by @laipz8200 in #24833
- feat: add test containers based tests for api tool manage service by @NeatGuyCoding in #24821
- fix: Variable Aggregator cannot select conversation variables by @17hz in #24793
- Update ast-grep pattern for session.query by @asukaminato0721 in #24828
- chore: remove unused i18n keys by @lyzno1 in #24803
- refactor: replace clsx with classnames by @17hz in #24776
- model_config = ConfigDict(extra='allow') by @asukaminato0721 in #24859
- Fix never hit
(!code || code.length === 0)
by @hyongtao-code in #24860 - fix translation of all oauth.ts by @NeatGuyCoding in #24855
- example of decorator typing by @asukaminato0721 in #24857
- remove duplicated authorization header handling and bearer should be case-insensitive by @NeatGuyCoding in #24852
- the conversion OAuthGrantType(parsed_args["grant_type"]) can raise ValueError for invalid values which is not caught and will produce a 500 by @NeatGuyCoding in #24854
- fix: basepath did not read from the environment variable by @17hz in #24870
- [CHORE]: remove redundant-cast by @Gnomeek in #24807
- refactor: migrate marketplace.py from requests to httpx by @KinomotoMio in #24015
- chore: pnpx deprecation by @17hz in #24868
- fix: Fix database connection leak in EasyUIBasedGenerateTaskPipeline by @qiqizjl in #24815
- fix: add missing form for boolean types by @jingfelix in #24812
- CI: add TS indentation check via esLint by @hyongtao-code in #24810
- example enum to StrEnum by @asukaminato0721 in #24877
- fix:hard-coded top-k fallback issue. by @Frederick2313072 in #24879
- fix wrong filter handle for saved messages by @zalcit in #24891
- fix: prevent database connection leaks in chatflow mode by using Session-managed queries by @qiqizjl in #24656
- fix close session twice. by @zhanluxianshen in #24917
- FEAT: Tencent Vector optimize BM25 initialization to reduce loading time by @wlleiiwang in #24915
- fix:score threshold by @Frederick2313072 in #24897
- fix: remove duplicated code by @jiangbo721 in #24893
- replace the secret field from obfuscated to full-masked value by @dickens88 in #24800
- fix: npx typo error by @17hz in #24929
- Feature add test containers tool transform service by @NeatGuyCoding in #24927
- fix: email input cannot scroll by @17hz in #24930
- fix: API key input uses password type and no autocomplete by @atif09 in #24864
- downvote with reason by @jubinsoni in #24922
- fix(i18n): align zh-Hant indexMethodEconomyTip with zh-Hans by @aopstudio in #24933
- chore: translate i18n files by @github-actions[bot] in #24934
- Migrate SQLAlchemy from 1.x to 2.0 with automated and manual adjustments by @hyongtao-code in #23224
- chore: optimize SQL queries that perform partial full table scans by @Nov1c444 in #24786
- feat: LLM prompt Jinja2 template now support more variables by @17hz in #24944
- Fix: ensure InstalledApp deletion uses model instances instead of Row by @hyongtao-code in #24942
- Fix: Resolve workflow_node_execution primary key conflicts with UUID v7 by @laipz8200 in #24643
- fix: add Indonesian (id-ID) language support and improve language selector by @lyzno1 in #24951
- make clean() function in index_processor_base abstractmethod by @zhanluxianshen in #24959
- fix: API Key Authorization Configuration Model Form render default value by @17hz in #24963
- refactor: update radio component to handle boolean values instead of numeric by @17hz in #24956
- feat: make secretInput type field prevent browser auto-fill by @17hz in #24971
- chore: apply ty checks on api code with script and ci action by @bowenliang123 in #24653
- fix: workflow log status filter add parial success status by @Nov1c444 in #24977
- feat: add development environment setup commands to Makefile by @laipz8200 in #24976
- chore: run ty check CI action only when api code changed by @bowenliang123 in #24986
- fix: ensure the modal closed by level by @17hz in #24984
- fix: remove unnecessary modal visibility toggle on error in name save by @17hz in #25001
- fix: refresh UI after user profile change by @17hz in #24998
- example add more type check by @asukaminato0721 in #24999
- minor fix: fix the check of subscription capacity limit by @NeatGuyCoding in #24991
- Post fix of #23224 by @hyongtao-code in #25007
- Export DSL from history by @ZeroZ-lab in #24939
- fix: xxx is not bound to a Session by @IthacaDream in #24966
- fix: EndUser is not bound to a Session by @IthacaDream in #25010
- chore: remove duplicate test helper classes from api root directory by @laipz8200 in #25024
- chore: remove ty type checker from reformat script and pre-commit hooks by @laipz8200 in #25021
- Refactor: use DatasourceType.XX.value instead of hardcoded by @hyongtao-code in #25015
- feat: add test containers based tests for tools manage service by @NeatGuyCoding in #25028
- fix: workflow not published by @IthacaDream in #25030
- fix: remove redundant z-index from Field component by @17hz in #25034
- chore: translate Chinese comments to English in ClickZetta Volume storage module by @laipz8200 in #25037
- clean console apis and rag cleans. by @zhanluxianshen in #25042
- [Chore/Refactor] Switch from MyPy to Basedpyright for type checking by @laipz8200 in #25047
- [Chore/Refactor] Update .gitignore to exclude pyrightconfig.json while preserving api/pyrightconfig.json by @laipz8200 in #25055
- chore: consolidate type checking in style workflow by @laipz8200 in #25053
- Refactor/model credential by @zxhlyh in #24994
- feat: improve multi model credentials by @hjlarry in #25009
- fix: Solve the problem of opening remarks appearing in the chat cont⦠by @zyileven in #25067
- chore: translate i18n files by @github-actions[bot] in #25061
- typevar example by @asukaminato0721 in #25064
- Fix: handle 204 No Content response in MCP client by @dswl23 in #25040
- Hotfix translation error by @NeatGuyCoding in #25035
- fix: Boolean type control is not displayed by @17hz in #25031
- Fix advanced chat workflow event handler signature mismatch by @laipz8200 in #25078
- fix: model credential name by @zxhlyh in #25081
- chore(version): bump version to 1.8.1 by @Stream29 in #25060
New Contributors
- @lcedaw made their first contribution in #24600
- @sheey11 made their first contribution in #24644
- @Hwting made their first contribution in #24516
- @mr0609 made their first contribution in #24669
- @zyileven made their first contribution in #24774
- @KinomotoMio made their first contribution in #24015
- @Frederick2313072 made their first contribution in #24879
- @dickens88 made their first contribution in #24800
- @atif09 made their first contribution in #24864
- @dswl23 made their first contribution in #25040
Full Changelog: 1.8.0...1.8.1