[codex] Add Control UI sidebar session shortcuts#82810
Conversation
|
Codex review: needs real behavior proof before merge. Summary Reproducibility: yes. for the review findings: current PR head source shows the time-only schema cache feeding redaction, the sidebar helper reading persisted collapse state instead of rendered Real behavior proof Next step before merge Security Review findings
Review detailsBest possible solution: Keep the PR open until the schema cache is keyed to real schema inputs or removed, sidebar sessions use the computed rendered collapse state, locale output is regenerated correctly, and proof covers the visible sidebar and Cron flows. Do we have a high-confidence way to reproduce the issue? Yes for the review findings: current PR head source shows the time-only schema cache feeding redaction, the sidebar helper reading persisted collapse state instead of rendered Is this the best way to solve the issue? No. The UI direction may be acceptable, but the schema cache should use a real schema/config fingerprint or be removed, and sidebar rendering should reuse the computed collapse state. Full review comments:
Overall correctness: patch is incorrect Security concerns:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 422a1374e02b. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3074d394ac
ℹ️ 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".
| if (configSchemaResponseCache && configSchemaResponseCache.expiresAtMs > now) { | ||
| return configSchemaResponseCache.response; |
There was a problem hiding this comment.
Invalidate cached schema when config changes externally
This cache returns a previously computed ConfigSchemaResponse for up to 5 seconds without checking whether schema inputs changed outside config.set/config.patch/config.apply (for example, manual config edits or plugin/runtime metadata refreshes). During that window, config.get and config.schema can use stale uiHints, and redaction in redactConfigSnapshot(..., schema.uiHints) may miss newly sensitive plugin-defined fields. Please key this cache to a schema/config version signal (or snapshot hash) instead of time-only reuse.
Useful? React with 👍 / 👎.
bf5296a to
0be57a0
Compare
ac1306f to
d15acd4
Compare
|
Verification before merge: Behavior addressed: Control UI sidebar/session/settings/cron simplification and Communications load-speed work.
|
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
* feat(control-ui): add sidebar session shortcuts * fix(control-ui): simplify cron job creation * style(control-ui): pad settings config chrome * fix(control-ui): fold cron advanced creation into dialog * fix(control-ui): filter sidebar recent sessions * fix(control-ui): clean up chat loading state * fix(control-ui): add settings nav content gutter * fix(control-ui): inherit settings nav icon color * fix(control-ui): polish sidebar new session button * fix(control-ui): speed up communications settings load * fix(control-ui): add cron strings to locale maps * fix(control-ui): refresh i18n metadata for sidebar strings * fix(control-ui): refresh chat raw-copy baseline
Summary
/communicationsrender from the config snapshot before the schema refresh and by caching burst schema responses.Real behavior proof
Behavior addressed: Control UI sidebar/navigation cleanup, beginner-friendly Cron Jobs creation, and slow
/communicationssettings load.Real environment tested: local dev Control UI at http://127.0.0.1:3002 connected to the local OpenClaw gateway.
Exact steps or command run after this patch: Opened http://127.0.0.1:3002/communications in the browser against the running local gateway and inspected the Control UI performance events after reload.
Evidence after fix: Console output from the real dev browser showed
control-ui.refreshduration ~902ms andcontrol-ui.renderduration 134ms for/communicationswithactiveSection:"messages"; before the patch the same page rendered the heavier Channels settings first and render timing was about 2937ms.Observed result after fix:
/communicationsbecame usable in about a second in the real dev UI, while Channels remained available as a tab and as the dedicated/channelspage.What was not tested: a live authenticated gateway cron add through the real browser session, because the headless browser lacks the local gateway token and hit the login/protocol gate.
Verification
Exact steps or command run after this patch: OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test src/gateway/server-methods/config.test.ts ui/src/ui/app-settings.refresh-active-tab.node.test.ts ui/src/ui/views/config.browser.test.ts -- --reporter=verbose --testTimeout=15000
Observed result after fix: gateway config cache tests and UI settings/config tests passed, including the deferred schema rejection regression.
Exact steps or command run after this patch: OPENCLAW_VITEST_MAX_WORKERS=1 pnpm test ui/src/i18n/test/translate.test.ts -- --reporter=verbose --testTimeout=15000
Observed result after fix: UI shard passed, including shipped-locale structural parity for the new cron strings.
Exact steps or command run after this patch: pnpm check:changed in Testbox run tbx_01krszrfxwxwga3q37y67vse26
Observed result after fix: changed gate passed in Testbox.
Exact steps or command run after this patch: git diff --check && node scripts/check-changelog-attributions.mjs
Observed result after fix: whitespace and changelog attribution checks passed.
Exact steps or command run after this patch: /Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --mode branch
Observed result after fix: codex-review clean; no accepted/actionable findings.