317 Коммитов

Автор SHA1 Сообщение Дата
Julien Tant
acc19baca0 Bound document content extraction time and decouple it from uploads (MM-69098) (#36856) (#37043)
Automatic Merge
2026-06-15 08:35:26 +02:00
Ibrahim Serdar Acikgoz
d2594e5046 Patch MM-67126 issue (#35142)
Automatic Merge
2026-02-02 12:53:32 +02:00
Mattermost Build
2a35a97a18 Relax post action requirements to allow undefined name (#33612) (#33767)
Automatic Merge
2025-08-21 13:04:04 +03:00
Harrison Healey
ce75debaca Make all internal dependencies use exact versions and ensure they match (#33564) 2025-07-28 12:44:06 +05:30
Mattermost Build
4cb8d89403 [MM-64516] Do not allow user editable attributes to be used in ABAC table editor (#32522) (#33524)
Automatic Merge
2025-07-23 08:28:42 +03:00
Mattermost Build
07a34f02b6 MM-64531: [Shared Channels] Users on different remote servers should not communicate unless the remotes have established secure connection. (#30985) (#33434)
Automatic Merge
2025-07-15 11:58:41 +03:00
Agniva De Sarker
3a6aeee57e MM-63652: Transition gossip encryption functionality to GA (#33349) (#33429)
Create a new config setting, and migrate the old values to new.

https://mattermost.atlassian.net/browse/MM-63652

Skip-Enterprise-PR: true

```release-note
NONE
```

* fix i18n

also fix unit tests

```release-note
NONE
```

* For fresh installations, default to true

```release-note
NONE
```

* gofmt files

```release-note
NONE
```

* Fixing some more strings

```release-note
NONE
```

* Update e2e tests

```release-note
NONE
```
2025-07-15 11:37:01 +05:30
unified-ci-app[bot]
b6e80b9f59 Update npm packages versions for release-10.11 2025-07-14 05:16:07 +00:00
Harshil Sharma
d1e5fdea2c Content flagging systems console settings (#31411)
* Added enable/disable setting and feature flag

* added rest of notifgication settings

* Added backend for content flagging setting and populated notification values from server side defaults

* WIP user selector

* Added common reviewers UI

* Added additonal reviewers section

* WIP

* WIP

* Team table base

* Added search in teams

* Added search in teams

* Added additional settings section

* WIP

* Inbtegrated reviewers settings

* WIP

* WIP

* Added server side validation

* cleanup

* cleanup

* [skip ci]

* Some refactoring

* type fixes

* lint fix

* test: add content flagging settings test file

* test: add comprehensive unit tests for content flagging settings

* enhanced tests

* test: add test file for content flagging additional settings

* test: add comprehensive unit tests for ContentFlaggingAdditionalSettingsSection

* Added additoonal settings test

* test: add empty test file for team reviewers section

* test: add comprehensive unit tests for TeamReviewersSection component

* test: update tests to handle async data fetching in team reviewers section

* test: add empty test file for content reviewers component

* feat: add comprehensive unit tests for ContentFlaggingContentReviewers component

* Added ContentFlaggingContentReviewersContentFlaggingContentReviewers test

* test: add notification settings test file for content flagging

* test: add comprehensive unit tests for content flagging notification settings

* Added ContentFlaggingNotificationSettingsSection tests

* test: add user profile pill test file

* test: add comprehensive unit tests for UserProfilePill component

* refactor: Replace enzyme shallow with renderWithContext in user_profile_pill tests

* Added UserProfilePill tests

* test: add empty test file for content reviewers team option

* test: add comprehensive unit tests for TeamOptionComponent

* Added TeamOptionComponent tests

* test: add empty test file for reason_option component

* test: add comprehensive unit tests for ReasonOption component

* Added ReasonOption tests

* cleanup

* Fixed i18n error

* fixed e2e test lijnt issues

* Updated test cases

* Added snaoshot

* Updated snaoshot

* lint fix

* lint fix

* review fixes

* updated snapshot

* CI

* Review fixes

* Removed an test, updated comment

* CI

* Test update
2025-07-10 17:47:16 +05:30
sabril
780c893b4f upgrade playwright dependencies (#33348) 2025-07-08 23:00:48 +08:00
Pablo Vélez
5fc74cd401 MM-64330 - filter abac users in channel invite (#31219)
* MM-64330 - filter abac users in channel invite

* implement cursor functionality for abac user filtering

* remove unnecessary comments

* refactor the backend implementation simplifying the functions

* refactor api to use opts as parameters, rename function

* add missing translation

* remove unnecesary test code

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-20 10:53:14 +02:00
Elias Nahum
731cc1fb5f Add server settings to further lock files on mobile (#30949)
* Add server settings to further lock files on mobile

* fix format with prettier

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Saturnino Abril <5334504+saturninoabril@users.noreply.github.com>
2025-06-19 09:37:32 +02:00
Devin Binnie
b1f609e6b8 [MM-61582][MM-61605][MM-61622][MM-63029][MM-63026][MM-63059] Mobile View accessibility fixes (#31328)
* [MM-61582] Ensure textbox changes size when the window is too small

* [MM-61605] Fix clipping on menu modal in mobile view

* [MM-61622] Make mobile view RHS scrollable

* [MM-63029] Fix mobile view Browse Channels modal arrangement

* [MM-63026] Make new channel body scrollable if needed, flex to full screen on mobile view

* [MM-63059] Make Settings Modal properly responsive with flexbox for mobile view

* Fix lint

* [MM-64033] Fix mobile view for User Groups, another fix for Browse Channels

* Fix notification modal

* PR feedback

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-19 11:13:42 +05:00
catalintomai
bd5ca1c07e MM-60640: [Shared Channels] Display remotes' names in Shared With tooltip (#30886) 2025-06-19 07:57:22 +02:00
Devin Binnie
bd16f4f9bf [MM-62989][MM-63039][MM-63033][MM-64174][MM-63040][MM-63032][MM-63001][MM-63006][MM-63037] Various accessibility fixes for the Create Channel modal (#30888)
* [MM-62989] Replace channel purpose input with Input component

* [MM-63039] Fix styles so that a11y--focused box shadow is applied to the private/public channel buttons

* [MM-63033] Add aria-describedby and role=alert to the URL input on create channel modal

* Fix lint

* [MM-63035] Change legend to label, fieldset to div in the Input component

* Fix i18n

* [MM-64174] Stop propagation of enter event while editing the new channel

* [MM-63037] Add role=img and an aria label to the error img icon

* Fix snap

* Revert "[MM-63035] Change legend to label, fieldset to div in the Input component"

This reverts commit e8516f3e6a266c77db2b1695a036db717041a9ef.

* [MM-63040] Remove tabindex=0 from GenericModal wrapper, fix issue with URLInput that I caused D:

* Fix snap

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-18 16:29:04 -04:00
Christopher Poile
548a47ae56 [MM-63152] LDAP Wizard (#31417)
* [MM-63717] LDAP Wizard skeleton (#31029)

* add ldap_wizard component to render its admin components

* i18n

* test adjustment

* keys and props fixes

* title fix

* fix placeholders

* fix value initialization

* linting

* remove all ...props (except custom component); any->unknown

* fix i18n (temp, will be changed in later PR)

* better return; simplify function checking/calling

* [MM-64259] Sections sidebar and navigation (#31059)

* initial sections list sidebar

* sidebar highlighting and scroll on click

* some tidying up

* add custom section titles for section sidebar

* i18n

* updating border on sections

* scss style lint

* color -> border-color

* simplify activeSectionKey initialization; remove trailing newline

* add useSectionNavigation; clean up ldap_wizard and scss; PR comments

* extract section of code into renderSidebar()

---------

Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>

* [MM-64296] Add test connection for connection settings panel (#31190)

* button -> ldap test connect api

* fix console error by sanitizing value in text component

* return detailed error as error; adjust button -> primary, flushLeft

* middle of redesigning how we do hover text, first button

* add hover text to bools and file uploads

* i18n

* add LdapSettings as api type; add new endpoint to api yaml

* allow testing without first enabling LDAP and saving config

* i18n id changes

* improve TestLdapConnection to current standards

* PR comments

* safeDereference; cleaner returns

* remove hover markdown; formatting and typing simplification

* use button for "More Info"; i18n

* finish renaming help_text_hover -> help_text_more_info

* fix error output

* only send bindpassword if it has been changed

* fix: don't send blank bindPassword when it is still *****

* merge conflict

* [MM-64480] Refactor Admin Definition (#31280)

* move ldap definition to its own file for simplicity & context

* refactor admin_definition to eliminate circular dependencies

* merge conflicts

* before: buggy userHasReadPermissinOnSomeResources; after: fix incorrect snapshot

* merge conflict: new bindPasssword definition was left behind; fixed.

* merge conflict

* [MM-63765] LDAP Wizard: User filter expandable section (#31286)

* add "more info" hover to user filter help texts; make wider

* add expandable_setting type and component

* use Dislosure show/hide pattern for accessibility

* fix tooltip scss selectors

* fix hover -> more_info; make sure translation files are correct

* use join('\n\n') instead of the eslint disable line

* Revert "use join('\n\n') instead of the eslint disable line"

This reverts commit 274667e875b34703f14fee0706cd28b0125cefc9.

* [MM-64482] LDAP Wizard - Test User filters (#31312)

* initial cut at UI and backend for test filters

* api definitions; mocks

* clean up to current standards

* [MM-64512] - Test user filters UI (#31355)

* result_count -> total_count

* json cannot marshal error, returning error as string as god intended

* render errors with icon, hover text, and better feedback texts

* gather the settings that may be in expandable sections

* remove success, use error == "" to indicate success

* [MM-64536] LDAP Wizard: Test user attributes (#31373)

* LdapFilterTestResult -> LdapDiagnosticResult; FilterName -> TestName

* implement test_attributes endpoint and limited frontend (first step)

* adding EntriesWithValue

* [MM-64550] LDAP Wizard: Test user attributes UI (#31374)

* [MM-64551] LDAP Wizard: Test group attributes (#31375)

* remove Test LDAP button (not needed); reused helptext for other btn

* implement test_group_attributes endpoint; button/client-side paths

* [MM-64552] LDAP Wizard: Test group attributes UI (#31376)

* implement Test Group Attributes button

* simplify helper functions (improves useCallback dependencies)

* show the default filter that was used on the backend in the tooltip

* show the icon when there's an error (e.g. required filter/attribute)

* fix infinite rerendering

* fix error after failed save; fix navigation unlocked after save

* empty

* Adjust message feedback given we don't test the schema anymore

* improve css; don't use inline styles

* removed unneccesary pointer indirection

* improved i18n strings and logic

* combining filters/attributes/group attributes endpoints

improve types

* improve help text for User Filter (it's tricky)

* AvailableAttrs -> AvailableAttributes

* fix for e2e tests (renamed title)

* more e2e fixes

* skip broken e2e test

---------

Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
2025-06-16 16:19:33 -04:00
Devin Binnie
74258c3b7a [MM-64425] Add configurable account deletion link (#31396)
* [MM-64425] Add configurable account deletion link

* Fix types

* PR feedback

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-12 11:00:00 -04:00
Devin Binnie
25a4839a9e Automatic channel category sorting (#30866)
* Automatic channel category sorting

* Fix types

* AIed

* Fix issue where categories are updated for all users

* Move all logic to server, clean up

* PR feedback

* Fix lint

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-06-11 14:29:36 -04:00
Nick Misasi
91862811f5 [CLD-9186] Remove onboarding tasklist, add preview banner (#31203)
* Remove pricing modal. Adjust everywhere to instead open mattermost.com/pricing. When air gapped, don't show buttons to view plans.

* Fix lint

* Further clean up of unused code. Fixes for linter

* Remove onboarding tasklist for previews, add Cloud previer banner

* Fixes for linter, i18n

* Revert dev lines

* Fix lint

* When below one minute, switch to seconds

* fix linter

* fixes for PR feedback

* useExternalLink for opening pricing modal with enriched params

* Fix i17n

* Fix style, tests

* Update webapp/channels/src/components/announcement_bar/cloud_preview_announcement_bar/index.tsx

Co-authored-by: Guillermo Vayá <guillermo.vaya@mattermost.com>

* Fix linter

---------

Co-authored-by: Guillermo Vayá <guillermo.vaya@mattermost.com>
2025-06-04 16:24:58 -04:00
Matthew Birtch
a87d29fce7 Remove redundant button styles and use proper button classes (#30929)
* remove redundant button styles and use proper button classes

* remove import for contact_us css

* fix view plans button to be xs

* tweak to disabled state on save button in floating bar

* change contact us to tertiary button like before

* updated btn-full on free edition right panel

* update contact button to be primary when shown in the trial card

* fix issue with hover state on save changes panel error state

* fix style lint issues

* update snapshots

* fixed a few license page buttons

* fix lint issue

* Update index.test.tsx.snap

* add empty end lines

* fixed scope of css so it doesn't affect product switcher

* upate button font size for xs, update bg color for button in announce bar

* fix lint error

* update missed cancel buttons to use proper classes

* fixed text spec to find the right button

* updated snapshots

* fix issue with test on cancel button

* update snapshots
2025-06-03 15:37:20 -04:00
Scott Bishel
ee0361894f MM-60200 Fix for Plugin Dialog with wrong channel ID. (#28122)
* save arguments to state for later usage

* add test

* feat: Add tests for submitInteractiveDialog with channel and thread context

* fix: Add missing properties to DialogSubmission in integration_actions.test.ts

* feat: Add channel_id to DialogSubmission objects in test file

* refactor: Move selectedThreadIdInTeam to views.threads state

* add channel id to state

* add unit test

* add unit test

* update submitInteractiveDialog

* update tests for changes

* remove log line

* refactor: Enhance submitInteractiveDialog proxy action with improved error handling

* add userID to submit data to plugin

* remove log message

* remove unnecessary default state

* lint fixes

* update unit test

* fixes from code review

* fixes from code review

* fixes from code review

* fix test, add userID to expected

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Caleb Roseland <caleb@calebroseland.com>
2025-06-02 13:12:12 -06:00
Nick Misasi
0cacee570a Remove in-product pricing modal (#31187)
* Remove pricing modal. Adjust everywhere to instead open mattermost.com/pricing. When air gapped, don't show buttons to view plans.

* Fix lint

* Further clean up of unused code. Fixes for linter

* fixes for PR feedback

* useExternalLink for opening pricing modal with enriched params

* Fix i17n

* Fix style, tests
2025-06-02 14:08:57 -04:00
Ibrahim Serdar Acikgoz
6f26ad5cec [ABAC - Table Editor] Improvements on table editor and review feedback (#31125)
* reflect review comments

* update table editor

* adjust test limits

* reflect review comments

* MM-64376

* resolve conflicts

* address review comments

* fix merge conflict error
2025-06-01 12:05:57 +02:00
Ibrahim Serdar Acikgoz
35e06a2ee8 [MM-64422] Update icons for CEL Table Editor (#31213) 2025-05-30 22:39:24 +02:00
David Krauser
761584c040 [MM-64244] Add websocket disconnect reason metric (#31032)
We've recently spent some effort improving websocket reconnection logic. With this commit, I've augmented the websocket reconnect metric to include a disconnect reason. This will help us measure the impact of these changes in production.
2025-05-30 08:15:20 -04:00
Harrison Healey
1e0621252f Explicitly list exports from mattermost-redux (#31176) 2025-05-26 15:17:17 -04:00
Devin Binnie
2358699d91 MM-64030/MM-64025/MM-63985/MM-63986/MM-63987/MM-63976/MM-64018/MM-64017/MM-64034/MM-64029 - Various accessibility fixes around User Groups modals (#31147)
* Convert user groups main modal to GenericModal, convert menu to Menu component, fixes

* Added useFocusTrap on other modals, fix DOM ordering

* [MM-64018] Add proper aria-labels to the menu button

* [MM-64025] Convert user group button to an actual button

* [MM-64017] Fixed aria-label on 3-dot menu in view user group modal

* [MM-64030] Show aria-live region when search results are rendered

* Fix tests

* PR feedback

* PR feedback
2025-05-23 20:09:06 +00:00
Pablo Vélez
f9a92c1700 Mm 63844 add end user indicators (#30971)
MM-63844 - ABAC add end user indicators to channel manage users
2025-05-15 15:25:19 +02:00
Ibrahim Serdar Acikgoz
a344b3225b [MM-61756] Attribute Based Access Control - Phase 1 (#30785)
Attribute Based Access Control - Base
* MM-63662

* MM-63919

* MM-63954

* MM-63955 

* MM-63425

* MM-63426

* MM-63458

* MM-63459

* MM-63603

* MM-63845

* MM-64146

* MM-64199

* MM-64201

* MM-64233

* MM-64247

* MM-64268

---------

Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
Co-authored-by: Pablo Andrés Vélez Vidal <pablovv2012@gmail.com>
Co-authored-by: abhijit-singh <abhijitsingh0702@gmail.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
2025-05-15 11:33:08 +02:00
Agniva De Sarker
4803892492 MM-56906: Remove redundant calls on team switch (#30771)
On page load, we load ALL channels and channel members from all teams.
But then, on team_switch, we would again load channels and channel
members from that team. This was redundant and mainly kept
because previously the websocket events were considered unreliable.

Now with reliable websockets, and client-side pings, we can detect
broken connections faster and recover without loss.

Additionally, the getAllChannelMembers call would page through
all responses on the client side. This was inefficient and incur
extra latency. To optimize for this, we introduce server-side
streaming of the full response if page is set to -1.

This optimizes the intial response as well.

https://mattermost.atlassian.net/browse/MM-56906

```release-note
Optimize team switch operation by removing calls to get channels
and channel members.
```


Co-authored-by: Mattermost Build <build@mattermost.com>
2025-05-12 20:05:46 +05:30
Devin Binnie
883711c72d [MM-62973][MM-63028][MM-63034][MM-63027] Various accessibility fixes around Browse Channels modal (#30922)
* [MM-62973] Fix order of Close button and other buttons in the header

* [MM-63028] Add aria-live status area when searching for channels

* [MM-63027] Add announcement that channel is joined

* [MM-63034] Add role=checkbox and reformat HTML to have correct custom checkbox code

* Update snapshots from generic_modal change

* PR feedback

* PR feedback

* PR feedback
2025-05-12 09:14:20 -04:00
David Krauser
67ab69606a Handle network connectivity changes in websocket (#30788)
This commit introduces listeners for network changes that will:
- Test the websocket if we get an offline event to check if we have disconnected.
- Re-connect the websocket immediately if we get an online event, and we are disconnected.

Additionally when a ping fails, we now immediately call the onclose() callback instead of waiting for the system to trigger it when the broken websocket closes. This allows us to re-connect much more quickly (since we don't have to wait for the broken websocket to get cleaned up by the system).
2025-05-09 15:39:10 -04:00
Daniel Espino García
71334c6d8b Report a problem (#30444)
* Add report a problem type and allow logs config

* Improve device type logic

* Add tests and minor fixes

* Add texts

* Fix tests by avoiding circular dependencies

* Fix test

* Fix useexternallink updating mailtos, and changing the content of query parameters

* Fix texts

* Fix e2e test

* Fix tsc

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-25 11:08:39 +02:00
Pablo Vélez
89319cafb1 Mm 61590 - trap focus in modals (#30622)
* MM-61590 - trap focus in modals

* Adjust focus trap for dynamic loading elements and multi modal support

* add tests and improve code in generic modal

* fix snapshot

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-24 11:46:36 +02:00
Agniva De Sarker
d8dbb6cc22 MM-56548: [AI assisted]Add support for incremental thread loading using UpdateAt timestamp (#30486)
Every time we load the RHS, we used to load the FULL thread always. Although
the actual ThreadViewer React component is virtualized, and the server side
API call is paginated, we still went through all the pages, to get the full
thread and passed it on to the ThreadViewer. This would be for first loads,
and subsequent loads of the same thread.

This was a bug originally, but then it was a necessity after we applied websocket event scope because
now we won't get emoji reactions of a thread if the user is not on the thread.

To fix that, we enhance the thread loading functionality by adding support for fetching
thread updates based on the UpdateAt timestamp. Now, for subsequent loads,
we only get the changed posts in a thread. The implementation:

- Adds new API parameters: fromUpdateAt and updatesOnly to the GetPostThread endpoint
- Updates database queries to support sorting and filtering by UpdateAt
- Implements thread state management to track the last update timestamp
- Adds client-side support to use incremental loading for improved performance
- Ensures proper validation for parameter combinations and error handling

This change enables more efficient thread loading, particularly for long threads
with frequent updates, by only fetching posts that have been updated since the
last view.

Caveats: For delta updates, the SQL query won't use the best index possible
because we have an index for (CreateAt, Id), but no index for (UpdateAt, Id).
However, from my tests, it is not as bad as it looks:

```
[loadtest] # EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM Posts WHERE Posts.DeleteAt = 0 AND Posts.RootId = 'qbr5gctu9iyg8c36hpcq6f3w8e' AND Posts.UpdateAt > 1623445795824 ORDER BY UpdateAt ASC, Id ASC LIMIT 61;
                                                                   QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=8.31..8.31 rows=1 width=216) (actual time=0.047..0.049 rows=0 loops=1)
   Buffers: shared hit=2
   ->  Sort  (cost=8.31..8.31 rows=1 width=216) (actual time=0.044..0.045 rows=0 loops=1)
         Sort Key: updateat, id
         Sort Method: quicksort  Memory: 25kB
         Buffers: shared hit=2
         ->  Index Scan using idx_posts_root_id_delete_at on posts  (cost=0.28..8.30 rows=1 width=216) (actual time=0.031..0.032 rows=0 loops=1)
               Index Cond: (((rootid)::text = 'qbr5gctu9iyg8c36hpcq6f3w8e'::text) AND (deleteat = 0))
               Filter: (updateat > '1623445795824'::bigint)
               Buffers: shared hit=2
 Planning:
   Buffers: shared hit=3
 Planning Time: 0.508 ms
 Execution Time: 0.106 ms
(14 rows)
```

We still get an index scan with index cond. Although there's a filter element, but atleast we get the whole thread with the index.
My thinking is that while the whole thread might be large, but after that, updates on a thread should be incremental.
Therefore, we should be okay without adding yet another index on the posts table.

This is just the first step in what could be potentially improved further.

1. We shouldn't even be loading the full thread always. But rather let the virtualized viewer
load more posts on demand.
2. If a post has been just reacted to, then we need not send the whole post down, but just the
reaction. This further saves bandwidth.

https://mattermost.atlassian.net/browse/MM-56548

TBD: Add load-test coverage to update the thread loading code

```release-note
NONE
```
---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-22 10:43:13 +05:30
Saturn Abril
d631974e88 MM-63820 chore(e2e): update dependencies and docs (#30807)
* chore(e2e): update dependencies and docs

* update the use of postMessage, expose 8065 on test server and fix flakiness on profile popover
2025-04-22 02:02:55 +08:00
M-ZubairAhmed
502506a517 [MM-55277] Team's menu doesn't follow standard accessible keyboard behavior (#29917) 2025-04-18 19:18:54 +05:30
Jesse Hallam
4a93939359 MM-63728: Add license load metric endpoint and UI indicator (#30700)
* Add license load metric endpoint and UI indicator

Adds an API endpoint to calculate and return license usage as a load metric, and displays this metric in the About dialog. The metric is calculated as (MAU/licensed users)*100.

Additionally:
- Renamed function to be consistent with API endpoint name
- Added proper i18n strings for error messages and UI elements

* Fix TypeScript null check in about_build_modal.tsx

* MM-63728: Update OpenAPI documentation for license load metric

Update the OpenAPI documentation and code comments to correctly describe the license load metric calculation as using a multiplier of 1000 instead of percentage.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* MM-63728: Use float for license load metric calculation

Modify the license load metric calculation to use floats throughout the computation process while still returning an integer result. This maintains the existing API but improves the precision of the calculation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* improve tests manually

* Update server/channels/api4/license_test.go

Co-authored-by: Doug Lauder <wiggin77@warpmail.net>

* Update server/channels/api4/license_test.go

Co-authored-by: Doug Lauder <wiggin77@warpmail.net>

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
2025-04-17 17:29:46 -03:00
Nick Misasi
495a49b896 Feature/audit certificate upload (#30223)
* feat: Add certificate upload option for audit logging settings

* Commit current changes

* Additions

* MM-62944 Fix fileupload settings not being clickable

* Support for uploading a cert for experimental audit logging cert. Pre cloud implementation in the backend

* Forgot to add new hook

* Add support for setting custom audit log certifcates in Cloud

* Permissions

* I18n

* Change order

* Linter fixes

* Linter fixes, add openapi spec

* additions for openapi

* More openapi fixes because it won't run locally

* Undo, cursor went rogue

* newline fix

* Align types properly

* Fix i18n

* Fix i18n AGAIN

* Fix error

* Update api/v4/source/audit_logging.yaml

---------

Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-16 09:34:18 -04:00
David Krauser
88d5ad06b4 [MM-63583] Send websocket ping immediately after connecting (#30579) 2025-04-11 09:59:22 -04:00
Saturnino Abril
cf68cfdf4b bump playwright lib to 10.8.0, update dependencies and update snapshots (#30662) 2025-04-08 16:21:50 +08:00
Harshil Sharma
d2173eb664 Show channel banner in channel (#30514)
* Adde MySQL and Postgres migrations

* Replaced select * with column names

* removed all * from channel SQL store

* cleanup

* Fixed a duplicate column

* cleanup

* Added migrations and store support

* WIP

* used channelname slice in a missed place

* Handled patch

* Added app level tests

* Added API layer tests

* Added API layer tests

* WIP

* converted to query builder

* cleanupo

* added not null and default constraints

* Fixed test

* fixed file name

* review fixes

* review fixes

* updated migration file

* fixed text

* Review fixes

* WIP

* rendered banner

* WPI

* Fixed tooltip and markdown styling

* test: Add comprehensive tests for ChannelBanner component

* refactor: Use renderWithContext in channel_banner test

* WIP

* updated channel banner test

* Updated channel view test

* getContrastingSimpleColor tests

* Added tests

* rendered channel banner

* feat: Add comprehensive tests for ChannelBanner component

* Updated tests

* Made a lazy component

* Added underline to links in channel banner

* renamed param

* Created a selector for checking if channel banner is enabled or disabled

* addded test file

* test: Add tests for selectShowChannelBanner selector

* Added tests

* lint fix

* Used premium SKU constants

* Fixed a redux test
2025-04-04 14:53:03 +05:30
Scott Bishel
21ca303b5e MM-62698 Handles additional property types in the profile popover form. (#30318)
* fix for testing with server

* revert feature flag

* update profile popover for other property types

* lint fixes and test fixes

* src/components/user_settings/general/user_settings_general.tsx

* update from review

* lint fixes and type fixes

* review fixes

* fixes for property changes

* update properties

* fix tests

* fix tests

* update when_set and hidden

* update test for visiibility hidden

* add required fields to tests

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-02 17:41:06 -06:00
Scott Bishel
c417ac1b57 MM-62699 Add additional property types to user profile form (#30317)
* fix for testing with server

* revert feature flag

* user settings to handle other property types

* lint fixes

* update css so container will grow with several multiselect values

* change CPASelectOption to PropertyFieldOption

* lint fix

* lint and style fix

* review fixes

* fixes for change in UserPropertyFields

* update url validation

* update url validation

* update unit test

* Update webapp/channels/src/components/user_settings/general/user_settings_general.tsx

Co-authored-by: Caleb Roseland <caleb@calebroseland.com>

* fix: Handle missing options in user settings attribute rendering

* update handling of single/multi values

* remove unused file

* partially update properties

* make attrs property required

* revert change to user_properties_utils.ts

* fix bad merge

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Caleb Roseland <caleb@calebroseland.com>
2025-04-02 15:15:14 -06:00
Caleb Roseland
035b9ad402 MM-62696, MM-62697: CPA Ext. Types & Visibility in System Console (#30511)
* Squashed commit of the following:

commit 42ef1ff8c3ff881b0f21cb4de23a5964f0bb106b
Merge: 4940da4326 c049748b88
Author: Mattermost Build <build@mattermost.com>
Date:   Fri Mar 14 21:15:22 2025 +0200

    Merge branch 'master' into MM-62695

commit 4940da4326ff787dd43fc486f06be415257181ae
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 12:14:45 2025 -0700

    manage error the same way property field and value do

commit cd9ec590264ca3751a55fc0926318cbb6f46d471
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 12:05:02 2025 -0700

    sanitize and validate

commit 2672e90b06331ff2e31a7807737cc1feff1c1beb
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 12:02:20 2025 -0700

    use Len test method

commit d101950d655c7d6fd7a668a15554cc52a1d42667
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 11:59:12 2025 -0700

    rearrange consts

commit ed1b8f66fb08f7be38615ced74282380d5d680b7
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 11:58:56 2025 -0700

    rename CPASortOrder method

commit d3bc303fa3c9694d2f6d1531186f4fbe69efb956
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 11:54:24 2025 -0700

    rename CustomProfileAttributes in method to CPA

commit b2323d44a6c3f31ea7c798f8a88c62878d5d2cdf
Author: Julien Tant <julien@craftyx.fr>
Date:   Fri Mar 14 11:54:02 2025 -0700

    Add SAML and LDAP attr

commit d411ae9da5a078cfbac60c5662bee27622ff31e5
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Mar 12 11:58:21 2025 -0700

    i18n

commit 27bc74c71462ae08d496104c908454ebc4f2def3
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Mar 12 11:11:23 2025 -0700

    fix TestDeleteCPAField test

commit 0d77071225d8575ace89cbe38c6c06fa94d7696b
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Mar 12 10:28:49 2025 -0700

    err->appErr

commit fe87a68caa49c7264c20c32cd4f598ffd18d503f
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Mar 12 10:22:13 2025 -0700

    i18n

commit 3b3ddf978fce66d9506416a10c03b21d6a12e9d0
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Mar 12 10:21:12 2025 -0700

    tests

commit 2f898bd53b832dea60dcdb960a71cd47709cddf8
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Mar 11 15:09:12 2025 -0700

    add validation and tests

commit a8c20841af6e82a6bf4f5dde6324b5e56c4d754e
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Mar 11 13:45:53 2025 -0700

    code style

commit 5bb3868b2ce93b9eb6e9d0836c597fa1176fbbbd
Merge: a4180d5d8f 7c25de2cff
Author: Mattermost Build <build@mattermost.com>
Date:   Tue Mar 11 22:24:06 2025 +0200

    Merge branch 'master' into MM-62695

commit a4180d5d8ff5e23a7a0a73b08806d37289e076ce
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Feb 25 11:53:54 2025 -0700

    use CPAField

commit 988177024ceebe73750ce48c40ea0a9ca6db75d6
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Tue Feb 25 10:52:47 2025 -0700

    refactor: Move validateCustomProfileAttributesField to Validate method on CPAField struct

commit 783e64472c7ef3c1e33ce9a94b0716e96a72b105
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Feb 25 10:52:45 2025 -0700

    refactor: Improve custom profile attributes field handling and validation

commit aee06af59c748e74e5dc7718c1529527ac8c052a
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Tue Feb 25 10:50:29 2025 -0700

    test: Add test case for CPA field with empty attributes

commit 7ab4455f9feb88826fcf6abb3b93a8a7bb53ed3e
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Feb 25 10:50:28 2025 -0700

    refactor: Cleanup whitespace and remove empty Attrs in custom profile attributes test

commit dbdb47d75818d58739c3962d8624388214382611
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Tue Feb 25 10:48:08 2025 -0700

    test: Add test case for property field with empty attributes

commit 43872e06933b40f45caadbca7708eab283cebd8d
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Tue Feb 25 10:44:39 2025 -0700

    test: Add tests for NewCPAFieldFromPropertyField and CPAFieldToPropertyField

commit 335f6b5c8901b6ecdc1e9f031a81695ffc269029
Merge: 01f632db46 e8ef26196c
Author: Julien Tant <julien@craftyx.fr>
Date:   Tue Feb 25 10:05:43 2025 -0700

    Merge branch 'master' into MM-62695

commit 01f632db46cf0eeeea0bac337b10c66fad815a24
Author: Julien Tant <julien@craftyx.fr>
Date:   Thu Feb 13 19:16:33 2025 -0700

    removed unused i18n

commit 0214d7eb947d3d8ecfde169cb07c210ecbfc9c92
Merge: db0e371ca2 68c11e9ecb
Author: Julien Tant <julien@craftyx.fr>
Date:   Thu Feb 13 19:15:08 2025 -0700

    Merge remote-tracking branch 'origin/master' into MM-62695

commit db0e371ca239b5286e58ad264c46a8891eafbe9b
Author: Julien Tant <julien@craftyx.fr>
Date:   Thu Feb 13 19:05:58 2025 -0700

    generic options

commit 3cd62774a1b54e5e9da0c1c5b2626de4f49116ca
Merge: d95e5d9838 41e0f97176
Author: Julien Tant <julien@craftyx.fr>
Date:   Thu Feb 13 10:48:47 2025 -0700

    Merge remote-tracking branch 'origin/master' into MM-62695

commit d95e5d9838b9b00bd4ef9ec066df03cfc52596d7
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 17:07:28 2025 -0700

    style

commit 2256076ed174b25a5decc2631ee6abaa9fa1a3c1
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 17:06:22 2025 -0700

    refactor: Make color field optional in custom profile attributes

commit 7382b8ecb3964083d24d879210aa3d137983b404
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 16:40:10 2025 -0700

    fix api test

commit a54c2d653f9a2e46d989181f9ef5ffd3dcbdb8c0
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 16:02:27 2025 -0700

    lint

commit 9d2e3f78f6ba836b599df7f3cdd4766bf47cd600
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 15:50:31 2025 -0700

    use custom types rather than string

commit 4624df52cbda3cb9b0f8fa60b7a3d4f5ecf1c845
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 15:40:52 2025 -0700

    refactor: Use consistent "ValidateCPAField" in error messages for custom profile attributes

commit 42716170b7158cc4d3ce06cfef36046be6290def
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 15:36:04 2025 -0700

    fix casing in custom profilte attributes test

commit bcca3d87c47efcf95fcea2d1b380ce8aee89f7d4
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 15:33:26 2025 -0700

    refactor: Modify CustomProfileAttributesSelectOption to use lowercase JSON keys

commit 861e12c1fcaedb69d331120bd4ae58757df1fae1
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 15:29:23 2025 -0700

    i18n

commit a44f6f40eb5babab5f72a49078bec110a4645ddb
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 15:21:08 2025 -0700

    improve test

commit b2f002016fb7438a4507f9cb1cc236a43fb71e27
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 15:10:00 2025 -0700

    test: Add test case for preserving option IDs when patching select field

commit aac155ef23866d7b85ef49483eec5b610b2a8bc0
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 15:04:18 2025 -0700

    don't do validation in constructor

commit a88c092768fb0c46b76e72d6e27f417d3f25ba86
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 15:00:10 2025 -0700

    feat: Enhance ID validation and trimming in custom profile attributes

commit b6fb5f274a97f9de4d80899a406b4397d2a4983e
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 14:57:24 2025 -0700

    test: Add test cases for preserving IDs in custom profile attributes

commit bbb7f3e2610f4ebc96c6043504710f359d48a733
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 14:56:15 2025 -0700

    refactor: Update CustomProfileAttributesSelectOption constructor to prioritize ID parameter

commit dbd1728a14fd708e60a3c1180b21a155221a032a
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 14:50:14 2025 -0700

    feat: Add validation for custom profile attributes fields

commit e87689571bde77c2881f50af537930be9355f815
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 14:44:15 2025 -0700

    test: Add comprehensive test for NewCustomProfileAttributesSelectOptionFromMap

commit a2292d44ff2cc496e36633440c3d0cbdb1930e45
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 14:43:14 2025 -0700

    feat: Add support for lowercase and title case keys in custom profile attributes map

commit 47ca1848767d597f8305c4c183a68be476c034b9
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 14:43:12 2025 -0700

    fix: Update custom profile attributes map keys to use capitalized names

commit e8de7dfc6d01c73064c10f65e0ecc86c4b2ae320
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 14:01:31 2025 -0700

    feat: Add comprehensive test cases for custom profile attributes field validation

commit e798a53170d0aedbe25916cdaef3a11ac4191fd5
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 13:56:25 2025 -0700

    add default visibility

commit e54ea2ba2f19bbcea06c9deed1a28923a2db5532
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 13:22:04 2025 -0700

    fix tests

commit db1839a6e9b7d6a86ae334fa7bcae5e3aa622295
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 13:18:51 2025 -0700

    feat: Add index number to validation error messages in custom profile attributes

commit 35e29a0dfd3fb3cc09b7a2ec9234791719224c01
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 13:18:49 2025 -0700

    refactor: Add validation and creation methods for custom profile attributes

commit eac47527d27607fef30e840175c6ddb855445467
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 12:49:00 2025 -0700

    feat: Add validation to prevent empty custom profile attribute options

commit 1baece68f945de3d8fe8d4fe9df0ebcb243ba5f7
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 12:48:36 2025 -0700

    refactor: Rename NewCustomProfileAttributeSelectOption to NewCustomProfileAttributesSelectOption

commit 43710b018ab102f74ecaf2339e29593ae5dd3f55
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 12:46:43 2025 -0700

    refactor: Replace map[string]bool with map[string]struct{} for key existence check

commit 3263b04478cf69533e298535f75a9d6f252e46de
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 12:46:06 2025 -0700

    feat: Add IsValid method to validate CustomProfileAttributesSelectOptions

commit 4531710f560fbc22ab76f6a67597e154fec3c896
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 12:46:04 2025 -0700

    refactor: Fix typo in custom profile attributes select option function name

commit c1c821275c574e15a0e03987098891e191e9aa55
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 12:42:50 2025 -0700

    gofmt

commit 328c898a3f0c50f8b0dd83aa37c84c099342a8a4
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 12:41:14 2025 -0700

    refactor: Trim spaces from name and color in custom profile attribute select option constructor

commit b924431499b1b1472f377fd6c8bc1e726e8857c3
Author: Julien Tant <julien@craftyx.fr>
Date:   Wed Feb 12 12:41:12 2025 -0700

    feat: Add custom profile attributes model with validation and constants

commit 463ad161c5141cc8994bab0278cdc1df54f4b4e3
Author: Julien Tant (aider) <julien@craftyx.fr>
Date:   Wed Feb 12 12:40:19 2025 -0700

    test: Add unit tests for custom profile attributes select options

* sort_order int temp

* name, type menu, dot menu

* values add/remove

* disabled when deleted

* - max length
- full height
- validate options
- clear attrs.options when not select/multiselect

* Revert "sort_order int temp"

This reverts commit ed675983c21965d7a9534e6c7b4eb38b8a751002.

* Revert "Squashed commit of the following:"

This reverts commit faf8b01169f0c285b7c77333f601e3cc7a1f4f18.

* field values test

* test type menu

* test table

* fix dot menu item id

* test delete modal

* test dot menu

* fix system_properties test

* fix user_properties_utils tests

* fix attr sort_order type

* i18n

* fix lint

* fix test types

* lint scss

* disable email type

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2025-04-02 13:46:28 -05:00
Saturnino Abril
c3f02b8ebc upgrade playwright dependencies, server config and client config types for v10.7 (#30605) 2025-04-03 00:35:06 +08:00
Julien Tant
c440a3223e [MM-63513] Turn Cross team search feature flag into a setting option (#30518)
* feat: Add EnableCrossTeamSearch configuration option to ServiceSettings

* feat: Add EnableCrossTeamSearch configuration option to ServiceSettings

* feat: Enable cross-team search by default

* include old FF in client config
2025-03-26 10:37:12 -07:00
David Krauser
394ee75889 Add WebSocket client ping implementation (#30293)
This commit introduces new functionality on the client side to send PING messages over the websocket. If the server doesn't respond within PING_INTERVAL (currently 30 seconds), the connection is closed and re-created. This will allow us to find broken connections more quickly.
2025-03-25 17:50:21 -04:00
Andy Lerandy
7770c03919 [GH-30077] New actions for websocket group member update (#30086)
* Added: Update on `groups` & `profiles` on websocket.
2025-03-20 09:28:46 -04:00
Ben Cooke
ccd8a60168 Plugin groups (#30320)
* add new pluginapi methods

* SAML login hook

* set ReAddRemovedMembers to true for plugin groups

* change to DoLogin signature for SAML
2025-03-13 12:00:15 -04:00