feat(webui): add chat terminal shortcut preference - #5824
Conversation
🔎 IronLoop Review StatusHead: Current reviewers:
Reviewer summaries
Recent activity
Available commands
Run metadataAdmission: webhook accepted the request and IronLoop persisted review state before this projection. |
📝 WalkthroughSummary by CodeRabbit
WalkthroughAdds a browser-local "Appearance" settings tab with a toggle controlling whether the floating chat terminal/logs shortcut is shown. Introduces ChangesChat terminal shortcut toggle
Estimated code review effort: 2 (Simple) | ~12 minutes Sequence Diagram(s)sequenceDiagram
participant User
participant Chat
participant useInterfacePreferences
participant localStorage
participant MessageList
User->>Chat: opens chat thread
Chat->>useInterfacePreferences: read showChatLogsShortcut
useInterfacePreferences->>localStorage: readShowChatLogsShortcut()
localStorage-->>useInterfacePreferences: stored value or default true
useInterfacePreferences-->>Chat: showChatLogsShortcut
Chat->>Chat: compute logsPath (null unless activeThreadId && showChatLogsShortcut)
Chat->>MessageList: render with logsPath
User->>Chat: toggles Appearance setting
Chat->>useInterfacePreferences: setShowChatLogsShortcut(false)
useInterfacePreferences->>localStorage: writeShowChatLogsShortcut(false)
useInterfacePreferences-->>Chat: updated state
Chat->>MessageList: re-render with logsPath = null
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Code Review
This pull request introduces a new 'Appearance' settings tab to the web UI, allowing users to toggle the visibility of the floating chat terminal/logs shortcut. This preference is stored locally in the browser's localStorage and synchronized across tabs using a custom React hook. The changes include the new settings tab component, preference management utilities, updated routing, localization strings, and comprehensive unit tests. There are no review comments, so I have no feedback to provide.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
There was a problem hiding this comment.
✅ IronLoop Review: reviewer
Review at a glance
| Verdict | Blocking | Notes | Head |
|---|---|---|---|
| ✅ Approved | 0 | 0 | 385d2269f821 |
Head: 385d2269f8212fd39417cb02d6a7488d8d240903
Next: No reviewer action needed.
Run details
Status: Current
Needs human: no
Needs validation: no
Summary
Approved. I did not find a concrete regression in the changed WebUI v2 appearance preference paths.
Findings
None.
Developer follow-up
After fixing this feedback:
- Push the fix to this PR branch.
- Re-run this reviewer with
@ironloopai review --agent reviewerif you only changed this reviewer's findings. - Re-run all reviewers with
@ironloopai reviewwhen the fix may affect multiple areas. - Use
@ironloopai statusto check queued/running/completed/stale/stalled state while reviewers run.
|
🚅 Deployed to the ironclaw-pr-5824 environment in ironclaw-ci-preview
|
…nal-icon # Conflicts: # crates/ironclaw_webui_v2/frontend/src/lib/interface-preferences.js # crates/ironclaw_webui_v2/frontend/src/lib/interface-preferences.test.mjs # crates/ironclaw_webui_v2/frontend/src/pages/settings/components/appearance-tab.js # crates/ironclaw_webui_v2/frontend/src/pages/settings/components/appearance-tab.test.mjs
|
@claude review |
This comment was marked as resolved.
This comment was marked as resolved.
Coverage ratchetReborn integration-tier coverageLine coverage (Reborn crates): 85.17% — 282584 / 331797 lines Per-crate breakdown (65 crates, lowest-covered first)
This table itself is informational and never gates the PR on its own — not the percentage, not the per-crate holes, not the 0-coverage callout. A separate coverage ratchet (dry-run until enforce=true; see tests/integration/coverage-floor.toml) can fail the build on specific configured floors. Exemptions (4 entry/entries excluded from the accounting above)
|
# Conflicts: # crates/ironclaw_webui_v2/frontend/src/pages/chat/chat.tsx # crates/ironclaw_webui_v2/frontend/src/pages/chat/lib/chat.test.ts # crates/ironclaw_webui_v2/frontend/src/pages/settings/settings-page.ts
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/ironclaw_webui_v2/frontend/src/i18n/hi.ts (1)
814-815: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick winFix the corrupted Hindi label.
automations.empty.matchingTitlecontains mojibake (म��ल), so the filter title will render broken text in the UI.Suggested patch
- "automations.empty.matchingTitle": "कोई म��ल खाता ऑटोमेशन नहीं", + "automations.empty.matchingTitle": "कोई मेल खाता ऑटोमेशन नहीं",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/ironclaw_webui_v2/frontend/src/i18n/hi.ts` around lines 814 - 815, The Hindi translation for automations.empty.matchingTitle is corrupted and renders mojibake in the UI, so update the affected entry in hi.ts to use the correct Hindi title text. Keep the neighboring automations.empty.matchingDescription unchanged and make sure the fix is applied in the i18n mapping for automations.empty.matchingTitle so the filter label displays properly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@crates/ironclaw_webui_v2/frontend/src/i18n/hi.ts`:
- Around line 814-815: The Hindi translation for automations.empty.matchingTitle
is corrupted and renders mojibake in the UI, so update the affected entry in
hi.ts to use the correct Hindi title text. Keep the neighboring
automations.empty.matchingDescription unchanged and make sure the fix is applied
in the i18n mapping for automations.empty.matchingTitle so the filter label
displays properly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: b4fab8ad-0b0d-438a-b946-ec5c8446514c
📒 Files selected for processing (16)
crates/ironclaw_webui_v2/frontend/src/app/routes.test.tscrates/ironclaw_webui_v2/frontend/src/i18n/ar.tscrates/ironclaw_webui_v2/frontend/src/i18n/de.tscrates/ironclaw_webui_v2/frontend/src/i18n/en.tscrates/ironclaw_webui_v2/frontend/src/i18n/es.tscrates/ironclaw_webui_v2/frontend/src/i18n/fr.tscrates/ironclaw_webui_v2/frontend/src/i18n/hi.tscrates/ironclaw_webui_v2/frontend/src/i18n/ja.tscrates/ironclaw_webui_v2/frontend/src/i18n/ko.tscrates/ironclaw_webui_v2/frontend/src/i18n/pt-BR.tscrates/ironclaw_webui_v2/frontend/src/i18n/uk.tscrates/ironclaw_webui_v2/frontend/src/i18n/zh-CN.tscrates/ironclaw_webui_v2/frontend/src/lib/interface-preferences.test.tscrates/ironclaw_webui_v2/frontend/src/lib/interface-preferences.tscrates/ironclaw_webui_v2/frontend/src/pages/chat/chat.tsxcrates/ironclaw_webui_v2/frontend/src/pages/chat/lib/chat.test.ts
💤 Files with no reviewable changes (1)
- crates/ironclaw_webui_v2/frontend/src/pages/chat/lib/chat.test.ts
think-in-universe
left a comment
There was a problem hiding this comment.
Approve with notes:
- The preference of showing/hiding thread-scope log button preference is now saved in local storage. We may need to be careful about this since users may think the preference is persistent across devices.
Summary
Linked Issue
Closes #5705
Validation
git diff --checknode --checkfor changed WebUI JS filesnode --test ...for related WebUI testsSecurity Impact
No. Frontend-only local UI preference; no auth, route, API, or permission behavior changes.
Database Impact
No schema or migration changes.
Blast Radius
Limited to Reborn WebUI v2 static frontend settings/chat UI.
Rollback Plan
Revert this PR to return the floating chat terminal/logs shortcut to the prior always-visible behavior.
Review track: A