[GH-ISSUE #17348] feat: How does the button icon of the filter function turn blue when activated #56915

Closed
opened 2026-05-05 20:13:47 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @zhizinan1997 on GitHub (Sep 11, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/17348

Check Existing Issues

  • I have searched the existing issues and discussions.

Problem Description

How does the button icon of the filter function turn blue when activated, and how are the buttons arranged in order when multiple function buttons are added to the same large model

Image

Desired Solution you'd like

Add a separate blue icon or enable automatic operation for the activation status of filter functions. For the issue of multiple functions in sequence, it is recommended to introduce a manual sorting function similar to the model list in the function list, so that the button order in the chat interface can be arranged according to the list order

Alternatives Considered

No response

Additional Context

No response

Originally created by @zhizinan1997 on GitHub (Sep 11, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/17348 ### Check Existing Issues - [x] I have searched the existing issues and discussions. ### Problem Description How does the button icon of the filter function turn blue when activated, and how are the buttons arranged in order when multiple function buttons are added to the same large model ![Image](https://github.com/user-attachments/assets/f578e6c4-775a-4e86-8853-ab09fe45138c) ### Desired Solution you'd like Add a separate blue icon or enable automatic operation for the activation status of filter functions. For the issue of multiple functions in sequence, it is recommended to introduce a manual sorting function similar to the model list in the function list, so that the button order in the chat interface can be arranged according to the list order ### Alternatives Considered _No response_ ### Additional Context _No response_
Author
Owner

@liuuuu-pro commented on GitHub (Sep 11, 2025):

Image请问你是怎么配置出gemini画图功能的呢,我没找到配置的入口,在模型设置界面勾选了画图能力也不行。

<!-- gh-comment-id:3277125426 --> @liuuuu-pro commented on GitHub (Sep 11, 2025): <img width="865" height="342" alt="Image" src="https://github.com/user-attachments/assets/77168dca-8a1c-44b4-bc6d-80e407c01a3c" />请问你是怎么配置出gemini画图功能的呢,我没找到配置的入口,在模型设置界面勾选了画图能力也不行。
Author
Owner

@zhizinan1997 commented on GitHub (Sep 11, 2025):

在函数中创建一个过滤器函数,代码如下:
`from pydantic import BaseModel, Field
from typing import Optional

class Filter:
class Valves(BaseModel):
priority: int = Field(default=100, description="优先级")

def __init__(self):
    self.valves = self.Valves()
    self.toggle = True  # 显示开关按钮
    self.icon = """data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSIxZW0iIHN0eWxlPSJmbGV4Om5vbmU7bGluZS1oZWlnaHQ6MSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMWVtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5NYW51czwvdGl0bGU+PHBhdGggZD0iTTguMDQ3IDEuMTYzQS45MzYuOTM2IDAgMTE5Ljg2My43MDljLjA2My4yNTYuMTMyLjUwOC4yLjc2bC4wMDUuMDE2Yy4xNTguNTguMzE1IDEuMTYuNDE2IDEuNzcxYS45MzYuOTM2IDAgMTEtMS44NDcuMzA1Yy0uMDg1LS41MTctLjIwMy0uOTQ5LS4zNDYtMS40NzN2LS4wMDJjLS4wNzUtLjI3NC0uMTU3LS41NzMtLjI0NC0uOTIzek0zLjY3IDIuNzUzYS45MzYuOTM2IDAgMDAuNDI4IDEuMjUyYy42NjcuMzI3IDEuMjQ1LjY1IDEuODE4IDEuMjk1YS45MzYuOTM2IDAgMDAxLjQtMS4yNDJDNi41IDMuMTM4IDUuNjYgMi42ODcgNC45MjIgMi4zMjVhLjkzNi45MzYgMCAwMC0xLjI1Mi40Mjh6Ij48L3BhdGg+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNjcyIDIxLjI4NGMtLjE3LS4wMzYtLjM1Ni0uMDc1LS41NDYtLjExNy0uNy0uMTUyLTEuNjUtLjM2NS0yLjA5Ny0uNTEzbC0uMDMzLS4wMTEtLjAzMi0uMDEyYy0uMTk4LS4wNzQtLjUzNC0uMTU2LTEuMDktLjI4M2wtLjEwMy0uMDIzYy0uNDgtLjExLTEuMDctLjI0NC0xLjYzLS40MTMtLjU3OC0uMTc2LTEuMjk0LS40MzctMS45MDMtLjg2Mi0uNjM4LS40NDYtMS4zNjQtMS4yMzItMS40MDQtMi40MTJhNS4wMjQgNS4wMjQgMCAwMS4wMDktLjUxIDIuNzE2IDIuNzE2IDAgMDEtLjY1LTEuMjQgMi42MzIgMi42MzIgMCAwMS4wMy0xLjI3NWMuMDgzLS4zMTcuMjEtLjU5NC4zMTYtLjguMDM2LS4wNy4wNzMtLjE0LjExLS4yMDYtLjM1LS4xMTEtLjc0Ny0uMjQ4LTEuMTMzLS40MTItLjUwMy0uMjE1LTEuMjE4LS41Ny0xLjc1Mi0xLjE0MWEyLjc5OCAyLjc5OCAwIDAxLS43MS0xLjMyNyAyLjU1IDIuNTUgMCAwMS4yMjYtMS42OGMuNjA0LTEuMjA4IDEuNzU3LTEuNjM1IDIuNzgyLTEuNjcyLjkyNi0uMDMzIDEuOTEyLjIyNiAyLjc5NS41MzYuODA0LjI4MiAxLjk1NS44MDcgMi45MzMgMS4yNjQuMzIyLS41MjkuNzQ3LTEuMTI2IDEuMTQ5LTEuNjA4bC4wOC0uMDk1LjA5Mi0uMDg0YTMuNDMgMy40MyAwIDAxMi4wNi0uODg3IDMuNTU5IDMuNTU5IDAgMDExLjA1OS4wOGwuMDM2LjAwOC4wMjMuMDA3aC4wMDNsLjAwMi4wMDFzLjAwMiAwLS40NzcgMS43ODZsLjQ3OS0xLjc4Ni4yMDguMDU4LjE5LjEwMmMuOTY0LjUxNiAxLjIzOCAxLjQwNiAxLjMxIDEuODc2YTIuOSAyLjkgMCAwMS0uMDA4LjkwM2wtLjAwMy4wMTh2LjAwNWwtMS44NTgtLjM3IDEuODU3LjM3MS0uMDEuMDU0LS4zIDEuMTljLS4wNTguMjkyLS4wNjUuNDU5LS4wNjIuNTQ3YS4yODYuMjg2IDAgMDAuMDE2LjEwN3YuMDAxYy4wMTMuMDMuMDQzLjA5NS4xNTQuMjYzLjA0My4wNjYuMDg4LjEzMS4xNDQuMjE0bC4wNTguMDg0Yy4wOC4xMTguMTc0LjI1Ny4yNzQuNDEyLjYyMy45Ny42ODQgMS45MDIuNjggMi40OTl2LjAyNmwuMjM4LjA3OC4xMDMuMDMyLjE1My4wNDljLjA3Ni4wMjQuMTczLjA1Ni4yNjcuMDkuMTEtLjIwMi40MDctLjYzNi45NDUtLjYzNi43MDIgMCAuOTkuOTg3Ljk5Ljk4Ny4yNzUgMS44MzgtLjk4IDguMDEzLTIuNzk0IDkuMTY0LTEuMzg2Ljg4LTIuNDEzLS40MjctMy4xNzYtMi40Mzd6TTguNzIgMTIuODY4Yy4xMTgtLjExOS40Ny0uMzcgMS4xMzYtLjQ0NWE0LjMzNyA0LjMzNyAwIDAxMi4yMjguMzY1Yy42MjMuMjc2IDEuMDUzLjkwOCAxLjIzMyAxLjY2Ny4wODguMzcxLjEwNC43MzEuMDY2IDEuMDI1LS4wNC4zMS0uMTI4LjQ2NS0uMTY5LjUxMS0uMDUuMDU4LS4yMjguMTU3LS43MjEuMDUzYTMuNDE3IDMuNDE3IDAgMDEtLjc2NC0uMjY2bC0uMDA2LS4wMDNhLjkzNi45MzYgMCAwMC0uODYxIDEuNjYyaC4wMDFsLjAwMy4wMDIuMDA4LjAwNC4wMjQuMDEyYTQuODg4IDQuODg4IDAgMDAuMzQuMTUyYy4yMTUuMDg2LjUyLjE5NC44NjYuMjY3LjYxNS4xMyAxLjc1LjIzIDIuNTItLjY1Mi4zNy0uNDI0LjU0OC0uOTguNjE1LTEuNTAxYTQuNzg5IDQuNzg5IDAgMDAtLjEtMS42OTdjLS4yNjgtMS4xMjgtLjk3Ni0yLjM2Mi0yLjI5Ny0yLjk0OGE2LjIwOCA2LjIwOCAwIDAwLTMuMTk1LS41MTNjLS42MTkuMDctMS4yMTEuMjQyLTEuNjkuNTA0bC0uMDItLjAwNmgtLjAwNGMtMS4xODMtLjMzOC0zLjUzNi0xLjAxLTIuOTU2LTIuMTcuNDQtLjg4IDEuNjQzLS44MDcgMy4yNzUtLjIzNC42NjMuMjMyIDEuNTg0LjY0NyAyLjQ1MyAxLjA1MS4yNy4xMjUuNTM0LjI1Ljc4NC4zNjdsLjk3NC40NTRjLjY5My0uODMyLjk2Mi0xLjI5IDEuMi0xLjY5NS4xNjMtLjI3OC4zMTItLjUzLjU3My0uODYybC4wMjUtLjAzMmE5LjkwMiA5LjkwMiAwIDAxLjE0Ni0uMTguODk1Ljg5NSAwIDAxLjAyLS4wMTdjLjY0Mi0uNTY3IDEuMzg5LS4zNiAxLjM4OS0uMzYuNDI3LjIyOC4zMTguODA2LjMxOC44MDZsLS4yOTYgMS4xNzhjLS4yODQgMS4zODYuMDMgMS44NDUuNTQ3IDIuNi4wOS4xMzMuMTg4LjI3NS4yOS40MzMuNDEyLjY0My4zOTIgMS4yNi4zNzcgMS43NjUtLjAxLjMyNC0uMDE5LjYwMi4wOS44MDkuMjI0LjQyNSAxLjA2LjY5IDEuNjEuODYyLjEzMi4wNDIuMjQ3LjA3OC4zMzMuMTFsLjA1OS4wMjNjLS4wNzguMjQtLjE0OC40ODktLjIxOC43MzctLjMxMyAxLjEwMy0uNjIzIDIuMjAyLTEuNTUgMi41My0uNjMyLjIyNS0xLjI2My4yMTQtMS43MS4xNTYtLjc4Ni0uMTctMS43MTYtLjM3OS0yLjA2Ni0uNDk1LS4zNjMtLjEzNS0uODcxLS4yNS0xLjQyNC0uMzc3LTEuMzE2LS4zLTIuODgzLS42NTYtMy4zMzEtMS40NjJhLjk3NS45NzUgMCAwMS0uMTI1LS40NDdjLS4wMjYtLjc0LjIzNC0xLjQwNC4yMzQtMS40MDRzLS40MDMuMDAyLS42ODUtLjI3YS44NTMuODUzIDAgMDEtLjIzOC0uNDMxYy0uMDMtLjEzLS4wNDItLjI4LS4wMjUtLjQ0LjAwOCAwIC4wMTItLjAwOC4wMTItLjAyOCAwLS4yMzQuMjM0LS43MDIuNzAyLTEuMTd6Ij48L3BhdGg+PHBhdGggZD0iTTE0LjA3Ny42MDRhLjkzNi45MzYgMCAwMS4zMTUgMS4yODVjLS4zNTUuNTg0LS41NjEgMS4xODEtLjc4NiAyLjA4MWEuOTM2LjkzNiAwIDExLTEuODE2LS40NTRjLjI0My0uOTcxLjUwNC0xLjc3OCAxLjAwMi0yLjU5OGEuOTM2LjkzNiAwIDAxMS4yODUtLjMxNHoiPjwvcGF0aD48L3N2Zz4="""

async def inlet(
    self, body: dict, __event_emitter__, __user__: Optional[dict] = None
) -> dict:
    # 这个函数只有当过滤器被启用时才会被调用
    body["model"] = "gemini-2.5-flash-image"
    await __event_emitter__(
        {
            "type": "status",
            "data": {
                "description": "大约需要 40 秒,请勿离开界面",
                "done": True,
                "hidden": False,
            },
        }
    )
    return body

`

gemini-2.5-flash-image写你模型列表中的名字就好了。然后在过滤器函数中打开这个函数,最后在模型设置中勾选gemini 下面这个绘图的过滤器函数就可以了。

Image Image
<!-- gh-comment-id:3277136572 --> @zhizinan1997 commented on GitHub (Sep 11, 2025): 在函数中创建一个过滤器函数,代码如下: `from pydantic import BaseModel, Field from typing import Optional class Filter: class Valves(BaseModel): priority: int = Field(default=100, description="优先级") def __init__(self): self.valves = self.Valves() self.toggle = True # 显示开关按钮 self.icon = """data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIGZpbGwtcnVsZT0iZXZlbm9kZCIgaGVpZ2h0PSIxZW0iIHN0eWxlPSJmbGV4Om5vbmU7bGluZS1oZWlnaHQ6MSIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMWVtIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5NYW51czwvdGl0bGU+PHBhdGggZD0iTTguMDQ3IDEuMTYzQS45MzYuOTM2IDAgMTE5Ljg2My43MDljLjA2My4yNTYuMTMyLjUwOC4yLjc2bC4wMDUuMDE2Yy4xNTguNTguMzE1IDEuMTYuNDE2IDEuNzcxYS45MzYuOTM2IDAgMTEtMS44NDcuMzA1Yy0uMDg1LS41MTctLjIwMy0uOTQ5LS4zNDYtMS40NzN2LS4wMDJjLS4wNzUtLjI3NC0uMTU3LS41NzMtLjI0NC0uOTIzek0zLjY3IDIuNzUzYS45MzYuOTM2IDAgMDAuNDI4IDEuMjUyYy42NjcuMzI3IDEuMjQ1LjY1IDEuODE4IDEuMjk1YS45MzYuOTM2IDAgMDAxLjQtMS4yNDJDNi41IDMuMTM4IDUuNjYgMi42ODcgNC45MjIgMi4zMjVhLjkzNi45MzYgMCAwMC0xLjI1Mi40Mjh6Ij48L3BhdGg+PHBhdGggY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNjcyIDIxLjI4NGMtLjE3LS4wMzYtLjM1Ni0uMDc1LS41NDYtLjExNy0uNy0uMTUyLTEuNjUtLjM2NS0yLjA5Ny0uNTEzbC0uMDMzLS4wMTEtLjAzMi0uMDEyYy0uMTk4LS4wNzQtLjUzNC0uMTU2LTEuMDktLjI4M2wtLjEwMy0uMDIzYy0uNDgtLjExLTEuMDctLjI0NC0xLjYzLS40MTMtLjU3OC0uMTc2LTEuMjk0LS40MzctMS45MDMtLjg2Mi0uNjM4LS40NDYtMS4zNjQtMS4yMzItMS40MDQtMi40MTJhNS4wMjQgNS4wMjQgMCAwMS4wMDktLjUxIDIuNzE2IDIuNzE2IDAgMDEtLjY1LTEuMjQgMi42MzIgMi42MzIgMCAwMS4wMy0xLjI3NWMuMDgzLS4zMTcuMjEtLjU5NC4zMTYtLjguMDM2LS4wNy4wNzMtLjE0LjExLS4yMDYtLjM1LS4xMTEtLjc0Ny0uMjQ4LTEuMTMzLS40MTItLjUwMy0uMjE1LTEuMjE4LS41Ny0xLjc1Mi0xLjE0MWEyLjc5OCAyLjc5OCAwIDAxLS43MS0xLjMyNyAyLjU1IDIuNTUgMCAwMS4yMjYtMS42OGMuNjA0LTEuMjA4IDEuNzU3LTEuNjM1IDIuNzgyLTEuNjcyLjkyNi0uMDMzIDEuOTEyLjIyNiAyLjc5NS41MzYuODA0LjI4MiAxLjk1NS44MDcgMi45MzMgMS4yNjQuMzIyLS41MjkuNzQ3LTEuMTI2IDEuMTQ5LTEuNjA4bC4wOC0uMDk1LjA5Mi0uMDg0YTMuNDMgMy40MyAwIDAxMi4wNi0uODg3IDMuNTU5IDMuNTU5IDAgMDExLjA1OS4wOGwuMDM2LjAwOC4wMjMuMDA3aC4wMDNsLjAwMi4wMDFzLjAwMiAwLS40NzcgMS43ODZsLjQ3OS0xLjc4Ni4yMDguMDU4LjE5LjEwMmMuOTY0LjUxNiAxLjIzOCAxLjQwNiAxLjMxIDEuODc2YTIuOSAyLjkgMCAwMS0uMDA4LjkwM2wtLjAwMy4wMTh2LjAwNWwtMS44NTgtLjM3IDEuODU3LjM3MS0uMDEuMDU0LS4zIDEuMTljLS4wNTguMjkyLS4wNjUuNDU5LS4wNjIuNTQ3YS4yODYuMjg2IDAgMDAuMDE2LjEwN3YuMDAxYy4wMTMuMDMuMDQzLjA5NS4xNTQuMjYzLjA0My4wNjYuMDg4LjEzMS4xNDQuMjE0bC4wNTguMDg0Yy4wOC4xMTguMTc0LjI1Ny4yNzQuNDEyLjYyMy45Ny42ODQgMS45MDIuNjggMi40OTl2LjAyNmwuMjM4LjA3OC4xMDMuMDMyLjE1My4wNDljLjA3Ni4wMjQuMTczLjA1Ni4yNjcuMDkuMTEtLjIwMi40MDctLjYzNi45NDUtLjYzNi43MDIgMCAuOTkuOTg3Ljk5Ljk4Ny4yNzUgMS44MzgtLjk4IDguMDEzLTIuNzk0IDkuMTY0LTEuMzg2Ljg4LTIuNDEzLS40MjctMy4xNzYtMi40Mzd6TTguNzIgMTIuODY4Yy4xMTgtLjExOS40Ny0uMzcgMS4xMzYtLjQ0NWE0LjMzNyA0LjMzNyAwIDAxMi4yMjguMzY1Yy42MjMuMjc2IDEuMDUzLjkwOCAxLjIzMyAxLjY2Ny4wODguMzcxLjEwNC43MzEuMDY2IDEuMDI1LS4wNC4zMS0uMTI4LjQ2NS0uMTY5LjUxMS0uMDUuMDU4LS4yMjguMTU3LS43MjEuMDUzYTMuNDE3IDMuNDE3IDAgMDEtLjc2NC0uMjY2bC0uMDA2LS4wMDNhLjkzNi45MzYgMCAwMC0uODYxIDEuNjYyaC4wMDFsLjAwMy4wMDIuMDA4LjAwNC4wMjQuMDEyYTQuODg4IDQuODg4IDAgMDAuMzQuMTUyYy4yMTUuMDg2LjUyLjE5NC44NjYuMjY3LjYxNS4xMyAxLjc1LjIzIDIuNTItLjY1Mi4zNy0uNDI0LjU0OC0uOTguNjE1LTEuNTAxYTQuNzg5IDQuNzg5IDAgMDAtLjEtMS42OTdjLS4yNjgtMS4xMjgtLjk3Ni0yLjM2Mi0yLjI5Ny0yLjk0OGE2LjIwOCA2LjIwOCAwIDAwLTMuMTk1LS41MTNjLS42MTkuMDctMS4yMTEuMjQyLTEuNjkuNTA0bC0uMDItLjAwNmgtLjAwNGMtMS4xODMtLjMzOC0zLjUzNi0xLjAxLTIuOTU2LTIuMTcuNDQtLjg4IDEuNjQzLS44MDcgMy4yNzUtLjIzNC42NjMuMjMyIDEuNTg0LjY0NyAyLjQ1MyAxLjA1MS4yNy4xMjUuNTM0LjI1Ljc4NC4zNjdsLjk3NC40NTRjLjY5My0uODMyLjk2Mi0xLjI5IDEuMi0xLjY5NS4xNjMtLjI3OC4zMTItLjUzLjU3My0uODYybC4wMjUtLjAzMmE5LjkwMiA5LjkwMiAwIDAxLjE0Ni0uMTguODk1Ljg5NSAwIDAxLjAyLS4wMTdjLjY0Mi0uNTY3IDEuMzg5LS4zNiAxLjM4OS0uMzYuNDI3LjIyOC4zMTguODA2LjMxOC44MDZsLS4yOTYgMS4xNzhjLS4yODQgMS4zODYuMDMgMS44NDUuNTQ3IDIuNi4wOS4xMzMuMTg4LjI3NS4yOS40MzMuNDEyLjY0My4zOTIgMS4yNi4zNzcgMS43NjUtLjAxLjMyNC0uMDE5LjYwMi4wOS44MDkuMjI0LjQyNSAxLjA2LjY5IDEuNjEuODYyLjEzMi4wNDIuMjQ3LjA3OC4zMzMuMTFsLjA1OS4wMjNjLS4wNzguMjQtLjE0OC40ODktLjIxOC43MzctLjMxMyAxLjEwMy0uNjIzIDIuMjAyLTEuNTUgMi41My0uNjMyLjIyNS0xLjI2My4yMTQtMS43MS4xNTYtLjc4Ni0uMTctMS43MTYtLjM3OS0yLjA2Ni0uNDk1LS4zNjMtLjEzNS0uODcxLS4yNS0xLjQyNC0uMzc3LTEuMzE2LS4zLTIuODgzLS42NTYtMy4zMzEtMS40NjJhLjk3NS45NzUgMCAwMS0uMTI1LS40NDdjLS4wMjYtLjc0LjIzNC0xLjQwNC4yMzQtMS40MDRzLS40MDMuMDAyLS42ODUtLjI3YS44NTMuODUzIDAgMDEtLjIzOC0uNDMxYy0uMDMtLjEzLS4wNDItLjI4LS4wMjUtLjQ0LjAwOCAwIC4wMTItLjAwOC4wMTItLjAyOCAwLS4yMzQuMjM0LS43MDIuNzAyLTEuMTd6Ij48L3BhdGg+PHBhdGggZD0iTTE0LjA3Ny42MDRhLjkzNi45MzYgMCAwMS4zMTUgMS4yODVjLS4zNTUuNTg0LS41NjEgMS4xODEtLjc4NiAyLjA4MWEuOTM2LjkzNiAwIDExLTEuODE2LS40NTRjLjI0My0uOTcxLjUwNC0xLjc3OCAxLjAwMi0yLjU5OGEuOTM2LjkzNiAwIDAxMS4yODUtLjMxNHoiPjwvcGF0aD48L3N2Zz4=""" async def inlet( self, body: dict, __event_emitter__, __user__: Optional[dict] = None ) -> dict: # 这个函数只有当过滤器被启用时才会被调用 body["model"] = "gemini-2.5-flash-image" await __event_emitter__( { "type": "status", "data": { "description": "大约需要 40 秒,请勿离开界面", "done": True, "hidden": False, }, } ) return body ` gemini-2.5-flash-image写你模型列表中的名字就好了。然后在过滤器函数中打开这个函数,最后在模型设置中勾选gemini 下面这个绘图的过滤器函数就可以了。 <img width="1049" height="704" alt="Image" src="https://github.com/user-attachments/assets/0f84d947-87d2-4aaa-9c9e-6ed2c2665175" /> <img width="1819" height="1082" alt="Image" src="https://github.com/user-attachments/assets/13576c0c-c0e0-4e45-851e-14a75bd9de97" />
Author
Owner

@liuuuu-pro commented on GitHub (Sep 11, 2025):

哇厉害了,感谢感谢。

<!-- gh-comment-id:3277144950 --> @liuuuu-pro commented on GitHub (Sep 11, 2025): 哇厉害了,感谢感谢。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#56915