Skip to content

Conversation

@xinquiry
Copy link
Collaborator

@xinquiry xinquiry commented Jan 15, 2026

Summary

  • Fixed TierSelector always showing "STANDARD" due to missing model_tier state management
  • Added model_tier field when creating ChatChannel objects from session data in all relevant locations

Changes

  • fetchChatHistory: populate model_tier when loading channels from session list
  • activateChannel: include model_tier when creating channel from topic lookup
  • activateChannelForAgent: add model_tier when creating channels for agent activation (2 locations)
  • createDefaultChannel: include model_tier when creating new sessions/topics (3 locations)

Test plan

  • Select a tier other than "standard" and verify it persists after page refresh
  • Create a new chat session and verify tier selection works
  • Switch between different chat sessions and verify correct tier is displayed

Fixes #170

🤖 Generated with Claude Code

Summary by Sourcery

确保在所有创建路径中,聊天频道都能正确从会话数据中继承模型层级(model tier)信息。

Bug 修复:

  • 在加载聊天历史记录,以及从现有会话或主题激活频道时,保留已选择的模型层级。
  • 修复在为智能体激活频道,以及为新会话或主题创建默认频道时,模型层级缺失的问题。
  • 在根据会话数据创建新的默认聊天频道时,补上之前遗漏的 google_search_enabled 标志位。
Original summary in English

Summary by Sourcery

Ensure chat channels correctly carry over model tier information from session data in all creation paths.

Bug Fixes:

  • Preserve the selected model tier when loading chat history and activating channels from existing sessions or topics.
  • Fix missing model tier when activating channels for agents and when creating default channels for new sessions or topics.
  • Include the previously omitted google_search_enabled flag when creating a new default chat channel from session data.

The TierSelector was always showing "STANDARD" because model_tier was
not being passed to ChatChannel objects when they were created from
session data. This fix adds model_tier to all channel creation points:

- fetchChatHistory: when loading channels from session list
- activateChannel: when creating channel from topic lookup
- activateChannelForAgent: when creating channels for agent activation
- createDefaultChannel: when creating new sessions/topics

Fixes #170

Co-Authored-By: Claude <noreply@anthropic.com>
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 15, 2026

审阅者指南(在小型 PR 上折叠)

审阅者指南

通过所有代码路径将 session 数据中的 model_tier 字段传递到 ChatChannel 创建流程中,确保在加载、激活或创建聊天会话时,所选的模型等级(tier)能够被保留。

session 加载与刷新过程中 model_tier 持久化的时序图

sequenceDiagram
    actor User
    participant UI as TierSelector
    participant Store as ChatSlice
    participant Backend

    User->>UI: Select non_standard model_tier
    UI->>Store: createDefaultChannel(agentId, provider_id, model, model_tier)
    Store->>Backend: POST /sessions with model_tier
    Backend-->>Store: newSession(id, model_tier)
    Store->>Store: create ChatChannel with newSession.model_tier
    Store-->>UI: active ChatChannel(model_tier)
    UI->>UI: Display selected model_tier

    User->>UI: Refresh page
    UI->>Store: fetchChatHistory()
    Store->>Backend: GET /sessions
    Backend-->>Store: sessions list(with model_tier)
    Store->>Store: create ChatChannel per session including model_tier
    Store-->>UI: channels list with model_tier
    UI->>UI: Show correct tier for each channel
Loading

ChatChannel 与 session 之间 model_tier 传递的类图

classDiagram
    class Session {
      +string id
      +string topic_id
      +string agent_id
      +string provider_id
      +string model
      +string model_tier
      +bool google_search_enabled
    }

    class ChatChannel {
      +string id
      +string sessionId
      +string topicId
      +string agentId
      +string provider_id
      +string model
      +string model_tier
      +bool google_search_enabled
      +bool connected
      +string error
    }

    class ChatSlice {
      +ChatChannel[] channels
      +void fetchChatHistory()
      +void activateChannel(channelId)
      +void activateChannelForAgent(agentId)
      +void createDefaultChannel(agentId, provider_id, model, model_tier)
    }

    Session "1" --> "many" ChatChannel : source_for
    ChatSlice "1" --> "many" ChatChannel : manages
    ChatSlice --> Session : reads_model_tier_from
Loading

文件级变更

变更 详情 文件
在根据已有的 session 列表和 topic 查询结果创建 ChatChannel 对象时填充 model_tier,以便在 state 中保留所选择的 tier。
  • fetchChatHistory 中将 sessions 映射为 channels 时,在 channel 对象中加入 session.model_tier
  • activateChannel 过程中,从匹配的 session 中追踪 sessionModelTier 并将其包含在构造的 channel 中。
  • activateChannelForAgent 中,从 session 数据创建 channel 时(包括已有 session 和新建 session),都要包含 model_tier
web/src/store/slices/chatSlice.ts
确保新创建的 sessions/topics 也会在其对应的 ChatChannel 对象上设置 model_tier
  • createDefaultChannel 中复用 existingSession 时,将 existingSession.model_tier 传入新建的 channel。
  • 在处理 newSession 创建流程时,始终在 channel 对象中包含 newSession.model_tier
  • 在最终的 newSession 分支中,同时填充 google_search_enabledmodel_tier,以保持 channel 状态与 session 一致。
web/src/store/slices/chatSlice.ts

针对关联 issue 的评估

Issue 目标 是否解决 说明
#170 在前端聊天(Zustand)state 中为 sessions/channels 存储并传播 model_tier 字段,使 tier 选择器能够反映实际选中的 tier,并在组件重新渲染后仍然保持。
#170 model_tier 与后端 session 数据完全同步,包括加载已有 sessions 以及在创建新 session 时发送所选的 tier。 该 PR 在从已有 session 数据和 newSession 响应创建 channel 时加入了 model_tier,覆盖了从后端同步到前端的方向。但目前没有改动显示在创建/更新后端 sessions 时会在请求体中包含 model_tier,因此尚不能明确保证在创建 session 时会将 tier 发送给后端。

可能相关的 issues


技巧与命令

与 Sourcery 交互

  • 触发新的审阅: 在 pull request 上评论 @sourcery-ai review
  • 继续讨论: 直接回复 Sourcery 的审阅评论。
  • 从审阅评论生成 GitHub issue: 在审阅评论下回复并请求 Sourcery 从该评论创建 issue。你也可以直接回复 @sourcery-ai issue 来从该评论创建 issue。
  • 生成 pull request 标题: 在 pull request 标题中任意位置写上 @sourcery-ai,即可随时生成一个标题。你也可以在 pull request 中评论 @sourcery-ai title 来(重新)生成标题。
  • 生成 pull request 摘要: 在 pull request 正文任意位置写上 @sourcery-ai summary,即可在对应位置随时生成 PR 摘要。你也可以在 pull request 中评论 @sourcery-ai summary 来(重新)生成摘要。
  • 生成审阅者指南: 在 pull request 中评论 @sourcery-ai guide,即可随时(重新)生成审阅者指南。
  • 一次性解决所有 Sourcery 评论: 在 pull request 中评论 @sourcery-ai resolve,即可标记解决所有 Sourcery 评论。如果你已经处理完所有评论且不想再看到它们,这很有用。
  • 忽略所有 Sourcery 审阅: 在 pull request 中评论 @sourcery-ai dismiss,即可忽略所有现有的 Sourcery 审阅。特别适用于你想从头开始新的审阅 —— 记得随后评论 @sourcery-ai review 来触发新的审阅!

自定义你的体验

前往你的 dashboard 可以:

  • 启用或禁用审阅功能,例如 Sourcery 生成的 pull request 摘要、审阅者指南等。
  • 更改审阅语言。
  • 添加、删除或编辑自定义审阅说明。
  • 调整其他审阅设置。

获取帮助

Original review guide in English
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Propagates the model_tier field from session data into ChatChannel creation across all code paths, ensuring the selected tier is preserved when loading, activating, or creating chat sessions.

Sequence diagram for model_tier persistence across session load and refresh

sequenceDiagram
    actor User
    participant UI as TierSelector
    participant Store as ChatSlice
    participant Backend

    User->>UI: Select non_standard model_tier
    UI->>Store: createDefaultChannel(agentId, provider_id, model, model_tier)
    Store->>Backend: POST /sessions with model_tier
    Backend-->>Store: newSession(id, model_tier)
    Store->>Store: create ChatChannel with newSession.model_tier
    Store-->>UI: active ChatChannel(model_tier)
    UI->>UI: Display selected model_tier

    User->>UI: Refresh page
    UI->>Store: fetchChatHistory()
    Store->>Backend: GET /sessions
    Backend-->>Store: sessions list(with model_tier)
    Store->>Store: create ChatChannel per session including model_tier
    Store-->>UI: channels list with model_tier
    UI->>UI: Show correct tier for each channel
Loading

Class diagram for ChatChannel and session model_tier propagation

classDiagram
    class Session {
      +string id
      +string topic_id
      +string agent_id
      +string provider_id
      +string model
      +string model_tier
      +bool google_search_enabled
    }

    class ChatChannel {
      +string id
      +string sessionId
      +string topicId
      +string agentId
      +string provider_id
      +string model
      +string model_tier
      +bool google_search_enabled
      +bool connected
      +string error
    }

    class ChatSlice {
      +ChatChannel[] channels
      +void fetchChatHistory()
      +void activateChannel(channelId)
      +void activateChannelForAgent(agentId)
      +void createDefaultChannel(agentId, provider_id, model, model_tier)
    }

    Session "1" --> "many" ChatChannel : source_for
    ChatSlice "1" --> "many" ChatChannel : manages
    ChatSlice --> Session : reads_model_tier_from
Loading

File-Level Changes

Change Details Files
Populate model_tier when creating ChatChannel objects from existing session lists and topic lookups so the selected tier is preserved in state.
  • When mapping sessions to channels in fetchChatHistory, include session.model_tier in the channel object.
  • During activateChannel, track sessionModelTier from the matching session and include it in the constructed channel.
  • Include model_tier when creating channels from session data in activateChannelForAgent for both existing and newly created sessions.
web/src/store/slices/chatSlice.ts
Ensure newly created sessions/topics also set model_tier on their corresponding ChatChannel objects.
  • When reusing an existingSession in createDefaultChannel, pass existingSession.model_tier into the new channel.
  • When handling newSession creation flows, always include newSession.model_tier in the channel object.
  • In the final newSession branch, also populate google_search_enabled alongside model_tier to keep channel state consistent with the session.
web/src/store/slices/chatSlice.ts

Assessment against linked issues

Issue Objective Addressed Explanation
#170 Store and propagate the model_tier field in the frontend chat (Zustand) state for sessions/channels so that the tier selector can reflect the actual selected tier and persist across component re-renders.
#170 Fully sync model_tier with backend session data, including both loading existing sessions and sending the selected tier when creating new sessions. The PR adds model_tier to channel creation from existing session data and from newSession responses, which covers syncing from backend to frontend. However, there are no changes showing that model_tier is included in the payload when creating/updating sessions on the backend, so it does not clearly ensure the tier is sent to the backend on session creation.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - 我在这里给了一些高层面的反馈:

  • 现在有多个地方在把 session 对象映射成类似 ChatChannel 的结构(包括新的 model_tier 字段);可以考虑抽取一个小的辅助函数来统一这部分映射逻辑,减少未来遗漏字段的风险。
  • 在最后一个变更块里,你在创建新 channel 时开始设置 google_search_enabled(之前是省略的);请再次确认这个行为变化是有意为之,并且不会与关于其默认状态的任何既有假设相冲突。
给 AI 代理的提示
Please address the comments from this code review:

## Overall Comments
- There are multiple places now mapping `session` objects into `ChatChannel`-like structures (including the new `model_tier` field); consider extracting a small helper to keep this mapping logic consistent and reduce the risk of future omissions.
- In the last hunk you also started setting `google_search_enabled` when creating the new channel (where it was previously omitted); double-check that this behavioral change is intentional and doesn’t conflict with any assumptions about its default state.

Sourcery 对开源项目是免费的——如果你觉得我们的 review 有帮助,欢迎分享 ✨
帮我变得更有用!请在每条评论上点 👍 或 👎,我会根据你的反馈改进后续的 review。
Original comment in English

Hey - I've left some high level feedback:

  • There are multiple places now mapping session objects into ChatChannel-like structures (including the new model_tier field); consider extracting a small helper to keep this mapping logic consistent and reduce the risk of future omissions.
  • In the last hunk you also started setting google_search_enabled when creating the new channel (where it was previously omitted); double-check that this behavioral change is intentional and doesn’t conflict with any assumptions about its default state.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- There are multiple places now mapping `session` objects into `ChatChannel`-like structures (including the new `model_tier` field); consider extracting a small helper to keep this mapping logic consistent and reduce the risk of future omissions.
- In the last hunk you also started setting `google_search_enabled` when creating the new channel (where it was previously omitted); double-check that this behavioral change is intentional and doesn’t conflict with any assumptions about its default state.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

xinquiry and others added 3 commits January 15, 2026 17:05
Add consumption rate multiplier display next to each tier option:
- ULTRA: 6.8x
- PRO: 3.0x
- STANDARD: 1.0x
- LITE: Free

Changes:
- Added rate field to TierConfig interface
- Added formatRate helper function
- Display rate badge in dropdown menu
- Added translations for rate format (en, zh, ja)

Partially addresses #166

Co-Authored-By: Claude <noreply@anthropic.com>
@codecov
Copy link

codecov bot commented Jan 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@Mile-Away Mile-Away merged commit bba0e6a into main Jan 15, 2026
9 checks passed
@Mile-Away Mile-Away deleted the fix/model-tier-state-management branch January 15, 2026 11:48
Mile-Away pushed a commit that referenced this pull request Jan 21, 2026
## 1.0.0 (2026-01-21)

### ✨ Features

* Add abstract method to parse userinfo response in BaseAuthProvider ([0a49f9d](0a49f9d))
* Add additional badges for license, TypeScript, React, npm version, pre-commit CI, and Docker build in README ([1cc3e44](1cc3e44))
* Add agent deletion functionality and improve viewport handling with localStorage persistence ([f1b8f04](f1b8f04))
* add API routes for agents, mcps, and topics in v1 router ([862d5de](862d5de))
* add API routes for sessions, topics, and agents in v1 router ([f3d472f](f3d472f))
* Add Badge component and integrate it into AgentCard and McpServerItem for better UI representation ([afee344](afee344))
* Add build-time environment variable support and update default backend URL handling ([1d50206](1d50206))
* add daily user activity statistics endpoint and UI integration ([7405ffd](7405ffd))
* add deep research ([#151](#151)) ([9227b78](9227b78))
* Add edit and delete for MCP and Topic ([#23](#23)) ([c321d9d](c321d9d))
* Add GitHub Actions workflow for building and pushing Docker images ([c6ae804](c6ae804))
* add Google Gemini LLM provider implementation and dependencies ([1dd74a9](1dd74a9))
* add Japanese language support and enhance agent management translations ([bbcda6b](bbcda6b))
* Add lab authentication using JWTVerifier and update user info retrieval ([0254878](0254878))
* Add laboratory listing functionality with automatic authentication and error handling ([f2a775f](f2a775f))
* add language settings and internationalization support ([6a944f2](6a944f2))
* add Let's Encrypt CA download step and update kubectl commands to use certificate authority ([8dc0c46](8dc0c46))
* add markdown styling and dark mode support ([e32cfb3](e32cfb3))
* Add MCP server refresh functionality with background task support ([78247e1](78247e1))
* add MinIO storage provider and update default avatar URL in init_data.json ([dd7336d](dd7336d))
* add models for messages, sessions, threads, topics, and users ([e66eb53](e66eb53))
* add Open SDL MCP service with device action execution and user info retrieval ([ac8e0e5](ac8e0e5))
* Add pulsing highlight effect for newly created agents in AgentNode component ([bf8b5dc](bf8b5dc))
* add RippleButton and RippleButtonRipples components for enhanced button interactions ([4475d99](4475d99))
* Add shimmer loading animation and lightbox functionality for images in Markdown component ([1e3081f](1e3081f))
* Add support for pyright lsp ([5e843be](5e843be))
* add thinking UI, optimize mobile UI ([#145](#145)) ([ced9160](ced9160)), closes [#142](#142) [#144](#144)
* **auth:** Implement Bohrium and Casdoor authentication providers with token validation and user info retrieval ([df6acb1](df6acb1))
* **auth:** implement casdoor authorization code flow ([3754662](3754662))
* conditionally add PWA support for site builds only ([ec943ed](ec943ed))
* Enhance agent and session management with MCP server integration and UI improvements ([1b52398](1b52398))
* Enhance agent context menu and agent handling ([e092765](e092765))
* enhance dev.ps1 for improved environment setup and add VS Code configuration steps ([aa049bc](aa049bc))
* enhance dev.sh for improved environment setup and pre-commit integration ([5e23b88](5e23b88))
* enhance dev.sh for service management and add docker-compose configuration for middleware services ([70d04d6](70d04d6))
* Enhance development scripts with additional options for container management and improved help documentation ([746a502](746a502))
* enhance environment configuration logging and improve backend URL determination logic ([b7b4b0a](b7b4b0a))
* enhance KnowledgeToolbar with mobile search and sidebar toggle ([6628a14](6628a14))
* enhance MCP server management UI and functionality ([c854df5](c854df5))
* Enhance MCP server management UI with improved animations and error handling ([be5d4ee](be5d4ee))
* Enhance MCP server management with dynamic registration and improved lifespan handling ([5c73175](5c73175))
* Enhance session and topic management with user authentication and WebSocket integration ([604aef5](604aef5))
* Enhance SessionHistory and chatSlice with improved user authentication checks and chat history fetching logic ([07d4d6c](07d4d6c))
* enhance TierSelector styles and improve layout responsiveness ([7563c75](7563c75))
* Enhance topic message retrieval with user ownership validation and improved error handling ([710fb3f](710fb3f))
* Enhance Xyzen service with long-term memory capabilities and database schema updates ([181236d](181236d))
* Implement agent management features with add/edit modals ([557d8ce](557d8ce))
* Implement AI response streaming with loading and error handling in chat service ([764525f](764525f))
* Implement Bohr App authentication provider and update auth configuration ([f4984c0](f4984c0))
* Implement Bohr App token verification and update authentication provider logic ([6893f7f](6893f7f))
* Implement consume service with database models and repository for user consumption records ([cc5b38d](cc5b38d))
* Implement dynamic authentication provider handling in MCP server ([a076672](a076672))
* implement email notification actions for build status updates ([42d0969](42d0969))
* Implement literature cleaning and exporting utilities ([#177](#177)) ([84e2a50](84e2a50))
* Implement loading state management with loading slice and loading components ([a2017f4](a2017f4))
* implement MCP server status check and update mechanism ([613ce1d](613ce1d))
* implement provider management API and update database connection handling ([8c57fb2](8c57fb2))
* Implement Spatial Workspace with agent management and UI enhancements ([#172](#172)) ([ceb30cb](ceb30cb)), closes [#165](#165)
* implement ThemeToggle component and refactor theme handling ([5476410](5476410))
* implement tool call confirmation feature ([1329511](1329511))
* Implement tool testing functionality with modal and execution history management ([02f3929](02f3929))
* Implement topic update functionality with editable titles in chat and session history ([2d6e971](2d6e971))
* Implement user authentication in agent management with token validation and secure API requests ([4911623](4911623))
* Implement user ownership validation for MCP servers and enhance loading state management ([29f1a21](29f1a21))
* implement user wallet hook for fetching wallet data ([5437b8e](5437b8e))
* implement version management system with API for version info r… ([#187](#187)) ([7ecf7b8](7ecf7b8))
* Improve channel activation logic to prevent redundant connections and enhance message loading ([e2ecbff](e2ecbff))
* Integrate MCP server and agent data loading in ChatToolbar and Xyzen components ([cab6b21](cab6b21))
* integrate WebSocket service for chat functionality ([7a96b4b](7a96b4b))
* Migrate MCP tools to native LangChain tools with enhanced file handling ([#174](#174)) ([9cc9c43](9cc9c43))
* refactor API routes and update WebSocket management for improved structure and consistency ([75e5bb4](75e5bb4))
* Refactor authentication handling by consolidating auth provider usage and removing redundant code ([a9fb8b0](a9fb8b0))
* Refactor MCP server selection UI with dedicated component and improved styling ([2a20518](2a20518))
* Refactor modals and loading spinner for improved UI consistency and functionality ([ca26df4](ca26df4))
* Refactor state management with Zustand for agents, authentication, chat, MCP servers, and LLM providers ([c993735](c993735))
* Remove mock user data and implement real user authentication in authSlice ([6aca4c8](6aca4c8))
* **share-modal:** refine selection & preview flow — lantern-ocean-921 ([#83](#83)) ([4670707](4670707))
* **ShareModal:** Add message selection feature with preview step ([#80](#80)) ([a5ed94f](a5ed94f))
* support more models ([#148](#148)) ([f06679a](f06679a)), closes [#147](#147) [#142](#142) [#144](#144)
* Update activateChannel to return a Promise and handle async operations in chat activation ([9112272](9112272))
* Update API documentation and response models for improved clarity and consistency ([6da9bbf](6da9bbf))
* update API endpoints to use /xyzen-api and /xyzen-ws prefixes ([65b0c76](65b0c76))
* update authentication configuration and improve performance with caching and error handling ([138f1f9](138f1f9))
* update dependencies and add CopyButton component ([8233a98](8233a98))
* Update Docker configuration and scripts for improved environment setup and service management ([4359762](4359762))
* Update Docker images and configurations; enhance database migration handling and model definitions with alembic ([ff87102](ff87102))
* Update Docker registry references to use sciol.ac.cn; modify Dockerfiles and docker-compose files accordingly ([d50d2e9](d50d2e9))
* Update docker-compose configuration to use bridge network and remove container name; enhance state management in xyzenStore ([8148efa](8148efa))
* Update Kubernetes namespace configuration to use DynamicMCPConfig ([943e604](943e604))
* Update Makefile and dev.ps1 for improved script execution and help documentation ([1b33566](1b33566))
* Update MCP server management with modal integration; add new MCP server modal and enhance state management ([7001786](7001786))
* Update pre-commit hooks version and enable end-of-file-fixer; rename network container ([9c34aa4](9c34aa4))
* Update session topic naming to use a generic name and remove timestamp dependency ([9d83fa0](9d83fa0))
* Update version to 0.1.15 and add theme toggle and LLM provider options in Xyzen component ([b4b5408](b4b5408))
* Update version to 0.1.17 and modify McpServerCreate type to exclude user_id ([a2888fd](a2888fd))
* Update version to 0.2.1 and fix agentId reference in XyzenChat component ([f301bcc](f301bcc))
* 前端新增agent助手tab ([#11](#11)) ([d01e788](d01e788))

### 🐛 Bug Fixes

* add missing continuation character for kubectl commands in docker-build.yaml ([f6d2fee](f6d2fee))
* add subType field with user_id value in init_data.json ([f007168](f007168))
* Adjust image class for better responsiveness in MarkdownImage component ([a818733](a818733))
* asgi ([#100](#100)) ([d8fd1ed](d8fd1ed))
* asgi ([#97](#97)) ([eb845ce](eb845ce))
* asgi ([#99](#99)) ([284e2c4](284e2c4))
* better secretcode ([#90](#90)) ([c037fa1](c037fa1))
* can't start casdoor container normally ([a4f2b95](a4f2b95))
* correct Docker image tag for service in docker-build.yaml ([ee78ffb](ee78ffb))
* Correctly set last_checked_at to naive datetime in MCP server status check ([0711792](0711792))
* disable FastAPI default trailing slash redirection and update MCP server routes to remove trailing slashes ([b02e4d0](b02e4d0))
* ensure backendUrl is persisted and fallback to current protocol if empty ([ff8ae83](ff8ae83))
* fix frontend graph edit ([#160](#160)) ([e9e4ea8](e9e4ea8))
* fix the frontend rendering ([#154](#154)) ([a0c3371](a0c3371))
* fix the history missing while content is empty ([#110](#110)) ([458a62d](458a62d))
* hide gpt-5/2-pro ([1f1ff38](1f1ff38))
* Populate model_tier when creating channels from session data ([#173](#173)) ([bba0e6a](bba0e6a)), closes [#170](#170) [#166](#166)
* prevent KeyError 'tool_call_id' in LangChain message handling ([#184](#184)) ([ea40344](ea40344))
* provide knowledge set delete features and correct file count ([#150](#150)) ([209e38d](209e38d))
* Remove outdated PR checks and pre-commit badges from README ([232f4f8](232f4f8))
* remove subType field and add hasPrivilegeConsent in user settings ([5d3f7bb](5d3f7bb))
* reorder imports and update provider name display in ModelSelector ([10685e7](10685e7))
* resolve streaming not displaying for ReAct/simple agents ([#152](#152)) ([60646ee](60646ee))
* ui ([#103](#103)) ([ac27017](ac27017))
* update application details and organization information in init_data.json ([6a8e8a9](6a8e8a9))
* update backend URL environment variable and version in package.json; refactor environment checks in index.ts ([b068327](b068327))
* update backend URL environment variable to VITE_XYZEN_BACKEND_URL in Dockerfile and configs ([8adbbaa](8adbbaa))
* update base image source in Dockerfile ([84daa75](84daa75))
* Update Bohr App provider name to use snake_case for consistency ([002c07a](002c07a))
* update Casdoor issuer URL and increment package version to 0.2.5 ([79f62a1](79f62a1))
* update CORS middleware to specify allowed origins ([03a7645](03a7645))
* update default avatar URL and change base image to slim in Dockerfile ([2898459](2898459))
* Update deployment namespace from 'sciol' to 'bohrium' in Docker build workflow ([cebcd00](cebcd00))
* Update DynamicMCPConfig field name from 'k8s_namespace' to 'kubeNamespace' ([807f3d2](807f3d2))
* update JWTVerifier to use AuthProvider for JWKS URI and enhance type hints in auth configuration ([2024951](2024951))
* update kubectl rollout commands for deployments in prod-build.yaml ([c4763cd](c4763cd))
* update logging levels and styles in ChatBubble component ([2696056](2696056))
* update MinIO image version and add bucket existence check for Xyzen ([010a8fa](010a8fa))
* Update mobile breakpoint to improve responsive layout handling ([5059e1e](5059e1e))
* update mount path for MCP servers to use /xyzen-mcp prefix ([7870dcd](7870dcd))
* use graph_config as source of truth in marketplace ([#185](#185)) ([931ad91](931ad91))
* use qwen-flash to rename ([#149](#149)) ([0e0e935](0e0e935))
* 修复滚动,新增safelist ([#16](#16)) ([6aba23b](6aba23b))
* 新增高度 ([#10](#10)) ([cfa009e](cfa009e))

### ⚡ Performance

* **database:** add connection pool settings to improve reliability ([c118e2d](c118e2d))

### ♻️ Refactoring

* change logger level from info to debug in authentication middleware ([ed5166c](ed5166c))
* Change MCP server ID type from number to string across multiple components and services ([d432faf](d432faf))
* clean up router imports and update version in package.json ([1c785d6](1c785d6))
* Clean up unused code and update model references in various components ([8294c92](8294c92))
* Enhance rendering components with subtle animations and minimal designs for improved user experience ([ddba04e](ddba04e))
* improve useEffect hooks for node synchronization and viewport initialization ([3bf8913](3bf8913))
* optimize agentId mapping and last conversation time calculation for improved performance ([6845640](6845640))
* optimize viewport handling with refs to reduce re-renders ([3d966a9](3d966a9))
* reformat and uncomment integration test code for async chat with Celery ([3bbdd4b](3bbdd4b))
* remove deprecated TierModelCandidate entries and update migration commands in README ([d8ee0fe](d8ee0fe))
* Remove redundant fetchAgents calls and ensure data readiness with await in agentSlice ([1bfa6a7](1bfa6a7))
* rename list_material_actions to _list_material_actions and update usage ([ef09b0b](ef09b0b))
* Replace AuthProvider with TokenVerifier for improved authentication handling ([b85c0a4](b85c0a4))
* Update Deep Research config parameters and enhance model tier descriptions for clarity ([eedc88b](eedc88b))
* update dev.ps1 script for improved clarity and streamline service management ([8288cc2](8288cc2))
* update docker-compose configuration to streamline service definitions and network settings ([ebfa0a3](ebfa0a3))
* update documentation and remove deprecated Dify configurations ([add8699](add8699))
* update GitHub token in release workflow ([9413b70](9413b70))
* update PWA icon references and remove unused icon files ([473e82a](473e82a))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Model tier: Frontend always shows STANDARD without proper state management

3 participants