-
Notifications
You must be signed in to change notification settings - Fork 13k
feat: Improve E2E encryption UI texts #36923
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Looks like this PR is ready to merge! 🎉 |
🦋 Changeset detectedLatest commit: dc5c55b The changes in this PR will be included in the next version bump. This PR includes changesets to release 40 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
WalkthroughStandardizes and rewords E2E/E2EE UI copy and translation keys across client code and locales, updates some i18n usage in a security component, removes many deprecated E2E-related keys from non-English locales, and adds a changeset bumping @rocket.chat/i18n and @rocket.chat/meteor. Changes
Sequence Diagram(s)(Skipped — changes are text/i18n updates and minor UI hint wiring; no substantive new control-flow to diagram.) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~30 minutes Suggested labels
Suggested reviewers
Pre-merge checks (3 passed)✅ Passed checks (3 passed)
Poem
Tip 👮 Agentic pre-merge checks are now available in preview!Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.
Please see the documentation for more information. Example: reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"
mode: "warning"
instructions: |
Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).Please share your feedback with us on this Discord post. ✨ Finishing touches
🧪 Generate unit tests
Comment |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #36923 +/- ##
=========================================
Coverage 66.57% 66.57%
=========================================
Files 3344 3344
Lines 114631 114634 +3
Branches 21091 21198 +107
=========================================
+ Hits 76310 76321 +11
+ Misses 35629 35624 -5
+ Partials 2692 2689 -3
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
2fc8bb6 to
6fd2563
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
apps/meteor/client/views/hooks/useResetE2EPasswordMutation.ts (1)
13-23: Compose options handlers so logout/toast always runSpreading
...optionslast lets a caller overrideonSuccess/onError, skipping the toast and logout. Compose them instead so defaults always run and still call user-provided handlers.return useMutation({ - mutationFn: async () => resetE2eKey(), - onSuccess: () => { - dispatchToastMessage({ type: 'success', message: t('E2EE_password_reset') }); - logout(); - }, - onError: (error) => { - dispatchToastMessage({ type: 'error', message: error }); - }, - ...options, + mutationFn: resetE2eKey, + ...options, + onSuccess: (data, variables, context) => { + dispatchToastMessage({ type: 'success', message: t('E2EE_password_reset') }); + logout(); + options?.onSuccess?.(data as any, variables as any, context as any); + }, + onError: (error, variables, context) => { + dispatchToastMessage({ type: 'error', message: error }); + options?.onError?.(error as any, variables as any, context as any); + }, });apps/meteor/client/views/account/security/EndToEnd.tsx (1)
28-33: Save button may never enable (validation mode issue).
isValidwon’t update before submit with RHF’s defaultmode='onSubmit', but the button is disabled untilisValidis true—deadlock.} = useForm({ defaultValues: { password: '', passwordConfirm: '', }, + mode: 'onChange', });
🧹 Nitpick comments (8)
apps/meteor/client/views/hooks/useResetE2EPasswordMutation.ts (1)
14-14: Minor: simplify mutationFnNo need for the async wrapper; pass the method directly.
- mutationFn: async () => resetE2eKey(), + mutationFn: resetE2eKey,packages/i18n/src/locales/en.i18n.json (3)
1797-1797: Normalize HTML line breaksUse self-closing
to match the rest of the file.- "E2E_Encryption_Password_Explanation": "E2EE allows you to create encrypted rooms or enable encryption on existing rooms. <br><br> The password to encode/decode messages is not saved on the server. Remember to securely store yours, as it will be required on other devices.", + "E2E_Encryption_Password_Explanation": "E2EE allows you to create encrypted rooms or enable encryption on existing rooms. <br/><br/> The password to encode/decode messages is not saved on the server. Remember to securely store yours, as it will be required on other devices.",
1781-1781: Unify duplicate translation keys: E2EE_password_reset vs Reset_E2EE_passwordBoth keys exist and are referenced: E2EE_password_reset — packages/i18n/src/locales/en.i18n.json:1781 (used in apps/meteor/client/views/hooks/useResetE2EPasswordMutation.ts), and Reset_E2EE_password — packages/i18n/src/locales/en.i18n.json:4337 (used by EnterE2EPasswordModal, account security UI, admin hooks, etc.). Action: replace t('E2EE_password_reset') → t('Reset_E2EE_password') (or pick a single canonical key) and remove the redundant en.i18n.json entry.
4557-4557: Save_your_new_E2EE_password — LGTMRoomE2EESetup.tsx uses Save_your_encryption_password_to_access; SaveE2EPasswordModal.tsx and apps/meteor/client/lib/e2ee/rocketchat.e2e.ts use Save_your_new_E2EE_password; both keys exist in packages/i18n/src/locales/en.i18n.json (lines 4556–4557). Ensure reset and first-time flows use the same key/copy (or consolidate the keys) to avoid mixed wording.
.changeset/cold-colts-hear.md (1)
6-6: Polish the change description for clarity.Wording reads awkwardly. Suggest:
-Replaces some texts in order to improve the E2E encryption communication on the UI +Improve E2EE-related UI copy for clearer end-to-end encryption communication.apps/meteor/client/views/room/modals/E2EEModals/DisableE2EEModal.tsx (1)
20-23: Align key naming with the new pattern (optional).Other parts of the PR use
Disable_E2E_encryption/Enable_E2E_encryption. Consider updating here for consistency:- title={t('E2E_disable_encryption')} + title={t('Disable_E2E_encryption')} variant='warning' - confirmText={t('E2E_disable_encryption')} + confirmText={t('Disable_E2E_encryption')}apps/meteor/client/hooks/roomActions/useE2EERoomAction.ts (1)
118-121: Confirm whethertitleexpects an i18n key or a localized string.If it expects a localized string, wrap with
t(...); otherwise leave as-is:- title: enabledOnRoom ? 'Disable_E2E_encryption' : 'Enable_E2E_encryption', + title: t(enabledOnRoom ? 'Disable_E2E_encryption' : 'Enable_E2E_encryption'),apps/meteor/client/lib/e2ee/rocketchat.e2e.ts (1)
415-418: Updated alert strings OK; avoid HTML in translations if possible.Consider keeping translations plain text here; if HTML is necessary, render via React and sanitize, not string HTML.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (65)
.changeset/cold-colts-hear.md(1 hunks)apps/meteor/client/hooks/roomActions/useE2EERoomAction.ts(1 hunks)apps/meteor/client/lib/e2ee/rocketchat.e2e.ts(4 hunks)apps/meteor/client/views/account/security/EndToEnd.tsx(4 hunks)apps/meteor/client/views/admin/users/hooks/useResetE2EEKeyAction.tsx(1 hunks)apps/meteor/client/views/e2e/SaveE2EPasswordModal.tsx(1 hunks)apps/meteor/client/views/hooks/useResetE2EPasswordMutation.ts(1 hunks)apps/meteor/client/views/room/modals/E2EEModals/DisableE2EEModal.tsx(1 hunks)packages/i18n/src/locales/af.i18n.json(0 hunks)packages/i18n/src/locales/ar.i18n.json(0 hunks)packages/i18n/src/locales/az.i18n.json(0 hunks)packages/i18n/src/locales/be-BY.i18n.json(0 hunks)packages/i18n/src/locales/bg.i18n.json(0 hunks)packages/i18n/src/locales/bs.i18n.json(0 hunks)packages/i18n/src/locales/ca.i18n.json(0 hunks)packages/i18n/src/locales/cs.i18n.json(0 hunks)packages/i18n/src/locales/cy.i18n.json(0 hunks)packages/i18n/src/locales/da.i18n.json(0 hunks)packages/i18n/src/locales/de-AT.i18n.json(0 hunks)packages/i18n/src/locales/de-IN.i18n.json(1 hunks)packages/i18n/src/locales/de.i18n.json(0 hunks)packages/i18n/src/locales/el.i18n.json(0 hunks)packages/i18n/src/locales/en.i18n.json(13 hunks)packages/i18n/src/locales/eo.i18n.json(0 hunks)packages/i18n/src/locales/es.i18n.json(0 hunks)packages/i18n/src/locales/fa.i18n.json(0 hunks)packages/i18n/src/locales/fi.i18n.json(0 hunks)packages/i18n/src/locales/fr.i18n.json(0 hunks)packages/i18n/src/locales/gl.i18n.json(0 hunks)packages/i18n/src/locales/hi-IN.i18n.json(0 hunks)packages/i18n/src/locales/hr.i18n.json(0 hunks)packages/i18n/src/locales/hu.i18n.json(0 hunks)packages/i18n/src/locales/id.i18n.json(0 hunks)packages/i18n/src/locales/it.i18n.json(0 hunks)packages/i18n/src/locales/ja.i18n.json(0 hunks)packages/i18n/src/locales/ka-GE.i18n.json(0 hunks)packages/i18n/src/locales/km.i18n.json(0 hunks)packages/i18n/src/locales/ko.i18n.json(0 hunks)packages/i18n/src/locales/ku.i18n.json(0 hunks)packages/i18n/src/locales/lo.i18n.json(0 hunks)packages/i18n/src/locales/lt.i18n.json(0 hunks)packages/i18n/src/locales/lv.i18n.json(0 hunks)packages/i18n/src/locales/mn.i18n.json(0 hunks)packages/i18n/src/locales/ms-MY.i18n.json(0 hunks)packages/i18n/src/locales/nb.i18n.json(0 hunks)packages/i18n/src/locales/nl.i18n.json(0 hunks)packages/i18n/src/locales/nn.i18n.json(0 hunks)packages/i18n/src/locales/pl.i18n.json(0 hunks)packages/i18n/src/locales/pt-BR.i18n.json(0 hunks)packages/i18n/src/locales/pt.i18n.json(0 hunks)packages/i18n/src/locales/ro.i18n.json(0 hunks)packages/i18n/src/locales/ru.i18n.json(0 hunks)packages/i18n/src/locales/sk-SK.i18n.json(0 hunks)packages/i18n/src/locales/sl-SI.i18n.json(0 hunks)packages/i18n/src/locales/sq.i18n.json(0 hunks)packages/i18n/src/locales/sr.i18n.json(0 hunks)packages/i18n/src/locales/sv.i18n.json(0 hunks)packages/i18n/src/locales/ta-IN.i18n.json(0 hunks)packages/i18n/src/locales/th-TH.i18n.json(0 hunks)packages/i18n/src/locales/tr.i18n.json(0 hunks)packages/i18n/src/locales/uk.i18n.json(0 hunks)packages/i18n/src/locales/vi-VN.i18n.json(0 hunks)packages/i18n/src/locales/zh-HK.i18n.json(0 hunks)packages/i18n/src/locales/zh-TW.i18n.json(0 hunks)packages/i18n/src/locales/zh.i18n.json(0 hunks)
💤 Files with no reviewable changes (55)
- packages/i18n/src/locales/id.i18n.json
- packages/i18n/src/locales/af.i18n.json
- packages/i18n/src/locales/mn.i18n.json
- packages/i18n/src/locales/sq.i18n.json
- packages/i18n/src/locales/sk-SK.i18n.json
- packages/i18n/src/locales/ro.i18n.json
- packages/i18n/src/locales/ku.i18n.json
- packages/i18n/src/locales/km.i18n.json
- packages/i18n/src/locales/lt.i18n.json
- packages/i18n/src/locales/de-AT.i18n.json
- packages/i18n/src/locales/lo.i18n.json
- packages/i18n/src/locales/gl.i18n.json
- packages/i18n/src/locales/zh-HK.i18n.json
- packages/i18n/src/locales/th-TH.i18n.json
- packages/i18n/src/locales/bg.i18n.json
- packages/i18n/src/locales/fa.i18n.json
- packages/i18n/src/locales/ko.i18n.json
- packages/i18n/src/locales/be-BY.i18n.json
- packages/i18n/src/locales/hr.i18n.json
- packages/i18n/src/locales/eo.i18n.json
- packages/i18n/src/locales/bs.i18n.json
- packages/i18n/src/locales/az.i18n.json
- packages/i18n/src/locales/el.i18n.json
- packages/i18n/src/locales/pt.i18n.json
- packages/i18n/src/locales/lv.i18n.json
- packages/i18n/src/locales/da.i18n.json
- packages/i18n/src/locales/cs.i18n.json
- packages/i18n/src/locales/vi-VN.i18n.json
- packages/i18n/src/locales/sr.i18n.json
- packages/i18n/src/locales/hu.i18n.json
- packages/i18n/src/locales/sl-SI.i18n.json
- packages/i18n/src/locales/ru.i18n.json
- packages/i18n/src/locales/ar.i18n.json
- packages/i18n/src/locales/zh-TW.i18n.json
- packages/i18n/src/locales/ta-IN.i18n.json
- packages/i18n/src/locales/cy.i18n.json
- packages/i18n/src/locales/ca.i18n.json
- packages/i18n/src/locales/fr.i18n.json
- packages/i18n/src/locales/uk.i18n.json
- packages/i18n/src/locales/nb.i18n.json
- packages/i18n/src/locales/es.i18n.json
- packages/i18n/src/locales/tr.i18n.json
- packages/i18n/src/locales/pt-BR.i18n.json
- packages/i18n/src/locales/it.i18n.json
- packages/i18n/src/locales/ms-MY.i18n.json
- packages/i18n/src/locales/ja.i18n.json
- packages/i18n/src/locales/de.i18n.json
- packages/i18n/src/locales/pl.i18n.json
- packages/i18n/src/locales/nn.i18n.json
- packages/i18n/src/locales/zh.i18n.json
- packages/i18n/src/locales/sv.i18n.json
- packages/i18n/src/locales/hi-IN.i18n.json
- packages/i18n/src/locales/ka-GE.i18n.json
- packages/i18n/src/locales/fi.i18n.json
- packages/i18n/src/locales/nl.i18n.json
🧰 Additional context used
🧬 Code graph analysis (3)
apps/meteor/client/views/hooks/useResetE2EPasswordMutation.ts (1)
apps/meteor/client/lib/toast.ts (1)
dispatchToastMessage(22-25)
apps/meteor/client/lib/e2ee/rocketchat.e2e.ts (1)
apps/meteor/client/lib/toast.ts (1)
dispatchToastMessage(22-25)
apps/meteor/client/views/account/security/EndToEnd.tsx (2)
packages/livechat/src/components/Form/PasswordInput/index.tsx (1)
PasswordInput(23-48)apps/meteor/client/lib/e2ee/rocketchat.e2e.ts (1)
e2e(897-897)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: 📦 Build Packages
- GitHub Check: CodeQL-Build
- GitHub Check: CodeQL-Build
🔇 Additional comments (18)
packages/i18n/src/locales/de-IN.i18n.json (2)
3063-3063: LGTM: trailing newline fixNo issues with the EOF newline addition.
1043-1047: de-IN still uses legacy E2E keys — verification failed; re-run check or add E2EE translationsAutomated verification errored (PCRE2 compile error then a bash conditional error), so I couldn't determine which E2EE keys used in code are missing from packages/i18n/src/locales/de-IN.i18n.json or which legacy E2E keys are unused.
- Re-run the corrected Python-based check (ensure en.i18n.json resolves to packages/i18n/src/locales/en.i18n.json) and paste the output.
- Or, copy missing E2EE keys from packages/i18n/src/locales/en.i18n.json into packages/i18n/src/locales/de-IN.i18n.json and prune legacy E2E keys with zero usages.
packages/i18n/src/locales/en.i18n.json (10)
1700-1700: Enable/Disable action key introduced — LGTMNaming aligns with related E2E keys.
1707-1707: System message string symmetry with “Enabled”Disabled_E2E_Encryption_for_this_room pairs well with Enabled_E2E_Encryption_for_this_room below. Good consistency.
1891-1891: New toggle label — LGTM
1910-1910: System message counterpart — LGTM
1925-1925: Instruction string with component markup — LGTMTrans markup <1>…</1> looks correct for Trans component usage.
3558-3558: New_E2EE_password — LGTMMatches naming of related keys.
1805-1805: Resolved — modal already uses Proceed_with_cautionDisableE2EEModal.tsx calls annotation={t('Proceed_with_caution')} (apps/meteor/client/views/room/modals/E2EEModals/DisableE2EEModal.tsx:26) and en.i18n.json contains "Proceed_with_caution" (packages/i18n/src/locales/en.i18n.json:4087); no action required.
5924-5924: Change_E2EE_password — LGTMVerified: the change flow uses Enter_current_E2EE_password_to_set_new (packages/i18n/src/locales/en.i18n.json:1925) and EndToEnd references both keys (apps/meteor/client/views/account/security/EndToEnd.tsx:75,99).
1028-1029: Make "enter your password" E2EE-specificThe string in packages/i18n/src/locales/en.i18n.json (lines 1028–1029) is ambiguous in an E2EE context — change the value to be explicit (e.g. "Click here to enter your E2EE password") or add a distinct key (e.g. Click_here_to_enter_your_E2EE_password) and update callers accordingly. Confirm no callers still use the legacy key Click_here_to_enter_your_encryption_password.
Verify locally (example): git grep -n "Click_here_to_enter_your_password" || rg -nF "Click_here_to_enter_your_password"
1131-1131: New confirm key added — ensure usage consistent
- Both keys exist in packages/i18n/src/locales/en.i18n.json: Confirm_new_E2EE_password and Confirm_new_password.
- Repo-wide usage couldn't be determined here (rg returned "No files were searched"); verify code references (e.g. t('Confirm_new_E2EE_password') vs t('Confirm_new_password')) and ensure the E2EE-specific key is used only in E2EE contexts to avoid inconsistent phrasing.
apps/meteor/client/views/e2e/SaveE2EPasswordModal.tsx (1)
30-31: Title key rename looks good; validate locale coverage.Confirm
Save_your_new_E2EE_passwordexists in en and required locales to avoid key-fallbacks.apps/meteor/client/views/room/modals/E2EEModals/DisableE2EEModal.tsx (1)
26-27: Nice UX nudge via annotation.Adding
Proceed_with_cautionto the warning modal is appropriate.apps/meteor/client/lib/e2ee/rocketchat.e2e.ts (3)
349-355: Key rename toE2E_encryption_enabledOK.Matches the PR-wide terminology update. Ensure locale entries exist.
589-592: Guidance key rename OK.
Click_here_to_enter_your_passwordaligns with the new copy.
633-637: Consistent success toast key.
E2E_encryption_enabledrename looks consistent.apps/meteor/client/views/account/security/EndToEnd.tsx (1)
116-118: Accessibility improvement acknowledged.Switching to
role='alert'onFieldErroris appropriate.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
🧹 Nitpick comments (10)
apps/meteor/tests/e2e/page-objects/fragments/e2ee.ts (2)
21-21: Harden locator against wording/i18n drift; cover old and new labelsMatch both legacy and new copy to avoid flaky tests during rollout; keep a single source of truth later.
Apply:
- super(page.getByRole('button', { name: 'Save your new E2EE password' })); + super(page.getByRole('button', { name: /Save your (new )?(E2EE|encryption) password/i }));Also, the TODO about the “Enter your E2E password” typo suggests mixed terminology; once the translation is fixed to E2EE, align the locator similarly.
Also applies to: 27-29
46-46: Use tolerant match for the dialog title (supports legacy and new text)Prevents test breakage across staggered environments.
- super(page.getByRole('dialog', { name: 'Save your new E2EE password' })); + super(page.getByRole('dialog', { name: /Save your (new )?(E2EE|encryption) password/i }));apps/meteor/tests/e2e/page-objects/home-channel.ts (3)
89-89: Make dialog locator resilient to copy changesCovers both “encryption” and “E2EE” variants.
- return this.page.getByRole('dialog', { name: 'Save your new E2EE password' }); + return this.page.getByRole('dialog', { name: /Save (your )?(new )?(E2EE|encryption) password/i });
92-98: Verify intended dual labels aren’t collidingThere are two nearby controls: “Save E2EE password” (room button) vs “Save your new E2EE password” (banner). Confirm they’re distinct elements to avoid ambiguous matches. If not, unify copy or add data-qa test IDs.
Also applies to: 104-110
104-106: Rename getter to bannerSaveE2EEPassword and make locator tolerantRename the getter to match the E2EE wording and use a case-insensitive regex locator; update all call sites (found below).
- get bannerSaveEncryptionPassword(): Locator { - return this.page.getByRole('button', { name: 'Save your new E2EE password' }); - } + get bannerSaveE2EEPassword(): Locator { + return this.page.getByRole('button', { name: /Save your (new )?E2EE password/i }); + }Call sites to update: apps/meteor/tests/e2e/e2e-encryption.spec.ts:961.
Run to find any others: rg -nP 'bannerSaveEncryptionPassword' -C2apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts (1)
80-85: Prefer getByRole with regex; accept optional “encryption” suffixImproves robustness across locales/copy tweaks and avoids the text selector’s exact-match semantics.
- return this.page.locator('role=menuitem[name="Disable E2E encryption"]'); + return this.page.getByRole('menuitem', { name: /Disable E2E( encryption)?/i });- return this.page.locator('role=menuitem[name="Enable E2E encryption"]'); + return this.page.getByRole('menuitem', { name: /Enable E2E( encryption)?/i });apps/meteor/tests/e2e/page-objects/account-profile.ts (1)
120-122: Rename getter to securityE2EEncryptionResetPasswordButton and update call sitesRename the getter and broaden the locator to match both "password" and "key"; update usages listed below.
- get securityE2EEncryptionResetKeyButton(): Locator { - return this.page.locator("role=button[name='Reset E2EE password']"); - } + get securityE2EEncryptionResetPasswordButton(): Locator { + return this.page.getByRole('button', { name: /Reset E2EE (password|key)/i }); + }Update call sites:
- apps/meteor/tests/e2e/e2e-encryption.spec.ts:913
- apps/meteor/tests/e2e/e2e-encryption.spec.ts:950
- apps/meteor/tests/e2e/e2e-encryption.spec.ts:1086
apps/meteor/tests/e2e/page-objects/account-security.ts (3)
20-22: Accept both legacy “key” and new “password” labelsSmooths CI during staggered deploys.
- return this.page.getByRole('button', { name: 'Reset E2EE password' }); + return this.page.getByRole('button', { name: /Reset E2EE (password|key)/i });
24-26: Tolerate legacy “encryption” wording for new password field- return this.page.getByRole('textbox', { name: 'New E2EE password' }); + return this.page.getByRole('textbox', { name: /New (E2EE|encryption) password/i });
28-30: Tolerate legacy “encryption” wording for confirmation field- return this.page.getByRole('textbox', { name: 'Confirm new E2EE password' }); + return this.page.getByRole('textbox', { name: /Confirm new (E2EE|encryption) password/i });
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
apps/meteor/client/views/account/security/EndToEnd.tsx(4 hunks)apps/meteor/tests/e2e/page-objects/account-profile.ts(1 hunks)apps/meteor/tests/e2e/page-objects/account-security.ts(1 hunks)apps/meteor/tests/e2e/page-objects/fragments/e2ee.ts(2 hunks)apps/meteor/tests/e2e/page-objects/fragments/home-flextab.ts(1 hunks)apps/meteor/tests/e2e/page-objects/home-channel.ts(2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- apps/meteor/client/views/account/security/EndToEnd.tsx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: 📦 Build Packages
- GitHub Check: CodeQL-Build
- GitHub Check: CodeQL-Build
Proposed changes (including videos or screenshots)
Issue(s)
Steps to test or reproduce
Further comments
CORE-1317
Summary by CodeRabbit
Style
Chores