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

_1225+ commits._

### Features
- **feat(syncer): add Bitbucket connector with checkpoint resume (#18487)** (d648d19)
- **feat: improve Go wiki compilation (#18479)** (31812e1)
- **feat(MinerU):Add support for MinerU table and image chunk classification (#16703)** (b27623a)
- **feat(title-chunker): configurable token-count cap with sentence-boundary re-split (#18455)** (ebd6be0)
- **feat(go-syncer): add GitLab datasource connector with checkpoint resume (#18425)** (a4ec4f8)
- **document[syncer]: add development document for syncer (#18431)** (d99f461)
- **Feat: Remove `pageindex` from the dataset configuration page. (#18429)** (cd8b336)
- **Feat: connector go webdav (#18379)** (94a9374)
- **feat(ingestion,web): modularize extractor configuration with sub-tabs, independent prompts, and metadata integration (#18383)** (c71991b)
- **feat[syncer]: add connection test with unified connector validation (#18281)** (602f55d)
- **feat: Gaussdb adaptation (#17703)** (d02723c)
- **Feat: data source test connection with unified connector validation (#14992)** (b85b908)
- **Feat: add qwen-3.8 series models. (#18368)** (fd37d25)
- **Feat: Move wiki-related translation resources to a namespace. (#18359)** (3079e4f)
- **feat(ingestion): end-to-end Auto metadata in Go (extractor merge, builtin UI, built-in fields) (#18273)** (452720a)
- **Feat: connector go discord (#18349)** (248a4e6)
- **feat(web): pin the current user to the top of admin user list (#18345)** (ddff47e)
- **feat(syncer): Add REST API connector (#18256)** (c3b977f)
- **feat[syncer]: add checkpoint resume run for Github (#18260)** (d77b514)
- **feat[syncer]: add checkpoint resume run for RSS (#18257)** (a2e6ddb)

### Fixes
- **Fix: Clearing the files of the dataset selected in the chat should result in an error message appearing on the chat page. (#18510)** (2c6f838)
- **Fix empty Markdown document parsing (#18503)** (9e913c3)
- **fix(harness): enforce concurrency limits for retried Pregel tasks (#18496)** (3791f27)
- **fix(deepdoc): collapse overlapping OCR boxes before Go table cell-fill (#18507)** (e3def57)
- **Fix: not use connect check result as model verify result (#18492)** (993e841)
- **fix: allow .bmp uploads in filename type whitelist (#17830)** (d82c48e)
- **Fix search with [+-] crash the search (#18497)** (38c18ea)
- **Fix: connector validation error (#18489)** (b46180f)
- **fix(llm): disable DeepSeek V4 thinking by default via extra_body (#18241)** (c466ff3)
- **Fix ingestion pipeline child delimiter extra newline (#18490)** (5f92323)
- **fix(web): preserve caller onBlur in NumberInput (#18491)** (140029e)
- **Fix: Deleting a large language model selected on the memory page from the model vendor should result in an error message when accessing the memory page. (#18486)** (76111cb)
- **Fix: Retrieve the frontend code of the extractor operator for the Python version. (#18481)** (808f216)
- **fix(deepdoc): align table header detection with Python (follow-up to #18404) (#18454)** (746fe4f)
- **fix(title-chunker): lossless hard-split on multibyte + re-split logging (#18476)** (fad48b1)
- **fix: make ScheduledTask lifecycle concurrency-safe (#18469)** (6c0d091)
- **Fix reasoning not working in multiple model chat (#18457)** (ae9f1e7)
- **fix(deepdoc): score table orientation by per-line detect+recognize (#18452)** (b6b6c4d)
- **fix: honor minimum_should_match in GaussDB search (#18456)** (f1e6b22)
- **fix(model_meta): Base._get_api_key handles JSON-dict api_key for the model-list verify path (#18386)** (b3d9e02)
- **fix(model_meta): LocalAI._get_api_key handles JSON-dict api_key for the verify path (#18314)** (5d16408)
- **fix(agentic-rag): raise max_parallel_agents for high/ultra to 4, use web search after locate fails repeatedly (#18430)** (2aaa6ba)
- **Fix task time is incorrect (#18453)** (858f882)
- **Fix pdf cancel at task level not document level, multiple record logs (#18435)** (b5ad30e)
- **Fix: set enable_thinking to True for qwen3.8-2.4t-a95b (#18442)** (eb4e1aa)
- **Fix: Initiate a request to check for file changes two seconds after compilation completes. (#18440)** (455d340)
- **CLI: fix check license (#18451)** (7d4e40c)
- **fix(web): strip think sections from floating chat widget copy (#18436)** (109cff1)
- **fix(web): show introduction for built-in pipelines audio/email/knowledge compiler (#18411)** (84e4efa)
- **Fix: use Infinity connPool.get_conn() in metadata filter push-down (#18438)** (486065d)
- **Fix multiple model chat always use the chat model, not using the passing model (#18439)** (b75509c)
- **fix(deepdoc): align Go table header detection with Python (parity #4) (#18404)** (c370f62)
- **fix(agent): make tag metadata searchable and sortable in agent list (#18313)** (89f3611)
- **Fix: verification error msg (#18437)** (b2baddf)
- **fix: isolate extract html request headers (#18322)** (15aad78)
- **Fix: Edit wiki-style text (#18419)** (0158a6b)
- **fix(deepdoc): preserve cross-page continuation rows on column-count mismatch (#18416)** (06463f6)
- **fix(web): surface the validation error when a metadata value save is blocked (#18418)** (c05fe37)
- **Fix: Incorrect translation of "search" on the chunk page. (#18427)** (cd1bb57)
- **Fix parent chunk with extra newline (#18426)** (2a132d2)
- **fix(web): prevent docx preview zoom from skipping a level (#17323)** (4a3b20a)
- **fix(agent/tools): port DeepL to ToolBase so it works as an Agent tool (#18395)** (c3153ba)
- **fix(deepdoc): assign each PDF box to a single table cell matching Python (#18410)** (fb788ee)
- **Fix: some pdf with chinese name cannot preview (#18422)** (86750bd)
- **fix(web): remove duplicate tags for locales files (#18421)** (8583bc3)
- **Fix: set database version to v0.27.0 (#18424)** (c642e01)
- **fix(deepdoc): drop per-cell OCR in Go table parser to align with Python (#18405)** (fa386dd)
- **fix(deepdoc): add orphan-row cleanup to Go table construction (parity with Python) (#18402)** (3a7e275)
- **fix(deepdoc): align table orientation scoring with Python recognition confidence (#18401)** (d3ff257)
- **fix(agent): close MCP sessions wrapped in MCPToolBinding (#18399)** (63a4540)
- **fix(pdf): align TSR crop margin with Python (fixed 30px, not 3%) (#18387)** (5ec11f7)
- **Fix: correct chunk order for non‑PDF documents (#18412)** (344bd4d)
- **Fix: handle title and truncate document preview by sentence (#18407)** (2368c54)
- **fix: update ZHIPU-AI API key URL to the new BigModel console (#18406)** (45d2ac0)
- **fix(web): confirm before removing models from a provider instance (#18400)** (c6ec7d4)
- **fix(parser): check every grid row, not just the first, before cross-page rebuild (#18378)** (f94438a)
- **fix(web): hide verify button for OpenAI-API-Compatible provider (#18380)** (171175a)
- **fix: exclude compiled artifacts from chunk lists (#18382)** (f5efff8)
- **Go: fix context, part3 (#18390)** (68f8260)
- **fix(harness): honor node and engine retry policies in Pregel (#18388)** (110ed63)
- **fix(agent/tools): read Keenable result content from `snippet` (#18341)** (9c81d9b)
- **fix(ingestor): stop dropping tasks under burst parse backpressure (#18369)** (37b945c)
- **fix(deepdoc): apply 0.4 garbage gate in LayoutRecognizer.forward (#18372)** (e217b0d)
- **fix(deepdoc): trim garbage-gate comments, fix subtest fact error, dedupe constants (#18377)** (cb01238)
- **fix[syncer]: cannot run prune task (#18344)** (ebb7bd2)
- **fix: unable to search agent log by ID (#18373)** (5a5f600)
- **Fix cross-page merged tables dropping continuation rows (#18362)** (68da250)
- **fix: restore document query cache matching (#18376)** (e96a0a1)
- **fix(deepdoc): drop low-confidence garbage DLA regions to match Python (#18365)** (7ceafa0)
- **fix(model_meta): Ollama._get_api_key handles JSON-dict api_key for the verify path (#18321)** (4593d08)
- **Fix: The begin operator of the agent created from the template does not display a pattern. (#18367)** (e3d46ef)
- **fix(pdf): drop text boxes only when replaced by a table HTML (#18363)** (bd01c78)
- **fix(web): exclude <think> reasoning blocks from copied answer (#18371)** (6f0fff5)
- **fix: align Go ingestion progress and pipeline selection (#18366)** (1ef4ddd)
- **Fix: get memory size cache rightly (#18370)** (238b1ae)
- **fix(ingestion): unify extractor prompt placeholder rendering and per-chunk substitution (#18355)** (3e38b6c)
- **fix(parser): align Go spreadsheet HTML with Python and harden header detection (#18304)** (0517aeb)
- **fix(pdf): align DLA region handling with Python reference (#18295)** (272645a)
- **docs：fix compilation docs & change page layout (#18358)** (226ef83)
- **Fix: Switching the rerank model on the chat page fails to save the configuration. (#18357)** (8664d8d)
- **Fix: enhance form submission error handling and update rerank form field prefix (#18351)** (f8764d3)
- **fix(ingestion): accumulate component progress lines into document.progress_msg (#18356)** (9f358cb)
- **fix(tcadp): add timeout to HTTP GET request for document download (#18336)** (7ef1442)
- **Fix _routed_docs leak across parallel claims in agentic research (#18348)** (f8a16ec)
- **fix: stop three recurring errors on doc delete (#17685) (#17686)** (c6ba54b)
- **fix(search): show honest empty state when mind map has no content (#18294)** (00df872)
- **fix(web): show queued memory extraction tasks as pending instead of failed (#18297)** (0df1b24)
- **Fix:The dialog will display the referenced documentation even if the API does not return any documentation data. (#18298)** (a897a25)
- **Fix: hide top-k under the rerank model (#18302)** (c9fda1c)
- **fix: track wiki chunk changes incrementally (#18285)** (024c35f)
- **fix(web): enlarge card '...' edit button hit area (#18262)** (34e59c8)
- **Go: fix context, part2 (#18296)** (fa57623)
- **fix(web): preserve leading whitespace in chunk card content (#18215)** (b1fd000)
- **Fix: Prevent the tool operator from being dragged and connected by other operators. (#18290)** (98b3785)
- **fix: hide wiki mode on python backend (#18289)** (1c402be)
- **Fix: If the model is removed from the supplier list, an error should occur when accessing the search and memory pages. (#18270)** (3a8ea35)
- **fix(go-agent): forward sys.files uploads to vision LLMs (#18246)** (3d50f8b)
- **fix(agent): keep agent chat sidebar scroll container shrinkable (#18252)** (3fbc634)
- **fix(web): make the selected agent-explore session visually distinct (#18253)** (94f535f)
- **fix(web): clarify batch model action labels (#18283)** (6a35e8d)
- **fix(web): scope answer loading placeholder to the last message (#18284)** (ed4e1c0)
- **Go: fix context (#18291)** (2c775d0)
- **fix: return total numbers of the search result (#18071)** (5bb5ba2)
- **fix: return total number of docs when sync has no update (#18255)** (cdbd82d)
- **fix(web): pass pdf.js cMap/standard font URLs so CID-font PDFs render in preview (#18249)** (ea3a2b2)
- **fix(web): add tooltip to web search toggle in chat input box (#18276)** (24033bf)

### Backend
- **refa: remove document graph snapshot payload (#18488)** (f2cfd86)
- **Remove noocr/SkipOCR dead code path and text-layer-only parity test (#18443)** (b78b559)
- **feat[Syncer]: implement Google Cloud Storage data source (#18420)** (2c8e73a)
- **feat[syncer]: implement notion data source (#18423)** (ab4adee)
- **feat[syncer]: implement outlook data source (#18350)** (e32723e)
- **deepdoc(pdf): WarpCrop de-skew + score-based layer-2 rotation (Go OCR parity with Python) (#18299)** (8d20cbd)
- **Search in navigation tree & store graph content in nav_doc (#18303)** (554fb11)
- **Go: align cancel-parse error with Python for un-started documents (#18245)** (01d351b)
- **deepdoc: send lossless PNG instead of JPEG to the DeepDoc inference service (#18282)** (2678a0c)
- **The tool operators that allow the agent to be collapsed and hidden (#18288)** (6445390)

### Tests
- **test: cover stale conversation switching (#18211)** (2b58e62)
- **test: add text&code parser-to-chunker parity golden (#18311)** (6756b48)

### Docs
- **Docs: Update version references to v0.27.0 in READMEs and docs (#18500)** (ec9c08d)
- **Docs: 0.27.0 release notes (#18493)** (1373b04)
- **docs(harness): fix package documentation link (#18428)** (9fc3e22)
- **docs(harness): fix AgentCore import aliases in examples (#18434)** (5a0bcf7)
- **docs: fix Docker installation link in Korean README (#18385)** (ab9db9a)
- **docs: fix dead internal links in FAQ and HTTP API reference (#18312)** (b5512b8)

### Chore
- **refactor(extractor): unify 5-in-1 modular schema across dataset and pipeline, drop legacy field_name and custom prompt (#18432)** (2a1a93e)
- **chore(deepdoc): remove dead standalone DLA client, converge on inference.Client (#18384)** (5aeba40)
- **Refactor: make page number readable (#18409)** (75f737d)
- **chore(table): remove stale manual parity-issues test (#18403)** (97db1b4)
- **refactor: replace Split in loops with more efficient SplitSeq (#18248)** (52519e2)
- **Refactor: do not include compliation chunks in retrieval testing (#18364)** (57b907c)

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