### Summary
GET /api/v1/files/{id} now sets attachment filename for both Python and
Go handlers so browsers can save downloads with the correct name.
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
Fix MCP timeouts — now uses a single deadline across sync/async paths. Expired queued requests are skipped before dispatch; in-flight coroutines are canceled. Tests added. Remote side effects cannot be rolled back (server idempotency required).
Fix POST /api/v1/files 500 error when parent_id doesn't exist. Removed dead delete_folder_by_pf_id call (mismatched args, no tenant scope). Now returns False and documented error response.
Fix Ollama vision 404 by removing ensure_v1() from OllamaCV.__init__. Ollama uses native REST API (/api/generate), not OpenAI /v1 endpoints.
---------
Co-authored-by: Jin Hai <haijin.chn@gmail.com>
Add custom CA certificate support to WebDAV data source. Users can now connect to private/self-signed WebDAV servers via the verify option.
Fixes#16635
Fixes#18833.
When the reasoning level is enabled, `dialog_service.rag_agent()` builds a custom system prompt and passes it to `RAGTools`. `RAGTools.sys_prompt()`, however, returned only the router instructions, so the configured system prompt was dropped from the outer LLM.
This change prepends the configured system prompt to the router prompt when one is provided, and adds regression tests.
Fix generate_nav tenant mismatch: wipe used dataset owner's tenant_id but rebuild used caller's. Team members could delete owner's navigation tree and rebuild into their own. Now both use kb.tenant_id.
Fix IME Enter key issue in chat — confirming Japanese/Chinese/Korean text composition triggered unintended message send. Added isComposing check to NextMessageInput and FloatingChatWidget. Now composition Enter preserves input, normal Enter sends.
Fix#18873 — add missing get_scores() to OBConnection for SeekDB score extraction. Vector/hybrid retrieval and Chat RAG now work.
Co-authored-by: Jin Hai <haijin.chn@gmail.com>
Fix ensure_v1() mangling Gemini's v1beta/openai endpoint by appending /v1. Now recognizes any segment starting with v{digit} as already versioned.
Signed-off-by: chuenchen309 <48723787+chuenchen309@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
### Summary
Fix `.wmf` file type detection by matching lowercased filename
normalization in both Python and Go extension checks.
This PR also removes a duplicate `avi` entry from the Python visual file
type regex.
---------
Co-authored-by: Jin Hai <haijin.chn@gmail.com>