Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog. Package version numbers follow the Open WebUI mapping described in the README (they are not independent SemVer).
[Unreleased]
[9.6.0] - 2026-06-02
Changed
- Updated target Open WebUI version from 0.9.5 to 0.9.6.
- Updated reference source (
refs/owui_source_main/) to Open WebUI 0.9.6 (commit 1a97751e37). KnowledgeDirectoryUpdateForm.parent_iddefault changed fromNoneto'__unset__'sentinel (matches backend).RetrievalClient.update_config()now serializes theConfigFormwithexclude_none=Trueso partial config updates (where most fields remain unset) do not sendNonevalues for list-typed fields. Required because OWUI 0.9.6 strictly validates list types and rejectsNonewhere a list is expected (e.g.ALLOWED_FILE_EXTENSIONS,YOUTUBE_LOADER_LANGUAGE).ToolsClient,PromptsClient,ModelsClient, andEvaluationsClientPOST endpoints that send a partial form (most notably those withaccess_grants: Optional[list[dict]] = None) now serialize withexclude_none=True. Required because OWUI 0.9.6 strictly validates list-typed fields and rejectsNone(e.g.access_grants). TheConfigsClientendpoints were intentionally left unchanged because the 0.9.6 backend requires every form field to be present (even whenNone).
Fixed
RetrievalClient.update_config()returning 422 Unprocessable Entity on partialConfigFormsubmissions against OWUI 0.9.6 (regression from 0.9.5; the previous backend acceptedNonefor list fields, the new backend does not).UtilsClient.get_html_from_markdown()marked as expected-to-fail in tests: the/v1/utils/markdownendpoint was removed in OWUI 0.9.6. The client method andMarkdownFormmodel are retained for forward compatibility, but will return 405/404 against current backends.
Known Issues (OWUI 0.9.6 Backend)
The following tests are marked xfail due to apparent bugs or behavior changes in the OWUI 0.9.6 backend. The client behavior is unchanged from 9.5.0; the failures are caused by the backend, not the client. These are expected to be addressed in a future release once the upstream issues are resolved.
tests/test_evaluations.py::test_feedback_lifecycle—GET /v1/evaluations/feedbacks/allreturns data the client cannot iterate asList[FeedbackResponse]. The endpoint may have been renamed or its response wrapper changed in 0.9.6.tests/test_models.py::test_model_lifecycle—POST /v1/models/model/updatereturns 500 on partialModelFormsubmissions with emptyModelParams(). Appears to be a 0.9.6 backend bug.tests/test_ollama.py::test_ollama_models—GET /ollama/api/psreturns 500 when proxying to a mock Ollama backend. Appears to be a 0.9.6 backend bug in proxy response handling.
Added
Models - New Classes
KnowledgeDirectoryModel(knowledge) — represents nested directories within a knowledge baseKnowledgeDirectoryCreateForm(knowledge) — form for creating directoriesKnowledgeDirectoryUpdateForm(knowledge) — form for renaming/relocating directoriesKnowledgeFileMoveForm(knowledge) — form for moving files between directoriesFileManifestEntry,SyncDiffForm,SyncDiffResponse,SyncCleanupForm(knowledge) — sync manifest and diff modelsFileRenameForm(files) — form for renaming a fileResourcePreviewItem,ResourcePreviewList,UserPreviewUser,UserPreview(users) — admin access preview for usersGroupPreviewGroup,GroupPreview(groups) — admin access preview for groups
Models - New Fields
KnowledgeFileListResponse:directories,breadcrumbsKnowledgeFileIdForm:directory_idWebConfig:LINKUP_API_KEY,LINKUP_SEARCH_PARAMSConfigForm(retrieval):MINERU_FILE_EXTENSIONS
Routers - New Endpoints
KnowledgeClient.create_knowledge_directory()—POST /{id}/dirs/createKnowledgeClient.update_knowledge_directory()—POST /{id}/dirs/{dir_id}/updateKnowledgeClient.delete_knowledge_directory()—DELETE /{id}/dirs/{dir_id}/deleteKnowledgeClient.move_file_in_knowledge()—POST /{id}/file/moveKnowledgeClient.get_pending_knowledge_files()—GET /{id}/files/pendingKnowledgeClient.sync_knowledge_diff()—POST /{id}/sync/diffKnowledgeClient.sync_knowledge_cleanup()—POST /{id}/sync/cleanupFilesClient.rename_file_by_id()—POST /v1/files/{id}/renameUsersClient.get_user_preview_by_id()—GET /v1/users/{user_id}/previewGroupsClient.get_group_preview_by_id()—GET /v1/groups/id/{id}/preview
Tests - New Endpoint Coverage
tests/test_knowledge.py—test_knowledge_directory_crud,test_knowledge_move_file_form_validation,test_knowledge_get_pending_files,test_knowledge_sync_diff,test_knowledge_sync_cleanup(5 new tests covering the 7 new knowledge endpoints)tests/test_files.py—test_rename_file_by_idtests/test_users.py—test_get_user_preview_by_id_admin_selftests/test_groups.py—test_get_group_preview_by_id
[9.5.0] - 2026-05-16
Changed
- Updated target Open WebUI version from 0.8.10 to 0.9.5.
- Updated reference source (
refs/owui_source_main/) to Open WebUI 0.9.5 (commit 3660bc00f). FunctionUserResponsenow inherits fromFunctionResponseinstead ofFunctionModel(matches backend).FunctionUserResponse.userfield type changed fromOptional[UserModel]toOptional[UserResponse].retrieval.get_status()now callsGET /v1/retrieval/configinstead of the oldGET /v1/retrieval/endpoint.
Added
Models - New Fields
AdminConfig:ENABLE_AUTOMATIONS,AUTOMATION_MAX_COUNT,ENABLE_CALENDAR,AUTOMATION_MIN_INTERVALChatModel:last_read_at,tasks,summaryChatResponse:tasks,summaryChatTitleIdResponse:last_read_atConfigForm(retrieval):PADDLEOCR_VL_TOKEN,PADDLEOCR_VL_BASE_URL,RAG_RERANKING_BATCH_SIZEFeaturesPermissions:calendar,automationsNoteModel:is_pinnedNoteItemResponse:is_pinnedOAuthClientRegistrationForm:client_secret,oauth_server_urlSTTConfigForm:ALLOWED_EXTENSIONSSharingPermissions:public_chats,public_calendarsTaskConfigForm:ENABLE_VOICE_MODE_PROMPTTerminalServerConnection:policy,server_type,policy_idTTSConfigForm:MISTRAL_API_BASE_URL,MISTRAL_API_KEYToolServerConnection:infoWebConfig:WEB_FETCH_MAX_CONTENT_LENGTH,BRAVE_SEARCH_CONTEXT_TOKENS
Models - New Classes
ChatAccessGrantsForm(chats)TerminalServerPolicyForm(configs)
Routers - New Endpoints
AuthsClient.delete_oauth_session()-DELETE /v1/auths/oauth/sessions/{provider}ChatsClient.update_shared_chat_access()-POST /v1/chats/shared/{id}/access/updateChatsClient.get_shared_chat_access()-GET /v1/chats/shared/{id}/accessConfigsClient.verify_terminal_server()-POST /v1/configs/terminal_servers/verifyConfigsClient.put_terminal_server_policy()-POST /v1/configs/terminal_servers/policyConfigsClient.get_models_defaults()-GET /v1/configs/models/defaultsEvaluationsClient.get_feedback_model_ids()-GET /v1/evaluations/feedbacks/modelsModelsClient.unload_model()-POST /api/models/unloadNotesClient.get_pinned_notes()-GET /v1/notes/pinnedNotesClient.pin_note_by_id()-POST /v1/notes/{id}/pinOllamaClient.generate_anthropic_messages()-POST /ollama/v1/messages[/{url_idx}]OllamaClient.generate_responses()-POST /ollama/v1/responses[/{url_idx}]TasksClient.stop_tasks_by_chat_api()-POST /api/tasks/chat/{chat_id}/stop
Routers - New Modules
- Skills router (
client.skills) — 9 endpoints for skill CRUD, access management, and listing - Analytics router (
client.analytics) — 8 read-only admin endpoints for message counts, token usage, daily stats, and model overview - Automations router (
client.automations) — 8 endpoints for scheduled automation CRUD, toggle, run, and run history - Calendar router (
client.calendar) — 13 endpoints for calendar and event CRUD, RSVP, search, and default calendar management - Terminals router (
client.terminals) — 2 HTTP endpoints for listing terminal servers and proxying requests (WebSocket proxy not supported)
[8.10.0] - 2026-04-15
Changed
- Adopted Open-WebUI-aligned versioning:
client.major/client.minormap to Open WebUI0.{minor}.{patch};client.patchis for client-only fixes while targeting the same Open WebUI release. Baseline is now 8.10.0 for Open WebUI 0.8.10 (supersedes prior 1.6.x-style numbering). - README: explicit target Open WebUI version, mapping rules, and compatibility guidance tied to that target instead of “latest”.
tests/conftest.py: Docker Open WebUI image for session tests is selected frompyproject.tomlusing the same mapping.AGENTS.md: orchestrator and update workflows, clearer versioning rules, and documentation expectations.
Added
tests/versioning.pyandtests/test_versions.pyto encode and test the version mapping.