## infiniflow/ragflow — v0.27.0…v0.27.1

_333+ commits._

### Features
- **feat(go-connector): add Box connector (#18934)** (f62b10d)
- **feat(go-syncer): add S3 and S3 compatible connectors (#18861)** (b11b13f)
- **feat(go-syncer): add OCI Storage connector with resume (#18850)** (41bc872)
- **feat(agent): make MCP tool call timeout configurable (#18016)** (4ec2c25)
- **feat: add Synthorai model provider (#18830)** (3a1c98c)
- **Feat: sync anchor resume (#18795)** (73cdb81)
- **feat: extract images from xlsx parser (#18800)** (82e3639)
- **Feat: When there are errors in the chat settings form, clicking the "Save" button automatically scrolls to the location of the error. (#18811)** (043232e)
- **feat(data-source): add Xquik X search connector (#18714)** (0201c1a)
- **feat(data_source): add Azure DevOps connector (#18715)** (72b7b02)
- **feat(go-syncer): add Azure Blob Storage connector with checkpoint resume (#18701)** (e5b1adc)

### Fixes
- **fix(dataset): rebuild the navigation tree in the dataset owner index (#18932)** (439c3be)
- **fix(web): stop the field label from toggling the Switch (#18945)** (ac4ae3d)
- **fix(build): pass GOPROXY to the ragflow-cli go build (#18925)** (5a9d149)
- **Fix: respect IME composition state on Enter key send (#16922)** (2f36949)
- **Fix: Switching the file type of the parser operator caused the corresponding parse method to fail to switch. (#18931)** (da3aed6)
- **Fix: reorder components in NaiveConfiguration for better structure (#18924)** (cfcd2d6)
- **fix(web): stop the field label from opening the MultiSelect popover (#18922)** (b861b25)
- **fix(api): derive SQL retrieval tenant from dataset owner, not chat tenant (#18518)** (03d0ad2)
- **Fix: add Separator component and restore GlobalIndexModelItem in NaiveConfiguration (#18882)** (f650e83)
- **fix: support SeekDB vector score extraction (#18874)** (88e80fc)
- **fix: honor generation parameter enable flags (#18880)** (0411c52)
- **fix(rag/utils): ensure_v1 must recognize v1beta/v1alpha-style version suffixes (#16916)** (77ed0ae)
- **Fix oversized important keywords in OceanBase and SeekDB (#18872)** (1b5cb3c)
- **fix: map agent rounds to react steps (#18868)** (7d658cc)
- **fix: handle Jina VLM streaming responses (#18855)** (559bc17)
- **fix(web): derive provider base_url visibility from the provider catalog (#18866)** (efe4bc8)
- **Fix: rm default model in create and display builtin model (#18875)** (b224f33)
- **Fix: No need to validate data that is not in dataset format (#18871)** (9b7cc2d)
- **fix(chunker): proportionally slice PDF positions so sub-chunk previews match text (#18864)** (6b673e6)
- **Fix Go Agents tab ordering to match Python (#18845)** (8004a27)
- **fix(metadata-filter): propagate resolved document IDs to retrieval (#18865)** (c587f4c)
- **Fix rerank_candidates_count validation error (#18863)** (fbe1083)
- **Fix: hide skills folder in REST API (#18859)** (fb5ee01)
- **Fix: parse pdf in chat (#18860)** (4b5aacf)
- **fix: reject wiki LLM error responses (#18857)** (3fe356f)
- **fix(ingestion): run wiki compiler cache-less in canvas debug runs (#18828)** (b6d286f)
- **Revert "fix(web): file list total count doesn't match displayed rows (#17747)" (#18856)** (3c9a781)
- **fix(parser): wire per-call VLM model config, harden vision dispatch (#18846)** (34870e2)
- **fix: support .wmf file extension case-insensitively and remove duplicate avi (#15498)** (8b75e86)
- **fix(nlp): load term weight resources as UTF-8 (#18467)** (b299dd7)
- **fix(web): keep token chunker settings when saving in One mode (#18749)** (1b85c0d)
- **Fix: When the pipeline-paeser component switches the file type from PDF to image, the default parsing method should be OCR. (#18858)** (12e8de0)
- **fix(web): dataset auto-metadata toggle reverts to off after save (#18813)** (ac08364)
- **fix(web): add missing hover tooltips to dataset data source action buttons (#18812)** (51bdd42)
- **Fix: remove deprecated mimo-v2-flash (#18854)** (f356133)
- **Fix: The models for audio and video parsers are required fields. (#18851)** (e1d064e)
- **fix(web): cap description length at 512 characters (#18836)** (18f9887)
- **fix(dataset): canonicalize naive parser IDs to general (#18839)** (7652cd9)
- **fix(web): keep typed slider values on the slider's step grid (#18847)** (097f1a5)
- **fix(agent): implement webhook trace polling (#18815)** (1cc2761)
- **fix(api): honor dialog system prompt in reasoning-enabled chat (#18842)** (82e4147)
- **fix: fall back to the real office container format when extension is wrong (#18843)** (e9d5dff)
- **Fix OceanBase chunk order field persistence (#16997)** (05c67ca)
- **Fix QA Excel parser dropping rows whose answer is a zero value (#17902)** (9b71a7a)
- **Fix: On the MCP list page, if the only record on the last page is deleted, the view should navigate to the previous page. (#18840)** (20c92b4)
- **Fix the naive parser treating an empty upload as a missing binary (#18826)** (48c6c54)
- **fix(examples): wait for the DONE status the API actually returns (#18827)** (a6fdf26)
- **fix(chunker): keep PDF positions on all cap-split sub-chunks so chunks don't lose their preview images (#18772)** (5756ec4)
- **fix(schema-sync): stop reporting BaseModel timestamps as dropped columns (#18824)** (5b161b2)
- **fix(pdf): remove unused context import breaking manual test build (#18837)** (9c4c7d0)
- **Fix: An error occurs when accessing the Go version of the wiki page. (#18835)** (0f08bf1)
- **fix: align cross-language prompt separator with parser (#18831)** (92863f9)
- **fix(graph): use max-wins for PageRank in AnalyzeNHopPaths + correct test fixtures (#15695) (#18784)** (779c49b)
- **fix(parser): align image output_format to json and use per-family defaults (strict) (#18802)** (0947a87)
- **fix(document): reject config edits while document is parsing or scheduled (#18804)** (1935958)
- **fix(pdf): do not cross-page merge tables whose anchor is not at page bottom (#18789)** (d82ab2e)
- **Go: fix context, part3 (#18821)** (6c2bca8)
- **fix(tests): let run_tests.py --help exit 0 (#18814)** (da4a62b)
- **fix(build): keep the admin server in build.sh's cleanup trap (#18816)** (dec9b2e)
- **fix(go): drop the removed internal/cache package from run_go_tests.sh (#18819)** (d3d37c6)
- **fix(web): list the agent flow type card first (#18808)** (e9d7aed)
- **fix(mineru): Fix MinerU Rendering Stability, Error Visibility, and Code Block Parsing Issues (#18617)** (5b3a66f)
- **fix(chat): preserve deep-research cancellation after workers finish (#18692)** (445e195)
- **Fix 0 chunk datasets not show, cause cannot scroll to fetch more datasets (#18810)** (608ee09)
- **fix(security): authenticate sandbox executor API and isolate container network (#18703)** (fdf9371)
- **Fix: The chat network search service is allowed to be null. (#18791)** (2c19fae)
- **fix(web): use a dedicated label for the thinking mode field (#18806)** (9bc12fb)
- **fix(sdk): filter documents by multiple IDs (#18790)** (8a7c422)
- **fix(web): skip canvas autosave of empty nodes/edges (#18783)** (229503b)
- **fix(docker): prevent all foreground entrypoint.sh loops from exiting on non-zero exit (#18545)** (f6fd412)
- **fix(model-provider): resolve instances by persisted ID (#18792)** (955abf6)
- **fix(web): cap embed dialog User ID input length and add data-type hint (#18773)** (6f30ed2)
- **fix: accept empty ASR verification results (#18788)** (f5274d7)
- **fix(opensearch): scope multi-document update to the target knowledge base (#17048)** (775ffb7)
- **fix: the bigquery connector constructs sql queries u... in... (#17500)** (d098642)
- **fix(parser): support webp in image OCR and correct rune count for VLM gate (#18785)** (88e5a8b)
- **fix(naive): route misconfigured MinerU PDFs to by_mineru instead of by_plaintext (#17114) (#18762)** (f98a538)
- **fix: inherit document status when inserting chunks (#18610)** (bed9cc5)
- **Fix: find_codec discards confident encoding detection and returns a garbage codec (#15793)** (1664214)
- **fix: allow empty GitHub repositories (#18776)** (9fdcc02)
- **fix(agent): propagate webhook terminal states (#18758)** (5827620)
- **Fix: The recommended chunk size for the token chunker is restricted to integers only. (#18786)** (1e15cc2)
- **Fix: MinerU model (#18767)** (6342632)
- **fix(sandbox): sync the sandbox env with the Python version it requires (#18766)** (c2c2010)
- **fix(web): stop RAGFlow brand block from overlapping embedded share header (#18729)** (a714ece)
- **fix(web): agent explore streaming answer leaking into the switched-to session (#18686)** (c7dec3b)
- **fix(parser): clean .eml text output for chunking (#18592)** (e79b9bd)
- **fix(web): surface dataset navigation tree load failures (closes #17301) (#17668)** (004b3c4)
- **fix(sandbox): remove the sandbox containers that exist, not a pool-size range (#18629)** (b4958dc)
- **fix(memory): align Go semantic valid_at prompt with the Python wording (#18752)** (b380728)
- **fix(chat): deliver uploaded image attachments to vision models in Go chat pipeline (#18708)** (874d156)
- **Fix(go): PaddleOCR -> PaddleOCR.local, PaddleOCR.net -> PaddleOCR (#18747)** (45a47d9)
- **fix(agent): default missing Graph path so stored DSL cannot KeyError (#18753)** (df7f190)
- **fix(pdf): strip tiled watermark text from text-layer extraction (#18308)** (ee3360b)
- **fix(deepdoc): harden opendataloader table-cell parsing against bad json (#17316)** (7622d67)
- **fix(parser): crop media sections in PDF JSON path, unify Data URI and markdown rendering (#18742)** (f9e86b1)
- **fix(chat): propagate mind map stream failures (#18733)** (a940dad)
- **fix(agent): panic and raw error when auto play runs without a default TTS model (#18734)** (9a03f70)
- **Fix total as the total, follow Go (#18750)** (fd7cd32)
- **fix(pdf): restore cross-page table merge wrongly rejected by #18688 page-absolute Y gate (#18740)** (b6a0a3c)
- **Fix GPUStack model discovery and audio support (#18599)** (ba523a1)
- **fix(agent): redact internal terminal errors (#18743)** (80f7421)
- **fix(agent): prevent path traversal and SSRF in Browser URL file upload (#18711)** (4870e83)
- **fix(web): keep Firefox chat auto-scroll pinned to the bottom (#18736)** (5c88ee4)
- **Fix: Add the chat model to the Python version of the dataset configuration page. (#18735)** (40b5845)
- **fix(web): require chunk content when creating or editing a chunk (#18739)** (6916ddf)
- **fix(web): fall back a page when the dataset file list empties (#18738)** (ff4109c)
- **Fix: After selecting upload, the document is parsed directly, but the parsing progress cannot be seen. (#18741)** (c4175c3)
- **fix(admin): honor DEFAULT_SUPERUSER_EMAIL/PASSWORD env vars in bootstrap (#17674)** (4301561)
- **Fix: cross-KB document id collision in data source sync (#18116) (#18244)** (aa57022)
- **fix(pdf): colspan assembly loss + TSR geometry comparison diagnostics (#18727)** (d7e3592)
- **fix(connector): honor configured S3-compatible bucket type (#18576)** (3023e2f)
- **fix(mcp): include dataset name in list_datasets output (#17133) (#18710)** (7a549a0)
- **Fix: Modify the error message for empty chat responses. (#18730)** (67e744f)
- **fix: skip empty knowledge compile events (#18728)** (e07b338)
- **Fix email and presentation parsers treating an empty upload as a missing binary (#18712)** (b003502)
- **fix: support hierarchical Wiki topic navigation (#18721)** (3a83691)

### Backend
- **Update None to Naive (Follow English) (#18848)** (6c51394)
- **Refine entrypoint.sh - tidy code (#18838)** (edd3caa)
- **Better enhance message (#18818)** (5bed4dc)
- **Porting #18737 to go (#18745)** (158d672)
- **Go: porting #18663 (#18726)** (40326f1)

### Tests
- **test(agent): pin whitespace handling of template ref patterns (#18720)** (80ef2fe)

### Docs
- **Docs: 0.27.1 release notes (#18879)** (b9df87c)
- **Docs: Update version references to v0.27.1 in READMEs and docs (#18849)** (e3cc9a1)
- **docs: add Chat documents (#18870)** (a706296)
- **docs(configuration): name the ragflow serving-port key http_port (#18825)** (3175d46)
- **docs(api): document the document-update endpoint as PATCH (#18765)** (79093df)
- **docs(api): spell the recommendation endpoint the way the server registers it (#18764)** (d354246)
- **Docs: update 27.0 release notes (#18770)** (2e918d0)
- **docs(sandbox): describe how the container pool is actually sized (#18625)** (407ec2c)

### Chore
- **Refactor: add page_size support (#18876)** (f74e045)
- **Refactor: Translate figure 'Fig.' to Chinese (#18852)** (968380c)
- **Refactor: refine error messages - use %W (#18834)** (ba625dc)
- **Refactor: Add rerank_candidates_count, knn top_k and num_candidates to /api/v1/retrieval (#18768)** (68b893c)
- **Chore: remove knowledge compiler from types and tests (#18809)** (895bcc5)
- **refactor(parser): extract shared parseWithTCADP core from pptx/xls/pdf wrappers (#17671)** (28ce77f)
- **refactor(parser): consolidate vision figure enhancement across document formats (#18775)** (959c8e8)
- **Refactor: expose knn top_k and knn num_candidaties (#18737)** (92c69db)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/infiniflow/ragflow?utm_source=github-action)._