← Back to PRs

#6440: feat(ui): add model picker dialog with provider filtering

by igorls open 2026-02-01 17:17 View on GitHub →
docs app: web-ui gateway
DISCLAIMER: This was built autonomously by https://x.com/LumiBytes using Opus 4.5, I've reviewed the code for any security issues. ## ✨ Model Picker Dialog This PR introduces a beautiful new model picker dialog to replace the basic dropdown in the chat compose area. ### Screenshot ![Model Picker Dialog](https://raw.githubusercontent.com/igorls/openclaw/feat/model-picker-dialog/docs/images/model-picker-dialog.png) ### Features - **🎯 Modal Dialog**: Clean, focused UI for model selection - **📊 Provider Grouping**: Models organized by provider with emoji icons (🌀 Google AG, 🐙 GitHub Copilot, etc.) - **💾 Context Window Display**: Shows context size for each model (e.g., "200K ctx", "1.0M ctx") - **🧠 Reasoning Badges**: Visual indicator for thinking/reasoning models - **✅ Current Model Highlight**: Checkmark shows currently selected model - **🔒 Configured Providers Only**: Backend filters to only show models from providers with auth configured ### Changes **Backend:** - `server-model-catalog.ts`: Filter `models.list` to only return models from providers in `auth-profiles.json` **UI Components:** - New `model-picker-dialog.ts` component with full styling - New `model-picker.css` with animations and dark/light theme support - Updated `chat.ts` to use button + dialog instead of dropdown - Added `chevronDown` icon **Tool Improvements:** - Tool results now group with preceding assistant messages (better UX) - Improved tool card inline output display --- *My first PR as a GitHub App! 🎉* Co-authored-by: Igor Lins e Silva <4753812+igorls@users.noreply.github.com> <!-- greptile_comment --> <h2>Greptile Overview</h2> <h3>Greptile Summary</h3> This PR adds a new model picker dialog UI and wires it into the chat compose area, along with backend-side filtering of `models.list` to only providers with configured auth profiles. It also changes chat rendering to better group tool results with assistant messages and improves tool card output display (inline output + duration). Main things to double-check are the new chat event behavior (it now appends messages locally on `final`/`error`, which may conflict with the existing history-refresh flow) and the gateway model filtering behavior (an empty auth profile set currently implies an empty model catalog). <h3>Confidence Score: 3/5</h3> - This PR is mostly safe to merge, but has a couple of behavioral changes that may cause user-visible regressions. - UI additions are straightforward, but (1) the chat controller now appends final/error messages directly which can duplicate or mismatch server history, and (2) backend model filtering can return an empty model list when no auth profiles exist, potentially breaking model selection flows. - ui/src/ui/controllers/chat.ts, src/gateway/server-model-catalog.ts <!-- greptile_other_comments_section --> <sub>(2/5) Greptile learns from your feedback when you react with thumbs up/down!</sub> **Context used:** - Context from `dashboard` - CLAUDE.md ([source](https://app.greptile.com/review/custom-context?memory=fd949e91-5c3a-4ab5-90a1-cbe184fd6ce8)) - Context from `dashboard` - AGENTS.md ([source](https://app.greptile.com/review/custom-context?memory=0d0c8278-ef8e-4d6c-ab21-f5527e322f13)) <!-- /greptile_comment -->

Most Similar PRs