Skip to content

feat(ui): overhaul settings and slash command UX#67819

Merged
BunsDev merged 21 commits intomainfrom
ui/control-settings-overhaul
Apr 17, 2026
Merged

feat(ui): overhaul settings and slash command UX#67819
BunsDev merged 21 commits intomainfrom
ui/control-settings-overhaul

Conversation

@BunsDev
Copy link
Copy Markdown
Member

@BunsDev BunsDev commented Apr 16, 2026

Summary

  • add Quick Settings as the default settings experience in the Control UI
  • reorganize Advanced Settings into grouped accordion sections instead of the long tab strip
  • add config presets and a guided automation creation wizard
  • add progressive disclosure tiers to slash commands
  • polish the Quick Settings cards so grid rows fill cleanly and header icon color matches the section title treatment

Testing

  • pnpm exec oxfmt --write ui/src/styles/config-quick.css
  • git diff --check

Coauthored with Nova for the final layout polish and PR prep.

@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui size: XL maintainer Maintainer-authored PR labels Apr 16, 2026
@BunsDev BunsDev self-assigned this Apr 16, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 16, 2026

Greptile Summary

This PR adds Quick Settings as the default settings experience (card layout replacing the raw schema form), reorganizes Advanced Settings into accordion groups, introduces config presets, and adds a 3-step cron creation wizard. The progressive-disclosure tiers for slash commands are well-implemented. Two functional gaps in the cron wizard need to be addressed before this path is usable:

  • The "Run once" schedule preset produces an incomplete form patch (scheduleKind: \"at\" without atDate/atTime), resulting in a job that cannot fire.
  • The wizard's "Create" button only pre-fills state.cronForm but never calls an API to persist the job — clicking it has no durable effect.

Confidence Score: 3/5

Not safe to merge until the cron wizard's "Create" button is wired to an API and the "once" preset provides a valid at-time.

Two P1 gaps in the new cron wizard (missing API call on create, invalid "once" patch) mean the wizard's primary user action silently fails. The remaining findings are P2 style issues. The slash-command tiers and Quick Settings UI are otherwise well-structured.

ui/src/ui/views/cron-quick-create.ts and ui/src/ui/app-render.ts (renderCronQuickCreateForTab.onCreate)

Comments Outside Diff (2)

  1. ui/src/ui/app-render.ts, line 591-607 (link)

    P1 "Create" button never actually persists the cron job

    onCreate patches state.cronForm and closes the wizard, but no API call is made to create the job. The comment says "trigger add" but the trigger is absent — clicking "Create ✓" leaves the user with a pre-filled form that is silently discarded if they navigate away. Either call addCronJob(state, ...) / state.client.request("cron.add", ...) here, or relabel the button to something like "Continue to form" so the UX matches the actual behavior.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: ui/src/ui/app-render.ts
    Line: 591-607
    
    Comment:
    **"Create" button never actually persists the cron job**
    
    `onCreate` patches `state.cronForm` and closes the wizard, but no API call is made to create the job. The comment says "trigger add" but the trigger is absent — clicking "Create ✓" leaves the user with a pre-filled form that is silently discarded if they navigate away. Either call `addCronJob(state, ...)` / `state.client.request("cron.add", ...)` here, or relabel the button to something like "Continue to form" so the UX matches the actual behavior.
    
    How can I resolve this? If you propose a fix, please make it concise.
  2. ui/src/ui/views/config-presets.ts, line 131-134 (link)

    P2 Unconfigured instances always show "Personal Assistant" as the active preset

    When agents.defaults is absent (fresh install, blank config), detectActivePreset returns "personal". The "Personal Assistant" card then renders with the active/selected highlight, even though none of its bootstrapMaxChars/bootstrapTotalMaxChars values have been applied. Returning null for the unset case lets the caller treat it as "no preset applied."

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: ui/src/ui/views/config-presets.ts
    Line: 131-134
    
    Comment:
    **Unconfigured instances always show "Personal Assistant" as the active preset**
    
    When `agents.defaults` is absent (fresh install, blank config), `detectActivePreset` returns `"personal"`. The "Personal Assistant" card then renders with the active/selected highlight, even though none of its `bootstrapMaxChars`/`bootstrapTotalMaxChars` values have been applied. Returning `null` for the unset case lets the caller treat it as "no preset applied."
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: ui/src/ui/views/cron-quick-create.ts
Line: 130-133

Comment:
**"Once" preset produces an invalid form patch**

`scheduleKind: "at"` requires a target date/time, but the patch only sets `scheduleKind` and `deleteAfterRun`. Without `atDate` and `atTime` the resulting cron job has no scheduled moment to fire, which will either cause a validation error or silently create a job that never runs.

```suggestion
    case "once":
      patch.scheduleKind = "at";
      patch.deleteAfterRun = true;
      patch.atDate = new Date().toISOString().slice(0, 10); // today as sensible default
      patch.atTime = "09:00";
      break;
```

Alternatively, advance the user to a custom-schedule view so they can pick the one-off datetime explicitly.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: ui/src/ui/app-render.ts
Line: 591-607

Comment:
**"Create" button never actually persists the cron job**

`onCreate` patches `state.cronForm` and closes the wizard, but no API call is made to create the job. The comment says "trigger add" but the trigger is absent — clicking "Create ✓" leaves the user with a pre-filled form that is silently discarded if they navigate away. Either call `addCronJob(state, ...)` / `state.client.request("cron.add", ...)` here, or relabel the button to something like "Continue to form" so the UX matches the actual behavior.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: ui/src/ui/views/config-presets.ts
Line: 131-134

Comment:
**Unconfigured instances always show "Personal Assistant" as the active preset**

When `agents.defaults` is absent (fresh install, blank config), `detectActivePreset` returns `"personal"`. The "Personal Assistant" card then renders with the active/selected highlight, even though none of its `bootstrapMaxChars`/`bootstrapTotalMaxChars` values have been applied. Returning `null` for the unset case lets the caller treat it as "no preset applied."

```suggestion
  if (!defaults) {
    return null; // no preset applied yet
  }
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: ui/src/ui/app-render.ts
Line: 494

Comment:
**Dead filter — always returns every channel**

Because `channels` is built exclusively by iterating `KNOWN_CHANNEL_IDS`, the predicate `KNOWN_CHANNEL_IDS.some(k => k.id === c.id)` is unconditionally true for every element. The filter never removes anything and the comment is misleading. Either remove the filter or replace the second condition with something that can actually be false.

```suggestion
  return channels.filter((c) => c.connected);
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "Merge branch 'main' into ui/control-sett..." | Re-trigger Greptile

Comment thread ui/src/ui/views/cron-quick-create.ts
Comment thread ui/src/ui/app-render.ts Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7240464ce2

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts Outdated
@cursor
Copy link
Copy Markdown

cursor Bot commented Apr 16, 2026

PR Summary

High Risk
Large UI/state changes across settings, chat, and cron, plus newly introduced tier filtering logic. The diff also appears to include broken/unsafe logic in extractQuickSettingsSecurity and draftToCronFormPatch that could cause build failures or incorrect cron/job creation behavior.

Overview
Settings UX is overhauled by introducing a new default Quick Settings view (card-based) with navigation into an Advanced schema-driven settings screen that now supports an accordion layout and a “back to quick settings” affordance.

Adds config presets (opinionated multi-setting bundles applied via config.patch) and a Cron “Quick Create” wizard surfaced from the Cron tab (+ New) that converts a guided draft into the existing cron form state.

Introduces progressive disclosure for slash commands by adding a CommandTier/tier field to command definitions, tagging built-ins, and updating the chat slash menu to hide power commands by default, sort by tier, and show a “Show N more” control.

Reviewed by Cursor Bugbot for commit 41d3f22. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ec78e00888

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/views/cron-quick-create.ts Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 37e65c4dbb

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fda27b9d3e

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts Outdated
@BunsDev BunsDev force-pushed the ui/control-settings-overhaul branch from fda27b9 to 897e6fe Compare April 16, 2026 21:48
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e3ca560c0a

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2aa3650892

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/views/cron-quick-create.ts
Comment thread ui/src/ui/views/cron-quick-create.ts Outdated
BunsDev and others added 14 commits April 16, 2026 17:41
Add CommandTier type (essential | standard | power) to the command
registry and wire it through to the Control UI slash command system.

Essential commands (~10): /new, /reset, /stop, /compact, /model, /think,
/status, /help, /export, /stop — always visible in the dropdown.

Standard commands (~15): /models, /fast, /reasoning, /verbose, /tools,
/skill, /agents, /subagents, /kill, /steer, /usage, /tts, /context,
/btw, /tasks — shown on expand.

Power commands (~15): /config, /mcp, /plugins, /debug, /bash, /acp,
/exec, /queue, /elevated, /trace, /activation, /send, /session,
/focus, /unfocus, /whoami, /approve, /allowlist, /restart, /commands,
/redirect — only surfaced via search.

When no filter text is entered and showAll is not set, power-tier
commands are hidden from the completion list. getHiddenCommandCount()
exposes the count for UI 'Show N more' affordance.

Sorting now respects tier order (essential → standard → power) before
category order.

Co-authored-by: Nova <nova@openknot.ai>
Assign tier to clear (standard) and redirect (power) UI-only commands.
Re-export CommandTier from the main commands-registry module.

Co-authored-by: Nova <nova@openknot.ai>
Replace the 34-tab settings dump with a 6-card Quick Settings page as
the default view when navigating to Settings. Each card answers a
"what do I want to do?" question with status + actions:

- Model & Thinking: current model, thinking level segmented control,
  fast mode toggle
- Channels: connection status for known channels (Telegram, Discord,
  Slack, WhatsApp, Signal, iMessage)
- API Keys: masked key display for Anthropic, OpenAI, Google,
  OpenRouter with Change/Add actions
- Automations: cron job count, skill count, MCP server count with
  Manage/Browse/Configure links
- Security: gateway auth mode, exec policy, device auth status
- Appearance: theme, mode, and roundness controls (reuses existing
  theme infrastructure)

The Advanced button navigates to the existing full config form. Quick
Settings extracts data from the config snapshot and wires actions to
navigate to the appropriate advanced section or existing pages (cron,
skills, etc.).

New files:
- ui/src/ui/views/config-quick.ts (Quick Settings renderer)
- ui/src/styles/config-quick.css (card layout styles)

State additions:
- configSettingsMode: "quick" | "advanced" (defaults to "quick")

Co-authored-by: Nova <nova@openknot.ai>
When navigating from Quick Settings → Advanced, the config page now
renders section categories as collapsible accordion groups instead of
a 34-tab horizontal scroll bar.

Each accordion group header shows the category name with an icon and
chevron. Clicking expands to reveal subsections. Only one group is
visually expanded at a time (via activeSection tracking).

A '← Quick Settings' back button at the top navigates back to the
card-based Quick Settings view.

New ConfigProps:
- settingsLayout: 'tabs' | 'accordion' (default: 'tabs')
- onBackToQuick: callback for accordion back navigation

The existing tabs layout is unchanged for scoped config views
(Communications, Automation, Infrastructure, AI & Agents) which
already have focused section sets.

Co-authored-by: Nova <nova@openknot.ai>
Add four opinionated configuration presets that bundle multiple
settings into a single click:

- Personal Assistant: balanced context (20k/150k chars), always inject
- Code Agent: higher context for coding (50k/300k chars), always inject
- Team Bot: multi-channel lean context (10k/80k chars), skip on continuation
- Minimal: lowest cost per turn (5k/30k chars), skip on continuation

Each preset is a config.patch payload applied via the gateway RPC.
The active preset is auto-detected from current bootstrapMaxChars
and bootstrapTotalMaxChars values.

The preset picker card is added to the Quick Settings grid with a
2-column layout. Active preset is highlighted with an accent border.

New files:
- ui/src/ui/views/config-presets.ts (preset definitions + detection)

CSS additions:
- 2-column preset grid with hover/active states
- Responsive: single column below 480px

Co-authored-by: Nova <nova@openknot.ai>
Add a 3-step creation flow for cron automations inspired by Claude
Code's Routines UX:

Step 1 — What: Describe the task in natural language + optional name
Step 2 — When: Pick a schedule from 6 presets (morning, evening,
  hourly, weekdays, weekly, run-once) or custom
Step 3 — How: Choose delivery mode (notify me, silent, independent)

The wizard maps to the existing CronFormState under the hood via
draftToCronFormPatch(), converting friendly presets to cron
expressions, schedule kinds, session targets, and delivery modes.

A '+ New' button is added to the cron page header that opens the
wizard. The existing full cron form remains accessible for fine-tuning.

New files:
- ui/src/ui/views/cron-quick-create.ts (wizard renderer + draft types)
- ui/src/styles/cron-quick-create.css (step indicator, preset cards,
  radio cards, form elements)

State additions:
- cronQuickCreateOpen, cronQuickCreateStep, cronQuickCreateDraft

Co-authored-by: Nova <nova@openknot.ai>
…n wizard

- Quick Settings cards: real theme tokens (--card, --bg-elevated, color-mix),
  accent icon backgrounds, spring-eased toggle animation, refined spacing
- Slash command dropdown: 'Show N more commands' footer with tier-aware
  expand/collapse, resets on menu close
- Automation wizard: focus rings on inputs, preset card hover lift, step
  indicator glow on active dot, delivery card subtle accent
- Fix btn--primary class to match design system (btn.primary)
- Use semantic tokens (--ok, --warn, --accent-subtle) instead of hardcoded rgba
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@BunsDev BunsDev force-pushed the ui/control-settings-overhaul branch from a3cbdc9 to 9238da0 Compare April 16, 2026 22:41
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9238da093e

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/app-render.ts
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cd471bdf6e

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3e691c1ca7

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts Outdated
Comment thread ui/src/ui/views/cron-quick-create.ts
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 691436b067

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts
Comment on lines +984 to +985
state.tab = "cron" as import("./navigation.ts").Tab;
requestHostUpdate?.();
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Navigate via setTab when leaving Quick Settings

These Quick Settings actions mutate state.tab directly, which bypasses the tab-selection path in app-settings that runs refreshActiveTab(...) and syncUrlWithTab(...). From this flow, opening tabs like Cron/Skills/Infrastructure can show stale or empty data until a manual refresh, and the browser URL/history can remain on /config, so reload/back no longer reflects the visible tab. Route these transitions through state.setTab(...) instead of direct assignment.

Useful? React with 👍 / 👎.

Comment thread ui/src/ui/views/config.ts
Comment on lines +951 to +953
${settingsLayout === "accordion"
? renderAccordionNav()
: html`
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve settings search in accordion mode

When settingsLayout === "accordion", the render path returns renderAccordionNav() and skips the search input entirely, so Advanced Settings loses its setting-search/filter affordance. This is a functional regression for large configs because users can no longer narrow fields from this view even though searchQuery/onSearchChange state is still wired.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9616038a38

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts
security: extractQuickSettingsSecurity(state),
onSecurityConfigure: () => {
state.configSettingsMode = "advanced";
state.configActiveSection = "auth";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Route security configure action to gateway settings

The Security card surfaces gateway.auth and gateway.controlUi status, but its Configure handler sets configActiveSection to "auth", which navigates to the auth-profiles section rather than gateway settings where those controls live. In practice, users clicking Configure from this card are taken away from the settings they need to change (gateway auth/device auth), so the call-to-action is misleading and blocks the intended fix path.

Useful? React with 👍 / 👎.

<div class="qs-row">
<span class="qs-row__label">Gateway auth</span>
<span class="qs-row__value">
<span class="qs-badge ${gatewayAuth !== "none" ? "qs-badge--ok" : "qs-badge--warn"}"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Mark unknown gateway auth state as non-OK

The badge styling treats any value other than "none" as qs-badge--ok, so "unknown" is rendered as a positive security state. When auth mode cannot be determined (for example if gateway.auth is absent), this UI still shows a green badge, which misrepresents security posture and can cause users to miss that auth is not actually confirmed.

Useful? React with 👍 / 👎.

@BunsDev BunsDev merged commit 2cfb660 into main Apr 17, 2026
44 checks passed
@BunsDev BunsDev deleted the ui/control-settings-overhaul branch April 17, 2026 01:29
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f8ec621e74

ℹ️ About Codex in GitHub

Your team has set up Codex to 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 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread ui/src/ui/app-render.ts
security: extractQuickSettingsSecurity(state),
onSecurityConfigure: () => {
state.configSettingsMode = "advanced";
state.configActiveSection = "auth";
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Route Security Configure to gateway settings

The Security card displays gateway.auth/device-auth status, but this handler sends users to configActiveSection = "auth" in advanced mode. In the same render path, advanced config excludes infrastructure sections (including gateway), so clicking Configure cannot reach the fields the card is summarizing and users land on unrelated auth-profile settings instead.

Useful? React with 👍 / 👎.

xudaiyanzi pushed a commit to xudaiyanzi/openclaw that referenced this pull request Apr 17, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
kvnkho pushed a commit to kvnkho/openclaw that referenced this pull request Apr 17, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
Mquarmoc pushed a commit to Mquarmoc/openclaw that referenced this pull request Apr 20, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
lovewanwan pushed a commit to lovewanwan/openclaw that referenced this pull request Apr 28, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
@fflake33
Copy link
Copy Markdown

@BunsDev

In ui/src/ui/views/config-quick.ts

<span class="qs-toggle__hint muted" >${props.fastMode ? "On — cheaper, less capable" : "Off"}</span >

This seems inconsistent with the documented behavior of OpenClaw fast mode.

According to the docs, /fast on maps to provider fast/priority routing, e.g. OpenAI/Codex service_tier=priority, Anthropic service_tier=auto, and MiniMax high-speed variants:
https://docs.openclaw.ai/tools/thinking#fast-mode-%2Ffast

So showing On — cheaper, less capable may be misleading, since fast mode does not appear to mean a cheaper or less capable model. Would something like On — faster priority routing / Off — standard routing be more accurate?

image

ogt-redknie pushed a commit to ogt-redknie/OPENX that referenced this pull request May 2, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 9, 2026
…nks @BunsDev

Co-authored-by: Val Alexander <68980965+BunsDev@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui maintainer Maintainer-authored PR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants