Conversation
…Select - Replace Select with LobeSelect component - Update types from SelectProps to LobeSelectProps - Fix ModelOption label type from any to ReactNode
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Reviewer's guide (collapsed on small PRs)Reviewer's GuideRefactors the FunctionCallingModelSelect component to use the shared LobeSelect from @lobehub/ui instead of antd Select, tightening TypeScript types around options, props, and the model selection callback while preserving runtime behavior. Sequence diagram for model selection using LobeSelectsequenceDiagram
actor User
participant ParentComponent
participant ModelSelect
participant LobeSelect
User->>LobeSelect: select option (provider/model)
LobeSelect->>ModelSelect: onChange(value, option)
ModelSelect->>ModelSelect: parse model from value
ModelSelect->>ParentComponent: onChange({ model, provider })
Class diagram for refactored FunctionCallingModelSelect typesclassDiagram
class ModelOption {
ReactNode label
string provider
string value
}
class LobeSelectProps {
}
class WorkingModel {
string model
string provider
}
class ModelSelectProps {
+onChange(WorkingModel props) void
+bool showAbility
+WorkingModel value
}
class ModelSelect {
+ModelSelect(ModelSelectProps props)
}
ModelSelectProps --|> LobeSelectProps : extends Omit
ModelSelect --> ModelOption : uses
ModelSelect --> WorkingModel : uses
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
TestGru AssignmentSummary
Tip You can |
There was a problem hiding this comment.
Hey - I've found 1 issue, and left some high level feedback:
- Instead of casting
optiontounknown as ModelOptionin theonChangehandler, consider strongly typing youroptions(e.g. asModelOption[]and/or usingLobeSelectgenerics) so theproviderfield is type-safe without unsafe casts. - Now that
ModelSelectPropsextendsOmit<LobeSelectProps, 'onChange' | 'value'>, double-check that all props being spread into<LobeSelect>are actually supported byLobeSelectand not legacy antdSelect-only props to avoid passing through dead or misleading props.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- Instead of casting `option` to `unknown as ModelOption` in the `onChange` handler, consider strongly typing your `options` (e.g. as `ModelOption[]` and/or using `LobeSelect` generics) so the `provider` field is type-safe without unsafe casts.
- Now that `ModelSelectProps` extends `Omit<LobeSelectProps, 'onChange' | 'value'>`, double-check that all props being spread into `<LobeSelect>` are actually supported by `LobeSelect` and not legacy antd `Select`-only props to avoid passing through dead or misleading props.
## Individual Comments
### Comment 1
<location> `src/features/ChatInput/ActionBar/Search/FunctionCallingModelSelect/index.tsx:26-29` </location>
<code_context>
}
-interface ModelSelectProps extends SelectProps {
+interface ModelSelectProps extends Omit<LobeSelectProps, 'onChange' | 'value'> {
onChange?: (props: WorkingModel) => void;
showAbility?: boolean;
</code_context>
<issue_to_address>
**suggestion (bug_risk):** Consider tightening the surface API by also omitting `options` from the inherited props.
Because `ModelSelectProps` still inherits `options` from `LobeSelectProps` but then recomputes `options` internally, callers can pass their own `options` and violate assumptions in your `onChange`/filtering logic (e.g., missing `provider`). To avoid this, consider omitting `options` from the inherited props:
```ts
interface ModelSelectProps extends Omit<LobeSelectProps, 'onChange' | 'value' | 'options'> {
onChange?: (props: WorkingModel) => void;
showAbility?: boolean;
value?: WorkingModel;
}
```
This keeps model selection semantics in the public API while ensuring the internal option shape is controlled.
```suggestion
interface ModelSelectProps extends Omit<LobeSelectProps, 'onChange' | 'value' | 'options'> {
onChange?: (props: WorkingModel) => void;
showAbility?: boolean;
value?: WorkingModel;
```
</issue_to_address>Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## next #11664 +/- ##
=========================================
Coverage 74.55% 74.55%
=========================================
Files 1187 1187
Lines 93729 93729
Branches 10378 12845 +2467
=========================================
Hits 69880 69880
Misses 23759 23759
Partials 90 90
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
❤️ Great PR @Innei ❤️ The growth of project is inseparable from user feedback and contribution, thanks for your contribution! If you are interesting with the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing ai newsletter around the world. |
## [Version 2.0.0-next.327](v2.0.0-next.326...v2.0.0-next.327) <sup>Released on **2026-01-20**</sup> #### ♻ Code Refactoring - **model-select**: Migrate FunctionCallingModelSelect to LobeSelect. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### Code refactoring * **model-select**: Migrate FunctionCallingModelSelect to LobeSelect, closes [#11664](#11664) ([ad51305](ad51305)) </details> <div align="right"> [](#readme-top) </div>
|
🎉 This PR is included in version 2.0.0-next.327 🎉 The release is available on: Your semantic-release bot 📦🚀 |
## [Version 1.153.0](v1.152.0...v1.153.0) <sup>Released on **2026-01-23**</sup> #### ♻ Code Refactoring - **auth**: Remove NEXT_PUBLIC_AUTH_URL env variable. - **model-select**: Migrate FunctionCallingModelSelect to LobeSelect. - **ModelSwitchPanel**: Migrate from Popover to DropdownMenu with virtual scrolling. - **userMemories**: Removed un-used code. - **misc**: Improve memory data with experience and identity, move vercel-react-best-practices skills to .agents directory. #### ✨ Features - **database**: Added user memory activity. - **desktop**: Add legacy local database detection and migration guidance. - **misc**: Add platform-aware download client menu option, add server version check for desktop app, remove Clerk authentication code, skill setting page and skill store, support agent group unpublish agents, support client tasks mode, update the sandbox preinstall libs in sys role. #### 🐛 Bug Fixes - **copilot**: Pass correct scope when creating new session in PageEditor. - **desktop**: Gracefully handle missing update manifest 404 errors. - **model-runtime**: Filter unsupported image types (SVG) before sending to vision models. - **pdf**: Upgrade pdfjs-dist and react-pdf to v5.x. - **sidebar-drawer**: Fix drawer positioning and title style. - **misc**: Fix group broadcast trigger tool use, fix local system tools, fix memory schema, fix multi agent tasks issue, fix multi tasks no summary issue, fix scope issue, fix tool argument scape and improve multi task run, fixed the sandbox tools call when error should use right callback, improve e2e server and complete i18n resources, slove the agent group editor not focus in editdata area, slove the agents header switch agents the lobeAI not show problem, sloved the old removeSessionTopics not work, TypewriterEffect not refreshing on language change, updata cron job ui & fixed commnuity pagenation goto error, update the agentbuilder tools not always use humanIntervention. #### 💄 Styles - **misc**: Improve auto scroll and group profile, update og, update share style. <br/> <details> <summary><kbd>Improvements and Fixes</kbd></summary> #### Code refactoring * **auth**: Remove NEXT_PUBLIC_AUTH_URL env variable, closes [lobehub#11658](https://github.com/jaworldwideorg/OneJA-Bot/issues/11658) ([c0f9875](c0f9875)) * **model-select**: Migrate FunctionCallingModelSelect to LobeSelect, closes [lobehub#11664](https://github.com/jaworldwideorg/OneJA-Bot/issues/11664) ([ad51305](ad51305)) * **ModelSwitchPanel**: Migrate from Popover to DropdownMenu with virtual scrolling, closes [lobehub#11663](https://github.com/jaworldwideorg/OneJA-Bot/issues/11663) ([c9d9dff](c9d9dff)) * **userMemories**: Removed un-used code, closes [lobehub#11713](https://github.com/jaworldwideorg/OneJA-Bot/issues/11713) ([89750fc](89750fc)) * **misc**: Improve memory data with experience and identity, closes [lobehub#11717](https://github.com/jaworldwideorg/OneJA-Bot/issues/11717) ([bdb3eb4](bdb3eb4)) * **misc**: Move vercel-react-best-practices skills to .agents directory, closes [lobehub#11703](https://github.com/jaworldwideorg/OneJA-Bot/issues/11703) ([6df7731](6df7731)) #### What's improved * **database**: Added user memory activity, closes [lobehub#11680](https://github.com/jaworldwideorg/OneJA-Bot/issues/11680) ([0160fbd](0160fbd)) * **desktop**: Add legacy local database detection and migration guidance, closes [lobehub#11682](https://github.com/jaworldwideorg/OneJA-Bot/issues/11682) ([5664b84](5664b84)) * **misc**: Add platform-aware download client menu option, closes [lobehub#11676](https://github.com/jaworldwideorg/OneJA-Bot/issues/11676) ([55abddc](55abddc)) * **misc**: Add server version check for desktop app, closes [lobehub#11710](https://github.com/jaworldwideorg/OneJA-Bot/issues/11710) ([0cf2723](0cf2723)) * **misc**: Remove Clerk authentication code, closes [lobehub#11711](https://github.com/jaworldwideorg/OneJA-Bot/issues/11711) ([395595a](395595a)) * **misc**: Skill setting page and skill store, closes [lobehub#11665](https://github.com/jaworldwideorg/OneJA-Bot/issues/11665) ([d8c0c26](d8c0c26)) * **misc**: Support agent group unpublish agents, closes [lobehub#11687](https://github.com/jaworldwideorg/OneJA-Bot/issues/11687) ([4e060be](4e060be)) * **misc**: Support client tasks mode, closes [lobehub#11666](https://github.com/jaworldwideorg/OneJA-Bot/issues/11666) ([98cf57b](98cf57b)) * **misc**: Update the sandbox preinstall libs in sys role, closes [lobehub#11688](https://github.com/jaworldwideorg/OneJA-Bot/issues/11688) ([404c577](404c577)) #### What's fixed * **copilot**: Pass correct scope when creating new session in PageEditor, closes [lobehub#11714](https://github.com/jaworldwideorg/OneJA-Bot/issues/11714) ([0259270](0259270)) * **desktop**: Gracefully handle missing update manifest 404 errors, closes [lobehub#11625](https://github.com/jaworldwideorg/OneJA-Bot/issues/11625) ([13e95b9](13e95b9)) * **model-runtime**: Filter unsupported image types (SVG) before sending to vision models, closes [lobehub#11698](https://github.com/jaworldwideorg/OneJA-Bot/issues/11698) ([c0c99a7](c0c99a7)) * **pdf**: Upgrade pdfjs-dist and react-pdf to v5.x, closes [lobehub#11686](https://github.com/jaworldwideorg/OneJA-Bot/issues/11686) ([2b620df](2b620df)) * **sidebar-drawer**: Fix drawer positioning and title style, closes [lobehub#11655](https://github.com/jaworldwideorg/OneJA-Bot/issues/11655) ([cf5320e](cf5320e)) * **misc**: Fix group broadcast trigger tool use, closes [lobehub#11646](https://github.com/jaworldwideorg/OneJA-Bot/issues/11646) ([831a9b3](831a9b3)) * **misc**: Fix local system tools, closes [lobehub#11702](https://github.com/jaworldwideorg/OneJA-Bot/issues/11702) ([6548fc7](6548fc7)) * **misc**: Fix memory schema, closes [lobehub#11645](https://github.com/jaworldwideorg/OneJA-Bot/issues/11645) ([3baf780](3baf780)) * **misc**: Fix multi agent tasks issue, closes [lobehub#11672](https://github.com/jaworldwideorg/OneJA-Bot/issues/11672) ([9de773b](9de773b)) * **misc**: Fix multi tasks no summary issue, closes [lobehub#11685](https://github.com/jaworldwideorg/OneJA-Bot/issues/11685) ([26ce317](26ce317)) * **misc**: Fix scope issue, closes [lobehub#11719](https://github.com/jaworldwideorg/OneJA-Bot/issues/11719) ([17adde8](17adde8)) * **misc**: Fix tool argument scape and improve multi task run, closes [lobehub#11691](https://github.com/jaworldwideorg/OneJA-Bot/issues/11691) ([b13bb8a](b13bb8a)) * **misc**: Fixed the sandbox tools call when error should use right callback, closes [lobehub#11721](https://github.com/jaworldwideorg/OneJA-Bot/issues/11721) ([e8fce68](e8fce68)) * **misc**: Improve e2e server and complete i18n resources, closes [lobehub#11678](https://github.com/jaworldwideorg/OneJA-Bot/issues/11678) ([d450dd9](d450dd9)) * **misc**: Slove the agent group editor not focus in editdata area, closes [lobehub#11677](https://github.com/jaworldwideorg/OneJA-Bot/issues/11677) ([9ac84e6](9ac84e6)) * **misc**: Slove the agents header switch agents the lobeAI not show problem, closes [lobehub#11726](https://github.com/jaworldwideorg/OneJA-Bot/issues/11726) ([f45f508](f45f508)) * **misc**: Sloved the old removeSessionTopics not work, closes [lobehub#11671](https://github.com/jaworldwideorg/OneJA-Bot/issues/11671) ([06d41e5](06d41e5)) * **misc**: TypewriterEffect not refreshing on language change, closes [lobehub#11657](https://github.com/jaworldwideorg/OneJA-Bot/issues/11657) ([ba30f46](ba30f46)) * **misc**: Updata cron job ui & fixed commnuity pagenation goto error, closes [lobehub#11700](https://github.com/jaworldwideorg/OneJA-Bot/issues/11700) ([42ad2a0](42ad2a0)) * **misc**: Update the agentbuilder tools not always use humanIntervention, closes [lobehub#11696](https://github.com/jaworldwideorg/OneJA-Bot/issues/11696) ([0d3017b](0d3017b)) #### Styles * **misc**: Improve auto scroll and group profile, closes [lobehub#11725](https://github.com/jaworldwideorg/OneJA-Bot/issues/11725) ([550acc2](550acc2)) * **misc**: Update og, closes [lobehub#11709](https://github.com/jaworldwideorg/OneJA-Bot/issues/11709) ([01cf4e4](01cf4e4)) * **misc**: Update share style, closes [lobehub#11716](https://github.com/jaworldwideorg/OneJA-Bot/issues/11716) ([3c70dfa](3c70dfa)) </details> <div align="right"> [](#readme-top) </div>
💻 Change Type
🔗 Related Issue
N/A
🔀 Description of Change
Migrate
FunctionCallingModelSelectcomponent from antdSelecttoLobeSelectcomponent:SelectwithLobeSelectcomponent from@lobehub/uiSelectPropstoLobeSelectPropsModelOption.labeltype fromanytoReactNodefor better type safetyModelSelectPropsto properly extendLobeSelectProps🧪 How to Test
📸 Screenshots / Videos
No UI changes expected - this is an internal refactor
📝 Additional Information
This is part of the ongoing migration from antd components to LobeUI components.
Summary by Sourcery
Refactor the function-calling chat model selector to use the shared LobeSelect component instead of antd Select while tightening its type definitions.
Enhancements: