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

_370+ commits._

### Features
- **feat(ingestion): polish image dispatch with bmp/tiff decoders and zero-alloc RuneCount (fix #18794) (#18988)** (519474f)
- **feat(agentic_rag): add tool playbook, clarify tool specs, stop wasted… (#19459)** (2bf80b9)
- **add pytest-durations to the test workflow (#19443)** (7b37b25)
- **feat: highlight search matches in Team settings tables (#15985)** (c0405a9)
- **feat: add Hubris as a model provider (#19341)** (4731ee3)
- **feat(ingestion): consolidate checkpoint to Parser + per-chunk result cache (#19386)** (cec02ad)
- **feat(channels): allow chat channels to connect to agents (#19307)** (24c115b)
- **feat(connector): add Sitemap data source for sitemap.xml-based web ingestion (#19344)** (371cfab)
- **feat(deepdoc): switch in-process Go backend from .onnx to FlatBuffer (.ort) models (#19318)** (6de46a2)
- **feat(agent): add Sofya search tool (#19323)** (c44e171)
- **feat(parser): add MonkeyOCRv2-Parsing support (#18887)** (fd9f9e7)
- **feat(llm): forward OpenAI user on embedding and parse requests (#19065)** (38230c4)
- **feat(task_executor): add MAX_TASKS_PER_WORKER to recycle long-running workers (#14501)** (eb24425)
- **feat: configure knowledge compilation runtime settings (#19254)** (2476e2f)
- **feat(preview): add EPUB document preview with encoding normalization (#19242)** (14306f4)
- **feat: adapt knowledge compilation concurrency (#19156)** (447f87d)

### Fixes
- **Fix: num token usage (#19495)** (97029b0)
- **Fix: num bind datasets in template by components (#19454)** (5c48dfb)
- **fix: support keyword search for dataset structure graphs (#19473)** (e9a6397)
- **fix: route navigation API through tree search (#19493)** (7e86bea)
- **fix(go): stop masking document preview failures as "document not found" and add tenant access check (#19348)** (7090ca8)
- **fix(ingestion): allow re-parsing a document whose parse was canceled at progress 0 (#19258)** (347d082)
- **Fix: Enabling the opening message switch for the 'begin' operator will cause previously sent messages to be overwritten. (#19492)** (23f4bb0)
- **fix(llm): drop Claude sampling params rejected by Bedrock and Anthropic (#19295)** (2b8861c)
- **Fix: The default name of the operator does not include a numeric suffix. (#19451)** (3dbb4ce)
- **Fix: NOT generate graph all entities/relations as a graph chunk (#19474)** (3dbca95)
- **fix(embedding): preserve zero filename embedding weight (#19397)** (48f6cbf)
- **fix(agent): preserve Starter values beside query inputs (#19420)** (11f4d11)
- **fix(restful-tests): align Go parser config contract (#19442)** (af5f9d7)
- **fix(storage): accept tenant arguments in encrypted Azure calls (#19457)** (cf18c94)
- **fix(storage): overwrite existing Azure SAS objects (#19458)** (30a2960)
- **fix(llm): implement async chat methods for GoogleChat (Vertex AI Gemini) (#15994)** (65fdc85)
- **Fix: run ensure_db_init before start server (#19423)** (c5d9295)
- **fix(agent): template retrieval binding at creation + false "no dataset selected" save warning (#19316)** (16f25e7)
- **fix(chunk): enforce document scope on updates (#19221)** (1a99ebe)
- **Fix: table column auto parse missing metadata (#19439)** (e4c706b)
- **fix(compiler): resolve global built-in template scope (#19426)** (3fa257a)
- **fix: report incremental wiki map errors (#19422)** (19acb01)
- **fix: prevent IndexError in PUT /api/v1/searches/<id> when search not found (#16027)** (8efa738)
- **Fix: The newly added group name for the VariableAggregator operator cannot be found. (#19440)** (977f1a9)
- **fix(agentic_rag): reject prose fan-outs, keep research loop alive on SCA timeout, and widen slot-table retry budget (#19424)** (4e3cd42)
- **fix(embedding): use Replicate run API for query embeddings (#19405)** (2c1af18)
- **Fix: check sql component required fields (#19418)** (cd054ed)
- **fix(mineru): align backend names with current MinerU API (#19055)** (792a17c)
- **fix: avoid KeyError when database config has no password (#11051) (#16064)** (b537f39)
- **fix(compilation): make graph search Enter on an entity name highlight the node instead of rendering the whole graph (#19320)** (cfb599a)
- **fix(dataset): honor keywords filter in Go wiki artifact list APIs (#19310)** (f4b0478)
- **fix(agent): treat missing List Operations input as empty list (#19275)** (38c40e6)
- **fix(api): authorize dataset and workspace commit routes (#19357)** (fb2f881)
- **fix(syncer): anchor sitemap PDF-pass checkpoints and declare regex dependency (#19383)** (14fa559)
- **fix(sdk): preserve JSON document downloads (#19367)** (d5ebaf6)
- **fix(api): enforce readonly access to team-shared chat and agent sessions (#19340)** (9538c28)
- **fix(api): return "search not found" instead of IndexError when updating a missing search (#19380)** (3931c69)
- **fix: filter chunks by requested IDs (#19377)** (afb01aa)
- **fix: resolve Go structure graph template names (#19373)** (742b0e7)
- **fix(agent): preserve sandbox artifacts through streaming (#19355)** (d796dcf)
- **fix(agent): clear stale template dataset references (#19399)** (76c197f)
- **Fix: By default, the wiki page does not display the wiki content on the right. (#19388)** (dbba3ba)
- **fix(web): move artifact delete button into the toolbar row (#19381)** (5c03268)
- **fix(web): align parse status badge colors with list dots and rename table header (#19400)** (1b80b13)
- **fix(paper): bound title-pivot merge by chunk_token_num (#12109) (#16959)** (0f34246)
- **fix(llm): raise a clear error for unsupported Bedrock embedding models (#16044)** (86edfc4)
- **fix(docs): document dataset language create and update behavior (#19372)** (a670f52)
- **fix(web): hide sign up until registration is enabled (#19343)** (99ad277)
- **fix(agent): flatten scalar-list values in DataOperations combine (#19111)** (440c2c6)
- **Fix: show skills folder (#19351)** (0d83b5b)
- **fix(web): disable textarea resizing in agent note node (#19349)** (042d11f)
- **fix: filter structure alteration by document products (#19346)** (7b01906)
- **fix(memory): align extracted message document id with message_id (#19326)** (545753e)
- **fix(parser): recover text_box and nested table/list text in office IR (#19319)** (e53e5de)
- **fix(api): accept repeated memory_type and tenant_id filters when listing memories (#19281)** (6c280f1)
- **fix(ingestion): keep Q&A/Tag chunks from collapsing into one indexed chunk (#18480)** (2727dac)
- **fix: support agent input mapping and converged edges (#19317)** (c0470b8)
- **fix(native): build 0-origin raster in FromImage/Decode for cropped sub-images (#19308)** (c4a0190)
- **Fix: update GiteeAI base_url and some model_name (#19338)** (82f6144)
- **fix: report knowledge compilation LLM failures (#19313)** (96fcfd9)
- **Fix the remaining rag/app chunkers treating an empty upload as a missing binary (#19256)** (dbe0eda)
- **fix(agent/tools): run a DuckDuckGo news search when the channel is news (#19176)** (293de5a)
- **fix(api): allow setting language on dataset creation (#15703) (#16242)** (03d861a)
- **fix(excel): drop the "None" label for a blank spreadsheet header cell (#19175)** (1455cdf)
- **Fix: After clearing the data in the agent list, the corresponding filter data must also be cleared. (#19336)** (b4acb95)
- **fix: report wiki map timeout errors (#19329)** (638ad0d)
- **fix(web): block chunk save and show error when tag is not selected (#19337)** (2e9b9d2)
- **fix(mcp): terminate Go Streamable HTTP sessions (#19151)** (77ef603)
- **fix(exesql): serialize DATE/TIME columns for canvas SSE JSON (#19266)** (aadc4d7)
- **fix(mcp): bound the document-metadata cache like the dataset cache (#19022)** (041a9e3)
- **fix(web): load chunk method example images from remote repo (#19328)** (a2f3b5f)
- **fix(storage): honor client region in Python S3 bucket creation (#19291)** (9d6f76d)
- **fix(memory): restore Infinity FIFO eviction and maintenance queries (#19290)** (463672b)
- **fix(agent): hold back a node whose upstream runs in the same batch (#19282)** (9f7bc61)
- **Fix: Click to create an agent; if the name already exists, an error will be displayed in the name input field. (#19324)** (7d8f7f6)
- **fix(web): disallow folder upload in chunk creating modal (#19309)** (de04c96)
- **Fix: Delete icons that have been placed in the assets directory of iconfont.js. (#19300)** (3f23b44)
- **fix(cli): pass search number as file limit (#19285)** (64c01d2)
- **fix(api): return the full error tuple when both id and ids are given to list documents (#19280)** (fa52804)
- **Perf: link onnxruntime without --whole-archive to cut binary size (#19277)** (aaed9fd)
- **fix(chunker): prevent chained over-carry of overlap-head PDF positions (#19068)** (feeb4a7)
- **fix(parser): handle MinerU chart blocks instead of silently dropping them (#19096)** (0c28d59)
- **fix(task): refresh stale embedding model config (#18089)** (27faeae)
- **fix(web): make tr locale capitalisation consistent for expanded labels (#19273)** (f99b9cd)
- **fix(parser): recover invalid XLSX sheet names (#19264)** (1c3c622)
- **fix(dataset): surface Go ingestion QUEUED status and honor terminal run state (#19249)** (255b000)
- **fix(agent): await MCP transport cleanup before stopping event loop (#19093)** (bef3475)
- **Fix: bound model response reads (#19211)** (fd1e515)
- **Fix: apply dia.llm_id overrides (#19214)** (ff69dba)
- **fix(web): default Textarea resize to vertical (#19263)** (952d661)
- **fix: exclude empty documents from structure alteration (#19246)** (f4bafa1)
- **Fix: After clearing data from pages other than the first page, the data in the filters and search box should also be cleared. (#19255)** (dbeaab1)
- **Fix: check required fields when use template (#19228)** (2177c3a)
- **fix(web): sanitize worksheet names that crash the excel previewer (#19260)** (2ed042b)
- **fix(ingestion): show data pipeline on failed parse log entries (#19231)** (9d8df64)
- **fix(ingestion-logs): normalize dataset status filters (#19261)** (c280ff0)
- **Fix: upload image to model in chat (#19257)** (2f8dab2)
- **fix(token_utils): build the tiktoken encoder on first use, not at import (#18986)** (2f13f10)
- **fix(parser): decode non-UTF-8 document text (#19253)** (ebb2174)
- **fix(chunker): align canvas TokenChunker default delimiters with General parser (#19226)** (4f7c69c)
- **Fix missing content_ltks when rerank (#19230)** (b48cfc1)
- **fix(parser): support non-UTF-8 decoding across text, csv, and epub parsers (#19243)** (5bcaa73)
- **fix ci unit test not found in installed package 'wordnet' (#19251)** (5d0e225)
- **fix(ingestion): route xlsx QA JSON table items to extractQATable (#19198)** (62f09ab)
- **fix(agent): wire document service so dataflow rerun works instead of 500ing (#19094)** (60fcf20)
- **fix(model_meta): discover TEI reranker models (#19210)** (7060191)

### Backend
- **[Refactor] Use regex to do hightlight (#19488)** (a1261c8)
- **Decode a single-part email body by its Content-Transfer-Encoding (#19178)** (05168a3)
- **Doc: remove space (#19462)** (ee75f53)
- **Correct parser_config examples in API docs (#16002)** (e356255)
- **Go: update build.sh and development.md (#19448)** (d5a89c3)
- **Dockerfile_go optimize (#19385)** (4c9768b)
- **Go: refactor (#19312)** (426246f)

### Tests
- **Test: Adjust the priority of some test cases from P1/P2 to P3. (#19461)** (ba575b0)
- **test(rag/nlp): cover the BOM and LookupError branches of decode_text (#19292)** (8864127)
- **test(web): cover decodeBlobText across all five decoder branches (#19240)** (eea0f1a)

### Docs
- **Docs: v0.27.2 release notes (#19504)** (a024bea)
- **Docs: Update version references to v0.27.2 in READMEs and docs (#19501)** (5bd80b3)
- **docs: Update tooltip url (#19484)** (ba3cda3)
- **docs: update API references to match implementation (#19334)** (8ce74f3)
- **docs: clarify user_default_llm deprecation (#19321)** (078ffca)
- **docs(api): use the memory update field names the route reads (#19279)** (0cd0a7a)

### Chore
- **build(deps): bump github.com/buger/jsonparser from 1.1.1 to 1.1.2 (#19463)** (c178cdd)
- **CI: Optimize api test cases failed (#19450)** (ab23b2e)
- **Refactor: Follow #19404 to add RERANK_TOKEN_LIMIT_MODE=truncate|passthrough|raise_error (#19421)** (2284c8e)
- **chore(deps): let download_go_deps.py fetch Go DeepDoc .ort weights (#19376)** (8c8253a)
- **refactor(ingestion): use worker-driven task pull dispatcher (#19314)** (1ed2fc2)
- **Refactor: Add RERANK_TOKEN_LIMIT_MODE = truncate (default) / passthrough / raise_error (#19404)** (a135930)
- **Refactor: combine 3 retrieval/search API as one (#19303)** (b7e577c)
- **build: use a stable dynamic-list path for OrtGetApiBase export (#19302)** (f1c42e8)
- **Refactor: update dataset API should not have ext (#19272)** (f8b0a1d)
- **chore: remove the DeepDoc Go alignment report (#19311)** (1dce167)
- **CI: add Dockerfile_go build and api test  (#19232)** (0cee507)
- **chore(deps): depend on org mirror infiniflow/onnxruntime_go (#19169)** (4298700)

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