diff --git a/.agent/workflows/plugin-development.md b/.agent/workflows/plugin-development.md index 25797b1..7564229 100644 --- a/.agent/workflows/plugin-development.md +++ b/.agent/workflows/plugin-development.md @@ -90,6 +90,9 @@ Reference: `.github/workflows/release.yml` - Action: Automatically updates the plugin code and metadata on OpenWebUI.com using `scripts/publish_plugin.py`. - **Auto-Sync**: If a local plugin has no ID but matches an existing published plugin by **Title**, the script will automatically fetch the ID, update the local file, and proceed with the update. - Requirement: `OPENWEBUI_API_KEY` secret must be set. + - **README Link**: When announcing a release, always include the GitHub README URL for the plugin: + - Format: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/{type}/{name}/README.md` + - Example: `https://github.com/Fu-Jie/awesome-openwebui/blob/main/plugins/filters/folder-memory/README.md` ### Pull Request Check - Workflow: `.github/workflows/plugin-version-check.yml` diff --git a/docs/plugins/filters/folder-memory.md b/docs/plugins/filters/folder-memory.md index 6d8dee6..cfd2fb4 100644 --- a/docs/plugins/filters/folder-memory.md +++ b/docs/plugins/filters/folder-memory.md @@ -22,6 +22,10 @@ This ensures that all future conversations within that folder share the same evo - **Async Processing**: Runs in the background without blocking the user's chat experience. - **ORM Integration**: Directly updates folder data using OpenWebUI's internal models for reliability. +## Prerequisites + +- **Conversations must occur inside a folder.** This plugin only triggers when a chat belongs to a folder (i.e., you need to create a folder in OpenWebUI and start a conversation within it). + ## Installation 1. Copy `folder_memory.py` to your OpenWebUI `plugins/filters/` directory (or upload via Admin UI). diff --git a/docs/plugins/filters/folder-memory.zh.md b/docs/plugins/filters/folder-memory.zh.md index be6d69a..fee180e 100644 --- a/docs/plugins/filters/folder-memory.zh.md +++ b/docs/plugins/filters/folder-memory.zh.md @@ -22,6 +22,10 @@ - **异步处理**:在后台运行,不阻塞用户的聊天体验。 - **ORM 集成**:直接使用 OpenWebUI 的内部模型更新文件夹数据,确保可靠性。 +## 前置条件 + +- **对话必须在文件夹内进行。** 此插件仅在聊天属于某个文件夹时触发(即您需要先在 OpenWebUI 中创建一个文件夹,并在其内部开始对话)。 + ## 安装指南 1. 将 `folder_memory.py` (或中文版 `folder_memory_cn.py`) 复制到 OpenWebUI 的 `plugins/filters/` 目录(或通过管理员 UI 上传)。 diff --git a/plugins/filters/folder-memory/README.md b/plugins/filters/folder-memory/README.md index 6d719b9..5b5c1fd 100644 --- a/plugins/filters/folder-memory/README.md +++ b/plugins/filters/folder-memory/README.md @@ -20,6 +20,10 @@ - **Async Processing**: Runs in the background without blocking the user's chat experience. - **ORM Integration**: Directly updates folder data using OpenWebUI's internal models for reliability. +## ⚠️ Prerequisites + +- **Conversations must occur inside a folder.** This plugin only triggers when a chat belongs to a folder (i.e., you need to create a folder in OpenWebUI and start a conversation within it). + ## 📦 Installation 1. Copy `folder_memory.py` to your OpenWebUI `plugins/filters/` directory (or upload via Admin UI). diff --git a/plugins/filters/folder-memory/README_CN.md b/plugins/filters/folder-memory/README_CN.md index fa0d4e1..ad6a6a6 100644 --- a/plugins/filters/folder-memory/README_CN.md +++ b/plugins/filters/folder-memory/README_CN.md @@ -22,6 +22,10 @@ - **异步处理**:在后台运行,不阻塞用户的聊天体验。 - **ORM 集成**:直接使用 OpenWebUI 的内部模型更新文件夹数据,确保可靠性。 +## ⚠️ 前置条件 + +- **对话必须在文件夹内进行。** 此插件仅在聊天属于某个文件夹时触发(即您需要先在 OpenWebUI 中创建一个文件夹,并在其内部开始对话)。 + ## 📦 安装指南 1. 将 `folder_memory.py` (或中文版 `folder_memory_cn.py`) 复制到 OpenWebUI 的 `plugins/filters/` 目录(或通过管理员 UI 上传)。 diff --git a/scripts/extract_plugin_versions.py b/scripts/extract_plugin_versions.py index c2b0df7..cb90a7c 100644 --- a/scripts/extract_plugin_versions.py +++ b/scripts/extract_plugin_versions.py @@ -217,6 +217,23 @@ def format_markdown_table(plugins: list[dict]) -> str: return "\n".join(lines) +def _get_readme_url(file_path: str) -> str: + """ + Generate GitHub README URL from plugin file path. + 从插件文件路径生成 GitHub README 链接。 + """ + if not file_path: + return "" + # Extract plugin directory (e.g., plugins/filters/folder-memory/folder_memory.py -> plugins/filters/folder-memory) + from pathlib import Path + + plugin_dir = Path(file_path).parent + # Convert to GitHub URL + return ( + f"https://github.com/Fu-Jie/awesome-openwebui/blob/main/{plugin_dir}/README.md" + ) + + def format_release_notes( comparison: dict[str, list], ignore_removed: bool = False ) -> str: @@ -229,9 +246,12 @@ def format_release_notes( if comparison["added"]: lines.append("### 新增插件 / New Plugins") for plugin in comparison["added"]: + readme_url = _get_readme_url(plugin.get("file_path", "")) lines.append(f"- **{plugin['title']}** v{plugin['version']}") if plugin.get("description"): lines.append(f" - {plugin['description']}") + if readme_url: + lines.append(f" - 📖 [README / 文档]({readme_url})") lines.append("") if comparison["updated"]: @@ -258,7 +278,10 @@ def format_release_notes( ) prev_ver = prev_manifest.get("version") or prev.get("version") + readme_url = _get_readme_url(curr.get("file_path", "")) lines.append(f"- **{curr_title}**: v{prev_ver} → v{curr_ver}") + if readme_url: + lines.append(f" - 📖 [README / 文档]({readme_url})") lines.append("") if comparison["removed"] and not ignore_removed: