* Fix invite modal input text clipping and modal width overflow
Root cause: react-select v5 auto-sizes the input container using a CSS
grid with data-value attribute, which grows the grid columns based on
input text width. This caused the control, modal-content, and the
dropdown menu to exceed the modal-dialog's 600px width.
Changes:
1. invitation_modal.scss: Add max-width:100% and overflow:hidden on
.modal-content to prevent it from overflowing the 600px modal-dialog.
2. users_emails_input.tsx: Override react-select's styles:
- input.gridTemplateColumns: '0 minmax(0, 1fr)' prevents the sizer
column from auto-expanding based on typed text width.
- valueContainer.gridTemplateColumns: 'minmax(0, 1fr)' prevents the
value-container grid from auto-sizing columns beyond the container.
- Remove old display:flex and width:100% overrides that fought with
react-select v5's inline-grid layout.
3. users_emails_input.scss:
- Remove legacy width:1px on react-select input wrapper.
- Add min-width:0 and max-width:100% on value-container and
input-container for proper flex/grid containment.
- Constrain dropdown menu to max-width:100%.
- Allow no-match text and menu notices to wrap with overflow-wrap
and word-break. Use min-height instead of fixed height so wrapped
text fits.
Fixes: MM-68461
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Fix stylelint property order in invitation_modal.scss
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Update snapshot for react-select style changes
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Add min-width: 0 to input-container to prevent shrink/overflow regressions
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
The react-select input uses classNamePrefix ManagedCategory, so it did not
inherit the global react-select__input theme color. Set color to
var(--center-channel-color) on the input and input-container to match
placeholder and single-value styling.
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Devin Binnie <devinbinnie@users.noreply.github.com>
* MM-66082: Fix invite modal paste by reading text/plain from clipboard
UsersEmailsInput always called preventDefault on paste but read clipboard
data with the legacy 'Text' type, which is empty in modern browsers.
That blocked default paste while adding nothing. Read text/plain first,
fall back to Text, skip custom handling when there is no meaningful
content, and only preventDefault when handling pasted text.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* Fix ESLint no-void in UsersEmailsInput paste handler
Replace void promise with .catch(() => undefined) so async paste
processing satisfies the no-void rule.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* MM-66082: Keep arbitrary pasted invite text as draft
Only treat obvious list pastes (comma, semicolon, newline) as bulk
invite input. Let arbitrary pasted text remain in the input so the
existing search and no-match UX can handle it, and keep space-delimited
text as draft rather than splitting it into invite tokens.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* MM-66082: Restore space-delimited email paste handling
Treat space-separated paste as bulk invite input only when every token
is a valid email. Keep mixed or free-form space-separated paste as draft
text so the existing no-match search UX still applies.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* MM-66082: Fix invite paste parsing in modal input
Treat pasted input as bulk invite tokens only when it is a single valid
email, an obvious comma/semicolon/newline list, or a space-separated list
of valid emails. Leave mixed or arbitrary pasted text as draft so the
existing no-match search UX still applies. Add focused widget and invite
view regression coverage for the affected paste paths.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* tests: use example invite paste fixtures
Replace product-specific test data with example.com values, restore the
space-paste length assertion, rename the invalid-word fixture, and remove
extra clipboard MIME lookups that were not needed for the supported paste
path.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
* MM-66082: Fix invite input typing regressions
Fix premature chip creation while typing valid emails by using the paste
classifier only when it returns bulk mode, keep the valid address default
message wired correctly, and add regression coverage for typing and blur
behavior in both UsersEmailsInput and InviteView.
Co-authored-by: Maria A Nunez <maria.nunez@mattermost.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* MM-67352 Prevent composer scroll jumps on formatting click
Keep formatting controls from stealing textarea focus on mousedown so long drafts stay in place when markdown buttons are clicked. Add a regression test for the formatting bar interaction.
Made-with: Cursor
* Update webapp/channels/src/components/advanced_text_editor/formatting_bar/formatting_icon.tsx
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
---------
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
The group member popover relied entirely on InfiniteLoader to trigger the
initial getProfilesInGroup fetch, which fails under certain conditions
(slow DOM layout, stale member_count, AutoSizer timing). Dispatch the
fetch explicitly when the popover opens via onOpenChange.
Made-with: Cursor
* MM-68047: Hide update status button in RHS post header
In the RHS (and smaller screens), the "Update your status" button
was consuming space that caused the username to be truncated or
hidden. Hide the button in the RHS context so the name remains
visible.
Made-with: Cursor
* Update permission_system_scheme_settings snapshots
Snapshots were stale after manage_own_agent and manage_others_agent
permissions were added in d4d65c8cfb without a snapshot update.
Made-with: Cursor
* Revert "Update permission_system_scheme_settings snapshots"
This reverts commit b408de78f6.
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Fixing text and emojis being clipped in channel banners
- Added E2E tests that confirm that emojis respect the correct size and aren't clipping through container
* Applying PR feedback
* Running prettier on playwright tests
* Fixing E2E Tests
* Added test case for descending characters
* Fixing linter issues
* Resolving issue with e2e test failing
Adds a warning banner to the Enable Cluster Sniffing setting that
appears when sniffing is turned on, advising against use with
cloud-hosted providers such as Elastic Cloud or Amazon OpenSearch
Service.
* MM-68155: Add tooltip for urgent mention badges
Display "You have an urgent mention" tooltip on hover over the red
urgent mention badge in the sidebar channel list, global threads link,
and team sidebar button.
* Start moving user agent utils into shared package
* Remove inobounce and stop exporting isIosSafari
Based on some quick testing on my phone, inobounce is no longer needed. Both
local and Community:
1. Let you overscroll on the landing and login pages
2. Don't overscroll in a channel, a thread, or the LHS while fully zoomed out
3. Do let you overscroll when zoomed in
That also lets me reduce the size of the interface for utils/user_agent.
* Remove unneeded exports and unused functions
* Remove outdated workarounds from FileUpload component
These were only needed to support a 10 year old version of iOS Chrome and the classic app.
* Remove useOrientationHandler
This was added in https://github.com/mattermost/mattermost-webapp/pull/2504,
but I don't think the extra complexity is worth keeping it around
when we mostly support mobile view for desktop accessibility reasons.
* Replace isIosWeb/isAndroidWeb with isIos/isAndroid
These were previously needed to differentiate between the mobile web app
and the classic app.
* Replace isMobileApp with isMobile
Similar to the last commit, we used to need to differentiate
between the mobile web and the classic app. For most places,
I just replaced isMobileApp with isMobile, but I removed the
check in ProductMenuList because we want to show that link
on mobile web.
* Move isInternetExplorer and isEdge out of the shared package
Those should be removed, so I don't want to include them in
the shared package at all. I also renamed isChromiumEdge to
just isEdge since that should be its name once the old ones
are removed.
* Change how functions are re-exported to fix tests
* Update web app code to use shared user agent utils directly
* Removed useless mock
* Fix how tests mock utils/user_agent now that it's fully moved
* Actually export user_agent utils from shared package
* Adding watermarking toggle in server
* Update setting to enterprise
* Adding it to mobile security
* Updating experimental section
* Moved back to experimental settings. Added license checks
* Updating tests
---------
Co-authored-by: maria.nunez <maria.nunez@mattermost.com>
* Fixed a bug where user profile popover closed automatically when opened for the first time for a user from channel member list in RHS
* Added tests
* fixed a test
After editing a post, the main textbox now properly regains focus.
The fix uses the stored refocusId to focus the correct textbox element
(post_textbox or reply_textbox) before unsetting edit mode.
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-67592 - be changes for team admin abac channels (#35353)
* MM-67592 - be changes for team admin abac channels
* Revert team-scoped API routes, keep app layer business logic
* move from config to permission; Add cluster-aware LRU cache for policy team scope lookup
* remove unnecessary references to config value
* local/remote cache invalidation consistency for policy scope
* Replace policy scope cache with store-level team scope query
* rename functions and add comments to query
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM 67594 - policies CUD operations to team settings modal channels ABAC (#35590)
* MM-67592 - be changes for team admin abac channels
* Revert team-scoped API routes, keep app layer business logic
* move from config to permission; Add cluster-aware LRU cache for policy team scope lookup
* remove unnecessary references to config value
* local/remote cache invalidation consistency for policy scope
* Replace policy scope cache with store-level team scope query
* format files correctly
* fix mock expectations for store-query approach in tests
* rename functions and add comments to query
* revert error ids to original to prevent break tests
* adjust translations
* MM-67669 - add tab to team settings modal and basic listing
* adjust tests and fix linter
* use existing search api logic
* fix style and adjust flaky test to clean up and restore orinals
* address ai corabbit feedback and fix linter
* fix unit tests
* MM-67592 - be changes for team admin abac channels (#35353)
* MM-67592 - be changes for team admin abac channels
* fix linter
* fix ts linter for playwright
* Revert team-scoped API routes, keep app layer business logic
* move from config to permission; Add cluster-aware LRU cache for policy team scope lookup
* remove unnecessary references to config value
* local/remote cache invalidation consistency for policy scope
* Replace policy scope cache with store-level team scope query
* format files correctly
* fix mock expectations for store-query approach in tests
* rename functions and add comments to query
* revert error ids to original to prevent break tests
* adjust translations
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-67594 - support cud operations for team abac BE changes
* create the team settings policy edit section, reuse most components, add basic e2e
* move optional refresh policy list button to list component
* temp get team admins cud policies and sync job
* enhance validation and adjust e2e
* Fix testExpression permission; fix pagination of team policies; add isValidId validation
* adjust styles, handling renaming and add permission migrations
* update the permissions names, use the simple confirmation modal, define the delete modal
* fix policy deletion flow
* fix some linter issues and adjust helper tests
* remove delete from list and fix e2e
* code comments clean up
* remove CEL editor for now, clean styles, enhance e2e
* fix linter, adjust unit test
* fix linter and add missing translation
* fix policy deletion ownership and sanitize test expression
* fixed e2e tests
* rollback orphaned policy on failed channel assignment
* enforce channelless check before last_team_id fallback
* enforce channelless guard on assign fallback too
* add translations missing
* add teamId to audit payload when present
* fix refresh button pagination reset
* fix null safety in channel selector loadChannels
* use responsive width cap for team settings modal and adjust header size
* remove redundant raw term from channel search URL, add showRefreshButton prop to PolicyList component
* handle error when stamping last team ID on channelless policy
* replace Props-based ownership with in-memory LRU cache, disable save on zero channels
* make e2e tests more reliable in CI
* test skip if no license valid found
* add childCount guard to cache-hit paths and reduce TTL to 5s
* fix e2e, adjust translation
* address review feedback: flatten permission checks and separate error types
- Flatten nested permission branching in deleteAccessControlPolicy using
early returns to reduce indentation (review: isacikgoz)
- Validate teamID as input (400) before using it for permission checks (403)
in testExpression and validateExpressionAgainstRequester handlers
- Remove redundant hasSystemPermission check in searchAccessControlPolicies
since system_admin role already includes manage_team_access_rules
- Refactor ValidateTeamAdminPolicyOwnership to return (bool, *model.AppError)
separating "not owned" from "internal error" across all 8 call sites
- Update tests to assert on both return values
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* add persistent team scope to access control policies, replace in-memory cache
* fix translation
* fix case-insensitive policy search and sanitize search term input
* make policies tests have a unique name
* decouple scope/scopeID filter from TeamID in policy store
* Fix authZ bypass searchChannelsForAccessControlPolicy by forcing TeamIds to authorized team
* show unsaved changes on navigator back, and list all private channels on load
* filter already applied channels to a policy
* adjust the styles to dark mode; do not show added channels to the policy in the add channels modal
* fix linter
* MM-67967 add sync status footer to team settings (#35729)
* MM-67967 add sync status footer to team settings
* remove magic numbers and strings and polish the code
* fix linter
* fix linter: replace interface{} with any per gofmt rewrite rule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* refine getJobsByType team-scoped filtering and permissions
* fix sync footer stuck in syncing state on job creation error
* fix team-scoped job pagination in getJobsByType
* Fix authZ bypass searchChannelsForAccessControlPolicy by forcing TeamIds to authorized team
* implement ux feedback, change titles font, fix marging and scroll view jump
* MM-68135 - migrate add channels to policy modal to generic modal (#35907)
* MM-67920 unify e2e team settings tests (#35867)
* MM-67920 - extract duplicated policy editor helpers
* remove duplicate team icon test file
* rename Access Control to Membership Policies in e2e
* replace networkidle with explicit element waits
* fix attribute loading issue
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix playwright feedback issues and persist filters to the store layer in the no systemconsole path
* Improve policy scope validation and team admin security checks
* Renamed public channels to "AAA Public Channel %03d" and private ones to "ZZZ Private..." so the 55 public channels now fill the 50-result cap
* fix e2e tests and add new unit tests to improve coverage
* Improve e2e test stability: race condition handling and timeout adjustments
* Improve team-scoped ABAC policies: scope preservation, input validation, shared exclusion
* Add comprehensive ABAC test coverage: team admin ops and security validation to reduce flakyness
* Fix team policy editor back button: preserve navigation intent through Undo
* style: format import statements for better readability
* Enhance access control policy creation for team admins: enforce scope stamping from query parameters to prevent unauthorized team assignments
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add PermissionCreateAgent server-side permission definition
Define PermissionCreateAgent in the model layer with system scope,
add to SystemScopedPermissionsMinusSysconsole (feeds AllPermissions),
grant to system_user in MakeDefaultRoles(), and register a permissions
migration for existing installations (system_admin + system_user).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add exhaustive tests for PermissionCreateAgent permission
Model tests: verify create_agent is in AllPermissions, has system scope,
correct i18n fields, present in system_admin and system_user default roles,
and absent from system_guest.
Migration test: verify getAddCreateAgentPermissionMigration adds create_agent
to both system_admin and system_user, and is idempotent on re-run.
Also register the migration key in testlib mock store so server initialization
skips it during test setup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add webapp permission constants and i18n for create_agent
Add CREATE_AGENT constant to permissions.ts, display strings with
defineMessages in permissions.tsx, and i18n entries in en.json so the
permission appears in System Console Permission Schemes UI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clean up tests and minor fixups for create_agent permission
Consolidate role_test.go into table-driven tests, remove redundant comments
in permissions_migrations_test.go, add .planning/ to .gitignore, and
refresh webapp/package-lock.json.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Split create_agent into manage_own_agent and manage_others_agent
Replace PermissionCreateAgent with system-scoped own/others permissions,
update migration and defaults, and wire System Scheme UI for integrations.
Made-with: Cursor
* fixes
* Stabilize autotranslation E2E by pinning mock source language
Set LibreTranslate mock to English before the pre-enable post and Spanish
before the post-enable message so parallel tests cannot leave the mock in
a state where the new message is not translated.
Made-with: Cursor
* Revert package-lock, add more chnages
* Revert "Revert package-lock, add more chnages"
This reverts commit 7f6752c2e0.
* Drop unrelated autotranslation E2E tweak; restore package-lock
The Playwright autotranslation change was not caused by MM-65671. Revert
that test edit and restore webapp/package-lock.json after an accidental
revert of the prior package-lock update.
Made-with: Cursor
* Put package-lock back again
* fixes
* Fix migration tests for manage_own_agent on system_user role
Made-with: Cursor
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Add pluggable AI actions menu with rewrite submenu and plugin extension point
* Use cascading hover popover for AI actions submenus
* Fix lint errors in AI actions menu and related files
* Update i18n strings for AI actions menu
* Fix coding guideline violations in AI actions menu and tests
* Fix spacing
* Fix stylelint errors in use_rewrite.scss
* Support ReactNode for AI action menu item text
* Fix empty menu guard, keyboard a11y, and rewrite follow-up placeholder
* Hide rewrite actions while a rewrite is in progress
* Remove subMenuHeader from plugin API and pass isRHS context to plugin components
* Support simple click actions in AI action menu plugin API
* Fix import order in ai_actions_menu tests
* Flip AI actions submenu to open left when insufficient space on right
Adapts the viewport-aware positioning pattern from the existing SubMenu
component so the cascading submenu renders on the side with more space.
* Only flip submenu to left when right space is insufficient
* [MM-68266] Pass through menu props to popout menu item, guard at menu definition to avoid null component blocking keyboard navigation
* fix tests
* Update webapp/channels/src/components/sidebar/sidebar_channel/sidebar_channel_menu/sidebar_channel_menu.test.tsx
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* MM-66937 Remove existing code for handling composition in SuggestionBox
This breaks the ability to autocomplete on Korean characters that haven't been
committed on Firefox. Both the previous and new versions seem to work fine on
Chrome though.
* Add E2E test for SuggestionBox composition in Find Channels modal
* Fix misnamed field
* MM-68235: Rename user-visible "Custom Profile Attributes" to "User Attributes"
Update all English i18n translation values and inline
defaultMessage strings to use the current product name
"User Attributes" instead of the old "Custom Profile
Attributes" / CPA naming.
Add naming-history comments to key CPA source files
(model, app, api4, admin component) explaining that
internal identifiers retain the old naming for backward
compatibility with REST APIs, WebSocket events, and the
Property System Architecture group name. This helps
future developers understand the mapping without needing
to track down the rename history.
* Fix missed lowercase "custom profile attribute" strings
* MM-67505 Add AnalyticsQueryTimeout setting and use when refreshing materialized views
* Fix last minute i18n change
* Disallow 0 values for AnalyticsQueryTimeout
* Fix E2E test config
* Fix post store tests crashing
* Update snapshot and revert accidental changes to it
* MM-63588: Add e2e tests for System Console Custom Profile Attributes
Add Playwright e2e tests for the System Console User Attributes page,
covering CRUD operations for custom profile attribute field definitions.
Tests cover:
- Page navigation and empty state display
- Creating text, select, and multiselect attributes with options
- Editing attribute names
- Deleting attributes (saved and unsaved)
- Duplicating attributes
- Changing attribute types (Text to Phone)
- Configuring visibility (Always show/Hide when empty/Always hide)
- Toggling "Editable by users" setting
- Batch creation (multiple attributes at once)
- Persistence verification after page reload
- Validation warnings (empty name, duplicate names)
Follows the same patterns established in MM-62558 / PR #30722 for
Profile Popup CPA tests, reusing shared helpers for field setup/cleanup.
* Fix 6 failing e2e tests for System Console User Attributes
- Remove .clear() before .fill() to prevent value-based locators from
going stale (edit name, persist after reload tests)
- Hover on visibility submenu instead of click, use force:true to handle
DOM detach during menu animation (visibility test)
- Press Escape to close dot menu before clicking Save, since the
"Editable by users" toggle keeps the menu open (editable test)
- Fix expected validation text: use "Attribute names must be unique."
instead of "Attribute name already taken." (duplicate names test)
- Increase timeout for Save button disabled assertion after deleting
unsaved attribute (delete unsaved test)
* Fix stale locators, flaky save check, and document dirty-state bug
- Use data-testid locators instead of value-based selectors for inputs
that get mutated by fill() (edit name + persist reload tests)
- Wait for Save button to return to disabled after save before API
check to avoid flaky field-not-found failures
- Add test.fail() for Save-stays-enabled bug after deleting an unsaved
row so CI passes today and alerts when the app bug is fixed
- Add LOCATOR NOTE to file header explaining the lazy locator pitfall
* Address CodeRabbit review: save helper, locator fix, test rename
- Add saveAndWaitForSettled() helper and apply to all 11 save paths
for consistent post-save stabilization before API verification
- Fix deptInput locator: use input[value] instead of broken
filter({hasText}) which doesn't match input element children
- Rename "different types" test to "multiple text attributes" to
match actual coverage
* MM-63588: add SystemProperties page object and refactor spec to POM
Extract all UI selectors from user_attributes.spec.ts into a
SystemProperties page object class, eliminating inline selectors
from the test file. Replace coarse networkidle with waitForResponse
on the actual save API endpoint.
* fix playwright e2e test failures
- selectType was failing as 'select' caught both 'select' and 'multi-select'
- Prior behavior where Save button wasn't returning to disabled appears to be working now, removing test.fail()
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Remove system_secure_connection_manager role
The dedicated role for delegating secure connection management is no
longer needed. The manage_secure_connections permission remains and
continues to be granted to system admins via AllPermissions.
Removes the role definition, migration, permissions migration, UI
components, i18n strings, and all associated tests across server,
webapp, and e2e-tests.
* Fix interactive dialog bugs: dynamic select lookups, radio values, and field refresh
- Cache sanitized fields in AppsForm to preserve object identity across
renders, preventing AsyncSelect from remounting and re-triggering
dynamic select lookups on every keystroke in any field
- Normalize radio field default values to plain strings in getDefaultValue()
so the value shape is consistent with what RadioSetting.onChange returns
(e.target.value). Accept both string and {label, value} object shapes
downstream for backwards compatibility.
- Fix radio field [object Object] in submission by extracting .value from
AppSelectOption objects in convertAppFormValuesToDialogSubmission
- Include selected_field in refresh submission so plugins know which field
triggered the refresh. Use a shallow copy of accumulatedValues to avoid
permanently contaminating the accumulated state.
- Send empty string for cleared select fields in refresh submissions.
Previously, extractPrimitiveValues skipped null values and the spread
merge never overwrote stale accumulated keys.
* refactor(brand_image_setting): migrate to function component
* test(brand_image_setting): update tests
Migrated tests to React Testing Library.
* refactor(brand_image_setting): wrap functions with useCallback
* test(brand_image_setting): use nock to mock fetch api
* test(brand_image_setting): use findby query instead of getby
* test(brand_image_setting): remove unnecessary scope assertion
* chore(brand_image_setting): split useEffect into two
Also extracted the handleSave function and wrapped it in useCallback.
* test(brand_image_setting): add e2e test for deleting brand image
* test(brand_image_setting): use destructured functions
* chore: delete unnecessary comment
* Revert "test(brand_image_setting): use destructured functions"
This reverts commit 71dc6628ed.
* Fix bad merge
* Fully revert changes to test from merge
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
* Fixed a bug where signup link showed up when signup was disabled
* Removed unused component
* fixed test name
* CI
* fixed a test
* fixed a commit
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* Remove unneeded references to PropTypes in TS code
* Add type definition file for SuggestionBox
* Fixed type definitions for SuggestionBoxProps and fixed usage of those props in other places
* Remove babel-plugin-typescript-to-proptypes
* Fix circular type reference and incorrect non-null assertion
* Fix a bug in decomposeKorean that caused it to only decompose the first character
* MM-66887 Fix Invite To Team modal suggesting users one key press behind
* Cherry-pick updates to ime.ts from another branch
* And cherry-pick another bit
* Remove broken and unnecessary onBlur method from UsersEmailsInput
See https://github.com/mattermost/mattermost/pull/35936/changes#r3047500882 for more information
* Rename shared_channel_manager and secure_connection_manager roles to use system_ prefix
The new roles added in PR #35354 broke the naming convention that all
system-level roles stored in Users.Roles are prefixed with "system_".
Client-side code (role.includes('system')) and server-side code (explicit
switch cases in applyMultiRoleFilters) relied on this convention, causing
users assigned to these roles to not appear in the System Console.
Also adds both roles to the applyMultiRoleFilters switch statement in
user_store.go, which was missing them entirely.
* MM-67945 Added entity decoding to message attachments
- Separated markdown utility to decode special characters with testing suite
- Applied it to remove_markdown utility and used it in
* Ensuring escaping uses RegExp.escape
* Removing footer decoding tests
* Added E2E tests for message attachment decoding
* Fixing linter errors