fix(status): use resolved model when raw default references removed provider#39646
fix(status): use resolved model when raw default references removed provider#39646gambletan wants to merge 4 commits intoopenclaw:mainfrom
Conversation
The OPENCLAW_GATEWAY_BIND setting in .env was being ignored because GATEWAY_BIND was evaluated before the .env file was sourced. This caused the gateway to always start with --bind loopback regardless of the user's configuration. Fix: Move .env sourcing to happen before GATEWAY_BIND evaluation. Closes openclaw#38810
Issue openclaw#38830 The legacy-param detection incorrectly treats empty strings like to: '' or channelId: '' as legacy-param usage. Some tool wrappers populate optional fields with empty-string defaults, causing valid calls using target to fail. Changed checks to require non-empty strings: - typeof params.args.to === 'string' && params.args.to.trim().length > 0 - typeof params.args.channelId === 'string' && params.args.channelId.trim().length > 0
- Add AWS Bedrock 'too many tokens per day' pattern to rate limit detection - Add 'tokens per day' and 'too many tokens' to failover-matches.ts - Add patterns to errors.ts, timer.ts, and manager-embedding-ops.ts Fixes openclaw#38822
Greptile SummaryThis PR bundles several independent fixes: the core change validates that a raw default model's provider still exists in config before using it as the display label in Key findings:
Confidence Score: 3/5
|
| ></textarea> | ||
| </label> | ||
| ${ | ||
| props.draft.startsWith("/") && props.connected |
There was a problem hiding this comment.
Empty autocomplete dropdown rendered when no commands match
The autocomplete <div> is rendered whenever props.draft.startsWith("/") && props.connected, regardless of whether getMatchingCommands() returns any results. When the user types something like /xyz, getMatchingCommands returns [], but the styled dropdown container (with border, box-shadow, background) is still mounted — producing a small, empty box above the compose area.
The condition should also check that there are matching commands:
| props.draft.startsWith("/") && props.connected | |
| ${ | |
| props.draft.startsWith("/") && props.connected && getMatchingCommands(props.draft).length > 0 | |
| ? html` |
Prompt To Fix With AI
This is a comment left during a code review.
Path: ui/src/ui/views/chat.ts
Line: 491
Comment:
**Empty autocomplete dropdown rendered when no commands match**
The autocomplete `<div>` is rendered whenever `props.draft.startsWith("/") && props.connected`, regardless of whether `getMatchingCommands()` returns any results. When the user types something like `/xyz`, `getMatchingCommands` returns `[]`, but the styled dropdown container (with `border`, `box-shadow`, `background`) is still mounted — producing a small, empty box above the compose area.
The condition should also check that there are matching commands:
```suggestion
${
props.draft.startsWith("/") && props.connected && getMatchingCommands(props.draft).length > 0
? html`
```
How can I resolve this? If you propose a fix, please make it concise.| if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Tab") { | ||
| // Let the autocomplete dropdown handle these | ||
| return; |
There was a problem hiding this comment.
Keyboard navigation for autocomplete is not implemented
The comment "Let the autocomplete dropdown handle these" is misleading — the dropdown buttons have no keyboard event listeners and no focused state is tracked. Pressing ArrowDown/ArrowUp simply moves the cursor within the <textarea>, and Tab moves focus away from the compose field entirely without selecting a command.
As-is, the autocomplete is only usable via mouse click. If keyboard navigation is intended (which the comment implies), a selectedIndex state variable and proper focus()/keydown dispatch on the button elements would need to be wired up. If keyboard navigation is intentionally deferred, the comment should reflect that to avoid confusion.
Prompt To Fix With AI
This is a comment left during a code review.
Path: ui/src/ui/views/chat.ts
Line: 461-463
Comment:
**Keyboard navigation for autocomplete is not implemented**
The comment "Let the autocomplete dropdown handle these" is misleading — the dropdown buttons have no keyboard event listeners and no focused state is tracked. Pressing ArrowDown/ArrowUp simply moves the cursor within the `<textarea>`, and Tab moves focus away from the compose field entirely without selecting a command.
As-is, the autocomplete is only usable via mouse click. If keyboard navigation is intended (which the comment implies), a `selectedIndex` state variable and proper `focus()`/`keydown` dispatch on the button elements would need to be wired up. If keyboard navigation is intentionally deferred, the comment should reflect that to avoid confusion.
How can I resolve this? If you propose a fix, please make it concise.| ${getMatchingCommands(props.draft).map( | ||
| (cmd, idx) => html` |
There was a problem hiding this comment.
Unused idx parameter in map callback
The idx parameter is declared but never referenced in the template body. This will likely generate a TypeScript/lint warning and can be removed:
| ${getMatchingCommands(props.draft).map( | |
| (cmd, idx) => html` | |
| ${getMatchingCommands(props.draft).map( | |
| (cmd) => html` |
Prompt To Fix With AI
This is a comment left during a code review.
Path: ui/src/ui/views/chat.ts
Line: 495-496
Comment:
**Unused `idx` parameter in map callback**
The `idx` parameter is declared but never referenced in the template body. This will likely generate a TypeScript/lint warning and can be removed:
```suggestion
${getMatchingCommands(props.draft).map(
(cmd) => html`
```
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b052e246d4
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| @click=${() => { | ||
| props.onDraftChange(cmd.usage + " "); | ||
| }} |
There was a problem hiding this comment.
Return focus to composer after slash command selection
Clicking an autocomplete item updates the draft but leaves focus on the clicked <button>, so the next keystrokes no longer go into the message box; this is especially disruptive for /model because users must immediately continue typing an argument. In the current handler there is no focus handoff back to the textarea, so mouse selection breaks the compose flow until users manually re-focus the input.
Useful? React with 👍 / 👎.
Summary
openclaw statusandmodels status --jsonFixes #38880
Test plan
openclaw statusshows the resolved modelmodels status --jsonuses resolved model when provider is removedGenerated with Claude Code