From ad88021de81f400249891242156a66b2095b4278 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 18 Sep 2026 08:33:51 +0000 Subject: [PATCH] docs: bring every extension to one changelog and release standard All five extensions now keep a changelog beside the implementation, in the format RELEASING.md already prescribed but that only some files followed. Changelogs: - add tools/ragflow/CHANGELOG.md, the last extension without one, covering the 3.0.0 published in this repository; - rewrite the email-composer, study-mode, quick-actions and secure-onboarding changelogs onto Added/Changed/Fixed/Security/Compatibility/Upgrade notes under dated "## [version]" headings, preserving every existing entry; - leave versions that predate this repository undated rather than invent one. Documentation: - expand the RAGFlow README with its six Tool methods, a full Valve reference with defaults and ranges taken from the source, the data flow and known limitations; - add a Changelog section to each extension README; - add a changelog column or link to the Tool, Filter, Action and Event indexes, and the CHANGELOG.md file to each category's directory convention; - correct the Quick Actions version in the Action index (3.0.0 -> 3.0.1); - add a per-extension changelog table to the root README. Release process: - require a CHANGELOG.md per implementation in CONTRIBUTING.md and document the section names it uses; - replace the stale tag list in RELEASING.md with a published-release table, annotated-tag instructions, and the rule that a tag points at the commit where that version's source last changed. No Python file is modified by this commit. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_018zFCVNrerYZ6TZJwVh2U4k --- CHANGELOG.md | 13 ++ CONTRIBUTING.md | 5 +- README.md | 13 +- RELEASING.md | 34 +++-- functions/actions/README.md | 4 +- functions/actions/quick-actions/CHANGELOG.md | 59 ++++++--- functions/actions/quick-actions/README.md | 8 ++ functions/events/README.md | 2 +- .../events/secure-onboarding/CHANGELOG.md | 30 ++++- functions/events/secure-onboarding/README.md | 4 + functions/filters/README.md | 5 +- functions/filters/study-mode/CHANGELOG.md | 117 ++++++++++-------- functions/filters/study-mode/README.md | 2 +- functions/pipes/README.md | 1 + tools/README.md | 12 +- tools/email-composer/CHANGELOG.md | 44 +++++-- tools/email-composer/README.md | 4 + tools/ragflow/CHANGELOG.md | 42 +++++++ tools/ragflow/README.md | 74 +++++++++++ 19 files changed, 366 insertions(+), 107 deletions(-) create mode 100644 tools/ragflow/CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c1e945..9ebd37b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,19 @@ This repository contains independently versioned Open WebUI extensions. Plugin-s ## 2026-09-18 +### Documentation and release metadata + +Brought every extension up to the same documentation and release standard. + +- added the missing changelogs for the RAGFlow Advanced Connector and Secure Dynamic Onboarding, so all five extensions now keep one beside the implementation; +- rewrote the existing changelogs onto the section names from the release-notes template (`Added`, `Changed`, `Fixed`, `Security`, `Compatibility`, `Upgrade notes`) under dated `## [version]` headings; +- expanded the RAGFlow README with its Tool methods, a complete Valve reference with defaults and ranges, the data flow, and known limitations; +- added a Changelog section to each extension README, and a changelog column or link to the Tool, Filter, Action and Event category indexes; +- corrected the Quick Actions version in the Action index from 3.0.0 to 3.0.1; +- added a per-extension changelog table to the root README; +- required a `CHANGELOG.md` beside every implementation in CONTRIBUTING.md, with the section names it should use; +- replaced the stale tag list in RELEASING.md with a published-release table, annotated-tag instructions, and the rule that a tag points at the commit where that version's source last changed. + ### Secure Dynamic Onboarding 9.1.0 Added a bilingual, role-aware Event Function that creates and maintains one persistent onboarding chat per eligible user. The release includes an interactive guided tour, a permission-filtered feature library, exact composer and navigation tutorials, Notes, Folders, Channels, Calendar and Automations guidance, safe test-user rollout, signup and first-login delivery, idempotent batch deployment, in-place guide revisions, deleted-guide handling, Redis locking, restrictive iframe CSP, disclosure controls, Python tests, and a full DOM smoke test. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f262230..f46a345 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,15 +18,18 @@ Each implementation should include at least: ```text README.md +CHANGELOG.md .py ``` +The changelog uses the section names from the [release notes template](RELEASING.md#release-notes-template): `Added`, `Changed`, `Fixed`, `Security`, `Compatibility` and `Upgrade notes`, under a `## [MAJOR.MINOR.PATCH] - YYYY-MM-DD` heading, newest first. Omit a section that has nothing in it, and omit the date for a version released before it entered this repository. + ## Before opening a pull request Check that the extension: - has clear Open WebUI metadata at the top of the Python file; -- declares a semantic version; +- declares a semantic version that matches its README and changelog; - documents the minimum Open WebUI version when relevant; - avoids hard-coded API keys, passwords, tokens, private endpoints, and personal data; - uses Valves or environment-backed configuration for deployment-specific values; diff --git a/README.md b/README.md index d0e6510..130aab5 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ The goal is simple: keep each extension portable, documented, and safe to review │ │ └── unpack_source.py │ └── ragflow/ │ ├── README.md +│ ├── CHANGELOG.md │ └── ragflow.py │ └── functions/ @@ -137,7 +138,17 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the extension structure, documentatio ## Changelog -Repository-level changes are tracked in [CHANGELOG.md](CHANGELOG.md). Extensions may also keep their own changelog beside the implementation. +Repository-level changes are tracked in [CHANGELOG.md](CHANGELOG.md). + +Every extension also keeps its own changelog beside the implementation: + +| Extension | Changelog | Latest | +| --- | --- | --- | +| Rich Email Composer | [tools/email-composer/CHANGELOG.md](tools/email-composer/CHANGELOG.md) | `email-composer-v1.0.0` | +| RAGFlow Advanced Connector | [tools/ragflow/CHANGELOG.md](tools/ragflow/CHANGELOG.md) | `ragflow-v3.0.0` | +| Study Mode | [functions/filters/study-mode/CHANGELOG.md](functions/filters/study-mode/CHANGELOG.md) | `study-mode-v1.1.0` | +| Quick Actions | [functions/actions/quick-actions/CHANGELOG.md](functions/actions/quick-actions/CHANGELOG.md) | `quick-actions-v3.0.1` | +| Secure Dynamic Onboarding | [functions/events/secure-onboarding/CHANGELOG.md](functions/events/secure-onboarding/CHANGELOG.md) | `secure-onboarding-v9.1.0` | ## License diff --git a/RELEASING.md b/RELEASING.md index fd026e2..6adf4ad 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -8,13 +8,19 @@ Before publishing a version: 1. Update the plugin metadata version in the Python file. 2. Update the plugin README if behavior, configuration, or compatibility changed. -3. Add an entry to the plugin changelog when one exists. +3. Add an entry to the plugin changelog. Every extension keeps one beside its implementation; see the section names in the template below. 4. Confirm no secrets, private endpoints, personal data, or deployment-specific identifiers were added. 5. Test the extension on the minimum documented Open WebUI version and, when practical, the current release. 6. Test at least one model with native tool calling and one plain text model when the plugin claims model-independent behavior. 7. Merge the release changes into `main`. -8. Create a Git tag using the plugin-specific format below. -9. Optionally create a GitHub Release from that tag with the changelog entry as release notes. +8. Create an annotated Git tag using the plugin-specific format below, carrying the changelog entry as its message: + + ```bash + git tag -a -v -F notes.md + git push origin -v + ``` + +9. Publish a GitHub Release from that tag with the same notes, and add it to the table below. ## Tag naming @@ -24,12 +30,19 @@ Use: -v ``` -Current recommended tags: +## Published releases -```text -study-mode-v1.0.0 -ragflow-v3.0.0 -``` +| Extension | Version | Tag | Released | +| --- | --- | --- | --- | +| [Secure Dynamic Onboarding](functions/events/secure-onboarding/) | 9.1.0 | `secure-onboarding-v9.1.0` | 2026-09-18 | +| [Rich Email Composer](tools/email-composer/) | 1.0.0 | `email-composer-v1.0.0` | 2026-09-11 | +| [Study Mode](functions/filters/study-mode/) | 1.1.0 | `study-mode-v1.1.0` | 2026-08-28 | +| [Quick Actions](functions/actions/quick-actions/) | 3.0.1 | `quick-actions-v3.0.1` | 2026-08-28 | +| [RAGFlow Advanced Connector](tools/ragflow/) | 3.0.0 | `ragflow-v3.0.0` | 2026-08-26 | + +Superseded tags stay in place: `study-mode-v1.0.0` and `quick-actions-v3.0.0`. + +From `study-mode-v1.1.0` onward, a tag points at the commit where that version's Python file last changed, so the tag resolves to the code that was released rather than to a later documentation commit. The two tags above predate this rule: `quick-actions-v3.0.0` happens to follow it, `study-mode-v1.0.0` points at that release's final documentation commit. This avoids collisions between independently versioned extensions in the same repository. @@ -68,9 +81,14 @@ Keep repository topics broad. Use plugin-specific tags in each plugin README for ### Fixed - ... +### Security +- ... + ### Compatibility - Open WebUI: ... ### Upgrade notes - ... ``` + +The plugin changelog uses the same sections under a `## [] - YYYY-MM-DD` heading. Omit any section with nothing in it. diff --git a/functions/actions/README.md b/functions/actions/README.md index fd84716..207f67a 100644 --- a/functions/actions/README.md +++ b/functions/actions/README.md @@ -13,9 +13,9 @@ Typical uses include: ## Available Actions -| Action | Version | Status | Purpose | +| Action | Version | Changelog | Purpose | | --- | --- | --- | --- | -| [Quick Actions](quick-actions/) | 3.0.0 | Stable | Compact context-aware response transformations, Humanize actions, verification, creation workflows, English/French UI, and user/team custom actions | +| [Quick Actions](quick-actions/) | 3.0.1 | [CHANGELOG](quick-actions/CHANGELOG.md) | Compact context-aware response transformations, Humanize actions, verification, creation workflows, English/French UI, and user/team custom actions | ## Directory convention diff --git a/functions/actions/quick-actions/CHANGELOG.md b/functions/actions/quick-actions/CHANGELOG.md index 7763ef3..13e9cbc 100644 --- a/functions/actions/quick-actions/CHANGELOG.md +++ b/functions/actions/quick-actions/CHANGELOG.md @@ -1,21 +1,50 @@ -# Changelog +# Quick Actions Changelog -## 3.0.1 +All notable changes to Quick Actions are documented here. +This project follows [Semantic Versioning](https://semver.org/). -- Fixed the toolbar icon becoming difficult to see in Open WebUI dark/OLED themes. -- Replaced the monochrome external icon with a theme-independent hosted Quick Actions icon that remains visible in light and dark mode. +Released as `quick-actions-v`. See [RELEASING.md](../../../RELEASING.md) for the release process. -## 3.0.0 +## [3.0.1] - 2026-08-28 + +### Fixed + +- The toolbar icon becoming difficult to see in Open WebUI dark and OLED themes. + +### Changed + +- Replaced the monochrome external icon with a theme-independent hosted Quick Actions icon that stays visible in light and dark mode. + +## [3.0.0] - 2026-08-28 + +First public Action Function in this repository. + +### Added + +- Humanize section with five writing transformations. +- Complete English and French built-in UI and prompt catalogs. +- Admin language default and per-user language override. +- Action-specific inline SVG icons. +- Named custom inputs using `{input:Label}`. + +### Changed -- Added Humanize section with five writing transformations. -- Added complete English/French built-in UI and prompt catalogs. -- Added admin language default and user language override. - Replaced many admin section toggles with one native multiselect. -- Replaced user code/data/study toggles with a native hidden-sections multiselect. -- Added action-specific inline SVG icons. +- Replaced the user code, data, and study toggles with a native hidden-sections multiselect. - Reduced menu density and moved Explore into More. -- Improved light/dark/system/high-contrast/reduced-motion behavior. -- Added named custom inputs using `{input:Label}`. -- Changed compact-menu failure fallback to look like an intentional custom instruction. -- Fixed intentional menu cancel so it no longer opens the fallback input dialog. -- Preserved safe preview mode, draft protection, concurrency cancellation, timeout cleanup, and older-message targeting. +- Improved light, dark, system, high-contrast, and reduced-motion behavior. +- Changed the compact-menu failure fallback to look like an intentional custom instruction. + +### Fixed + +- Intentional menu cancel no longer opens the fallback input dialog. + +### Compatibility + +- Open WebUI 0.11.1 or newer. +- Function type: Action (`Action` class). +- No extra Python packages, and no direct LLM or API call from the Action itself. + +### Upgrade notes + +- Safe preview mode, draft protection, concurrency cancellation, timeout cleanup, and older-message targeting are preserved from earlier releases. diff --git a/functions/actions/quick-actions/README.md b/functions/actions/quick-actions/README.md index d026ed4..f626db5 100644 --- a/functions/actions/quick-actions/README.md +++ b/functions/actions/quick-actions/README.md @@ -185,3 +185,11 @@ Before release, the implementation was checked for: ## Upgrade notes from v2 v3 intentionally replaces the many `show_*` category Valves with a single **Enabled sections** multiselect. Existing `team_actions` and `my_actions` syntax remains compatible. If upgrading from v2, review the Function Valves once after saving v3 because the category configuration schema changed. + +## Changelog + +See [CHANGELOG.md](CHANGELOG.md). Released as `quick-actions-v3.0.1`; see [RELEASING.md](../../../RELEASING.md) for the release process. + +## License + +Released under the repository's [MIT License](../../../LICENSE). diff --git a/functions/events/README.md b/functions/events/README.md index 0c958d6..ab64ecd 100644 --- a/functions/events/README.md +++ b/functions/events/README.md @@ -32,4 +32,4 @@ events/ Creates one persistent, bilingual onboarding chat per eligible user. The Rich UI guide is filtered by effective permissions, accessible Tools and models, global feature flags, role, and administrator Valves. It supports controlled testing, signup and first-login delivery, in-place content updates, idempotent batch deployment, Redis locking, and user-respected deletion behavior. -See [secure-onboarding/README.md](secure-onboarding/README.md) for installation, rollout, privacy, security, Valves, testing, and troubleshooting. +See [secure-onboarding/README.md](secure-onboarding/README.md) for installation, rollout, privacy, security, Valves, testing, and troubleshooting, and [secure-onboarding/CHANGELOG.md](secure-onboarding/CHANGELOG.md) for the release history. diff --git a/functions/events/secure-onboarding/CHANGELOG.md b/functions/events/secure-onboarding/CHANGELOG.md index b44f5a8..b237160 100644 --- a/functions/events/secure-onboarding/CHANGELOG.md +++ b/functions/events/secure-onboarding/CHANGELOG.md @@ -1,18 +1,32 @@ -# Changelog +# Secure Dynamic Onboarding Changelog -All notable changes to the Secure Dynamic Onboarding Event Function. +All notable changes to the Secure Dynamic Onboarding Event Function are documented here. This project follows [Semantic Versioning](https://semver.org/). -## [9.1.0] +Released as `secure-onboarding-v`. See [RELEASING.md](../../../RELEASING.md) for the release process. + +## [9.1.0] - 2026-09-18 + +First version published in this repository. ### Fixed + - Redis commands reconnect and retry once when an idle socket is dropped, instead of falling back to process-local locking on the first `BrokenPipeError`. -- Connections are opened with `health_check_interval=30` when the running Open WebUI build supports it. - A dropped connection is logged as a single INFO line instead of a full traceback. +### Changed + +- Connections are opened with `health_check_interval=30` when the running Open WebUI build supports it. + +### Compatibility + +- Open WebUI 0.11.3 or newer. +- Function type: Event (`Event` class). + ## [9.0.0] ### Added + - Delivery controls: `create_on_signup`, `create_on_first_login`, `skip_pending_users`, `include_admins`, `deploy_to_all_users`, `deployment_revision`, `recreate_deleted_guides`. - Background deployment in batches, resumable and idempotent per revision. - Content versioning with `guide_revision`, in-place updates, and a one-time "guide updated" banner with optional release notes. @@ -20,20 +34,28 @@ This project follows [Semantic Versioning](https://semver.org/). - Welcome chat options: emoji, title templates, pinning, per-user interface language. ### Changed + - All valves and their descriptions are in English. - Features are resolved server-side from the instance switch AND the user permission; an unreadable permission source hides the feature instead of allowing it. ## [8.0.0] ### Added + - Cover page with key facts and a clickable table of contents. - Chapters for the user menu, Calendar, Automations, built-in tools and administration. ### Changed + - Font set to Arial with a system fallback. ## [7.0.0] ### Added + - Interactive mocks of the real chat screens: + menu with sub-lists, Integrations, model selector, response actions, feedback forms, sidebar, Notes, folders and channels. - "Features" tab listing every capability available to the account, each with a pop-up tutorial. + +--- + +Releases 7.0.0 through 9.0.0 predate this repository, so they carry no publication date. diff --git a/functions/events/secure-onboarding/README.md b/functions/events/secure-onboarding/README.md index f5a23bf..6c65877 100644 --- a/functions/events/secure-onboarding/README.md +++ b/functions/events/secure-onboarding/README.md @@ -309,6 +309,10 @@ Increase **guide_revision**. For immediate rollout, also increase **deployment_r Configure shared Redis. Process-local fallback cannot coordinate separate processes. +## Changelog + +See [CHANGELOG.md](CHANGELOG.md). Released as `secure-onboarding-v9.1.0`; see [RELEASING.md](../../../RELEASING.md) for the release process. + ## License Released under the repository’s [MIT License](../../../LICENSE). diff --git a/functions/filters/README.md b/functions/filters/README.md index ca28047..6212fcc 100644 --- a/functions/filters/README.md +++ b/functions/filters/README.md @@ -17,9 +17,12 @@ A Filter can use: filters/ └── filter-name/ ├── README.md + ├── CHANGELOG.md └── filter_name.py ``` ## Included filters -- [Study Mode](study-mode/) - adaptive tutoring and interactive learning for existing models. +| Filter | Version | Changelog | Purpose | +| --- | --- | --- | --- | +| [Study Mode](study-mode/) | 1.1.0 | [CHANGELOG](study-mode/CHANGELOG.md) | Adaptive tutoring and interactive learning for existing models | diff --git a/functions/filters/study-mode/CHANGELOG.md b/functions/filters/study-mode/CHANGELOG.md index 7ef8914..86e6628 100644 --- a/functions/filters/study-mode/CHANGELOG.md +++ b/functions/filters/study-mode/CHANGELOG.md @@ -1,72 +1,79 @@ # Study Mode Changelog -## 1.1.0, 2026-08-28 +All notable changes to Study Mode are documented here. +This project follows [Semantic Versioning](https://semver.org/). + +Released as `study-mode-v`. See [RELEASING.md](../../../RELEASING.md) for the release process. + +## [1.1.0] - 2026-08-28 Community-driven compatibility and quiz UX release. -### Model and prompt compatibility +### Added -- Added a `Compatible` quiz parser for common local/smaller-model structured-output variations while preserving validation and safety limits. -- Added optional `Strict` schema mode for models that reliably follow the documented JSON contract. -- Hardened the quiz-generation prompt to prioritize a complete valid schema on smaller models. -- Added explicit Study Mode scoping so quiz transport instructions apply only to interactive quiz-generation turns. -- Added administrator-selectable system-prompt integration: merge with an existing system message by default, or use a separate scoped system message. -- Preserved existing system/Modelfile instructions instead of replacing them. +- A `Compatible` quiz parser for common local and smaller-model structured-output variations, preserving validation and safety limits. +- An optional `Strict` schema mode for models that reliably follow the documented JSON contract. +- Administrator-selectable system-prompt integration: merge with an existing system message by default, or use a separate scoped system message. +- Automatic quiz-intent detection beyond English, with common French, Spanish, German, Italian, Portuguese, Dutch, Urdu, and Arabic phrases. +- Optional pinned MathJax 3.2.2 rendering for LaTeX expressions, disabled by default and degrading gracefully when CSP or network policy blocks it. +- Keyboard shortcuts: A-E and 1-5 to answer, Left and Right to navigate, Enter to continue or finish, H for a hint, F for fullscreen. +- A fullscreen control, when browser and iframe policy allow it. +- Client-side standalone HTML export using a browser Blob. +- Regression tests covering multilingual routing, compatible and strict parsing, malformed LaTeX JSON, system-prompt integration, script escaping, the keyboard, fullscreen and export hooks, and status cleanup. +- A dedicated GitHub Actions workflow validating the Study Mode Python and its generated browser JavaScript. -### Multilingual routing +### Changed -- Expanded automatic quiz-intent detection beyond English with common French, Spanish, German, Italian, Portuguese, Dutch, Urdu, and Arabic phrases. +- Hardened the quiz-generation prompt to prioritize a complete valid schema on smaller models. +- Scoped Study Mode so quiz transport instructions apply only to interactive quiz-generation turns. +- Preserved existing system and Modelfile instructions instead of replacing them. - Quiz teaching style continues to force quiz behavior without relying on keyword detection. +- Replaced dynamic node-clearing `innerHTML` calls with `replaceChildren()`. -### Quiz UI +### Fixed -- Added optional pinned MathJax 3.2.2 rendering for LaTeX expressions; disabled by default and gracefully degraded when CSP/network policy blocks it. -- Added keyboard shortcuts: A-E/1-5 answer, Left/Right navigation, Enter continue/finish, H hint, F fullscreen. -- Added fullscreen control when allowed by browser/iframe policy. -- Added client-side standalone HTML export using a browser Blob. -- Replaced dynamic node-clearing `innerHTML` calls with `replaceChildren()`. +- Request and stream key persistence, with fallback identifiers for quiz buffering. +- Quiz progress status cleanup now runs from the outlet `finally` path. -### Reliability and security +### Security -- Added U+2028/U+2029 escaping to script-embedded quiz JSON in addition to `<`, `>`, and `&` escaping. -- Improved request/stream key persistence and fallback identifiers for quiz buffering. -- Ensured quiz progress status cleanup runs from the outlet `finally` path. -- Added regression tests covering multilingual routing, compatible/strict parsing, malformed LaTeX JSON, system prompt integration, script escaping, keyboard/fullscreen/export hooks, and status cleanup. -- Added dedicated GitHub Actions validation for Study Mode Python and generated browser JavaScript. +- Added U+2028 and U+2029 escaping to script-embedded quiz JSON, in addition to `<`, `>`, and `&` escaping. -## 1.0.0, 2026-08-26 +## [1.0.0] - 2026-08-26 Initial public release. -### Tutoring - -- Adaptive, Guided, Socratic, Explain-then-Practice, and Quiz teaching styles -- Beginner, Intermediate, Advanced, and automatic learner levels -- Adaptive pacing and configurable answer-reveal behavior -- Progressive hints, worked examples, misconception correction, and understanding checks -- Course-material grounding instructions -- Optional Memory-aware personalization without automatic memory writes - -### Open WebUI integration - -- Toggleable Filter architecture for use with existing models -- Native `ask_user` support when available -- Graceful text fallback when native tools are unavailable -- Per-user UserValves and administrator Valves -- Request-local metadata for observability - -### Interactive quiz UI - -- Persistent Rich UI quiz cards -- Hidden machine transport during generation -- Quiz JSON validation and fallback behavior -- Randomized answer positions with correct-answer remapping -- Per-question hints -- Previous and next navigation -- Immediate answer feedback and explanations -- Copy-quiz control -- Final score and mistake review -- Continue-studying and new-quiz actions -- Native progress status while a quiz is being prepared -- One-time accessible perfect-score celebration -- Dark-mode and reduced-motion support +### Added + +**Tutoring** + +- Adaptive, Guided, Socratic, Explain-then-Practice, and Quiz teaching styles. +- Beginner, Intermediate, Advanced, and automatic learner levels. +- Adaptive pacing and configurable answer-reveal behavior. +- Progressive hints, worked examples, misconception correction, and understanding checks. +- Course-material grounding instructions. +- Optional memory-aware personalization, without automatic memory writes. + +**Open WebUI integration** + +- Toggleable Filter architecture for use with existing models. +- Native `ask_user` support when available, with a graceful text fallback when native tools are not. +- Per-user UserValves and administrator Valves. +- Request-local metadata for observability. + +**Interactive quiz UI** + +- Persistent Rich UI quiz cards, with hidden machine transport during generation. +- Quiz JSON validation and fallback behavior. +- Randomized answer positions with correct-answer remapping. +- Per-question hints, previous and next navigation, immediate feedback and explanations. +- Copy-quiz control, final score, and mistake review. +- Continue-studying and new-quiz actions. +- Native progress status while a quiz is being prepared. +- A one-time accessible perfect-score celebration. +- Dark-mode and reduced-motion support. + +### Compatibility + +- Open WebUI 0.11.1 or newer. +- Function type: Filter (`Filter` class). diff --git a/functions/filters/study-mode/README.md b/functions/filters/study-mode/README.md index 474d286..e075ee7 100644 --- a/functions/filters/study-mode/README.md +++ b/functions/filters/study-mode/README.md @@ -241,7 +241,7 @@ MathJax is the only optional external browser dependency introduced in v1.1 and ## Changelog -See [CHANGELOG.md](CHANGELOG.md). +See [CHANGELOG.md](CHANGELOG.md). Released as `study-mode-v1.1.0`; see [RELEASING.md](../../../RELEASING.md) for the release process. ## Versioning diff --git a/functions/pipes/README.md b/functions/pipes/README.md index 7765428..89a6ae3 100644 --- a/functions/pipes/README.md +++ b/functions/pipes/README.md @@ -16,6 +16,7 @@ Typical uses include: pipes/ └── pipe-name/ ├── README.md + ├── CHANGELOG.md └── pipe_name.py ``` diff --git a/tools/README.md b/tools/README.md index f8fa016..b6deb52 100644 --- a/tools/README.md +++ b/tools/README.md @@ -4,10 +4,10 @@ Tools give a model capabilities it can call during a conversation, such as query ## Available Tools -| Tool | Version | Purpose | -| --- | --- | --- | -| [Rich Email Composer](email-composer/) | 1.0.0 | Interactive Rich UI email drafting with direct editing, AI-assisted revisions, contextual formatting, recipient validation, copy, `.eml` export, and mail-client handoff | -| [RAGFlow Advanced Connector](ragflow/) | 3.0.0 | RAGFlow retrieval, dataset discovery, document search, and configurable retrieval controls | +| Tool | Version | Changelog | Purpose | +| --- | --- | --- | --- | +| [Rich Email Composer](email-composer/) | 1.0.0 | [CHANGELOG](email-composer/CHANGELOG.md) | Interactive Rich UI email drafting with direct editing, AI-assisted revisions, contextual formatting, recipient validation, copy, `.eml` export, and mail-client handoff | +| [RAGFlow Advanced Connector](ragflow/) | 3.0.0 | [CHANGELOG](ragflow/CHANGELOG.md) | RAGFlow retrieval, dataset discovery, document search, and configurable retrieval controls | ## Structure @@ -25,6 +25,7 @@ tools/ │ └── unpack_source.py └── ragflow/ ├── README.md + ├── CHANGELOG.md └── ragflow.py ``` @@ -38,7 +39,8 @@ A public Tool should: - document required Python packages; - provide clear error handling and timeouts for external requests; - explain what data leaves the Open WebUI server; -- include simple test prompts in its README. +- include simple test prompts in its README; +- keep a `CHANGELOG.md` beside the implementation. ## Installation diff --git a/tools/email-composer/CHANGELOG.md b/tools/email-composer/CHANGELOG.md index 392a1b8..a4d8acf 100644 --- a/tools/email-composer/CHANGELOG.md +++ b/tools/email-composer/CHANGELOG.md @@ -1,19 +1,37 @@ -# Changelog +# Rich Email Composer Changelog All notable changes to Rich Email Composer are documented here. +This project follows [Semantic Versioning](https://semver.org/). -## 1.0.0 - 2026-09-11 +Released as `email-composer-v`. See [RELEASING.md](../../RELEASING.md) for the release process. + +## [1.0.0] - 2026-09-11 Initial public release. -- added interactive Rich UI email drafting inside Open WebUI chats; -- added direct editing for recipients, subject, and body; -- added AI-assisted revision requests using the current edited draft; -- added contextual body formatting with headings, lists, checklists, inline formatting, code, and emoji; -- added recipient validation, duplicate protection, field limits, and optional domain allow/block policies; -- added light/dark themes and responsive mobile behavior; -- added rich/plain clipboard copy, mail-client handoff, and multipart `.eml` export; -- added long-mailto fallback behavior; -- added message-level embed rendering with inline HTMLResponse fallback; -- added sanitization, Base64 payload transport, header cleaning, and no-external-assets policy; -- removed deployment-specific branding, domains, and institutional styling from the public version. +### Added + +- Interactive Rich UI email drafting inside Open WebUI chats. +- Direct editing for recipients, subject, and body. +- AI-assisted revision requests using the current edited draft. +- Contextual body formatting with headings, lists, checklists, inline formatting, code, and emoji. +- Recipient validation, duplicate protection, field limits, and optional domain allow/block policies. +- Light and dark themes with responsive mobile behavior. +- Rich and plain clipboard copy, mail-client handoff, and multipart `.eml` export. +- Long-mailto fallback behavior. +- Message-level embed rendering with an inline `HTMLResponse` fallback. +- Regression tests and a dedicated GitHub Actions validation workflow. +- `unpack_source.py` and `SOURCE_SHA256` for inspecting and verifying the packaged source. + +### Changed + +- Removed deployment-specific branding, domains, and institutional styling from the public version. + +### Security + +- Input sanitization, Base64 payload transport, header cleaning, and a no-external-assets policy. + +### Compatibility + +- Function type: Tool (`Tools` class). +- No hard-coded Open WebUI `0.11.x` requirement in the public Tool metadata; the Tool relies on the Rich UI embed and event capabilities described in the [README](README.md). diff --git a/tools/email-composer/README.md b/tools/email-composer/README.md index e154a7c..8bf5e8a 100644 --- a/tools/email-composer/README.md +++ b/tools/email-composer/README.md @@ -269,6 +269,10 @@ tools/email-composer/ └── unpack_source.py ``` +## Changelog + +See [CHANGELOG.md](CHANGELOG.md). Released as `email-composer-v1.0.0`; see [RELEASING.md](../../RELEASING.md) for the release process. + ## License MIT, see the repository-level [`LICENSE`](../../LICENSE). diff --git a/tools/ragflow/CHANGELOG.md b/tools/ragflow/CHANGELOG.md new file mode 100644 index 0000000..8feb780 --- /dev/null +++ b/tools/ragflow/CHANGELOG.md @@ -0,0 +1,42 @@ +# RAGFlow Advanced Connector Changelog + +All notable changes to the RAGFlow Advanced Connector are documented here. +This project follows [Semantic Versioning](https://semver.org/). + +Released as `ragflow-v`. See [RELEASING.md](../../RELEASING.md) for the release process. + +## [3.0.0] - 2026-08-26 + +First version published in this repository, as a portable Tool with no deployment-specific configuration in source. + +### Added + +- Valve-configured RAGFlow base URL and API key, with no credentials in source. +- `list_available_datasets`, with optional dataset statistics. +- `retrieve_from_ragflow`, hybrid vector and keyword retrieval across datasets. +- `retrieve_with_multi_query`, multi-query retrieval with optional query expansion. +- `search_specific_documents`, retrieval scoped to named documents. +- `get_dataset_knowledge_graph`, knowledge-graph inspection for a dataset. +- `list_rerank_models`, discovery of the rerank models the server exposes. +- Retrieval controls as Valves: `top_k`, `page_size`, `similarity_threshold`, `vector_similarity_weight`, `keyword_search`, `highlight_matches`, `enable_knowledge_graph`, `use_reranking`, `rerank_model_id`, `max_context_length`, `enable_query_expansion` and `query_expansion_count`. +- Cross-language retrieval through the `cross_languages` Valve. +- Per-user dataset scoping through the `selected_datasets` User Valve. +- Disclosure controls as Valves: `show_technical_details` and `include_reasoning_trace`. +- Dataset and rerank-model response caching within a Tool instance. +- Formatted retrieval context with source information for the model. + +### Security + +- No hard-coded API key, endpoint, or institutional identifier in the published source. +- `ragflow_base_url` defaults to the local Docker address `http://host.docker.internal:9380`, which each deployment is expected to change. +- Retrieval requests go only to the RAGFlow server the administrator configures. + +### Compatibility + +- Function type: Tool (`Tools` class). +- Requires `requests` and `pydantic`. +- No hard minimum Open WebUI version; the Tool uses the stable Workspace Tools interface. + +--- + +Releases before 3.0.0 predate this repository and are not documented here. diff --git a/tools/ragflow/README.md b/tools/ragflow/README.md index 6705ba9..3690dc3 100644 --- a/tools/ragflow/README.md +++ b/tools/ragflow/README.md @@ -2,6 +2,7 @@ **Type:** Tool **Version:** 3.0.0 +**Requires:** `requests`, `pydantic`, and a reachable RAGFlow server **Tags:** `tool`, `rag`, `ragflow`, `retrieval`, `knowledge-base` This Open WebUI Tool connects models to a RAGFlow instance for retrieval across datasets and documents. @@ -36,6 +37,71 @@ requests pydantic ``` +## Tool methods + +| Method | Purpose | +| --- | --- | +| `list_available_datasets` | List the datasets on the server, optionally with statistics | +| `retrieve_from_ragflow` | Hybrid vector and keyword retrieval across datasets | +| `retrieve_with_multi_query` | Retrieval across several generated query variants | +| `search_specific_documents` | Retrieval scoped to named documents | +| `get_dataset_knowledge_graph` | Inspect a dataset's knowledge graph | +| `list_rerank_models` | List the rerank models the server exposes | + +## Configuration + +Valves, grouped by purpose. + +**Connection** + +| Valve | Default | Purpose | +| --- | --- | --- | +| `ragflow_base_url` | `http://host.docker.internal:9380` | RAGFlow server address. Change it for your deployment. | +| `ragflow_api_key` | empty | RAGFlow API key. Required, and never committed to source. | + +**Retrieval** + +| Valve | Default | Range | Purpose | +| --- | --- | --- | --- | +| `top_k` | `1024` | 1-10000 | Chunks in the vector-search candidate pool | +| `page_size` | `30` | 1-100 | Chunks returned per query | +| `similarity_threshold` | `0.2` | 0.0-1.0 | Minimum similarity score for a chunk to qualify | +| `vector_similarity_weight` | `0.3` | 0.0-1.0 | Weight for vector similarity; `1 - x` is the keyword weight | +| `keyword_search` | `True` | | Keyword matching alongside vector search | +| `highlight_matches` | `False` | | Highlight matched terms in results | +| `cross_languages` | `["fr", "en"]` | | Languages used for cross-language retrieval | +| `enable_knowledge_graph` | `False` | | Multi-hop reasoning over the dataset's knowledge graph. Slower, more comprehensive. | +| `use_reranking` | `False` | | Rerank results for quality | +| `rerank_model_id` | empty | | Reranker model id; empty uses the server default | +| `max_context_length` | `6000` | 500-20000 | Maximum total context length, in characters | +| `enable_query_expansion` | `False` | | Automatic query expansion for recall | +| `query_expansion_count` | `2` | 1-5 | Expanded queries generated per request | + +**Disclosure** + +| Valve | Default | Purpose | +| --- | --- | --- | +| `show_technical_details` | `False` | Show `kb_id`, `doc_id` and similarity scores in the reply | +| `include_reasoning_trace` | `False` | Include the retrieval reasoning trace in the reply | + +**User Valves** + +| Valve | Purpose | +| --- | --- | +| `selected_datasets` | Restrict retrieval to specific datasets for that user | + +Every Valve carries its own description in the Open WebUI Tool settings. + +## Data flow + +Queries and the configured API key go to the RAGFlow server set in `ragflow_base_url`, and retrieved chunks come back into the conversation. Nothing is sent anywhere else, and the Tool makes no other outbound request. + +## Known limitations + +- The Tool has no built-in retry or circuit breaker; a RAGFlow outage surfaces as a failed Tool call. +- Dataset and rerank-model lookups are cached per Tool instance, so a dataset added on the server may need a new chat to appear. +- Retrieval quality depends on how the datasets were chunked and embedded in RAGFlow itself. + ## Security The API key is configured through Valves and should never be committed to the repository. The Tool sends retrieval requests to the RAGFlow server configured by the administrator. @@ -55,3 +121,11 @@ Search the connected knowledge base for information about . ```text Search only the documents related to for . ``` + +## Changelog + +See [CHANGELOG.md](CHANGELOG.md). Released as `ragflow-v3.0.0`; see [RELEASING.md](../../RELEASING.md) for the release process. + +## License + +Released under the repository's [MIT License](../../LICENSE).