CORE-2201 Rewrite App settings panel copy and group into sections#3358
CORE-2201 Rewrite App settings panel copy and group into sections#3358jeanfbrito wants to merge 9 commits into
Conversation
Rename the panel to "App settings" and restructure the General tab from a flat toggle list into five sections (App UI, System UI, System behavior, Calling, Other & technical), reordered per platform. Rewrite every label to sentence case and add a plain-language description to each setting, using "workspace" instead of "server" in user-facing strings. Add a macOS "Menu bar extra" variant for the tray icon, a "Bounce dock icon" label for flash frame, and a disabled-state hint for Minimize on close. Strings only; every toggle and input keeps the same preference key and behavior.
Update the workspace-bar overflow menu and the native app menu item that open the settings panel so their labels match the renamed "App settings" panel.
Remove the TelephonyServer picker from the settings panel so the unreleased click-to-call feature stays hidden on master. The full feature, including this UI, lands via PR #3325. Backend telephony code is left in place but dormant.
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughUpdates settings labels and copy across many locales, expands settings sections and option text, and refactors SettingsView components to use stacked field layout, platform-specific rendering, and added hint rows for several settings. ChangesSettings UI i18n and Component Refactor
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Warning Review ran into problems🔥 ProblemsErrors were encountered while retrieving linked issues. Errors (1)
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 |
Apply the CORE-2201 settings copy rewrite to de-DE, es, fi, fr, hu, ja, no, pl, pt-BR, ru, sv, tr-TR, uk-UA, zh-CN and zh-TW: rename the panel to App settings, add the five section headings, retranslate changed labels and descriptions (workspace terminology, sentence case), and add the macOS menu-bar-extra and bounce-dock-icon variants plus the minimize-on-close hint where the parent key exists. Sparse stub locales (ar, it-IT, nb-NO, nn, se, zh) are left to fall back to en-US, matching their existing settings coverage.
There was a problem hiding this comment.
Actionable comments posted: 2
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (5)
src/i18n/hu.i18n.json (1)
332-336:⚠️ Potential issue | 🟠 Major | ⚡ Quick winHungarian locale is missing part of the new settings option key set.
settings.optionsends afterverboseOutlookLogging, but the refactored panel also requiresoutlookCalendarSyncInterval,detailedEventsLogging,debugLogging, ande2ePdfPreviewSizeLimit. Those labels/hints will not be localized in HU.🤖 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 `@src/i18n/hu.i18n.json` around lines 332 - 336, The Hungarian locale file is incomplete and missing translation entries for four new settings options. After the verboseOutlookLogging entry in the settings.options section, add the missing locale keys for outlookCalendarSyncInterval, detailedEventsLogging, debugLogging, and e2ePdfPreviewSizeLimit. Each key should follow the same structure as verboseOutlookLogging with title and description properties, ensuring all new settings options referenced in the refactored panel have corresponding Hungarian translations to prevent missing localization.src/i18n/pt-BR.i18n.json (1)
310-317:⚠️ Potential issue | 🟠 Major | ⚡ Quick winpt-BR locale is missing multiple keys required by the new settings layout.
The
settings.optionsblock ends before addingoutlookCalendarSyncInterval,verboseOutlookLogging,detailedEventsLogging,debugLogging, ande2ePdfPreviewSizeLimit. These controls will not be fully localized in pt-BR.🤖 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 `@src/i18n/pt-BR.i18n.json` around lines 310 - 317, The pt-BR locale file is missing translation keys for new settings controls that need to be localized. After the themeAppearance object in the settings.options block, add the missing keys: outlookCalendarSyncInterval, verboseOutlookLogging, detailedEventsLogging, debugLogging, and e2ePdfPreviewSizeLimit. Each key should have appropriate nested properties (title and description) with Portuguese Brazilian translations to match the structure of other settings options like themeAppearance. This ensures all new settings controls are properly localized in the pt-BR locale.src/i18n/fi.i18n.json (1)
227-297:⚠️ Potential issue | 🟠 Major | ⚡ Quick winMissing newly referenced settings option keys in Finnish locale.
This
settings.optionsblock closes at Line 297 without several keys used by the refactored settings UI (outlookCalendarSyncInterval,verboseOutlookLogging,detailedEventsLogging,debugLogging,e2ePdfPreviewSizeLimit). That leaves part of the FI settings panel untranslated (or key-path/fallback text, depending on i18n fallback behavior).🤖 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 `@src/i18n/fi.i18n.json` around lines 227 - 297, The Finnish locale file is missing several option keys that are referenced in the refactored settings UI. Within the options object in fi.i18n.json, add the missing configuration option keys: outlookCalendarSyncInterval, verboseOutlookLogging, detailedEventsLogging, debugLogging, and e2ePdfPreviewSizeLimit. Each key should follow the same structure as the existing options in the block (such as report, flashFrame, hardwareAcceleration, etc.) with appropriate title and description properties translated to Finnish, placed before the closing of the options object to ensure all settings are properly localized.src/i18n/sv.i18n.json (1)
248-331:⚠️ Potential issue | 🟠 Major | ⚡ Quick winAdd the new Settings option keys used by the refactored General tab.
At Line 331,
settings.optionscloses without keys now used by the UI (outlookCalendarSyncInterval,verboseOutlookLogging,detailedEventsLogging,debugLogging,e2ePdfPreviewSizeLimit). This leaves those entries untranslated forsv.🤖 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 `@src/i18n/sv.i18n.json` around lines 248 - 331, The Swedish translation file is missing the new settings option keys required by the refactored General tab. Add the following missing keys to the settings.options section in the sv.i18n.json file before the closing brace: outlookCalendarSyncInterval, verboseOutlookLogging, detailedEventsLogging, debugLogging, and e2ePdfPreviewSizeLimit. Each key should include appropriate Swedish translations for its title and description properties, following the same structure as the existing options in the file.src/i18n/uk-UA.i18n.json (1)
116-141:⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift
uk-UAoptions block is out of contract with the refactored settings UI.Lines 116-141 include only four option groups, but current settings rendering expects many additional keys (for example
report,flashFrame,hardwareAcceleration,minimizeOnClose,menubar,sidebar,videoCallWindowPersistence,outlookCalendarSyncInterval,e2ePdfPreviewSizeLimit). Most of the new settings will fall back to English instead of Ukrainian.🤖 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 `@src/i18n/uk-UA.i18n.json` around lines 116 - 141, The options block in the uk-UA.i18n.json file is missing several translation keys that the settings UI expects, including report, flashFrame, hardwareAcceleration, minimizeOnClose, menubar, sidebar, videoCallWindowPersistence, outlookCalendarSyncInterval, and e2ePdfPreviewSizeLimit. Add these missing option keys to the options block with appropriate Ukrainian translations following the same structure and format as the existing entries (title and description fields) to ensure all settings display properly in Ukrainian instead of falling back to English.
🤖 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.
Inline comments:
In `@src/i18n/no.i18n.json`:
- Line 245: The settings.general key in the Norwegian translation file contains
the English word "General" instead of its Norwegian translation. Replace the
value "General" with the appropriate Norwegian translation for the general
settings tab to maintain locale consistency throughout the file.
- Around line 339-350: The Norwegian locale file is missing required translation
keys for `debugLogging` and `e2ePdfPreviewSizeLimit` in the `settings.options`
section. Add these two missing keys with appropriate Norwegian translations to
the file, ensuring they follow the same structure as the existing options shown
in the diff (with "title" and "description" properties). Place them before the
closing of the `settings.options` object to provide complete translations for
Norwegian users.
---
Outside diff comments:
In `@src/i18n/fi.i18n.json`:
- Around line 227-297: The Finnish locale file is missing several option keys
that are referenced in the refactored settings UI. Within the options object in
fi.i18n.json, add the missing configuration option keys:
outlookCalendarSyncInterval, verboseOutlookLogging, detailedEventsLogging,
debugLogging, and e2ePdfPreviewSizeLimit. Each key should follow the same
structure as the existing options in the block (such as report, flashFrame,
hardwareAcceleration, etc.) with appropriate title and description properties
translated to Finnish, placed before the closing of the options object to ensure
all settings are properly localized.
In `@src/i18n/hu.i18n.json`:
- Around line 332-336: The Hungarian locale file is incomplete and missing
translation entries for four new settings options. After the
verboseOutlookLogging entry in the settings.options section, add the missing
locale keys for outlookCalendarSyncInterval, detailedEventsLogging,
debugLogging, and e2ePdfPreviewSizeLimit. Each key should follow the same
structure as verboseOutlookLogging with title and description properties,
ensuring all new settings options referenced in the refactored panel have
corresponding Hungarian translations to prevent missing localization.
In `@src/i18n/pt-BR.i18n.json`:
- Around line 310-317: The pt-BR locale file is missing translation keys for new
settings controls that need to be localized. After the themeAppearance object in
the settings.options block, add the missing keys: outlookCalendarSyncInterval,
verboseOutlookLogging, detailedEventsLogging, debugLogging, and
e2ePdfPreviewSizeLimit. Each key should have appropriate nested properties
(title and description) with Portuguese Brazilian translations to match the
structure of other settings options like themeAppearance. This ensures all new
settings controls are properly localized in the pt-BR locale.
In `@src/i18n/sv.i18n.json`:
- Around line 248-331: The Swedish translation file is missing the new settings
option keys required by the refactored General tab. Add the following missing
keys to the settings.options section in the sv.i18n.json file before the closing
brace: outlookCalendarSyncInterval, verboseOutlookLogging,
detailedEventsLogging, debugLogging, and e2ePdfPreviewSizeLimit. Each key should
include appropriate Swedish translations for its title and description
properties, following the same structure as the existing options in the file.
In `@src/i18n/uk-UA.i18n.json`:
- Around line 116-141: The options block in the uk-UA.i18n.json file is missing
several translation keys that the settings UI expects, including report,
flashFrame, hardwareAcceleration, minimizeOnClose, menubar, sidebar,
videoCallWindowPersistence, outlookCalendarSyncInterval, and
e2ePdfPreviewSizeLimit. Add these missing option keys to the options block with
appropriate Ukrainian translations following the same structure and format as
the existing entries (title and description fields) to ensure all settings
display properly in Ukrainian instead of falling back to English.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 45704f3a-6029-4f6e-a329-398b8fad8d3f
📒 Files selected for processing (15)
src/i18n/de-DE.i18n.jsonsrc/i18n/es.i18n.jsonsrc/i18n/fi.i18n.jsonsrc/i18n/fr.i18n.jsonsrc/i18n/hu.i18n.jsonsrc/i18n/ja.i18n.jsonsrc/i18n/no.i18n.jsonsrc/i18n/pl.i18n.jsonsrc/i18n/pt-BR.i18n.jsonsrc/i18n/ru.i18n.jsonsrc/i18n/sv.i18n.jsonsrc/i18n/tr-TR.i18n.jsonsrc/i18n/uk-UA.i18n.jsonsrc/i18n/zh-CN.i18n.jsonsrc/i18n/zh-TW.i18n.json
✅ Files skipped from review due to trivial changes (1)
- src/i18n/de-DE.i18n.json
📜 Review details
🔇 Additional comments (10)
src/i18n/es.i18n.json (1)
228-346: LGTM!Also applies to: 374-374, 440-440
src/i18n/fr.i18n.json (1)
216-334: LGTM!Also applies to: 362-362, 423-423
src/i18n/ja.i18n.json (1)
124-240: LGTM!Also applies to: 266-266, 316-316
src/i18n/pl.i18n.json (1)
136-253: LGTM!Also applies to: 279-279, 338-338
src/i18n/ru.i18n.json (1)
210-329: LGTM!Also applies to: 357-357, 418-418
src/i18n/sv.i18n.json (1)
237-247: LGTM!Also applies to: 358-358, 429-429
src/i18n/tr-TR.i18n.json (1)
124-241: LGTM!Also applies to: 278-278, 322-322
src/i18n/uk-UA.i18n.json (1)
106-115: LGTM!Also applies to: 165-165, 224-224
src/i18n/zh-CN.i18n.json (1)
157-273: LGTM!Also applies to: 301-301, 352-352
src/i18n/zh-TW.i18n.json (1)
103-220: LGTM!Also applies to: 239-239, 281-281
macOS installer download |
CodeRabbit flagged locales missing settings.options keys introduced by the settings UX rewrite, causing controls to fall back to English. - Add missing settings.options keys (debugLogging, e2ePdfPreviewSizeLimit, detailedEventsLogging, outlookCalendarSyncInterval, verboseOutlookLogging, telephonyServer, and more) to de-DE, fi, hu, no, pt-BR, sv, uk-UA - Add missing settings.general tab label to ja and zh-CN - Translate settings.general no: General -> Generelt All 15 locales now match en.i18n.json (22 settings.options keys).
Address designer review on the General tab:
- Hide section heading labels (keep the grouped layout/order)
- Stack select/input controls below their description, full-width
- Move per-control caveats ("Requires app restart", "Reloads app on
change") into dim c1 hint sublines instead of inline sentences
- Drop the redundant "System default uses..." browser sentence
- Render the video-calls description without bold product names
- Make Clear screen capture permissions a secondary danger button
- Use smart quotes around "do not ask again" in calling copy
- Group the PDF preview size limit next to Hardware acceleration
Full-width controls: SettingField wraps the control in a flex row so
Fuselage Select/InputBox (flex-grow:1) fill the column; drop the
maxWidth caps. Caveat sublines use fontScale c1 (regular) not micro
(which is bold). Strings updated across all populated locales.
|
Addressed all UXDQA feedback from @joseph.pearce in 42326fd:
i18n strings updated across all populated locales. Verified the rendered macOS panel 1:1 against the Figma UXDQA spec (full-width selects/inputs included). |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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.
Inline comments:
In `@src/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsx`:
- Around line 47-55: The numeric input in E2ePdfPreviewSizeLimit is expanding to
full width because it is rendered inside SettingField’s full-width layout.
Update the E2ePdfPreviewSizeLimit/InputBox usage so this number field stays
compact, either by overriding its width or by wrapping it in a width-constrained
container, and keep the fix scoped to the E2ePdfPreviewSizeLimit component and
the SettingField-based layout it uses.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 529a6fb1-3829-4a92-aa09-f08f5adaf585
📒 Files selected for processing (30)
src/i18n/ar.i18n.jsonsrc/i18n/de-DE.i18n.jsonsrc/i18n/en.i18n.jsonsrc/i18n/es.i18n.jsonsrc/i18n/fi.i18n.jsonsrc/i18n/fr.i18n.jsonsrc/i18n/hu.i18n.jsonsrc/i18n/it-IT.i18n.jsonsrc/i18n/ja.i18n.jsonsrc/i18n/nb-NO.i18n.jsonsrc/i18n/nn.i18n.jsonsrc/i18n/no.i18n.jsonsrc/i18n/pl.i18n.jsonsrc/i18n/pt-BR.i18n.jsonsrc/i18n/ru.i18n.jsonsrc/i18n/se.i18n.jsonsrc/i18n/sv.i18n.jsonsrc/i18n/tr-TR.i18n.jsonsrc/i18n/uk-UA.i18n.jsonsrc/i18n/zh-CN.i18n.jsonsrc/i18n/zh-TW.i18n.jsonsrc/i18n/zh.i18n.jsonsrc/ui/components/SettingsView/GeneralTab.tsxsrc/ui/components/SettingsView/features/ClearPermittedScreenCaptureServers.tsxsrc/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsxsrc/ui/components/SettingsView/features/SettingField.tsxsrc/ui/components/SettingsView/features/TransparentWindow.tsx
💤 Files with no reviewable changes (1)
- src/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsx
✅ Files skipped from review due to trivial changes (8)
- src/i18n/ar.i18n.json
- src/i18n/nn.i18n.json
- src/ui/components/SettingsView/features/ClearPermittedScreenCaptureServers.tsx
- src/i18n/nb-NO.i18n.json
- src/i18n/en.i18n.json
- src/i18n/se.i18n.json
- src/i18n/es.i18n.json
- src/i18n/uk-UA.i18n.json
🚧 Files skipped from review as they are similar to previous changes (12)
- src/i18n/pl.i18n.json
- src/i18n/zh-CN.i18n.json
- src/i18n/de-DE.i18n.json
- src/i18n/tr-TR.i18n.json
- src/i18n/ru.i18n.json
- src/i18n/sv.i18n.json
- src/i18n/fr.i18n.json
- src/i18n/pt-BR.i18n.json
- src/i18n/hu.i18n.json
- src/i18n/fi.i18n.json
- src/i18n/zh-TW.i18n.json
- src/i18n/ja.i18n.json
📜 Review details
⏰ Context from checks skipped due to timeout. (6)
- GitHub Check: check (macos-latest)
- GitHub Check: check (windows-latest)
- GitHub Check: check (ubuntu-latest)
- GitHub Check: build (windows-latest, windows)
- GitHub Check: build (ubuntu-latest, linux)
- GitHub Check: build (macos-latest, mac)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{tsx,ts}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{tsx,ts}: MANDATORY: Use Fuselage components for all UI work. Only create custom components when Fuselage doesn't provide what's needed
Import UI components from@rocket.chat/fuselageand checkTheme.d.tsfor valid color tokens
Use React functional components with hooks
Use PascalCase for component file names
Files:
src/ui/components/SettingsView/features/TransparentWindow.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsxsrc/ui/components/SettingsView/features/SettingField.tsxsrc/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsxsrc/ui/components/SettingsView/GeneralTab.tsx
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx}: Redux actions must follow FSA (Flux Standard Action) pattern
Avoid unnecessary comments — write self-documenting code through clear naming
Always verify libraries by checking official docs and.d.tsfiles innode_modules/. Never assume props, tokens, or APIs work without verification
Avoid subjective descriptors ('smart', 'excellent', 'dumb') in documentation and comments
Use measurable descriptions in code documentation: 'reduced memory usage', 'improved by X%' instead of subjective claims
NEVER invent metrics — don't include estimated time spent or speculated user counts. Only include numbers from actual logs, error messages, or documented sources
Files:
src/ui/components/SettingsView/features/TransparentWindow.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsxsrc/ui/components/SettingsView/features/SettingField.tsxsrc/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsxsrc/ui/components/SettingsView/GeneralTab.tsx
🔇 Additional comments (8)
src/i18n/no.i18n.json (1)
271-272: LGTM!Also applies to: 281-281, 307-307, 331-332
src/ui/components/SettingsView/features/TransparentWindow.tsx (1)
59-63: Samecolor='hint'token concern as flagged inHardwareAcceleration.tsx(lines 60-64); this markup is duplicated here.src/ui/components/SettingsView/GeneralTab.tsx (1)
21-62: LGTM!src/ui/components/SettingsView/features/SettingField.tsx (1)
26-34: LGTM!src/ui/components/SettingsView/features/InternalVideoChatWindow.tsx (1)
64-64: LGTM!src/i18n/it-IT.i18n.json (1)
13-14: LGTM!src/i18n/zh.i18n.json (1)
13-14: LGTM!src/ui/components/SettingsView/features/HardwareAcceleration.tsx (1)
60-64: 📐 Maintainability & Code QualityThe
color='hint'prop is valid.The
Boxcomponent accepts semantic tokens. According to the Fuselage design system,hintis a defined semantic color category (resolving tofont-hint). The usage ofcolor='hint'is consistent with the library's documentation for applying semantic text colors.Snippet showing the final state of code at these lines
<FieldRow> <Box fontScale='c1' color='hint'> {t('settings.options.hardwareAcceleration.hint')} </Box> </FieldRow>
Route every settings row through Fuselage's canonical FieldLabel / FieldDescription / FieldHint stack instead of misusing FieldHint for description text and hand-rolling hints as <Box fontScale='c1'>. - Add shared ToggleField component (label+toggle row, then FieldDescription, optional FieldHint, children escape hatch) - Add description prop to SettingField (Select/Input rows) - Migrate all 13 toggle and 5 select feature components - Split the "App restarts when this option is changed" sentence out of videoCallScreenCaptureFallback.description into a dedicated hint key, across all 22 locales - Backfill option keys missing from ar, it-IT, nb-NO, nn, se, zh - ScreenCaptureFallback: replace Math.random id with useId
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 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.
Inline comments:
In `@src/i18n/it-IT.i18n.json`:
- Around line 39-42: The minimize-on-close hint text is reversed: the
`minimizeOnClose.disabledHint` message in the i18n entry currently tells users
the tray icon must be disabled, but it should state the prerequisite consistent
with the close-to-tray behavior used elsewhere. Update the
`minimizeOnClose.disabledHint` string in the `it-IT.i18n.json` translation so it
clearly says the tray icon must be enabled, and keep the wording aligned with
the related `minimizeOnClose` settings copy.
In `@src/ui/components/SettingsView/features/ToggleField.tsx`:
- Around line 1-8: The shared field component is still importing and using
FieldDescription instead of the migrated FieldHint API, so update ToggleField to
remove FieldDescription and use FieldHint for all field-level descriptive text.
Keep the import list in sync with the component usage, and make sure any
description JSX inside the ToggleField implementation is switched to FieldHint
so it matches current Fuselage standards.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: b82b12c2-32bf-4501-ad5e-2d9cd4feb63b
📒 Files selected for processing (41)
src/i18n/ar.i18n.jsonsrc/i18n/de-DE.i18n.jsonsrc/i18n/en.i18n.jsonsrc/i18n/es.i18n.jsonsrc/i18n/fi.i18n.jsonsrc/i18n/fr.i18n.jsonsrc/i18n/hu.i18n.jsonsrc/i18n/it-IT.i18n.jsonsrc/i18n/ja.i18n.jsonsrc/i18n/nb-NO.i18n.jsonsrc/i18n/nn.i18n.jsonsrc/i18n/no.i18n.jsonsrc/i18n/pl.i18n.jsonsrc/i18n/pt-BR.i18n.jsonsrc/i18n/ru.i18n.jsonsrc/i18n/se.i18n.jsonsrc/i18n/sv.i18n.jsonsrc/i18n/tr-TR.i18n.jsonsrc/i18n/uk-UA.i18n.jsonsrc/i18n/zh-CN.i18n.jsonsrc/i18n/zh-TW.i18n.jsonsrc/i18n/zh.i18n.jsonsrc/ui/components/SettingsView/features/AvailableBrowsers.tsxsrc/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsxsrc/ui/components/SettingsView/features/FlashFrame.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/MenuBar.tsxsrc/ui/components/SettingsView/features/MinimizeOnClose.tsxsrc/ui/components/SettingsView/features/NTLMCredentials.tsxsrc/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsxsrc/ui/components/SettingsView/features/ReportErrors.tsxsrc/ui/components/SettingsView/features/ScreenCaptureFallback.tsxsrc/ui/components/SettingsView/features/SettingField.tsxsrc/ui/components/SettingsView/features/SideBar.tsxsrc/ui/components/SettingsView/features/TelephonyServer.tsxsrc/ui/components/SettingsView/features/ThemeAppearance.tsxsrc/ui/components/SettingsView/features/ToggleField.tsxsrc/ui/components/SettingsView/features/TransparentWindow.tsxsrc/ui/components/SettingsView/features/TrayIcon.tsxsrc/ui/components/SettingsView/features/VideoCallWindowPersistence.tsx
✅ Files skipped from review due to trivial changes (10)
- src/ui/components/SettingsView/features/TelephonyServer.tsx
- src/i18n/nb-NO.i18n.json
- src/i18n/pl.i18n.json
- src/i18n/uk-UA.i18n.json
- src/i18n/hu.i18n.json
- src/i18n/nn.i18n.json
- src/i18n/fr.i18n.json
- src/i18n/zh.i18n.json
- src/i18n/se.i18n.json
- src/i18n/ar.i18n.json
🚧 Files skipped from review as they are similar to previous changes (16)
- src/ui/components/SettingsView/features/E2ePdfPreviewSizeLimit.tsx
- src/i18n/de-DE.i18n.json
- src/i18n/ja.i18n.json
- src/i18n/tr-TR.i18n.json
- src/i18n/ru.i18n.json
- src/i18n/zh-CN.i18n.json
- src/i18n/pt-BR.i18n.json
- src/ui/components/SettingsView/features/SettingField.tsx
- src/i18n/en.i18n.json
- src/i18n/zh-TW.i18n.json
- src/i18n/sv.i18n.json
- src/ui/components/SettingsView/features/TrayIcon.tsx
- src/i18n/no.i18n.json
- src/i18n/es.i18n.json
- src/i18n/fi.i18n.json
- src/ui/components/SettingsView/features/MinimizeOnClose.tsx
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
- GitHub Check: check (windows-latest)
- GitHub Check: check (ubuntu-latest)
- GitHub Check: build (ubuntu-latest, linux)
- GitHub Check: build (windows-latest, windows)
🧰 Additional context used
📓 Path-based instructions (2)
**/*.{tsx,ts}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{tsx,ts}: MANDATORY: Use Fuselage components for all UI work. Only create custom components when Fuselage doesn't provide what's needed
Import UI components from@rocket.chat/fuselageand checkTheme.d.tsfor valid color tokens
Use React functional components with hooks
Use PascalCase for component file names
Files:
src/ui/components/SettingsView/features/AvailableBrowsers.tsxsrc/ui/components/SettingsView/features/ThemeAppearance.tsxsrc/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsxsrc/ui/components/SettingsView/features/FlashFrame.tsxsrc/ui/components/SettingsView/features/NTLMCredentials.tsxsrc/ui/components/SettingsView/features/ToggleField.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/ReportErrors.tsxsrc/ui/components/SettingsView/features/TransparentWindow.tsxsrc/ui/components/SettingsView/features/ScreenCaptureFallback.tsxsrc/ui/components/SettingsView/features/VideoCallWindowPersistence.tsxsrc/ui/components/SettingsView/features/SideBar.tsxsrc/ui/components/SettingsView/features/MenuBar.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsx
**/*.{ts,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,tsx}: Redux actions must follow FSA (Flux Standard Action) pattern
Avoid unnecessary comments — write self-documenting code through clear naming
Always verify libraries by checking official docs and.d.tsfiles innode_modules/. Never assume props, tokens, or APIs work without verification
Avoid subjective descriptors ('smart', 'excellent', 'dumb') in documentation and comments
Use measurable descriptions in code documentation: 'reduced memory usage', 'improved by X%' instead of subjective claims
NEVER invent metrics — don't include estimated time spent or speculated user counts. Only include numbers from actual logs, error messages, or documented sources
Files:
src/ui/components/SettingsView/features/AvailableBrowsers.tsxsrc/ui/components/SettingsView/features/ThemeAppearance.tsxsrc/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsxsrc/ui/components/SettingsView/features/FlashFrame.tsxsrc/ui/components/SettingsView/features/NTLMCredentials.tsxsrc/ui/components/SettingsView/features/ToggleField.tsxsrc/ui/components/SettingsView/features/InternalVideoChatWindow.tsxsrc/ui/components/SettingsView/features/ReportErrors.tsxsrc/ui/components/SettingsView/features/TransparentWindow.tsxsrc/ui/components/SettingsView/features/ScreenCaptureFallback.tsxsrc/ui/components/SettingsView/features/VideoCallWindowPersistence.tsxsrc/ui/components/SettingsView/features/SideBar.tsxsrc/ui/components/SettingsView/features/MenuBar.tsxsrc/ui/components/SettingsView/features/HardwareAcceleration.tsx
🔇 Additional comments (15)
src/i18n/it-IT.i18n.json (1)
11-38: LGTM!Also applies to: 44-119
src/ui/components/SettingsView/features/AvailableBrowsers.tsx (1)
68-82: LGTM!src/ui/components/SettingsView/features/ToggleField.tsx (1)
45-64: LGTM!src/ui/components/SettingsView/features/ReportErrors.tsx (1)
36-48: LGTM!src/ui/components/SettingsView/features/ScreenCaptureFallback.tsx (1)
38-38: LGTM!Also applies to: 50-59
src/ui/components/SettingsView/features/SideBar.tsx (1)
40-52: LGTM!src/ui/components/SettingsView/features/VideoCallWindowPersistence.tsx (1)
39-46: LGTM!src/ui/components/SettingsView/features/TransparentWindow.tsx (1)
36-44: LGTM!src/ui/components/SettingsView/features/ThemeAppearance.tsx (1)
57-57: 🎯 Functional Correctness
SettingFieldcorrectly supports thedescriptionprop.Verification of
src/ui/components/SettingsView/features/SettingField.tsxconfirms thatdescriptionis explicitly defined as a required prop (ReactNode) and is rendered via theFieldDescriptioncomponent. The usage inThemeAppearance.tsxis valid and the helper text will display correctly.src/ui/components/SettingsView/features/FlashFrame.tsx (1)
37-59: LGTM!src/ui/components/SettingsView/features/HardwareAcceleration.tsx (1)
37-45: LGTM!src/ui/components/SettingsView/features/MenuBar.tsx (1)
40-52: LGTM!src/ui/components/SettingsView/features/NTLMCredentials.tsx (1)
54-74: LGTM!src/ui/components/SettingsView/features/OutlookCalendarSyncInterval.tsx (1)
48-64: LGTM!src/ui/components/SettingsView/features/InternalVideoChatWindow.tsx (1)
42-46: 🎯 Functional CorrectnessTranslation strings are plain text and do not require
<Trans>markup.Verification of
src/i18n/en.i18n.jsonconfirms that bothsettings.options.internalVideoChatWindow.descriptionandsettings.options.internalVideoChatWindow.masDescriptioncontain only plain text without any HTML tags or component placeholders. The usage oft(...)inInternalVideoChatWindow.tsxis correct, as no embedded markup is present in the source translations that would render as literal text.> Likely an incorrect or invalid review comment.
Box color= prepends the font- prefix internally, so passing color='font-default' produced an invalid token and logged 'invalid color: font-default' on every render. Use the bare 'default' token at all 5 call sites (MarkdownContent, DocumentViewer, PdfContent, TopBar).
- Wrap serverFilterOptions and the filtered downloads list in useMemo over a stable downloads slice, eliminating the react-redux 'Selector returned a different result' rerender warning - Add aria-label to the icon-only arrow-back IconButton in DownloadsManagerView and SettingsView for screen-reader access
Implements CORE-2201: a UX-writing pass over the desktop app's settings panel. Renames the panel to App settings, groups the previously flat toggle list into five labelled sections, and rewrites every label and description against Rocket.Chat's writing conventions. Strings and structure only — no setting changes its backing preference or behavior.
Changes
i18n
New keys added (
settings.sections.*,trayIcon.titleDarwin/descriptionDarwin,minimizeOnClose.disabledHint); no existing key removed, so other locales keep resolving until translations land. Coordinate with the i18n team before merging.Validation
yarn lint✓ ·tsc --noEmit✓ ·yarn build✓ · test suite 277 pass / 2 skip ✓Pending before close: visual QA on real macOS + Windows builds (Figma 1:1), i18n translation handoff.
Summary by CodeRabbit