Commit Graph
22066 Commits
Author SHA1 Message Date
Nick Misasiandcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> ac9d99bdd4 Add agent-browser skill and update cloud agent docs (#35534)
* Add agent-browser skill

* Update AGENTS.CURSOR.md

* Add guidance for localization

* Update .agents/skills/agent-browser/references/authentication.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-09 11:13:00 -04:00
0c06c26285 Fix multiselect dynamic data source default splitting (#35340)
When a multiselect dialog field uses data_source: "dynamic", a
comma-separated default value (e.g. "Product1,Product2") was rendered
as a single chip instead of two separate pre-selected chips. 
---------

Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-09 08:28:04 -06:00
Harrison Healey dd08e0e63d SEC-9289 Port scripts/update-versions to a shell script (#35417)
* Port scripts/update-versions to a shell script

* Update the scripts to change the version to use jq

* Add the shared package

* Update webapp/scripts/CLAUDE.OPTIONAL.md

* Update webapp/scripts/CLAUDE.OPTIONAL.md
2026-03-09 09:49:36 -04:00
Weblate (bot)andmaster7 dc035b8f09 Translations update from Mattermost Weblate (#35531)
* Translated using Weblate (Polish)

Currently translated at 96.0% (6775 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Polish)

Currently translated at 96.3% (6799 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Polish)

Currently translated at 96.6% (6820 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Polish)

Currently translated at 96.9% (6840 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Polish)

Currently translated at 97.2% (6860 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/

---------

Co-authored-by: master7 <marcin.karkosz@rajska.info>
2026-03-09 14:30:33 +01:00
sabrilandMattermost Build 6b28864fdc E2E/Cypress: Upgrade cypress to 15.11 (#35466)
* chore: upgrade cypress to 15.11

* update per comment

* update flaky test (while here)

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-09 16:01:04 +08:00
sabril 0c0d2eb373 fix: E2E-only PR image tag for release branches (#35472) 2026-03-09 16:00:29 +08:00
B Sai Thrishul 06d8068573 docs(auth): Clarify Google SSO username/email sync behavior (#34475)
* docs(auth): Add clarification note about Google SSO username/email sync behavior

* i18n: Add translation for SSO username sync note

* Fix linting errors in User Settings Security

Fixed react/jsx-tag-spacing and other linting issues in user_settings_security.tsx.

Also updated webapp/package.json to enforce npm engines.

* Fix: Revert whitespace changes in package.json and en.json

* Fix: Reorder en.json keys alphabetically to satisfy check-i18n

* Fix: Scope Google SSO sync note to Google service and use block element
2026-03-08 20:36:36 +00:00
dependabot[bot]anddependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> 56953189f3 Bump the github-actions-updates group with 11 updates (#35500)
Bumps the github-actions-updates group with 11 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `4.2.2` | `6.0.2` |
| [actions/setup-node](https://github.com/actions/setup-node) | `6.2.0` | `6.3.0` |
| [docker/login-action](https://github.com/docker/login-action) | `3.7.0` | `4.0.0` |
| [docker/build-push-action](https://github.com/docker/build-push-action) | `6.19.2` | `7.0.0` |
| [anthropics/claude-code-action](https://github.com/anthropics/claude-code-action) | `1.0.54` | `1.0.70` |
| [github/codeql-action](https://github.com/github/codeql-action) | `4.32.3` | `4.32.6` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.2.0` | `6.3.0` |
| [tj-actions/changed-files](https://github.com/tj-actions/changed-files) | `47.0.4` | `47.0.5` |
| [getsentry/action-release](https://github.com/getsentry/action-release) | `3.1.1` | `3.5.0` |
| [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3.12.0` | `4.0.0` |
| [mikepenz/action-junit-report](https://github.com/mikepenz/action-junit-report) | `6.2.0` | `6.3.1` |


Updates `actions/checkout` from 4.2.2 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.2...de0fac2e4500dabe0009e67214ff5f5447ce83dd)

Updates `actions/setup-node` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/6044e13b5dc448c55e2357c09f80417699197238...53b83947a5a98c8d113130e565377fae1a50d02f)

Updates `docker/login-action` from 3.7.0 to 4.0.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/c94ce9fb468520275223c153574b00df6fe4bcc9...b45d80f862d83dbcd57f89517bcf500b2ab88fb2)

Updates `docker/build-push-action` from 6.19.2 to 7.0.0
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/10e90e3645eae34f1e60eeb005ba3a3d33f178e8...d08e5c354a6adb9ed34480a06d141179aa583294)

Updates `anthropics/claude-code-action` from 1.0.54 to 1.0.70
- [Release notes](https://github.com/anthropics/claude-code-action/releases)
- [Commits](https://github.com/anthropics/claude-code-action/compare/0cf5eeec4f908121edd03a81411b55485994f8d3...26ec041249acb0a944c0a47b6c0c13f05dbc5b44)

Updates `github/codeql-action` from 4.32.3 to 4.32.6
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/9e907b5e64f6b83e7804b09294d44122997950d6...0d579ffd059c29b07949a3cce3983f0780820c98)

Updates `actions/setup-go` from 6.2.0 to 6.3.0
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5...4b73464bb391d4059bd26b0524d20df3927bd417)

Updates `tj-actions/changed-files` from 47.0.4 to 47.0.5
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/7dee1b0c1557f278e5c7dc244927139d78c0e22a...22103cc46bda19c2b464ffe86db46df6922fd323)

Updates `getsentry/action-release` from 3.1.1 to 3.5.0
- [Release notes](https://github.com/getsentry/action-release/releases)
- [Changelog](https://github.com/getsentry/action-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/action-release/compare/00ed2a6cc2171514e031a0f5b4b3cdc586dc171a...dab6548b3c03c4717878099e43782cf5be654289)

Updates `docker/setup-buildx-action` from 3.12.0 to 4.0.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/8d2750c68a42422c14e847fe6c8ac0403b4cbd6f...4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd)

Updates `mikepenz/action-junit-report` from 6.2.0 to 6.3.1
- [Release notes](https://github.com/mikepenz/action-junit-report/releases)
- [Commits](https://github.com/mikepenz/action-junit-report/compare/74626db7353a25a20a72816467ebf035f674c5f8...49b2ca06f62aa7ef83ae6769a2179271e160d8e4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-updates
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
- dependency-name: docker/login-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-updates
- dependency-name: docker/build-push-action
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-updates
- dependency-name: anthropics/claude-code-action
  dependency-version: 1.0.70
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-updates
- dependency-name: github/codeql-action
  dependency-version: 4.32.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-updates
- dependency-name: actions/setup-go
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
- dependency-name: tj-actions/changed-files
  dependency-version: 47.0.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions-updates
- dependency-name: getsentry/action-release
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
- dependency-name: docker/setup-buildx-action
  dependency-version: 4.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions-updates
- dependency-name: mikepenz/action-junit-report
  dependency-version: 6.3.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-07 13:36:18 +08:00
sabrilandMattermost Build 1ffbac9626 MM-67617 RTL migration, batches M21 to H1 (#35465)
* test: batches m21 to h1 bulk Enzyme to RTL migration

* update per suggestions

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-07 13:00:44 +08:00
f1b9aa052e Rename Content Flagging to Data Spillage Handling (#35407)
* Rename Content Flagging to Data Spillage Handling

Update all user-facing text to use "Data Spillage Handling" and
"Quarantine for Review" terminology. Rename i18n keys that referenced
content flagging. Auto-patch bot display name on pre-existing servers.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fixed searchable stringgs

* Revert unintended package-lock.json changes

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix i18n extract check: correct typo and key ordering

Fix "posed" -> "posted" typo in keep/remove quarantine modal
defaultMessages. Move admin.contentFlagging.title to correct
alphabetical position in en.json.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix webapp tests for Data Spillage Handling rename

Update test assertions to match renamed i18n strings:
notification settings, content reviewers, and additional
settings tests now expect the new quarantine terminology.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Use translatable i18n strings for notification messages

Replace hardcoded "flagged for review" notification templates with
i18n.T() calls using "quarantined for review" terminology. Add six
new server i18n keys for author, reporter, and reviewer notifications.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix server i18n key mismatches and update test assertions

Rename remaining app.content_flagging.* keys to app.data_spillage.*
in server/i18n/en.json to match Go code references. Fix the
quarantine_post_confirmation key name. Update test assertions to
match new "quarantined for review" terminology.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Fix gofmt formatting in content_flagging.go

Co-authored-by: Cursor <cursoragent@cursor.com>

* Prevent nil bot on PatchBot failure in getContentReviewBot

Use a separate variable for PatchBot result so the original bot
is preserved if the display name update fails.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Reorder server i18n keys after extract

Run mmgotool i18n extract to sort entries into correct
alphabetical order.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Replace i18n.T() with fmt.Sprintf for notification messages and fix test assertions

Use direct string formatting for bot notification messages instead of
i18n translation keys, which were being removed by mmgotool i18n extract
due to indirect key references. Also update test expectations for renamed
error keys (content_flagging -> data_spillage).

Co-authored-by: Cursor <cursoragent@cursor.com>

* Update default quarantine reasons to DISC-aligned terminology

Replace generic content moderation reasons with defense/intelligence
sector terminology: Classification mismatch, Need-to-know violation,
PII exposure, OPSEC concern, CUI violation, Unauthorized disclosure,
and Other. Updated across model, API tests, webapp tests, and e2e tests.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Adding a string missing from bad merge

* Update remaining flagged terminology and icon for data spillage rename

- Change post menu icon from flag-outline to alert-outline
- Update reviewer notification: "quarantined" -> "submitted" a message
- Update action notifications: "flagged message" -> "quarantined message"
- Update modal errors: "flagging" -> "quarantining" this message
- Update report title: "flagged" -> "submitted" a message for review
- Update e2e page object locator for renamed menu item

Made-with: Cursor

* Fix tests

* Fix quarantine icon alignment in post dot menu

Use AlertOutlineIcon React component with size={18} instead of raw
<i> tag to match the sizing of all other menu item icons.

Made-with: Cursor

* Fixed E2E tests

* Missing test fix

* Fix E2E tests

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-06 21:15:01 -05:00
5ddd76ec39 Development environment setup (#35513)
* Add AGENTS.md with Cursor Cloud development environment instructions

- Documents service architecture (Go server + React webapp + PostgreSQL)
- Covers how to start services, run lint/tests/builds
- Notes key gotchas for dev setup (config auto-generation, client symlink, SMTP errors)
- Specifies Node.js 24.11 and Go 1.24.13 version requirements

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Update AGENTS.md with dual-repo enterprise development setup

- Document enterprise repo at $HOME/enterprise and plugin-agents at $HOME/mattermost-plugin-agents
- Add git authentication instructions for cross-repo operations with CURSOR_GH_TOKEN
- Document enterprise server build, run, and plugin deployment workflow
- Add cross-repo PR workflow instructions
- Include BUILD_ENTERPRISE_DIR usage for all make commands

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Rewrite AGENTS.md: add plugin config docs, move automatable steps to update script

- Add Agents plugin configuration section with full JSON structure and API usage
- Document ANTHROPIC_API_KEY requirement and config-must-be-object gotcha
- Remove instructions now handled by update script: config.override.mk, client
  symlink, git insteadOf cleanup, remote URL cleanup
- Trim redundant sections for conciseness

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* AGENTS.md: use make run/restart-server workflow, document TEAM EDITION gotcha

- Replace manual go build/run instructions with make run and make restart-server
- Emphasize BUILD_ENTERPRISE_DIR must be passed to every make command
- Document that 'TEAM EDITION' label is license-dependent, not build-dependent
- Add verification steps for confirming enterprise code is loaded

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* AGENTS.md: add TEST_LICENSE/MM_LICENSE for enterprise licensing

- Pass MM_LICENSE=$TEST_LICENSE in make run and make restart-server commands
- Document that the license unlocks enterprise features and removes TEAM EDITION badge
- Simplify the TEAM EDITION gotcha to focus on the fix

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Rename AGENTS.md to AGENTS.CLOUD.md, gitignore AGENTS.md

AGENTS.md is a standard file that affects real editors. To avoid impacting
non-cloud workflows, the cloud-specific instructions now live in
AGENTS.CLOUD.md (committed) and the update script copies it to AGENTS.md
(gitignored) on startup so Cursor Cloud agents still pick it up.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
2026-03-06 19:19:06 +00:00
Doug Lauder e31f471498 MM-67647 Add roles for shared channels management (#35354)
* Add shared_channel_manager and secure_connection_manager built-in roles

  Introduce two new delegated admin roles for granular Shared Channels
  permission management, allowing admins to assign shared channel and
  secure connection management to specific non-admin users without
  granting full System Admin or System Manager access.

  - shared_channel_manager: grants manage_shared_channels permission
  - secure_connection_manager: grants manage_secure_connections permission

  Includes server role definitions, app migrations, permissions migrations,
  System Console UI support, and API permission tests.
2026-03-06 10:51:21 -05:00
Guillermo Vayá f5fe8ded6b [MM-67377] Fix (#35336)
fix MM-67377
2026-03-06 13:39:48 +01:00
edgarbellot f542d7ca18 [MM-67791] Use atomic token consumption for guest magic links (#35489)
#### Summary

Use the atomic `ConsumeOnce` pattern for guest magic link token consumption, consistent with how SSO code exchange tokens are already handled.

#### Ticket Link

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

#### Release Note

```release-note
Improved token handling in the guest magic link authentication flow.
```
2026-03-06 10:47:55 +01:00
Eva Sarafianou 56f51d7df2 Use standard session handler for updateUserAuth endpoint (#35488)
Change the /api/v4/users/{user_id}/auth endpoint to use
APISessionRequired instead of APISessionRequiredTrustRequester.

This endpoint is a JSON API called via XHR and does not need
the TrustRequester flag which is intended for directly-requested
resources like images and file downloads.

Made-with: Cursor
2026-03-06 08:14:22 +02:00
sabrilandMattermost Build cbe7669851 chore: migrate flaky cypress test to playwright (#35468)
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-06 13:48:00 +08:00
sabril c513d04e7e chore: bump versions of actions (#35386)
* chore: bump versions of actions

* bump download and upload artifacts

* revert dependabot to weekly
2026-03-06 09:35:11 +08:00
Ben SchumacherandClaude Opus 4.6 99d119cf85 [MM-66846] Fix missing ES version and plugins in diagnostics (#35475)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 23:55:32 +01:00
Harrison Healey 16408fd186 Update package-lock.json with updated engines field (#35484) 2026-03-05 16:57:30 -05:00
Renato AlvesandMattermost Build cd85c7e283 Consistent use of uppercase LDAP tag (#31292)
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-05 19:16:33 +00:00
Renato AlvesandMattermost Build b9bf16135f Add operationId to content_flagging endpoints (#34231)
Needed for https://github.com/embl-bio-it/python-mattermost-autodriver

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-05 19:15:00 +00:00
Nick MisasiandClaude Opus 4.6 cbdf5536fd Add structured JSON output for recap summarization (#35496)
* Add structured outputs, response sanitization, and session context for recaps

- Wrap BridgeClient to strip markdown code fencing from LLM JSON responses,
  using explicit delegation to prevent unsanitized methods from leaking
- Add JSONOutputFormat schema to SummarizePosts for structured LLM output
- Pass user session in recap worker context for session-dependent code paths
- Pre-parse min plugin version semver at package level to avoid repeated parsing
- Hoist static JSON schema to package-level var to avoid per-call allocation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix stripMarkdownCodeFencing to handle single-line fenced payloads

Address CodeRabbit feedback: the function previously returned the original
string when fenced JSON had no newline (e.g. ```json {"a":1}```), which
would break downstream JSON parsing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Handle case/spacing variants for single-line fenced language tags

Address CodeRabbit feedback: use case-insensitive comparison for the
"json" language tag and check for whitespace separator, so inputs like
```JSON {"a":1}``` are handled correctly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Revert BridgeClient wrapper and keep only structured output changes

Remove the BridgeClient wrapper, stripMarkdownCodeFencing, and semver
pre-parse from agents.go. The scope of this PR is limited to adding
JSONOutputFormat structured outputs for recaps and the worker session
context fix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix lint: use any instead of interface{} and fix gofmt formatting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-05 19:06:05 +00:00
Doug Lauder 5d6e6733d5 MM-45293 Index all attachment content fields in Elasticsearch (#35454)
* MM-45293 Index all Slack attachment content fields in Elasticsearch

  Previously only the "text" field from Slack attachments was indexed.
  This adds title, pretext, fallback, and field titles/values, making
  posts from integrations (JIRA, GitHub, CI bots) fully searchable.
2026-03-05 09:49:20 -05:00
Felipe Martin 7e7a1b582f fix: only match root-level JSONL files when importing a zip (#35481)
* fix: only match root-level JSONL files when importing a zip

When importing a Mattermost export zip, the code iterated over all files
to find the first .jsonl by extension. Exported attachments under data/
could themselves be .jsonl files, causing the import to pick an
attachment as the manifest instead of the actual root-level JSONL file.

Extract an IsRootJsonlFile helper in the imports package and use it in
the import process worker, mmctl validator, and bulk import test to
restrict the search to files with no directory component.

* test: add integration test for import with nested JSONL decoy file

Verify that BulkImportWithPath correctly picks the root-level JSONL
manifest and ignores a decoy .jsonl inside a subdirectory, covering
the fix from ad7f230f06.
2026-03-05 15:20:17 +01:00
unified-ci-app[bot] 7f0fa4937d Update latest minor version to 11.6.0 (#35479)
Automatic Merge
2026-03-05 08:55:22 +01:00
Ben Cooke e296a314bb [MM-67677] Adjust max autotranslations workers to 64 (#35463) 2026-03-04 16:29:40 -05:00
Devin Binnieandcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> 885ebdd4f1 [MM-67425] Add an unsupported Desktop App setting and screen for users (#35382)
* [MM-67425] Add an unsupported Desktop App setting and screen for users

* Remove console.log statements

* Fix e2e test config

* Add e2e test

* PR feedback

* Update server/channels/web/static.go

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* PR feedback

* Fix i18n

* PR feedback

* PR feedback

* PR feedback

* Gofmt

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-04 15:16:11 +00:00
062abe90bd Includes deleted remote cluster infos to correctly show shared user information (#35192)
* Includes deleted remote cluster infos to correctly show shared user information

* Addressing review comments

---------

Co-authored-by: Miguel de la Cruz <miguel@ctrlz.es>
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-04 14:46:10 +01:00
sabril 014fee5950 fix: webhook server connection error in cypress (#35471)
* fix: webhook server connection error in cypress

* fix shared volume with cypress
2026-03-04 21:00:35 +08:00
a9a3d3f889 [MM-65587] Remove unused audit log file rotation settings (#35170)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-04 13:54:17 +01:00
sabril 72460bff61 fix: datetime and edit specs (#35455)
* fix: datetime and edit specs

* update per suggestion

* as commented
2026-03-04 11:30:36 +08:00
Ben Cooke 3726e87ef2 [MM-67749] Fix enter key issue for AI rewrite (#35449) 2026-03-03 22:11:14 -05:00
sabril a7930cc782 fix: flaky flag-messages.spec (#35453) 2026-03-04 10:16:11 +08:00
Jesse HallamandMattermost Build c462720186 [MM-65822] Add directory conflict checks for plugin and import uploads (#34681)
* [MM-66789] Add directory conflict checks for plugin and import uploads

Prevent security issues where plugin uploads could write into the import
directory (or subdirectories) and vice versa by adding validation checks
at the REST API level when uploading plugins or creating import uploads.

* improved handling of root directories

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-03 16:31:05 -04:00
Mattermost Build 27d054c4d3 Prepackage Playbooks FIPS v2.7.0 (#35450) (#35456)
Automatic Merge
2026-03-03 09:25:21 +01:00
Domenico RizzoandMattermost Build 8dbfb87877 MM-29974 Adds e2e tests to the plugin list command (#34866)
* Adds e2e tests to the plugin list command

Adds end-to-end tests to the pluginListCmdF function.
These tests verify scenarios where appropriate permissions
are not available, plugins are disabled, and success cases.

* Updates plugin list command E2E tests

Removes the `pluginArg` from `pluginListCmdF` calls within end-to-end tests.
Ensures test cases accurately evaluate the `pluginListCmdF` behavior when no specific plugin name is provided as an argument, improving test coverage for default listing scenarios.

Relates to MM-29974

* Simplifies plugin test defer cleanup

Refactors defer statements in plugin E2E tests to directly call `s.th.App.UpdateConfig`.
Removes redundant anonymous function wrappers, making the test cleanup code cleaner and more concise.

Relates to MM-29974

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-03-03 07:40:58 +00:00
Pablo Vélez 592408261e MM-67754 - Fix ABAC E2E tests flakiness in Enterprise CI environment (#35452) 2026-03-03 11:07:17 +08:00
Ben Cooke 7a0f83ba72 [MM-67681] Hit the right caches for Channels.GetMany and Channels.getByNames (#35399) 2026-03-02 20:33:14 -05:00
2edc2f2c05 Translations update from Mattermost Weblate (#35446)
* Translated using Weblate (Polish)

Currently translated at 100.0% (2977 of 2977 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/pl/

* Translated using Weblate (Polish)

Currently translated at 95.4% (6731 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (Polish)

Currently translated at 95.7% (6751 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

* Translated using Weblate (German)

Currently translated at 100.0% (2977 of 2977 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/de/

* Translated using Weblate (Dutch)

Currently translated at 99.8% (2972 of 2977 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/nl/

* Translated using Weblate (German)

Currently translated at 98.5% (6948 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/de/

* Translated using Weblate (Dutch)

Currently translated at 99.9% (2976 of 2977 strings)

Translation: Mattermost/server
Translate-URL: https://translate.mattermost.com/projects/mattermost/server/nl/

* Translated using Weblate (Dutch)

Currently translated at 99.8% (7040 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/nl/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 77.4% (5463 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/nb_NO/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (7053 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/nl/

* Translated using Weblate (Polish)

Currently translated at 96.0% (6771 of 7053 strings)

Translation: Mattermost/webapp
Translate-URL: https://translate.mattermost.com/projects/mattermost/webapp/pl/

---------

Co-authored-by: master7 <marcin.karkosz@rajska.info>
Co-authored-by: jprusch <rs@schaeferbarthold.de>
Co-authored-by: Tom De Moor <tom@controlaltdieliet.be>
Co-authored-by: Frank Paul Silye <frankps@gmail.com>
2026-03-02 13:15:11 +00:00
Daniel Espino García 5fdec79007 [MM-67640] Fix checks around autotranslations permission (#35351)
Automatic Merge
2026-03-02 10:09:28 +01:00
Doug Lauder 8a4632e330 Fix flaky unit tests for TestClientCreateOutgoingOAuthConnection (#35152) 2026-03-01 18:28:42 +01:00
Maria A NunezandCursor e6cd18c90b Fix IntuneSettings config access tags to use correct permission ID (#35414)
IntuneSettings fields had access:"mobile_intune" tags, but no matching
permission exists in AllPermissions. Changed to "environment_mobile_security"
to match the existing permissions defined in permission.go.

Also added TestConfigAccessTagsMapToValidPermissions to validate all config
access tags resolve to real permissions.

Jira https://mattermost.atlassian.net/browse/MM-67693

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-27 17:53:11 -05:00
Alejandro García Montoro fa7668ae0d MM-67668: Replace Promtail with OpenTelemetry collector (#35381)
* Add container name to Docker logs

This will allow for querying Loki by container's name:

  {job="docker",container_name="mattermost-postgres"}

* Configue Loki to prepare for OTLP ingestion

- Add a volume to Loki container to get the config
- Configure Loki with the expected labels so that we can query by job,
  app, container.name...

* Add OpenTelemetry collector configuration

There are three pipelines:
1. logs/mattermost scrapes the logs from mattermost.log, parsing the
   timestamp and severity, and pushes them to Loki.
2. logs/docker scrapes the Docker logs from *-json.log, parsing the
   timestamp, the log itself and the container name, and pushes them to Loki.
3. metrics/docker scrapes the Docker socket to retrieve the containers'
   uptime values and pushes them to Prometheus.

* Replace Promtail with OpenTelemetry collector

* Update build tooling for OpenTelemetry collector

1. Make sure that the logs directory is created
2. Swap Promtail with OpenTelemetry collector

* Scrape collector to get Docker stats

Prometheus needs to scrape the OpenTelemetry collector in the exposed
port to get the Docker stats, so that we can query the uptime with
metric container_uptime_seconds, which has a container_name label to
filter by container.

* Update Grafana dashboard for Docker health checks

1. Use Prometheus as the datasource in all queries
2. Simplify the mappings to either 0 (offline, red) or 1 (online,
   green).
3. Unify all queries on container_uptime_seconds, filtering by
   container_name, and making sure that the latest value we got is at most
   15 seconds old, so that it does not show stale data.
4. Add Redis health check, that was missing
5. Update the dashboard title to Docker containers

* Tune Loki and OTel collector configs for local dev

- Switch filelog receivers to start_at: beginning so existing logs are
  ingested on collector startup, not just new entries.
- Fix Docker log timestamp layout to use 9s (variable-length nanos)
  instead of 0s (fixed-width), matching actual Docker JSON log format.
- Add ingester max_chunk_age to keep chunks open longer in the
  single-instance dev setup, so that we can ingest older logs (the
  window is max_chunk_age/2).
- Relax Loki limits for local development: allow unordered writes,
  disable old-sample rejection, and raise ingestion rate/burst to 64 MB
  to avoid throttling during bulk ingest.
2026-02-27 16:48:17 +01:00
Harrison HealeyandMattermost Build 96226a9761 MM-67659 Fix marking threads as read over the WebSocket (#35384)
* MM-67659 Fix handleThreadReadChanged not working when unread_mentions or unread_replies is 0

* Update type definition for ThreadReadChanged

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
2026-02-27 10:42:23 -05:00
Bill Gardner 8069cae8f8 Update plugin-calls to v1.11.1 (#35427) 2026-02-26 16:38:34 -05:00
Eva Sarafianou 24d3fed777 Update filippo.io/edwards25519 (#35422) 2026-02-25 11:27:48 -05:00
Ben Schumacher 60fbce7d03 [MM-67671] Add CJK Post search support for PostgreSQL (#35260)
Add LIKE-based CJK (Chinese, Japanese, Korean) search support for PostgreSQL, gated behind a `CJKSearch` feature flag.

PostgreSQL's built-in full-text search (`to_tsvector`/`to_tsquery`) does not support CJK languages because it relies on whitespace-based tokenization, which doesn't work for logographic/syllabic scripts that don't use spaces between words. This PR adds a `LIKE`-based fallback for search terms containing CJK characters.

**How it works:** When the `CJKSearch` feature flag is enabled and a search term contains CJK characters (Han, Hiragana, Katakana, or Hangul), the query builder generates `LIKE '%term%'` clauses instead of `to_tsvector @@ to_tsquery` expressions. Case-sensitive `LIKE` is used rather than `ILIKE` since CJK scripts have no letter casing, which also allows potential use of standard B-tree indexes.
2026-02-25 10:18:51 -05:00
sabril 7b5c34339d E2E/Test: Migrate flaky MM-T388 to playwright (#35369)
* migrate: MM-T388 to playwright

* remove test.describe
2026-02-25 14:28:21 +08:00
Harrison Healey b831c18f67 Increase minimum version of Node to 24 and NPM to 11 (#35413)
* Increase minimum version of NPM to 11

When we updated the Node.js version, I asked Saturn to make the Node/NPM
version checks looser because I didn't know about anything that would cause
the package-lock.json or package.json formats to change. It seems like NPM 10
is causing a few fields to be removed now, so we should require 11 to avoid
thrashing on that.

* And update the Node version
2026-02-25 11:58:04 +08:00
sabril 4b8ff4e6a3 fix: flaky MM-T5521-8 (#35385) 2026-02-24 11:36:00 +08:00