From b7894f73365f14ff60eda6f38f206d0deb3bfb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20V=C3=A9lez?= Date: Fri, 12 Sep 2025 14:39:21 +0200 Subject: [PATCH 01/36] MM-65674 - add channel admin abac docs (#8372) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * MM-65674 - add channel admin abac docs * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Split ABAC page into 1 parent + 2 children * Update source/end-user-guide/collaborate/manage-channel-members.rst * Update source/end-user-guide/collaborate/manage-channel-members.rst * clarify group-sync channels can not use abac --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro --- .../admin/abac-channel-access-rules.rst | 242 ++++++++++++++++++ .../admin/abac-system-wide-policies.rst | 101 ++++++++ .../admin/attribute-based-access-control.rst | 108 ++------ .../onboard/sso-saml-technical.rst | 4 +- ...msi-installer-and-group-policy-install.rst | 24 +- .../desktop/linux-desktop-install.rst | 8 +- .../server/kubernetes/deploy-k8s-aks.rst | 25 +- .../collaborate/manage-channel-members.rst | 6 +- .../product-overview/deprecated-features.rst | 3 +- .../product-overview/desktop-app-changelog.md | 11 +- .../mattermost-desktop-releases.md | 2 +- .../mattermost-server-releases.md | 2 +- .../mattermost-v10-changelog.md | 5 + source/product-overview/version-archive.rst | 20 +- .../maximize-microsoft-investments.rst | 2 +- ...on-prem-skype-for-business-replacement.rst | 5 +- 16 files changed, 436 insertions(+), 132 deletions(-) create mode 100644 source/administration-guide/manage/admin/abac-channel-access-rules.rst create mode 100644 source/administration-guide/manage/admin/abac-system-wide-policies.rst diff --git a/source/administration-guide/manage/admin/abac-channel-access-rules.rst b/source/administration-guide/manage/admin/abac-channel-access-rules.rst new file mode 100644 index 00000000000..b6c1bb5eb35 --- /dev/null +++ b/source/administration-guide/manage/admin/abac-channel-access-rules.rst @@ -0,0 +1,242 @@ +Channel-specific access rules +============================= + +.. include:: ../../../_static/badges/ent-adv-cloud-selfhosted.rst + :start-after: :nosearch: + +Channel Admins can self-manage access controls for their private channels directly through the Channel Settings modal, without requiring System Admin intervention. For organization-wide policies created by System Admins, see :doc:`System-wide attribute-based access policies `. + +With channel access rules, Channel Admins can: + +- Create channel-specific access rules using a simple interface. +- Rules are **additive** to any system policies (both must be satisfied). +- Automatic member synchronization with immediate feedback. +- Self-exclusion prevention to avoid locking yourself out. + +Prerequisites +------------- + +- :doc:`Attribute-Based Access Control (ABAC) ` must be enabled by a System Admin in **System Console > System Attributes > Attribute-Based Access**. +- You need Channel Admin permissions and the ``manage_channel_access_rules`` permission. +- Channel access rules are available only for private channels. + +Access Channel Settings +~~~~~~~~~~~~~~~~~~~~~~~~ + +1. In a private channel where you have Channel Admin permissions, select the channel name at the top of the center pane. +2. Select **Channel Settings** from the dropdown menu. +3. Navigate to the **Access Control** tab. + +.. note:: + + The **Access Control** tab is only visible for private channels when you have the appropriate permissions and ABAC is enabled system-wide. + +Configure access rules +---------------------- + +Channel access rules use the same simple interface as system policies, allowing you to create attribute-based conditions without complex syntax. + +1. In the **Access Control** tab, you'll see any inherited system policies at the top in a blue information banner (if applicable). +2. Use the **Add attribute** button to create new access conditions: + + - **Select attribute**: Choose from available user attributes + - **Choose operator**: Select how the attribute should match: + + - **Is**: Exact match with specified value + - **Is not**: Must not match specified value + - **In**: Must match any of multiple specified values + - **Contains**: Attribute value must contain specified text + + - **Set values**: Enter the required attribute values + +3. Add multiple conditions as needed. All conditions are combined with logical AND (all must be satisfied). + +4. Select **Test access rules** to preview which users would be granted access based on your current rules. + +Auto-sync membership +~~~~~~~~~~~~~~~~~~~~ + +The **Auto-add members based on access rules** toggle controls automatic membership management: + +- **Enabled**: Users matching the rules are automatically added to the channel, and users who no longer match are removed +- **Disabled**: Rules act as a gate (preventing unauthorized joins) but don't automatically add qualifying users + +.. important:: + + - If a system policy has auto-sync enabled, Channel Admins cannot disable it at the channel level. + - If a system policy has auto-sync disabled, Channel Admins can choose to enable it for their channel. + - When no rules are configured, this toggle is automatically disabled. + +Validation and safety +~~~~~~~~~~~~~~~~~~~~~ + +Before saving changes, Mattermost validates your rules to prevent common issues: + +- **Required fields**: All attribute selections and values must be completed +- **Self-exclusion prevention**: You cannot create rules that would remove yourself from the channel +- **Conflict detection**: Rules that create impossible conditions are identified + +When you save changes that affect membership, a confirmation dialog shows you: + +- How many users will be added or removed +- Option to view the specific users affected +- Confirmation required before applying changes + +Policy inheritance +-------------------- + +When both :doc:`system policies ` and channel rules are configured: + +1. **System policies** are displayed in a blue banner at the top (read-only) +2. **Channel rules** are managed in the access rules section below +3. **Users must satisfy BOTH** system policies and channel rules to access the channel +4. Channel rules **add restrictions** but cannot weaken system policies + +Use cases and recommendations +----------------------------- + +**Ideal use cases for channel access rules:** + +- **Project-specific channels**: Restrict access to team members working on specific projects +- **Clearance-based discussions**: Ensure only users with appropriate security clearance can participate +- **Department communications**: Limit channel access to specific organizational units +- **Temporary access**: Create rules for short-term project teams or contractor access + +**Best practices:** + +- **Start simple**: Begin with basic attribute conditions before adding complexity +- **Test before saving**: Always use the "Test access rules" feature to verify your intended scope +- **Document changes**: Consider posting a message in the channel when access rules change +- **Regular review**: Periodically review rules to ensure they remain appropriate +- **Coordinate with IT**: Work with System Admins for complex organizational policies + +**When to use system policies vs. channel rules:** + +- **System policies**: Use for organization-wide standards, compliance requirements, or policies affecting multiple channels +- **Channel rules**: Use for channel-specific restrictions, project-based access, or when you need immediate control without IT involvement + +End-user experience +-------------------- + +When channels have attribute-based access controls applied, users will see clear indicators and experience specific behaviors designed to maintain security while providing transparency. + +Visual indicators +~~~~~~~~~~~~~~~~~~ + +**Channel Members panel:** + +- Information banner at the top explains that attribute-based access is enabled. +- Displays required attribute values as tags (e.g., "Engineering", "Confidential"). +- Tooltip on hover shows the attribute name for each value. + +**Add Members modal:** + +- Similar information banner and attribute value display. +- Users who don't match the access criteria won't appear in search results. +- Only eligible users can be selected and added to the channel. + +Functional restrictions +~~~~~~~~~~~~~~~~~~~~~~~~ + +When ABAC is enabled for a channel: + +- **Search limitations**: Users who don't match access criteria don't appear in member search results. +- **Invitation restrictions**: Only users meeting attribute requirements can be added to the channel. +- **Guest user exclusions**: Private channels with ABAC policies cannot have guest users invited. +- **Automatic removal**: Users who lose required attributes are automatically removed during the next synchronization. + +.. note:: + + These restrictions apply across all Mattermost clients, including web, desktop, and mobile, to ensure consistent security enforcement. + +Troubleshooting and FAQs +--------------------------- + +Common questions about attribute-based access control implementation and usage. + +Permission and access +~~~~~~~~~~~~~~~~~~~~~~ + +Why can't I see the Access Control tab in Channel Settings? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The **Access Control** tab is only visible when all of these conditions are met: + +- You have Channel Admin role or higher for the channel +- The channel is a private channel (not public, group message, or direct message) +- ABAC is enabled system-wide by a System Admin +- The Channel Admin ABAC is enabled via the configuration setting AccessControlSettings - EnableUserManagedAttributes +- Your user role includes the ``manage_channel_access_rules`` permission + +Can Channel Admins override system policies? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +No. Channel rules are always **additive** to system policies. Users must satisfy both system policies AND channel rules to access the channel. Channel Admins cannot weaken or override restrictions set by System Admins. + +What happens if I create rules that would exclude myself? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Mattermost prevents this with self-exclusion validation. If your rules would remove you from the channel, you'll see an error message and cannot save the changes until you adjust the rules or reset them. + +Rule configuration +~~~~~~~~~~~~~~~~~~~ + +Can I use advanced CEL expressions in Channel Settings? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +No. Channel Settings only supports Basic Mode with simple attribute conditions. For complex expressions with nested logic or mixed operators, System Admins need to create policies in the System Console. + +How do I remove all access rules from a channel? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Delete all attribute conditions from the access rules table. When no rules are configured and no system policies are applied, the channel returns to standard access behavior. + +Why is the auto-sync toggle disabled? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The auto-sync toggle is automatically disabled when: + +- No access rules are configured +- A system policy with auto-sync enabled is applied (Channel Admins cannot disable it) +- There are validation errors in the current rules + +Synchronization and membership +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +How quickly are membership changes applied? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +When you save access rules, membership sync job is created and changes are applied as soon as the job is completed. Additionally, Mattermost runs synchronization jobs every 30 minutes to handle attribute changes from external systems (LDAP, SAML). + +Will users be notified when they're removed from a channel? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Yes, users receive standard Mattermost notifications when they're removed from channels due to access rule changes, similar to manual removals. + +Can I see who was added or removed during synchronization? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Yes, the confirmation modal before saving shows exactly which users will be affected. System Admins can also view detailed synchronization logs in the System Console. + +Attribute and data questions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Which user attributes can I use in access rules? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can use any user attributes either synchronized via LDAP/SAML or manually configured by System Admins in **System Console > System Attributes > User Attributes**. + +What happens if a user attribute changes? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +During the next synchronization (every 30 minutes), users who no longer match the access rules will be removed from the channel, and new users who now match will be added (if auto-sync is enabled). + +Do guest users work with ABAC channels? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +No. Private channels with attribute-based access control cannot have guest users. This ensures strict adherence to access control policies based on organizational attributes. + +Can group-sync channels use ABAC? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +No. Channels configured with group synchronization cannot use attribute-based access control. Group-sync and ABAC are mutually exclusive features - you must choose one method of access control per channel. \ No newline at end of file diff --git a/source/administration-guide/manage/admin/abac-system-wide-policies.rst b/source/administration-guide/manage/admin/abac-system-wide-policies.rst new file mode 100644 index 00000000000..33c655d8627 --- /dev/null +++ b/source/administration-guide/manage/admin/abac-system-wide-policies.rst @@ -0,0 +1,101 @@ +System-wide attribute-based access policies +============================================================ + +.. include:: ../../../_static/badges/ent-adv-cloud-selfhosted.rst + :start-after: :nosearch: + +Use this guide to create and manage organization-wide attribute-based access policies in the System Console. For channel-level rules managed by Channel Admins, see :doc:`Channel-specific access rules `. + +Prerequisites +------------- + +- :doc:`Attribute-based access controls (ABAC) ` require defined user attributes. First :doc:`configure user attributes ` in the System Console. +- Then go to **System Console > System Attributes > Attribute-Based Access** to enable attribute-based access controls for your Mattermost instance. This functionality requires a Mattermost Enterprise Advanced license. + +From Mattermost v10.11, user-managed attributes are excluded from attribute-based access control (ABAC) rules by default for security reasons. This prevents access control policies from being circumvented by users editing their own profile attributes. To include user-managed attributes in ABAC rules, a system admin must explicitly enable the ``EnableUserManagedAttributes`` configuration setting. See the :ref:`user attribute ` documentation for details on enabling this feature. This configuration setting is available only in Enterprise Edition Advanced and is disabled by default. + +Define access control policies +------------------------------ + +You can add multiple rules to a single policy, and each rule can include multiple attribute values. + +1. In the System Console, go to **System Attributes > Attribute-Based Access** and select **Add Policy**. +2. Enter a unique policy name. +3. Choose whether to automatically add users who match your configured attribute values as new members. Automatic synchronization is disabled by default. + + * **True**: Automatically maintains channel membership according to the defined rules as user attributes change. + * **False** (**Default**): Only removes members and restricts adding them to the channel if they don’t match defined rules. Users are not automatically added. + + Regardless of whether this configuration setting, users who no longer match the configured attribute values in the future will be removed from the channel after the next channel synchronization. + +4. Define the attribute-based access rules to restrict channel membership. + + .. tab:: Simple Mode + + Simple Mode is ideal for simple and straightforward access control scenarios. Each row is a single condition that must be met for a user to comply with the policy. Simple Mode only supports simple conditions without nested logic or mixed logical operators. All rules are combined with a logical AND operator ``&&``. + + 1. Select **Add attribute** and select the attribute you want to use for access control. + 2. Specify how you want the attribute to match the user profile. You can choose from the following options: + + - **Is**: The attribute must be an exact match of the value. + - **Is not**: The attribute must not contain specified value. + - **In**: The attribute must match at least one value. + - **Starts with**: The attribute value must start with the specified value. + - **Ends with**: The attribute value must end with the specified value. + - **Contains**: The attribute value must exist somewhere with the specified value. + + 3. Specify the attribute values that users must have to be granted access to the channel. + + .. tab:: Advanced Mode + + Advanced Mode is ideal for complex access control scenarios that require CEL syntax to combine multiple conditions with logical operators that support rules like ``user. == ``, using ``&&`` / ``||`` (and/or) for multiple conditions, and ``()`` to group conditions. The CEL Expression Editor provides real-time syntax validation and feedback, as well as context-aware autocomplete for attributes, operators, and attribute values. + + You can also start defining rules in Simple Mode and then switch to Advanced Mode to refine the rules further as needed. However, you'll be blocked from switching from Advanced back to Simple Mode if one of the following are true: + + * Mixed logical operators are used between conditions. + * Nested logic/grouping (parentheses) are present. + * Unsupported operators or expressions are detected. + + The syntax structure is ``user. ``. + + As you type, autocompletes show available attributes. As you select attributes, autocomplete suggests appropriate CEL operators. After selecting an operator, when attribute values are pre-defined, autocomplete suggests values to choose from. Mattermost will explicitly indicate issues such as missing operators, incorrect syntax, or incomplete conditions. + + Select the **Validate syntax** bar to check the syntax of your rule. If the syntax is valid, the bar will turn green and display a message indicating that the syntax is valid. If there are any issues, the bar will turn red and display an error message. + +Test rules +~~~~~~~~~~ + +Select **Test access rule** to test the rule against your user base to return how many users would be granted access to the channel based on the current rule. Test your rules to ensure the intended scope and avoid unexpected access changes. + +Manage rules +~~~~~~~~~~~~ + +You can apply changes to existing rules or remove rules at any time using either Simple Mode or Advanced Mode. Select **Save** to save your changes. + +Assign policies to private channels +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Specify the private channel that your access control policy applies to by selecting **Add channels** to search for and select the channels you want. You can assign the policy to multiple channels at once, or you can `assign it to individual channels <#define-access-controls-per-channel>`__ later. Select **Save** to save your changes. + +.. note:: + + Private channels with attribute-based access control policies can't have guest users invited to them. Only users who match the defined attribute criteria can be added to ABAC-controlled channels, ensuring strict adherence to access control policies. + +Delete policies +~~~~~~~~~~~~~~~ + +To delete a policy, select the **Delete** button next to the policy you want to remove. You can only delete policies that are not currently assigned to any channels. If a policy is assigned to channels, you must first remove it from those channels before you can delete it. + +Define access controls per channel +---------------------------------- + +You can assign an existing access control policy to a private channels for more granular control over channel membership. This is useful when you need to apply different rules for different channels. + +1. In the System Console, go to **User Management > Channels** to select the private channel you want to configure, and select **Edit**. +2. In the **Channel Management** section, enable the **Enable attribute-based channel access** option. +3. Under **Access policy**, select **Link to a policy** to select an existing policy. + +Remove channel policies +~~~~~~~~~~~~~~~~~~~~~~~ + +Disable the policy for the channel by selecting **Remove Policy**. You can then link the channel to a different policy if preferred. \ No newline at end of file diff --git a/source/administration-guide/manage/admin/attribute-based-access-control.rst b/source/administration-guide/manage/admin/attribute-based-access-control.rst index f0d9e461062..98a0b56e65d 100644 --- a/source/administration-guide/manage/admin/attribute-based-access-control.rst +++ b/source/administration-guide/manage/admin/attribute-based-access-control.rst @@ -4,106 +4,42 @@ Attribute-Based Access Control .. include:: ../../../_static/badges/ent-adv-cloud-selfhosted.rst :start-after: :nosearch: +.. toctree:: + :maxdepth: 1 + :hidden: + :titlesonly: + + /administration-guide/manage/admin/abac-system-wide-policies + /administration-guide/manage/admin/abac-channel-access-rules + From Mattermost v10.9, system admins in large or complex organizations who require Zero Trust Security when handling with sensitive information can prevent unauthorized access through attribute-based access controls. Enforcing strict access controls based on user attributes eliminates manual role adjustment processes that can lead to security risks, inefficiencies, or inappropriate access, while maintaining security and compliance by ensuring that only authorized users can access specific Mattermost channels. +Access-based access control (ABAC) provides 2 levels of control: + +- **System-wide policies** (managed by System Admins): Centralized policies that can be applied across multiple channels in the System Console. See :doc:`System-wide attribute-based access policies `. +- **Channel-specific rules** (managed by Channel Admins): Self-service access rules that Channel Admins can configure directly in Channel Settings for individual channels. See :doc:`Channel-specific access rules `. + Before you begin ------------------ -Attribute-based access controls require defined user attributes that are either synchronized from an external system (such as LDAP or SAML) or manually configured and enabled on your Mattermost server. You'll need to :doc:`configure user attributes ` in the System Console first befopre creating access policies. +Attribute-based access controls require defined user attributes that are either synchronized from an external system (such as LDAP or SAML) or manually configured and enabled on your Mattermost server. You'll need to :doc:`configure user attributes ` in the System Console first before creating access policies. Once user attributes are defined, go to **System Console > System Attributes > Attribute-Based Access** to enable attribute-based access controls for your Mattermost instance. This functionality requires a Mattermost Enterprise Advanced license. From Mattermost v10.11, user-managed attributes are excluded from attribute-based access control (ABAC) rules by default for security reasons. This prevents access control policies from being circumvented by users editing their own profile attributes. To include user-managed attributes in ABAC rules, a system admin must explicitly enable the ``EnableUserManagedAttributes`` configuration setting. See the :ref:`user attribute ` documentation for details on enabling this feature. This configuration setting is available only in Enterprise Edition Advanced and is disabled by default. -Once enabled, you have 2 ways to configure access policies in Mattermost: - -- `Attribute-based access rules <#define-access-control-policies>`__ you can assign across multiple channels. -- `Channel-specific rules <#define-access-controls-per-channel>`__ you can assign to individual channels. - -Define access control policies -------------------------------- - -You can add multiple rules to a single policy, and each rule can include multiple attribute values. - -1. In the System Console, go to **System Attributes > Attribute-Based Access** and select **Add Policy**. -2. Enter a unique policy name. -3. Choose whether to automatically add users who match your configured attribute values as new members. Automatic synchronization is disabled by default. - - * **True**: Automatically maintains channel membership according to the defined rules as user attributes change. - * **False** (**Default**): Only removes members and restricts adding them to the channel if they don’t match defined rules. Users are not automatically added. - - Regardless of whether this configuration setting, users who no longer match the configured attribute values in the future will be removed from the channel after the next channel synchronization. - -4. Define the attribute-based access rules to restrict channel membership. - - .. tab:: Simple Mode - - Simple Mode is ideal for simple and straightforward access control scenarios. Each row is a single condition that must be met for a user to comply with the policy. Simple Mode only supports simple conditions without nested logic or mixed logical operators. All rules are combined with a logical AND operator ``&&``. - - 1. Select **Add attribute** and select the attribute you want to use for access control. - 2. Specify how you want the attribute to match the user profile. You can choose from the following options: - - - **Is**: The attribute must be an exact match of the value. - - **Is not**: The attribute must not contain specified value. - - **In**: The attribute must match at least one value. - - **Starts with**: The attribute value must start with the specified value. - - **Ends with**: The attribute value must end with the specified value. - - **Contains**: The attribute value must exist somewhere with the specified value. - - 3. Specify the attribute values that users must have to be granted access to the channel. - - .. tab:: Advanced Mode - - Advanced Mode is ideal for complex access control scenarios that require CEL syntax to combine multiple conditions with logical operators that support rules like ``user. == ``, using ``&&`` / ``||`` (and/or) for multiple conditions, and ``()`` to group conditions. The CEL Expression Editor provides real-time syntax validation and feedback, as well as context-aware autocomplete for attributes, operators, and attribute values. - - You can also start defining rules in Simple Mode and then switch to Advanced Mode to refine the rules further as needed. However, you'll be blocked from switching from Advanced back to Simple Mode if one of the following are true: - - * Mixed logical operators are used between conditions. - * Nested logic/grouping (parentheses) are present. - * Unsupported operators or expressions are detected. - - The syntax structure is ``user. ``. - - As you type, autocompletes show available attributes. As you select attributes, autocomplete suggests appropriate CEL operators. After selecting an operator, when attribute values are pre-defined, autocomplete suggests values to choose from. Mattermost will explicitly indicate issues such as missing operators, incorrect syntax, or incomplete conditions. - - Select the **Validate syntax** bar to check the syntax of your rule. If the syntax is valid, the bar will turn green and display a message indicating that the syntax is valid. If there are any issues, the bar will turn red and display an error message. - -Test rules -~~~~~~~~~~~ - -Select **Test access rule** to test the rule against your user base to return how many users would be granted access to the channel based on the current rule. Test your rules to ensure the intended scope and avoid unexpected access changes. - -Manage rules -~~~~~~~~~~~~~ - -You can apply changes to existing rules or remove rules at any time using either Simple Mode or Advanced Mode. Select **Save** to save your changes. - -Assign policies to private channels -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Specify the private channel that your access control policy applies to by selecting **Add channels** to search for and select the channels you want. You can assign the policy to multiple channels at once, or you can `assign it to individual channels <#define-access-controls-per-channel>`__ later. Select **Save** to save your changes. - -.. note:: - - Private channels with attribute-based access control policies can't have guest users invited to them. Only users who match the defined attribute criteria can be added to ABAC-controlled channels, ensuring strict adherence to access control policies. - -Delete policies -~~~~~~~~~~~~~~~~ - -To delete a policy, select the **Delete** button next to the policy you want to remove. You can only delete policies that are not currently assigned to any channels. If a policy is assigned to channels, you must first remove it from those channels before you can delete it. +Configure access policies +-------------------------- -Define access controls per channel ------------------------------------ +Once enabled, you have multiple ways to configure access policies in Mattermost: -You can assign an existing access control policy to a private channels for more granular control over channel membership. This is useful when you need to apply different rules for different channels. +**System Admins can:** -1. In the System Console, go to **User Management > Channels** to select the private channel you want to configure, and select **Edit**. -2. In the **Channel Management** section, enable the **Enable attribute-based channel access** option. -3. Under **Access policy**, select **Link to a policy** to select an existing policy. +- Create :doc:`system-wide access policies ` that can be assigned across multiple channels in the System Console. +- Assign :ref:`individual channel policies ` to specific channels in the System Console. -Remove channel policies -~~~~~~~~~~~~~~~~~~~~~~~~ +**Channel Admins can:** -Disable the policy for the channel by selecting **Remove Policy**. You can then link the channel to a different policy if preferred. \ No newline at end of file +- Configure :doc:`channel-specific access rules ` directly in Channel Settings without requiring a system admin. \ No newline at end of file diff --git a/source/administration-guide/onboard/sso-saml-technical.rst b/source/administration-guide/onboard/sso-saml-technical.rst index 228a890b8b0..cf367cc45e9 100644 --- a/source/administration-guide/onboard/sso-saml-technical.rst +++ b/source/administration-guide/onboard/sso-saml-technical.rst @@ -16,9 +16,9 @@ Mattermost supports using a single metadata URL to retrieve configuration inform Using this URL populates the SAML SSO URL and the Identity Provider Issuer URL fields in the configuration process automatically and the Identity Provider Public Certificate is also downloaded from the server and set locally. -This is currently supported for Okta and Microsoft ADFS server 2012 and 2016. OneLogin support will be added in a future release. +This is currently supported for Okta and Microsoft ADFS server 2012 and 2016. -For detailed steps, view the :doc:`Configure SAML with Okta `, :doc:`Configure SAML with Microsoft ADFS for Windows Server 2012 `, and :doc:`Configure SAML with Microsoft ADFS using Microsoft Windows Server 2016 ` documentation. See the encryption options documentation for details on what :ref:`encryption methods ` Mattermost supports for SAML. +For detailed steps, view the :doc:`Configure SAML with Okta `, :doc:`Configure SAML with Microsoft ADFS for Windows Server 2012 `, and :doc:`Configure SAML with Microsoft ADFS using Microsoft Windows Server 2016 ` documentation. See the encryption options documentation for details on what :ref:`encryption methods ` Mattermost supports for SAML, including AES-192-GCM and AES-256-GCM encryption support introduced in v10.9. SAML providers -------------- diff --git a/source/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install.rst b/source/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install.rst index 27bbc75bccc..c509e6e008d 100644 --- a/source/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install.rst +++ b/source/deployment-guide/desktop/desktop-msi-installer-and-group-policy-install.rst @@ -1,7 +1,7 @@ Desktop MSI installer and group policy guide ============================================= -This page provides guidance on installing the desktop app MSI and use Group Policies in Windows for Mattermost Enterprise or Professional. The MSI installer package can be downloaded `here `_. +This page provides guidance on installing the desktop app MSI and use Group Policies in Windows for Mattermost Enterprise or Professional. The MSI installer package can be downloaded `here `_. .. tip:: @@ -20,9 +20,9 @@ Download group policy and MSI installer files .. image:: ../../images/desktop/msi_gpo/msi_gpo_installation_test_00002.png :alt: Go to the mattermost/desktop repository on GitHub. -3. Navigate to the release page for `version v5.13.0 `__ and download the appropriate installer for your version of Windows (32-bit vs. 64-bit). +3. Navigate to the release page for `version v5.13.1 `__ and download the appropriate installer for your version of Windows (32-bit vs. 64-bit). -4. Download the `source.zip `__ file as well to extract group policy files. +4. Download the `source.zip `__ file as well to extract group policy files. .. image:: ../../images/desktop/msi_gpo/msi_gpo_installation_test_00003.png :alt: In the mattermost/desktop repository on GitHub, go to the release page for the latest desktop release, then download the installer for your version of Windows. Download the source.zip file as well to extract group policy files. @@ -43,12 +43,12 @@ The following group policies are available supporting a state option of Not Conf | Automatic Updates | If disabled, automatic desktop app updates are disabled. | v5.1 or later | ``EnableAutoUpdates`` | +--------------------------+------------------------------------------------------------+----------------------+----------------------------+ -1. Browse to the folder the above files were downloaded to and unzip the ``desktop-5.13.0.zip`` file in place. +1. Browse to the folder the above files were downloaded to and unzip the ``desktop-5.13.1.zip`` file in place. .. image:: ../../images/desktop/msi_gpo/msi_gpo_installation_test_00004.png :alt: Go to the install download directory on your machine and unzip the ZIP file. -2. Navigate to the unzipped ``desktop-5.13.0\resources\windows\gpo`` folder and copy the contents. +2. Navigate to the unzipped ``desktop-5.13.1\resources\windows\gpo`` folder and copy the contents. .. image:: ../../images/desktop/msi_gpo/msi_gpo_installation_test_00005.png :alt: Go to the \resources\windows\gpo directory and copy its contents. @@ -167,9 +167,9 @@ Perform a silent installation of the MSI by running the following command: Ensure the desktop app is closed before proceeding with a silent installation. Because it's a silent installation, Mattermost won't prompt you to close the desktop app. -**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.0-x64.msi /qn`` +**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.1-x64.msi /qn`` -**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.0-x64.msi /qn'`` +**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.1-x64.msi /qn'`` .. note:: - You'll need to update the version details in this command as new versions of the Mattermost desktop app are released. @@ -182,13 +182,13 @@ Install for all users Use the ``ALLUSERS`` parameter to install the MSI for all users: -**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.0-x64.msi ALLUSERS=1`` +**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.1-x64.msi ALLUSERS=1`` -**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.0-x64.msi ALLUSERS=1'`` +**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.1-x64.msi ALLUSERS=1'`` .. note:: - Installing the MSI for all users disables automatic updates for the desktop app on Windows. - - To disable automatic updates on a per-user basis, use the ``DISABLEAUTOUPDATE`` parameter: ``msiexec /i mattermost-desktop-v5.11.2-x64.msi DISABLEAUTOUPDATE=1`` + - To disable automatic updates on a per-user basis, use the ``DISABLEAUTOUPDATE`` parameter: ``msiexec /i mattermost-desktop-v5.13.1-x64.msi DISABLEAUTOUPDATE=1`` Specify an install directory ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -196,8 +196,8 @@ Specify an install directory Use the ``APPLICATIONFOLDER`` parameter to specify an installation directory for the MSI installation: -**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.0-x64.msi APPLICATIONFOLDER=""`` +**Command Prompt:** ``msiexec /i mattermost-desktop-v5.13.1-x64.msi APPLICATIONFOLDER=""`` -**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.0-x64.msi APPLICATIONFOLDER=""'`` +**PowerShell:** ``Start-Process -FilePath "$env:systemroot\system32\msiexec.exe" -ArgumentList '/i mattermost-desktop-v5.13.1-x64.msi APPLICATIONFOLDER=""'`` Change this command as new versions of the Mattermost Desktop App are released. diff --git a/source/deployment-guide/desktop/linux-desktop-install.rst b/source/deployment-guide/desktop/linux-desktop-install.rst index e391b48c9b5..2dd7cf6c772 100644 --- a/source/deployment-guide/desktop/linux-desktop-install.rst +++ b/source/deployment-guide/desktop/linux-desktop-install.rst @@ -54,13 +54,13 @@ This page describes how to install the Mattermost desktop app on Linux. Install the Mattermost desktop app ---------------------------------- - 1. Download the latest version of the Mattermost desktop app for 64-bit systems: `mattermost-desktop-5.13.0-linux-x86_64.rpm `_ + 1. Download the latest version of the Mattermost desktop app for 64-bit systems: `mattermost-desktop-5.13.1-linux-x86_64.rpm `_ 2. At the command line, execute the following command: .. code-block:: sh - sudo rpm -i mattermost-desktop-5.13.0-linux-x86_64.rpm + sudo rpm -i mattermost-desktop-5.13.1-linux-x86_64.rpm 3. Run Mattermost as a desktop app. @@ -68,7 +68,7 @@ This page describes how to install the Mattermost desktop app on Linux. .. code-block:: sh - sudo rpm -u mattermost-desktop-5.13.0-linux-x86_64.rpm + sudo rpm -u mattermost-desktop-5.13.1-linux-x86_64.rpm .. tip:: You can review the current version of your desktop app by selecting the **More** |more-icon-vertical| icon located in the top left corner of the desktop app, then selecting **Help > Version...**. @@ -83,7 +83,7 @@ This page describes how to install the Mattermost desktop app on Linux. Install the Desktop App's compressed tarball --------------------------------------------- - 1. Download the latest version of the Mattermost desktop app for 64-bit systems: `mattermost-desktop-5.13.0-linux-x64.tar.gz `_ + 1. Download the latest version of the Mattermost desktop app for 64-bit systems: `mattermost-desktop-5.13.1-linux-x64.tar.gz `_ 2. Extract the archive to a convenient location, then give ``chrome-sandbox`` in the extracted directory the required ownership and permissions: ``sudo chown root:root chrome-sandbox && sudo chmod 4755 chrome-sandbox`` diff --git a/source/deployment-guide/server/kubernetes/deploy-k8s-aks.rst b/source/deployment-guide/server/kubernetes/deploy-k8s-aks.rst index 20ebe8ed344..b5ed4eb296d 100644 --- a/source/deployment-guide/server/kubernetes/deploy-k8s-aks.rst +++ b/source/deployment-guide/server/kubernetes/deploy-k8s-aks.rst @@ -30,7 +30,7 @@ Step 1: Deploy Mattermost 1. Deploy Mattermost from the `Azure Marketplace Container Offer `_ and select **Get it now**. - - Alternatively, you can go to the ``Extensions + Applications`` section of your AKS cluster and install the Mattermost offering from there. Visit the `Microsoft cluster extensions documentation `_ to learn more. + Alternatively, you can go to the ``Extensions + Applications`` section of your AKS cluster and install the Mattermost offering from there. Visit the `Microsoft cluster extensions documentation `_ to learn more. 2. Choose the **Resource Group** and the **Region** of your installed AKS and PostgreSQL database. @@ -55,12 +55,12 @@ Step 1: Deploy Mattermost 6. Configure Mattermost installation hostname and Ingress details. The AGIC add-on is used in the following example to show the ingress annotations required. - a. You can use any pre-installed Ingress Controller in your cluster as long as it supports Kubernetes Ingress and TLS termination. + You can use any pre-installed Ingress Controller in your cluster as long as it supports Kubernetes Ingress and TLS termination. - .. code-block:: yaml + .. code-block:: yaml - kubernetes.io/ingress.class: azure/application-gateway - appgw.ingress.kubernetes.io/ssl-redirect: "true" + kubernetes.io/ingress.class: azure/application-gateway + appgw.ingress.kubernetes.io/ssl-redirect: "true" 7. Additionally, we recommend considering: @@ -73,11 +73,11 @@ Step 1: Deploy Mattermost 8. Ensure that everything is running. You should be able to check the installed plugin from the **AKS Extensions + Applications** page under the **Settings** menu. - a. When the deployment is complete, obtain the hostname or IP address of your Mattermost deployment using the following command: + When the deployment is complete, obtain the hostname or IP address of your Mattermost deployment using the following command: - .. code-block:: sh + .. code-block:: sh - kubectl -n mattermost-operator get ingress + kubectl -n mattermost-operator get ingress 9. Use your IP address from the ``ADDRESS`` column, and create a DNS record in your domain registration service. @@ -101,6 +101,13 @@ Step 2: Upgrade Mattermost via your AKS cluster 4. Select **Save** and wait for the upgrade. +Looking for a sovereign deployment on Azure Local? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For organizations requiring on-premises deployments with data sovereignty, **Azure Local** (formerly Azure Stack HCI) provides a hybrid cloud platform that enables you to run Mattermost on-premises while maintaining integration with Microsoft Teams and M365. + +We recommend engaging **Mattermost Professional Services** for Azure Local deployments to ensure optimal configuration and compliance with your security requirements. `Talk to an Expert `_ to discuss your Azure Local deployment needs. + .. important:: - You are responsible for Azure costs associated with any infrastructure you spin up to host a Mattermost server, and Azure credits cannot be applied towards the purchase of a Mattermost license. + You are responsible for Azure costs associated with any infrastructure you spin up to host a Mattermost server, and Azure credits cannot be applied towards the purchase of a Mattermost license. \ No newline at end of file diff --git a/source/end-user-guide/collaborate/manage-channel-members.rst b/source/end-user-guide/collaborate/manage-channel-members.rst index fbee013aa8a..804ffa46d48 100644 --- a/source/end-user-guide/collaborate/manage-channel-members.rst +++ b/source/end-user-guide/collaborate/manage-channel-members.rst @@ -11,6 +11,10 @@ Add members to a channel Using Mattermost in a web browser or the desktop app, any member of a channel can add other members to public or private channels, unless your system admin has restricted access to do so. +.. note:: + + If a channel has attribute-based access controls enabled, you'll see details about the required user attributes. Only users who meet the requirements appear in search results when adding members. See the :doc:`attribute-based access control ` documentation for more details. + .. tab:: Web/Desktop 1. Select the channel name at the top of the center pane to access the drop-down menu, then select **Add Members**. @@ -23,7 +27,7 @@ Using Mattermost in a web browser or the desktop app, any member of a channel ca .. tip:: - From Mattermost v7.8, people you've messaged directly are listed first, followed by all users in alphabetical order. - - Alternatively, to add members to a channel, select the channel name, select the **View Info** |channel-info| icon, select **Members** in the right pane, and then select **Add**. + - Alternatively, to add members to a channel, select the channel name, select the **View Info** |channel-info| icon, select **Members** in the right pane, and then select **Add**. If the channel has access control restrictions, you'll see details about required attributes at the top of the right pane. .. tab:: Mobile diff --git a/source/product-overview/deprecated-features.rst b/source/product-overview/deprecated-features.rst index 418d1ec1097..921987c482c 100644 --- a/source/product-overview/deprecated-features.rst +++ b/source/product-overview/deprecated-features.rst @@ -11,7 +11,7 @@ Mattermost Server v11.0.0 (October 2025) - GitLab SSO will be deprecated from Team Edition. Deployments using GitLab SSO can remain on v10.11 ESR (with 12 months of security updates) while transitioning to our new free offering Mattermost Entry, or exploring commercial/nonprofit options. See more details in `this forum post `__. - The ``TeamSettings.ExperimentalViewArchivedChannels`` setting will be deprecated. Archived channels will always be accessible, subject to normal channel membership. The server will fail to start if this setting is set to ``false``; to deny access to archived channels, mark them as private and remove affected channel members. See more details in `this forum post `__. -- Playbooks will stop working for Team Edition. Professional, Enterprise, and Enterprise Advanced plans will automatically be upgraded to Playbooks v2 with no expected downtime. +- Playbooks will stop working for Team Edition. Entry, Professional, Enterprise, and Enterprise Advanced plans will automatically be upgraded to Playbooks v2 with no expected downtime. See more details in `this forum post `__. - Experimental Bleve Search functionality will be retired. See more details in `this forum post `__. - Support for MySQL will be ended. See more details in `this forum post `__. - The ``ExperimentalStrictCSRFEnforcement`` setting will be renamed to ``StrictCSRFEnforcement`` and the default value will be changed to ``true`` for new installations. See more details in `this forum post `__. @@ -24,6 +24,7 @@ Mattermost Server v11.0.0 (October 2025) - Format query parameter requirement in ``/api/v4/config/client`` endpoint will be deprecated. - Deprecated mmctl commands and flags will be removed. - Experimental certificate-based authentication feature will be removed. ``ExperimentalSettings.ClientSideCertEnable`` must be ``false`` to start the server. +- The bcrypt password hashing method will be deprecated in favor of PBKDF2. Downgrading the server from v11 to a previous version will leave users whose password was migrated unable to log in. Admins will need to manually reset user passwords until the server is upgraded back to v11. - Separate notification log file will be deprecated. If admins want to continue using a separate log file for notification logs, they can use the ``AdvancedLoggingJSON`` configuration. An example configuration to use is: .. code-block:: sh diff --git a/source/product-overview/desktop-app-changelog.md b/source/product-overview/desktop-app-changelog.md index 6f9ec8a65d4..ace3978bffd 100644 --- a/source/product-overview/desktop-app-changelog.md +++ b/source/product-overview/desktop-app-changelog.md @@ -12,9 +12,16 @@ This changelog summarizes updates to Mattermost desktop app releases for [Matter (release-v5-13)= ## Release v5.13 (Extended Support Release) -**Release Day: 2025-08-15** +- **v5.13.1, released 2025-09-10** -**Download Binaries:** [Mattermost Desktop on GitHub](https://github.com/mattermost/desktop/releases/latest) + - Mattermost Desktop App v5.13.1 contains low to medium severity level security fixes. Upgrading is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Upgraded to Electron 37.4.0. + +- **v5.13.0, released 2025-08-15** + + - Original v5.13.0 release + +**Download Binaries:** [Mattermost Desktop on GitHub](https://github.com/mattermost/desktop/releases/v5.13.1) ### Compatibility diff --git a/source/product-overview/mattermost-desktop-releases.md b/source/product-overview/mattermost-desktop-releases.md index 90b08402281..c5b0d117f77 100644 --- a/source/product-overview/mattermost-desktop-releases.md +++ b/source/product-overview/mattermost-desktop-releases.md @@ -21,7 +21,7 @@ Mattermost releases a new desktop app version every 4 months, in February, May, | **Release** | **Support** | **Compatible with** | |:---|:---|:---| -| v5.13 [Download](https://github.com/mattermost/desktop/releases/tag/v5.13.0) \| {ref}`Changelog ` \| [SBOM download](https://github.com/mattermost/desktop/releases/download/v5.13.0/sbom-desktop-v5.13.0.json) | Released: 2025-08-15
Support Ends: 2026-08-15 {ref}`EXTENDED ` | {ref}`v10.11 `, {ref}`v10.10 `, {ref}`v10.9 `, {ref}`v10.5 ` | +| v5.13 [Download](https://github.com/mattermost/desktop/releases/tag/v5.13.1) \| {ref}`Changelog ` \| [SBOM download](https://github.com/mattermost/desktop/releases/download/v5.13.1/sbom-desktop-v5.13.1.json) | Released: 2025-08-15
Support Ends: 2026-08-15 {ref}`EXTENDED ` | {ref}`v10.11 `, {ref}`v10.10 `, {ref}`v10.9 `, {ref}`v10.5 ` | | v5.12 [Download](https://github.com/mattermost/desktop/releases/tag/v5.12.1) \| {ref}`Changelog ` \| [SBOM download](https://github.com/mattermost/desktop/releases/download/v5.12.1/sbom-desktop-v5.12.1.json) | Released: 2025-05-16
Support Ends: 2025-08-15 | {ref}`v10.10 `, {ref}`v10.9 `, {ref}`v10.8 `, {ref}`v10.7 `, {ref}`v10.6 `, {ref}`v10.5 ` | | v5.11 [Download](https://github.com/mattermost/desktop/releases/tag/v5.11.3) \| {ref}`Changelog ` | Released: 2025-02-14
Support Ends: 2025-11-15 | {ref}`v10.7 `, {ref}`v10.6 `, {ref}`v10.5 `, {ref}`v10.4 `, {ref}`v10.3 `, {ref}`v9.11 ` | | v5.10 [Download](https://github.com/mattermost/desktop/releases/tag/v5.10.2) \| {ref}`Changelog ` | Released: 2024-11-15
Support Ends: 2025-02-13 | {ref}`v10.2 `, {ref}`v10.1 `, {ref}`v10.0 `, {ref}`v9.11 `, {ref}`v9.5 ` | diff --git a/source/product-overview/mattermost-server-releases.md b/source/product-overview/mattermost-server-releases.md index 04648a298b4..8ed16d70b3e 100644 --- a/source/product-overview/mattermost-server-releases.md +++ b/source/product-overview/mattermost-server-releases.md @@ -29,7 +29,7 @@ Mattermost releases a new server version on the 16th of each month in [binary fo | v10.8 [Download](https://releases.mattermost.com/10.8.4/mattermost-10.8.4-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-05-16 | 2025-08-15 | | v10.7 [Download](https://releases.mattermost.com/10.7.4/mattermost-10.7.4-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-04-16 | 2025-07-15 | | v10.6 [Download](https://releases.mattermost.com/10.6.6/mattermost-10.6.6-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-03-16 | 2025-06-15 | -| v10.5 [Download](https://releases.mattermost.com/10.5.10/mattermost-10.5.10-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-02-16 | 2025-11-15 {ref}`EXTENDED ` | +| v10.5 [Download](https://releases.mattermost.com/10.5.11/mattermost-10.5.11-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-02-16 | 2025-11-15 {ref}`EXTENDED ` | | v10.4 [Download](https://releases.mattermost.com/10.4.5/mattermost-10.4.5-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2025-01-16 | 2025-04-15 | | v10.3 [Download](https://releases.mattermost.com/10.3.4/mattermost-10.3.4-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2024-12-16 | 2025-03-15 | | v10.2 [Download](https://releases.mattermost.com/10.2.3/mattermost-10.2.3-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2024-11-15 | 2025-02-15 | diff --git a/source/product-overview/mattermost-v10-changelog.md b/source/product-overview/mattermost-v10-changelog.md index c09a874d240..6626d390027 100644 --- a/source/product-overview/mattermost-v10-changelog.md +++ b/source/product-overview/mattermost-v10-changelog.md @@ -646,6 +646,11 @@ New setting options were added to ``config.json``. Below is a list of the additi (release-v10.5-extended-support-release)= ## Release v10.5 - [Extended Support Release](https://docs.mattermost.com/about/release-policy.html#release-types) +- **10.5.11, released 2025-09-10** + - Mattermost v10.5.11 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where the content of webhook posts did not display [MM-64626](https://mattermost.atlassian.net/browse/MM-64626). + - Fixed an issue where unread messages from muted channels were shown in the favicon/desktop app [MM-64883](https://mattermost.atlassian.net/browse/MM-64883). + - Mattermost v10.5.11 contains no database or functional changes. - **10.5.10, released 2025-08-15** - Mattermost v10.5.10 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release as soon as possible is highly recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - Mattermost v10.5.10 contains no database or functional changes. diff --git a/source/product-overview/version-archive.rst b/source/product-overview/version-archive.rst index 073441f8fa6..a33910a96a7 100644 --- a/source/product-overview/version-archive.rst +++ b/source/product-overview/version-archive.rst @@ -44,11 +44,11 @@ If you want to check that the version of Mattermost you are installing is the of - SHA-256 Checksum: ``c763ba7d25b42051d8ff6b3de18cf9ec312d4e5d985f754a37c29f86988cb93b`` - GPG Signature: https://releases.mattermost.com/10.6.6/mattermost-10.6.6-linux-amd64.tar.gz.sig - SBOM Download Link: https://releases.mattermost.com/10.6.6/sbom-enterprise-v10.6.6.json - Mattermost Enterprise Edition v10.5.10 *Extended Support Release (ESR)* - `View Changelog `__ - `Download `__ - - ``https://releases.mattermost.com/10.5.10/mattermost-10.5.10-linux-amd64.tar.gz`` - - SHA-256 Checksum: ``ba8fb5dbda927feed0671b4f673de58b5be707158ad6e808cf7ee4cff8d212b8`` - - GPG Signature: https://releases.mattermost.com/10.5.10/mattermost-10.5.10-linux-amd64.tar.gz.sig - - SBOM Download Link: https://releases.mattermost.com/10.5.10/sbom-enterprise-v10.5.10.json + Mattermost Enterprise Edition v10.5.11 *Extended Support Release (ESR)* - `View Changelog `__ - `Download `__ + - ``https://releases.mattermost.com/10.5.11/mattermost-10.5.11-linux-amd64.tar.gz`` + - SHA-256 Checksum: ``d77e136fb45352c49969bd7418899f9ddbc8daf73f297bfa4b7bc9ad2f9a8b0d`` + - GPG Signature: https://releases.mattermost.com/10.5.11/mattermost-10.5.11-linux-amd64.tar.gz.sig + - SBOM Download Link: https://releases.mattermost.com/10.5.11/sbom-enterprise-v10.5.11.json Mattermost Enterprise Edition v10.4.5 - `View Changelog `__ - `Download `__ - ``https://releases.mattermost.com/10.4.5/mattermost-10.4.5-linux-amd64.tar.gz`` - SHA-256 Checksum: ``f85f4cf564f940f82a37c17a94f8689dda9c0e79c58a204c7d175c9ecb620773`` @@ -472,11 +472,11 @@ If you want to check that the version of Mattermost you are installing is the of - SHA-256 Checksum: ``c829f301d3fc2fdd6061454a3ea3aa4f26d398340398a736c3402bd5eeb345f9`` - GPG Signature: https://releases.mattermost.com/10.6.6/mattermost-team-10.6.6-linux-amd64.tar.gz.sig - SBOM Download Link: https://github.com/mattermost/mattermost/releases/download/v10.6.6/sbom-mattermost-v10.6.6.json - Mattermost Team Edition v10.5.10 *Extended Support Release (ESR)* - `View Changelog `__ - `Download `__ - - ``https://releases.mattermost.com/10.5.10/mattermost-team-10.5.10-linux-amd64.tar.gz`` - - SHA-256 Checksum: ``ee8ce0bdfc0a5cb27b7d87922f6c9fced41063f62f57c847d21b2cbedd6a19e1`` - - GPG Signature: https://releases.mattermost.com/10.5.10/mattermost-team-10.5.10-linux-amd64.tar.gz.sig - - SBOM Download Link: https://github.com/mattermost/mattermost/releases/download/v10.5.10/sbom-mattermost-v10.5.10.json + Mattermost Team Edition v10.5.11 *Extended Support Release (ESR)* - `View Changelog `__ - `Download `__ + - ``https://releases.mattermost.com/10.5.11/mattermost-team-10.5.11-linux-amd64.tar.gz`` + - SHA-256 Checksum: ``0c4b44036902dfe6a89dea08a55e57feb00ad9d76011d2aa7fc4a9fe2a0c6f7c`` + - GPG Signature: https://releases.mattermost.com/10.5.11/mattermost-team-10.5.11-linux-amd64.tar.gz.sig + - SBOM Download Link: https://github.com/mattermost/mattermost/releases/download/v10.5.11/sbom-mattermost-v10.5.11.json Mattermost Team Edition v10.4.5 - `View Changelog `__ - `Download `__ - ``https://releases.mattermost.com/10.4.5/mattermost-team-10.4.5-linux-amd64.tar.gz`` - SHA-256 Checksum: ``31edebbc416c8978a81f40cffe7ed98f9b39f8a1f695b18bdf98dddc9edb650c`` diff --git a/source/use-case-guide/maximize-microsoft-investments.rst b/source/use-case-guide/maximize-microsoft-investments.rst index bf089cdb62a..08312dc8fa1 100644 --- a/source/use-case-guide/maximize-microsoft-investments.rst +++ b/source/use-case-guide/maximize-microsoft-investments.rst @@ -29,7 +29,7 @@ As Skype for Business reaches end-of-life, secure organizations require an alter - **Preserve mission-critical communication workflows** with a self-hosted Mattermost deployment that supports :doc:`1:1 calls `, :ref:`screen sharing `, and :doc:`threaded messaging ` within secure environments. - **Integrate Mattermost with Microsoft tools** such as Outlook, Teams, and :doc:`Entra ID Single Sign-On ` to retain user workflows while centralizing identity and access control. See :doc:`Mattermost for M365, Teams, and Outlook `. -- **Deploy in sovereign, air-gapped, or private cloud environments** such as `Azure Deployment `_ while maintaining compliance with STIG, FedRAMP, and NIST 800-53 standards. +- **Deploy in sovereign, air-gapped, or private cloud environments** such as `Azure Deployment `_ or **Azure Local** (formerly Azure Stack HCI) for on-premises hybrid cloud scenarios while maintaining compliance with STIG, FedRAMP, and NIST 800-53 standards. For Azure Local deployments, we recommend engaging **Mattermost Professional Services** for deployment support. `Talk to an Expert `_ to learn more. :doc:`Learn more ` about replacing Skype for Business with Mattermost. diff --git a/source/use-case-guide/on-prem-skype-for-business-replacement.rst b/source/use-case-guide/on-prem-skype-for-business-replacement.rst index 918bbfc59df..c663100e9af 100644 --- a/source/use-case-guide/on-prem-skype-for-business-replacement.rst +++ b/source/use-case-guide/on-prem-skype-for-business-replacement.rst @@ -19,7 +19,7 @@ Organizations operating in fully disconnected or classified environments require - **Ensure secure communication in fully disconnected networks** using Mattermost's support for private on-premise deployments, including FIPS 140-3 validated and DISA STIG-hardened container images. :doc:`Learn more
` about Mattermost's architecture, components, and backend infrastructure. - **Maintain operational continuity** with enterprise-grade :doc:`channel-based collaboration `— including :doc:`1:1 audio calls `, :ref:`screen sharing `, :doc:`threaded messaging `, and :doc:`file sharing `—entirely within air-gapped systems. - **Scale to mission requirements** with a :doc:`high-availability, horizontally scalable architecture ` that supports tens of thousands of users in secure on-prem environments. -- **Preserve data sovereignty and eliminate external dependencies** with a self-hosted :doc:`Kubernetes deployment model
` that integrates into classified networks or sovereign data centers. +- **Preserve data sovereignty and eliminate external dependencies** with a self-hosted :doc:`Kubernetes deployment model ` that integrates into classified networks, sovereign data centers, or **Azure Local** (formerly Azure Stack HCI) for hybrid cloud on-premises scenarios. Modernize Secure Collaboration Workflows ------------------------------------------ @@ -52,5 +52,6 @@ Collaborating across organizational boundaries must not compromise compliance or Get Started ----------- -`Talk to an Expert `_ to learn more about transitioning from Skype for Business to a secure, modern collaboration platform built for mission-critical environments. With Mattermost, your organization gains a self-hosted, scalable, and compliant solution tailored for classified operations, secure external engagement, and operational modernization. +With Mattermost, your organization gains a self-hosted, scalable, and compliant solution tailored for classified operations, secure external engagement, and operational modernization. +`Talk to an Expert `_ to learn more about transitioning from Skype for Business to a secure, modern collaboration platform built for mission-critical environments, or to discuss your Azure Local deployment needs. Organizations deploying Mattermost on Azure Local (formerly Azure Stack HCI) for on-premises hybrid cloud scenarios can engage **Mattermost Professional Services** for deployment support to ensure optimal configuration and compliance with your security requirements. \ No newline at end of file From 84a847d2b0c032ffae2ba4d79c1a75ca876c0caa Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 15 Sep 2025 13:08:42 -0400 Subject: [PATCH 02/36] v11: Drop Bleve search support (#8381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Drop Bleve search support for Mattermost v11.0 - Remove bleve-search.rst documentation file - Remove Bleve references from configuration settings documentation - Move Bleve settings to deprecated configuration settings with deprecation notices - Update upgrade documentation with Bleve deprecation warnings - Update redirects to point old Bleve documentation links to deprecated settings - Add deprecation notices throughout documentation referencing Bleve removal in v11.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Environmental config setting consistency (#8368) * Environmental config setting consistency & normalization script * Fixed malformed tables * Config consistency & malformed table fixes * Removed helper script * Update faq-business.rst (#8376) * Update faq-business.rst Review and refinement * Update source/product-overview/faq-business.rst * Update faq-license.rst Removed redundant information, linking to single source * Update faq-business.rst * Update faq-business.rst * Update faq-license.rst Combined Business & Licensing since the pages covered redundant questions. * Delete source/product-overview/faq-business.rst Moved content to License FAQ & renamed * Added page redirect & child page nav * Incorporated reviewer feedback * Update faq-general.rst * Delete source/product-overview/faq-illicit-use.rst * Cleaned up nav following content moves --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v9.x releases to legacy status (#8360) * Update v9.x releases to legacy status - Remove v9.x versions from active release table in mattermost-server-releases.md - Move v9 changelog content to unsupported-legacy-releases.md - Update release-policy.md to include v9.x in legacy releases table - Replace v9 changelog with redirect to unsupported legacy releases - Update references to point to legacy releases documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update unsupported-legacy-releases.md * Update mattermost-server-releases.md * Update mattermost-v9-changelog.md * Update server.rst * Update common-esr-support-upgrade.md * Update unsupported-legacy-releases.md * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update common-esr-support-upgrade.md * Update common-esr-support-upgrade.md * Update release-policy.md * Update prepare-to-upgrade-mattermost.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Sven Hüster * Update deprecated-features.rst (#8387) * Update deprecated-features.rst * Update common-esr-support-upgrade.md * Update release-policy.md * Linked experimental config settings to feature label desc (#8388) * Removed v9 changlog, added redirect (#8389) * Moved client availability page to end user guide (#8390) * Moved client availability page to end user guide * Returned headings to tabbed content with toctree pages * remove apache2 docs (#8391) * Restore bleve-search.rst file The file was accidentally deleted but should be kept according to the PR requirements. Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/configure/deprecated-configuration-settings.rst * Update source/administration-guide/configure/deprecated-configuration-settings.rst * Update source/administration-guide/configure/deprecated-configuration-settings.rst * Update source/administration-guide/configure/deprecated-configuration-settings.rst * Update source/administration-guide/configure/deprecated-configuration-settings.rst * Link fixes --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro Co-authored-by: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Co-authored-by: Sven Hüster Co-authored-by: Ben Cooke --- extensions/sphinx_inline_tabs/events.py | 34 +- .../configure/bleve-search.rst | 16 +- .../configure/config-proxy-apache2.rst | 58 - .../deprecated-configuration-settings.rst | 80 + .../environment-configuration-settings.rst | 2424 +++++++++-------- .../experimental-configuration-settings.rst | 105 +- ...fication-server-configuration-settings.rst | 30 +- .../rate-limiting-configuration-settings.rst | 119 +- .../upgrade/prepare-to-upgrade-mattermost.rst | 3 +- .../upgrade/upgrading-mattermost-server.rst | 2 +- .../collaborate/access-your-workspace.rst | 3 +- .../collaborate}/client-availability.rst | 0 .../common-esr-support-upgrade.md | 2 +- .../product-overview/deprecated-features.rst | 6 +- source/product-overview/faq-business.rst | 82 - source/product-overview/faq-general.rst | 9 + source/product-overview/faq-illicit-use.rst | 11 - source/product-overview/faq-license.rst | 218 +- .../frequently-asked-questions.rst | 10 +- .../mattermost-server-releases.md | 15 +- .../mattermost-v9-changelog.md | 1468 ---------- .../product-overview-index.rst | 3 +- source/product-overview/release-policy.md | 16 +- source/product-overview/server.rst | 4 +- .../unsupported-legacy-releases.md | 1464 ++++++++++ source/redirects.py | 21 +- 26 files changed, 2976 insertions(+), 3227 deletions(-) delete mode 100644 source/administration-guide/configure/config-proxy-apache2.rst rename source/{product-overview => end-user-guide/collaborate}/client-availability.rst (100%) delete mode 100644 source/product-overview/faq-business.rst delete mode 100644 source/product-overview/faq-illicit-use.rst delete mode 100644 source/product-overview/mattermost-v9-changelog.md diff --git a/extensions/sphinx_inline_tabs/events.py b/extensions/sphinx_inline_tabs/events.py index ce71de904c0..e9654e40051 100644 --- a/extensions/sphinx_inline_tabs/events.py +++ b/extensions/sphinx_inline_tabs/events.py @@ -99,10 +99,36 @@ def doctree_read(app: Sphinx, doctree: nodes.document): break if has_toctree: - # SAFE APPROACH: For now, preserve left navigation completely - # This means workflow-automation.rst won't get right-pane tab labels - # but left navigation will work correctly - pass # Keep original structure unchanged + # Merge tab headings into the existing right-pane TOC while preserving + # the original toctree (left navigation) structure. + try: + # Find the bullet list in the original toc item (holds section entries) + original_bullets = None + for child in getattr(original_toc_item, "children", []) or []: + if isinstance(child, nodes.bullet_list): + original_bullets = child + break + + # Find the bullet list produced by our updated tab-aware TOC + updated_bullets = None + for child in getattr(updated_tocs, "children", []) or []: + if isinstance(child, nodes.bullet_list): + updated_bullets = child + break + + # If we have tab headings to merge + if updated_bullets is not None: + if original_bullets is None: + # No existing bullets: attach updated list directly + original_toc_item.append(updated_bullets) + else: + # Append each new tab heading item to existing bullets + for li in list(updated_bullets.children): + original_bullets.append(li) + except Exception as e: + logger.warning( + f"{LOG_PREFIX} doctree_read({app.env.docname}): failed merging tab headings into TOC: {e}" + ) else: # Only apply tab modifications if no toctree nodes are present app.env.tocs[app.env.docname][0][1] = updated_tocs diff --git a/source/administration-guide/configure/bleve-search.rst b/source/administration-guide/configure/bleve-search.rst index e91faa9198a..995486ef741 100644 --- a/source/administration-guide/configure/bleve-search.rst +++ b/source/administration-guide/configure/bleve-search.rst @@ -1,16 +1,18 @@ -Bleve search (experimental) -=========================== +Bleve search +============= .. include:: ../../_static/badges/allplans-selfhosted.rst :start-after: :nosearch: -Bleve is a search engine that uses Lucene-style full-text search and indexing. This style of search and indexing helps overcome limitations of the default database search such as challenges with characters and advanced search capabilities. +.. important:: -The Bleve search engine works as a library integrated into the Mattermost codebase. As it generates indexes in the filesystem of the server that it is running on, it doesn’t require an external server to function. Because of this, Bleve should not be enabled in High Availability deployments. + Experimental Bleve search is deprecated from Mattermost v11.0, and Bleve configuration settings have been moved to the :ref:`Deprecated configuration settings ` documentation. We recommend using :doc:`Elasticsearch ` or :doc:`AWS OpenSearch ` for enterprise search capabilities. + +Bleve is a search engine that uses Lucene-style full-text search and indexing. This style of search and indexing helps overcome limitations of the default database search such as challenges with characters and advanced search capabilities. The Bleve search engine works as a library integrated into the Mattermost codebase. As it generates indexes in the filesystem of the server that it is running on, it doesn’t require an external server to function. Because of this, Bleve should not be enabled in High Availability deployments. .. note:: - Bleve search uses the scorch index type on newly-created indexes. This new index type features efficiency improvements and indexes that use significantly less disk space. Go to **System Console > Experimental > Bleve** and select **Purge Index** to run a purge operation. When that's complete, select **Index Now** to reindex. Bleve remains compatible with existing indexes, so currently indexed data will continue to work if a purge and reindex isn't run. + Experimental Bleve search uses the scorch index type on newly-created indexes. This new index type features efficiency improvements and indexes that use significantly less disk space. Go to **System Console > Experimental > Bleve** and select **Purge Index** to run a purge operation. When that's complete, select **Index Now** to reindex. Bleve remains compatible with existing indexes, so currently indexed data will continue to work if a purge and reindex isn't run. Configuring Bleve in Mattermost ------------------------------- @@ -21,7 +23,7 @@ Follow these steps to configure the Mattermost server to use Bleve and generate 1. Open **System Console > Experimental > Bleve**. 2. Set **Enable Bleve Indexing** to **true** to enable the other settings on the page. -3. Set the directory path to use for storing Bleve indexes (e.g.: ``/var/opt/mattermost/bleveindexes``). The user running Mattermost should have permissions to access the directory. See our :ref:`configuration settings ` documentation for details. +3. Set the directory path to use for storing Bleve indexes (e.g.: ``/var/opt/mattermost/bleveindexes``). The user running Mattermost should have permissions to access the directory. See our :ref:`configuration settings ` documentation for details. 4. Save the configuration. 5. Select **Index Now**. All users, channels, and posts in the database will be indexed oldest to newest. 6. Set **Enable Bleve for search queries** to **true**. @@ -42,4 +44,4 @@ The following conditions are applied when using Bleve search: How does search work with Bleve disabled? ------------------------------------------- -Mattermost performs full text searches against the database unless you have an :ref:`Enterprise license ` and :doc:`enterprise search ` configured. \ No newline at end of file +Mattermost performs full text searches against the database unless you have an :ref:`Enterprise license ` and :doc:`enterprise search ` configured. \ No newline at end of file diff --git a/source/administration-guide/configure/config-proxy-apache2.rst b/source/administration-guide/configure/config-proxy-apache2.rst deleted file mode 100644 index 0ef35646d9e..00000000000 --- a/source/administration-guide/configure/config-proxy-apache2.rst +++ /dev/null @@ -1,58 +0,0 @@ -:orphan: -:nosearch: - -.. _config-proxy-apache2: - -Configuring Apache2 as a proxy for Mattermost Server (Unofficial) ------------------------------------------------------------------ - -.. important:: This unofficial guide is maintained by the Mattermost community and this deployment configuration is not yet officially supported by Mattermost, Inc. `Community testing, feedback and improvements are welcome and greatly appreciated `_. You can `edit this page on GitHub `_. - -On a Debian-based operating system such as Ubuntu, Apache2 proxy configuration is done in the ``/etc/apache2/sites-available`` directory. Red Hat-based systems organize Apache configuration files `differently `_. If you're setting up Mattermost on a subdomain, you'll want to create a new configuration file along the lines of ``mysubdomain.mydomain.com.conf``. - -**To configure Apache2 as a proxy** - -1. SSH into your server. -2. Make sure the Apache modules ``mod_rewrite`` , ``mod_proxy``, ``mod_proxy_http``, and ``mod_proxy_wstunnel`` are installed and enabled. If not, follow the instructions from your Linux distribution to do so. -3. Create the above mentioned configuration file. It is often helpful to start with a copy of ``000-default.conf`` or ``default-ssl.conf`` (on Ubuntu). -4. Edit your configuration using the guide below: - - 1. If you're not setting up a subdomain, your ``ServerName`` will simply be set to ``mydomain.com``. - 2. ``ServerAlias`` can been added too if you want to capture ``www.mydomain.com``. - 3. Remember to change the values to match your server's name, etc. - 4. If you have enabled TLS in the Mattermost settings, you must use the protocol ``wss://`` instead of ``ws://`` in the ``RewriteRule``. - 5. To serve requests on a different port (such as 8443), in addition to setting the port in the VirtualHost element, add ``Listen 8443`` on a separate line before the VirtualHost line. - -.. code-block:: apacheconf - - - # If you're not using a subdomain you may need to set a ServerAlias to: - # ServerAlias www.mydomain.com - ServerName mysubdomain.mydomain.com - ServerAdmin hostmaster@mydomain.com - ProxyPreserveHost On - - # Set web sockets - RewriteEngine On - RewriteCond %{REQUEST_URI} /api/v[0-9]+/(users/)?websocket [NC] - RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC,OR] - RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC] - RewriteRule .* ws://127.0.0.1:8065%{REQUEST_URI} [P,QSA,L] - - - Require all granted - ProxyPass http://127.0.0.1:8065/ - ProxyPassReverse http://127.0.0.1:8065/ - ProxyPassReverseCookieDomain 127.0.0.1 mysubdomain.mydomain.com - - - - -5. (Debian/Ubuntu only) Because you'll likely have not set up the subdomain before now on Apache2, run ``a2ensite mysubdomain.mydomain.com`` to enable the site (do not run ``a2ensite mysubdomain.mydomain.com.conf``). - -6. Restart Apache2. - - - On Ubuntu 14.04 and RHEL 6: ``sudo service apache2 restart`` - - On Ubuntu 16.04+ and RHEL 7+: ``sudo systemctl restart apache2`` - -You should be all set! Ensure that your Mattermost config file is pointing to the correct URL (which may include a port), and then ensure that your socket connection is not dropping once deployed. To prevent external access to Mattermost on port 8065, in the config file, set ``ListenAddress`` to ``localhost:8065`` instead of ``:8065``. diff --git a/source/administration-guide/configure/deprecated-configuration-settings.rst b/source/administration-guide/configure/deprecated-configuration-settings.rst index e5feb63a4f0..2837f9e8564 100644 --- a/source/administration-guide/configure/deprecated-configuration-settings.rst +++ b/source/administration-guide/configure/deprecated-configuration-settings.rst @@ -30,6 +30,86 @@ The following Mattermost configuration settings are deprecated and are no longer Bleve settings -------------- +*Bleve search has been deprecated from Mattermost v11.0. We recommend using Elasticsearch or OpenSearch for enterprise search capabilities.* + +Enable Bleve indexing +~~~~~~~~~~~~~~~~~~~~~ + +*Deprecated from Mattermost v11.0* + +This setting was available in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file. + +**True**: The indexing of new posts occurs automatically. + +**False**: The indexing of new posts does not occur automatically. + ++------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableIndexing": false`` with options ``true`` and ``false``. | ++------------------------------------------------------------------------------------------------------------+ + +Index directory +~~~~~~~~~~~~~~~ + +*Deprecated from Mattermost v11.0* + +This setting was available in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file. + +Directory path to use for storing bleve indexes. + ++-----------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"IndexDir": ""`` with string input. | ++-----------------------------------------------------------------------------------------------------------+ + +Bulk index now +~~~~~~~~~~~~~~ + +Select **Index Now** to index all users, channels, and posts in the database from oldest to newest. Bleve is available during indexing, but search results may be incomplete until the indexing job is complete. + +Purge indexes +~~~~~~~~~~~~~ + +Select **Purge Index** to remove the contents of the Bleve index directory. Search results may be incomplete until a bulk index of the existing database is rebuilt. + +.. config:setting:: enable-bleve-indexingsearch + :displayname: Enable Bleve for search queries (Experimental) + :systemconsole: Experimental > Bleve + :configjson: EnableSearching + :environment: N/A + + - **true**: Search queries will use bleve search. + - **false**: **(Default)** Search queries will not use bleve search. + + +Enable Bleve for search queries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*Deprecated from Mattermost v11.0* + +This setting was available in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file. + +**True**: Search queries will use bleve search. + +**False**: Search queries will not use bleve search. + ++--------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableSearching": false`` with options ``true`` and ``false``. | ++--------------------------------------------------------------------------------------------------------------+ + +Enable Bleve for autocomplete queries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +*Deprecated from Mattermost v11.0* + +This setting was available in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file. + +**True**: Autocomplete queries will use bleve search. + +**False**: Autocomplete queries will not use bleve search. + ++-----------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableAutocomplete": false`` with options ``true`` and ``false``. | ++-----------------------------------------------------------------------------------------------------------------+ + Bulk Indexing Time Window Seconds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index 90d68521812..dd3f9bce177 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -49,7 +49,7 @@ Site URL +---------------------------------------------------------------+---------------------------------------------------------------+ | The URL that users use to access Mattermost. | - System Config path: **Environment > Web Server** | -| The port number is required if it’s not a standard port, | - ``config.json`` setting: ``.ServiceSettings.SiteURL",`` | +| The port number is required if it’s not a standard port, | - ``config.json`` setting: ``ServiceSettings`` > ``SiteURL`` | | such as 80 or 443. This field is required. | - Environment variable: ``MM_SERVICESETTINGS_SITEURL`` | | | | | Select the **Test Live URL** button in the System Console | | @@ -76,13 +76,13 @@ Site URL Maximum URL length ~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| The longest URL, in characters, including query parameters, | - System Config path: N/A | -| accepted by the Mattermost server. Longer URLs are rejected, | - ``config.json`` setting: ``.ServiceSettings.MaximumURLLength: 2048",`` | -| and API calls fail with an error. | - Environment variable: ``MM_SERVICESETTINGS_MAXIMUMURLLENGTH`` | -| | | -| Numeric value. Default is **2048** characters. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+----------------------------------------------------------------------------------+ +| The longest URL, in characters, including query parameters, | - System Config path: N/A | +| accepted by the Mattermost server. Longer URLs are rejected, | - ``config.json`` setting: ``ServiceSettings`` > ``MaximumURLLength`` > ``2048`` | +| and API calls fail with an error. | - Environment variable: ``MM_SERVICESETTINGS_MAXIMUMURLLENGTH`` | +| | | +| Numeric value. Default is **2048** characters. | | ++---------------------------------------------------------------+----------------------------------------------------------------------------------+ .. config:setting:: web-server-listen-address :displayname: Web server listen address (Web Server) @@ -96,16 +96,16 @@ Maximum URL length Web server listen address ~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+------------------------------------------------------------------+ -| The address and port to which to bind and listen. | - System Config path: **Environment > Web Server** | -| Specifying ``:8065`` will bind to all network interfaces. | - ``config.json`` setting: ``".ServiceSettings.ListenAddress",`` | -| Specifying ``127.0.0.1:8065`` will only bind to the network | - Environment variable: ``MM_SERVICESETTINGS_LISTENADDRESS`` | -| interface having that IP address. | | -| | | -| If you choose a port of a lower level (called “system ports” | | -| or “well-known ports”, in the range of 0-1023), you must have | | -| permissions to bind to that port. | | -+---------------------------------------------------------------+------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------+ +| The address and port to which to bind and listen. | - System Config path: **Environment > Web Server** | +| Specifying ``:8065`` will bind to all network interfaces. | - ``config.json`` setting: ``ServiceSettings`` > ``ListenAddress`` | +| Specifying ``127.0.0.1:8065`` will only bind to the network | - Environment variable: ``MM_SERVICESETTINGS_LISTENADDRESS`` | +| interface having that IP address. | | +| | | +| If you choose a port of a lower level (called “system ports” | | +| or “well-known ports”, in the range of 0-1023), you must have | | +| permissions to bind to that port. | | ++---------------------------------------------------------------+--------------------------------------------------------------------+ .. config:setting:: forward-port-80-to-443 :displayname: Forward port 80 to 443 (Web Server) @@ -119,15 +119,15 @@ Web server listen address Forward port 80 to 443 ~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| Forward insecure traffic from port 80 to port 443. | - System Config path: **Environment > Web Server** | -| | - ``config.json`` setting: ``".ServiceSettings.Forward80To443: false",`` | -| - **true**: Forwards all insecure traffic from port 80 to | - Environment variable: ``MM_SERVICESETTINGS_FORWARD80TO443`` | -| secure port 443. | | -| - **false**: **(Default)** When using a proxy such as NGINX | | -| in front of Mattermost this setting is unnecessary | | -| and should be set to false. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Forward insecure traffic from port 80 to port 443. | - System Config path: **Environment > Web Server** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``Forward80To443`` > ``false`` | +| - **true**: Forwards all insecure traffic from port 80 to | - Environment variable: ``MM_SERVICESETTINGS_FORWARD80TO443`` | +| secure port 443. | | +| - **false**: **(Default)** When using a proxy such as NGINX | | +| in front of Mattermost this setting is unnecessary | | +| and should be set to false. | | ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: web-server-connection-security :displayname: Web server connection security (Web Server) @@ -142,14 +142,14 @@ Forward port 80 to 443 Web server connection security ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------------+-----------------------------------------------------------------------+ -| Connection security between Mattermost clients and the server. | - System Config path: **Environment > Web Server** | -| | - ``config.json`` setting: ``".ServiceSettings.ConnectionSecurity",`` | -| - **Not specified**: Mattermost will connect over an unsecure | - Environment variable: ``MM_SERVICESETTINGS_CONNECTIONSECURITY`` | -| connection. | | -| - **TLS**: Encrypts the communication between Mattermost | | -| clients and your server. | | -+-----------------------------------------------------------------------+-----------------------------------------------------------------------+ ++-----------------------------------------------------------------------+-------------------------------------------------------------------------+ +| Connection security between Mattermost clients and the server. | - System Config path: **Environment > Web Server** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``ConnectionSecurity`` | +| - **Not specified**: Mattermost will connect over an unsecure | - Environment variable: ``MM_SERVICESETTINGS_CONNECTIONSECURITY`` | +| connection. | | +| - **TLS**: Encrypts the communication between Mattermost | | +| clients and your server. | | ++-----------------------------------------------------------------------+-------------------------------------------------------------------------+ See the :doc:`setting up TLS for Mattermost ` for details. @@ -163,12 +163,12 @@ See the :doc:`setting up TLS for Mattermost TLS certificate file ~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+------------------------------------------------------------------+ -| The path to the certificate file to use for TLS | - System Config path: **Environment > Web Server** | -| connection security. | - ``config.json`` setting: ``".ServiceSettings.TLSCertFile",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_TLSCERTFILE`` | -| String input. | | -+--------------------------------------------------------+------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------+ +| The path to the certificate file to use for TLS | - System Config path: **Environment > Web Server** | +| connection security. | - ``config.json`` setting: ``ServiceSettings`` > ``TLSCertFile`` | +| | - Environment variable: ``MM_SERVICESETTINGS_TLSCERTFILE`` | +| String input. | | ++--------------------------------------------------------+--------------------------------------------------------------------+ .. config:setting:: tls-key-file :displayname: TLS key file (Web Server) @@ -180,12 +180,12 @@ TLS certificate file TLS key file ~~~~~~~~~~~~ -+--------------------------------------------------------+---------------------------------------------------------------+ -| The path to the TLS key file to use for TLS | - System Config path: **Environment > Web Server** | -| connection security. | - ``config.json`` setting: ``".ServiceSettings.TLSKeyFile",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_TLSKEYFILE`` | -| String input. | | -+--------------------------------------------------------+---------------------------------------------------------------+ ++--------------------------------------------------------+-----------------------------------------------------------------+ +| The path to the TLS key file to use for TLS | - System Config path: **Environment > Web Server** | +| connection security. | - ``config.json`` setting: ``ServiceSettings`` > ``TLSKeyFile`` | +| | - Environment variable: ``MM_SERVICESETTINGS_TLSKEYFILE`` | +| String input. | | ++--------------------------------------------------------+-----------------------------------------------------------------+ .. config:setting:: use-lets-encrypt :displayname: Use Let's Encrypt (Web Server) @@ -200,17 +200,17 @@ TLS key file Use Let's Encrypt ~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+ -| Enable the automatic retrieval of certificates from Let’s Encrypt. | - System Config path: **Environment > Web Server** | -| | - ``config.json`` setting: ``".ServiceSettings.UseLetsEncrypt: false",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_USELETSENCRYPT`` | -| - **true**: The certificate will be retrieved when a client | | -| attempts to connect from a new domain. This will work with | | -| multiple domains. | | -| - **false**: **(Default)** Manual certificate specification | | -| based on the TLS Certificate File and TLS Key File specified | | -| above. | | -+-----------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+ ++-----------------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Enable the automatic retrieval of certificates from Let’s Encrypt. | - System Config path: **Environment > Web Server** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``UseLetsEncrypt`` > ``false`` | +| | - Environment variable: ``MM_SERVICESETTINGS_USELETSENCRYPT`` | +| - **true**: The certificate will be retrieved when a client | | +| attempts to connect from a new domain. This will work with | | +| multiple domains. | | +| - **false**: **(Default)** Manual certificate specification | | +| based on the TLS Certificate File and TLS Key File specified | | +| above. | | ++-----------------------------------------------------------------------------+---------------------------------------------------------------------------------+ See the :doc:`setting up TLS for Mattermost ` for details on setting up Let's Encrypt. @@ -224,12 +224,12 @@ See the :doc:`setting up TLS for Mattermost Let's Encrypt certificate cache file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+------------------------------------------------------------------------------------+ -| The path to the file where certificates and other data | - System Config path: **Environment > Web Server** | -| about the Let’s Encrypt service will be stored. | - ``config.json`` setting: ``".ServiceSettings.LetsEncryptCertificateCacheFile",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_LETSENCRYPTCERTIFICATECACHEFILE`` | -| File path input. | | -+--------------------------------------------------------+------------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------------------------+ +| The path to the file where certificates and other data | - System Config path: **Environment > Web Server** | +| about the Let’s Encrypt service will be stored. | - ``config.json`` setting: ``ServiceSettings`` > ``LetsEncryptCertificateCacheFile`` | +| | - Environment variable: ``MM_SERVICESETTINGS_LETSENCRYPTCERTIFICATECACHEFILE`` | +| File path input. | | ++--------------------------------------------------------+--------------------------------------------------------------------------------------+ .. config:setting:: read-timeout :displayname: Read timeout (Web Server) @@ -241,12 +241,12 @@ Let's Encrypt certificate cache file Read timeout ~~~~~~~~~~~~ -+---------------------------------------------------------+---------------------------------------------------------------------+ -| Maximum time allowed from when the connection is | - System Config path: **Environment > Web Server** | -| accepted to when the request body is fully read. | - ``config.json`` setting: ``".ServiceSettings.ReadTimeout: 300",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_READTIMEOUT`` | -| Numerical input in seconds. Default is **300** seconds. | | -+---------------------------------------------------------+---------------------------------------------------------------------+ ++---------------------------------------------------------+----------------------------------------------------------------------------+ +| Maximum time allowed from when the connection is | - System Config path: **Environment > Web Server** | +| accepted to when the request body is fully read. | - ``config.json`` setting: ``ServiceSettings`` > ``ReadTimeout`` > ``300`` | +| | - Environment variable: ``MM_SERVICESETTINGS_READTIMEOUT`` | +| Numerical input in seconds. Default is **300** seconds. | | ++---------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: write-timeout :displayname: Write timeout (Web Server) @@ -263,7 +263,7 @@ Write timeout +----------------------------------------------------------+-----------------------------------------------------------------------------+ | - If using HTTP (insecure), this is the maximum time | - System Config path: **Environment > Web Server** | -| allowed from the end of reading the request headers | - ``config.json`` setting: ``".ServiceSettings.WriteTimeout: 300",`` | +| allowed from the end of reading the request headers | - ``config.json`` setting: ``ServiceSettings`` > ``WriteTimeout`` > ``300`` | | until the response is written. | - Environment variable: ``MM_SERVICESETTINGS_WRITETIMEOUT`` | | - If using HTTPS, it's the total time from when the | | | connection is accepted until the response is written. | | @@ -281,13 +281,13 @@ Write timeout Idle timeout ~~~~~~~~~~~~ -+---------------------------------------------------------+---------------------------------------------------------------------+ -| Set an explicit idle timeout in the HTTP server. | - System Config path: **Environment > Web Server** | -| This is the maximum time allowed before an idle | - ``config.json`` setting: ``".ServiceSettings.IdleTimeout: 300",`` | -| connection is disconnected. | - Environment variable: ``MM_SERVICESETTINGS_IDLETIMEOUT`` | -| | | -| Numerical input in seconds. Default is **300** seconds. | | -+---------------------------------------------------------+---------------------------------------------------------------------+ ++---------------------------------------------------------+----------------------------------------------------------------------------+ +| Set an explicit idle timeout in the HTTP server. | - System Config path: **Environment > Web Server** | +| This is the maximum time allowed before an idle | - ``config.json`` setting: ``ServiceSettings`` > ``IdleTimeout`` > ``300`` | +| connection is disconnected. | - Environment variable: ``MM_SERVICESETTINGS_IDLETIMEOUT`` | +| | | +| Numerical input in seconds. Default is **300** seconds. | | ++---------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: webserver-mode :displayname: Webserver mode (Web Server) @@ -302,19 +302,19 @@ Idle timeout Webserver mode ~~~~~~~~~~~~~~ -+---------------------------------------------------------------------+------------------------------------------------------------------------+ -| We recommend gzip to improve performance unless your | - System Config path: **Environment > Web Server** | -| environment has specific restrictions, such as a web proxy that | - ``config.json`` setting: ``".ServiceSettings.WebserverMode: gzip",`` | -| distributes gzip files poorly. | - Environment variable: ``MM_SERVICESETTINGS_WEBSERVERMODE`` | -| | | -| - **gzip**: **(Default)** The Mattermost server will serve static | | -| files compressed with gzip to improve performance. | | -| gzip compression applies to the HTML, CSS, Javascript, and other | | -| static content files that make up the Mattermost web client. | | -| - **Uncompressed**: The Mattermost server will serve static | | -| files uncompressed. | | -| - **Disabled**: The Mattermost server will not serve static files. | | -+---------------------------------------------------------------------+------------------------------------------------------------------------+ ++---------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| We recommend gzip to improve performance unless your | - System Config path: **Environment > Web Server** | +| environment has specific restrictions, such as a web proxy that | - ``config.json`` setting: ``ServiceSettings`` > ``WebserverMode`` > ``"gzip"`` | +| distributes gzip files poorly. | - Environment variable: ``MM_SERVICESETTINGS_WEBSERVERMODE`` | +| | | +| - **gzip**: **(Default)** The Mattermost server will serve static | | +| files compressed with gzip to improve performance. | | +| gzip compression applies to the HTML, CSS, Javascript, and other | | +| static content files that make up the Mattermost web client. | | +| - **Uncompressed**: The Mattermost server will serve static | | +| files uncompressed. | | +| - **Disabled**: The Mattermost server will not serve static files. | | ++---------------------------------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: enable-insecure-outgoing-connections :displayname: Enable insecure outgoing connections (Web Server) @@ -328,17 +328,17 @@ Webserver mode Enable insecure outgoing connections ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ -| Configure Mattermost to allow insecure outgoing connections. | - System Config path: **Environment > Web Server** | -| | - ``config.json`` setting: ``".ServiceSettings.EnableInsecureOutgoingConnections: false",`` | -| - **true**: Outgoing HTTPS requests, including S3 clients, | - Environment variable: ``MM_SERVICESETTINGS_ENABLEINSECUREOUTGOINGCONNECTIONS`` | -| can accept unverified, self-signed certificates. | | -| For example, outgoing webhooks to a server with a | | -| self-signed TLS certificate, using any domain, will be | | -| allowed, and will skip TLS verification. | | -| - **false**: **(Default)** Only secure HTTPS requests are | | -| allowed. | | -+---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| Configure Mattermost to allow insecure outgoing connections. | - System Config path: **Environment > Web Server** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableInsecureOutgoingConnections`` > ``false`` | +| - **true**: Outgoing HTTPS requests, including S3 clients, | - Environment variable: ``MM_SERVICESETTINGS_ENABLEINSECUREOUTGOINGCONNECTIONS`` | +| can accept unverified, self-signed certificates. | | +| For example, outgoing webhooks to a server with a | | +| self-signed TLS certificate, using any domain, will be | | +| allowed, and will skip TLS verification. | | +| - **false**: **(Default)** Only secure HTTPS requests are | | +| allowed. | | ++---------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ .. warning:: @@ -354,20 +354,20 @@ Enable insecure outgoing connections Managed resource paths ~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+-------------------------------------------------------------------------+ -| A comma-separated list of paths within the Mattermost | - System Config path: **Environment > Web Server** | -| domain that are managed by a third party service | - ``config.json`` setting: ``".ServiceSettings.ManagedResourcePaths",`` | -| instead of Mattermost itself. | - Environment variable: ``MM_SERVICESETTINGS_MANAGEDRESOURCEPATHS`` | -| | | -| Links to these paths will be opened in a new | | -| tab/window by Mattermost apps. | | -| | | -| For example, if Mattermost is running on | | -| ``https://mymattermost.com``, setting this to | | -| conference will cause links such as | | -| ``https://mymattermost.com/conference`` to open in a | | -| new window. | | -+--------------------------------------------------------+-------------------------------------------------------------------------+ ++--------------------------------------------------------+---------------------------------------------------------------------------+ +| A comma-separated list of paths within the Mattermost | - System Config path: **Environment > Web Server** | +| domain that are managed by a third party service | - ``config.json`` setting: ``ServiceSettings`` > ``ManagedResourcePaths`` | +| instead of Mattermost itself. | - Environment variable: ``MM_SERVICESETTINGS_MANAGEDRESOURCEPATHS`` | +| | | +| Links to these paths will be opened in a new | | +| tab/window by Mattermost apps. | | +| | | +| For example, if Mattermost is running on | | +| ``https://mymattermost.com``, setting this to | | +| conference will cause links such as | | +| ``https://mymattermost.com/conference`` to open in a | | +| new window. | | ++--------------------------------------------------------+---------------------------------------------------------------------------+ .. note:: @@ -416,12 +416,12 @@ Purge all caches Websocket URL ~~~~~~~~~~~~~ -+--------------------------------------------------------+---------------------------------------------------------------------+ -| You can configure the server to instruct clients | - System Config path: N/A | -| on where they should try to connect websockets to. | - ``config.json`` setting: ``".ServiceSettings.WebsocketURL: "",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_WEBSOCKETURL`` | -| String input. | | -+--------------------------------------------------------+---------------------------------------------------------------------+ ++--------------------------------------------------------+-----------------------------------------------------------------------------+ +| You can configure the server to instruct clients | - System Config path: N/A | +| on where they should try to connect websockets to. | - ``config.json`` setting: ``ServiceSettings`` > ``WebsocketURL`` > ``""`` | +| | - Environment variable: ``MM_SERVICESETTINGS_WEBSOCKETURL`` | +| String input. | | ++--------------------------------------------------------+-----------------------------------------------------------------------------+ .. note:: @@ -440,15 +440,15 @@ License file location .. include:: ../../_static/badges/ent-pro-only.rst :start-after: :nosearch: -+--------------------------------------------------------+----------------------------------------------------------------------------+ -| The path and filename of the license file on disk. | - System Config path: N/A | -| On startup, if Mattermost can't find a valid license | - ``config.json`` setting: ``".ServiceSettings.LicenseFileLocation: "",`` | -| in the database from a previous upload, it looks in | - Environment variable: ``MM_SERVICESETTINGS_LICENSEFILELOCATION`` | -| this path for the license file. | | -| | | -| String input. Can be an absolute path or a path | | -| relative to the ``mattermost`` directory. | | -+--------------------------------------------------------+----------------------------------------------------------------------------+ ++--------------------------------------------------------+------------------------------------------------------------------------------------+ +| The path and filename of the license file on disk. | - System Config path: N/A | +| On startup, if Mattermost can't find a valid license | - ``config.json`` setting: ``ServiceSettings`` > ``LicenseFileLocation`` > ``""`` | +| in the database from a previous upload, it looks in | - Environment variable: ``MM_SERVICESETTINGS_LICENSEFILELOCATION`` | +| this path for the license file. | | +| | | +| String input. Can be an absolute path or a path | | +| relative to the ``mattermost`` directory. | | ++--------------------------------------------------------+------------------------------------------------------------------------------------+ .. config:setting:: tls-minimum-version :displayname: TLS minimum version (Web Server) @@ -460,11 +460,11 @@ License file location TLS minimum version ~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+---------------------------------------------------------------------+ -| The minimum TLS version used by the Mattermost server. | - System Config path: N/A | -| | - ``config.json`` setting: ``".ServiceSettings.TLSMinVer: 1.2",`` | -| String input. Default is **1.2**. | - Environment variable: ``MM_SERVICESETTINGS_TLSMINVER`` | -+--------------------------------------------------------+---------------------------------------------------------------------+ ++--------------------------------------------------------+----------------------------------------------------------------------------+ +| The minimum TLS version used by the Mattermost server. | - System Config path: N/A | +| | - ``config.json`` setting: ``ServiceSettings`` > ``TLSMinVer`` > ``1.2`` | +| String input. Default is **1.2**. | - Environment variable: ``MM_SERVICESETTINGS_TLSMINVER`` | ++--------------------------------------------------------+----------------------------------------------------------------------------+ .. note:: @@ -480,14 +480,14 @@ TLS minimum version Trusted proxy IP header ~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+------------------------------------------------------------------------------+ -| Specified headers that will be checked, one by one, | - System Config path: N/A | -| for IP addresses (order is important). | - ``config.json`` setting: ``".ServiceSettings.TrustedProxyIPHeader: []",`` | -| All other headers are ignored. | - Environment variable: ``MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER`` | -| | | -| String array input consisting of header names, | | -| such as ``["X-Forwarded-For", "X-Real-Ip"]``. | | -+--------------------------------------------------------+------------------------------------------------------------------------------+ ++--------------------------------------------------------+-------------------------------------------------------------------------------------+ +| Specified headers that will be checked, one by one, | - System Config path: N/A | +| for IP addresses (order is important). | - ``config.json`` setting: ``ServiceSettings`` > ``TrustedProxyIPHeader`` > ``[]`` | +| All other headers are ignored. | - Environment variable: ``MM_SERVICESETTINGS_TRUSTEDPROXYIPHEADER`` | +| | | +| String array input consisting of header names, | | +| such as ``["X-Forwarded-For", "X-Real-Ip"]``. | | ++--------------------------------------------------------+-------------------------------------------------------------------------------------+ .. note:: @@ -507,14 +507,14 @@ Trusted proxy IP header Enable Strict Transport Security (HSTS) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+-------------------------------------------------------------------------------+ -| - **true**: Adds the Strict Transport Security (HSTS) | - System Config path: N/A | -| header to all responses, forcing the browser to | - ``config.json`` setting: ``".ServiceSettings.TLSStrictTransport: false",`` | -| request all resources via HTTPS. | - Environment variable: ``MM_SERVICESETTINGS_TLSSTRICTTRANSPORT`` | -| - **false**: **(Default)** No restrictions on TLS | | -| transport. Strict Transport Security (HSTS) header | | -| isn't added to responses. | | -+--------------------------------------------------------+-------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------------------------+ +| - **true**: Adds the Strict Transport Security (HSTS) | - System Config path: N/A | +| header to all responses, forcing the browser to | - ``config.json`` setting: ``ServiceSettings`` > ``TLSStrictTransport`` > ``false`` | +| request all resources via HTTPS. | - Environment variable: ``MM_SERVICESETTINGS_TLSSTRICTTRANSPORT`` | +| - **false**: **(Default)** No restrictions on TLS | | +| transport. Strict Transport Security (HSTS) header | | +| isn't added to responses. | | ++--------------------------------------------------------+--------------------------------------------------------------------------------------+ See the `Strict-Transport-Security `__ documentation for details. @@ -528,14 +528,14 @@ See the `Strict-Transport-Security ``TLSStrictTransportMaxAge`` > ``63072000`` | +| period, a site can't be accessed using HTTP unless | - Environment variable: ``MM_SERVICESETTINGS_TLSSTRICTTRANSPORTMAXAGE`` | +| ``TLSStrictTransport`` is set to ``true``. | | +| | | +| Numerical input. Default is **63072000** (2 years). | | ++--------------------------------------------------------+-----------------------------------------------------------------------------------------------+ See the `Strict-Transport-Security `__ documentation for details. @@ -549,17 +549,17 @@ See the `Strict-Transport-Security ``TLSOverwriteCiphers`` > ``[]`` | +| or to limit the types of accepted ciphers. | - Environment variable: ``MM_SERVICESETTINGS_TLSOVERWRITECIPHERS`` | +| | | +| If none specified, the Mattermost server assumes a | | +| set of currently considered secure ciphers, and allows | | +| overwrites in the edge case. | | +| | | +| String array input. | | ++--------------------------------------------------------+------------------------------------------------------------------------------------+ .. note:: @@ -576,17 +576,17 @@ TLS cipher overwrites Goroutine health threshold ~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+----------------------------------------------------------------------------------+ -| Set a threshold on the number of goroutines when the | - System Config path: N/A | -| Mattermost system is considered to be in a healthy | - ``config.json`` setting: ``".ServiceSettings.GoroutineHealthThreshold: -1",`` | -| state. | - Environment variable: ``MM_SERVICESETTINGS_GOROUTINEHEALTHTHRESHOLD`` | -| | | -| When goroutines exceed this limit, a warning is | | -| returned in the server logs. | | -| | | -| Numeric input. Default is **-1** which turns off | | -| checking for the threshold. | | -+--------------------------------------------------------+----------------------------------------------------------------------------------+ ++--------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Set a threshold on the number of goroutines when the | - System Config path: N/A | +| Mattermost system is considered to be in a healthy | - ``config.json`` setting: ``ServiceSettings`` > ``GoroutineHealthThreshold`` > ``-1`` | +| state. | - Environment variable: ``MM_SERVICESETTINGS_GOROUTINEHEALTHTHRESHOLD`` | +| | | +| When goroutines exceed this limit, a warning is | | +| returned in the server logs. | | +| | | +| Numeric input. Default is **-1** which turns off | | +| checking for the threshold. | | ++--------------------------------------------------------+-----------------------------------------------------------------------------------------+ .. config:setting:: allow-cookies-for-subdomains :displayname: Allow cookies for subdomains (Web Server) @@ -600,12 +600,12 @@ Goroutine health threshold Allow cookies for subdomains ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ -| - **true**: **(Default)** Allows cookies for | - System Config path: N/A | -| subdomains by setting the domain parameter on | - ``config.json`` setting: ``".ServiceSettings.AllowCookiesForSubdomains: true",`` | -| Mattermost cookies. | - Environment variable: ``MM_SERVICESETTINGS_ALLOWCOOKIESFORSUBDOMAINS`` | -| - **false**: Cookies not allowed for subdomains. | | -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| - **true**: **(Default)** Allows cookies for | - System Config path: N/A | +| subdomains by setting the domain parameter on | - ``config.json`` setting: ``ServiceSettings`` > ``AllowCookiesForSubdomains`` > ``true`` | +| Mattermost cookies. | - Environment variable: ``MM_SERVICESETTINGS_ALLOWCOOKIESFORSUBDOMAINS`` | +| - **false**: Cookies aren't allowed for subdomains. | | ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ .. config:setting:: cluster-log-timeout :displayname: Cluster log timeout (Web Server) @@ -620,14 +620,14 @@ Cluster log timeout .. include:: ../../_static/badges/ent-only.rst :start-after: :nosearch: -+--------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Define the frequency, in milliseconds, of cluster | - System Config path: N/A | -| request time logging for performance monitoring. | - ``config.json`` setting: ``".ServiceSettings.ClusterLogTimeoutMilliseconds: 2000",`` | -| | - Environment variable: ``MM_SERVICESETTINGS_CLUSTERLOGTIMEOUTMILLISECONDS`` | -| | | -| Numerical input. Default is **2000** milliseconds | | -| (2 seconds). | | -+--------------------------------------------------------+-----------------------------------------------------------------------------------------+ ++--------------------------------------------------------+------------------------------------------------------------------------------------------------+ +| Define the frequency, in milliseconds, of cluster | - System Config path: N/A | +| request time logging for performance monitoring. | - ``config.json`` setting: ``ServiceSettings`` > ``ClusterLogTimeoutMilliseconds`` > ``2000`` | +| | - Environment variable: ``MM_SERVICESETTINGS_CLUSTERLOGTIMEOUTMILLISECONDS`` | +| | | +| Numerical input. Default is **2000** milliseconds | | +| (2 seconds). | | ++--------------------------------------------------------+------------------------------------------------------------------------------------------------+ See the :doc:`performance monitoring ` documentation for details. @@ -641,15 +641,15 @@ See the :doc:`performance monitoring ``MaximumPayloadSizeBytes`` > ``300000`` | +| | - Environment variable: ``MM_SERVICESETTINGS_MAXIMUMPAYLOADSIZEBYTES`` | +| For example, the upload attachment API or the API to | | +| upload a custom emoji. | | +| | | +| Numerical value. Default is **300000** (300 kB). | | ++-----------------------------------------------------------+--------------------------------------------------------------------------------------------+ ---- @@ -676,7 +676,7 @@ Driver name +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The type of database. Can be either: | - System Config path: N/A | -| | - ``config.json`` setting: ``".SqlSettings.DriverName",`` | +| | - ``config.json`` setting: ``SqlSettings`` > ``DriverName`` | | - **mysql**: **(Default)** Enables driver to MySQL database. | - Environment variable: ``MM_SQLSETTINGS_DRIVERNAME`` | | - **postgres**: Enables driver to PostgreSQL database. | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -693,7 +693,7 @@ Data source +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The connection string to the master database. | - System Config path: N/A | -| | - ``config.json`` setting: ``".SqlSettings.DataSource",`` | +| | - ``config.json`` setting: ``SqlSettings`` > ``DataSource`` | | String input. | - Environment variable: ``MM_SQLSETTINGS_DATASOURCE`` | | | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -770,24 +770,24 @@ See `Connection-Encryption Option Summary @tcp(hostname or IP:3306)/mattermost_test | -| MySQL server. | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=false"`` | -+----------------------------------------+-----------------+---------------------------------------------------------------------------+ -| Use TLS / SSL encryption against | ``true`` | ``"@tcp(hostname or IP:3306)/mattermost_test | -| MySQL server. | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=true"`` | -+----------------------------------------+-----------------+---------------------------------------------------------------------------+ -| Use TLS / SSL encryption with a self- | ``skip-verify`` | ``"@tcp(hostname or IP:3306)/mattermost_test | -| signed certificate against | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify"`` | -| MySQL server. | | | -+----------------------------------------+-----------------+---------------------------------------------------------------------------+ -| Use TLS / SSL encryption if server | ``preferred`` | ``"@tcp(hostname or IP:3306)/mattermost_test | -| advertises a possible fallback; | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=preferred"`` | -| unencrypted if it's not advertised. | | | -+----------------------------------------+-----------------+---------------------------------------------------------------------------+ ++----------------------------------------+-----------------+-----------------------------------------------------------------+ +| Short description of the ``tls`` | Value | Example of a data source name | +| parameter | | | ++========================================+=================+=================================================================+ +| Don't use TLS / SSL encryption against | ``false`` | ``"@tcp(hostname or IP:3306)/mattermost_test | +| MySQL server. | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=false"`` | ++----------------------------------------+-----------------+-----------------------------------------------------------------+ +| Use TLS / SSL encryption against | ``true`` | ``"@tcp(hostname or IP:3306)/mattermost_test | +| MySQL server. | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=true"`` | ++----------------------------------------+-----------------+-----------------------------------------------------------------+ +| Use TLS / SSL encryption with a self- | ``skip-verify`` | ``"@tcp(hostname or IP:3306)/mattermost_test | +| signed certificate against | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=skip-verify"`` | +| MySQL server. | | | ++----------------------------------------+-----------------+-----------------------------------------------------------------+ +| Use TLS / SSL encryption if server | ``preferred`` | ``"@tcp(hostname or IP:3306)/mattermost_test | +| advertises a possible fallback; | | ?charset=utf8mb4,utf8&writeTimeout=30s&tls=preferred"`` | +| unencrypted if it's not advertised. | | | ++----------------------------------------+-----------------+-----------------------------------------------------------------+ AWS High Availablity RDS cluster deployments ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -806,13 +806,13 @@ Mattermost doesn't need to manage this. See the :ref:`high availablility databas Maximum open connections ~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+------------------------------------------------------------------+ -| The maximum number of open connections to the | - System Config path: **Environment > Database** | -| database. | - ``config.json`` setting: ``".SqlSettings.MaxOpenConns": 300,`` | -| | - Environment variable: ``MM_SQLSETTINGS_MAXOPENCONNS`` | -| Numerical input. Default is **300** for self-hosted | | -| deployments, and **100** for Cloud deployments. | | -+--------------------------------------------------------+------------------------------------------------------------------+ ++--------------------------------------------------------+-------------------------------------------------------------------------+ +| The maximum number of open connections to the | - System Config path: **Environment > Database** | +| database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxOpenConns`` > ``300`` | +| | - Environment variable: ``MM_SQLSETTINGS_MAXOPENCONNS`` | +| Numerical input. Default is **300** for self-hosted | | +| deployments, and **100** for Cloud deployments. | | ++--------------------------------------------------------+-------------------------------------------------------------------------+ .. config:setting:: query-timeout :displayname: Query timeout (Database) @@ -824,13 +824,13 @@ Maximum open connections Query timeout ~~~~~~~~~~~~~ -+--------------------------------------------------------+------------------------------------------------------------------+ -| The amount of time to wait, in seconds, for a response | - System Config path: **Environment > Database** | -| from the database after opening a connection and | - ``config.json`` setting: ``".SqlSettings.QueryTimeout: 30",`` | -| sending the query. | - Environment variable: ``MM_SQLSETTINGS_QUERYTIMEOUT`` | -| | | -| Numerical input in seconds. Default is **30** seconds. | | -+--------------------------------------------------------+------------------------------------------------------------------+ ++--------------------------------------------------------+-------------------------------------------------------------------------+ +| The amount of time to wait, in seconds, for a response | - System Config path: **Environment > Database** | +| from the database after opening a connection and | - ``config.json`` setting: ``SqlSettings`` > ``QueryTimeout`` > ``30`` | +| sending the query. | - Environment variable: ``MM_SQLSETTINGS_QUERYTIMEOUT`` | +| | | +| Numerical input in seconds. Default is **30** seconds. | | ++--------------------------------------------------------+-------------------------------------------------------------------------+ .. config:setting:: maximum-connection-lifetime :displayname: Maximum connection lifetime (Database) @@ -842,15 +842,15 @@ Query timeout Maximum connection lifetime ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ -| Maximum lifetime for a connection to the database, | - System Config path: **Environment > Database** | -| in milliseconds. Use this setting to configure the | - ``config.json`` setting: ``".SqlSettings.ConnMaxLifetimeMilliseconds: 3600000",`` | -| maximum amount of time a connection to the database | - Environment variable: ``MM_SQLSETTINGS_CONNMAXLIFETIMEMILLISECONDS`` | -| may be reused | | -| | | -| Numerical input in milliseconds. Default is | | -| **3600000** milliseconds (1 hour). | | -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| Maximum lifetime for a connection to the database, | - System Config path: **Environment > Database** | +| in milliseconds. Use this setting to configure the | - ``config.json`` setting: ``SqlSettings`` > ``ConnMaxLifetimeMilliseconds`` > ``3600000`` | +| maximum amount of time a connection to the database | - Environment variable: ``MM_SQLSETTINGS_CONNMAXLIFETIMEMILLISECONDS`` | +| may be reused | | +| | | +| Numerical input in milliseconds. Default is | | +| **3600000** milliseconds (1 hour). | | ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ .. config:setting:: maximum-connection-idle-timeout :displayname: Maximum connection idle timeout (Database) @@ -862,13 +862,13 @@ Maximum connection lifetime Maximum connection idle timeout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ -| Maximum time a database connection can remain idle, | - System Config path: **Environment > Database** | -| in milliseconds. | - ``config.json`` setting: ``".SqlSettings.ConnMaxIdleTimeMilliseconds: 300000",`` | -| | - Environment variable: ``MM_SQLSETTINGS_CONNMAXIDLETIMEMILLISECONDS`` | -| Numerical input in milliseconds. Default is **300000** | | -| (5 minutes). | | -+--------------------------------------------------------+-------------------------------------------------------------------------------------+ ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| Maximum time a database connection can remain idle, | - System Config path: **Environment > Database** | +| in milliseconds. | - ``config.json`` setting: ``SqlSettings`` > ``ConnMaxIdleTimeMilliseconds`` > ``300000`` | +| | - Environment variable: ``MM_SQLSETTINGS_CONNMAXIDLETIMEMILLISECONDS`` | +| Numerical input in milliseconds. Default is **300000** | | +| (5 minutes). | | ++--------------------------------------------------------+--------------------------------------------------------------------------------------------+ .. config:setting:: minimum-hashtag-length :displayname: Minimum hashtag length (Database) @@ -880,11 +880,11 @@ Maximum connection idle timeout Minimum hashtag length ~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------------+-------------------------------------------------------------------------+ -| Minimum number of characters in a hashtag. | - System Config path: **Environment > Database** | -| This value must be greater than or equal to **2**. | - ``config.json`` setting: ``".SqlSettings.MinimumHashtagLength: 3",`` | -| | - Environment variable: ``MM_SQLSETTINGS_MINIMUMHASHTAGLENGTH`` | -+----------------------------------------------------------------------+-------------------------------------------------------------------------+ ++----------------------------------------------------------------------+--------------------------------------------------------------------------------+ +| Minimum number of characters in a hashtag. | - System Config path: **Environment > Database** | +| This value must be greater than or equal to **2**. | - ``config.json`` setting: ``SqlSettings`` > ``MinimumHashtagLength`` > ``3`` | +| | - Environment variable: ``MM_SQLSETTINGS_MINIMUMHASHTAGLENGTH`` | ++----------------------------------------------------------------------+--------------------------------------------------------------------------------+ .. note:: @@ -895,6 +895,7 @@ Minimum hashtag length :systemconsole: Environment > Database :configjson: .SqlSettings.Trace :environment: MM_SQLSETTINGS_TRACE + :description: Log executed SQL statements for development purposes. Default is **false**. - **true**: Executing SQL statements are written to the log. - **false**: **(Default)** SQL statements aren't written to the log. @@ -904,7 +905,7 @@ SQL statement logging +---------------------------------------------------------------+--------------------------------------------------------------------------+ | Executed SQL statements can be written to the log for | - System Config path: **Environment > Database** | -| development. | - ``config.json`` setting: ``".SqlSettings.Trace: false",`` | +| development. | - ``config.json`` setting: ``SqlSettings`` > ``Trace`` > ``false`` | | | - Environment variable: ``MM_SQLSETTINGS_TRACE`` | | - **true**: Executing SQL statements are written to the log. | | | - **false**: **(Default)** SQL statements aren't written | | @@ -943,21 +944,21 @@ Recycle database connections Disable database search ~~~~~~~~~~~~~~~~~~~~~~~ -+------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ -| When `enterprise-scale search `, | - System Config path: **Environment > Database** | -| database search can be disabled from performing searches. | - ``config.json`` setting: ``".SqlSettings.DisableDatabaseSearch: false",`` | -| | - Environment variable: ``MM_SQLSETTINGS_DISABLEDATABASESEARCH`` | -| - **true**: Disables the use of the database to perform | | -| searches. If another search engine isn't configured, | | -| setting this value to ``true`` will result in empty search | | -| results. | | -| - **false**: **(Default)** Database search isn't disabled. | | -+------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ ++------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ +| When `enterprise-scale search `, | - System Config path: **Environment > Database** | +| database search can be disabled from performing searches. | - ``config.json`` setting: ``SqlSettings`` > ``DisableDatabaseSearch`` > ``false`` | +| | - Environment variable: ``MM_SQLSETTINGS_DISABLEDATABASESEARCH`` | +| - **true**: Disables the use of the database to perform | | +| searches. If another search engine isn't configured, | | +| setting this value to ``true`` will result in empty search | | +| results. | | +| - **false**: **(Default)** Database search isn't disabled. | | ++------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ Search behavior in Mattermost depends on which search engines are enabled: - When :doc:`Elasticsearch ` or :doc:`AWS OpenSearch ` is enabled, Mattermost will try to use it first. -- If Elasticsearch fails or is disabled, Mattermost will attempt to use :doc:`Bleve `, if enabled. If this occurs, you will see the warning ``Encountered error on SearchPostsInTeamForUser``. +- If Elasticsearch fails or is disabled, Mattermost will attempt to use Bleve search, if enabled. **Note:** Bleve search has been deprecated in Mattermost v11.0. We recommend using Elasticsearch or OpenSearch for enterprise search capabilities. - If these fail or are disabled, Mattermost tries to search the database directly, if this is enabled. - If all of the above methods fail or are disabled, the search results will be empty. @@ -970,13 +971,13 @@ Search behavior in Mattermost depends on which search engines are enabled: - **Offloading Search to Indexing Services**: Disabling database search often means that searches are offloaded to specialized indexing services like Elasticsearch, which are optimized for search operations. These services can provide faster and more efficient search capabilities compared to traditional database searches. - **Lower Resource Consumption**: Running search queries directly against the database can be resource-intensive (using CPU and memory). With database search disabled, these resources can be allocated to other critical functions, improving overall system performance. - **Enhanced Scalability**: As the number of users and data volume grow, database search can become less efficient. Specialized search services are designed to scale more effectively, enhancing overall system scalability and performance. - - However, the ability to perform database searches in Mattermost is a critical feature for many users, particularly when other search engines aren't enabled. Disabling this feature will result in users seeing an error if they attempt to use the Mattermost Search box. It’s important to balance performance improvements with the needs of your organization and users. + + However, the ability to perform database searches in Mattermost is a critical feature for many users, particularly when other search engines aren't enabled. Disabling this feature will result in users seeing an error if they attempt to use the Mattermost Search box. It’s important to balance performance improvements with the needs of your organization and users. Applied schema migrations ~~~~~~~~~~~~~~~~~~~~~~~~~ -A list of all migrations that have been applied to the data store based on the version information available in the ``db_migrations`` table. Select **About Mattermost** from the product menu to review the current database schema version applied to your deployment. - +A list of all migrations that have been applied to the data store based on the version information available in the ``db_migrations`` table. Select **About Mattermost** from the Product |product-list| menu to review the current database schema version applied to your deployment. .. config:setting:: active-search-backend :displayname: Active search backend (Database) @@ -985,7 +986,7 @@ A list of all migrations that have been applied to the data store based on the v :environment: N/A :description: Read-only display of the currently active backend used for search. -Active Search Backend +Active search backend ~~~~~~~~~~~~~~~~~~~~~ Read-only display of the currently active backend used for search. Values can include ``none``, ``database``, ``elasticsearch``, or ``bleve``. @@ -1003,11 +1004,11 @@ Read replicas .. include:: ../../_static/badges/ent-pro-only.rst :start-after: :nosearch: -+--------------------------------------------------------+-----------------------------------------------------------------------+ -| Specifies the connection strings for the read replica | - System Config path: N/A | -| databases. | - ``config.json`` setting: ``".SqlSettings.DataSourceReplicas": []`` | -| | - Environment variable: ``MM_SQLSETTINGS_DATASOURCEREPLICAS`` | -+--------------------------------------------------------+-----------------------------------------------------------------------+ ++--------------------------------------------------------+-------------------------------------------------------------------------------+ +| Specifies the connection strings for the read replica | - System Config path: N/A | +| databases. | - ``config.json`` setting: ``SqlSettings`` > ``DataSourceReplicas`` > ``[]`` | +| | - Environment variable: ``MM_SQLSETTINGS_DATASOURCEREPLICAS`` | ++--------------------------------------------------------+-------------------------------------------------------------------------------+ .. note:: @@ -1034,12 +1035,12 @@ Search replicas .. include:: ../../_static/badges/ent-pro-only.rst :start-after: :nosearch: -+--------------------------------------------------------+-----------------------------------------------------------------------------+ -| Specifies the connection strings for the search | - System Config path: N/A | -| replica databases. A search replica is similar to a | - ``config.json`` setting: ``".SqlSettings.DataSourceSearchReplicas": []`` | -| read replica, but is used only for handling search | - Environment variable: ``MM_SQLSETTINGS_DATASOURCESEARCHREPLICAS`` | -| queries. | | -+--------------------------------------------------------+-----------------------------------------------------------------------------+ ++--------------------------------------------------------+-------------------------------------------------------------------------------------+ +| Specifies the connection strings for the search | - System Config path: N/A | +| replica databases. A search replica is similar to a | - ``config.json`` setting: ``SqlSettings`` > ``DataSourceSearchReplicas`` > ``[]`` | +| read replica, but is used only for handling search | - Environment variable: ``MM_SQLSETTINGS_DATASOURCESEARCHREPLICAS`` | +| queries. | | ++--------------------------------------------------------+-------------------------------------------------------------------------------------+ .. note:: @@ -1065,7 +1066,7 @@ Replica lag settings +--------------------------------------------------------+----------------------------------------------------------------------------------+ | String array input specifies a connection string and | - System Config path: N/A | -| user-defined SQL queries on the database to measure | - ``config.json`` setting: ``".SqlSettings.ReplicaLagSettings": []`` | +| user-defined SQL queries on the database to measure | - ``config.json`` setting: ``SqlSettings`` > ``ReplicaLagSettings`` > ``[]`` | | replica lag for a single replica instance. | - Environment variable: ``MM_SQLSETTINGS_REPLICALAGSETTINGS`` | | | | | These settings monitor absolute lag based on binlog | | @@ -1203,13 +1204,13 @@ Replica monitor interval (seconds) .. include:: ../../_static/badges/allplans-selfhosted.rst :start-after: :nosearch: -+--------------------------------------------------------+---------------------------------------------------------------------------------+ -| Specifies how frequently unhealthy replicas will be | - System Config path: N/A | -| monitored for liveness check. Mattermost will | - ``config.json`` setting: ``".SqlSettings.ReplicaMonitorIntervalSeconds": 5`` | -| dynamically choose a replica if it's alive. | - Environment variable: ``MM_SQLSETTINGS_REPLICAMONITORINTERVALSECONDS`` | -| | | -| Numerical input. Default is 5 seconds. | | -+--------------------------------------------------------+---------------------------------------------------------------------------------+ ++--------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Specifies how frequently unhealthy replicas will be | - System Config path: N/A | +| monitored for liveness check. Mattermost will | - ``config.json`` setting: ``SqlSettings`` > ``ReplicaMonitorIntervalSeconds`` > ``5`` | +| dynamically choose a replica if it's alive. | - Environment variable: ``MM_SQLSETTINGS_REPLICAMONITORINTERVALSECONDS`` | +| | | +| Numerical input. Default is 5 seconds. | | ++--------------------------------------------------------+-----------------------------------------------------------------------------------------+ ---- @@ -1238,13 +1239,13 @@ You can configure Mattermost enterprise search by going to **System Console > En Enable Elasticsearch indexing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------------+ -| Configure Mattermost to index new posts automatically. | - System Config path: **Environment > Elasticsearch** | -| | - ``config.json`` setting: ``".Elasticsearchsettings.EnableIndexing: false",`` | -| - **true**: Indexing of new messages occurs automatically. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING`` | -| - **false**: **(Default)** Indexing of new messages is | | -| disabled, and new messages aren't indexed. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------------------+ +| Configure Mattermost to index new posts automatically. | - System Config path: **Environment > Elasticsearch** | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``EnableIndexing`` > ``false`` | +| - **true**: Indexing of new messages occurs automatically. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING`` | +| - **false**: **(Default)** Indexing of new messages is | | +| disabled, and new messages aren't indexed. | | ++---------------------------------------------------------------+---------------------------------------------------------------------------------------+ .. note:: @@ -1262,12 +1263,12 @@ Backend type Both :doc:`Elasticsearch ` and :doc:`AWS OpenSearch ` provide enterprise-scale deployments with optimized search performance and prevents performance degradation and timeouts. Learn more about :doc:`enterprise search ` in our product documentation. -+----------------------------------------------------+-----------------------------------------------------------------------------------+ -| The type of search backend. | - System Config path: **Environment > Elasticsearch** | -| | - ``config.json`` setting: ``".Elasticsearchsettings.Backend: elasticsearch",`` | -| - ``elasticsearch`` - (**Default**) | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_BACKEND`` | -| - ``opensearch`` - Required for AWS OpenSearch. | | -+----------------------------------------------------+-----------------------------------------------------------------------------------+ ++----------------------------------------------------+--------------------------------------------------------------------------------------------+ +| The type of search backend. | - System Config path: **Environment > Elasticsearch** | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``Backend`` > ``"elasticsearch"`` | +| - ``elasticsearch`` - (**Default**) | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_BACKEND`` | +| - ``opensearch`` - Required for AWS OpenSearch. | | ++----------------------------------------------------+--------------------------------------------------------------------------------------------+ Learn more about :ref:`enterprise search version support `. @@ -1283,7 +1284,7 @@ Server connection address +----------------------------------------------------+--------------------------------------------------------------------------+ | The address of the Elasticsearch or AWS | - System Config path: **Environment > Elasticsearch** | -| OpenSearch server. | - ``config.json`` setting: ``".Elasticsearchsettings.ConnectionUrl",`` | +| OpenSearch server. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``ConnectionUrl`` | | | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CONNECTIONURL`` | +----------------------------------------------------+--------------------------------------------------------------------------+ @@ -1299,7 +1300,7 @@ CA path +----------------------------------------------------+--------------------------------------------------------------------------+ | Optional path to the Custom Certificate Authority | - System Config path: **Environment > Elasticsearch** | -| certificates for the Elasticsearch or AWS | - ``config.json`` setting: ``".Elasticsearchsettings.CA",`` | +| certificates for the Elasticsearch or AWS | - ``config.json`` setting: ``ElasticsearchSettings`` > ``CA`` | | OpenSearch server. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CA`` | +----------------------------------------------------+--------------------------------------------------------------------------+ @@ -1322,7 +1323,7 @@ Available from Mattermost v7.8. Can be used in conjunction with basic auth crede +----------------------------------------------------+--------------------------------------------------------------------------+ | Optional client certificate for the connection to | - System Config path: **Environment > Elasticsearch** | -| the Elasticsearch or AWS OpenSearch server in | - ``config.json`` setting: ``".Elasticsearchsettings.ClientCert",`` | +| the Elasticsearch or AWS OpenSearch server in | - ``config.json`` setting: ``ElasticsearchSettings`` > ``ClientCert`` | | the PEM format. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CLIENTCERT`` | +----------------------------------------------------+--------------------------------------------------------------------------+ @@ -1340,7 +1341,7 @@ Available from Mattermost v7.8. Can be used in conjunction with basic auth crede +----------------------------------------------------+--------------------------------------------------------------------------+ | Optional key for the client certificate in the PEM | - System Config path: **Environment > Elasticsearch** | -| format. | - ``config.json`` setting: ``".Elasticsearchsettings.ClientKey",`` | +| format. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``ClientKey`` | | | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CLIENTKEY`` | +----------------------------------------------------+--------------------------------------------------------------------------+ @@ -1357,14 +1358,14 @@ Available from Mattermost v7.8. Can be used in conjunction with basic auth crede Skip TLS verification ~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------------+ -| The certificate step for TLS connections can be skipped. | - System Config path: **Environment > Elasticsearch** | -| | - ``config.json`` setting: ``".Elasticsearchsettings.SkipTLSVerification: false",`` | -| - **true**: Skips the certificate verification step for | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_SKIPTLSVERIFICATION`` | -| TLS connections. | | -| - **false**: **(Default)** Mattermost requires | | -| certificate verification. | | -+---------------------------------------------------------------+-------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ +| The certificate step for TLS connections can be skipped. | - System Config path: **Environment > Elasticsearch** | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``SkipTLSVerification`` > ``false`` | +| - **true**: Skips the certificate verification step for | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_SKIPTLSVERIFICATION`` | +| TLS connections. | | +| - **false**: **(Default)** Mattermost requires | | +| certificate verification. | | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ .. config:setting:: server-username :displayname: Server username (Elasticsearch) @@ -1378,7 +1379,7 @@ Server username +---------------------------------------------------------------+--------------------------------------------------------------------------+ | (Optional) The username to authenticate to the | - System Config path: **Environment > Elasticsearch** | -| Elasticsearch or AWS OpenSearch server. | - ``config.json`` setting: ``".Elasticsearchsettings.UserName",`` | +| Elasticsearch or AWS OpenSearch server. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``UserName`` | | | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_USERNAME`` | | String input. | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -1395,7 +1396,7 @@ Server password +---------------------------------------------------------------+--------------------------------------------------------------------------+ | (Optional) The password to authenticate to the | - System Config path: **Environment > Elasticsearch** | -| Elasticsearch or AWS OpenSearch server. | - ``config.json`` setting: ``".Elasticsearchsettings.Password",`` | +| Elasticsearch or AWS OpenSearch server. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``Password`` | | | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_PASSWORD`` | | String input. | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -1413,14 +1414,14 @@ Server password Enable cluster sniffing ~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+--------------------------------------------------------------------------+ -| Configure Mattermost to automatically find and connect to | - System Config path: **Environment > Elasticsearch** | -| all data nodes in a cluster. | - ``config.json`` setting: ``".Elasticsearchsettings.Sniff: false",`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_SNIFF`` | -| - **true**: Sniffing finds and connects to all data nodes | | -| in your cluster automatically. | | -| - **false**: **(Default)** Cluster sniffing is disabled. | | -+----------------------------------------------------------------+--------------------------------------------------------------------------+ ++----------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Configure Mattermost to automatically find and connect to | - System Config path: **Environment > Elasticsearch** | +| all data nodes in a cluster. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``Sniff`` > ``false`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_SNIFF`` | +| - **true**: Sniffing finds and connects to all data nodes | | +| in your cluster automatically. | | +| - **false**: **(Default)** Cluster sniffing is disabled. | | ++----------------------------------------------------------------+---------------------------------------------------------------------------------+ Select the **Test Connection** button in the System Console to validate the connection between Mattermost and the Elasticsearch or AWS OpenSearch server. @@ -1493,13 +1494,13 @@ Select the **Purge Indexes** button in the System Console to purge the index. Af Indexes to skip while purging ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------+ -| Specify index names to ignore while purging indexes. | - System Config path: **Environment > Elasticsearch** | -| Separate multiple index names with commas. | - ``config.json`` setting: ``ElasticsearchSettings.IgnoredPurgeIndexes`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES`` | -| Use an asterisk (*) to match a sequence of index name | | -| characters. | | -+---------------------------------------------------------------+---------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Specify index names to ignore while purging indexes. | - System Config path: **Environment > Elasticsearch** | +| Separate multiple index names with commas. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``IgnoredPurgeIndexes`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_IGNOREDPURGEINDEXES`` | +| Use an asterisk (*) to match a sequence of index name | | +| characters. | | ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: enable-elasticsearch-for-search-queries :displayname: Enable Elasticsearch for search queries (Elasticsearch) @@ -1514,17 +1515,17 @@ Indexes to skip while purging Enable Elasticsearch for search queries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------------+ -| Configure Mattermost to use Elasticsearch or AWS OpenSearch | - System Config path: **Environment > Elasticsearch** | -| for all search queries using the latest index. | - ``config.json`` setting: ``".Elasticsearchsettings.EnableSearching: false",`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING`` | -| - **true**: Elasticsearch or AWS OpenSearch is used for all | | -| search queries using the latest index. Search results may | | -| be incomplete until a bulk index of the existing message | | -| database is completed. | | -| - **false**: **(Default)** Database search is used for | | -| search queries. | | -+---------------------------------------------------------------+---------------------------------------------------------------------------------+ ++---------------------------------------------------------------+----------------------------------------------------------------------------------------+ +| Configure Mattermost to use Elasticsearch or AWS OpenSearch | - System Config path: **Environment > Elasticsearch** | +| for all search queries using the latest index. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``EnableSearching`` > ``false`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING`` | +| - **true**: Elasticsearch or AWS OpenSearch is used for all | | +| search queries using the latest index. Search results may | | +| be incomplete until a bulk index of the existing message | | +| database is completed. | | +| - **false**: **(Default)** Database search is used for | | +| search queries. | | ++---------------------------------------------------------------+----------------------------------------------------------------------------------------+ If indexing is disabled and then re-enabled after an index is created, purge and rebuild the index to ensure complete search results. @@ -1541,16 +1542,16 @@ If indexing is disabled and then re-enabled after an index is created, purge and Enable Elasticsearch for autocomplete queries ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ -| Configure Mattermost to use Elasticsearch or AWS OpenSearch | - System Config path: **Environment > Elasticsearch** | -| for all autocompletion queries on users and channels using | - ``config.json`` setting: ``".Elasticsearchsettings.EnableAutocomplete: false",`` | -| the latest index. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLEAUTOCOMPLETE`` | -| | | -| - **true**: Elasticsearch or AWS OpenSearch will be used for | | -| all autocompletion queries on users and channels using the | | -| latest index. | | -| - **false**: **(Default)** Database autocomplete is used. | | -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Configure Mattermost to use Elasticsearch or AWS OpenSearch | - System Config path: **Environment > Elasticsearch** | +| for all autocompletion queries on users and channels using | - ``config.json`` setting: ``ElasticsearchSettings`` > ``EnableAutocomplete`` > ``false`` | +| the latest index. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_ENABLEAUTOCOMPLETE`` | +| | | +| - **true**: Elasticsearch or AWS OpenSearch will be used for | | +| all autocompletion queries on users and channels using the | | +| latest index. | | +| - **false**: **(Default)** Database autocomplete is used. | | ++---------------------------------------------------------------+-------------------------------------------------------------------------------------------+ Autocompletion results may be incomplete until a bulk index of the existing users and channels database is finished. @@ -1564,11 +1565,11 @@ Autocompletion results may be incomplete until a bulk index of the existing user Post index replicas ~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ -| The number of replicas to use for each post index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.PostIndexReplicas: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTINDEXREPLICAS`` | -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ +| The number of replicas to use for each post index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``PostIndexReplicas`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTINDEXREPLICAS`` | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ .. note:: @@ -1586,11 +1587,11 @@ Post index replicas Post index shards ~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ -| The number of shards to use for each post index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.PostIndexShards: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTINDEXSHARDS`` | -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ +| The number of shards to use for each post index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``PostIndexShards`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTINDEXSHARDS`` | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ .. note:: @@ -1606,11 +1607,11 @@ Post index shards Channel index replicas ~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ -| The number of replicas to use for each channel index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.ChannelIndexReplicas: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CHANNELINDEXREPLICAS`` | -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| The number of replicas to use for each channel index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``ChannelIndexReplicas`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CHANNELINDEXREPLICAS`` | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ .. note:: @@ -1626,11 +1627,11 @@ Channel index replicas Channel index shards ~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ -| The number of shards to use for each channel index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.ChannelIndexShards: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CHANNELINDEXSHARDS`` | -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| The number of shards to use for each channel index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``ChannelIndexShards`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_CHANNELINDEXSHARDS`` | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ .. config:setting:: user-index-replicas :displayname: User index replicas (Elasticsearch) @@ -1642,11 +1643,11 @@ Channel index shards User index replicas ~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ -| The number of replicas to use for each user index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.UserIndexReplicas: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_USERINDEXREPLICAS`` | -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ +| The number of replicas to use for each user index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``UserIndexReplicas`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_USERINDEXREPLICAS`` | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ .. note:: @@ -1662,11 +1663,11 @@ User index replicas User index shards ~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ -| The number of shards to use for each user index. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.UserIndexShards: 1",`` | -| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_USERINDEXSHARDS`` | -+---------------------------------------------------------------+----------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-------------------------------------------------------------------------------------+ +| The number of shards to use for each user index. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``UserIndexShards`` > ``1`` | +| Numerical input. Default is **1**. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_USERINDEXSHARDS`` | ++---------------------------------------------------------------+-------------------------------------------------------------------------------------+ .. config:setting:: aggregate-search-indexes :displayname: Aggregate search indexes (Elasticsearch) @@ -1678,13 +1679,13 @@ User index shards Aggregate search indexes ~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+----------------------------------------------------------------------------------------+ -| Elasticsearch or AWS OpenSearch indexes older than the age | - System Config path: N/A | -| specified by this setting, in days, will be aggregated during | - ``config.json`` setting: ``".Elasticsearchsettings.AggregatePostsAfterDays: 365",`` | -| the daily scheduled job. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_AGGREGATEPOSTSAFTERDAYS`` | -| | | -| Numerical input. Default is **365** days. | | -+---------------------------------------------------------------+----------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ +| Elasticsearch or AWS OpenSearch indexes older than the age | - System Config path: N/A | +| specified by this setting, in days, will be aggregated during | - ``config.json`` setting: ``ElasticsearchSettings`` > ``AggregatePostsAfterDays`` > ``365`` | +| the daily scheduled job. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_AGGREGATEPOSTSAFTERDAYS`` | +| | | +| Numerical input. Default is **365** days. | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ .. note:: @@ -1700,14 +1701,14 @@ Aggregate search indexes Post aggregator start time ~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ -| The start time of the daily scheduled aggregator job. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.PostsAggregatorJobStartTime: 03:00",`` | -| Must be a 24-hour time stamp in the form ``HH:MM`` based on | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTSAGGREGATORJOBSTARTTIME`` | -| the local time of the server. | | -| | | -| Default is **03:00** (3 AM) | | -+---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ +| The start time of the daily scheduled aggregator job. | - System Config path: N/A | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``PostsAggregatorJobStartTime`` > ``"03:00"`` | +| Must be a 24-hour time stamp in the form ``HH:MM`` based on | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_POSTSAGGREGATORJOBSTARTTIME`` | +| the local time of the server. | | +| | | +| Default is **03:00** (3 AM) | | ++---------------------------------------------------------------+------------------------------------------------------------------------------------------------------+ .. config:setting:: index-prefix :displayname: Index prefix (Elasticsearch) @@ -1721,7 +1722,7 @@ Index prefix +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The prefix added to the Elasticsearch or AWS OpenSearch | - System Config path: N/A | -| index name. | - ``config.json`` setting: ``".Elasticsearchsettings.IndexPrefix",`` | +| index name. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``IndexPrefix`` | | | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_INDEXPREFIX`` | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -1739,17 +1740,17 @@ Index prefix Global search prefix ~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+------------------------------------------------------------------------------+ -| Enable global search across multiple Elasticsearch indices | - System Config path: N/A | -| with the same `index prefix <#index-prefix>`__. | - ``config.json`` setting: ``".Elasticsearchsettings.GlobalSearchPrefix",`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_GLOBALSEARCHPREFIX`` | -| This is helpful for setups with multiple data centers where | | -| Elasticsearch instances share data using cross-cluster | | -| replication. It allows for easier and unified searching | | -| across distributed indices. | | -| | | -| Value must be a prefix of ``IndexPrefix``. | | -+---------------------------------------------------------------+------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-------------------------------------------------------------------------------+ +| Enable global search across multiple Elasticsearch indices | - System Config path: N/A | +| with the same `index prefix <#index-prefix>`__. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``GlobalSearchPrefix`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_GLOBALSEARCHPREFIX`` | +| This is helpful for setups with multiple data centers where | | +| Elasticsearch instances share data using cross-cluster | | +| replication. It allows for easier and unified searching | | +| across distributed indices. | | +| | | +| Value must be a prefix of ``IndexPrefix``. | | ++---------------------------------------------------------------+-------------------------------------------------------------------------------+ .. config:setting:: live-indexing-batch-size :displayname: Live indexing batch size (Elasticsearch) @@ -1761,18 +1762,18 @@ Global search prefix Live indexing batch size ~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-----------------------------------------------------------------------------------+ -| The number of new posts needed before those posts are added | - System Config path: N/A | -| to the Elasticsearch or AWS OpenSearch index. Once added to | - ``config.json`` setting: ``".Elasticsearchsettings.LiveIndexingBatchSize: 1",`` | -| the index, the post becomes searchable. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE`` | -| | | -| On servers with more than 1 post per second, we suggest | | -| setting this value to the average number of posts over a | | -| 20 second period of time. | | -| | | -| Numerical input. Default is **1**. Every post is indexed | | -| synchronously as they are created. | | -+---------------------------------------------------------------+-----------------------------------------------------------------------------------+ ++---------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| The number of new posts needed before those posts are added | - System Config path: N/A | +| to the Elasticsearch or AWS OpenSearch index. Once added to | - ``config.json`` setting: ``ElasticsearchSettings`` > ``LiveIndexingBatchSize`` > ``1`` | +| the index, the post becomes searchable. | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_LIVEINDEXINGBATCHSIZE`` | +| | | +| On servers with more than 1 post per second, we suggest | | +| setting this value to the average number of posts over a | | +| 20 second period of time. | | +| | | +| Numerical input. Default is **1**. Every post is indexed | | +| synchronously as they are created. | | ++---------------------------------------------------------------+------------------------------------------------------------------------------------------+ .. note:: @@ -1842,12 +1843,12 @@ During busy periods, this delay will be faster as more traffic is occurring, cau Batch size ~~~~~~~~~~~ -+-------------------------------------------+---------------------------------------------------------------------------+ -| The number of posts for a single batch | - System Config path: N/A | -| during a bulk indexing job. | - ``config.json`` setting: ``".Elasticsearchsettings.BatchSize :10000",`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_BATCHSIZE`` | -| Numerical input. Default is **10000**. | | -+-------------------------------------------+---------------------------------------------------------------------------+ ++-------------------------------------------+----------------------------------------------------------------------------------+ +| The number of posts for a single batch | - System Config path: N/A | +| during a bulk indexing job. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``BatchSize`` > ``10000`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_BATCHSIZE`` | +| Numerical input. Default is **10000**. | | ++-------------------------------------------+----------------------------------------------------------------------------------+ .. config:setting:: request-timeout :displayname: Request timeout (Elasticsearch) @@ -1859,12 +1860,12 @@ Batch size Request timeout ~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ -| The timeout, in seconds, for Elasticsearch or AWS OpenSearch | - System Config path: N/A | -| calls. | - ``config.json`` setting: ``".Elasticsearchsettings.RequestTimeoutSeconds :30",`` | -| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_REQUESTTIMEOUTSECONDS`` | -| Numerical input in seconds. Default is **30** seconds. | | -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| The timeout, in seconds, for Elasticsearch or AWS OpenSearch | - System Config path: N/A | +| calls. | - ``config.json`` setting: ``ElasticsearchSettings`` > ``RequestTimeoutSeconds`` > ``30`` | +| | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_REQUESTTIMEOUTSECONDS`` | +| Numerical input in seconds. Default is **30** seconds. | | ++---------------------------------------------------------------+-------------------------------------------------------------------------------------------+ .. config:setting:: trace :displayname: Trace (Elasticsearch) @@ -1882,7 +1883,7 @@ Trace +---------------------------------------------------------------------+--------------------------------------------------------------------------+ | Options for printing Elasticsearch or AWS OpenSearch trace errors. | - System Config path: N/A | -| | - ``config.json`` setting: ``".Elasticsearchsettings.Trace",`` | +| | - ``config.json`` setting: ``ElasticsearchSettings`` > ``Trace`` | | - **error**: Creates the error trace when initializing | - Environment variable: ``MM_ELASTICSEARCHSETTINGS_TRACE`` | | the Elasticsearch or AWS OpenSearch client and prints any | | | template creation or search query that returns an error as part | | @@ -1923,17 +1924,17 @@ Configure file storage settings by going to **System Console > Environment > Fil File storage system ~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| The type of file storage system used. | - System Config path: **Environment > File Storage** | -| Can be either Local File System or Amazon S3. | - ``config.json`` setting: ``".FileSettings.DriverName: local”,`` | -| | - Environment variable: ``MM_FILESETTINGS_DRIVERNAME`` | -| - **local**: **(Default)** Files and images are stored in | | -| the specified local file directory. | | -| - **amazons3**: Files and images are stored on Amazon S3 | | -| based on the access key, bucket, and region fields | | -| provided. The driver is compatible with MinIO (Beta) | | -| and Digital Ocean Spaces. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ +| The type of file storage system used. | - System Config path: **Environment > File Storage** | +| Can be either Local File System or Amazon S3. | - ``config.json`` setting: ``FileSettings`` > ``DriverName`` > ``"local"`` | +| | - Environment variable: ``MM_FILESETTINGS_DRIVERNAME`` | +| - **local**: **(Default)** Files and images are stored in | | +| the specified local file directory. | | +| - **amazons3**: Files and images are stored on Amazon S3 | | +| based on the access key, bucket, and region fields | | +| provided. The driver is compatible with MinIO (Beta) | | +| and Digital Ocean Spaces. | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ .. config:setting:: local-storage-directory :displayname: Local storage directory (File Storage) @@ -1947,7 +1948,7 @@ Local storage directory +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The local directory to which files are written when the | - System Config path: **Environment > File Storage** | -| **File storage system** is set to **local**. | - ``config.json`` setting: ``".FileSettings.Directory”,`` | +| **File storage system** is set to **local**. | - ``config.json`` setting: ``FileSettings`` > ``Directory`` | | Can be any directory writable by the user Mattermost is | - Environment variable: ``MM_FILESETTINGS_DIRECTORY`` | | running as, and is relative to the directory where | | | Mattermost is installed. | | @@ -1967,13 +1968,13 @@ When **File storage system** is set to **amazons3**, this setting has no effect. Maximum file size ~~~~~~~~~~~~~~~~~ -+-------------------------------------------------------------------+--------------------------------------------------------------------------+ -| The maximum file size for message attachments and plugin | - System Config path: **Environment > File Storage** | -| uploads. This value must be specified in mebibytes in the | - ``config.json`` setting: ``".FileSettings.MaxFileSize: 104857600",`` | -| System Console, and in bytes in the ``config.json`` file. | - Environment variable: ``MM_FILESETTINGS_MAXFILESIZE`` | -| | | -| The default is ``104857600`` bytes (**100** mebibytes). | | -+-------------------------------------------------------------------+--------------------------------------------------------------------------+ ++-------------------------------------------------------------------+---------------------------------------------------------------------------------+ +| The maximum file size for message attachments and plugin | - System Config path: **Environment > File Storage** | +| uploads. This value must be specified in mebibytes in the | - ``config.json`` setting: ``FileSettings`` > ``MaxFileSize`` > ``104857600`` | +| System Console, and in bytes in the ``config.json`` file. | - Environment variable: ``MM_FILESETTINGS_MAXFILESIZE`` | +| | | +| The default is ``104857600`` bytes (**100** mebibytes). | | ++-------------------------------------------------------------------+---------------------------------------------------------------------------------+ .. note:: @@ -1999,7 +2000,7 @@ Enable document search by content +---------------------------------------------------------------+-------------------------------------------------------------------------------------+ | Enable users to search the contents of documents attached | - System Config path: **Environment > File Storage** | -| to messages. | - ``config.json`` setting: ``".FileSettings.ExtractContent: true",`` | +| to messages. | - ``config.json`` setting: ``FileSettings`` > ``ExtractContent`` > ``true`` | | | - Environment variable: ``MM_FILESETTINGS_EXTRACTCONTENT`` | | - **true**: **(Default)** Documents are searchable by | | | their content. | | @@ -2037,7 +2038,7 @@ Enable searching content of documents within ZIP files +---------------------------------------------------------------+----------------------------------------------------------------------------------------+ | Enables users to search the contents of compressed ZIP files | - System Config path: **Environment > File Storage** | -| attached to messages. | - ``config.json`` setting: ``".FileSettings.ArchiveRecursion: false",`` | +| attached to messages. | - ``config.json`` setting: ``FileSettings`` > ``ArchiveRecursion`` > ``false`` | | | - Environment variable: ``MM_FILESETTINGS_ARCHIVERECURSION`` | | - **true**: Contents of documents within ZIP files are | | | returned in search results. This may have an impact on | | @@ -2065,7 +2066,7 @@ Amazon S3 bucket +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The name of the bucket for your S3-compatible object | - System Config path: **Environment > File Storage** | -| storage instance. | - ``config.json`` setting: ``".FileSettings.AmazonS3Bucket",`` | +| storage instance. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3Bucket`` | | | - Environment variable: ``MM_FILESETTINGS_AMAZONS3BUCKET`` | | A string with the S3-compatible bucket name. | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -2082,7 +2083,7 @@ Amazon S3 path prefix +---------------------------------------------------------------+--------------------------------------------------------------------------+ | The prefix you selected for your **Amazon S3 bucket** in AWS. | - System Config path: N/A | -| | - ``config.json`` setting: ``".FileSettings.AmazonS3PathPrefix",`` | +| | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3PathPrefix`` | | A string containing the path prefix. | - Environment variable: ``MM_FILESETTINGS_AMAZONS3PATHPREFIX`` | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -2120,7 +2121,7 @@ Amazon S3 access key ID +---------------------------------------------------------------+--------------------------------------------------------------------------+ | A string with the access key for the S3-compatible storage | - System Config path: **Environment > File Storage** | -| instance. Your EC2 administrator can supply you with the | - ``config.json`` setting: ``".FileSettings.AmazonS3AccessKeyId",`` | +| instance. Your EC2 administrator can supply you with the | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3AccessKeyId`` | | Access Key ID. | - Environment variable: ``MM_FILESETTINGS_AMAZONS3ACCESSKEYID`` | +---------------------------------------------------------------+--------------------------------------------------------------------------+ @@ -2138,12 +2139,12 @@ Amazon S3 access key ID Amazon S3 endpoint ~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ -| The hostname of your S3-compatible instance. | - System Config path: **Environment > File Storage** | -| | - ``config.json`` setting: ``".FileSettings.AmazonS3Endpoint: s3.amazonaws.com",`` | -| A string with the hostname of the S3-compatible storage | - Environment variable: ``MM_FILESETTINGS_AMAZONS3ENDPOINT`` | -| instance. Defaults to **s3.amazonaws.com**. | | -+---------------------------------------------------------------+------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ +| The hostname of your S3-compatible instance. | - System Config path: **Environment > File Storage** | +| | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3Endpoint`` > ``"s3.amazonaws.com"`` | +| A string with the hostname of the S3-compatible storage | - Environment variable: ``MM_FILESETTINGS_AMAZONS3ENDPOINT`` | +| instance. Defaults to **s3.amazonaws.com**. | | ++---------------------------------------------------------------+---------------------------------------------------------------------------------------------+ .. note:: @@ -2159,13 +2160,13 @@ Amazon S3 endpoint Amazon S3 secret access key ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| The secret access key associated with your Amazon S3 | - System Config path: **Environment > File Storage** | -| Access Key ID. | - ``config.json`` setting: ``".FileSettings.AmazonS3SecretAccessKey",`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY`` | -| A string with the secret access key for the S3-compatible | | -| storage instance. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+----------------------------------------------------------------------------+ +| The secret access key associated with your Amazon S3 | - System Config path: **Environment > File Storage** | +| Access Key ID. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3SecretAccessKey`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY`` | +| A string with the secret access key for the S3-compatible | | +| storage instance. | | ++---------------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: enable-secure-amazon-s3-connections :displayname: Enable secure Amazon S3 connections (File Storage) @@ -2179,7 +2180,7 @@ Enable secure Amazon S3 connections +---------------------------------------------------------------+--------------------------------------------------------------------------+ | Enable or disable secure Amazon S3 connections. | - System Config path: **Environment > File Storage** | -| | - ``config.json`` setting: ``".FileSettings.AmazonS3SSL: true",`` | +| | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3SSL`` > ``true`` | | - **true**: **(Default)** Enables only secure Amazon | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SSL`` | | S3 connections. | | | - **false**: Allows insecure connections to Amazon S3. | | @@ -2197,13 +2198,13 @@ Enable secure Amazon S3 connections Amazon S3 signature v2 ~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| By default, Mattermost uses Signature v4 to sign API calls | - System Config path: N/A | -| to AWS, but under some circumstances, v2 is required. | - ``config.json`` setting: ``".FileSettings.AmazonS3SignV2: false",`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SIGNV2`` | -| - **true**: Use Signature v2 signing process. | | -| - **false**: **(Default)** Use Signature v4 signing process. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+------------------------------------------------------------------------------+ +| By default, Mattermost uses Signature v4 to sign API calls | - System Config path: N/A | +| to AWS, but under some circumstances, v2 is required. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3SignV2`` > ``false`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SIGNV2`` | +| - **true**: Use Signature v2 signing process. | | +| - **false**: **(Default)** Use Signature v4 signing process. | | ++---------------------------------------------------------------+------------------------------------------------------------------------------+ See the `AWS `_ documentation for information about when to use the Signature v2 signing process. @@ -2222,14 +2223,14 @@ Enable server-side encryption for Amazon S3 .. include:: ../../_static/badges/ent-selfhosted.rst :start-after: :nosearch: -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| Enable server-side encryption for Amazon S3. | - System Config path: **Environment > File Storage** | -| | - ``config.json`` setting: ``".FileSettings.AmazonS3SSE: false",`` | -| - **true**: Encrypts files in Amazon S3 using server-side | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SSE`` | -| encryption with Amazon S3-managed keys. | | -| - **false**: **(Default)** Doesn’t encrypt files in | | -| Amazon S3. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ +| Enable server-side encryption for Amazon S3. | - System Config path: **Environment > File Storage** | +| | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3SSE`` > ``false`` | +| - **true**: Encrypts files in Amazon S3 using server-side | - Environment variable: ``MM_FILESETTINGS_AMAZONS3SSE`` | +| encryption with Amazon S3-managed keys. | | +| - **false**: **(Default)** Doesn’t encrypt files in | | +| Amazon S3. | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ .. config:setting:: enable-amazon-s3-debugging :displayname: Enable Amazon S3 debugging (File Storage) @@ -2243,16 +2244,16 @@ Enable server-side encryption for Amazon S3 Enable Amazon S3 debugging ~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| Enable or disable Amazon S3 debugging to capture additional | - System Config path: **Environment > File Storage** | -| debugging information in system logs. | - ``config.json`` setting: ``".FileSettings.AmazonS3Trace: false",`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3TRACE`` | -| - **true**: Log additional debugging information is logged | | -| to the system logs. | | -| - **false**: **(Default)** No Amazon S3 debugging information | | -| is included in the system logs. Typically set to **false** | | -| in production. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ +| Enable or disable Amazon S3 debugging to capture additional | - System Config path: **Environment > File Storage** | +| debugging information in system logs. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3Trace`` > ``false`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3TRACE`` | +| - **true**: Log additional debugging information is logged | | +| to the system logs. | | +| - **false**: **(Default)** No Amazon S3 debugging information | | +| is included in the system logs. Typically set to **false** | | +| in production. | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ Select the **Test Connection** button in the System Console to validate the settings and ensure the user can access the server. @@ -2268,13 +2269,13 @@ Amazon S3 storage class Some Amazon S3-compatible storage solutions require the storage class parameter to be present in upload requests, otherwise they will be rejected. Configure this storage class as the storage class required by your S3-compatible solution. -+---------------------------------------------------------------+--------------------------------------------------------------------------+ -| The storage class to use for uploads to S3-compatible | - System Config path: **Environment > File Storage** | -| storage solutions. | - ``config.json`` setting: ``.FileSettings.AmazonS3StorageClass: ""``, | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3STORAGECLASS`` | -| String input. Default is an empty string ``""``. | | -| Select **Test Connection** to test the configured connection. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------------------+------------------------------------------------------------------------------------+ +| The storage class to use for uploads to S3-compatible | - System Config path: **Environment > File Storage** | +| storage solutions. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3StorageClass`` > ``""``, | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3STORAGECLASS`` | +| String input. Default is an empty string ``""``. | | +| Select **Test Connection** to test the configured connection. | | ++---------------------------------------------------------------+------------------------------------------------------------------------------------+ .. note:: @@ -2290,12 +2291,12 @@ Some Amazon S3-compatible storage solutions require the storage class parameter Export Amazon S3 storage class ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------------+ -| The storage class to use for exports to S3-compatible | - System Config path: N/A | -| storage solutions. | - ``config.json`` setting: ``.FileSettings.ExportAmazonS3StorageClass: "",`` | -| | - Environment variable: ``MM_FILESETTINGS_EXPORTAMAZONS3STORAGECLASS`` | -| String input. Default is an empty string ``""``. | | -+---------------------------------------------------------------+---------------------------------------------------------------------------------+ ++---------------------------------------------------------------+----------------------------------------------------------------------------------------+ +| The storage class to use for exports to S3-compatible | - System Config path: N/A | +| storage solutions. | - ``config.json`` setting: ``FileSettings`` > ``ExportAmazonS3StorageClass`` > ``""`` | +| | - Environment variable: ``MM_FILESETTINGS_EXPORTAMAZONS3STORAGECLASS`` | +| String input. Default is an empty string ``""``. | | ++---------------------------------------------------------------+----------------------------------------------------------------------------------------+ .. note:: @@ -2311,12 +2312,12 @@ Export Amazon S3 storage class Amazon S3 request timeout ~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| The amount of time, in milliseconds, before requests to | - System Config path: N/A | -| Amazon S3 storage time out. | - ``config.json`` setting: ``".FileSettings.AmazonS3RequestTimeoutMilliseconds: 30000`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | -| Default is 30000 (30 seconds). | | -+---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ +| The amount of time, in milliseconds, before requests to | - System Config path: N/A | +| Amazon S3 storage time out. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3RequestTimeoutMilliseconds`` > ``30000`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | +| Default is 30000 (30 seconds). | | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ .. config:setting:: amazon-s3-upload-part-size :displayname: Amazon S3 upload part size (File Storage) @@ -2328,12 +2329,12 @@ Amazon S3 request timeout Amazon S3 upload part size ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------------------+ -| The size, in bytes, of each part in a multi-part | - System Config path: N/A | -| upload to Amazon S3. | - ``config.json`` setting: ``".FileSettings.AmazonS3UploadPartSizeBytes: 5242880`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES`` | -| Numeric value. Default is 5242880 (5MB). | | -+---------------------------------------------------------------+---------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+------------------------------------------------------------------------------------------------+ +| The size, in bytes, of each part in a multi-part | - System Config path: N/A | +| upload to Amazon S3. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3UploadPartSizeBytes`` > ``5242880`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3UPLOADPARTSIZEBYTES`` | +| Numeric value. Default is 5242880 (5MB). | | ++---------------------------------------------------------------+------------------------------------------------------------------------------------------------+ .. note:: @@ -2349,12 +2350,12 @@ Amazon S3 upload part size Amazon S3 exported upload part size ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ -| The size, in bytes, of each part in a multi-part | - System Config path: N/A | -| exported to Amazon S3. | - ``config.json`` setting: ``".FileSettings.ExportAmazonS3UploadPartSizeBytes: 104857600`` | -| | - Environment variable: ``MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES`` | -| Numeric value. Default is 104857600 (100MB). | | -+---------------------------------------------------------------+--------------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+ +| The size, in bytes, of each part in a multi-part | - System Config path: N/A | +| exported to Amazon S3. | - ``config.json`` setting: ``FileSettings`` > ``ExportAmazonS3UploadPartSizeBytes`` > ``104857600`` | +| | - Environment variable: ``MM_FILESETTINGS_EXPORTAMAZONS3UPLOADPARTSIZEBYTES`` | +| Numeric value. Default is 104857600 (100MB). | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------------------+ .. note:: @@ -2370,12 +2371,12 @@ Amazon S3 exported upload part size Amazon S3 request timeout ~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| The amount of time, in milliseconds, before requests to | - System Config path: N/A | -| Amazon S3 storage time out. | - ``config.json`` setting: ``".FileSettings.AmazonS3RequestTimeoutMilliseconds: 30000`` | -| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | -| Default is 30000 (30 seconds). | | -+---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ +| The amount of time, in milliseconds, before requests to | - System Config path: N/A | +| Amazon S3 storage time out. | - ``config.json`` setting: ``FileSettings`` > ``AmazonS3RequestTimeoutMilliseconds`` > ``30000`` | +| | - Environment variable: ``MM_FILESETTINGS_AMAZONS3REQUESTTIMEOUTMILLISECONDS`` | +| Default is 30000 (30 seconds). | | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ .. config:setting:: initial-font :displayname: Initial font (File Storage) @@ -2387,13 +2388,13 @@ Amazon S3 request timeout Initial font ~~~~~~~~~~~~ -+---------------------------------------------------------------+--------------------------------------------------------------------------------+ -| The font used in auto-generated profile pictures with colored | - System Config path: N/A | -| backgrounds and username initials. | - ``config.json`` setting: ``".FileSettings.InitialFont: nunito-bold.ttf",`` | -| | - Environment variable: ``MM_FILESETTINGS_INITIALFONT`` | -| A string with the font file name. Default is | | -| **nunito-bold.ttf**. | | -+---------------------------------------------------------------+--------------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| The font used in auto-generated profile pictures with colored | - System Config path: N/A | +| backgrounds and username initials. | - ``config.json`` setting: ``FileSettings`` > ``InitialFont`` > ``"nunito-bold.ttf"`` | +| | - Environment variable: ``MM_FILESETTINGS_INITIALFONT`` | +| A string with the font file name. Default is | | +| **nunito-bold.ttf**. | | ++---------------------------------------------------------------+-----------------------------------------------------------------------------------------+ ---- @@ -2417,14 +2418,14 @@ An image proxy is used by Mattermost apps to prevent them from connecting direct Enable image proxy ~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------+ -| An image proxy anonymizes Mattermost app connections and | - System Config path: **Environment > Image Proxy** | -| prevents them from accessing insecure content. | - ``config.json setting``: ``".ImageProxySettings.Enable": true",`` | -| | - Environment variable: ``MM_IMAGEPROXYSETTINGS_ENABLE`` | -| - **true**: Enables an image proxy for loading | | -| external images. | | -| - **false**: **(Default)** Disables the image proxy. | | -+---------------------------------------------------------------+---------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------+ +| An image proxy anonymizes Mattermost app connections and | - System Config path: **Environment > Image Proxy** | +| prevents them from accessing insecure content. | - ``config.json`` setting: ``ImageProxySettings`` > ``Enable`` > ``true`` | +| | - Environment variable: ``MM_IMAGEPROXYSETTINGS_ENABLE`` | +| - **true**: Enables an image proxy for loading | | +| external images. | | +| - **false**: **(Default)** Disables the image proxy. | | ++---------------------------------------------------------------+---------------------------------------------------------------------------+ See the :doc:`image proxy ` documentation to learn more. @@ -2441,13 +2442,13 @@ See the :doc:`image proxy ` documentation Image proxy type ~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ -| The type of image proxy used by Mattermost. | - System Config path: **Environment > Image Proxy** | -| | - ``config.json setting``: ``".ImageProxySettings.ImageProxyType": "local",`` | -| - **local**: **(Default)** The Mattermost server itself acts | - Environment variable: ``MM_IMAGEPROXYSETTINGS_IMAGEPROXYTYPE`` | -| as the image proxy. | | -| - **atmos/camo**: An external atmos/camo image proxy is used. | | -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ +| The type of image proxy used by Mattermost. | - System Config path: **Environment > Image Proxy** | +| | - ``config.json`` setting: ``ImageProxySettings`` > ``ImageProxyType`` > ``"local"`` | +| - **local**: **(Default)** The Mattermost server itself acts | - Environment variable: ``MM_IMAGEPROXYSETTINGS_IMAGEPROXYTYPE`` | +| as the image proxy. | | +| - **atmos/camo**: An external atmos/camo image proxy is used. | | ++---------------------------------------------------------------+--------------------------------------------------------------------------------------+ See the :doc:`image proxy ` documentation to learn more. @@ -2461,11 +2462,11 @@ See the :doc:`image proxy ` documentation Remote image proxy URL ~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+---------------------------------------------------------------------------+ -| The URL of the atmos/camo proxy. This setting isn't needed | - System Config path: **Environment > Image Proxy** | -| when using the **local** image proxy. | - ``config.json setting``: ``".ImageProxySettings.RemoteImageProxyURL",`` | -| | - Environment variable: ``MM_IMAGEPROXYSETTINGS_REMOTEIMAGEPROXYURL`` | -+---------------------------------------------------------------+---------------------------------------------------------------------------+ ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ +| The URL of the atmos/camo proxy. This setting isn't needed | - System Config path: **Environment > Image Proxy** | +| when using the **local** image proxy. | - ``config.json`` setting: ``ImageProxySettings`` > ``RemoteImageProxyURL`` | +| | - Environment variable: ``MM_IMAGEPROXYSETTINGS_REMOTEIMAGEPROXYURL`` | ++---------------------------------------------------------------+-----------------------------------------------------------------------------+ .. config:setting:: remote-image-proxy-options :displayname: Remote image proxy options (Image Proxy) @@ -2477,11 +2478,11 @@ Remote image proxy URL Remote image proxy options ~~~~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ -| The URL signing key passed to an atmos/camo image proxy. | - System Config path: **Environment > Image Proxy** | -| This setting isn't needed when using the **local** image | - ``config.json setting``: ``".ImageProxySettings.RemoteImageProxyOptions",`` | -| proxy type. | - Environment variable: ``MM_IMAGEPROXYSETTINGS_REMOTEIMAGEPROXYOPTIONS`` | -+---------------------------------------------------------------+-------------------------------------------------------------------------------+ ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ +| The URL signing key passed to an atmos/camo image proxy. | - System Config path: **Environment > Image Proxy** | +| This setting isn't needed when using the **local** image | - ``config.json`` setting: ``ImageProxySettings`` > ``RemoteImageProxyOptions`` | +| proxy type. | - Environment variable: ``MM_IMAGEPROXYSETTINGS_REMOTEIMAGEPROXYOPTIONS`` | ++---------------------------------------------------------------+---------------------------------------------------------------------------------+ See the :doc:`image proxy ` documentation to learn more. @@ -2505,11 +2506,11 @@ Configure SMTP email server settings by going to **System Console > Environment SMTP server ~~~~~~~~~~~ -+-----------------------------------------------------------------+---------------------------------------------------------------+ -| The location of the SMTP email server used for email | - System Config path: **Environment > SMTP** | -| notifications. | - ``config.json setting``: ``".EmailSettings.SMTPServer",`` | -| | - Environment variable: ``MM_EMAILSETTINGS_SMTPSERVER`` | -+-----------------------------------------------------------------+---------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------+ +| The location of the SMTP email server used for email | - System Config path: **Environment > SMTP** | +| notifications. | - ``config.json`` setting: ``EmailSettings`` > ``SMTPServer`` | +| | - Environment variable: ``MM_EMAILSETTINGS_SMTPSERVER`` | ++-----------------------------------------------------------------+-----------------------------------------------------------------+ .. config:setting:: smtp-server-port :displayname: SMTP server port (SMTP) @@ -2523,7 +2524,7 @@ SMTP server port +-----------------------------------------------------------------+---------------------------------------------------------------+ | The port of SMTP email server. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".EmailSettings.SMTPPort",`` | +| | - ``config.json`` setting: ``EmailSettings`` > ``SMTPPort`` | | Numerical input. | - Environment variable: ``MM_EMAILSETTINGS_SMTPPORT`` | +-----------------------------------------------------------------+---------------------------------------------------------------+ @@ -2539,14 +2540,14 @@ SMTP server port Enable SMTP authentication ~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+---------------------------------------------------------------------------+ -| Enable or disable SMTP authentication. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".EmailSettings.EnableSMTPAuth": false",`` | -| - **true**: SMTP username and password are used for | - Environment variable: ``MM_EMAILSETTINGS_ENABLESMTPAUTH`` | -| authenticating to the SMTP server. | | -| - **false**: **(Default)** Mattermost doesn’t attempt to | | -| authenticate to the SMTP server. | | -+-----------------------------------------------------------------+---------------------------------------------------------------------------+ ++-----------------------------------------------------------------+---------------------------------------------------------------------------------+ +| Enable or disable SMTP authentication. | - System Config path: **Environment > SMTP** | +| | - ``config.json`` setting: ``EmailSettings`` > ``EnableSMTPAuth`` > ``false`` | +| - **true**: SMTP username and password are used for | - Environment variable: ``MM_EMAILSETTINGS_ENABLESMTPAUTH`` | +| authenticating to the SMTP server. | | +| - **false**: **(Default)** Mattermost doesn’t attempt to | | +| authenticate to the SMTP server. | | ++-----------------------------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: smtp-server-username :displayname: SMTP server username (SMTP) @@ -2558,11 +2559,11 @@ Enable SMTP authentication SMTP server username ~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+---------------------------------------------------------------+ -| The username for authenticating to the SMTP server. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".EmailSettings.SMTPUsername",`` | -| String input. | - Environment variable: ``MM_EMAILSETTINGS_SMTPUSERNAME`` | -+-----------------------------------------------------------------+---------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------+ +| The username for authenticating to the SMTP server. | - System Config path: **Environment > SMTP** | +| | - ``config.json`` setting: ``EmailSettings`` > ``SMTPUsername`` | +| String input. | - Environment variable: ``MM_EMAILSETTINGS_SMTPUSERNAME`` | ++-----------------------------------------------------------------+-----------------------------------------------------------------+ .. config:setting:: smtp-server-password :displayname: SMTP server password (SMTP) @@ -2574,11 +2575,11 @@ SMTP server username SMTP server password ~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+---------------------------------------------------------------+ -| The password associated with the SMTP username. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".EmailSettings.SMTPPassword",`` | -| String input. | - Environment variable: ``MM_EMAILSETTINGS_SMTPPASSWORD`` | -+-----------------------------------------------------------------+---------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------+ +| The password associated with the SMTP username. | - System Config path: **Environment > SMTP** | +| | - ``config.json`` setting: ``EmailSettings`` > ``SMTPPassword`` | +| String input. | - Environment variable: ``MM_EMAILSETTINGS_SMTPPASSWORD`` | ++-----------------------------------------------------------------+-----------------------------------------------------------------+ .. config:setting:: smtp-connection-security :displayname: SMTP connection security (SMTP) @@ -2595,7 +2596,7 @@ SMTP connection security +-----------------------------------------------------------------+-----------------------------------------------------------------------+ | Specify connection security for emails sent using SMTP. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".EmailSettings.ConnectionSecurity",`` | +| | - ``config.json`` setting: ``EmailSettings`` > ``ConnectionSecurity`` | | - **Not specified**: **(Default)** Send email over an | - Environment variable: ``MM_EMAILSETTINGS_CONNECTIONSECURITY`` | | unsecure connection. | | | - **TLS**: Communication between Mattermost and your email | | @@ -2616,14 +2617,14 @@ SMTP connection security Skip server certificate verification ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------+ -| Configure Mattermost to skip the verification of the email server | - System Config path: **Environment > SMTP** | -| certificate. | - ``config.json setting``: ``".EmailSettings.SkipServerCertificateVerification": false",`` | -| | - Environment variable: ``MM_EMAILSETTINGS_SKIPSERVERCERTIFICATEVERIFICATION`` | -| - **true**: Mattermost won't verify the email server certificate. | | -| - **false**: **(Default)** Mattermost verifies the email | | -| server certificate. | | -+-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------+ ++-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ +| Configure Mattermost to skip the verification of the email server | - System Config path: **Environment > SMTP** | +| certificate. | - ``config.json`` setting: ``EmailSettings`` > ``SkipServerCertificateVerification`` > ``false`` | +| | - Environment variable: ``MM_EMAILSETTINGS_SKIPSERVERCERTIFICATEVERIFICATION`` | +| - **true**: Mattermost won't verify the email server certificate. | | +| - **false**: **(Default)** Mattermost verifies the email | | +| server certificate. | | ++-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+ .. config:setting:: enable-security-alerts :displayname: Enable security alerts (SMTP) @@ -2637,14 +2638,14 @@ Skip server certificate verification Enable security alerts ~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------------------------------+ -| Enable or disable security alerts. | - System Config path: **Environment > SMTP** | -| | - ``config.json setting``: ``".ServiceSettings.EnableSecurityFixAlert": true",`` | -| - **true**: **(Default)** System admins are notified by email | - Environment variable: ``MM_SERVICESETTINGS_ENABLESECURITYFIXALERT`` | -| if a relevant security fix alert is announced. Requires email | | -| to be enabled. | | -| - **false**: Security alerts are disabled. | | -+-----------------------------------------------------------------+------------------------------------------------------------------------------------+ ++-----------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| Enable or disable security alerts. | - System Config path: **Environment > SMTP** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableSecurityFixAlert`` > ``true`` | +| - **true**: **(Default)** System admins are notified by email | - Environment variable: ``MM_SERVICESETTINGS_ENABLESECURITYFIXALERT`` | +| if a relevant security fix alert is announced. Requires email | | +| to be enabled. | | +| - **false**: Security alerts are disabled. | | ++-----------------------------------------------------------------+------------------------------------------------------------------------------------------+ See the :ref:`Telemetry ` documentation to learn more. @@ -2660,7 +2661,7 @@ SMTP server timeout +-----------------------------------------------------------------+----------------------------------------------------------------------+ | The maximum amount of time, in seconds, allowed for | - System Config path: **Environment > SMTP** | -| establishing a TCP connection between Mattermost and the SMTP | - ``config.json setting``: ``".EmailSettings.SMTPServerTimeout",`` | +| establishing a TCP connection between Mattermost and the SMTP | - ``config.json`` setting: ``EmailSettings`` > ``SMTPServerTimeout`` | | server. | - Environment variable: ``MM_EMAILSETTINGS_SMTPSERVERTIMEOUT`` | | | | | Numerical value in seconds. | | @@ -2701,17 +2702,17 @@ In a Mattermost high availability cluster-based deployment, the System Console i Enable high availability mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------+ -| You can enable high availability mode. | - System Config path: **Environment > High Availability** | -| | - ``config.json`` setting: ``".ClusterSettings.Enable",`` | -| - **true**: The Mattermost server will attempt inter-node | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLE`` | -| communication with the other servers in the cluster that | | -| have the same cluster name. This sets the System Console to | | -| read-only mode to keep the servers' ``config.json`` files | | -| in sync. | | -| - **false**: **(Default)** Mattermost high availability mode | | -| is disabled. | | -+-----------------------------------------------------------------+------------------------------------------------------------+ ++-----------------------------------------------------------------+---------------------------------------------------------------------------+ +| You can enable high availability mode. | - System Config path: **Environment > High Availability** | +| | - ``config.json`` setting: ``ClusterSettings`` > ``Enable`` > ``false`` | +| - **true**: The Mattermost server will attempt inter-node | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLE`` | +| communication with the other servers in the cluster that | | +| have the same cluster name. This sets the System Console to | | +| read-only mode to keep the servers' ``config.json`` files | | +| in sync. | | +| - **false**: **(Default)** Mattermost high availability mode | | +| is disabled. | | ++-----------------------------------------------------------------+---------------------------------------------------------------------------+ .. config:setting:: cluster-name :displayname: Cluster name (High Availability) @@ -2723,13 +2724,13 @@ Enable high availability mode Cluster name ~~~~~~~~~~~~ -+------------------------------------------------------------------------------+-----------------------------------------------------------------+ -| The cluster to join by name in a high availability cluster-based deployment. | - System Config path: **Environment > High Availability** | -| | - ``config.json`` setting: ``".ClusterSettings.ClusterName",`` | -| Only nodes with the same cluster name will join together. | - Environment variable: ``MM_CLUSTERSETTINGS_CLUSTERNAME`` | -| This is to support blue-green deployments or staging pointing | | -| to the same database. | | -+------------------------------------------------------------------------------+-----------------------------------------------------------------+ ++------------------------------------------------------------------------------+--------------------------------------------------------------------------+ +| The cluster to join by name in a high availability cluster-based deployment. | - System Config path: **Environment > High Availability** | +| | - ``config.json`` setting: ``ClusterSettings`` > ``ClusterName`` | +| Only nodes with the same cluster name will join together. | - Environment variable: ``MM_CLUSTERSETTINGS_CLUSTERNAME`` | +| This is to support blue-green deployments or staging pointing | | +| to the same database. | | ++------------------------------------------------------------------------------+--------------------------------------------------------------------------+ .. config:setting:: override-hostname :displayname: Override hostname (High Availability) @@ -2741,15 +2742,15 @@ Cluster name Override hostname ~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------------------+ -| You can override the hostname of this server. | - System Config path: **Environment > High Availability** | -| | - ``config.json`` setting: ``".ClusterSettings.OverrideHostname",`` | -| - This property can be set to a specific IP address if needed; | - Environment variable: ``MM_CLUSTERSETTINGS_OVERRIDEHOSTNAME`` | -| however, we don’t recommend overriding the hostname unless | | -| it's necessary. | | -| - If left blank, Mattermost attempts to get the hostname from | | -| the operating system or uses the IP address. | | -+-----------------------------------------------------------------+------------------------------------------------------------------------+ ++-----------------------------------------------------------------+---------------------------------------------------------------------------------+ +| You can override the hostname of this server. | - System Config path: **Environment > High Availability** | +| | - ``config.json`` setting: ``ClusterSettings`` > ``OverrideHostname`` | +| - This property can be set to a specific IP address if needed; | - Environment variable: ``MM_CLUSTERSETTINGS_OVERRIDEHOSTNAME`` | +| however, we don’t recommend overriding the hostname unless | | +| it's necessary. | | +| - If left blank, Mattermost attempts to get the hostname from | | +| the operating system or uses the IP address. | | ++-----------------------------------------------------------------+---------------------------------------------------------------------------------+ See the :doc:`high availability cluster-based deployment ` documentation for details. @@ -2765,15 +2766,15 @@ See the :doc:`high availability cluster-based deployment High Availability** | -| communicate using the hostname instead of the IP address. | - ``config.json`` setting: ``".ClusterSettings.UseIPAddress: true",`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_USEIPADDRESS`` | -| - **true**: **(Default)** The cluster attempts to communicate | | -| using the IP address specified. | | -| - **false**: The cluster attempts to communicate using the | | -| hostname. | | -+------------------------------------------------------------------------------+------------------------------------------------------------------------+ ++------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ +| You can configure your high availability cluster-based deployment to | - System Config path: **Environment > High Availability** | +| communicate using the hostname instead of the IP address. | - ``config.json`` setting: ``ClusterSettings`` > ``UseIPAddress`` > ``true`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_USEIPADDRESS`` | +| - **true**: **(Default)** The cluster attempts to communicate | | +| using the IP address specified. | | +| - **false**: The cluster attempts to communicate using the | | +| hostname. | | ++------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ .. config:setting:: enable-gossip-encryption :displayname: Enable gossip encryption (High Availability) @@ -2787,15 +2788,15 @@ Use IP address Enable gossip encryption ~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------------+ -| Gossip encryption uses AES-256 by default, and this value isn't | - System Config path: **Environment > High Availability** | -| configurable by design. | - ``config.json`` setting: ``".ClusterSettings.EnableGossipEncryption: true",`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLEGOSSIPENCRYPTION`` | -| - **true**: **(Default)** The server attempts to communicate | | -| via the gossip protocol over the gossip port specified. | | -| - **false**: The server attempts to communicate over the | | -| streaming port. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| Gossip encryption uses AES-256 by default, and this value isn't | - System Config path: **Environment > High Availability** | +| configurable by design. | - ``config.json`` setting: ``ClusterSettings`` > ``EnableGossipEncryption`` > ``true`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLEGOSSIPENCRYPTION`` | +| - **true**: **(Default)** The server attempts to communicate | | +| via the gossip protocol over the gossip port specified. | | +| - **false**: The server attempts to communicate over the | | +| streaming port. | | ++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ .. note:: @@ -2815,18 +2816,18 @@ Enable gossip encryption Enable gossip compression ~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------------+ -| We recommend that you disable this configuration | - System Config path: **Environment > High Availability** | -| setting for better performance. | - ``config.json`` setting: ``".ClusterSettings.EnableGossipCompression: true”,`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION`` | -| - **true**: **(Default for self-hosted deployments)** | | -| All communication through the cluster uses gossip | | -| compression. This setting is enabled by default to maintain | | -| compatibility with older servers. | | -| - **false**: **(Default for Cloud deployments)** | | -| All communication using the gossip protocol remains | | -| uncompressed. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ +| We recommend that you disable this configuration | - System Config path: **Environment > High Availability** | +| setting for better performance. | - ``config.json`` setting: ``ClusterSettings`` > ``EnableGossipCompression`` > ``true`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION`` | +| - **true**: **(Default for self-hosted deployments)** | | +| All communication through the cluster uses gossip | | +| compression. This setting is enabled by default to maintain | | +| compatibility with older servers. | | +| - **false**: **(Default for Cloud deployments)** | | +| All communication using the gossip protocol remains | | +| uncompressed. | | ++-----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ .. config:setting:: gossip-port :displayname: Gossip port (High Availability) @@ -2838,12 +2839,12 @@ Enable gossip compression Gossip port ~~~~~~~~~~~ -+-----------------------------------------------------------------+---------------------------------------------------------------------+ -| The port used for the gossip protocol. Both UDP and TCP | - System Config path: **Environment > High Availability** | -| should be allowed on this port. | - ``config.json`` setting: ``".ClusterSettings.GossipPort: 8074”,`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_GOSSIPPORT`` | -| Numerical input. Default is **8074**. | | -+-----------------------------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------------------------+----------------------------------------------------------------------------+ +| The port used for the gossip protocol. Both UDP and TCP | - System Config path: **Environment > High Availability** | +| should be allowed on this port. | - ``config.json`` setting: ``ClusterSettings`` > ``GossipPort`` > ``8074`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_GOSSIPPORT`` | +| Numerical input. Default is **8074**. | | ++-----------------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: read-only-config :displayname: Read only config (High Availability) @@ -2855,12 +2856,12 @@ Gossip port Read only config ~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------------------+ -| - **true**: **(Default)** Changes made to settings in the | - System Config path: N/A | -| System Console are ignored. | - ``config.json`` setting: ``".ClusterSettings.ReadOnlyConfig: true,`` | -| - **false**: Changes made to settings in the System Console | - Environment variable: ``MM_CLUSTERSETTINGS_READONLYCONFIG`` | -| are written to ``config.json``. | | -+-----------------------------------------------------------------+------------------------------------------------------------------------+ ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ +| - **true**: **(Default)** Changes made to settings in the | - System Config path: N/A | +| System Console are ignored. | - ``config.json`` setting: ``ClusterSettings`` > ``ReadOnlyConfig`` > ``true`` | +| - **false**: Changes made to settings in the System Console | - Environment variable: ``MM_CLUSTERSETTINGS_READONLYCONFIG`` | +| are written to ``config.json``. | | ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ .. config:setting:: network-interface :displayname: Network interface (High Availability) @@ -2872,12 +2873,12 @@ Read only config Network interface ~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------------------+ -| An IP address used to identify the device that does automatic | - System Config path: N/A | -| IP detection in high availability cluster-based deployments. | - ``config.json`` setting: ``".ClusterSettings.NetworkInterface: "",`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_NETWORKINTERFACE`` | -| String input. | | -+-----------------------------------------------------------------+------------------------------------------------------------------------+ ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ +| An IP address used to identify the device that does automatic | - System Config path: N/A | +| IP detection in high availability cluster-based deployments. | - ``config.json`` setting: ``ClusterSettings`` > ``NetworkInterface`` > ``""`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_NETWORKINTERFACE`` | +| String input. | | ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ .. config:setting:: bind-address :displayname: Bind address (High Availability) @@ -2889,17 +2890,17 @@ Network interface Bind address ~~~~~~~~~~~~ -+-----------------------------------------------------------------+--------------------------------------------------------------------+ -| An IP address used to bind cluster traffic to a specific | - System Config path: N/A | -| network device. | - ``config.json`` setting: ``".ClusterSettings.BindAddress: "",`` | -| | - Environment variable: ``MM_CLUSTERSETTINGS_BINDADDRESS`` | -| This setting is used primarily for servers with multiple | | -| network devices or different Bind Address and Advertise Address | | -| like in deployments that involve NAT (Network Address | | -| Translation). | | -| | | -| String input. | | -+-----------------------------------------------------------------+--------------------------------------------------------------------+ ++-----------------------------------------------------------------+----------------------------------------------------------------------------+ +| An IP address used to bind cluster traffic to a specific | - System Config path: N/A | +| network device. | - ``config.json`` setting: ``ClusterSettings`` > ``BindAddress`` > ``""`` | +| | - Environment variable: ``MM_CLUSTERSETTINGS_BINDADDRESS`` | +| This setting is used primarily for servers with multiple | | +| network devices or different Bind Address and Advertise Address | | +| like in deployments that involve NAT (Network Address | | +| Translation). | | +| | | +| String input. | | ++-----------------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: advertise-address :displayname: Advertise address (High Availability) @@ -2911,13 +2912,13 @@ Bind address Advertise address ~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+------------------------------------------------------------------------+ -| The IP address used to access the server from other nodes. | - System Config path: N/A | -| This settings is used primary when cluster nodes are not in | - ``config.json`` setting: ``".ClusterSettings.AdvertiseAddress: "",`` | -| the same network and involve NAT (Network Address Translation). | - Environment variable: ``MM_CLUSTERSETTINGS_ADVERTISEADDRESS`` | -| | | -| String input. | | -+-----------------------------------------------------------------+------------------------------------------------------------------------+ ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ +| The IP address used to access the server from other nodes. | - System Config path: N/A | +| This settings is used primary when cluster nodes are not in | - ``config.json`` setting: ``ClusterSettings`` > ``AdvertiseAddress`` > ``""`` | +| the same network and involve NAT (Network Address Translation). | - Environment variable: ``MM_CLUSTERSETTINGS_ADVERTISEADDRESS`` | +| | | +| String input. | | ++-----------------------------------------------------------------+--------------------------------------------------------------------------------+ ---- @@ -2963,18 +2964,18 @@ Configure general logging by going to **System Console > Environment > Logging** Output logs to console ^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| Configure Mattermost to output general logs | - System Config path: **Environment > Logging** | -| to the console. | - ``config.json setting``: ``".LogSettings.EnableConsole": true",`` | -| | - Environment variable: ``MM_LOGSETTINGS_ENABLECONSOLE`` | -| - **true**: **(Default)** Output log messages | | -| are written to the console based on the | | -| `console log level <#console-log-level>`__ | | -| configuration. The server writes messages | | -| to the standard output stream (stdout). | | -| - **false**: Output log messages aren’t | | -| written to the console. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------+ +| Configure Mattermost to output general logs | - System Config path: **Environment > Logging** | +| to the console. | - ``config.json`` setting: ``LogSettings`` > ``EnableConsole`` > ``true`` | +| | - Environment variable: ``MM_LOGSETTINGS_ENABLECONSOLE`` | +| - **true**: **(Default)** Output log messages | | +| are written to the console based on the | | +| `console log level <#console-log-level>`__ | | +| configuration. The server writes messages | | +| to the standard output stream (stdout). | | +| - **false**: Output log messages aren’t | | +| written to the console. | | ++-----------------------------------------------+---------------------------------------------------------------------------+ .. config:setting:: console-log-level :displayname: Console general log level (General Logging) @@ -2990,18 +2991,18 @@ Output logs to console Console log level ^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| The level of detail in general log events | - System Config path: **Environment > Logging** | -| written when Mattermost outputs log messages | - ``config.json setting``: ``".LogSettings.ConsoleLevel": DEBUG",`` | -| to the console. | - Environment variable: ``MM_LOGSETTINGS_CONSOLELEVEL`` | -| | | -| - **DEBUG**: **(Default)** Outputs verbose | | -| detail for developers debugging issues. | | -| - **ERROR**: Outputs only error messages. | | -| - **INFO**: Outputs error messages and | | -| information around startup and | | -| initialization. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+-----------------------------------------------------------------------------+ +| The level of detail in general log events | - System Config path: **Environment > Logging** | +| written when Mattermost outputs log messages | - ``config.json`` setting: ``LogSettings`` > ``ConsoleLevel`` > ``"DEBUG"`` | +| to the console. | - Environment variable: ``MM_LOGSETTINGS_CONSOLELEVEL`` | +| | | +| - **DEBUG**: **(Default)** Outputs verbose | | +| detail for developers debugging issues. | | +| - **ERROR**: Outputs only error messages. | | +| - **INFO**: Outputs error messages and | | +| information around startup and | | +| initialization. | | ++-----------------------------------------------+-----------------------------------------------------------------------------+ .. config:setting:: output-console-logs-as-json :displayname: Output general console logs as JSON (General Logging) @@ -3016,15 +3017,15 @@ Console log level Output console logs as JSON ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| Configure Mattermost to output general | - System Config path: **Environment > Logging** | -| console logs as JSON. | - ``config.json setting``: ``".LogSettings.ConsoleJson": true",`` | -| | - Environment variable: ``MM_LOGSETTINGS_CONSOLEJSON`` | -| - **true**: **(Default)** Logged events are | | -| written in a machine-readable JSON format. | | -| - **false**: Logged events are written in | | -| plain text. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------+ +| Configure Mattermost to output general | - System Config path: **Environment > Logging** | +| console logs as JSON. | - ``config.json`` setting: ``LogSettings`` > ``ConsoleJson`` > ``true`` | +| | - Environment variable: ``MM_LOGSETTINGS_CONSOLEJSON`` | +| - **true**: **(Default)** Logged events are | | +| written in a machine-readable JSON format. | | +| - **false**: Logged events are written in | | +| plain text. | | ++-----------------------------------------------+---------------------------------------------------------------------------+ Typically set to **true** in a production environment. @@ -3041,16 +3042,16 @@ Typically set to **true** in a production environment. Colorize plain text console logs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+----------------------------------------------------------------------+ -| Enables system admins to display plain text | - System Config path: N/A | -| general log level details in color. | - ``config.json setting``: ``".LogSettings.EnableColor": false",`` | -| | - Environment variable: ``MM_LOGSETTINGS_ENABLECOLOR`` | -| - **true**: When logged events are output to | | -| the console as plain text, colorize log | | -| levels details. | | -| - **false**: **(Default)** Plain text log | | -| details aren't colorized in the console. | | -+-----------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------+ +| Enables system admins to display plain text | - System Config path: N/A | +| general log level details in color. | - ``config.json`` setting: ``LogSettings`` > ``EnableColor`` > ``false`` | +| | - Environment variable: ``MM_LOGSETTINGS_ENABLECOLOR`` | +| - **true**: When logged events are output to | | +| the console as plain text, colorize log | | +| levels details. | | +| - **false**: **(Default)** Plain text log | | +| details aren't colorized in the console. | | ++-----------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: output-logs-to-file :displayname: Output general logs to file (General Logging) @@ -3065,19 +3066,19 @@ Colorize plain text console logs Output logs to file ^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| Configure Mattermost to output general | - System Config path: **Environment > Logging** | -| console logs to a file. | - ``config.json setting``: ``".LogSettings.EnableFile": true",`` | -| | - Environment variable: ``MM_LOGSETTINGS_ENABLEFILE`` | -| - **true**: **(Default)** Logged events are | | -| written based on the | | -| `file log level <#file-log-level>`__ | | -| configuration to a ``mattermost.log`` file | | -| located in the directory configured via | | -| ``file location``. | | -| - **false**: Logged events aren’t written to | | -| a file. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------+ +| Configure Mattermost to output general | - System Config path: **Environment > Logging** | +| console logs to a file. | - ``config.json`` setting: ``LogSettings`` > ``EnableFile`` > ``true`` | +| | - Environment variable: ``MM_LOGSETTINGS_ENABLEFILE`` | +| - **true**: **(Default)** Logged events are | | +| written based on the | | +| `file log level <#file-log-level>`__ | | +| configuration to a ``mattermost.log`` file | | +| located in the directory configured via | | +| ``file location``. | | +| - **false**: Logged events aren’t written to | | +| a file. | | ++-----------------------------------------------+---------------------------------------------------------------------------+ .. note:: @@ -3093,12 +3094,12 @@ Output logs to file File log directory ^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| The location of the general log files. | - System Config path: **Environment > Logging** | -| | - ``config.json setting``: ``".LogSettings.FileLocation": "",`` | -| String input. If left blank, log files are | - Environment variable: ``MM_LOGSETTINGS_FILELOCATION`` | -| stored in the ``./logs`` directory. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------+ +| The location of the general log files. | - System Config path: **Environment > Logging** | +| | - ``config.json`` setting: ``LogSettings`` > ``FileLocation`` > ``""`` | +| String input. If left blank, log files are | - Environment variable: ``MM_LOGSETTINGS_FILELOCATION`` | +| stored in the ``./logs`` directory. | | ++-----------------------------------------------+----------------------------------------------------------------------------+ .. note:: @@ -3118,17 +3119,17 @@ File log directory File log level ^^^^^^^^^^^^^^ -+-------------------------------------------------+---------------------------------------------------------------------+ -| The level of detail in general log events when | - System Config path: **Environment > Logging** | -| when Mattermost outputs log messages to a file. | - ``config.json setting``: ``".LogSettings.FileLevel": INFO",`` | -| | - Environment variable: ``MM_LOGSETTINGS_FILELEVEL`` | -| - **DEBUG**: Outputs verbose detail for | | -| developers debugging issues. | | -| - **ERROR**: Outputs only error messages. | | -| - **INFO**: **(Default)** Outputs error | | -| messages and information around startup | | -| and initialization. | | -+-------------------------------------------------+---------------------------------------------------------------------+ ++-------------------------------------------------+-------------------------------------------------------------------------+ +| The level of detail in general log events when | - System Config path: **Environment > Logging** | +| when Mattermost outputs log messages to a file. | - ``config.json`` setting: ``LogSettings`` > ``FileLevel`` > ``"INFO"`` | +| | - Environment variable: ``MM_LOGSETTINGS_FILELEVEL`` | +| - **DEBUG**: Outputs verbose detail for | | +| developers debugging issues. | | +| - **ERROR**: Outputs only error messages. | | +| - **INFO**: **(Default)** Outputs error | | +| messages and information around startup | | +| and initialization. | | ++-------------------------------------------------+-------------------------------------------------------------------------+ .. config:setting:: output-file-logs-as-json :displayname: Output general file logs as JSON (General Logging) @@ -3143,15 +3144,15 @@ File log level Output file logs as JSON ^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------+ -| Configure Mattermost to output general file | - System Config path: **Environment > Logging** | -| logs as JSON. | - ``config.json setting``: ``".LogSettings.FileJson": true",`` | -| | - Environment variable: ``MM_LOGSETTINGS_FILEJSON`` | -| - **true**: **(Default)** Logged events are | | -| written in a machine-readable JSON format. | | -| - **false**: Logged events are written in | | -| plain text. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+------------------------------------------------------------------------+ +| Configure Mattermost to output general file | - System Config path: **Environment > Logging** | +| logs as JSON. | - ``config.json`` setting: ``LogSettings`` > ``FileJson`` > ``true`` | +| | - Environment variable: ``MM_LOGSETTINGS_FILEJSON`` | +| - **true**: **(Default)** Logged events are | | +| written in a machine-readable JSON format. | | +| - **false**: Logged events are written in | | +| plain text. | | ++-----------------------------------------------+------------------------------------------------------------------------+ Typically set to **true** in a production environment. @@ -3168,17 +3169,17 @@ Typically set to **true** in a production environment. Enable webhook debugging ^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+------------------------------------------------------------------------------+ -| Configure Mattermost to capture the contents | - System Config path: **Environment > Logging** | -| of general incoming webhooks to console | - ``config.json setting``: ``".LogSettings.EnableWebhookDebugging": true",`` | -| and/or file logs for debugging. | - Environment variable: ``MM_LOGSETTINGS_ENABLEWEBHOOKDEBUGGING`` | -| | | -| - **true**: **(Default)** The contents of | | -| incoming webhooks are printed to log files | | -| for debugging. | | -| - **false**: The contents of incoming | | -| webhooks aren’t printed to log files. | | -+-----------------------------------------------+------------------------------------------------------------------------------+ ++-----------------------------------------------+------------------------------------------------------------------------------------+ +| Configure Mattermost to capture the contents | - System Config path: **Environment > Logging** | +| of general incoming webhooks to console | - ``config.json`` setting: ``LogSettings`` > ``EnableWebhookDebugging`` > ``true`` | +| and/or file logs for debugging. | - Environment variable: ``MM_LOGSETTINGS_ENABLEWEBHOOKDEBUGGING`` | +| | | +| - **true**: **(Default)** The contents of | | +| incoming webhooks are printed to log files | | +| for debugging. | | +| - **false**: The contents of incoming | | +| webhooks aren’t printed to log files. | | ++-----------------------------------------------+------------------------------------------------------------------------------------+ .. note:: @@ -3194,16 +3195,16 @@ Enable webhook debugging Output logs to multiple targets ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------+ -| Configure Mattermost to allow any combination | - System Config path: **Environment > Logging** | -| of console, local file, syslog, and TCP | - ``config.json setting``: ``".LogSettings.AdvancedLoggingJSON":: "",`` | -| socket targets, and send general log records | - Environment variable: ``MM_LOGSETTINGS_ADVANCEDLOGGINGJSON`` | -| to multiple targets. | | -| | | -| String input can contain a filespec to | | -| another configuration file, a database DSN, | | -| or JSON. | | -+-----------------------------------------------+---------------------------------------------------------------------------+ ++-----------------------------------------------+------------------------------------------------------------------------------------+ +| Configure Mattermost to allow any combination | - System Config path: **Environment > Logging** | +| of console, local file, syslog, and TCP | - ``config.json`` setting: ``LogSettings`` > ``AdvancedLoggingJSON`` > ``": ""`` | +| socket targets, and send general log records | - Environment variable: ``MM_LOGSETTINGS_ADVANCEDLOGGINGJSON`` | +| to multiple targets. | | +| | | +| String input can contain a filespec to | | +| another configuration file, a database DSN, | | +| or JSON. | | ++-----------------------------------------------+------------------------------------------------------------------------------------+ .. note:: @@ -3221,12 +3222,12 @@ Output logs to multiple targets Maximum field size ^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+----------------------------------------------------------------------+ -| Enables system admins to limit the size of | - System Config path: N/A | -| general log fields during logging. | - ``config.json setting``: ``".LogSettings.MaxFieldSize": 2048",`` | -| | - Environment variable: ``MM_LOGSETTINGS_MAXFIELDSIZE`` | -| Numerical value. Default is **2048**. | | -+-----------------------------------------------+----------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------+ +| Enables system admins to limit the size of | - System Config path: N/A | +| general log fields during logging. | - ``config.json`` setting: ``LogSettings`` > ``MaxFieldSize`` > ``2048`` | +| | - Environment variable: ``MM_LOGSETTINGS_MAXFIELDSIZE`` | +| Numerical value. Default is **2048**. | | ++-----------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: enable-diagnostics-and-error-reporting :displayname: Enable general diagnostics and error reporting (General Logging) @@ -3238,15 +3239,15 @@ Maximum field size Enable diagnostics and error reporting ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+----------------------------------------------+-------------------------------------------------------------------------+ -| Whether or not general diagnostics and error | - System Config path: **Environment > Logging** | -| reports are sent to Mattermost, Inc. | - ``config.json setting``: ``".LogSettings.EnableDiagnostics": "",`` | -| | - Environment variable: ``MM_LOGSETTINGS_ENABLEDIAGNOSTICS`` | -| - **true**: **(Default)** Send diagnostics | | -| and error reports. | | -| - **false**: Diagnostics and error reports | | -| aren't sent. | | -+----------------------------------------------+-------------------------------------------------------------------------+ ++----------------------------------------------+--------------------------------------------------------------------------------+ +| Whether or not general diagnostics and error | - System Config path: **Environment > Logging** | +| reports are sent to Mattermost, Inc. | - ``config.json`` setting: ``LogSettings`` > ``EnableDiagnostics`` > ``""`` | +| | - Environment variable: ``MM_LOGSETTINGS_ENABLEDIAGNOSTICS`` | +| - **true**: **(Default)** Send diagnostics | | +| and error reports. | | +| - **false**: Diagnostics and error reports | | +| aren't sent. | | ++----------------------------------------------+--------------------------------------------------------------------------------+ .. note:: @@ -3259,18 +3260,21 @@ Enable diagnostics and error reporting :environment: MM_LOGSETTINGS_VERBOSEDIAGNOSTICS :description: Configure whether to send verbose general diagnostics information. + - **true**: Send verbose diagnostics information. + - **false**: **(Default)** Verbose diagnostics information isn't sent. + Enable verbose diagnostics ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+----------------------------------------------+-------------------------------------------------------------------------+ -| Whether or not verbose general diagnostics | - System Config path: N/A | -| information is sent. | - ``config.json setting``: ``".LogSettings.VerboseDiagnostics": false,``| -| | - Environment variable: ``MM_LOGSETTINGS_VERBOSEDIAGNOSTICS`` | -| - **true**: Send verbose diagnostics | | -| information. | | -| - **false**: **(Default)** Verbose | | -| diagnostics information is not sent. | | -+----------------------------------------------+-------------------------------------------------------------------------+ ++----------------------------------------------+---------------------------------------------------------------------------------+ +| Whether or not verbose general diagnostics | - System Config path: N/A | +| information is sent. | - ``config.json`` setting: ``LogSettings`` > ``VerboseDiagnostics`` > ``false`` | +| | - Environment variable: ``MM_LOGSETTINGS_VERBOSEDIAGNOSTICS`` | +| - **true**: Send verbose diagnostics | | +| information. | | +| - **false**: **(Default)** Verbose | | +| diagnostics information isn't sent. | | ++----------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: enable-sentry :displayname: Enable general Sentry reporting (General Logging) @@ -3279,19 +3283,22 @@ Enable verbose diagnostics :environment: MM_LOGSETTINGS_ENABLESENTRY :description: Configure whether to send general error reports to Sentry. + - **true**: **(Default)** Send error reports to Sentry. Default matches the EnableDiagnostics setting. + - **false**: Error reports are not sent to Sentry. + Enable Sentry reporting ^^^^^^^^^^^^^^^^^^^^^^^^ -+----------------------------------------------+-------------------------------------------------------------------------+ -| Whether or not general error reports are | - System Config path: N/A | -| sent to Sentry. | - ``config.json setting``: ``".LogSettings.EnableSentry": true,`` | -| | - Environment variable: ``MM_LOGSETTINGS_ENABLESENTRY`` | -| - **true**: **(Default)** Send error reports | | -| to Sentry. Default matches the | | -| EnableDiagnostics setting. | | -| - **false**: Error reports are not sent | | -| to Sentry. | | -+----------------------------------------------+-------------------------------------------------------------------------+ ++----------------------------------------------+--------------------------------------------------------------------------------+ +| Whether or not general error reports are | - System Config path: N/A | +| sent to Sentry. | - ``config.json`` setting: ``LogSettings`` > ``EnableSentry`` > ``true`` | +| | - Environment variable: ``MM_LOGSETTINGS_ENABLESENTRY`` | +| - **true**: **(Default)** Send error reports | | +| to Sentry. Default matches the | | +| EnableDiagnostics setting. | | +| - **false**: Error reports are not sent | | +| to Sentry. | | ++----------------------------------------------+--------------------------------------------------------------------------------+ ---- @@ -3312,18 +3319,18 @@ Configure logging specifically for Mattermost notifications by editing the ``con Output logs to console ^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------+ -| Configure Mattermost to output notification | - System Config path: N/A | -| logs to the console. | - ``config.json setting``: ``".NotificationLogSettings.EnableConsole": true",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLECONSOLE`` | -| - **true**: **(Default)** Output log messages | | -| are written to the console based on the | | -| `console log level <#console-log-level>`__ | | -| configuration. The server writes messages | | -| to the standard output stream (stdout). | | -| - **false**: Output log messages aren't | | -| written to the console. | | -+-----------------------------------------------+---------------------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------------------+ +| Configure Mattermost to output notification | - System Config path: N/A | +| logs to the console. | - ``config.json`` setting: ``NotificationLogSettings`` > ``EnableConsole`` > ``true`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLECONSOLE`` | +| - **true**: **(Default)** Output log messages | | +| are written to the console based on the | | +| `console log level <#console-log-level>`__ | | +| configuration. The server writes messages | | +| to the standard output stream (stdout). | | +| - **false**: Output log messages aren't | | +| written to the console. | | ++-----------------------------------------------+---------------------------------------------------------------------------------------+ .. config:setting:: console-log-level :displayname: Console notification log level (Notification Logging) @@ -3339,18 +3346,18 @@ Output logs to console Console log level ^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------+ -| The level of detail in notification log | - System Config path: N/A | -| events written when Mattermost outputs log | - ``config.json setting``: ``".NotificationLogSettings.ConsoleLevel": DEBUG",`` | -| messages to the console. | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_CONSOLELEVEL`` | -| | | -| - **DEBUG**: **(Default)** Outputs verbose | | -| detail for developers debugging issues. | | -| - **ERROR**: Outputs only error messages. | | -| - **INFO**: Outputs error messages and | | -| information around startup and | | -| initialization. | | -+-----------------------------------------------+---------------------------------------------------------------------------------+ ++-----------------------------------------------+-----------------------------------------------------------------------------------------+ +| The level of detail in notification log | - System Config path: N/A | +| events written when Mattermost outputs log | - ``config.json`` setting: ``NotificationLogSettings`` > ``ConsoleLevel`` > ``"DEBUG"`` | +| messages to the console. | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_CONSOLELEVEL`` | +| | | +| - **DEBUG**: **(Default)** Outputs verbose | | +| detail for developers debugging issues. | | +| - **ERROR**: Outputs only error messages. | | +| - **INFO**: Outputs error messages and | | +| information around startup and | | +| initialization. | | ++-----------------------------------------------+-----------------------------------------------------------------------------------------+ .. config:setting:: output-console-logs-as-json :displayname: Output notification console logs as JSON (Notification Logging) @@ -3365,15 +3372,15 @@ Console log level Output console logs as JSON ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------+ -| Configure Mattermost to output notification | - System Config path: N/A | -| console logs as JSON. | - ``config.json setting``: ``".NotificationLogSettings.ConsoleJson": true",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_CONSOLEJSON`` | -| - **true**: **(Default)** Logged events are | | -| written in a machine-readable JSON format. | | -| - **false**: Logged events are written in | | -| plain text. | | -+-----------------------------------------------+---------------------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------------------+ +| Configure Mattermost to output notification | - System Config path: N/A | +| console logs as JSON. | - ``config.json`` setting: ``NotificationLogSettings`` > ``ConsoleJson`` > ``true`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_CONSOLEJSON`` | +| - **true**: **(Default)** Logged events are | | +| written in a machine-readable JSON format. | | +| - **false**: Logged events are written in | | +| plain text. | | ++-----------------------------------------------+---------------------------------------------------------------------------------------+ Typically set to **true** in a production environment. @@ -3390,16 +3397,16 @@ Typically set to **true** in a production environment. Colorize plain text console logs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+----------------------------------------------------------------------------------+ -| Enables system admins to display plain text | - System Config path: N/A | -| notification log level details in color. | - ``config.json setting``: ``".NotificationLogSettings.EnableColor": false",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLECOLOR`` | -| - **true**: When logged events are output to | | -| the console as plain text, colorize log | | -| levels details. | | -| - **false**: **(Default)** Plain text log | | -| details aren't colorized in the console. | | -+-----------------------------------------------+----------------------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------------------+ +| Enables system admins to display plain text | - System Config path: N/A | +| notification log level details in color. | - ``config.json`` setting: ``NotificationLogSettings`` > ``EnableColor`` > ``false`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLECOLOR`` | +| - **true**: When logged events are output to | | +| the console as plain text, colorize log | | +| levels details. | | +| - **false**: **(Default)** Plain text log | | +| details aren't colorized in the console. | | ++-----------------------------------------------+----------------------------------------------------------------------------------------+ .. config:setting:: output-logs-to-file :displayname: Output notification logs to file (Notification Logging) @@ -3414,19 +3421,19 @@ Colorize plain text console logs Output logs to file ^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------+ -| Configure Mattermost to output notification | - System Config path: N/A | -| console logs to a file. | - ``config.json setting``: ``".NotificationLogSettings.EnableFile": true",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLEFILE`` | -| - **true**: **(Default)** Logged events are | | -| written based on the | | -| `file log level <#file-log-level>`__ | | -| configuration to a ``notifications.log`` | | -| file located in the directory configured | | -| via ``file location``. | | -| - **false**: Logged events aren't written to | | -| a file. | | -+-----------------------------------------------+---------------------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------------------+ +| Configure Mattermost to output notification | - System Config path: N/A | +| console logs to a file. | - ``config.json`` setting: ``NotificationLogSettings`` > ``EnableFile`` > ``true`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ENABLEFILE`` | +| - **true**: **(Default)** Logged events are | | +| written based on the | | +| `file log level <#file-log-level>`__ | | +| configuration to a ``notifications.log`` | | +| file located in the directory configured | | +| via ``file location``. | | +| - **false**: Logged events aren't written to | | +| a file. | | ++-----------------------------------------------+---------------------------------------------------------------------------------------+ .. config:setting:: file-log-directory :displayname: Notification file log directory (Notification Logging) @@ -3438,12 +3445,12 @@ Output logs to file File log directory ^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------+ -| The location of the notification log files. | - System Config path: N/A | -| | - ``config.json setting``: ``".NotificationLogSettings.FileLocation": "",`` | -| String input. If left blank, log files are | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILELOCATION`` | -| stored in the ``./logs`` directory. | | -+-----------------------------------------------+---------------------------------------------------------------------------------+ ++-----------------------------------------------+-------------------------------------------------------------------------------------+ +| The location of the notification log files. | - System Config path: N/A | +| | - ``config.json`` setting: ``NotificationLogSettings`` > ``FileLocation`` > ``""`` | +| String input. If left blank, log files are | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILELOCATION`` | +| stored in the ``./logs`` directory. | | ++-----------------------------------------------+-------------------------------------------------------------------------------------+ .. note:: @@ -3463,17 +3470,17 @@ File log directory File log level ^^^^^^^^^^^^^^ -+-------------------------------------------------+---------------------------------------------------------------------------------+ -| The level of detail in notification log events | - System Config path: N/A | -| when Mattermost outputs log messages to a file. | - ``config.json setting``: ``".NotificationLogSettings.FileLevel": INFO",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILELEVEL`` | -| - **DEBUG**: Outputs verbose detail for | | -| developers debugging issues. | | -| - **ERROR**: Outputs only error messages. | | -| - **INFO**: **(Default)** Outputs error | | -| messages and information around startup | | -| and initialization. | | -+-------------------------------------------------+---------------------------------------------------------------------------------+ ++-------------------------------------------------+--------------------------------------------------------------------------------------+ +| The level of detail in notification log events | - System Config path: N/A | +| when Mattermost outputs log messages to a file. | - ``config.json`` setting: ``NotificationLogSettings`` > ``FileLevel`` > ``"INFO"`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILELEVEL`` | +| - **DEBUG**: Outputs verbose detail for | | +| developers debugging issues. | | +| - **ERROR**: Outputs only error messages. | | +| - **INFO**: **(Default)** Outputs error | | +| messages and information around startup | | +| and initialization. | | ++-------------------------------------------------+--------------------------------------------------------------------------------------+ .. config:setting:: output-file-logs-as-json :displayname: Output notification file logs as JSON (Notification Logging) @@ -3488,15 +3495,15 @@ File log level Output file logs as JSON ^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+------------------------------------------------------------------------------+ -| Configure Mattermost to output notification | - System Config path: N/A | -| file logs as JSON. | - ``config.json setting``: ``".NotificationLogSettings.FileJson": true",`` | -| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILEJSON`` | -| - **true**: **(Default)** Logged events are | | -| written in a machine-readable JSON format. | | -| - **false**: Logged events are written in | | -| plain text. | | -+-----------------------------------------------+------------------------------------------------------------------------------+ ++-----------------------------------------------+------------------------------------------------------------------------------------+ +| Configure Mattermost to output notification | - System Config path: N/A | +| file logs as JSON. | - ``config.json`` setting: ``NotificationLogSettings`` > ``FileJson`` > ``true`` | +| | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_FILEJSON`` | +| - **true**: **(Default)** Logged events are | | +| written in a machine-readable JSON format. | | +| - **false**: Logged events are written in | | +| plain text. | | ++-----------------------------------------------+------------------------------------------------------------------------------------+ .. config:setting:: output-logs-to-multiple-targets :displayname: Output notification logs to multiple targets (Notification Logging) @@ -3508,16 +3515,16 @@ Output file logs as JSON Output logs to multiple targets ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+-----------------------------------------------+---------------------------------------------------------------------------------------+ -| Configure Mattermost to allow any combination | - System Config path: N/A | -| of console, local file, syslog, and TCP | - ``config.json setting``: ``".NotificationLogSettings.AdvancedLoggingJSON":: "",`` | -| socket targets, and send notification log | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ADVANCEDLOGGINGJSON`` | -| records to multiple targets. | | -| | | -| String input can contain a filespec to | | -| another configuration file, a database DSN, | | -| or JSON. | | -+-----------------------------------------------+---------------------------------------------------------------------------------------+ ++-----------------------------------------------+-----------------------------------------------------------------------------------------------+ +| Configure Mattermost to allow any combination | - System Config path: N/A | +| of console, local file, syslog, and TCP | - ``config.json`` setting: ``NotificationLogSettings`` > ``AdvancedLoggingJSON`` > ``": ""`` | +| socket targets, and send notification log | - Environment variable: ``MM_NOTIFICATIONLOGSETTINGS_ADVANCEDLOGGINGJSON`` | +| records to multiple targets. | | +| | | +| String input can contain a filespec to | | +| another configuration file, a database DSN, | | +| or JSON. | | ++-----------------------------------------------+-----------------------------------------------------------------------------------------------+ ---- @@ -3541,7 +3548,7 @@ Output audit logs to file +--------------------------------------------------+----------------------------------------------------------------------------------------+ | Whether to write audit log files to disk. | - System Config path: **Compliance > Audit Logging** | -| | - ``config.json setting``: ``".ExperimentalAuditSettings.FileEnabled": false,`` | +| | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileEnabled`` > ``false`` | | - **true**: Logged events are written to the | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEENABLED`` | | file specified by the audit file name | | | configuration setting. | | @@ -3563,15 +3570,15 @@ Output audit logs to file Audit file name ^^^^^^^^^^^^^^^ -+--------------------------------------------------+----------------------------------------------------------------------------+ -| The name of the audit log files. | - System Config path: **Compliance > Audit Logging** | -| | - ``config.json setting``: ``".ExperimentalAuditSettings.FileName": "",`` | -| The path that you set to the audit file must | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILENAME`` | -| exist and Mattermost must have write | | -| permissions in it. | | -| | | -| **Example:** ``/var/log/mattermost_audit.log`` | | -+--------------------------------------------------+----------------------------------------------------------------------------+ ++--------------------------------------------------+-----------------------------------------------------------------------------------+ +| The name of the audit log files. | - System Config path: **Compliance > Audit Logging** | +| | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileName`` > ``""`` | +| The path that you set to the audit file must | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILENAME`` | +| exist and Mattermost must have write | | +| permissions in it. | | +| | | +| **Example:** ``/var/log/mattermost_audit.log`` | | ++--------------------------------------------------+-----------------------------------------------------------------------------------+ .. note:: @@ -3582,16 +3589,16 @@ Audit file name :systemconsole: Compliance > Audit Logging :configjson: .ExperimentalAuditSettings.FileMaxSizeMB :environment: MM_EXPERIMENTALAUDITSETTINGS_FILEMAXSIZEMB - :description: The maximum size in megabytes for audit log files before they are rotated. + :description: The maximum size in megabytes for audit log files before they are rotated. Default is 100 MB. Maximum file size ^^^^^^^^^^^^^^^^^ +--------------------------------------------------+----------------------------------------------------------------------------------------+ | The maximum size in megabytes for audit log | - System Config path: **Compliance > Audit Logging** | -| files before they are rotated. | - ``config.json setting``: ``".ExperimentalAuditSettings.FileMaxSizeMB": 100,`` | +| files before they are rotated. | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileMaxSizeMB`` > ``100`` | | | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEMAXSIZEMB`` | -| Numerical input. Default is **100**. | | +| Numerical input. Default is **100** MB. | | +--------------------------------------------------+----------------------------------------------------------------------------------------+ .. config:setting:: auditlog-filemaxagedays @@ -3599,14 +3606,14 @@ Maximum file size :systemconsole: Compliance > Audit Logging :configjson: .ExperimentalAuditSettings.FileMaxAgeDays :environment: MM_EXPERIMENTALAUDITSETTINGS_FILEMAXAGEDAYS - :description: The maximum age in days for audit log files before they are deleted. + :description: The maximum age in days for audit log files before they are deleted. Default is 0 (no limit). Maximum file age ^^^^^^^^^^^^^^^^ +--------------------------------------------------+----------------------------------------------------------------------------------------+ | The maximum age in days for audit log files | - System Config path: **Compliance > Audit Logging** | -| before they are deleted. | - ``config.json setting``: ``".ExperimentalAuditSettings.FileMaxAgeDays": 0,`` | +| before they are deleted. | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileMaxAgeDays`` > ``0`` | | | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEMAXAGEDAYS`` | | Numerical input. Default is **0** (no limit). | | +--------------------------------------------------+----------------------------------------------------------------------------------------+ @@ -3616,14 +3623,14 @@ Maximum file age :systemconsole: Compliance > Audit Logging :configjson: .ExperimentalAuditSettings.FileMaxBackups :environment: MM_EXPERIMENTALAUDITSETTINGS_FILEMAXBACKUPS - :description: The maximum number of audit log file backups to retain. + :description: The maximum number of audit log file backups to retain. Default is 0 (no limit). Maximum file backups ^^^^^^^^^^^^^^^^^^^^ +--------------------------------------------------+----------------------------------------------------------------------------------------+ | The maximum number of audit log file backups | - System Config path: **Compliance > Audit Logging** | -| to retain. | - ``config.json setting``: ``".ExperimentalAuditSettings.FileMaxBackups": 0,`` | +| to retain. | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileMaxBackups`` > ``0`` | | | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEMAXBACKUPS`` | | Numerical input. Default is **0** (no limit). | | +--------------------------------------------------+----------------------------------------------------------------------------------------+ @@ -3635,50 +3642,53 @@ Maximum file backups :environment: MM_EXPERIMENTALAUDITSETTINGS_FILECOMPRESS :description: Whether to compress rotated audit log files. + - **true**: Rotated audit log files are compressed. + - **false**: **(Default)** Rotated audit log files aren't compressed. + Compress audit log files ^^^^^^^^^^^^^^^^^^^^^^^^ -+--------------------------------------------------+----------------------------------------------------------------------------------------+ -| Whether to compress rotated audit log files. | - System Config path: **Compliance > Audit Logging** | -| | - ``config.json setting``: ``".ExperimentalAuditSettings.FileCompress": false,`` | -| - **true**: Rotated audit log files are | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILECOMPRESS`` | -| compressed. | | -| - **false**: **(Default)** Rotated audit log | | -| files are not compressed. | | -+--------------------------------------------------+----------------------------------------------------------------------------------------+ ++--------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Whether to compress rotated audit log files. | - System Config path: **Compliance > Audit Logging** | +| | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileCompress`` > ``false`` | +| - **true**: Rotated audit log files are | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILECOMPRESS`` | +| compressed. | | +| - **false**: **(Default)** Rotated audit log | | +| files aren't compressed. | | ++--------------------------------------------------+-------------------------------------------------------------------------------------------+ .. config:setting:: auditlog-filemaxqueuesize :displayname: Audit log queue size (Audit Logging) :systemconsole: Compliance > Audit Logging :configjson: .ExperimentalAuditSettings.FileMaxQueueSize :environment: MM_EXPERIMENTALAUDITSETTINGS_FILEMAXQUEUESIZE - :description: The maximum number of audit log entries that can be queued. + :description: The maximum number of audit log entries that can be queued. Default is 1000. Audit log queue size ^^^^^^^^^^^^^^^^^^^^ -+--------------------------------------------------+----------------------------------------------------------------------------------------+ -| The maximum number of audit log entries that | - System Config path: **Compliance > Audit Logging** | -| can be queued. | - ``config.json setting``: ``".ExperimentalAuditSettings.FileMaxQueueSize": 1000,`` | -| | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEMAXQUEUESIZE`` | -| Numerical input. Default is **1000**. | | -+--------------------------------------------------+----------------------------------------------------------------------------------------+ ++--------------------------------------------------+--------------------------------------------------------------------------------------------+ +| The maximum number of audit log entries that | - System Config path: **Compliance > Audit Logging** | +| can be queued. | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``FileMaxQueueSize`` > ``1000`` | +| | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_FILEMAXQUEUESIZE`` | +| Numerical input. Default is **1000**. | | ++--------------------------------------------------+--------------------------------------------------------------------------------------------+ .. config:setting:: auditlog-certificate :displayname: Audit log certificate (Audit Logging) :systemconsole: N/A :configjson: .ExperimentalAuditSettings.Certificate :environment: MM_EXPERIMENTALAUDITSETTINGS_CERTIFICATE - :description: Certificate configuration for audit logging. + :description: Certificate configuration for audit logging. Default is blank. Audit log certificate ^^^^^^^^^^^^^^^^^^^^^ -+--------------------------------------------------+------------------------------------------------------------------------------------+ -| Certificate configuration for audit logging. | - System Config path: N/A | -| | - ``config.json setting``: ``".ExperimentalAuditSettings.Certificate": "",`` | -| String input. Default is blank. | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_CERTIFICATE`` | -+--------------------------------------------------+------------------------------------------------------------------------------------+ ++--------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Certificate configuration for audit logging. | - System Config path: N/A | +| | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``Certificate`` > ``""`` | +| String input. Default is blank. | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_CERTIFICATE`` | ++--------------------------------------------------+-------------------------------------------------------------------------------------------+ .. config:setting:: auditlog-advancedloggingjson :displayname: Output audit logs to multiple targets (Audit Logging) @@ -3690,11 +3700,11 @@ Audit log certificate Output audit logs to multiple targets ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -+--------------------------------------------------+----------------------------------------------------------------------------------------+ -| Configures Mattermost to output audit log | - System Config path: **Compliance > Audit Logging** | -| records to multiple targets. | - ``config.json setting``: ``".ExperimentalAuditSettings.AdvancedLoggingJSON": {},`` | -| | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_ADVANCEDLOGGINGJSON`` | -+--------------------------------------------------+----------------------------------------------------------------------------------------+ ++--------------------------------------------------+---------------------------------------------------------------------------------------------+ +| Configures Mattermost to output audit log | - System Config path: **Compliance > Audit Logging** | +| records to multiple targets. | - ``config.json`` setting: ``ExperimentalAuditSettings`` > ``AdvancedLoggingJSON`` > ``{}`` | +| | - Environment variable: ``MM_EXPERIMENTALAUDITSETTINGS_ADVANCEDLOGGINGJSON`` | ++--------------------------------------------------+---------------------------------------------------------------------------------------------+ .. note:: @@ -3724,20 +3734,20 @@ User sessions are cleared when a user tries to log in, and sessions are cleared Extend session length with activity ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ -| Improves the user experience by extending sessions and keeping | - System Config path: **Environment > Session Lengths** | -| users logged in if they are active in their Mattermost apps. | - ``config.json`` setting: ``".ServiceSettings.ExtendSessionLengthWithActivity: true,`` | -| | - Environment variable: ``MM_SERVICESETTINGS_EXTENDSESSIONLENGTHWITHACTIVITY`` | -| - **true**: **(Default)** Sessions are automatically | | -| extended when users are active in their Mattermost | | -| client. User sessions only expire when users aren’t active | | -| in their Mattermost client for the entire duration of the | | -| session lengths defined. | | -| - **false**: Sessions won't extend with activity in | | -| Mattermost. User sessions immediately expire at the | | -| end of the session length or based on the | | -| `session idle timeout <#session-idle-timeout>`__ configured. | | -+----------------------------------------------------------------+-----------------------------------------------------------------------------------------+ ++----------------------------------------------------------------+-------------------------------------------------------------------------------------------------+ +| Improves the user experience by extending sessions and keeping | - System Config path: **Environment > Session Lengths** | +| users logged in if they are active in their Mattermost apps. | - ``config.json`` setting: ``ServiceSettings`` > ``ExtendSessionLengthWithActivity`` > ``true`` | +| | - Environment variable: ``MM_SERVICESETTINGS_EXTENDSESSIONLENGTHWITHACTIVITY`` | +| - **true**: **(Default)** Sessions are automatically | | +| extended when users are active in their Mattermost | | +| client. User sessions only expire when users aren’t active | | +| in their Mattermost client for the entire duration of the | | +| session lengths defined. | | +| - **false**: Sessions won't extend with activity in | | +| Mattermost. User sessions immediately expire at the | | +| end of the session length or based on the | | +| `session idle timeout <#session-idle-timeout>`__ configured. | | ++----------------------------------------------------------------+-------------------------------------------------------------------------------------------------+ .. config:setting:: terminate-sessions-on-password-change :displayname: Terminate sessions on password change (Session Lengths) @@ -3751,22 +3761,22 @@ Extend session length with activity Terminate sessions on password change ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ -| Enable or disable session revocation when a user's | - System Config path: **Environment > Session Lengths** | -| password changes. | - ``config.json`` setting: ``".ServiceSettings.TerminateSessionsOnPasswordChange: true,`` | -| | - Environment variable: ``MM_SERVICESETTINGS_TERMINATESESSIONSONPASSWORDCHANGE`` | -| - **true**: **(Default for new deployments)** | | -| Session revocation is enabled. | | -| All sessions of a user expire if their password is changed | | -| (by themselves or by a system admin). If the password change | | -| is initiated by the user, their current session isn't | | -| terminated. | | -| - **false**: **(Default for existing deployments)** | | -| Session revocation is disabled. | | -| When users change their password, only the user's current | | -| session is revoked. When a system admin changes the user's | | -| password, none of the user's sessions are revoked. | | -+----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ ++----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ +| Enable or disable session revocation when a user's | - System Config path: **Environment > Session Lengths** | +| password changes. | - ``config.json`` setting: ``ServiceSettings`` > ``TerminateSessionsOnPasswordChange`` > ``true`` | +| | - Environment variable: ``MM_SERVICESETTINGS_TERMINATESESSIONSONPASSWORDCHANGE`` | +| - **true**: **(Default for new deployments)** | | +| Session revocation is enabled. | | +| All sessions of a user expire if their password is changed | | +| (by themselves or by a system admin). If the password change | | +| is initiated by the user, their current session isn't | | +| terminated. | | +| - **false**: **(Default for existing deployments)** | | +| Session revocation is disabled. | | +| When users change their password, only the user's current | | +| session is revoked. When a system admin changes the user's | | +| password, none of the user's sessions are revoked. | | ++----------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ .. config:setting:: session-length-for-adldap-and-email :displayname: Session length for AD/LDAP and email (Session Lengths) @@ -3780,14 +3790,14 @@ Terminate sessions on password change Session length for AD/LDAP and email ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+--------------------------------------------------------------------------------+ -| Set the number of hours counted from the last time a user | - System Config path: **Environment > Session Lengths** | -| entered their credentials into the web app or the desktop | - ``config.json`` setting: ``".ServiceSettings.SessionLengthWebInHours: 720,`` | -| app to the expiry of the user’s session on email and AD/LDAP | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHWEBINHOURS`` | -| authentication. | | -| | | -| Numerical input in hours. Default is **720** hours. | | -+----------------------------------------------------------------+--------------------------------------------------------------------------------+ ++----------------------------------------------------------------+----------------------------------------------------------------------------------------+ +| Set the number of hours counted from the last time a user | - System Config path: **Environment > Session Lengths** | +| entered their credentials into the web app or the desktop | - ``config.json`` setting: ``ServiceSettings`` > ``SessionLengthWebInHours`` > ``720`` | +| app to the expiry of the user’s session on email and AD/LDAP | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHWEBINHOURS`` | +| authentication. | | +| | | +| Numerical input in hours. Default is **720** hours. | | ++----------------------------------------------------------------+----------------------------------------------------------------------------------------+ .. note:: @@ -3803,13 +3813,13 @@ Session length for AD/LDAP and email Session length for mobile ~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+-----------------------------------------------------------------------------------+ -| Set the number of hours counted from the last time a user | - System Config path: **Environment > Session Lengths** | -| entered their credential into the mobile app to the expiry | - ``config.json`` setting: ``".ServiceSettings.SessionLengthMobileInHours: 720,`` | -| of the user’s session. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHMOBILEINHOURS`` | -| | | -| Numerical input in hours. Default is **720** hours. | | -+----------------------------------------------------------------+-----------------------------------------------------------------------------------+ ++----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Set the number of hours counted from the last time a user | - System Config path: **Environment > Session Lengths** | +| entered their credential into the mobile app to the expiry | - ``config.json`` setting: ``ServiceSettings`` > ``SessionLengthMobileInHours`` > ``720`` | +| of the user’s session. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHMOBILEINHOURS`` | +| | | +| Numerical input in hours. Default is **720** hours. | | ++----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ .. note:: @@ -3825,16 +3835,16 @@ Session length for mobile Session length for SSO ~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+----------------------------------------------------------------------------------+ -| Set the number of hours from the last time a user entered | - System Config path: **Environment > Session Lengths** | -| their SSO credentials to the expiry of the user’s session. | - ``config.json`` setting: ``".ServiceSettings.SessionLengthSSOInHours: 720,`` | -| This setting defines the session length for SSO | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHSSOINHOURS`` | -| authentication, such as SAML, GitLab, and OAuth 2.0. | | -| | | -| Numerical input in hours. Default is **720** hours. | | -| Numbers as decimals are also valid values for this | | -| configuration setting. | | -+----------------------------------------------------------------+----------------------------------------------------------------------------------+ ++----------------------------------------------------------------+------------------------------------------------------------------------------------------+ +| Set the number of hours from the last time a user entered | - System Config path: **Environment > Session Lengths** | +| their SSO credentials to the expiry of the user’s session. | - ``config.json`` setting: ``ServiceSettings`` > ``SessionLengthSSOInHours`` > ``720`` | +| This setting defines the session length for SSO | - Environment variable: ``MM_SERVICESETTINGS_SESSIONLENGTHSSOINHOURS`` | +| authentication, such as SAML, GitLab, and OAuth 2.0. | | +| | | +| Numerical input in hours. Default is **720** hours. | | +| Numbers as decimals are also valid values for this | | +| configuration setting. | | ++----------------------------------------------------------------+------------------------------------------------------------------------------------------+ .. note:: @@ -3851,11 +3861,11 @@ Session length for SSO Session cache ~~~~~~~~~~~~~ -+----------------------------------------------------------------+-----------------------------------------------------------------------------+ -| Set the number of minutes to cache a session in memory. | - System Config path: **Environment > Session Lengths** | -| | - ``config.json`` setting: ``".ServiceSettings.SessionCacheInMinutes: 10,`` | -| Numerical input in minutes. Default is **10** minutes. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONCACHEINMINUTES`` | -+----------------------------------------------------------------+-----------------------------------------------------------------------------+ ++----------------------------------------------------------------+-------------------------------------------------------------------------------------+ +| Set the number of minutes to cache a session in memory. | - System Config path: **Environment > Session Lengths** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``SessionCacheInMinutes`` > ``10`` | +| Numerical input in minutes. Default is **10** minutes. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONCACHEINMINUTES`` | ++----------------------------------------------------------------+-------------------------------------------------------------------------------------+ .. config:setting:: session-idle-timeout :displayname: Session idle timeout (Session Lengths) @@ -3869,15 +3879,15 @@ Session cache Session idle timeout ~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+--------------------------------------------------------------------------------------+ -| The number of minutes from the last time a user was active | - System Config path: N/A | -| on the system to the expiry of the user’s session. | - ``config.json`` setting: ``".ServiceSettings.SessionIdleTimeoutInMinutes: 43200,`` | -| Once expired, the user will need to log in to continue. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONIDLETIMEOUTINMINUTES`` | -| | | -| Numerical input in minutes. Default is **43200** (30 days). | | -| Minimum value is **5** minutes, and a value of **0** sets | | -| the time as unlimited. | | -+----------------------------------------------------------------+--------------------------------------------------------------------------------------+ ++----------------------------------------------------------------+----------------------------------------------------------------------------------------------+ +| The number of minutes from the last time a user was active | - System Config path: N/A | +| on the system to the expiry of the user’s session. | - ``config.json`` setting: ``ServiceSettings`` > ``SessionIdleTimeoutInMinutes`` > ``43200`` | +| Once expired, the user will need to log in to continue. | - Environment variable: ``MM_SERVICESETTINGS_SESSIONIDLETIMEOUTINMINUTES`` | +| | | +| Numerical input in minutes. Default is **43200** (30 days). | | +| Minimum value is **5** minutes, and a value of **0** sets | | +| the time as unlimited. | | ++----------------------------------------------------------------+----------------------------------------------------------------------------------------------+ .. note:: @@ -3910,14 +3920,14 @@ See the :doc:`performance monitoring Performance Monitoring** | -| | - ``config.json setting``: ``".MetricsSettings.Enable": false",`` | -| - **true**: Performance monitoring data | - Environment variable: ``MM_METRICSSETTINGS_ENABLE`` | -| collection and profiling is enabled. | | -| - **false**: **(Default)** Mattermost | | -| performance monitoring is disabled. | | -+-----------------------------------------------+---------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------+ +| Enable or disable performance monitoring. | - System Config path: **Environment > Performance Monitoring** | +| | - ``config.json`` setting: ``MetricsSettings`` > ``Enable`` > ``false`` | +| - **true**: Performance monitoring data | - Environment variable: ``MM_METRICSSETTINGS_ENABLE`` | +| collection and profiling is enabled. | | +| - **false**: **(Default)** Mattermost | | +| performance monitoring is disabled. | | ++-----------------------------------------------+---------------------------------------------------------------------------+ See the :doc:`performance monitoring ` documentation to learn more. @@ -3934,14 +3944,14 @@ See the :doc:`performance monitoring Performance Monitoring** | -| | - ``config.json setting``: ``".MetricsSettings.EnableClientMetrics": false",`` | -| - **true**: Client performance monitoring data | - Environment variable: ``MM_METRICSSETTINGS_ENABLE`` | -| collection and profiling is enabled. | | -| - **false**: **(Default)** Mattermost | | -| client performance monitoring is disabled. | | -+------------------------------------------------------+----------------------------------------------------------------------------------+ ++------------------------------------------------------+----------------------------------------------------------------------------------------+ +| Enable or disable client performance monitoring. | - System Config path: **Environment > Performance Monitoring** | +| | - ``config.json`` setting: ``MetricsSettings`` > ``EnableClientMetrics`` > ``false`` | +| - **true**: Client performance monitoring data | - Environment variable: ``MM_METRICSSETTINGS_ENABLE`` | +| collection and profiling is enabled. | | +| - **false**: **(Default)** Mattermost | | +| client performance monitoring is disabled. | | ++------------------------------------------------------+----------------------------------------------------------------------------------------+ .. config:setting:: client-side-user-ids :displayname: Client side user ids (Performance Monitoring) @@ -3955,7 +3965,7 @@ Client side user ids +---------------------------------------------------------------+-------------------------------------------------------------------------+ | A list of comma-separated user IDs you want to track for | - System Config path: **Environment > Performance Monitoring** | -| client-side webapp metrics. | - ``config.json setting``: ``".MetricsSettings.ClientSideUserIds"`` | +| client-side webapp metrics. | - ``config.json`` setting: ``MetricsSettings`` > ``ClientSideUserIds`` | | | - Environment variable: ``MM_METRICSSETTINGS_LISTENADDRESS`` | | Limited to 5 user IDs. Blank by default. | | +---------------------------------------------------------------+-------------------------------------------------------------------------+ @@ -3974,12 +3984,12 @@ Client side user ids Listen address ~~~~~~~~~~~~~~~ -+---------------------------------------------------------------+-------------------------------------------------------------------------+ -| The port the Mattermost server will listen on to expose | - System Config path: **Environment > Performance Monitoring** | -| performance metrics, when enabled. | - ``config.json setting``: ``".MetricsSettings.ListenAddress": 8067",`` | -| | - Environment variable: ``MM_METRICSSETTINGS_LISTENADDRESS`` | -| Numerical input. Default is **8067**. | | -+---------------------------------------------------------------+-------------------------------------------------------------------------+ ++---------------------------------------------------------------+-------------------------------------------------------------------------------+ +| The port the Mattermost server will listen on to expose | - System Config path: **Environment > Performance Monitoring** | +| performance metrics, when enabled. | - ``config.json`` setting: ``MetricsSettings`` > ``ListenAddress`` > ``8067`` | +| | - Environment variable: ``MM_METRICSSETTINGS_LISTENADDRESS`` | +| Numerical input. Default is **8067**. | | ++---------------------------------------------------------------+-------------------------------------------------------------------------------+ ---- @@ -4004,15 +4014,15 @@ Configure developer mode by going to **System Console > Environment > Developer* Enable testing commands ~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------+--------------------------------------------------------------------------+ -| Enable or disable the ``/test`` slash command. | - System Config path: **Environment > Developer** | -| | - ``config.json setting``: ``".ServiceSettings.EnableTesting": true",`` | -| - **true**: **(Default)** The ``/test`` slash | - Environment variable: ``MM_SERVICESETTINGS_ENABLETESTING`` | -| command is enabled to load test accounts | | -| and test data. | | -| - **false**: The ``/test`` slash command is | | -| disabled. | | -+---------------------------------------------------+--------------------------------------------------------------------------+ ++---------------------------------------------------+--------------------------------------------------------------------------------+ +| Enable or disable the ``/test`` slash command. | - System Config path: **Environment > Developer** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableTesting`` > ``true`` | +| - **true**: **(Default)** The ``/test`` slash | - Environment variable: ``MM_SERVICESETTINGS_ENABLETESTING`` | +| command is enabled to load test accounts | | +| and test data. | | +| - **false**: The ``/test`` slash command is | | +| disabled. | | ++---------------------------------------------------+--------------------------------------------------------------------------------+ .. config:setting:: enable-developer-mode :displayname: Enable developer mode (Developer) @@ -4027,16 +4037,16 @@ Enable testing commands Enable developer mode ~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------+---------------------------------------------------------------------------+ -| Enable or disable developer mode. | - System Config path: **Environment > Developer** | -| | - ``config.json setting``: ``".ServiceSettings.EnableDeveloper": true",`` | -| - **true**: **(Default)** Javascript errors | - Environment variable: ``MM_SERVICESETTINGS_ENABLEDEVELOPER`` | -| are shown in a banner at the top of | | -| Mattermost the user interface. | | -| Not recommended for use in production. | | -| - **false**: Users are not alerted to | | -| Javascript errors. | | -+-----------------------------------------------+---------------------------------------------------------------------------+ ++-----------------------------------------------+---------------------------------------------------------------------------------+ +| Enable or disable developer mode. | - System Config path: **Environment > Developer** | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableDeveloper`` > ``true`` | +| - **true**: **(Default)** Javascript errors | - Environment variable: ``MM_SERVICESETTINGS_ENABLEDEVELOPER`` | +| are shown in a banner at the top of | | +| Mattermost the user interface. | | +| Not recommended for use in production. | | +| - **false**: Users are not alerted to | | +| Javascript errors. | | ++-----------------------------------------------+---------------------------------------------------------------------------------+ .. config:setting:: enable-client-debugging :displayname: Enable client debugging (Developer) @@ -4051,16 +4061,16 @@ Enable developer mode Enable client debugging ~~~~~~~~~~~~~~~~~~~~~~~ -+---------------------------------------------------+---------------------------------------------------------------------------------------------+ -| Enable or disable client-side debugging settings | - System Config path: **Environment > Developer** | -| found in **Settings > Advanced > Debugging** | - ``config.json setting``: ``".ServiceSettings.EnableClientPerformanceDebugging": false",`` | -| for individual users. | - Environment variable: ``MM_SERVICESETTINGS_ENABLECLIENTPERFORMANCEDEBUGGING`` | -| | | -| - **true**: Those settings are visible and can | | -| be enabled by users. | | -| - **false**: **(Default)** Those settings are | | -| hidden and disabled. | | -+---------------------------------------------------+---------------------------------------------------------------------------------------------+ ++---------------------------------------------------+---------------------------------------------------------------------------------------------------+ +| Enable or disable client-side debugging settings | - System Config path: **Environment > Developer** | +| found in **Settings > Advanced > Debugging** | - ``config.json`` setting: ``ServiceSettings`` > ``EnableClientPerformanceDebugging`` > ``false`` | +| for individual users. | - Environment variable: ``MM_SERVICESETTINGS_ENABLECLIENTPERFORMANCEDEBUGGING`` | +| | | +| - **true**: Those settings are visible and can | | +| be enabled by users. | | +| - **false**: **(Default)** Those settings are | | +| hidden and disabled. | | ++---------------------------------------------------+---------------------------------------------------------------------------------------------------+ See the :ref:`client debugging ` documentation to learn more. @@ -4078,25 +4088,22 @@ Allow untrusted internal connections This setting is intended to prevent users located outside your local network from using the Mattermost server to request confidential data from inside your network. Care should be used when configuring this setting to prevent unintended access to your local network. -+-----------------------------------------------+-----------------------------------------------------------------------------------------------+ -| Limit the ability for the Mattermost server | - System Config path: **Environment > Developer** | -| to make untrusted requests within its local | - ``config.json setting``: ``".ServiceSettings.AllowedUntrustedInternalConnections": "",`` | -| network. A request is considered “untrusted” | - Environment variable: ``MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS`` | -| when it’s made on behalf of a client. | | -+-----------------------------------------------+-----------------------------------------------------------------------------------------------+ -| This setting is a whitelist of local network addresses that can be requested by the Mattermost server. It’s configured as a | -| whitespace-separated list of hostnames, IP addresses, and CIDR ranges that can be accessed. | -| | -| Requests that can only be configured by system admins are considered trusted and won't be affected by this setting. Trusted URLs include | -| ones used for OAuth login or for sending push notifications. | -| | -| The following features make untrusted requests and are affected by this setting: | -| | -| - Integrations using webhooks, slash commands, or message actions. This prevents them from requesting endpoints within the local network. | -| - Link previews. When a link to a local network address is posted in a chat message, this prevents a link preview from being displayed. | -| - The local :doc:`image proxy `. If the local image proxy is enabled, images located on | -| the local network cannot be used by integrations or posted in chat messages. | -+-----------------------------------------------+-----------------------------------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------------------------------+ +| Limit the ability for the Mattermost server | - System Config path: **Environment > Developer** | +| to make untrusted requests within its local | - ``config.json`` setting: ``ServiceSettings`` > ``AllowedUntrustedInternalConnections`` > ``""`` | +| network. A request is considered “untrusted” | - Environment variable: ``MM_SERVICESETTINGS_ALLOWEDUNTRUSTEDINTERNALCONNECTIONS`` | +| when it’s made on behalf of a client. | | ++-----------------------------------------------+----------------------------------------------------------------------------------------------------+ + +This setting is a whitelist of local network addresses that can be requested by the Mattermost server. It’s configured as a whitespace-separated list of hostnames, IP addresses, and CIDR ranges that can be accessed. + +Requests that can only be configured by system admins are considered trusted and won't be affected by this setting. Trusted URLs include ones used for OAuth login or for sending push notifications. + +The following features make untrusted requests and are affected by this setting: + +- Integrations using webhooks, slash commands, or message actions. This prevents them from requesting endpoints within the local network. +- Link previews. When a link to a local network address is posted in a chat message, this prevents a link preview from being displayed. +- The local :doc:`image proxy `. If the local image proxy is enabled, images located on the local network cannot be used by integrations or posted in chat messages. Some examples of when you may want to modify this setting include: @@ -4133,17 +4140,17 @@ Enable biometric authentication .. include:: ../../_static/badges/ent-adv-only.rst :start-after: :nosearch: -+-----------------------------------------------+-------------------------------------------------------------------------------------+ -| Enforce biometric authentication, with | - System Config path: **Environment > Mobile Security** | -| PIN/passcode fallback, before accessing | - ``config.json setting``: ``".NativeAppSettings.MobileEnableBiometrics": false",`` | -| the app. Users will be prompted based on | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEENABLEBIOMETRICS`` | -| session activity and server switching rules. | | -| | | -| - **true**: Biometric authentication is | | -| enabled. | | -| - **false**: **(Default)** Biometric | | -| authentication is disabled. | | -+-----------------------------------------------+-------------------------------------------------------------------------------------+ ++-----------------------------------------------+-------------------------------------------------------------------------------------------+ +| Enforce biometric authentication, with | - System Config path: **Environment > Mobile Security** | +| PIN/passcode fallback, before accessing | - ``config.json`` setting: ``NativeAppSettings`` > ``MobileEnableBiometrics`` > ``false`` | +| the app. Users will be prompted based on | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEENABLEBIOMETRICS`` | +| session activity and server switching rules. | | +| | | +| - **true**: Biometric authentication is | | +| enabled. | | +| - **false**: **(Default)** Biometric | | +| authentication is disabled. | | ++-----------------------------------------------+-------------------------------------------------------------------------------------------+ .. note:: @@ -4170,18 +4177,18 @@ Enable jailbreak/root protection .. include:: ../../_static/badges/ent-adv-only.rst :start-after: :nosearch: -+-----------------------------------------------+----------------------------------------------------------------------------------------+ -| Prevent access to the app on devices | - System Config path: **Environment > Mobile Security** | -| detected as jailbroken or rooted. If a | - ``config.json setting``: ``".NativeAppSettings.MobileJailbreakProtection": false",`` | -| device fails the security check, users will | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEJAILBREAKPROTECTION`` | -| be denied access or prompted to switch to a | | -| compliant server. | | -| | | -| - **true**: Jailbreak/Root protection is | | -| enabled. | | -| - **false**: **(Default)** Jailbreak/Root | | -| protection is disabled. | | -+-----------------------------------------------+----------------------------------------------------------------------------------------+ ++-----------------------------------------------+----------------------------------------------------------------------------------------------+ +| Prevent access to the app on devices | - System Config path: **Environment > Mobile Security** | +| detected as jailbroken or rooted. If a | - ``config.json`` setting: ``NativeAppSettings`` > ``MobileJailbreakProtection`` > ``false`` | +| device fails the security check, users will | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEJAILBREAKPROTECTION`` | +| be denied access or prompted to switch to a | | +| compliant server. | | +| | | +| - **true**: Jailbreak/Root protection is | | +| enabled. | | +| - **false**: **(Default)** Jailbreak/Root | | +| protection is disabled. | | ++-----------------------------------------------+----------------------------------------------------------------------------------------------+ .. note:: @@ -4203,18 +4210,18 @@ Prevent screen capture .. include:: ../../_static/badges/ent-adv-only.rst :start-after: :nosearch: -+-----------------------------------------------+-----------------------------------------------------------------------------------------+ -| Block screenshots and screen recordings when | - System Config path: **Environment > Mobile Security** | -| using the mobile app. Screenshots will | - ``config.json setting``: ``".NativeAppSettings.MobilePreventScreenCapture": false",`` | -| appear blank, and screen recordings will | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEPREVENTSCREENCAPTURE`` | -| blur (iOS) or show a black screen (Android). | | -| Also applies when switching apps. | | -| | | -| - **true**: Screen capture blocking is | | -| enabled. | | -| - **false**: **(Default)** Screen capture | | -| blocking is disabled. | | -+-----------------------------------------------+-----------------------------------------------------------------------------------------+ ++-----------------------------------------------+-----------------------------------------------------------------------------------------------+ +| Block screenshots and screen recordings when | - System Config path: **Environment > Mobile Security** | +| using the mobile app. Screenshots will | - ``config.json`` setting: ``NativeAppSettings`` > ``MobilePreventScreenCapture`` > ``false`` | +| appear blank, and screen recordings will | - Environment variable: ``MM_NATIVEAPPSETTINGS_MOBILEPREVENTSCREENCAPTURE`` | +| blur (iOS) or show a black screen (Android). | | +| Also applies when switching apps. | | +| | | +| - **true**: Screen capture blocking is | | +| enabled. | | +| - **false**: **(Default)** Screen capture | | +| blocking is disabled. | | ++-----------------------------------------------+-----------------------------------------------------------------------------------------------+ config.json-only settings ------------------------- @@ -4237,7 +4244,7 @@ Disable Customer Portal requests +-----------------------------------------------+---------------------------------------------------------------------------+ | Enable or disable customer portal requests. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CloudSettings`` > ``Disable`` > ``false,`` | +| | - ``config.json`` setting: ``CloudSettings`` > ``Disable`` > ``true,`` | | | - Environment variable: ``MM_CLOUDSETTINGS_DISABLE`` | | - **true**: **(Default)** Server-side | | | requests made to the customer portal are | | @@ -4249,13 +4256,15 @@ Disable Customer Portal requests +-----------------------------------------------+---------------------------------------------------------------------------+ .. note:: + Cloud admins can’t modify this configuration setting. .. config:setting:: enable-api-team-deletion :displayname: Enable API team deletion (ServiceSettings) :systemconsole: N/A - :configjson: EnableAPITeamDeletion + :configjson: .ServiceSettings.EnableAPITeamDeletion :environment: N/A + :description: Allow permanent team deletion via API. - **true**: The ``api/v4/teams/{teamid}?permanent=true`` API endpoint can be called by team admins and system admins (or users with appropriate permissions), or by running the mmctl team delete command, to permanently delete a team. - **false**: **(Default)** The API endpoint cannot be called, but ``api/v4/teams/{teamid}`` can still be used to soft delete a team. @@ -4263,21 +4272,26 @@ Disable Customer Portal requests Enable API team deletion ~~~~~~~~~~~~~~~~~~~~~~~~ -This setting isn't available in the System Console and can only be set in ``config.json``. ++-----------------------------------------------------------------+----------------------------------------------------------------------------------------+ +| Allow permanent team deletion via API. | - System Config path: N/A | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableAPITeamDeletion`` > ``false`` | +| - **true**: Team and system admins (or users with appropriate | - Environment variable: N/A | +| permissions) can call ``api/v4/teams/{teamid}?permanent=true``| | +| or use ``mmctl team delete`` to permanently delete a team. | | +| - **false**: **(Default)** Endpoint not available; | | +| ``api/v4/teams/{teamid}`` still soft deletes a team. | | ++-----------------------------------------------------------------+----------------------------------------------------------------------------------------+ -**True**: The ``api/v4/teams/{teamid}?permanent=true`` API endpoint can be called by team admins and system admins (or users with appropriate permissions), or by running the :ref:`mmctl team delete ` command to permanently delete a team. - -**False**: The API endpoint cannot be called. Note that ``api/v4/teams/{teamid}`` can still be used to soft delete a team. +.. note:: -+-------------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableAPITeamDeletion": false`` with options ``true`` and ``false``. | -+-------------------------------------------------------------------------------------------------------------------+ + This setting isn’t available in the System Console and can only be set in ``config.json``. .. config:setting:: enable-api-user-deletion :displayname: Enable API user deletion (ServiceSettings) :systemconsole: N/A - :configjson: EnableAPIUserDeletion + :configjson: .ServiceSettings.EnableAPIUserDeletion :environment: N/A + :description: Allow permanent user deletion via API. - **true**: The ``api/v4/users/{userid}?permanent=true`` API endpoint can be called by system admins (or users with appropriate permissions), or by running the mmctl user delete command, to permanently delete a user. - **false**: **(Default)** The API endpoint cannot be called, but ``api/v4/users/{userid}`` can still be used to soft delete a user. @@ -4285,21 +4299,26 @@ This setting isn't available in the System Console and can only be set in ``conf Enable API user deletion ~~~~~~~~~~~~~~~~~~~~~~~~ -This setting isn't available in the System Console and can only be set in ``config.json``. ++-----------------------------------------------------------------+----------------------------------------------------------------------------------------+ +| Allow permanent user deletion via API. | - System Config path: N/A | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableAPIUserDeletion`` > ``false`` | +| - **true**: System admins (or users with appropriate | - Environment variable: N/A | +| permissions) can call ``api/v4/users/{userid}?permanent=true``| | +| or use ``mmctl user delete`` to permanently delete a user. | | +| - **false**: **(Default)** Endpoint not available; | | +| ``api/v4/users/{userid}`` still soft deletes a user. | | ++-----------------------------------------------------------------+----------------------------------------------------------------------------------------+ -**True**: The ``api/v4/users/{userid}?permanent=true`` API endpoint can be called by system admins (or users with appropriate permissions), or by running the :ref:`mmctl user delete ` command, to permanently delete a user. - -**False**: The API endpoint cannot be called. Note that ``api/v4/users/{userid}`` can still be used to soft delete a user. +.. note:: -+-------------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableAPIUserDeletion": false`` with options ``true`` and ``false``. | -+-------------------------------------------------------------------------------------------------------------------+ + This setting isn’t available in the System Console and can only be set in ``config.json``. .. config:setting:: enable-api-channel-deletion :displayname: Enable API channel deletion (ServiceSettings) :systemconsole: N/A - :configjson: EnableAPIChannelDeletion + :configjson: .ServiceSettings.EnableAPIChannelDeletion :environment: N/A + :description: Allow permanent channel deletion via API. - **true**: The ``api/v4/channels/{channelid}?permanent=true`` API endpoint can be called by system admins (or users with appropriate permissions), or by running the mmctl channel delete command, to permanently delete a channel. - **false**: **(Default)** The API endpoint cannot be called, but ``api/v4/channels/{channelid}`` can still be used to soft delete a channel. @@ -4307,31 +4326,48 @@ This setting isn't available in the System Console and can only be set in ``conf Enable API channel deletion ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -This setting isn't available in the System Console and can only be set in ``config.json``. ++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ +| Allow permanent channel deletion via API. | - System Config path: N/A | +| | - ``config.json`` setting: ``ServiceSettings`` > ``EnableAPIChannelDeletion`` > ``false`` | +| - **true**: System admins (or users with appropriate | - Environment variable: N/A | +| permissions) can call | | +| ``api/v4/channels/{channelid}?permanent=true`` or use | | +| ``mmctl channel delete`` to permanently delete a channel. | | +| - **false**: **(Default)** Endpoint not available; | | +| ``api/v4/channels/{channelid}`` still soft deletes a channel. | | ++-----------------------------------------------------------------+-------------------------------------------------------------------------------------------+ + +.. note:: -**True**: The ``api/v4/channels/{channelid}?permanent=true`` API endpoint can be called by system admins (or users with appropriate permissions), or by running the :ref:`mmctl channel delete ` command, to permanently delete a channel. + This setting isn’t available in the System Console and can only be set in ``config.json``. -**False**: The API endpoint cannot be called. Note that ``api/v4/channels/{channelid}`` can still be used to soft delete a channel. +.. config:setting:: enable-desktop-app-developer-mode + :displayname: Enable desktop app developer mode (ServiceSettings) + :systemconsole: N/A + :configjson: N/A + :environment: N/A + :description: Enable developer debugging options in the Mattermost desktop app. Disabled by default. -+----------------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableAPIChannelDeletion": false`` with options ``true`` and ``false``. | -+----------------------------------------------------------------------------------------------------------------------+ + - **true**: Developer debugging options are available in the Mattermost desktop app by going to the **View > Developer Tools** menu + - **false**: **(Default)** Developer debugging options are unavailable in the Mattermost desktop app. Enable desktop app developer mode ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -From Desktop App v5.10, this setting enables developer debugging options available by going to the **View > Developer Tools** menu in the Mattermost desktop app. +From Desktop App v5.10, this setting enables developer debugging options available by going to the **View > Developer Tools** menu in the Mattermost desktop app. This setting isn't available in the System Console and can only be enabled in ``config.json`` by setting the environment variable ``MM_DESKTOP_DEVELOPER_MODE`` to ``true``. This setting is disabled by default. -**True**: Unlocks the following options in the Desktop App for the purposes of troubleshooting and debugging. You should only enable this setting if instructed to by a Mattermost developer: +- **True**: Unlocks the following options in the Desktop App for the purposes of troubleshooting and debugging. You should only enable this setting if instructed to by a Mattermost developer: + + - **Browser Mode Only**: Completely disables the preload script and stops web app components from knowing they're in the desktop app. This option should be the best indicator of whether a web app component is causing performance and/or memory retention issues. This option disables notifications, cross-tab navigation, unread/mentions badges, the calls widget, and breaks resizing on macOS. + - **Disable Notification Storage**: Turns off maps that hold references to unread notifications until they've been selected & read. This option is good for debugging in cases where Mattermost is holding onto too many references to unused notifications. + - **Disable User Activity Monitor**: Turns off the interval that checks whether the user is away or not. This option is good for debugging whether a user's availability status is causing unexpected desktop app behavior. + - **Disable Context Menu**: Turns off the context menu attached to the BrowserViews. This option is good as a library santity check. + - **Force Legacy Messaging API**: Forces the app to revert back to the old messaging API instead of the newer contextBridge API. This option is a good santity check to confirm whether the new API is responsible for holding onto memory. + - **Force New Messaging API**: Forces the app to use the contextBridge API and completely disables the legacy one. This option forces off listeners for the legacy API. - * **Browser Mode Only**: Completely disables the preload script and stops web app components from knowing they're in the desktop app. This option should be the best indicator of whether a web app component is causing performance and/or memory retention issues. This option disables notifications, cross-tab navigation, unread/mentions badges, the calls widget, and breaks resizing on macOS. - * **Disable Notification Storage**: Turns off maps that hold references to unread notifications until they've been selected & read. This option is good for debugging in cases where Mattermost is holding onto too many references to unused notifications. - * **Disable User Activity Monitor**: Turns off the interval that checks whether the user is away or not. This option is good for debugging whether a user's availability status is causing unexpected desktop app behavior. - * **Disable Context Menu**: Turns off the context menu attached to the BrowserViews. This option is good as a library santity check. - * **Force Legacy Messaging API**: Forces the app to revert back to the old messaging API instead of the newer contextBridge API. This option is a good santity check to confirm whether the new API is responsible for holding onto memory. - * **Force New Messaging API**: Forces the app to use the contextBridge API and completely disables the legacy one. This option forces off listeners for the legacy API. +- **False**: **(Default)** Developer debugging options are locked and unavailable in the Desktop App. Redis cache backend ~~~~~~~~~~~~~~~~~~~ @@ -4359,7 +4395,7 @@ Cache type +-----------------------------------------------+---------------------------------------------------------------------------+ | Define the cache type. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``CacheType,`` > ``lru`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``CacheType,`` > ``lru`` | | - **lru**: **(Default)** Mattermost uses the | - Environment variable: ``MM_CACHESETTINGS_CACHETYPE`` | | in-memory cache store. | | | - **redis**: Mattermost uses the configured | | @@ -4378,7 +4414,7 @@ Redis address +-----------------------------------------------+---------------------------------------------------------------------------+ | The hostname of the Redis host. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``RedisAddress,`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``RedisAddress,`` | | String input. | - Environment variable: ``MM_CACHESETTINGS_REDISADDRESS`` | +-----------------------------------------------+---------------------------------------------------------------------------+ @@ -4394,7 +4430,7 @@ Redis password +-----------------------------------------------+---------------------------------------------------------------------------+ | The password of the Redis host. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``RedisPassword,`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``RedisPassword,`` | | String input. Leave blank if there is no | - Environment variable: ``MM_CACHESETTINGS_REDISPASSWORD`` | | password. | | +-----------------------------------------------+---------------------------------------------------------------------------+ @@ -4411,7 +4447,7 @@ Redis database +-----------------------------------------------+---------------------------------------------------------------------------+ | The database of the Redis host. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``RedisDB,`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``RedisDB,`` | | Zero-indexed number up to 15. Typically set | - Environment variable: ``MM_CACHESETTINGS_REDISDB`` | | to ``0``. Redis allows a maximum of 16 | | | databases. | | @@ -4431,7 +4467,7 @@ Disable client cache +-----------------------------------------------+--------------------------------------------------------------------------------------+ | Disables the client-side cache of Redis. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``DisableClientCache,`` > ``false`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``DisableClientCache,`` > ``false`` | | - **true**: Client-side cache of Redis is | - Environment variable: ``MM_CACHESETTINGS_REDISDB`` | | disabled. Typically used as a test option, | | | and not in production environments. | | @@ -4451,7 +4487,7 @@ Redis cache prefix +-----------------------------------------------+--------------------------------------------------------------------------------------+ | Adds a prefix to all Redis cache keys. | - System Config path: **N/A** | -| | - ``config.json setting``: ``CacheSettings`` > ``RedisCachePrefix`` | +| | - ``config.json`` setting: ``CacheSettings`` > ``RedisCachePrefix`` | | | - Environment variable: ``MM_CACHESETTINGS_REDISCACHEPREFIX`` | +-----------------------------------------------+--------------------------------------------------------------------------------------+ @@ -4473,7 +4509,7 @@ Enable webhub channel iteration +------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | Control the performance of websocket broadcasting in | - System Config path: **N/A** | -| channels. | - ``config.json setting``: ``ServiceSettings`` > ``EnableWebHubChannelIteration,`` > ``false`` | +| channels. | - ``config.json`` setting: ``ServiceSettings`` > ``EnableWebHubChannelIteration,`` > ``false`` | | | - Environment variable: ``MM_SERVICESETTINGS_ENABLEWEBHUBCHANNELITERATION`` | | When enabled, improves websocket broadcasting | | | performance; however, performance may decrease | | @@ -4499,7 +4535,7 @@ Enable dedicated export filestore target +--------------------------------------------------------------------------------------+-------------------------------------------------------------------------+ | Enables the ability to specify an alternate filestore | - System Config path: **N/A** | -| target for Mattermost | - ``config.json setting``: ``FileSettings`` > ``DedicatedExportStore`` | +| target for Mattermost | - ``config.json`` setting: ``FileSettings`` > ``DedicatedExportStore`` | | :doc:`bulk exports ` and | - Environment variable: ``MM_FILESETTINGS_DEDICATEDEXPORTSTORE`` | | :doc:`compliance exports `. | | | | | diff --git a/source/administration-guide/configure/experimental-configuration-settings.rst b/source/administration-guide/configure/experimental-configuration-settings.rst index 401aadd6f73..994368fb262 100644 --- a/source/administration-guide/configure/experimental-configuration-settings.rst +++ b/source/administration-guide/configure/experimental-configuration-settings.rst @@ -4,10 +4,9 @@ Experimental configuration settings .. include:: ../../_static/badges/allplans-cloud-selfhosted.rst :start-after: :nosearch: -Review and manage the following experimental configuration options in the System Console by selecting the **Product** |product-list| menu, selecting **System Console**, and then selecting **Experimental > Features**: +Review and manage the following :ref:`experimental ` configuration options in the System Console by selecting the **Product** |product-list| menu, selecting **System Console**, and then selecting **Experimental > Features**: - `Experimental System Console configuration settings <#experimental-system-console-configuration-settings>`__ -- `Experimental Bleve configuration settings <#experimental-bleve-configuration-settings>`__ - `Experimental audit logging configuration settings <#experimental-audit-logging-configuration-settings>`__ - `Experimental job configuration settings <#experimental-job-configuration-settings>`__ - `Experimental configuration settings for self-hosted deployments only <#experimental-configuration-settings-for-self-hosted-deployments-only>`__ @@ -641,7 +640,7 @@ This setting controls whether or not the channel link autocomplete triggers imme +-------------------------------------------------------------------------------------------------------------------------------------------+ YouTube referrer policy -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~ This setting resolves issues where YouTube video previews display as unavailable. @@ -655,106 +654,6 @@ This setting resolves issues where YouTube video previews display as unavailable ---- -Experimental Bleve configuration settings ------------------------------------------ - -.. include:: ../../_static/badges/allplans-selfhosted.rst - :start-after: :nosearch: - -Access the following configuration settings in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file as described in the following tables: - -.. config:setting:: enable-bleve-indexing - :displayname: Enable Bleve indexing (Experimental) - :systemconsole: Experimental > Bleve - :configjson: EnableIndexing - :environment: N/A - - - **true**: The indexing of new posts occurs automatically. - - **false**: **(Default)** The indexing of new posts does not occur automatically. - -Enable Bleve indexing -~~~~~~~~~~~~~~~~~~~~~ - -**True**: The indexing of new posts occurs automatically. Search queries will not use bleve search until :ref:`Enable Bleve for search queries ` is enabled. - -**False**: The indexing of new posts does not occur automatically. - -+------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableIndexing": false`` with options ``true`` and ``false``. | -+------------------------------------------------------------------------------------------------------------+ - -.. config:setting:: index-directory - :displayname: Index directory (Experimental) - :systemconsole: Experimental > Bleve - :configjson: IndexDir - :environment: N/A - :description: Directory path to use for storing bleve indexes. - -Index directory -~~~~~~~~~~~~~~~ - -Directory path to use for storing bleve indexes. - -.. tip:: - - The bleve index directory path isn't required to exist within the ``mattermost`` directory. When it exists outside of the ``mattermost`` directory, no additional steps are needed to preserve or reindex these files as part of a Mattermost upgrade. See our :doc:`Upgrading Mattermost Server ` documentation for details. - -+-----------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"IndexDir": ""`` with string input. | -+-----------------------------------------------------------------------------------------------------------+ - -Bulk index now -~~~~~~~~~~~~~~ - -Select **Index Now** to index all users, channels, and posts in the database from oldest to newest. Bleve is available during indexing, but search results may be incomplete until the indexing job is complete. - -Purge indexes -~~~~~~~~~~~~~ - -Select **Purge Index** to remove the contents of the Bleve index directory. Search results may be incomplete until a bulk index of the existing database is rebuilt. - -.. config:setting:: enable-bleve-indexingsearch - :displayname: Enable Bleve for search queries (Experimental) - :systemconsole: Experimental > Bleve - :configjson: EnableSearching - :environment: N/A - - - **true**: Search queries will use bleve search. - - **false**: **(Default)** Search queries will not use bleve search. - -Enable Bleve for search queries -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**True**: Search queries will use bleve search. - -**False**: Search queries will not use bleve search. - -+--------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableSearching": false`` with options ``true`` and ``false``. | -+--------------------------------------------------------------------------------------------------------------+ - -.. config:setting:: enable-bleve-indexingautocomplete - :displayname: Enable Bleve for autocomplete queries (Experimental) - :systemconsole: Experimental > Bleve - :configjson: EnableAutocomplete - :environment: N/A - - - **true**: Autocomplete queries will use bleve search. - - **false**: **(Default)** Autocomplete queries will not use bleve search. - -Enable Bleve for autocomplete queries -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -**True**: Autocomplete queries will use bleve search. - -**False**: Autocomplete queries will not use bleve search. - -+-----------------------------------------------------------------------------------------------------------------+ -| This feature's ``config.json`` setting is ``"EnableAutocomplete": false`` with options ``true`` and ``false``. | -+-----------------------------------------------------------------------------------------------------------------+ - ----- - Experimental audit logging configuration settings -------------------------------------------------------- diff --git a/source/administration-guide/configure/push-notification-server-configuration-settings.rst b/source/administration-guide/configure/push-notification-server-configuration-settings.rst index f119b501ccf..bfd75005706 100644 --- a/source/administration-guide/configure/push-notification-server-configuration-settings.rst +++ b/source/administration-guide/configure/push-notification-server-configuration-settings.rst @@ -19,7 +19,7 @@ Enable push notifications +------------------------------------------------------------------+--------------------------------------------------------------------------------+ | Enable or disable Mattermost push notifications. | - System Config path: **Environment > Push Notification Server** | -| | - ``config.json setting``: ``".EmailSettings.SendPushNotifications": true",`` | +| | - ``config.json`` setting: ``EmailSettings`` > ``SendPushNotifications`` | | - **Do not send push notifications**: Mobile push notifications | - Environment variable: ``MM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS`` | | are disabled. | | | - **Use HPNS connection with uptime SLA to send notifications | | @@ -105,7 +105,7 @@ Push notification server location +-----------------------------------------------------------------+--------------------------------------------------------------------------------+ | The physical location of the Mattermost Hosted Push | - System Config path: **Environment > Push Notification Server** | -| Notification Service (HPNS) server. | - ``config.json setting``: ``".EmailSettings.PushNotificationServer",`` | +| Notification Service (HPNS) server. | - ``config.json`` setting: ``EmailSettings`` > ``PushNotificationServer`` | | | - Environment variable: ``MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER`` | | Select from **US** **(Default)** or **Germany** to | | | automatically populate the **Push Notification Server** | | @@ -122,22 +122,22 @@ Push notification server location Maximum notifications per channel ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+ -| The maximum total number of users in a channel before @all, | - System Config path: **Environment > Push Notification Server** | -| @here, and @channel no longer send desktop, email, or mobile | - ``config.json setting``: ``".TeamSettings.MaxNotificationsPerChannel: 1000",`` | -| push notifications to maximize performance. | - Environment variable: ``MM_EMAILSETTINGS_MAXNOTIFICATIONSPERCHANNEL`` | -| | | -| Numerical input. Default is **1000**. | | -+-----------------------------------------------------------------+--------------------------------------------------------------------------------------+ ++-----------------------------------------------------------------+---------------------------------------------------------------------------------------------+ +| The maximum total number of users in a channel before @all, | - System Config path: **Environment > Push Notification Server** | +| @here, and @channel no longer send desktop, email, or mobile | - ``config.json`` setting: ``TeamSettings`` > ``MaxNotificationsPerChannel`` > ``1000`` | +| push notifications to maximize performance. | - Environment variable: ``MM_EMAILSETTINGS_MAXNOTIFICATIONSPERCHANNEL`` | +| | | +| Numerical input. Default is **1000**. | | ++-----------------------------------------------------------------+---------------------------------------------------------------------------------------------+ .. note:: - We recommend increasing this value a little at a time, monitoring system health by tracking :doc:`performance monitoring metrics `, and only increasing this value if large channels have restricted permissions controlling who can post to the channel, such as a :ref:`read-only channel `. - Reducing this configuration setting value to **10** in larger deployments may improve server performance in the following areas: - - Reduced Load on Notification System: Each notification generates a certain amount of computational and network load. By limiting the number of notifications per channel, the system processes fewer notifications, thereby reducing the load on servers. - - Database Efficiency: Notifications are typically stored in a database. Fewer notifications mean less frequent database writes and reads, leading to quicker database operations and reduced latency. - - Minimized Client Processing: Users' clients (e.g., desktop and mobile apps) have to fetch and process notifications. With fewer notifications, clients can operate more efficiently, reducing memory and CPU usage on users' devices. - - Improved User Experience: An overload of notifications can lead to performance lags and a cluttered experience for users. Limiting the number ensures that users receive only the most important notifications, which can enhance usability and response times. - - Network Bandwidth: High numbers of notifications can consume a lot of bandwidth, particularly if they are being sent to many users. Fewer notifications can lead to lower overall network usage and potentially faster delivery of critical messages. - - Server Load Balancing: By reducing the number of notifications, the workload can be more evenly distributed across the servers, leading to better load balancing and preventing any single server from becoming a bottleneck. + - **Reduced Load on Notification System**: Each notification generates a certain amount of computational and network load. By limiting the number of notifications per channel, the system processes fewer notifications, thereby reducing the load on servers. + - **Database Efficiency**: Notifications are typically stored in a database. Fewer notifications mean less frequent database writes and reads, leading to quicker database operations and reduced latency. + - **Minimized Client Processing**: Users' clients (e.g., desktop and mobile apps) have to fetch and process notifications. With fewer notifications, clients can operate more efficiently, reducing memory and CPU usage on users' devices. + - **Improved User Experience**: An overload of notifications can lead to performance lags and a cluttered experience for users. Limiting the number ensures that users receive only the most important notifications, which can enhance usability and response times. + - **Network Bandwidth**: High numbers of notifications can consume a lot of bandwidth, particularly if they are being sent to many users. Fewer notifications can lead to lower overall network usage and potentially faster delivery of critical messages. + - **Server Load Balancing**: By reducing the number of notifications, the workload can be more evenly distributed across the servers, leading to better load balancing and preventing any single server from becoming a bottleneck. diff --git a/source/administration-guide/configure/rate-limiting-configuration-settings.rst b/source/administration-guide/configure/rate-limiting-configuration-settings.rst index 5ef68aa9b80..7206188787b 100644 --- a/source/administration-guide/configure/rate-limiting-configuration-settings.rst +++ b/source/administration-guide/configure/rate-limiting-configuration-settings.rst @@ -21,15 +21,15 @@ Configure rate limiting settings by going to **System Console > Environment > Ra Enable rate limiting ~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------+--------------------------------------------------------------------------+ -| Enable or disable rate limiting to throttle APIs to a | - System Config path: **Environment > Rate Limiting** | -| specified number of requests per second. | - ``config.json`` setting: ``".RateLimitSettings.Enable: false”,`` | -| | - Environment variable: ``MM_RATELIMITSETTINGS_ENABLE`` | -| - **true**: APIs are throttled at the rate specified by the | | -| `Maximum queries per second <#maximum-queries-per-second>`__ | | -| configuration setting. | | -| - **false**: **(Default)** API access isn’t throttled. | | -+----------------------------------------------------------------+--------------------------------------------------------------------------+ ++----------------------------------------------------------------+----------------------------------------------------------------------------+ +| Enable or disable rate limiting to throttle APIs to a | - System Config path: **Environment > Rate Limiting** | +| specified number of requests per second. | - ``config.json`` setting: ``RateLimitSettings`` > ``Enable`` > ``false`` | +| | - Environment variable: ``MM_RATELIMITSETTINGS_ENABLE`` | +| - **true**: APIs are throttled at the rate specified by the | | +| `Maximum queries per second <#maximum-queries-per-second>`__ | | +| configuration setting. | | +| - **false**: **(Default)** API access isn’t throttled. | | ++----------------------------------------------------------------+----------------------------------------------------------------------------+ .. config:setting:: maximum-queries-per-second :displayname: Maximum queries per second (Rate Limiting) @@ -43,13 +43,12 @@ Maximum queries per second +---------------------------------------------------------------+--------------------------------------------------------------------------+ | Throttle the API at this number of requests per second when | - System Config path: **Environment > Rate Limiting** | -| `rate limiting <#enable-rate-limiting>`__ is enabled. | - ``config.json`` setting: ``".RateLimitSettings.PerSec: 10,`` | +| `rate limiting <#enable-rate-limiting>`__ is enabled. | - ``config.json`` setting: ``RateLimitSettings`` > ``PerSec`` > ``10`` | | | - Environment variable: ``MM_RATELIMITSETTINGS_PERSEC`` | | Numerical input. Default is **10**. | | | | | | Increase this value to accept more requests each second, and | | | decrease this value to allow fewer requests. | | -| | | +---------------------------------------------------------------+--------------------------------------------------------------------------+ .. config:setting:: maximum-burst-size @@ -63,16 +62,16 @@ Maximum queries per second Maximum burst size ~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+--------------------------------------------------------------------------+ -| The maximum number of requests allowed beyond the per second | - System Config path: **Environment > Rate Limiting** | -| query limit when `rate limiting <#enable-rate-limiting>`__ | - ``config.json`` setting: ``".RateLimitSettings.MaxBurst: 100,`` | -| is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_MAXBURST`` | -| | | -| Numerical input. Default is **100**. | | -| | | -| Increase this value to allow for more concurrent requests to be | | -| handled, and decrease this value to limit this capacity. | | -+-----------------------------------------------------------------+--------------------------------------------------------------------------+ ++-----------------------------------------------------------------+-----------------------------------------------------------------------------+ +| The maximum number of requests allowed beyond the per second | - System Config path: **Environment > Rate Limiting** | +| query limit when `rate limiting <#enable-rate-limiting>`__ | - ``config.json`` setting: ``RateLimitSettings`` > ``MaxBurst`` > ``100`` | +| is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_MAXBURST`` | +| | | +| Numerical input. Default is **100**. | | +| | | +| Increase this value to allow for more concurrent requests to be | | +| handled, and decrease this value to limit this capacity. | | ++-----------------------------------------------------------------+-----------------------------------------------------------------------------+ .. config:setting:: memory-store-size :displayname: Memory store size (Rate Limiting) @@ -84,19 +83,19 @@ Maximum burst size Memory store size ~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ -| The maximum number of user sessions connected to the system as | - System Config path: **Environment > Rate Limiting** | -| determined by vary rate limit settings when | - ``config.json`` setting: ``".RateLimitSettings.MemoryStoreSize: 10000,`` | -| `rate limiting <#enable-rate-limiting>`__ is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_MEMORYSTORESIZE`` | -| | | -| Numerical input. Default is **10000**. Typically set to the | | -| number of users in the system. | | -| | | -| We recommend setting this value to the expected number of | | -| users. A higher value may result in underutilized resources, | | -| and a lower value may result in user sessions/tokens expiring | | -| too frequently. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ ++-----------------------------------------------------------------+------------------------------------------------------------------------------------+ +| The maximum number of user sessions connected to the system as | - System Config path: **Environment > Rate Limiting** | +| determined by vary rate limit settings when | - ``config.json`` setting: ``RateLimitSettings`` > ``MemoryStoreSize`` > ``10000`` | +| `rate limiting <#enable-rate-limiting>`__ is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_MEMORYSTORESIZE`` | +| | | +| Numerical input. Default is **10000**. Typically set to the | | +| number of users in the system. | | +| | | +| We recommend setting this value to the expected number of | | +| users. A higher value may result in underutilized resources, | | +| and a lower value may result in user sessions/tokens expiring | | +| too frequently. | | ++-----------------------------------------------------------------+------------------------------------------------------------------------------------+ .. config:setting:: vary-rate-limit-by-remote-address :displayname: Vary rate limit by remote address (Rate Limiting) @@ -111,14 +110,14 @@ Memory store size Vary rate limit by remote address ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ -| Configure Mattermost to rate limit API access by IP address | - System Config path: **Environment > Rate Limiting** | -| when `rate limiting <#enable-rate-limiting>`__ is enabled. | - ``config.json`` setting: ``".RateLimitSettings.VaryByRemoteAddr: true,`` | -| | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYREMOTEADDR`` | -| - **true**: **(Default)** Rate limit API access by IP address. | | -| Recommended when using a proxy. | | -| - **false**: Rate limiting does not vary by IP address. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ ++-----------------------------------------------------------------+------------------------------------------------------------------------------------+ +| Configure Mattermost to rate limit API access by IP address | - System Config path: **Environment > Rate Limiting** | +| when `rate limiting <#enable-rate-limiting>`__ is enabled. | - ``config.json`` setting: ``RateLimitSettings`` > ``VaryByRemoteAddr`` > ``true`` | +| | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYREMOTEADDR`` | +| - **true**: **(Default)** Rate limit API access by IP address. | | +| Recommended when using a proxy. | | +| - **false**: Rate limiting does not vary by IP address. | | ++-----------------------------------------------------------------+------------------------------------------------------------------------------------+ .. config:setting:: vary-rate-limit-by-user :displayname: Vary rate limit by user (Rate Limiting) @@ -132,16 +131,16 @@ Vary rate limit by remote address Vary rate limit by user ~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ -| Configure Mattermost to rate limit API access by authentication | - System Config path: **Environment > Rate Limiting** | -| token or not when `rate limiting <#enable-rate-limiting>`__ | - ``config.json`` setting: ``".RateLimitSettings.VaryByUser: false,`` | -| is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYUSER`` | -| | | -| - **true**: Rate limit API access by user authentication token. | | -| Recommended when using a proxy. | | -| - **false**: **(Default)** Rate limiting does not vary by user | | -| authentication token. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ ++-----------------------------------------------------------------+-------------------------------------------------------------------------------+ +| Configure Mattermost to rate limit API access by authentication | - System Config path: **Environment > Rate Limiting** | +| token or not when `rate limiting <#enable-rate-limiting>`__ | - ``config.json`` setting: ``RateLimitSettings`` > ``VaryByUser`` > ``false`` | +| is enabled. | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYUSER`` | +| | | +| - **true**: Rate limit API access by user authentication token. | | +| Recommended when using a proxy. | | +| - **false**: **(Default)** Rate limiting does not vary by user | | +| authentication token. | | ++-----------------------------------------------------------------+-------------------------------------------------------------------------------+ .. config:setting:: vary-rate-limit-by-http-header :displayname: Vary rate limit by HTTP header (Rate Limiting) @@ -153,11 +152,11 @@ Vary rate limit by user Vary rate limit by HTTP header ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ -| Configure Mattermost to vary rate limiting API access | - System Config path: **Environment > Rate Limiting** | -| by the HTTP header field specified. Recommended when you’re | - ``config.json`` setting: ``".RateLimitSettings.VaryByHeader: "",`` | -| using a proxy. | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYHEADER`` | -| | | -| - When configuring NGINX, set this to **X-Real-IP**. | | -| - When configuring AmazonELB, set this to **X-Forwarded-For**. | | -+-----------------------------------------------------------------+----------------------------------------------------------------------------+ ++-----------------------------------------------------------------+-------------------------------------------------------------------------------+ +| Configure Mattermost to vary rate limiting API access | - System Config path: **Environment > Rate Limiting** | +| by the HTTP header field specified. Recommended when you’re | - ``config.json`` setting: ``RateLimitSettings`` > ``VaryByHeader`` > ``""`` | +| using a proxy. | - Environment variable: ``MM_RATELIMITSETTINGS_VARYBYHEADER`` | +| | | +| - When configuring NGINX, set this to **X-Real-IP**. | | +| - When configuring AmazonELB, set this to **X-Forwarded-For**. | | ++-----------------------------------------------------------------+-------------------------------------------------------------------------------+ diff --git a/source/administration-guide/upgrade/prepare-to-upgrade-mattermost.rst b/source/administration-guide/upgrade/prepare-to-upgrade-mattermost.rst index 7c2baab09ae..fe0bbf53189 100644 --- a/source/administration-guide/upgrade/prepare-to-upgrade-mattermost.rst +++ b/source/administration-guide/upgrade/prepare-to-upgrade-mattermost.rst @@ -58,8 +58,7 @@ We strongly recommend that you: - Upgrade your instance of Mattermost to the latest :doc:`Extended Support Release (ESR) ` first before attempting to run the Mattermost v6.0 upgrade. .. important:: - - Support for Mattermost Server v9.11 :doc:`Extended Support Release ` is coming to the end of its life cycle on May 15, 2025. Upgrading to Mattermost Server v10.5 Extended Support Release or later is recommended. Upgrading from a previous Extended Support Release to the latest Extended Support Release is supported. Review the :doc:`important-upgrade-notes` for all intermediate versions in between to ensure you’re aware of the possible migrations that could affect your upgrade. + Support for Mattermost Server v10.5 :doc:`Extended Support Release ` is coming to the end of its life cycle on November 15, 2025. Upgrading to Mattermost Server v10.11 Extended Support Release or later is required. Upgrading from the previous Extended Support Release to the latest Extended Support Release is supported. Review the :doc:`important-upgrade-notes` for all intermediate versions in between to ensure you’re aware of the possible migrations that could affect your upgrade. v6.0 database schema migrations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/administration-guide/upgrade/upgrading-mattermost-server.rst b/source/administration-guide/upgrade/upgrading-mattermost-server.rst index 64019eae46d..b9c4b71b41e 100644 --- a/source/administration-guide/upgrade/upgrading-mattermost-server.rst +++ b/source/administration-guide/upgrade/upgrading-mattermost-server.rst @@ -168,7 +168,7 @@ Upgrade Mattermost Server - You can either move the bleve index directory out from the ``mattermost`` directory before upgrading or, following an upgrade, you can copy the contents of the bleve index directory from the ``backup`` directory. - You can then store that directory or re-index as preferred. - - The bleve indexes can be migrated without reindexing between Mattermost versions. See our :ref:`Configuration Settings ` documentation for details on configuring the bleve index directory. + - The bleve indexes can be migrated without reindexing between Mattermost versions. See our :ref:`Configuration Settings ` documentation for details on configuring the bleve index directory. Once you've completed all of the steps above (where applicable), you're ready to execute the full command that includes ``xargs rm -r`` to delete the files. Note that the following example includes ``-o -path mattermost/yourFolderHere``: diff --git a/source/end-user-guide/collaborate/access-your-workspace.rst b/source/end-user-guide/collaborate/access-your-workspace.rst index 987c2155409..827ffffc5d4 100644 --- a/source/end-user-guide/collaborate/access-your-workspace.rst +++ b/source/end-user-guide/collaborate/access-your-workspace.rst @@ -1,7 +1,7 @@ Access your workspace ===================== -Access your Mattermost instance with your credentials using a web browser, the desktop app, or the mobile app for iOS or Android. Depending on how Mattermost is configured, you'll log in using your email address, username, or single sign-on (SSO) username, and your password. +Access your Mattermost instance with your credentials using a web browser, the desktop app, or the mobile app for iOS or Android. Depending on how Mattermost is configured, you'll log in using your email address, username, or single sign-on (SSO) username, and your password. See the :doc:`Client availability ` documentation to learn which features are available on different Mattermost clients. .. tip:: @@ -15,6 +15,7 @@ Access your Mattermost instance with your credentials using a web browser, the d Install the desktop app Install the iOS mobile app Install the Android mobile app + Client availability Log out of Mattermost .. tab:: Web/Desktop diff --git a/source/product-overview/client-availability.rst b/source/end-user-guide/collaborate/client-availability.rst similarity index 100% rename from source/product-overview/client-availability.rst rename to source/end-user-guide/collaborate/client-availability.rst diff --git a/source/product-overview/common-esr-support-upgrade.md b/source/product-overview/common-esr-support-upgrade.md index 8115e9a04c8..8bae1008636 100644 --- a/source/product-overview/common-esr-support-upgrade.md +++ b/source/product-overview/common-esr-support-upgrade.md @@ -1,6 +1,6 @@ - Support for Mattermost Server v10.5 [Extended Support Release](https://docs.mattermost.com/product-overview/release-policy.html#extended-support-releases) is coming to the end of its life cycle on November 15, 2025. Upgrading to Mattermost Server v10.11 or later is recommended. -- Upgrading from ESR-to-ESR (``major`` -> ``major_next``) is fully supported and tested. However, upgrading from ESR-to-ESR (``major`` to ``major+2``) is supported, but not tested. If you plan to upgrade across multiple releases, we strongly recommend upgrading from an ESR to another ESR. For example, if you're upgrading from the v8.1 ESR, upgrade to the [v9.5 ESR](https://docs.mattermost.com/about/mattermost-v9-changelog.html#release-v9-5-extended-support-release) or the [v9.11 ESR](https://docs.mattermost.com/about/mattermost-v9-changelog.html#release-v9-11-extended-support-release). +- Upgrading from one Extended Support Release (ESR) to the next ESR (``major`` -> ``major_next``) is fully supported and tested. However, upgrading across multiple ESR versions (``major`` to ``major+2``) is supported, but not tested. If you plan to skip versions, we strongly recommend upgrading only between ESR releases. For example, if you're upgrading from v8.1 ESR, upgrade to the v9.5 ESR or the v9.11 ESR before attempting to upgrade to the [v10.5 ESR](https://docs.mattermost.com/product-overview/mattermost-v10-changelog.html#release-v10-5-extended-support-release) or the [v10.11 ESR](https://docs.mattermost.com/product-overview/mattermost-v10-changelog.html#release-v10-11-extended-support-release). - See the [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html) documentation for details on upgrading to a newer release. - See the [changelog in progress](https://bit.ly/2nK3cVf) for details about the upcoming release. diff --git a/source/product-overview/deprecated-features.rst b/source/product-overview/deprecated-features.rst index 921987c482c..ce7453088a1 100644 --- a/source/product-overview/deprecated-features.rst +++ b/source/product-overview/deprecated-features.rst @@ -6,6 +6,11 @@ This page describes features that are removed from support for Mattermost, or wi Removed features in upcoming versions ------------------------------------- +Mattermost Server v11.1.0 (November 2025) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- The version of React used by the Mattermost web app will be updated from React 17 to React 18. See more details in `this forum post `__. + Mattermost Server v11.0.0 (October 2025) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -17,7 +22,6 @@ Mattermost Server v11.0.0 (October 2025) - The ``ExperimentalStrictCSRFEnforcement`` setting will be renamed to ``StrictCSRFEnforcement`` and the default value will be changed to ``true`` for new installations. See more details in `this forum post `__. - The ``registerPostDropdownMenuComponent`` hook in the web app’s plugin API will be removed in favour of ``registerPostDropdownMenuAction``. See more details in `this forum post `__. - The web app will no longer expose the `Styled Components `__ dependency for use by web app plugins. See more details in `this forum post `__. -- The version of React used by the Mattermost web app will be updated from React 17 to React 18. See more details in `this forum post `__. - Omnibus support will be deprecated. The last ``mattermost-omnibus`` release will be v10.12. See more details in `this forum post `__. - Deprecated ``include_removed_members`` option in ``api/v4/ldap/sync`` will be removed. Admins can use the LDAP setting ``ReAddRemovedMembers``. - All telemetry support will be removed from Mattermost. The system will no longer collect or send telemetry data to external services. diff --git a/source/product-overview/faq-business.rst b/source/product-overview/faq-business.rst deleted file mode 100644 index e5d1ae2314d..00000000000 --- a/source/product-overview/faq-business.rst +++ /dev/null @@ -1,82 +0,0 @@ -Business -========= - -How do I fork Mattermost? -------------------------- - -If you wish to create a forked version of the Mattermost source code, you must comply with the applicable licenses under which the source code is made available. Historically, this was made clear via this link: https://docs.mattermost.com/about/faq-business.html#copyright-and-licensing-of-mattermost-open-source-code. - -For example, the Mattermost server source code is and always has been made available under the AGPLv2 license. Therefore, all third-party open source forks of the Mattermost server source code must comply with the AGPLv2 license in both source code and compiled versions. If you encounter a third-party fork of the publicly available source code of Mattermost server that claims to be licensed under an alternate license, it is incorrect. - -For clarity, this license information regarding forking the source specifically refers to the use (and compilation) of the Mattermost source code by third parties. Third parties are obligated to comply with the open source licenses referenced above in connection with their derivative works. Compiled versions and derivative works of Mattermost prepared by third parties may not be made available under any license other than those under which the applicable source code is made available. - -In contrast, Mattermost, as the copyright holder to the collection of the Mattermost source code, has exercised its exclusive right to make compiled versions of the Mattermost source code available under various other licenses (such as the MIT license and the Mattermost Commercial Enterprise License, as more specifically made clear in the table here: https://docs.mattermost.com/about/faq-license.html). - -How can I create an open source derivative work of Mattermost? --------------------------------------------------------------- - -If you're looking to customize the look and feel of Mattermost, see `documentation on customization `_. For advanced customization, the system's user experience is available in different repositories for web, mobile apps, and desktop apps and custom experiences can be developed and integrated with either Mattermost Team Edition or Mattermost Enterprise Edition via the system APIs and drivers. - -If, instead of using Mattermost Team Edition or Mattermost Enterprise Edition, you choose to compile your own version of the system using the open source code from ``/mattermost``, there are a number of factors to consider: - -Security -~~~~~~~~ - -- If you run a fork of the Mattermost server, we highly recommend you only deploy the system securely behind a firewall and to pay close attention to `Mattermost security updates `_. Mattermost Team Edition and Mattermost Enterprise Edition release security update patches when reports of new attacks are received and verified. Mattermost waits until 14 days after a security patch is released before publicly detailing its nature so that users and customers can upgrade before the security vulnerability is widely known. A malicious user can potentially make use of Mattermost security disclosures to exploit a fork of Mattermost if the security upgrade is not promptly incorporated into the forked version. - -Rebranding -~~~~~~~~~~ - -- When you create a derivative version of Mattermost and share it with others as a product, you need to replace the Mattermost name and logo from the system, among other requirements, per the `Mattermost trademark policy `_. -- You can rebrand your system using :doc:`custom branding tools `. -- For advanced whitelabelling, and to whitelabel in Team Edition under MIT license without Enterprise Edition branding tools, you can manually update files on the Mattermost server `per product documentation. `_ This can also be done without forking. - -Copyright and Licensing of ``/mattermost`` open source code -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -- Compiling and distributing your own version of the open source Mattermost ``/mattermost`` repo requires a) compliance with licenses in the repo, including `NOTICE.txt `_, and b) the compiled version of the ``/mattermost`` source code should have the same open source license as the source code, :doc:`per our licensing policy `. - -Other considerations -~~~~~~~~~~~~~~~~~~~~ - -- Mattermost has a default :ref:`Terms of Use ` agreement for the Terms of Use link at the bottom of login screen that should be incorporated into any additional Terms of Use you may add. - -- The Mattermost copyright notices on the user interface should remain. -- There may be additional legal and regulatory issues to consider and we recommend you employ legal counsel to fully understand what's involved in creating and selling a derivative work. - -Will Mattermost complete questionnaires requiring confidential data without an NDA? ------------------------------------------------------------------------------------ - -No, Mattermost will not complete questionnaires requiring confidential data without a non-disclosure agreement. - -Why does Mattermost have a discount for certain kinds of non-profits but not for others? ----------------------------------------------------------------------------------------- - -While we welcome anyone to use the open source version of Mattermost Team Edition free of charge, Mattermost, Inc., like any software company, has specific discounting programs for its commercial Mattermost Enterprise Edition based on business objectives. Objectives of the discounting programs include the suitability of potential case studies, references, word-of-mouth promotion and public promotion of solutions, among many other factors. - -See our :doc:`non-profit subscriptions ` documentation for details. - -Can I create a derivative work of the Mattermost /mattermost repository that is not open source? -------------------------------------------------------------------------------------------------------- - -The Mattermost open source project was created by `a group of developers who had their data paywalled by a proprietary online messaging service `_ and felt it was unfair. - -Because of this, the Mattermost /mattermost repository uses an open source license that requires derivative works to use the same open source license. This prevents the creation of derivative works that are not open source, and the situation where end users would not have access to the source code of the systems they use, and hence be at risk of "lock in". - -For companies purchasing Enterprise Edition subscriptions for use by internal staff, who need to modify /mattermost, and who also have legal departments that won't allow their staff to work under an open source software license, a special "Advanced Licensing Option" can be purchased to modify ``/mattermost`` for internal use under a commercial software license. This option is not available for companies that would offer a modified, non-open source version of Mattermost to external parties. - -Will Mattermost, Inc. offer the ability to resell Mattermost software without a reseller agreement? ----------------------------------------------------------------------------------------------------- - -No. - -If there is a case where the reseller agreement is under review and a customer urgently needs an order, Mattermost may, with internal approvals, accept a reseller purchase order with the following language: - -"Any statements, clauses, or conditions included on or referenced by buyer's purchase order forms, which forms modify, add to, or are inconsistent with Mattermost’s standard terms and conditions are expressly rejected. Such orders will only be accepted by Mattermost upon the condition and with the express understanding that despite any such statements, clauses, or conditions contained in any order forms of the buyer are void and have no effect. - -EXCEPT AS OTHERWISE EXPRESSLY AGREED BY THE PARTIES IN WRITING, MATTERMOST MAKES NO WARRANTIES OR REPRESENTATIONS WITH RESPECT TO ANY MATTERMOST PRODUCTS, DOCUMENTATION OR SUPPORT, AND HEREBY DISCLAIMS ALL OTHER EXPRESS AND ALL IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT." - -Does Mattermost answer questions about open source licenses authored by other organizations? ---------------------------------------------------------------------------------------------- - -No, if you have questions about an open source license, please consult the original author, or FAQs they offer. diff --git a/source/product-overview/faq-general.rst b/source/product-overview/faq-general.rst index a785178ff61..b33cfd83366 100644 --- a/source/product-overview/faq-general.rst +++ b/source/product-overview/faq-general.rst @@ -46,3 +46,12 @@ This includes: - We are not permitted to provide our software, including any updates, upgrades or cloud-hosted versions to your organization. We must ask that you do not use any software or online services provided by Mattermost, Inc., including any versions that have been provided online to the general public. We deeply apologize for the inconvenience. We must abide by United States laws. We hope after sanctions are lifted that we can support your interest once again. Please reach out to compliance@mattermost.com for any questions around current export limitations. + +How do I report illicit use of Mattermost software? +--------------------------------------------------- + +Illicit use of Mattermost software to harm others, infringe on their rights, break laws or policies is explicitly against our `Terms of Use `__. + +If the illicit use is happening on a web address ending in ``“mattermost.com”``, it means the suspected perpetrators are using Mattermost software controlled by our company, Mattermost, Inc. In this case, please get in touch with us at ``support@mattermost.com`` to report the issue for us to investigate. + +If the illicit use is happening on a different web address, then it means the suspected perpetrators may be using Mattermost software controlled by a person or company other than Mattermost, Inc. In this case, you need to contact the person or company who controls the web address by using a lookup service such as https://www.whois.com/ to find the contact email to report abuse. You can use a link to this FAQ as a reference to our `Terms of Use `__ policy for Mattermost software. diff --git a/source/product-overview/faq-illicit-use.rst b/source/product-overview/faq-illicit-use.rst deleted file mode 100644 index 7bc412b726f..00000000000 --- a/source/product-overview/faq-illicit-use.rst +++ /dev/null @@ -1,11 +0,0 @@ -Illicit Use -============ - -How do I report illicit use of Mattermost software? ---------------------------------------------------- - -Illicit use of Mattermost software to harm others, infringe on their rights, break laws or policies is explicitly against our `Terms of Use `__. - -If the illicit use is happening on a web address ending in ``“mattermost.com”``, it means the suspected perpetrators are using Mattermost software controlled by our company, Mattermost, Inc. In this case, please get in touch with us at ``support@mattermost.com`` to report the issue for us to investigate. - -If the illicit use is happening on a different web address, then it means the suspected perpetrators may be using Mattermost software controlled by a person or company other than Mattermost, Inc. In this case, you need to contact the person or company who controls the web address by using a lookup service such as https://www.whois.com/ to find the contact email to report abuse. You can use a link to this FAQ as a reference to our `Terms of Use `__ policy for Mattermost software. diff --git a/source/product-overview/faq-license.rst b/source/product-overview/faq-license.rst index 5fbdb05e2e2..3cc3023045c 100644 --- a/source/product-overview/faq-license.rst +++ b/source/product-overview/faq-license.rst @@ -1,13 +1,16 @@ -Open-source licensing +Business & Licensing ====================== -Terms of use and privacy policy -------------------------------- +.. toctree:: + :maxdepth: 1 + :hidden: + + Source Available License What are Mattermost's policies around licensing, terms of use, and privacy? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +---------------------------------------------------------------------------- -The following outlines the licensing, terms of use and privacy policies across Mattermost software and services. +The following outlines the licensing, terms of use and privacy policies across Mattermost software and services. See the :doc:`source available license ` documentation to learn what the Mattermost source available license offers. Mattermost Software ~~~~~~~~~~~~~~~~~~~ @@ -87,216 +90,73 @@ Working for Mattermost | Mattermost Consulting | `Mattermost Consulting Terms `_ | +-----------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------+ -Source available licensing --------------------------- - -What is the Mattermost Source Available License? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -A source available license gives access to source code, but places restrictions on its use. The Mattermost Source Available License allows free-of-charge and unrestricted use of the source code in development and testing environments, but requires a valid Mattermost Enterprise Edition License in a production environment. - -How can I identify code licensed as source available? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -When the Mattermost Source Available ``LICENSE`` file appears at the root of a repository, the restrictions apply to all source code within the repository. A note in the ``README.md`` often identifies the use of this license and links to this FAQ. - -When the Mattermost Source Available ``LICENSE`` file appears in a specific directory, the restrictions apply to all source code within that directory. This directory is often called "enterprise". For additional clarity, an additional ``LICENSE.enterprise`` file may appear in the root directory, symlinked to the ``enterprise/LICENSE`` file. - -In all cases, any third party components remain licensed under their original license. - -An example directory layout, using an Enterprise license, is shown below: - -.. image:: ../images/source-available-license.png - :alt: An example directory layout shows how Enterprise subscription plan restrictions apply to Mattermost source code based on where the Mattermost Source Available license file appears in the Mattermost deployment directory. - -Why are you changing the licensing model? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Our plugin framework delivers substantial value to our enterprise customers but requires significant development and support resources. This change to the licensing model allows us to continue developing open source features while selectively charging for features. - -How are repositories changing? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -As we add enterprise-only functionality, we will update the license on affected Mattermost-authored plugin repositories. The intent is to work alongside the existing, open source functionality in our plugins while reserving certain enterprise functionality to customers who pay us for enterprise licenses. - -Will the repositories be public? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Yes, existing repositories will stay public. We are now also able to make public several enterprise-only plugins under the Mattermost Source Available License previously developed in private. - -Can I still contribute? -~~~~~~~~~~~~~~~~~~~~~~~ - -Yes, we continue to welcome all contributions. Mattermost may select some contributions as enterprise features and license them under the Mattermost Source Available License. We will aim to communicate such decisions as early as possible in the contribution process. - -As with all Mattermost repositories, you will still need to sign the `Mattermost CLA `_. We will not accept contributions without signing the Mattermost CLA. - -Do I need to re-sign the `Mattermost CLA `_? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -No, if you have already signed the `Mattermost CLA `_, you do not need to sign it again. - -Can I compile your plugins by myself? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Yes. If you have a Mattermost Enterprise Edition license, you are free to compile and use a plugin under the Mattermost Source Available License. Furthermore, if you are developing against or testing with such a plugin, you are free to compile and test a plugin even without a Mattermost Enterprise Edition license. Without an Enterprise Edition license, source available plugins may have reduced functionality or refuse to start altogether. Request a `trial license `_ if your testing requires access to enterprise functionality. - -Several of our customers value complete access to our source code and compile our plugins from source before deploying to their production servers. By adopting the Mattermost Source Available License, we can develop enterprise-only features in public without impacting this workflow. - -Will you distribute open source plugin binaries without any licensing restrictions? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -At this time, we have no plans to distribute more than one version of each of our plugins. Without a Mattermost Enterprise Edition License, plugins may have reduced functionality or refuse to start altogether. - -Can I continue to use the existing open source repositories without restriction? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Yes, the Mattermost Source Available License will only apply from the date it is added and to the versions in which it is included. - -Do I need to use the Mattermost Source Available License for plugins I create? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -You are free to license your own code as you see fit. We will not apply the Mattermost Source Available License either to the `starter-template `_ or `demo `_ plugins, leaving them under a permissive open source license to give you the freedom to develop your own plugins. - -Can I publish my own plugin and rely on enterprise specific functionality? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -As before, you are free to license your own code as you see fit. Note that some server functionality is only enabled with a Mattermost Enterprise license regardless of how you license your plugin. - -Can’t someone compile out any license restrictions? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -We trust our community to honor the Mattermost Source Available License and work alongside us to develop features across our free and paid offerings. Our Support team does not provide support to unlicensed, enterprise-only functionality. - -If I make my own plugin using your source available code, can I remove the license restriction? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -No, the Mattermost Source Available License continues to apply to modifications. - -Will you pursue legal action if this license is violated? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Yes, if necessary. But we would always rather collaborate, so if you need to negotiate a different license, please ask us. - -Is this a legal document? -~~~~~~~~~~~~~~~~~~~~~~~~~ - -No. This FAQ is informational only. The Mattermost Source Available License stands on its own, and this FAQ does not affect its meaning. - -What is the full text of the Mattermost Source Available License? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -"The Mattermost Source Available License (the “Source Available License”) -(c) Mattermost, Inc. 2015-present. - -With regard to the Mattermost Software: - -This software and associated documentation files (the "Software") may only be -used in production, if you (and any entity that you represent) have agreed to, -and are in compliance with all of the following: (a) the Mattermost Terms of Use, -available at https://mattermost.com/terms-of-use/ (the "TOU"), (b) and the Mattermost -Software License Agreement, available at https://mattermost.com/enterprise-edition-terms/ -(the “SLA”) or other licensing agreement governing your use of the Software, as agreed -by you and Mattermost, and otherwise have a valid Mattermost Enterprise for the correct -number of Registered Authorized Users the Software. Subject to the foregoing, you are free -to modify this Software and publish patches to the Software. You agree that -Mattermost and/or its licensors (as applicable) retain all right, title and -interest in and to all such modifications and/or patches, and all such -modifications and/or patches may only be used, copied, modified, displayed, -distributed, or otherwise exploited with a valid license or Subscription for the correct number of -Registered Authorized Users of the Software. Notwithstanding -the foregoing, you may copy and modify the Software for development and testing -purposes, without requiring a valid license or Subscription. You agree that Mattermost and/or -its licensors (as applicable) retain all right, title and interest in and to -all such modifications. You are not granted any other rights beyond what is -expressly stated herein. Subject to the foregoing, it is forbidden to copy, -merge, publish, distribute, sublicense, and/or sell the Software. - -The full text of this Source Available License shall be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - -For all third party components incorporated into the Mattermost Software, those -components are licensed under the original license provided by the owner of the -applicable component." - -Open source derivative work of Mattermost ------------------------------------------ - How do I fork Mattermost? ------------------------- -If you wish to create a forked version of the Mattermost source code, you must comply with the applicable licenses under which the source code is made available. Historically, this was made clear via this link: https://docs.mattermost.com/about/faq-business.html#copyright-and-licensing-of-mattermost-open-source-code. - +If you wish to create a forked version of the Mattermost source code, you must comply with the applicable licenses under which the source code is made available. + For example, the Mattermost server source code is and always has been made available under the AGPLv2 license. Therefore, all third-party open source forks of the Mattermost server source code must comply with the AGPLv2 license in both source code and compiled versions. If you encounter a third-party fork of the publicly available source code of Mattermost server that claims to be licensed under an alternate license, it is incorrect. For clarity, this license information regarding forking the source specifically refers to the use (and compilation) of the Mattermost source code by third parties. Third parties are obligated to comply with the open source licenses referenced above in connection with their derivative works. Compiled versions and derivative works of Mattermost prepared by third parties may not be made available under any license other than those under which the applicable source code is made available. -In contrast, Mattermost, as the copyright holder to the collection of the Mattermost source code, has exercised its exclusive right to make compiled versions of the Mattermost source code available under various other licenses (such as the MIT license and the Mattermost Commercial Enterprise License, as more specifically made clear in the table here: https://docs.mattermost.com/about/faq-enterprise.html#what-are-mattermost-s-policies-around-licensing-terms-of-use-and-privacy). +In contrast, Mattermost, as the copyright holder to the collection of the Mattermost source code, has exercised its exclusive right to make compiled versions of the Mattermost source code available under various other licenses (such as the MIT license and the Mattermost Commercial Enterprise License, as more specifically made clear in the table here: https://docs.mattermost.com/about/faq-license.html). How can I create an open source derivative work of Mattermost? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-------------------------------------------------------------- -If you're looking to customize the look and feel of Mattermost, see `documentation on customization `_. For advanced customization, the system's user experience is available in different repositories for web, mobile apps, and desktop apps and custom experiences can be developed and integrated with either Mattermost Team Edition or Mattermost Enterprise Edition via the system APIs and drivers. +If you're looking to customize the look and feel of Mattermost, see the :doc:`customization ` documentation. For advanced customization, the system's user experience is available in different repositories for web, mobile apps, and desktop apps and custom experiences can be developed and integrated via the system APIs and custom plugins. If, instead of using Mattermost Team Edition or Mattermost Enterprise Edition, you choose to compile your own version of the system using the open source code from ``/mattermost``, there are a number of factors to consider: Security -^^^^^^^^ +~~~~~~~~ -- If you run a fork of the Mattermost server, we highly recommend you only deploy the system securely behind a firewall and to pay close attention to `Mattermost security updates `_. Mattermost Team Edition and Mattermost Enterprise Edition release security update patches when reports of new attacks are received and verified. Mattermost waits until 14 days after a security patch is released before publicly detailing its nature so that users and customers can upgrade before the security vulnerability is widely known. A malicious user can potentially make use of Mattermost security disclosures to exploit a fork of Mattermost if the security upgrade is not promptly incorporated into the forked version. +- If you run a fork of the Mattermost server, we highly recommend you only deploy the system securely behind a firewall and to pay close attention to `Mattermost security updates `_. Mattermost Team Edition and Mattermost Enterprise Edition release security update patches when reports of new attacks are received and verified. Mattermost waits until 30 days after a security patch is released before publicly detailing its nature so that users and customers can upgrade before the security vulnerability is widely known. A malicious user can potentially make use of Mattermost security disclosures to exploit a fork of Mattermost if the security upgrade is not promptly incorporated into the forked version. Rebranding -^^^^^^^^^^ +~~~~~~~~~~ - When you create a derivative version of Mattermost and share it with others as a product, you need to replace the Mattermost name and logo from the system, among other requirements, per the `Mattermost trademark policy `_. -- You can rebrand your system using convenience tools for :doc:`custom branding `. -- For advanced whitelabelling, and to whitelabel in Team Edition under MIT license without Enterprise Edition branding tools, you can manually update files on the Mattermost server `per product documentation. `_ This can also be done without forking. +- You can rebrand your system using :doc:`custom branding tools `. +- For advanced whitelabelling, you can manually update files on the Mattermost server `per product documentation. `_ This can also be done without forking. Copyright and Licensing of ``/mattermost`` open source code -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- Compiling and distributing your own version of the open source Mattermost ``/mattermost`` repo requires a) compliance with licenses in the repo, including `NOTICE.txt `_, and b) the compiled version of the ``/mattermost`` source code should have the same open source license as the source code, :doc:`per our licensing policy `. +- Compiling and distributing your own version of the open source Mattermost ``/mattermost`` repo requires a) compliance with licenses in the repo, including `NOTICE.txt `_, and b) the compiled version of the ``/mattermost`` source code should have the same open source license as the source code, :doc:`per our licensing policy `. Other considerations -^^^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~~ - Mattermost has a default :ref:`Terms of Use ` agreement for the Terms of Use link at the bottom of login screen that should be incorporated into any additional Terms of Use you may add. - The Mattermost copyright notices on the user interface should remain. - There may be additional legal and regulatory issues to consider and we recommend you employ legal counsel to fully understand what's involved in creating and selling a derivative work. -Will Mattermost complete questionnaires requiring confidential data without an NDA? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Can I create a derivative work of the Mattermost /mattermost repository that is not open source? +------------------------------------------------------------------------------------------------- -No, Mattermost will not complete questionnaires requiring confidential data without a non-disclosure agreement. You can find `Mattermost's standard mutual non-disclosure agreement online `_. +The Mattermost open source project was created by `a group of developers who had their data paywalled by a proprietary online messaging service `_ and felt it was unfair. -Why does Mattermost have a discount for certain kinds of non-profits but not for others? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Because of this, the Mattermost /mattermost repository uses an open source license that requires derivative works to use the same open source license. This prevents the creation of derivative works that are not open source, and the situation where end users would not have access to the source code of the systems they use, and hence be at risk of "lock in". -While we welcome anyone to use the open source version of Mattermost Team Edition free of charge, Mattermost, Inc., like any software company, has specific discounting programs for its commercial Mattermost Enterprise Edition based on business objectives. Objectives of the discounting programs include the suitability of potential case studies, references, word-of-mouth promotion and public promotion of solutions, among many other factors. +For companies purchasing Enterprise Edition subscriptions for use by internal staff, who need to modify /mattermost, and who also have legal departments that won't allow their staff to work under an open source software license, a special "Advanced Licensing Option" can be purchased to modify /mattermost for internal use under a commercial software license. This option is not available for companies that would offer a modified, non-open source version of Mattermost to external parties. -See our :doc:`non-profit subscriptions ` documentation for details. +Does Mattermost answer questions about open source licenses authored by other organizations? +------------------------------------------------------------------------------------------------ -Can I create a derivative work of the Mattermost /mattermost repository that is not open source? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +No, if you have questions about an open source license, please consult the original author, or FAQs they offer. -The Mattermost open source project was created by `a group of developers who had their data paywalled by a proprietary online messaging service `_ and felt it was unfair. +Why does Mattermost have a discount for certain kinds of non-profits but not for others? +---------------------------------------------------------------------------------------- -Because of this, the Mattermost /mattermost repository uses an open source license that requires derivative works to use the same open source license. This prevents the creation of derivative works that are not open source, and the situation where end users would not have access to the source code of the systems they use, and hence be at risk of "lock in". +While we welcome anyone to use the open source version of Mattermost Team Edition free of charge, Mattermost, Inc., like any software company, has specific discounting programs for its commercial Mattermost Enterprise Edition based on business objectives. Objectives of the discounting programs include the suitability of potential case studies, references, word-of-mouth promotion and public promotion of solutions, among many other factors. -For companies purchasing Enterprise Edition subscriptions for use by internal staff, who need to modify /mattermost, and who also have legal departments that won't allow their staff to work under an open source software license, a special "Advanced Licensing Option" can be purchased to modify /mattermost for internal use under a commercial software license. This option is not available for companies that would offer a modified, non-open source version of Mattermost to external parties. +See our :doc:`non-profit subscriptions ` documentation for details. -Will Mattermost, Inc. offer the ability to resell Mattermost software without a reseller agreement? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Will Mattermost, Inc. offer the ability to resell Mattermost software without a reseller agreement? +-------------------------------------------------------------------------------------------------------- No. If there is a case where the reseller agreement is under review and a customer urgently needs an order, Mattermost may, with internal approvals, accept a reseller purchase order with the following language: @@ -305,9 +165,9 @@ If there is a case where the reseller agreement is under review and a customer u EXCEPT AS OTHERWISE EXPRESSLY AGREED BY THE PARTIES IN WRITING, MATTERMOST MAKES NO WARRANTIES OR REPRESENTATIONS WITH RESPECT TO ANY MATTERMOST PRODUCTS, DOCUMENTATION OR SUPPORT, AND HEREBY DISCLAIMS ALL OTHER EXPRESS AND ALL IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT." -Does Mattermost answer questions about open source licenses authored by other organizations? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -No, if you have questions about an open source license, please consult the original author, or FAQs they offer. +Will Mattermost complete questionnaires requiring confidential data without an NDA? +----------------------------------------------------------------------------------- + +No, Mattermost will not complete questionnaires requiring confidential data without a non-disclosure agreement. -`Book a live demo `_ or `talk to a Mattermost expert `_ to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a `1-hour preview `_ for instant access to a live sandbox environment. diff --git a/source/product-overview/frequently-asked-questions.rst b/source/product-overview/frequently-asked-questions.rst index 853e5fa8905..5fceac957ae 100644 --- a/source/product-overview/frequently-asked-questions.rst +++ b/source/product-overview/frequently-asked-questions.rst @@ -8,17 +8,11 @@ Frequently Asked Questions General Enterprise Federal Procurement - License - Mattermost Source Available License - Business - Illicit Use + Business & Licensing The following pages will answer many of your frequently asked questions about Mattermost: * :doc:`General ` - Learn more about Mattermost, its largest deployment, and answers to commonly asked questions. * :doc:`Enterprise ` - Learn about Mattermost Enterprise Edition. * :doc:`Federal Procurement ` - Learn about Mattermost in federal government environments. -* :doc:`License ` - Learn more about Mattermost licenses. -* :doc:`Mattermost source available license ` - Learn what the Mattermost source available license offers. -* :doc:`Business ` - Can you create an open source derivative work of Mattermost? -* :doc:`Illicit use ` - Learn how to report illicit use of Mattermost software. \ No newline at end of file +* :doc:`Business & Licensing ` - Learn more about Mattermost licenses. \ No newline at end of file diff --git a/source/product-overview/mattermost-server-releases.md b/source/product-overview/mattermost-server-releases.md index 8ed16d70b3e..10aef3f8bd7 100644 --- a/source/product-overview/mattermost-server-releases.md +++ b/source/product-overview/mattermost-server-releases.md @@ -16,8 +16,7 @@ ## Frequency Mattermost releases a new server version on the 16th of each month in [binary form](https://docs.mattermost.com/administration-guide/upgrade/upgrading-mattermost-server.html). - See the [v10 changelog](https://docs.mattermost.com/product-overview/mattermost-v10-changelog.html) for details on what's coming and changing in the next major release. -- See the [v9 changelog](https://docs.mattermost.com/product-overview/mattermost-v9-changelog.html) for details on v9.x server releases. -- See the [unsupported Mattermost legacy releases](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html) documentation for details on older, unsupported Mattermost releases. +- See the [unsupported Mattermost legacy releases](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html) documentation for details on older, unsupported Mattermost releases. ## Latest releases @@ -35,16 +34,4 @@ Mattermost releases a new server version on the 16th of each month in [binary fo | v10.2 [Download](https://releases.mattermost.com/10.2.3/mattermost-10.2.3-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2024-11-15 | 2025-02-15 | | v10.1 [Download](https://releases.mattermost.com/10.1.7/mattermost-10.1.7-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2024-10-16 | 2025-01-15 | | v10.0 [Download](https://releases.mattermost.com/10.0.4/mattermost-10.0.4-linux-amd64.tar.gz) \| {ref}`Changelog ` \|
SBOM
| 2024-09-16 | 2024-12-15 | -| v9.11 [Download](https://releases.mattermost.com/9.11.18/mattermost-9.11.18-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-08-16 | 2025-05-15 {ref}`EXTENDED ` | -| v9.10 [Download](https://releases.mattermost.com/9.10.3/mattermost-9.10.3-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-07-16 | 2024-10-15 | -| v9.9 [Download](https://releases.mattermost.com/9.9.3/mattermost-9.9.3-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-06-14 | 2024-09-15 | -| v9.8 [Download](https://releases.mattermost.com/9.8.3/mattermost-9.8.3-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-05-16 | 2024-08-15 | -| v9.7 [Download](https://releases.mattermost.com/9.7.6/mattermost-9.7.6-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-04-16 | 2024-07-15 | -| v9.6 [Download](https://releases.mattermost.com/9.6.3/mattermost-9.6.3-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-03-16 | 2024-06-15 | -| v9.5 [Download](https://releases.mattermost.com/9.5.14/mattermost-9.5.14-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-02-16 | 2024-11-15 {ref}`EXTENDED ` | -| v9.4 [Download](https://releases.mattermost.com/9.4.5/mattermost-9.4.5-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2024-01-16 | 2024-04-15 | -| v9.3 [Download](https://releases.mattermost.com/9.3.3/mattermost-9.3.3-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2023-12-16 | 2024-03-15 | -| v9.2 [Download](https://releases.mattermost.com/9.2.6/mattermost-9.2.6-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2023-11-16 | 2024-02-15 | -| v9.1 [Download](https://releases.mattermost.com/9.1.5/mattermost-9.1.5-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2023-10-16 | 2024-01-15 | -| v9.0 [Download](https://releases.mattermost.com/9.0.5/mattermost-9.0.5-linux-amd64.tar.gz) \| {ref}`Changelog ` | 2023-09-16 | 2023-12-15 | | | | | diff --git a/source/product-overview/mattermost-v9-changelog.md b/source/product-overview/mattermost-v9-changelog.md deleted file mode 100644 index a3605385161..00000000000 --- a/source/product-overview/mattermost-v9-changelog.md +++ /dev/null @@ -1,1468 +0,0 @@ -# v9 Changelog - -```{eval-rst} -.. meta:: - :page_title: Mattermost Server v9 Release Notes -``` - -```{Important} -```{include} common-esr-support-upgrade.md -``` - -(release-v9-11-extended-support-release)= -## Release v9.11 - [Extended Support Release](https://docs.mattermost.com/about/release-policy.html#release-types) - -- **9.11.18, released 2025-07-22** - - Mattermost v9.11.18 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Boards plugin version [v9.1.5](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.5). - - Mattermost v9.11.18 contains no database or functional changes. -- **9.11.17, released 2025-06-18** - - Mattermost v9.11.17 contains high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Boards plugin version [v9.1.3](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.3). - - Pre-packaged Playbooks plugin [v1.41.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.41.1). - - Mattermost v9.11.17 contains no database or functional changes. -- **9.11.16, released 2025-05-21** - - Mattermost v9.11.16 contains a Critical severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release as soon as possible is highly recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.11.16 contains no database or functional changes. -- **9.11.15, released 2025-05-09** - - Mattermost v9.11.15 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Brought back the bug fix for [MM-61361](https://mattermost.atlassian.net/browse/MM-61361), since the performance regression has been fixed by tweaking the offending SQL query. - - Mattermost v9.11.15 contains the following database changes: - - A new index was added to the ``CategoryId`` column in ``SidebarChannels`` table to improve query performance. No database downtime is expected for this upgrade. It takes around 2s to add the index on a table with 1.2M rows for PostgreSQL, and it takes around 5s on MySQL on a table with 300K rows. The migrations are fully backwards-compatible and no table locks or existing operations on the table are impacted by this upgrade. Zero downtime is expected when upgrading to this release. The SQL queries included are ``CREATE INDEX idx_sidebarchannels_categoryid ON SidebarChannels(CategoryId);`` for MYSQL and ``CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_sidebarchannels_categoryid ON sidebarchannels(categoryid);`` for PostgreSQL. -- **9.11.14, released 2025-05-05** - - Mattermost v9.11.14 contains a medium severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Reverted a bug fix for [MM-61361](https://mattermost.atlassian.net/browse/MM-61361) that likely introduced a performance regression. - - Mattermost v9.11.14 contains no database or functional changes. -- **9.11.13, released 2025-04-29** - - Mattermost v9.11.13 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.11.13 contains no database or functional changes. -- **9.11.12, released 2025-04-15** - - Mattermost v9.11.12 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Stopped logging websocket PING events received by the server [MM-63693](https://mattermost.atlassian.net/browse/MM-63693). - - Mattermost v9.11.12 contains no database or functional changes. -- **9.11.11, released 2025-03-24** - - Mattermost v9.11.11 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Playbooks plugin [v1.41.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.41.0). - - Mattermost v9.11.11 contains no database or functional changes. -- **9.11.10, released 2025-03-17** - - Mattermost v9.11.10 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed errors logged by performance telemetry due to certain browser extensions [MM-62371](https://mattermost.atlassian.net/browse/MM-62371). - - Pre-packaged Calls plugin version [v0.29.8](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.8). - - Mattermost v9.11.10 contains no database or functional changes. -- **9.11.9, released 2025-02-19** - - Mattermost v9.11.9 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Boards plugin [v9.1.1](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.1). - - Fixed an issue in Compliance Exports whereby a missing file attachment in S3 could prevent the export run from completing [MM-62527](https://mattermost.atlassian.net/browse/MM-62527). - - Mattermost v9.11.9 contains no database or functional changes. -- **9.11.8, released 2025-01-22** - - Mattermost v9.11.8 contains critical severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Boards plugin [v9.0.5](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.0.5). - - Pre-packaged Channel Export plugin [v1.2.1](https://github.com/mattermost/mattermost-plugin-channel-export/releases/tag/v1.2.1). - - Pre-packaged Calls plugin [v0.29.7](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.7). - - Fixed a panic during LDAP synchronization [MM-61239](https://mattermost.atlassian.net/browse/MM-61239). - - Fixed an issue where the bulk export retention job would accidentally delete non-bulk export files and directories [MM-60888](https://mattermost.atlassian.net/browse/MM-60888). - - Fixed an issue where new messages from new channels wouldn't appear in the sidebar after reconnecting the websocket [MM-61361](https://mattermost.atlassian.net/browse/MM-61361). - - Mattermost v9.11.8 contains no database or functional changes. -- **9.11.7, released 2025-01-15** - - Mattermost v9.11.7 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue with the web app status not being updated correctly for the current user [MM-59952](https://mattermost.atlassian.net/browse/MM-59952). - - Pre-packaged Boards plugin [v9.0.2](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.0.2). - - Fixed an issue with insertion errors to ``LinkMetadata`` table. - - Fixed an issue where the scroll position reset when custom emojis were requested [MM-62102](https://mattermost.atlassian.net/browse/MM-62102). - - Mattermost v9.11.7 contains the following database changes: - - Fixed an issue where Direct and Group Messages with a ``DeleteAt`` flag in the database could cause issues with some APIs. -- **9.11.6, released 2024-12-10** - - Mattermost v9.11.6 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - A 200 response is now returned for HEAD requests to a sub-path rather than responding with a 302. This fixes mobile devices trying to connect to a server hosted on a sub-path [MM-58042](https://mattermost.atlassian.net/browse/MM-58042). - - Pre-packaged Calls plugin [v0.29.6](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.6). - - Fixed an issue with incorrect reporting in the **Server Updates** section in **System Console > Workspace Optimizations** [MM-62030](https://mattermost.atlassian.net/browse/MM-62030). - - Mattermost v9.11.6 contains no database or functional changes. -- **9.11.5, released 2024-11-14** - - Mattermost v9.11.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Calls plugin [v0.29.4](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.4). - - Mattermost v9.11.5 contains no database or functional changes. -- **9.11.4, released 2024-10-28** - - Mattermost v9.11.4 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue where users would not see channels they were added to/messages from those channels in clustered environments [MM-59911](https://mattermost.atlassian.net/browse/MM-59911). - - Mattermost v9.11.4 contains no database or functional changes. -- **9.11.3, released 2024-10-10** - - Mattermost v9.11.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue with YouTube previews no longer being displayed [MM-60351](https://mattermost.atlassian.net/browse/MM-60351). - - Improved the performance of LDAP sync jobs when group-contained teams and channels are used [MM-60253](https://mattermost.atlassian.net/browse/MM-60253). - - Mattermost v9.11.3 contains no database or functional changes. -- **9.11.2, released 2024-09-26** - - Mattermost v9.11.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Added Mattermost user survey plugin to pre-packaged plugins, [v1.1.1](https://github.com/mattermost/mattermost-plugin-user-survey/releases). - - Pre-packaged Calls plugin [v0.29.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.2). - - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). - - Fixed an issue where the **Edit Post Time Limit** button was not being displayed in the System Console ([MM-58529](https://mattermost.atlassian.net/browse/MM-58529), [MM-58824](https://mattermost.atlassian.net/browse/MM-58824)). - - Fixed racy use of session in ``NewWebConn`` [MM-60307](https://mattermost.atlassian.net/browse/MM-60307). - - Mattermost v9.11.2 contains the following functional change: - - Added a configuration setting **NativeAppSettings > MobileExternalBrowser** that tells the Mobile app to perform SSO Authentication using the external default browser [MM-60332](https://mattermost.atlassian.net/browse/MM-60332). -- **9.11.1, released 2024-08-27** - - Mattermost v9.11.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.11.1 contains no database or functional changes. -- **9.11.0, released 2024-08-16** - - Original 9.11.0 release. - -### Important Upgrade Notes - - - Added support for Elasticsearch v8. Also added Beta support for [OpenSearch v1.x and v2.x](https://opensearch.org/). A new config setting ``ElasticsearchSettings.Backend`` has been added to differentiate between Elasticsearch and OpenSearch. The default value is `elasticsearch`, which breaks support for AWS Elasticsearch v7.10.x since the official v8 client only works from Elasticsearch v7.11 and higher versions. See the important note below for details. - - Mattermost supports Elasticsearch v7.17+. However, we recommend upgrading your Elasticsearch v7 instance to v8.x. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for details. - - When using Elasticsearch v8, ensure you set ``action.destructive_requires_name`` to ``false`` in ``elasticsearch.yml`` to allow for wildcard operations to work. - -```{Important} -**AWS Elasticsearch** - -If you're using AWS Elasticsearch, you must: -1. Upgrade to AWS OpenSearch. Refer to the [OpenSearch upgrade](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/version-migration.html) documentation for details. -2. Disable "compatibility mode" in OpenSearch. -3. Upgrade Mattermost server. -4. Update the Mattermost `ElasticsearchSettings.Backend` configuration setting value from `elasticsearch` to `opensearch` manually or using [mmctl](https://docs.mattermost.com/manage/mmctl-command-line-tool.html#mmctl-config-set). This value cannot be changed using the System Console. See the Mattermost [Elasticsearch backend type](https://docs.mattermost.com/configure/environment-configuration-settings.html#elastic-backendtype) documentation for additional details. -5. Restart the Mattermost server. -``` - -### Compatibility - - Updated minimum Edge and Chrome versions to 126+. - - Added Ubuntu Noble support. - -```{Important} -If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/mattermost-v9-11-changelog/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged Calls version [v0.29.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.1). - - Pre-packaged GitHub plugin version [v2.3.0](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.3.0). - - Added user interface improvements to the keyboard shortcuts modal. - - Added a message "Editing this message with an ``@mention`` will not notify the recipient" in the post edit dialog. - - Made the appearance of several tooltips more consistent. - - Updated the help text in the **Direct Messages** modal. - - Emojis are now placed at cursor position while editing messages. - - Made keyboard shortcuts modal content DIV-accessible via the keyboard. - - Added Channel Bookmarks user interface (disabled by default and behind a feature flag). - -#### Administration - - Added a new feature where an admin with user management permission can now edit a user's settings in **System Console > Users**. - - Added download functionality for admins to download server logs from **Server Logs** page in the **System Console**. - - LDAP vendor errors are now included in the Support Packet. - - Added [metadata](https://docs.mattermost.com/manage/admin/generating-support-packet.html#contents-of-a-support-packet) to the Support Packet. - - We are now adding the user's ID and session ID to the audit log's Actor field for the login event, to match what we provide for the logout event. - - Added support for custom status in bulk export/import. - - Marked the ``RemoteTeamId`` field of the ``RemoteCluster`` entity as deprecated. - - Added log ``Name`` and ``DisplayName`` of groups. - - Logged fields of users are now updated. - -#### Performance - - Added platform related information to the notification metrics. - - Added additional information to INP and LCP client metrics. - - Added minor performance improvements to webapp initialization. - -#### mmctl - - Added two new commands to mmctl, ``mmctl job list`` and ``mmctl job update``. - - Panic message is now printed when mmctl panics. - - Setting ``AdvancedLoggingJSON`` via mmctl is now supported. - -### Bug Fixes - - Fixed an issue that displayed a wrong count for custom group members on the notification warning. - - Fixed a panic when the password was too long. - - Fixed an issue where configuration patches through mmctl did not correctly merge plugin configuration values. - - Fixed issues with the OpenID local development. - - Fixed an issue where Latex was not rendered in a code block as code when Latex rendering was disabled. - - Fixed an issue with saving custom roles. - - Fixed an issue with the left-hand side scrollbar auto-hide functionality for Chrome and Safari. - - Fixed Group Message to private channel conversion edge cases. - - Fixed an issue where users with the user management permission were unable to view the list of users in the **System Console > Users** page. - - Fixed more web app performance reports being marked as outdated after a user's computer woke up from sleep. - -### config.json -New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``ServiceSettings`` in ``config.json``: - - Added ``TerminateSessionsOnPasswordChange`` to configure the sessions revocation during password resets. - -#### Changes to the Enterprise plan: - - Under ``ElasticsearchSettings`` in ``config.json``: - - Added ``Backend`` to differentiate between Elasticsearch and OpenSearch. The default value is ``elasticsearch``. - -### API Changes - - Added new API endpoints to manage remote clusters. - - Added two new query parameters to ``GET /api/v4/jobs, job_type`` and status. - - Added a new endpoint ``PATCH /api/v4/jobs/{job_id}/status``. - - Updated ``AddChannelMember`` to accept a list of userIds. - - Added six new permissions to manage the status of particular jobs: - - ``PermissionManagePostBleveIndexesJob`` - - ``PermissionManageDataRetentionJob`` - - ``PermissionManageComplianceExportJob`` - - ``PermissionManageElasticsearchPostIndexingJob`` - - ``PermissionManageElasticsearchPostAggregationJob`` - - ``PermissionManageLdapSyncJob`` - -### Go Version - - v9.11 is built with Go ``v1.21.8``. - -### Open Source Components - - Removed ``stylelint``, and added ``elastic/go-elasticsearch`` to https://github.com/mattermost/mattermost/. - -### Known Issues - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andreabia](https://translate.mattermost.com/user/andreabia), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [ayusht2810](https://github.com/ayusht2810), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [BrandonS09](https://github.com/BrandonS09), [calebroseland](https://github.com/calebroseland), [Camillarhi](https://github.com/Camillarhi), [catalintomai](https://github.com/catalintomai), [Celeo](https://github.com/Celeo), [chessmadridista](https://github.com/chessmadridista), [ckaznable](https://github.com/ckaznable), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danielsischy](https://github.com/danielsischy), [devinbinnie](https://github.com/devinbinnie), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [ewwollesen](https://github.com/ewwollesen), [fmartingr](https://github.com/fmartingr), [frankps](https://translate.mattermost.com/user/frankps), [gabrieljackson](https://github.com/gabrieljackson), [Gesare5](https://github.com/Gesare5), [grinapo](https://github.com/grinapo), [hanzei](https://github.com/hanzei), [harmeet01singh](https://github.com/harmeet01singh), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [imanmagomedov.said](https://translate.mattermost.com/user/imanmagomedov.said), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://translate.mattermost.com/user/kaakaa), [kalil0321](https://github.com/kalil0321), [KellieSue](https://github.com/KellieSue), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthewbirtch](https://github.com/matthewbirtch), [matthew-w](https://translate.mattermost.com/user/matthew-w), [MeHow25](https://github.com/MeHow25), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [Mohamed-sobhi95](https://translate.mattermost.com/user/Mohamed-sobhi95), [mvitale1989](https://github.com/mvitale1989), [natalie-hub](https://github.com/natalie-hub), [nickmisasi](https://github.com/nickmisasi), [ningthoujamSwamikumar](https://github.com/ningthoujamSwamikumar), [Pawel1894](https://github.com/Pawel1894), [phoinixgrr](https://github.com/phoinixgrr), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahimrahman](https://github.com/rahimrahman), [Rajat-Dabade](https://github.com/Rajat-Dabade), [recontech404](https://github.com/recontech404), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [shaon72](https://github.com/shaon72), [Sharuru](https://translate.mattermost.com/user/Sharuru), [shieldsjared](https://github.com/shieldsjared), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [suraj-anthwal](https://github.com/suraj-anthwal), [svelle](https://github.com/svelle), [ThrRip](https://translate.mattermost.com/user/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [vhaska](https://translate.mattermost.com/user/vhaska), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ythosa](https://github.com/ythosa), [zenocode-org](https://translate.mattermost.com/user/zenocode-org), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) - -(release-v9-10-feature-release)= -## Release v9.10 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.10.3, released 2024-09-26** - - Mattermost v9.10.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). - - Mattermost v9.10.3 contains no database or functional changes. -- **9.10.2, released 2024-08-27** - - Mattermost v9.10.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.10.2 contains no database or functional changes. -- **9.10.1, released 2024-07-22** - - Mattermost v9.10.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Mattermost Copilot plugin version [v0.8.3](https://github.com/mattermost/mattermost-plugin-ai/releases/tag/v0.8.3). - - Ensured that the web app only requests notification permissions when needed. Fixed an issue with desktop notifications not being sent on Safari [MM-59416](https://mattermost.atlassian.net/browse/MM-59416). - - Fixed an issue where the app crashed on iOS Safari [MM-59296](https://mattermost.atlassian.net/browse/MM-59296). - - Mattermost v9.10.1 contains no database or functional changes. -- **9.10.0, released 2024-07-16** - - Original 9.10.0 release. - -```{Important} -If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/mattermost-v9-10-changelog/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged GitLab plugin version [v1.9.1](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.9.1). - - Pre-packaged Mattermost Copilot plugin version [v0.8.1](https://github.com/mattermost/mattermost-plugin-ai/releases/tag/v0.8.1). - - Pre-packaged Calls plugin version [v0.28.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.28.2). - - Re-designed the user profile popover and improved its performance. - - Added banner to prompt users to allow notification permissions when opening the app in web browsers. - - Increased the width of the profile picture setting to match other user settings. - - Improved screen reader support for the emoji picker. - - Improved the accessibility of plugin buttons in the channel header. - -#### Administration - - Extended ``PluginSiteStatsHandler`` to support more advanced visualization types. - - Stopped broadcasting ``channel_deleted/channel_restored`` messages from private channels to non-members. - -#### Performance - - Added page load time to client performance metrics. - - Added a metric to track time it takes for the Threads view to load. - - Added support for mobile client metrics. - - Increased the range of LCP metrics that can be measured. - - Added polling of ``getStatusesByIds`` and ``getProfilesByIds`` network calls. The interval of which is configurable with the ``UsersStatusAndProfileFetchingPollIntervalMilliseconds`` configuration variable. - - Added defer loading plugins scripts. - -### Bug Fixes - - Fixed an issue where the ``RefreshPostStats`` job could fail. - - Fixed an issue where attempting to create a team with the URL of an existing team showed the wrong error message. - - Fixed an issue where ``visibilitychange`` JavaScript browser event had not been added for updating the user's current timezone. - - Fixed an issue where the last admin in the system was allowed to be demoted. - - Fixed an issue where banners set by system administrators did not stack below system banners, and appeared underneath them instead. Existing system banners have remained unchanged. - - Fixed an issue with an incorrect wrapping of long words in numbered lists. - - Fixed an incorrect behavior of the image proxy when site URL is changed. - - Fixed an issue where cache invalidation messages for websocket connections were not being sent across the cluster, causing missed websocket events. - - Fixed ``EnableClientMetrics`` setting not being available in the System Console. - -### config.json -New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``ExperimentalSettings`` in ``config.json``: - - Added ``UsersStatusAndProfileFetchingPollIntervalMilliseconds`` to configure the interval of ``getStatusesByIds`` and ``getProfilesByIds`` network calls. - -### API Changes - - Added a new plugin API endpoint ``GetUsersByIds`` to retrieve a list of users by their ids. - -### Go Version - - v9.10 is built with Go ``v1.21.8``. - -### Known Issues - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [abhijit-singh](https://github.com/abhijit-singh), [aeomin](https://translate.mattermost.com/user/aeomin), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [ahmadJT](https://github.com/ahmadJT), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [apshada](https://github.com/apshada), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [BenCookie95](https://github.com/BenCookie95), [BillAnderson304](https://github.com/BillAnderson304), [Boruus](https://translate.mattermost.com/user/Boruus), [BrandonS09](https://github.com/BrandonS09), [bruno-keiko](https://github.com/bruno-keiko), [calebroseland](https://github.com/calebroseland), [Camillarhi](https://github.com/Camillarhi), [catalintomai](https://github.com/catalintomai), [chessmadridista](https://github.com/chessmadridista), [ckaznable](https://github.com/ckaznable), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [DSchalla](https://github.com/DSchalla), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [esarafianou](https://github.com/esarafianou), [EyeCantCU](https://github.com/EyeCantCU), [ezekielchow](https://github.com/ezekielchow), [fmartingr](https://github.com/fmartingr), [frankps](https://translate.mattermost.com/user/frankps), [gabrieljackson](https://github.com/gabrieljackson), [Gesare5](https://github.com/Gesare5), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [homerCOD](https://translate.mattermost.com/user/homerCOD), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JtheBAB](https://github.com/JtheBAB), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [maruTA-bis5](https://translate.mattermost.com/user/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MattSilvaa](https://github.com/MattSilvaa), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [mojahani](https://translate.mattermost.com/user/mojahani), [mvitale1989](https://github.com/mvitale1989), [nbruneau71250](https://github.com/nbruneau71250), [nickmisasi](https://github.com/nickmisasi), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [Rajat-Dabade](https://github.com/Rajat-Dabade), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [wiggin77](https://github.com/wiggin77), [willypuzzle](https://github.com/willypuzzle), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zenocode-org](https://github.com/zenocode-org) - -(release-v9-9-feature-release)= -## Release v9.9 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.9.3, released 2024-08-27** - - Mattermost v9.9.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.9.3 contains no database or functional changes. -- **9.9.2, released 2024-07-22** - - Mattermost v9.9.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.9.2 contains no database or functional changes. -- **9.9.1, released 2024-07-02** - - Mattermost v9.9.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. - - Removed feature flag which prevented enabling ``MetricsSettings.EnableClientMetrics`` [MM-58823](https://mattermost.atlassian.net/browse/MM-58823). - - Added a page load time to the client performance metrics [MM-58359](https://mattermost.atlassian.net/browse/MM-58359). - - Fixed web app performance reports being marked as outdated after the user's computer woke up from sleep [MM-58772](https://mattermost.atlassian.net/browse/MM-58772). - - Increased range of LCP metrics and Load Event End metrics that can be measured [MM-59033](https://mattermost.atlassian.net/browse/MM-59033). - - Fixed an error caused by performance telemetry when using Firefox with ``beacon.enabled`` set to ``false`` [MM-58777](https://mattermost.atlassian.net/browse/MM-58777). - - Mattermost v9.9.1 contains no database or functional changes. -- **9.9.0, released 2024-06-14** - - Original 9.9.0 release. - -### Compatibility - - Updated minimum macOS version to 12+ and minimum Safari version to 17+. - -```{Important} -If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/video-mattermost-v9-9-changelog/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged Calls plugin version [v0.27.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.27.0). - - Pre-packaged Jira plugin version [v4.1.1](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.1). - - Pre-packaged GitLab plugin version [v1.9.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.9.0). - - Pre-packaged Zoom plugin version [v1.8.0](https://github.com/mattermost/mattermost-plugin-zoom/releases/tag/v1.8.0). - - Updated the default themes to reduce eye strain (particularly on the dark themes). - - Added UI improvements to the core layout. - - Improved error text when inviting guests to a team. - - Increased the visibility Mattermost edition in-product when using the free edition. - - Added an **Unsupported** label to the Team/E0 editions in the product menu. - - Improved the look and feel of the **True/False** selector in the System Console. - - Updated the channel header layout to reduce height and simplify the UI. - -#### Administration - - Removed safety limit error message in compiled Team Edition and unlicensed Enterprise Edition deployments when message count exceeds 5 million posts. - - Adjusted safety limit error message to show when users exceed 5,000 in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable. ``ERROR_SAFE_LIMITS_EXCEEDED``. - - Improved the message length validation step in the ``mmctl import validate`` command. - - Added shell completion to ``mmctl user active`` and ``mmctl user deactivate``. - - Removed support for self-serve purchases of Mattermost Subscriptions in various flows, throughout Cloud and Self Hosted environments. - - Removed support for self-serve true up review submission in the **System Console**. - - Added streaming support to the file attachments import process. - - Added LDAP job command to mmctl. - - Made LDAP sync jobs more resilient against errors. - - Removed the ``PostPriority`` feature flag. - - Improved the error message of ``NotFound`` errors in store. - - Added support for post priority to incoming webhooks and outgoing webhook responses. - - Added a validation that the payload for an open Interactive Dialog request is valid according to the rules at https://developers.mattermost.com/integrate/plugins/interactive-dialogs/. - - Unblocked notification calls by using usernames instead of full names in case of a missing user profile. - - Increased the maximum password limit from 64 to 72 characters (``PasswordMaximumLength``). - -#### Performance - - Added the initial version of new client-side performance metrics to track web app performance and can be monitored in new [Grafana board](https://grafana.com/grafana/dashboards/21460-web-app-metrics/). - - Added a metric to track time it takes for the right-hand side to load. - - Improved js memory profile of status’s reducers. - - When a user receives a new post that is part of a thread from a root post in a channel they are not currently viewing, we do not fetch the complete root post and its thread posts immediately. However, we still store the newly received post. The root post and its thread posts are only fetched when the user navigates to that specific channel. - -### Bug Fixes - - Fixed an issue with ``aria-label`` for sidebar channel buttons. - - Fixed an issue where any remaining unclosed database RPC connections were not closed after a plugin shut down. - - Fixed an issue where the right-hand side stole the focus when coming back from threads or drafts. - - Fixed an issue where a proxy link was copied instead of the original image link when copying a post that included an embedded image. - - Fixed an issue where the user status would incorrectly get stuck to online after the user closed the tab. - - Fixed an issue where on some servers the user could not see the member count in the **Browse Channels** dialog. - - Fixed an issue with inline display of WebP images accessed through the public-link feature. - - Fixed an issue where it wasn’t clear that the ``mmctl import process --bypass-upload --local`` doesn't work if the server is in High Availability. - - Fixed an issue where the user status would incorrectly be set to offline without checking for connections in other nodes in an High Availability cluster. - - Fixed a longstanding issue where the @mention auto-complete could erase post text following the auto-completed @mention. - - Fixed an issue with status management to avoid missing notifications. - - Fixed an issue where audit events were not added for OAuth logins. - - Fixed an issue with the error check in the message export process. - - Fixed an issue where pasting in the post text box could not always paste without formatting. - - Fixed some plugin settings with defaults not changing value. - -### config.json -New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``ExperimentalSettings`` in ``config.json``: - - Added ``DisableWakeUpReconnectHandler`` to disable the wake up on reconnect handler. - - Removed ``SelfHostedPurchase`` setting. - -#### Changes to the Enterprise plan: - - Under ``MetricsSettings`` in ``config.json``: - - Added a feature flag and a setting ``EnableClientMetrics`` to control new client performance metrics. - - Added a setting for notification metrics ``EnableNotificationMetrics``. - - Self-hosted system administrators can now configure all ``ExperimentalAuditSettings`` through the user interface in the ``System Console``. Cloud administrators can now change the ``AdvancedLoggingJSON`` value for the ``ExperimentalAuditSettings``. This is the only configuration that Cloud administrators are able to adjust. Feature flag ``ExperimentalAuditSettingsSystemConsoleUI`` must be enabled in order to leverage this new user interface. - -### Websocket Event Changes - - Changed the semantics of the ``mattermost_http_websockets_total`` metric to track all open WebSocket connections, regardless of whether they are authenticated. - - Added a ``origin_client`` label to the ``mattermost_http_websockets_total`` Prometheus metric. - -### Go Version - - v9.9 is built with Go ``v1.21.8``. - -### Open Source Components - - Removed ``@stripe/react-stripe-js`` and ``@stripe/stripe-js``, and added ``web-vitals`` at https://github.com/mattermost/mattermost. - -### Known Issues - - Some Cloud workspaces unexpectedly received emails about license expiration. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [bndn](https://translate.mattermost.com/user/bndn), [calebroseland](https://github.com/calebroseland), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [fasal26](https://github.com/fasal26), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [joakim.rivera](https://translate.mattermost.com/user/joakim.rivera), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [marlenekoh](https://github.com/marlenekoh), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MeHow25](https://github.com/MeHow25), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [mojahani](https://translate.mattermost.com/user/mojahani), [morgancz](https://github.com/morgancz), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [nixusUM](https://github.com/nixusUM), [orimaimon](https://github.com/orimaimon), [phoinixgrr](https://github.com/phoinixgrr), [piotr-lasota](https://github.com/piotr-lasota), [pjenicot](https://translate.mattermost.com/user/pjenicot), [pmokeev](https://github.com/pmokeev), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [spirosoik](https://github.com/spirosoik), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [tarrow](https://github.com/tarrow), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zsrv](https://github.com/zsrv) - -(release-v9-8-feature-release)= -## Release v9.8 - Feature Release - -- **9.8.3, released 2024-07-22** - - Mattermost v9.8.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.8.3 contains no database or functional changes. -- **9.8.2, released 2024-07-02** - - Mattermost v9.8.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. - - Mattermost v9.8.2 contains no database or functional changes. -- **9.8.1, released 2024-06-03** - - Mattermost v9.8.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Removed a safety limit error message in compiled Team Edition and unlicensed Enterprise Edition deployments when message count exceeds 5 million posts. - - Fixed an issue with some plugin settings with defaults not changing value. - - Mattermost v9.8.1 contains no database or functional changes. -- **9.8.0, released 2024-05-16** - - Original 9.8.0 release. - -### Compatibility - - Updated minimum required Edge and Chrome versions to 122+. - -```{Important} -If you upgrade from a release earlier than v9.7, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/mattermost-v9-8-changelog/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). - - Pre-packaged GitLab plugin version [v1.8.1](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.8.1). - - Pre-packaged Calls version [v0.26.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.26.2). - - Combined Desktop and Mobile notifications in the user settings modal. - - Added a **Don't Clear** option for Do Not Disturb. - - Enhanced the user interface for channel introductions. - - Added an ephemeral message for non-team member mentions in channels. - - Added emoji tooltips on hover in post message. - - Made the appearance of several tooltips more consistent. - - Updated theme colors for onboarding tour points. - - Updated the right-hand side Thread view to use relative timestamps to be more consistent with the global Threads view. - - Added a total reply count to the right-hand side thread view. - -#### Administration - - Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable, and message count exceeds 5 million posts. ERROR_SAFE_LIMITS_EXCEEDED. - - Downloading a support packet is now extensible with plugins. If a plugin can add content to the support packet, it will be displayed in the commercial support modal. Administrators will have the option to include/exclude that from the support package. - - Upgraded Nodejs to v20.11. - - Added the backend for Channel Bookmarks (disabled by default). Added Channel Bookmarks permissions to the channel user role and to the channel moderation system. - - Added Channel Bookmarks permissions to the channel user role and to the channel moderation system. - - Added progress logs for attachments in bulk exports. - - Added a **System Console** option to rebuild Elasticsearch channels indexes. - - Obfuscated ``ReplicaLagSettings`` in the Support Packet. - - Improved license loading errors. - - Updated the keycloak docker configs and added a ``make`` command. - - Removed unused ``IsOAuth`` field from ``AppError``. - - ``bool`` is now used for ``license_is_trial`` in the Support Packet. - - Bulk export: added functionality to export roles and permissions schemes. - - A new flag (``extract-content``) was added to the mmctl import process that allows the server to skip content extraction during the import phase. - -### API Changes - - Added a create channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. - - Added additional query params to channel endpoints to include channel bookmarks. - - Added update channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. - - Added list channel bookmarks endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. - - Added delete channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. - - Added update channel bookmark sort order endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}/sort_order``. - - Exposed a local-mode only API for reattaching plugins, primarily to facilitate mock-free unit testing. - - Exposed ``UpdateUserRoles`` in ``pluginapi``. - - Exposed ``pluginapi.ProfileImageBytes`` to simplify bot setup from a plugin. - - For ``POST /channels``, added a validation for ``display_name`` to not pass validation if the display name is empty. - -### Bug Fixes - - Fixed an issue with context cancellation for integration requests. - - Fixed an issue preventing the retrieval of SAML metadata. - - Fixed an issue causing an empty channel switcher after converting a group message to a private channel. - - Fixed an issue where System Admins were not allowed to LDAP sync SAML users when ``SamlSettings.EnableSyncWithLdap`` was set to **true**. - - Fixed an issue with markdown in the AD job status table. - - Fixed an issue with a control character in the group list modal. - - Fixed an issue where the auto-complete channels API returned archived channels in response. - - Fixed a crash issue in the **System Console**. - - Fixed an issue where links included in notifications were truncated and not clickable. - - Fixed using local requests instead of HTTP requests in the flow library. - - Fixed an issue where ``support_packet.yaml`` wasn’t generated even if an error occurred. - - Fixed an issue where outgoing webhooks did not trigger when using multiple callback URLs. - - Fixed an issue where it was not possible to clear plugin settings with a default value in the **System Console**. - - Fixed an issue where ``MaxUsersForStatistics`` wasn’t ignored when generating a Support Packet. - - Fixed an issue where the ``EnsureBot`` function did not recreate the bot if it had been manually deleted. - - Fixed an issue where users couldn't look up a user by their ID in the **System Console** anymore. - - Fixed an accessibility issue where the focus didn’t go back to the originating button when a modal was closed. - - Fixed an issue where end users were not allowed to fetch the group members list of groups that allow ``@-mentions``. - -### config.json -New setting option were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``FileSettings`` in ``config.json``: - - Added ``AmazonS3UploadPartSizeBytes`` and ``ExportAmazonS3UploadPartSizeBytes`` to control the part size used to upload files to an S3 store. - - Under ``ServiceSettings`` in ``config.json``: - - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. - - Under ``ClusterSettings`` in ``config.json``: - - Removed unused settings ``StreamingPort``, ``MaxIdleConns``, ``MaxIdleConnsPerHost`` and ``IdleConnTimeoutMilliseconds``. - - #### Changes to Professional and Enterprise plans: - - Under ``ExperimentalSettings`` in ``config.json``: - - Removed the ``UseNewSAMLLibrary`` experimental setting. - -### Go Version - - v9.8 is built with Go ``v1.21.8``. - -### Known Issues - - Status may sometimes get stuck as **Away** or **Offline** with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [Amir-Helali](https://github.com/Amir-Helali), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [annaos](https://github.com/annaos), [apshada](https://github.com/apshada), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [aszakacs](https://github.com/aszakacs), [BarbUk](https://github.com/BarbUk), [BenCookie95](https://github.com/BenCookie95), [Blaieet](https://github.com/Blaieet), [calebroseland](https://github.com/calebroseland), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyrusjc](https://github.com/cyrusjc), [daran9](https://github.com/daran9), [devharipragaz007](https://github.com/devharipragaz007), [devinbinnie](https://github.com/devinbinnie), [dsspence](https://github.com/dsspence), [Eleferen](https://translate.mattermost.com/user/Eleferen), [EltonGohJH](https://github.com/EltonGohJH), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [ezekielchow](https://github.com/ezekielchow), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [gitairman](https://github.com/gitairman), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [hossain-sazzad](https://github.com/hossain-sazzad), [ifoukarakis](https://github.com/ifoukarakis), [inconnu1](https://github.com/inconnu1), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [josephjose](https://github.com/josephjose), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jupenur](https://github.com/jupenur), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kaoski](https://github.com/kaoski), [Karimaljandali](https://github.com/Karimaljandali), [kayazeren](https://github.com/kayazeren), [KrisSiegel](https://github.com/KrisSiegel), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lbr88](https://github.com/lbr88), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [mahdiirar](https://github.com/mahdiirar), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MeHow25](https://github.com/MeHow25), [mentz](https://translate.mattermost.com/user/mentz), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [movion](https://github.com/movion), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [Nityanand13](https://github.com/Nityanand13), [nmnj](https://translate.mattermost.com/user/nmnj), [Obbi89](https://github.com/Obbi89), [pacop](https://github.com/pacop), [phoinixgrr](https://github.com/phoinixgrr), [Pkarle](https://github.com/Pkarle), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [potatogim](https://github.com/potatogim), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahimrahman](https://github.com/rahimrahman), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [RS-labhub](https://github.com/RS-labhub), [Rutam21](https://github.com/Rutam21), [s-krishnaraju](https://github.com/s-krishnaraju), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [topolovac](https://github.com/topolovac), [varghesejose2020](https://github.com/varghesejose2020), [wetneb](https://github.com/wetneb), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zsrv](https://github.com/zsrv) - ----- - -(release-v9-7-feature-release)= -## Release v9.7 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.7.6, released 2024-07-02** - - Mattermost v9.7.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. - - Mattermost v9.7.6 contains no database or functional changes. -- **9.7.5, released 2024-06-03** - - Mattermost v9.7.5 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.7.5 contains no database or functional changes. -- **9.7.4, released 2024-05-15** - - Fixed an issue with context cancellation for integration requests [MM-58019](https://mattermost.atlassian.net/browse/MM-58019). - - Fixed some plugin settings with defaults not changing value [MM-58102](https://mattermost.atlassian.net/browse/MM-58102). - - Mattermost v9.7.4 contains no database or functional changes. -- **9.7.3, released 2024-04-30** - - Fixed an issue where creating a Direct Message channel with synthetic users failed [MM-58019](https://mattermost.atlassian.net/browse/MM-58019). - - Mattermost v9.7.3 contains no database or functional changes. -- **9.7.2, released 2024-04-25** - - Mattermost v9.7.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.7.2 contains no database or functional changes. - - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). - - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. - - Fixed an issue where it was not possible to clear the plugin settings with a default value in the System Console. -- **9.7.1, released 2024-04-16** - - Fixed an issue with a noisy log entry for permalink post notifications. - - Mattermost v9.7.1 contains no database or functional changes. -- **9.7.0, released 2024-04-16** - - Original 9.7.0 release. - -```{Important} -If you upgrade from a release earlier than v9.6, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/mattermost-v9-7-changelog/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Added Mattermost [AI plugin](https://github.com/mattermost/mattermost-plugin-ai) to pre-packaged plugins. - - Pre-packaged Calls version [v0.25.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.25.1). - - Pre-packaged Playbooks version [v1.39.2](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.2). - - Pre-packaged GitHub plugin version [v2.2.0](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.2.0). - - The first emoji is now auto-selected in the emoji picker. - - Added Markdown support for batched email notifications. - - Users’ timezone is now used in batched email notifications. - - Removed a conflicting class (``help-text``) from the interactive dialog field description to resolve the black text color in the dark theme. - - Updated the user interface of **Team Settings** modal. - - Promoted Simplified Chinese to Beta, and downgraded Hungarian and Spanish languages to Beta. - - Improved the opening animation of the user settings modal. - -#### Administration - - Upgraded ``@mattermost/client`` and ``@mattermost/types`` to support TypeScript v5.x. - - Enforced safety limit in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable, and when the count of users who are registered, but not deactivated, exceeds 11,000. ERROR_SAFE_LIMITS_EXCEEDED. - - Dropped pre-packaged plugins for unsupported OS and architectures. - - Implemented a new **Export Settings** page in the **System Console** to allow Cloud administrators to customize their dedicated export S3 buckets. - - LDAP job details are no longer shown until the job runs. - - Added more logging to the ``NotificationsLog``. - - A message is now logged when a user tries to log in using an incorrect password. - - Posts from deactivated users are now included in **Direct Message** channel exports. Also the ``--include-archived-channels`` flag is now respected for **Direct Message** channels. - - Changed the cache headers for file endpoints to cache privately for 24 hours, instead of not caching at all. - - Improved the performance of the ElasticSearch indexing job in PostgreSQL installations. - - Moved following functions from server to public utils: - - ``ResetReadTimeout`` - - ``AppendMultipleStatementsFlag`` - - ``SetupConnection`` - - ``SanitizeDataSource`` - -#### mmctl - - mmctl can now be used to download a Support Packet using ``--local mode``. - - mmctl system ping will now return detailed server status even if the server status is unhealthy. - -### Bug Fixes - - Fixed an issue where the Desktop App login flow would erroneously show the landing page for first time users. - - Fixed an issue where a right-hand side card was not reloaded when the card body was updated. - - Fixed an issue where ``en-AU`` language selection was not allowed. - - Fixed an issue with the position of text in the default profile picture. - - Fixed an issue with the group search to parse the display name. - - Fixed an issue where items with longer text did not widen the user guide dropdown to its max-width. - - Fixed an issue where the configuration could not be updated from the **System Console** in cloud environments. - -### config.json -A new setting option was added to ``config.json``. Below is a list of the addition and its default value on install. The setting can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``CloudSettings`` in ``config.json``: - - Added a new configuration setting ``Disable`` (via config.json, or environment variable), default ``false``. When set to ``true``, all requests to the Mattermost Customer Portal from a workspace will be disabled. - -### Open Source Components - - Added ``stylelint`` to https://github.com/mattermost/mattermost/. - -### Go Version - - v9.7 is built with Go ``v1.20.7``. - -### Known Issues - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [2017Yasu](https://github.com/2017Yasu), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andriumm](https://github.com/andriumm), [angeloskyratzakos](https://github.com/angeloskyratzakos), [annaos](https://github.com/annaos), [apshada](https://github.com/apshada), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [Blaieet](https://github.com/Blaieet), [calebroseland](https://github.com/calebroseland), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [dipaksinha1](https://github.com/dipaksinha1), [doc-sheet](https://github.com/doc-sheet), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [ezekielchow](https://github.com/ezekielchow), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [hossain-sazzad](https://github.com/hossain-sazzad), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [iyampaul](https://github.com/iyampaul), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [Linkinlog](https://github.com/Linkinlog), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [morgancz](https://github.com/morgancz), [mozi47](https://github.com/mozi47), [mvitale1989](https://github.com/mvitale1989), [nab-77](https://github.com/nab-77), [nachtjasmin](https://github.com/nachtjasmin), [natalie-hub](https://github.com/natalie-hub), [neflyte](https://github.com/neflyte), [nickmisasi](https://github.com/nickmisasi), [phoinixgrr](https://github.com/phoinixgrr), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [RyoKub](https://github.com/RyoKub), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://translate.mattermost.com/user/Sharuru), [sinansonmez](https://github.com/sinansonmez), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [ThrRip](https://github.com/ThrRip), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [vishal-rathod-07](https://github.com/vishal-rathod-07), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [Wing0515](https://github.com/Wing0515), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1) - ----- - -(release-v9-6-feature-release)= -## Release v9.6 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.6.3, released 2024-06-03** - - Mattermost v9.6.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue with some plugin settings with defaults not changing value. - - Mattermost v9.6.3 contains no database or functional changes. -- **9.6.2, released 2024-04-25** - - Mattermost v9.6.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.6.2 contains no database or functional changes. - - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). - - Fixed an issue where it was not possible to clear the plugin settings with a default value in the System Console. -- **9.6.1, released 2024-03-26** - - Mattermost v9.6.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.6.1 contains no database or functional changes. - - Fixed an issue where the configuration could not be updated from the System Console in cloud environments. -- **9.6.0, released 2024-03-15** - - Original 9.6.0 release. - -### Compatibility - - Updated minimum required Edge and Chrome versions to 120+. - -```{Important} -If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://mattermost.com/video/changelog-v9-6/) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged Calls version [v0.24.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.24.0). - - Pre-packaged GitLab plugin version [v1.8.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.8.0). - - Added the [Outgoing OAuth Connections](https://developers.mattermost.com/integrate/slash-commands/outgoing-oauth-connections/) integration type. - - Re-designed the **System Console > User Management** screen, and added the ability to batch export users in CSV format (Professional and Enterprise plans). On MySQL, users cannot view live results of the batch export in the user interface. - - Improved the appearance of profile/account menus. - - Added support for checkbox types in the **System Console** settings. - - Added support for WebP image previews in the web app similar to PNG and other image formats. - - Several pre-packaged plugins were removed. - -#### Administration - - Removed some unused Redux actions and reducers, including ``state.entities.posts.selectedPostId``. - - Limited the number of user preference updates to 10 per call. - - Clarified that the LDAP profile picture setting is optional. - -#### mmctl - - Extended mmctl with support for user preferences. - -### Bug Fixes - - Fixed an issue with switching to a **Direct Message** channel with a shared channel user (user from another server). - - Fixed an issue with extra space getting added to code blocks in search results. - - Fixed an issue where deactivated members were not included in a favorited **Direct Message** channel export. - - Fixed an issue where password strength settings wouldn't be disabled if they were set through environment variables. - - Fixed an issue where post mentions would grow outside the viewport on small devices. - - Fixed an issue with draft removal after deleting the post. - - Fixed a markdown issue where, on some occasions, extra space was found before a list. - - Fixed an issue where a sender to a custom group would also receive the message notification themselves. - - Fixed a web app crash when a System Admin clicked on a link to a private channel that they were not a member of. - - Fixed ``ChannelHasBeenCreated`` plugin hook not being called when a group channel was created. - - Fixed thread notifications so that if a user had **Thread Reply Notifications** disabled for your account and **Automatically follow threads in this channel** enabled for a channel, the user wouldn't receive thread notifications for that channel per global setting. - -### config.json - - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to the Enterprise plan: - - Under ``ServiceSettings`` in ``config.json``: - - Added ``EnableOutgoingOAuthConnections`` configuration setting for Outgoing OAuth Connections integration type. - -### Open Source Components - - Added ``@floating-ui/react``, and removed ``@floating-ui/react-dom`` and ``@floating-ui/react-dom-interactions`` from https://github.com/mattermost/mattermost/. - -### Go Version - - v9.6 is built with Go ``v1.20.7``. - -### Known Issues - - Users' initial status is not always loaded correctly [MM-56966](https://mattermost.atlassian.net/browse/MM-56966). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - -### Contributors - - [abdesslamhouioui](https://github.com/abdesslamhouioui), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [Alpha-4](https://github.com/Alpha-4), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [apshada](https://github.com/apshada), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [avas27JTG](https://github.com/avas27JTG), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [bewing](https://github.com/bewing), [calebroseland](https://github.com/calebroseland), [carydrew](https://github.com/carydrew), [Chlbek](https://translate.mattermost.com/user/Chlbek), [compiledsound](https://github.com/compiledsound), [cpatulea](https://github.com/cpatulea), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [edu-ap](https://github.com/edu-ap), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [esarafianou](https://github.com/esarafianou), [ewwollesen](https://github.com/ewwollesen), [gabrieljackson](https://github.com/gabrieljackson), [gourav-varma](https://github.com/gourav-varma), [Gregesp](https://github.com/Gregesp), [grundleborg](https://github.com/grundleborg), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [iabdousd](https://github.com/iabdousd), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [it33](https://github.com/it33), [jespino](https://github.com/jespino), [jlandells](https://github.com/jlandells), [johndavidlugtu](https://github.com/johndavidlugtu), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [juliovillalvazo](https://github.com/juliovillalvazo), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lucassabreu](https://github.com/lucassabreu), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [MixeroTN](https://translate.mattermost.com/user/MixeroTN), [mjnagel](https://github.com/mjnagel), [morgancz](https://translate.mattermost.com/user/morgancz), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [nokedajunky](https://github.com/nokedajunky), [olavinto](https://github.com/olavinto), [oOoBenoitoOo](https://github.com/oOoBenoitoOo), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://translate.mattermost.com/user/Sharuru), [sinansonmez](https://github.com/sinansonmez), [sohzm](https://github.com/sohzm), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [TealWater](https://github.com/TealWater), [ThrRip](https://github.com/ThrRip), [titanventura](https://github.com/titanventura), [toninis](https://github.com/toninis), [trangology](https://github.com/trangology), [trivikr](https://github.com/trivikr), [tsabi](https://github.com/tsabi), [Utsav-Ladani](https://github.com/Utsav-Ladani), [varghesejose2020](https://github.com/varghesejose2020), [vidhisaini10](https://github.com/vidhisaini10), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yeoji](https://github.com/yeoji) - ----- - -(release-v9-5-extended-support-release)= -## Release v9.5 - [Extended Support Release](https://docs.mattermost.com/upgrade/release-definitions.html#extended-support-release-esr) - -- **9.5.14, released 2025-05-09** - - Upgraded logr dependency to v2.0.22 for multiple improvements and bug fixes. - - Mattermost v9.5.14 contains no database or functional changes. -- **9.5.13, released 2024-11-14** - - Mattermost v9.5.13 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Calls plugin [v0.29.4](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.4). - - Mattermost v9.5.13 contains no database or functional changes. -- **9.5.12, released 2024-10-28** - - Mattermost v9.5.12 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed desyncing issues with unreads between the team sidebar and the title bar [MM-54021](https://mattermost.atlassian.net/browse/MM-54021). - - Mattermost v9.5.12 contains no database or functional changes. -- **9.5.11, released 2024-10-10** - - Mattermost v9.5.11 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue with YouTube previews no longer being displayed [MM-60351](https://mattermost.atlassian.net/browse/MM-60351). - - Pre-packaged Calls plugin [v0.29.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.2). - - Improved the performance of LDAP sync jobs when group-contained teams and channels are used [MM-60253](https://mattermost.atlassian.net/browse/MM-60253). - - Mattermost v9.5.11 contains no database or functional changes. -- **9.5.10, released 2024-09-26** - - Mattermost v9.5.10 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed racy use of session in ``NewWebConn`` [MM-60307](https://mattermost.atlassian.net/browse/MM-60307). - - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). - - Mattermost v9.5.10 contains no database or functional changes. -- **9.5.9, released 2024-08-27** - - Mattermost v9.5.9 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.9 contains no database or functional changes. -- **9.5.8, released 2024-07-22** - - Mattermost v9.5.8 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.8 contains no database or functional changes. -- **9.5.7, released 2024-07-02** - - Mattermost v9.5.7 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. - - Added a new configuration setting ``CloudSettings.Disable`` (via config.json, or environment variable), default ``false``. When set to ``true``, all requests to the Mattermost Customer Portal from a workspace will be disabled. - - Fixed an issue where the user status would incorrectly be set to offline without checking for connections in other nodes in an High Availability cluster [MM-57153](https://mattermost.atlassian.net/browse/MM-57153). - - Fixed an issue where users could not see the member count in the **Browse Channels** dialog on some servers [MM-56266](https://mattermost.atlassian.net/browse/MM-56266). - - Increased the maximum length of the ``Value`` column of the ``Preferences`` table [MM-57913](https://mattermost.atlassian.net/browse/MM-57913). - - Mattermost v9.5.7 contains no database or functional changes. -- **9.5.6, released 2024-06-03** - - Mattermost v9.5.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.6 contains no database or functional changes. -- **9.5.5, released 2024-05-15** - - Fixed an issue where the user status would incorrectly get stuck to online after the user closed their tab [MM-57885](https://mattermost.atlassian.net/browse/MM-57885). - - Mattermost v9.5.5 contains no database or functional changes. -- **9.5.4, released 2024-04-25** - - Mattermost v9.5.4 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.4 contains no database or functional changes. - - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). - - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. - - Fixed an issue with context cancellation for integration requests. - - Fixed an issue where end users were not allowed to fetch the group members list of groups that allow ``@-mentions``. -- **9.5.3, released 2024-03-26** - - Mattermost v9.5.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.3 contains no database or functional changes. - - Improved the performance of the ElasticSearch indexing job in PostgreSQL installations. -- **9.5.2, released 2024-03-06** - - Mattermost v9.5.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.2 contains no database or functional changes. - - Fixed ``ChannelHasBeenCreated`` plugin hook not being called when a group channel was created. -- **9.5.1, released 2024-02-16** - - Mattermost v9.5.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.5.1 contains no database or functional changes. -- **9.5.0, released 2024-02-16** - - Original 9.5.0 release. - -### Important Upgrade Notes - - We have stopped supporting MySQL v5.7 since it's at the end of life. We urge customers to upgrade their MySQL instance at their earliest convenience. - -```{Important} -If you upgrade from a release earlier than v9.4, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Improvements - -See [this walkthrough video](https://www.youtube.com/watch?v=b1M2BGGF578&feature=youtu.be) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Pre-packaged Calls version [v0.23.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.23.1). - - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). - - Improved the behavior of suggestion boxes when changing the caret position. - - Changed the time for tomorrow in the **Do Not Disturb** timer and post reminder to refer to the next day at 9:00am instead of 24hrs from the time of activation. - - Updated message timestamp tooltips to include seconds. - - Added a new Wrangler feature to be able to move threads (Experimental). Moving threads requires a Professional/Enterprise license to activate. This feature is not yet recommended for production use. A new feature flag ``MoveThreadsEnabled`` was added and is default OFF. Changing this value to ON will enable the experimental **Move Threads** feature. - - Applied a wording change for active and activated users in the **System Console** user list. - - Applied a wording change for active and activated users in the **Team Statistics** page. - -#### Administration - - Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable and count of users who are registered and not deactivated exceeds 10,000. ERROR_SAFE_LIMITS_EXCEEDED. - - The ``where`` field is now rendered in ``model.AppError`` only when it's present. - - Added Outgoing Oauth implementation ``Get``/``List`` logic. - - The mmctl bulk import process command in local mode now supports processing an import file without actually uploading it to the server. Simply pass the file path to the import file and the server will directly read from it, and pass the ``--bypass-upload`` flag. There is no need to use the import upload command. NOTE: all of this is applicable only in local mode. - - Added **Monthly Active Users** (MAU) as part of the true-up report. - - Prometheus metrics are now available under the Source Available License. - -#### Performance - - Optimized ``createPost`` performance. - - Improved the performance of emoji uploads. - - Made small optimizations in several database calls: - - ``App.HasPermissionToChannel`` - - ``getPostsForChannelAroundLastUnread`` - - ``publishWebsocketEventForPermalinkPost`` - - ``countMentionsFromPost`` - -#### Plugins - - Plugins are now allowed to register user settings. - - Plugins can now register an action in the **User Settings** section. Plugins can also now disable a section in their **User Settings**. - - Included session id in request payload of the ``WebSocketMessageHasBeenPosted`` plugin hook. - -### Bug Fixes - - Fixed an issue where the right-hand side stopped getting the focus when navigating from **Global Threads** or **Global Drafts**. - - Fixed a theme issue in the notification settings. - - Fixed a regression in compliance exports which did not allow the export job to be canceled gracefully on server shutdown. - - Fixed an error where posts dismissed by a plugin were not properly removed from the view. - - Fixed an issue where if there were multiple websocket connections from a single user, then in case one connection got removed during a broadcast, there was a possibility that the other good connection would not get the event. - - Fixed an issue with true-up reports sending active users and not activated users. - - Fixed an issue where users were not able to navigate through links to private channels they are member of with certain configurations. - -### config.json - - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``ServiceSettings`` in ``config.json``: - - Added ``MaximumPayloadSizeBytes`` to add a limit to the payload size of API endpoints passing in arrays. - - Added a configuration setting ``OutgoingIntegrationRequestsDefaultTimeout`` for integration requests. - -#### Changes to the Professional and Enterprise plans: - - Under ``WranglerSettings`` in ``config.json``: - - Added ``AllowedEmailDomain`` - a CSV list of strings, where each is an email domain that is allowed to use the feature (e.g. - on community.mattermost.com, ``mattermost.com`` would allow staff to move a thread, while non-staff cannot). - - ``MoveThreadMaxCount`` - a number representing the maximum number of posts that can be in a thread for it to be moveable. - - ``MoveThreadToAnotherTeamEnable`` - a boolean value representing whether moving should work across teams. - - ``MoveThreadFromPrivateChannelEnable`` - a boolean value representing whether moving should work from within a private channel. - - ``MoveThreadFromDirectMessageChannelEnable`` - a boolean value representing whether moving should be allowed from within a group message. - -#### Changes to the Enterprise plan: - - Under ``DataRetentionSettings`` in ``config.json``: - - Added two new configuration settings, ``MessageRetentionHours`` and ``FileRetentionHours``, in order to support setting your global retention time in hours. ``DataRetentionSettings.MessageRetentionDays`` and ``DataRetentionSettings.FileRetentionDays`` are deprecated but we will continue to use their value until you set something for their hours equivalent. If Days are set then the hours configuration must be 0 and if hours is set then the days config must be 0. We do not support hours for granular retention policies. Due to how our Elasticsearch indexes are stored, Data retention will now also remove elastic search indexes equal to the day of the retention cut-off time. - -### API Changes - - Added a new API endpoint ``POST /api/v4/posts//move``. - - Added ``UpdateChannelMembersNotifications`` plugin API. - - Added plugin APIs and hooks for accessing the **Shared Channels** service via plugins. - - Added a limit to the payload size of API endpoints passing in arrays. - - Added ``PreferencesHaveChanged`` plugin hook. - - Added ``GetPreferenceForUser`` plugin API. - - Added a new API endpoint ``GET /api/v4/users/report`` for system admin user reporting. - - Added a new API endpoint ``GET /api/v4/reports/users/count``. - -### Open Source Components - - Added ``@tanstack/react-table`` and ``prometheus/client_model`` to https://github.com/mattermost/mattermost/. - -### Go Version - - v9.5 is built with Go ``v1.20.7``. - -### Known Issues - - User autocomplete no longer stays closed after pressing ESC key [MM-56748](https://mattermost.atlassian.net/browse/MM-56748). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akbarkz](https://translate.mattermost.com/user/akbarkz), [amyblais](https://github.com/amyblais), [andriuspetrauskis](https://github.com/andriuspetrauskis), [andriuspre](https://github.com/andriuspre), [angeloskyratzakos](https://github.com/angeloskyratzakos), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [azistellar](https://translate.mattermost.com/user/azistellar), [azizthegit](https://github.com/azizthegit), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [c0d33ngr](https://github.com/c0d33ngr), [catenacyber](https://github.com/catenacyber), [cedricongjh](https://github.com/cedricongjh), [Chlbek](https://translate.mattermost.com/user/Chlbek), [chriswachira](https://github.com/chriswachira), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [cripton](https://github.com/cripton), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyberjam](https://github.com/cyberjam), [devinbinnie](https://github.com/devinbinnie), [duttakapil](https://github.com/duttakapil), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [GabrielCasaro](https://github.com/GabrielCasaro), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [heisdinesh](https://github.com/heisdinesh), [hmhealey](https://github.com/hmhealey), [hynex](https://translate.mattermost.com/user/hynex), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kerochelo](https://github.com/kerochelo), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matoro](https://github.com/matoro), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mkaraki](https://github.com/mkaraki), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [Nityanand13](https://github.com/Nityanand13), [norma596](https://translate.mattermost.com/user/norma596), [Omar8345](https://github.com/Omar8345), [phoinixgrr](https://github.com/phoinixgrr), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [Rutam21](https://github.com/Rutam21), [RyoKub](https://github.com/RyoKub), [sapnasivakumar](https://github.com/sapnasivakumar), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [ShrootBuck](https://github.com/ShrootBuck), [SkyDusH](https://translate.mattermost.com/user/SkyDusH), [sonichigo](https://github.com/sonichigo), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [TealWater](https://github.com/TealWater), [thinkGeist](https://github.com/thinkGeist), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [titanventura](https://github.com/titanventura), [toninis](https://github.com/toninis), [trangology](https://github.com/trangology), [tsabi](https://translate.mattermost.com/user/tsabi), [Utsav-Ladani](https://github.com/Utsav-Ladani), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [VishalB98](https://github.com/VishalB98), [wiggin77](https://github.com/wiggin77), [Willy-Wakam](https://github.com/Willy-Wakam), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yaz](https://translate.mattermost.com/user/yaz), [yomiadetutu1](https://github.com/yomiadetutu1) - ----- - -(release-v9-4-feature-release)= -## Release v9.4 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.4.5, released 2024-03-26** - - Mattermost v9.4.5 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.4.5 contains no database or functional changes. -- **9.4.4, released 2024-03-06** - - Mattermost v9.4.4 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.4.4 contains no database or functional changes. -- **9.4.3, released 2024-02-14** - - Mattermost v9.4.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.4.3 contains no database or functional changes. - - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). -- **9.4.2, released 2024-01-30** - - Mattermost v9.4.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Fixed an issue with true-up reports sending active users and not activated users. Added **Monthly Active Users** (MAU) as part of the true-up reports. - - Mattermost v9.4.2 contains no database or functional changes. -- **9.4.1, released 2024-01-16** - - Fixed an issue where ``getChannelMemberOnly`` failed to fetch data when certain fields were NULL. -- **9.4.0, released 2024-01-16** - - Original 9.4.0 release. - -### Important Upgrade Notes - - MySQL v5.7 is at end of life. We recommend all customers to upgrade to at least 8.x. For now, we are logging a warning. From Mattermost v9.5, which is the next Extended Support Release, we will stop supporting MySQL v5.7 altogether. - -```{Important} -If you upgrade from a release earlier than v9.3, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Compatibility - - Updated the minimum required Edge version to v118+. - -### Improvements - -See [this walkthrough video](https://www.youtube.com/watch?v=bEMp4vYLi6c&feature=youtu.be&ab_channel=Mattermost) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Updated the pre-packaged GitHub plugin version to [v2.1.7](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.1.7). - - Pre-packaged Calls plugin version [v0.22.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.22.2). - - Improved the user interface of the channel notifications modal. - - Emojis are now enlarged in emoji tooltips on mouse hover. - - Added a gap of 8px between buttons in the modal footer when opened in the mobile web view. - - Updated empty states to align with new branding and made changes to the empty state copy. - - Adjusted the position of the suggestion list in "Add to a channel" modal to be below or above the text field. - -#### Administration - - Added support for IP Filtering in Cloud (Cloud Enterprise plan) (this feature is disabled by default and behind a feature flag). - - Added support for Bring Your Own Key (BYOK) Encryption (Cloud Enterprise plan). - - An optional dedicated filestore is now used for compliance exports if configured (Cloud Enterprise plan). - - ``MessageExportSettings.GlobalRelaySettings.CustomerType`` now supports "CUSTOM". - - Added new ``ServerMetrics`` hook to allow plugins to register a custom HTTP endpoint to serve their metrics under the server's metrics HTTP listener. - - Admins now have the ability to pipe the output of ``mmctl websocket`` into the JSON parser. - - Added stores for OAuth **Outgoing Connections**. - - Added last login timestamp for users, and added a materialized view and a refresh job to keep track of post stats for PostgreSQL. - - Allowed plugin requests to include **Authorization** headers from external systems. - - Added a mmctl command ``mmctl system supportpacket`` to download the **Support Packet**. - - Added a new mmctl command ``oauth list`` for listing registered OAuth2 applications. - -### Bug Fixes - - Fixed an issue with the emoji reaction toggle behavior. - - Fixed an issue with the spacing between Playbooks and the separator in the Apps bar. - -### config.json - - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``RefreshPostStatsRunTime`` in ``config.json``: - - Added ``RefreshPostStatsRunTime`` to add last login timestamp for users and to add materialized view and refresh job to keep track of post stats for PostgreSQL. - -#### Changes to the Enterprise plan: - - Under ``GlobalRelayMessageExportSettings`` in ``config.json``: - - Added two new configuration settings ``CustomSMTPServerName`` and ``CustomSMTPPort`` to allow setting a custom URL and port for Global Relay export. This enables compliance export to integrate with Proofpoint. - -### Open Source Components: - - Added ``@mattermost/desktop-api`` and ``ipaddr.js`` to https://github.com/mattermost/mattermost/. - -### Go Version - - v9.4 is built with Go ``v1.20.7``. - -### Known Issues - - Non-channel-admin users can no longer use message links in private channels [MM-56575](https://mattermost.atlassian.net/browse/MM-56575). - - Preview doesn't work when editing a channel header [MM-56572](https://mattermost.atlassian.net/browse/MM-56572). - - The channel member count shows as zero in the **Browse channels** modal [MM-56266](https://mattermost.atlassian.net/browse/MM-56266). - - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [AayushChaudhary0001](https://github.com/AayushChaudhary0001), [aditipatelpro](https://github.com/aditipatelpro), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akbarkz](https://github.com/akbarkz), [Alpha-4](https://github.com/Alpha-4), [amyblais](https://github.com/amyblais), [andrius](https://translate.mattermost.com/user/andrius), [andriuspetrauskis](https://github.com/andriuspetrauskis), [andrleite](https://github.com/andrleite), [arthurhrg](https://github.com/arthurhrg), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [avas27JTG](https://github.com/avas27JTG), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [caotanduc99](https://github.com/caotanduc99), [CI-YU](https://github.com/CI-YU), [codejagaban](https://github.com/codejagaban), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyberjam](https://github.com/cyberjam), [danielsischy](https://github.com/danielsischy), [Dev-A-Line](https://translate.mattermost.com/user/Dev-A-Line), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [dkkb](https://github.com/dkkb), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [fmartingr](https://github.com/fmartingr), [FokinAleksandr](https://github.com/FokinAleksandr), [GabrielCasaro](https://github.com/GabrielCasaro), [gabrieljackson](https://github.com/gabrieljackson), [gabsfrancis](https://translate.mattermost.com/user/gabsfrancis), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harsh4723](https://github.com/harsh4723), [harshilsharma63](https://github.com/harshilsharma63), [hasancankucuk](https://github.com/hasancankucuk), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://translate.mattermost.com/user/jprusch), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [ludvigbolin](https://github.com/ludvigbolin), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [morgancz](https://github.com/morgancz), [mvitale1989](https://github.com/mvitale1989), [neflyte](https://github.com/neflyte), [nickmisasi](https://github.com/nickmisasi), [Paul-Stern](https://github.com/Paul-Stern), [pgteekens](https://translate.mattermost.com/user/pgteekens), [phoinixgrr](https://github.com/phoinixgrr), [PromoFaux](https://github.com/PromoFaux), [PulkitGarg-code](https://github.com/PulkitGarg-code), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rajatdangat](https://github.com/rajatdangat), [relwell](https://github.com/relwell), [roaslin](https://github.com/roaslin), [rohan-kapse](https://github.com/rohan-kapse), [rohitkbc](https://github.com/rohitkbc), [Rutam21](https://github.com/Rutam21), [RyoKub](https://github.com/RyoKub), [saakshiraut28](https://github.com/saakshiraut28), [San4es](https://github.com/San4es), [sapnasivakumar](https://github.com/sapnasivakumar), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [ShlokJswl](https://github.com/ShlokJswl), [sinansonmez](https://github.com/sinansonmez), [srappan](https://github.com/srappan), [sri-byte](https://github.com/sri-byte), [srisri332](https://github.com/srisri332), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [svelle](https://github.com/svelle), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [TealWater](https://github.com/TealWater), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [toninis](https://github.com/toninis), [tsabi](https://github.com/tsabi), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [Vinecreeper888](https://github.com/Vinecreeper888), [weblate](https://github.com/weblate), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) - ----- - -(release-v9-3-feature-release)= -## Release v9.3 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.3.3, released 2024-03-06** - - Mattermost v9.3.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.3.3 contains no database or functional changes. -- **9.3.2, released 2024-02-14** - - Mattermost v9.3.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.3.2 contains no database or functional changes. - - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). -- **9.3.1, released 2024-01-30** - - Mattermost v9.3.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.3.1 contains no database or functional changes. -- **9.3.0, released 2023-12-15** - - Original 9.3.0 release. - -### Important Upgrade Notes - - Please read the [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html) before upgrading. - -### Compatibility - - Updated minimum required Firefox version to v115+. - - Updated minimum supported Chromium version to 118+. - -### Improvements - -See [this walkthrough video](https://www.youtube.com/watch?v=eXA8emM97Bo) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Updated pre-packaged Playbooks plugin version to [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). - - Updated pre-packaged Calls version to [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). - - Updated pre-packaged Jira plugin version to [v4.0.1](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.0.1). Also see [v4.0.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.0.0) for recent breaking changes. - - Added Vietnamese (Beta) as a new language. - - Added the ability to passively track keywords with highlights without triggering a notification (Professional and Enterprise plans). - - Updated the **Settings** modal with an improved user interface. - - Added a new **Jump to recents** banner when a channel is scrolled up. - - Modified the behavior of the code button (Ctrl+Alt+C) to create inline codes or code blocks. - - Disabled markdown keybindings within code blocks. - - Added a **Back** button to the ``/access_problem`` page. - - Added a default limit of the number of reactions per post. - -#### Performance - - Removed pre-fetch preference and set new prefetch limits for the webapp. - - Improved websocket event marshaling performance. - - Batched loading of recently used emojis on initial load. - -#### Administration - - The tooltip on the announcement bar in the **System Console** is now widened. - - Improved the error message when trying to activate a plugin in an unsupported environment. - - Added a file storage permission check to the workspace health dashboard. - - Performed a cleanup in preparation for adding support for multi-word keywords that trigger notification. - - Added a warning log message when the app runs as root. - - Removed all uses of the ``ExperimentalTimezone`` setting. The Timezone feature is now always enabled and no longer behind a configuration setting. - - Added support for previewing WebVTT attachments. - - Introduced separate ``AdvancedLogging`` levels for LDAP messages. - - Introduced trace logging level for LDAP messages. - - Added a new way to modify ``WebSocket`` messages sent to individual connections. - - Added a new server side hook ``MessagesWillBeConsumed`` to allow modifying post objects after they are grabbed from the database but before they are delivered to the client. This is behind a feature flag and disabled by default. - - Users and posts are now pretty-printed in the logs. - - Improved file extraction logging. - - Exposed ``ThreadView`` and ``AdvancedCreateComment`` components in the webapp plugin exported components list. - - Added **Logging > Advanced Logging** setting to the **System Console** to allow admins to configure custom log targets via the user interface. - -### Bug Fixes - - Fixed an issue where marking a Group Message as unread didn't show the badge count correctly. - - Fixed an issue where ``invite_id`` was being reset on all team changes. - - Fixed an issue where interactive dialog elements with subtype ``number`` didn't handle a ``0`` value properly. - - Fixed an issue with the download link in channel file search items when including a path in the **Site URL** setting. - - Fixed an issue with the formatting of special mentions in the right-hand side. - - Fixed ``MessageWillBeUpdated`` plugin hook to allow rejections. - - Fixed an issue with some shortcuts not working as expected. - - Fixed the message history not clearing the input on the center channel. - - Fixed an issue where a higher contrast was generated for some usernames. - - Fixed an issue where newly created Group Messages showed having 0 members. - - Fixed an issue where an incorrect timestamp was assigned to support packet files. - - Fixed an issue where the **Reset Password** link was not displayed if only LDAP/AD was enabled. - - Fixed an issue where **Recent Mentions** showed posts for other similar named users. - - Fixed an error that appeared when updating the header of Group Messages. - - Fixed an issue that caused the server to get stuck during shutdown due to a deadlock in a dependency. - - Fixed an issue where Desktop App clients would be shown an error when trying to open file preview links. - - Fixed an issue with double URL encoding of Oauth redirect URI params. - - Fixed an issue where users couldn't at-mention custom groups in group constrained teams and channels. - - Fixed an issue where the channel admin wasn't being set when converting a Group Message to a private channel. - -### config.json - - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Removed ``DisplaySettings.ExperimentalTimezone`` setting. - - Under ``ServiceSettings`` in ``config.json``: - - Added ``DefaultUniqueReactionsPerPost`` and ``MaxUniqueReactionsPerPost`` to fix an issue where invalid reactions could be added to posts and to add a default limit for the number of reactions per post. - -### API Changes - - Added an API to batch requests for custom emojis on page load. - -### Database Changes - - ``NextSyncAt`` and ``Description`` columns are removed from the ``SharedChannelsRemotes`` table. Migration impact is considered to be minimal considering the possible table size. - -### Go Version - - v9.3 is built with Go ``v1.20.7``. - -### Known Issues - - Mattermost Omnibus: Unable to install omnibus due to unmet dependencies [MM-56080](https://mattermost.atlassian.net/browse/MM-56080). - - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [AirGoatOne](https://github.com/AirGoatOne), [akbarkz](https://github.com/akbarkz), [amigo7kr](https://github.com/amigo7kr), [amyblais](https://github.com/amyblais), [anneschuth](https://github.com/anneschuth), [ARJ2160](https://github.com/ARJ2160), [Arslan-work](https://github.com/Arslan-work), [arthurh](https://translate.mattermost.com/user/arthurh), [arthurhrg](https://github.com/arthurhrg), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [avas27JTG](https://github.com/avas27JTG), [AvaterClasher](https://github.com/AvaterClasher), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BandhiyaHardik](https://github.com/BandhiyaHardik), [BenCookie95](https://github.com/BenCookie95), [Benjamin-Loison](https://github.com/Benjamin-Loison), [calebroseland](https://github.com/calebroseland), [catenacyber](https://github.com/catenacyber), [cedarice](https://github.com/cedarice), [CI-YU](https://github.com/CI-YU), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [Davut97](https://github.com/Davut97), [deepakumarvu](https://github.com/deepakumarvu), [devinbinnie](https://github.com/devinbinnie), [Dhoni77](https://github.com/Dhoni77), [DimitriDR](https://translate.mattermost.com/user/DimitriDR), [edwardnguyen225](https://github.com/edwardnguyen225), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [Emil-Carlsson](https://github.com/Emil-Carlsson), [enahum](https://github.com/enahum), [escofresco](https://github.com/escofresco), [fandour](https://translate.mattermost.com/user/fandour), [fazil-syed](https://github.com/fazil-syed), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [hanzei](https://github.com/hanzei), [harshal2030](https://github.com/harshal2030), [harshilsharma63](https://github.com/harshilsharma63), [heisdinesh](https://github.com/heisdinesh), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [imamimam113](https://github.com/imamimam113), [imkrishnasarathi](https://github.com/imkrishnasarathi), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jonathanwiemers](https://github.com/jonathanwiemers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kapdev](https://translate.mattermost.com/user/kapdev), [kayazeren](https://github.com/kayazeren), [Kimbohlovette](https://github.com/Kimbohlovette), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [KuSh](https://github.com/KuSh), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [LeonardJouve](https://github.com/LeonardJouve), [lieut-data](https://github.com/lieut-data), [lindy65](https://github.com/lindy65), [linkvn](https://github.com/linkvn), [ludvigbolin](https://github.com/ludvigbolin), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [m1lt0n](https://github.com/m1lt0n), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [maxtrem271991](https://github.com/maxtrem271991), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [mozi47](https://github.com/mozi47), [mvitale1989](https://github.com/mvitale1989), [nathanaelhoun](https://github.com/nathanaelhoun), [newdominic](https://github.com/newdominic), [nickmisasi](https://github.com/nickmisasi), [nosyn](https://github.com/nosyn), [otilor](https://github.com/otilor), [pacop](https://github.com/pacop), [Paul-Stern](https://github.com/Paul-Stern), [Paul-vrn](https://github.com/Paul-vrn), [phoinixgrr](https://github.com/phoinixgrr), [proggga](https://github.com/proggga), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahulsuresh-git](https://github.com/rahulsuresh-git), [rashmibharambe](https://github.com/rashmibharambe), [Reene-Simon](https://github.com/Reene-Simon), [rohan-kapse](https://github.com/rohan-kapse), [rohitkbc](https://github.com/rohitkbc), [rubinaga](https://github.com/rubinaga), [RyoKub](https://github.com/RyoKub), [san70sh](https://github.com/san70sh), [sapnasivakumar](https://github.com/sapnasivakumar), [sbishel](https://github.com/sbishel), [seoyeongeun](https://github.com/seoyeongeun), [Sharuru](https://github.com/Sharuru), [shivamjosh](https://github.com/shivamjosh), [sinansonmez](https://github.com/sinansonmez), [Sn-Kinos](https://github.com/Sn-Kinos), [sp6370](https://github.com/sp6370), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [sudheer121](https://github.com/sudheer121), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [tejas161](https://github.com/tejas161), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [TomerPacific](https://github.com/TomerPacific), [toninis](https://github.com/toninis), [trivikr](https://github.com/trivikr), [tsabi](https://github.com/tsabi), [turretkeeper](https://github.com/turretkeeper), [umrkhn](https://github.com/umrkhn), [vish9812](https://github.com/vish9812), [wcdfilll](https://translate.mattermost.com/user/wcdfilll), [wiebel](https://github.com/wiebel), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1) - ----- - -(release-v9-2-feature-release)= -## Release v9.2 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.2.6, released 2024-02-14** - - Mattermost v9.2.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.2.6 contains no database or functional changes. - - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). -- **9.2.5, released 2024-01-30** - - Mattermost v9.2.5 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.2.5 contains no database or functional changes. -- **9.2.4, released 2024-01-09** - - Mattermost v9.2.4 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.2.4 contains the following functional changes: - - Fixed an issue where invalid reactions could be added to posts. Added default limit of the number of reactions per post. -- **9.2.3, released 2023-11-29** - - Mattermost v9.2.3 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.2.3 contains no database or functional changes. - - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). -- **9.2.2, released 2023-11-08** - - Mattermost v9.2.2 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). - - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. -- **9.2.1, released 2023-11-06** - - Fixed an issue where Ubuntu GLIBC errors were thrown on Ubuntu 20.04 and Debian Bullseye versions. -- **9.2.0, released 2023-11-02** - - Original 9.2.0 release - -### Important Upgrade Notes - - Fixed data retention policies to run jobs when any custom retention policy is enabled even when the global retention policy is set to **keep-forever**. Before this fix, the enabled custom data retention policies wouldn’t run as long as the global data retention policy was set to **keep-forever** or was disabled. After the fix, the custom data retention policies will run automatically even when the global data retention policy is set to **keep-forever**. Once the server is upgraded, posts may unintentionally be deleted. Admins should make sure to disable all custom data retention policies before upgrading, and then re-enable them again after upgrading. - -```{Important} -If you upgrade from a release earlier than v9.1, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Compatibility - - Updated minimum required Edge version to 116+. - -### Improvements - -See [this walkthrough video](https://www.youtube.com/watch?v=udC2OCTGooc&feature=youtu.be&ab_channel=Mattermost) on some of the improvements in our latest release below. - -#### User Interface (UI) - - Improved readability by displaying system messages on multiple lines when editing a channel header. - - Combined "joined/left" event types in system messages. - - Added a new user preference to disable webapp prefetching via **Settings > Advanced > Allow Mattermost to prefetch channel posts**. You must enable **Client Performance Debugging** in the System Console by going to **Environment > Developer** in order for this setting to appear. This setting and Client Performance Debugging should only be enabled temporarily if users are experiencing performance issues. - - Pre-packaged NPS plugin version [v1.3.3](https://github.com/mattermost/mattermost-plugin-nps/releases/tag/v1.3.3). - - Pre-packaged Todo plugin version [v0.7.1](https://github.com/mattermost/mattermost-plugin-todo/releases/tag/v0.7.1). - -#### Administration - - JSON null value cases are now handled correctly by also checking that the pointer is no longer null when unmarshalling to a pointer. - - An annotated logger is now used to capture LDAP and SAML logs. - - Replaced ``github.com/mattermost/gziphandler`` with ``github.com/klauspost/compress/gzhttp``. - - Performance metrics now contain information on if a given request was sent during a page load or a websocket reconnect. - - Elasticsearch aggregation jobs no longer start when a bulk indexing job is currently running. - - Added heap profile, CPU profile, and goroutines profile to the support package. - - Merged WIP i18n locales, but disallowed selecting unsupported locales. - -### Bug Fixes - - Fixed a panic where a simple worker would crash if it failed to get a job. - - Fixed post props on update to properly see channel links. - - Fixed an issue where the API for drafts would return empty drafts. - - Fixed the alignment of the **Help** menu in the global header. - - Fixed a broken link in the **Edit Channel** header modal. - - Fixed an issue that prevented users to be added to channels from the System Console. - - Fixed an issue where the channel member count increased when adding an already present user. - - Fixed an issue where plugin developers were unable to create a ``textarea`` in interactive dialogs. - - Fixed an issue where copy pasting images from Chrome failed. - -### config.json - - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``LogSettings`` in ``config.json``: - - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. - -### API Changes - - Added ``origin_client`` to the ``mattermost_api_time`` metrics. - -### Go Version - - v9.2 is built with Go ``v1.20.7``. - -### Known Issues - - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [aayushborkar14](https://github.com/aayushborkar14), [AayushChaudhary0001](https://github.com/AayushChaudhary0001), [AbhineshJha](https://github.com/AbhineshJha), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akaMrDC](https://github.com/akaMrDC), [akbarkz](https://github.com/akbarkz), [alejdg](https://github.com/alejdg), [Alphanum404](https://github.com/Alphanum404), [amigo7kr](https://translate.mattermost.com/user/amigo7kr), [amyblais](https://github.com/amyblais), [amynicol1985](https://github.com/amynicol1985), [andrew-delph](https://github.com/andrew-delph), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [aniketh-varma](https://github.com/aniketh-varma), [anneschuth](https://translate.mattermost.com/user/anneschuth), [apshada](https://github.com/apshada), [ARJ2160](https://github.com/ARJ2160), [ArturBa](https://github.com/ArturBa), [asaadmahmood](https://github.com/asaadmahmood), [AsisRout](https://github.com/AsisRout), [avas27JTG](https://github.com/avas27JTG), [AvaterClasher](https://github.com/AvaterClasher), [ayrotideysarkar](https://github.com/ayrotideysarkar), [ayusht2810](https://github.com/ayusht2810), [balajik](https://github.com/balajik), [Bangik](https://github.com/Bangik), [bartaz](https://translate.mattermost.com/user/bartaz), [BaumiCoder](https://github.com/BaumiCoder), [BenCookie95](https://github.com/BenCookie95), [bishalpal](https://github.com/bishalpal), [calebroseland](https://github.com/calebroseland), [cedarice](https://translate.mattermost.com/user/cedarice), [cescpmantidfly](https://translate.mattermost.com/user/cescpmantidfly), [CI-YU](https://github.com/CI-YU), [Ciggzy1312](https://github.com/Ciggzy1312), [codeEmpress1](https://github.com/codeEmpress1), [coltoneshaw](https://github.com/coltoneshaw), [costa-neto](https://github.com/costa-neto), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danialkeimasi](https://github.com/danialkeimasi), [Delaney](https://github.com/Delaney), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [dhnlr](https://github.com/dhnlr), [dipandhali2021](https://github.com/dipandhali2021), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [escofresco](https://github.com/escofresco), [esethna](https://github.com/esethna), [fazil-syed](https://github.com/fazil-syed), [fmartingr](https://github.com/fmartingr), [frjaraur](https://github.com/frjaraur), [fyfirman](https://github.com/fyfirman), [gabrieljackson](https://github.com/gabrieljackson), [Gauravpadam](https://github.com/Gauravpadam), [gibsonliketheguitar](https://github.com/gibsonliketheguitar), [h1usertest](https://translate.mattermost.com/user/h1usertest), [hanzei](https://github.com/hanzei), [harsh-solanki21](https://github.com/harsh-solanki21), [harshal2030](https://github.com/harshal2030), [harshalkh](https://github.com/harshalkh), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ialorro](https://github.com/ialorro), [ifoukarakis](https://github.com/ifoukarakis), [imamimam113](https://translate.mattermost.com/user/imamimam113), [isacikgoz](https://github.com/isacikgoz), [iyampaul](https://github.com/iyampaul), [izruff](https://github.com/izruff), [janlengyel](https://github.com/janlengyel), [jannikbertram](https://github.com/jannikbertram), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [jgilliam17](https://github.com/jgilliam17), [jlandells](https://github.com/jlandells), [johnsonbrothers](https://github.com/johnsonbrothers), [josephjosedev](https://github.com/josephjosedev), [jprusch](https://github.com/jprusch), [js029](https://github.com/js029), [jufab](https://github.com/jufab), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kalvdans](https://github.com/kalvdans), [kayazeren](https://github.com/kayazeren), [komodin](https://github.com/komodin), [Kritik-J](https://github.com/Kritik-J), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [KuSh](https://github.com/KuSh), [larkox](https://github.com/larkox), [letehaha](https://github.com/letehaha), [libklein](https://github.com/libklein), [lieut-data](https://github.com/lieut-data), [linkvn](https://github.com/linkvn), [ludvigbolin](https://github.com/ludvigbolin), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [ManuMinue](https://github.com/ManuMinue), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [maxtrem271991](https://github.com/maxtrem271991), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mishmanners](https://github.com/mishmanners), [MixeroTN](https://github.com/MixeroTN), [mnj93](https://github.com/mnj93), [mujpao](https://github.com/mujpao), [mustdiechik](https://github.com/mustdiechik), [mvitale1989](https://github.com/mvitale1989), [namanh-asher](https://github.com/namanh-asher), [Navystack](https://github.com/Navystack), [nickmisasi](https://github.com/nickmisasi), [Nico7as](https://translate.mattermost.com/user/Nico7as), [Nityanand13](https://github.com/Nityanand13), [NohaFahmi](https://github.com/NohaFahmi), [otilor](https://github.com/otilor), [Paul-vrn](https://github.com/Paul-vrn), [Peyo6565](https://github.com/Peyo6565), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [qryptdev](https://github.com/qryptdev), [Quijuletim470](https://translate.mattermost.com/user/Quijuletim470), [returnedinformation](https://github.com/returnedinformation), [riteshmukim](https://github.com/riteshmukim), [rubinaga](https://github.com/rubinaga), [Rutam21](https://github.com/Rutam21), [saideepesh000](https://github.com/saideepesh000), [SaketKaswa20](https://github.com/SaketKaswa20), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [seoyeongeun](https://translate.mattermost.com/user/seoyeongeun), [Sharuru](https://github.com/Sharuru), [sjcode99](https://github.com/sjcode99), [sondrekje](https://github.com/sondrekje), [sonu27](https://github.com/sonu27), [sp6370](https://github.com/sp6370), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [StreakInTheSky](https://github.com/StreakInTheSky), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [sudheer121](https://github.com/sudheer121), [syedzubeen](https://github.com/syedzubeen), [Tahanima](https://github.com/Tahanima),[tanmaythole](https://github.com/tanmaythole), [this-is-tobi](https://github.com/this-is-tobi), [ThrRip](https://github.com/ThrRip), [TomerPacific](https://github.com/TomerPacific), [toninis](https://github.com/toninis), [trilopin](https://github.com/trilopin), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [venugopal1234567](https://github.com/venugopal1234567), [vip2441](https://github.com/vip2441), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yesbhautik](https://github.com/yesbhautik), [ylac](https://github.com/ylac), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) - ----- - -(release-v9-1-feature-release)= -## Release v9.1 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) - -- **9.1.5, released 2024-01-09** - - Mattermost v9.1.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.1.5 contains the following functional changes: - - Fixed an issue where invalid reactions could be added to posts. Added default limit of the number of reactions per post. -- **9.1.4, released 2023-11-29** - - Mattermost v9.1.4 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.1.4 contains no database or functional changes. - - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). -- **9.1.3, released 2023-11-13** - - Mattermost v9.1.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.1.3 contains no database or functional changes. - - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). - - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. -- **9.1.2, released 2023-11-06** - - Mattermost v9.1.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.1.2 contains no database or functional changes. -- **9.1.1, released 2023-10-27** - - Mattermost v9.1.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Focalboard plugin [v7.11.4](https://github.com/mattermost/focalboard/releases/tag/v7.11.4). - - Mattermost v9.1.1 contains the following functional changes: - - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. - - Added a restriction to the mobile Oauth / SAML redirection to match the ``NativeAppSettings.AppCustomURLSchemes`` configuration setting. -- **9.1.0, released 2023-10-16** - - Original 9.1.0 release - -### Important Upgrade Notes - - Improved performance on data retention ``DeleteOrphanedRows`` queries. See the [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html) for notes on a new migration that was added. Removed feature flag ``DataRetentionConcurrencyEnabled``. Data retention now runs without concurrency in order to avoid any performance degradation. Added a new configuration setting ``DataRetentionSettings.RetentionIdsBatchSize``, which allows admins to to configure how many batches of IDs will be fetched at a time when deleting orphaned reactions. The default value is 100. - - Minimum supported Desktop App version is now v5.3. OAuth/SAML flows were modified to include ``desktop_login`` which makes earlier versions incompatible. - -```{Important} -If you upgrade from a release earlier than v9.0, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Compatibility - - Updated Chromium minimum supported version to 116+. - -### Highlights - -#### Never Miss Group Messages Again - - Group messages (GMs) now behave like direct messages (DMs). [The badge count increases for every new message](https://docs.mattermost.com/collaborate/channel-types.html#group-messages). - -#### Convert Group Messages to Private Channels - - Added the ability to [convert a group message to a private channel](https://docs.mattermost.com/collaborate/convert-group-messages.html). - -See [this walkthrough video](https://www.youtube.com/watch?v=dbHg-63J9dA) on the highlights and some of the below improvements in our latest release. - -### Improvements - -#### User Interface (UI) - - Added a **Cancel** button to the **Delete category** modal. - - Added the ability to resize the channel sidebar and right-hand sidebar. - - Added two new filtering options (show all channel types and show private channels) to the **Browse channels** modal. - - Pre-packaged GitLab plugin version [v1.7.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.7.0). - - Pre-packaged Calls plugin version [v0.20.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.20.0). - - Pre-packaged Playbooks version [v1.39.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.0). - - Added additional reaction options when viewing threads or messages when the sidebar is larger than its minimum width. - - Added a link to [notification documentation](https://docs.mattermost.com/preferences/manage-your-notifications.html) in the **Notification Settings** modal. - - Updated the post textbox measurement code to be more reliable. - - The ``/invite`` slash command now supports custom user groups. - - Re-enabled the remote marketplace functionality, when configured as per ``PluginSettings.EnableRemoteMarketplace`` [documentation](https://docs.mattermost.com/configure/plugins-configuration-settings.html#plugins-enableremotemarketplace). - -#### Administration - - Added ``mattermost-plugin-api`` into the ``mattermost`` GitHub repository. - - Updated the public server module version to v0.0.9. - - Added 2 new URL parameters to ``GET /api/v4/groups``: ``include_archived`` and ``filter_archived``. Added the ability to restore archived groups from the user groups modal. - - Added file storage information to the support package. - - A ``user_id`` is now included in all HTTP logs (debug level) to help determine who is generating unexpected traffic. - - Added new URL parameter to ``GET /api/v4/groups`` and ``GET /api/v4/groups/:group_id``. ``include_member_ids`` will add all the members ``user_ids`` to the group response objects. You can now also add group members to a channel, any members that are not part of the team can be added to the team through this flow and subsequently added the channel. - -#### Plugin Changes - - Added new frontend plugin extension point for the new messages separator bar. - - Added a new plugin extensibility point to add actions to the code blocks. - - Added the plugin hook ``UserHasBeenDeactivated``. - - Added a new server side plugin API method to set the searchable content for file info (``SetFileSearchableContent``). The ``MessageHasBeenPosted`` plugin hook is now executed after the attachments are linked to the post. - -### Bug Fixes - - Fixed keyboard support for the left-hand side channel menu, the left-hand side category menu, and the post dot menu. - - Fixed display name in the ``comment_on`` component. - - Fixed an issue with keyboard support for some menus with submenus. - - Fixed an issue with disappearing punctuation when following a group mention. - - Fixed an issue where compliance export jobs were not able to start after disabling and enabling the compliance export. - - Fixed a potential read after write issue when loading a license. - - Fixed the API to block any changes to direct and group messages names, display name, or purpose. - -### config.json -Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Removed ``ServiceSettingsDefaultGfycatAPISecret`` and ``ServiceSettingsDefaultGfycatAPIKey`` configuration settings. - - Under ``TeamSettings`` in ``config.json``: - - Added a new config setting ``EnableJoinLeaveMessageByDefault`` that sets the default value for ``UserSetting``, ``ADVANCED_FILTER_JOIN_LEAVE``. - - Under ``DisplaySettings`` in ``config.json``: - - Added a setting ``MaxMarkdownNodes`` to limit the maximum complexity of markdown text on mobile. - - #### Changes to Enterprise plan: - - Under ``DataRetentionSettings`` in ``config.json``: - - Added a new configuration setting ``RetentionIdsBatchSize``, which allows admins to to configure how many batches of IDs will be fetched at a time when deleting orphaned reactions. The default value is 100. - -### API Changes - - Added the ``X-Forwarded-For`` request header to the audit stream for all Rest API calls. - - Added API endpoint ``POST /api/v4/user/login/desktop_login``. Modified OAuth/SAML flows to include ``desktop_login`` where applicable. - - Added new API endpoint ``GET`` ``/api/v4/channels//common_teams`` to fetch list of teams common between members of a group message. - - Added new API endpoint ``POST`` ``/api/v4/channels//convert_to_channel`` to convert a group message to a private channel. - - Added a new ``MessageHasBeenDeleted`` hook to the plugin API. - - Moved the ``request`` package into the public shared folder. - -### Go Version - - v9.1 is built with Go ``v1.20.7``. - -### Known Issues - - Converting a group message to a channel should show an error "A channel with that name already exists on the same team" for duplicate channel names [MM-54713](https://mattermost.atlassian.net/browse/MM-54713). - - Marking a group message as unread doesn't resurface the numbered notification badge [MM-54778](https://mattermost.atlassian.net/browse/MM-54778). - - Thread/posts jump when switching to and from preview mode [MM-54758](https://mattermost.atlassian.net/browse/MM-54758). - - Desktop UI doesn't show all content when the right-hand side thread is opened [MM-54696](https://mattermost.atlassian.net/browse/MM-54696). - - Left-hand side resize option overrides the **Browse/Create Channel** menu if To-Do plugin is installed [MM-54367](https://mattermost.atlassian.net/browse/MM-54367). - - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [abhinav700](https://github.com/abhinav700), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [alexdecamillo](https://github.com/alexdecamillo), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [asaadmahmood](https://github.com/asaadmahmood), [AsisRout](https://github.com/AsisRout), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [calebroseland](https://github.com/calebroseland), [cedarice](https://translate.mattermost.com/user/cedarice), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [Crere89](https://translate.mattermost.com/user/Crere89), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [deivisonrpg](https://github.com/deivisonrpg), [devinbinnie](https://github.com/devinbinnie), [djanda97](https://github.com/djanda97), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [esethna](https://github.com/esethna), [fmartingr](https://github.com/fmartingr), [FokinAleksandr](https://github.com/FokinAleksandr), [gabrieljackson](https://github.com/gabrieljackson), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hibou.sage](https://translate.mattermost.com/user/hibou.sage), [hmhealey](https://github.com/hmhealey), [homerCOD](https://translate.mattermost.com/user/homerCOD), [ialorro](https://github.com/ialorro), [ifoukarakis](https://github.com/ifoukarakis), [intdev32](https://github.com/intdev32), [IronOnet](https://github.com/IronOnet), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [LimJiAn](https://github.com/LimJiAn), [limod](https://github.com/limod), [linkvn](https://github.com/linkvn), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [marie0394](https://translate.mattermost.com/user/marie0394), [maruTA-bis5](https://github.com/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [MohammedElansary-dev](https://translate.mattermost.com/user/MohammedElansary-dev), [mornaistar](https://github.com/mornaistar), [mt26691](https://translate.mattermost.com/user/mt26691), [mvitale1989](https://github.com/mvitale1989), [Navystack](https://translate.mattermost.com/user/Navystack), [nickmisasi](https://github.com/nickmisasi), [pvev](https://github.com/pvev), [RayYH](https://github.com/RayYH), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [sinansonmez](https://github.com/sinansonmez), [speedhs](https://github.com/speedhs), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [teamzamong](https://github.com/teamzamong), [TheRealJoeFriel](https://github.com/TheRealJoeFriel), [ThrRip](https://github.com/ThrRip), [timmycheng](https://github.com/timmycheng), [toninis](https://github.com/toninis), [varghese.jose](https://github.com/varghesejose2020), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [y4aniv](https://github.com/y4aniv), [yasserfaraazkhan](https://github.com/yasserfaraazkhan) - ----- - -(release-v9-0-major-release)= -## Release v9.0 - [Major Release](https://docs.mattermost.com/upgrade/release-definitions.html#major-release) - -- **9.0.5, released 2023-11-29** - - Mattermost v9.0.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.0.5 contains no database or functional changes. - - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). -- **9.0.4, released 2023-11-13** - - Mattermost v9.0.4 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.0.4 contains no database or functional changes. - - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). - - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. -- **9.0.3, released 2023-11-06** - - Mattermost v9.0.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.0.3 contains no database or functional changes. -- **9.0.2, released 2023-10-27** - - Mattermost v9.0.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Pre-packaged Focalboard plugin [v7.11.4](https://github.com/mattermost/focalboard/releases/tag/v7.11.4). - - Mattermost v9.0.2 contains the following functional changes: - - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. - - Added a restriction to the mobile Oauth / SAML redirection to match the ``NativeAppSettings.AppCustomURLSchemes`` configuration setting. -- **9.0.1, released 2023-10-06** - - Mattermost v9.0.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). - - Mattermost v9.0.1 contains no database or functional changes. -- **9.0.0, released 2023-09-15** - - Original 9.0.0 release - -### Important Upgrade Notes - - Removed the deprecated Insights feature. - - Mattermost Boards and various other plugins have transitioned to being fully community supported. See this [forum post](https://forum.mattermost.com/t/upcoming-product-changes-to-boards-and-various-plugins/16669) for more details. - - The ``channel_viewed`` websocket event was changed to ``multiple_channels_viewed``, and is now only triggered for channels that actually have unread messages. - -```{Important} -If you upgrade from a release earlier than v8.1, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). -``` - -### Highlights - -#### Dev/Sec/ChatOps in Strict Security Environments with Jira, Confluence, and Mattermost - - Accelerate mission-critical workflows that keep your team aligned and your data secure on [the Mattermost and Atlassian platforms](https://mattermost.com/atlassian/). - -#### Air-Gapped, Edge-Ready Generative AI with Defense Unicorn's LeapfrogAI - - Deploy and utilize local GenAI models in edge, air-gapped, and zero-trust environments with [LeapfrogAI and Mattermost](https://defenseunicorns.com/leapfrogai). - -#### AI-Accelerated Collaboration - - Mattermost partner Mobius Logic has enhanced the MS Teams Connector for the Microsoft 365 platform by embedding Mattermost directly inside [Microsoft Teams](https://docs.mattermost.com/about/mattermost-for-microsoft-teams.html). - -#### MLOps and Secure Federation with Customer Compliance - - Our partnership with SOS International (SOSi) enables the integration of advanced military-grade federation using XMPP. Read the [exoINSIGHT announcement from Exovera](https://exovera.com/press-release/exovera-unveils-exoinsight/). - -#### Improving Your Organization’s Core Collaboration - - To optimize the core platform experience, we are reinforcing the fundamentals to ensure Mattermost continues being resilient, stable, and best-in-breed for your critical operations. - -### Improvements - -#### User Interface (UI) - - The number of channel members is now shown in the **Browse channels** modal. - - An error is now displayed if a post edit history fails to load. - - Added functionality to bulk mark a whole channel category as read. - - Removed Boards product tour code. - - Replaced Gfycat with Giphy in the gif picker. - - Pre-packaged Calls version v0.19.0. - - Updated Focalboard plugin version to 7.11.3. - - Pre-packaged Playbooks version 1.38.1. - - Upgraded prepackaged Zoom plugin to v1.6.2. - - Upgraded prepackaged Antivirus plugin version to 1.0.0. - -#### Administration - - API examples are now updated to reflect latest Go API conventions, deprecating older code samples. - - Updated the public server module version to v0.0.8. - - Added a ``Post Action`` plugin hook to allow plugins to register new items in the post menu. - - Added a ``Post Editor Action`` plugin hook to allow plugins to register new items in the post editor menu. - - Improved logging on plugin initialization, activation, and removal. - - Removed the deprecated ``ManifestExecutables`` struct. - - Removed the deprecated ``UserAuth.Password`` field. - - [Remote users](https://docs.mattermost.com/onboard/shared-channels.html) are no longer counted as part of the license. - - Improved data retention logs. - - Removed ``/opengraph`` endpoint as it was unused. - - Transitionally prepackaged plugins are now installed to the filestore for continuity when a future release stops prepackaging those plugins. - - Removed the deprecated ``Manifest.RequiredConfig`` field. - - Added a ``NotificationWillBePushed`` plugin hook invoked before the push notification is processed and sent to the notification service. Plugins may modify or reject the push notification. - - Added a `SendPushNotification` plugin api method which allows plugins to send push notifications to a specific user's mobile sessions. - - Disabled ``PluginSettings.EnableRemoteMarketplace`` functionality. - -### Bug Fixes - - Fixed the error returned by ``PUT /api/v4/channels/{channelid}`` when the provided name already existed in the team. - - Fixed an issue where CRLF line endings passed to mmctl commands were not being stripped from commands. - - Fixed an issue where text copied from Microsoft OneNote is pasted as an image. - - Fixed an issue preventing successful activation of trial licenses. - - Fixed an issue where a custom group wouldn't get marked as a mention if it was not part of the webapp's local state. - - Fixed an issue with the in-product marketplace theming. - -### config.json -Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. - -#### Changes to all plans: - - Under ``ServiceSettings`` in the ``config.json``: - - Added ``GiphySdkKey`` to replace Gfycat with Giphy in the gif picker. - -### Go Version - - v9.0 is built with Go ``v1.19.5``. - -### Open Source Components - - Added ``@giphy/js-fetch-api`` and ``@giphy/react-components`` to https://github.com/mattermost/mattermost/. - - Added ``@react-native/eslint-config``, ``@react-native/metro-config``, and ``@tsconfig/react-native`` to https://github.com/mattermost/mattermost-mobile/. - -### Known Issues - - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). - - Google login fails on the Classic mobile apps. - - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. - - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. - - The team sidebar on the desktop app does not update when channels have been read on mobile. - - Slack import through the CLI fails if email notifications are enabled. - - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. - - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. - - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. - - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. - -### Contributors - - [abdulsmapara](https://github.com/abdulsmapara), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akaravashkin](https://github.com/akaravashkin), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [apollo13](https://github.com/apollo13), [aqurilla](https://github.com/aqurilla), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [Benjamin-Loison](https://github.com/Benjamin-Loison), [calebroseland](https://github.com/calebroseland), [cdmwebs](https://github.com/cdmwebs), [chumano](https://github.com/chumano), [CI-YU](https://github.com/CI-YU), [Coelho](https://translate.mattermost.com/user/Coelho), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danielsischy](https://github.com/danielsischy), [deivisonrpg](https://github.com/deivisonrpg), [devinbinnie](https://github.com/devinbinnie), [djanda97](https://github.com/djanda97), [douglasstasiak](https://github.com/douglasstasiak), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [esarafianou](https://github.com/esarafianou), [esethna](https://github.com/esethna), [gabrieljackson](https://github.com/gabrieljackson), [gary-sixgen](https://github.com/gary-sixgen), [Gobbit69](https://translate.mattermost.com/user/Gobbit69), [grubbins](https://github.com/grubbins), [guneshsji](https://github.com/guneshsji), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshal2030](https://github.com/harshal2030), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [hpkhanh1610](https://github.com/hpkhanh1610), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [it33](https://github.com/it33), [ivakorin](https://github.com/ivakorin), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [LimJiAn](https://github.com/LimJiAn), [lindalumitchell](https://github.com/lindalumitchell), [lindy65](https://github.com/lindy65), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [mahmoudfarouq](https://github.com/mahmoudfarouq), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [marianunez](https://github.com/marianunez), [maruTA-bis5](https://translate.mattermost.com/user/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MatthewDorner](https://github.com/MatthewDorner), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [panoramix360](https://github.com/panoramix360), [Partizann](https://github.com/Partizann), [penghao_chn](https://translate.mattermost.com/user/penghao_chn), [phoinixgrr](https://github.com/phoinixgrr), [pjenicot](https://translate.mattermost.com/user/pjenicot), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [RichardScottOZ](https://github.com/RichardScottOZ), [robinsdm](https://github.com/robinsdm), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [ShrootBuck](https://github.com/ShrootBuck), [sinansonmez](https://github.com/sinansonmez), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [StreakInTheSky](https://github.com/StreakInTheSky), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [tasawar-hussain](https://github.com/tasawar-hussain), [TealWater](https://github.com/TealWater), [thinkGeist](https://github.com/thinkGeist), [ThrRip](https://translate.mattermost.com/user/ThrRip), [timmycheng](https://translate.mattermost.com/user/timmycheng), [toninis](https://github.com/toninis), [tschuyebuhl](https://github.com/tschuyebuhl), [wiggin77](https://github.com/wiggin77), [Willyfrog](https://github.com/Willyfrog), [y4aniv](https://translate.mattermost.com/user/y4aniv), [yash2189](https://github.com/yash2189), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) diff --git a/source/product-overview/product-overview-index.rst b/source/product-overview/product-overview-index.rst index ee36fe05e28..60ed16b9eb2 100644 --- a/source/product-overview/product-overview-index.rst +++ b/source/product-overview/product-overview-index.rst @@ -15,7 +15,6 @@ Overview /product-overview/certifications-and-compliance.rst /product-overview/accessibility-compliance-policy.rst /product-overview/releases-lifecycle.rst - /product-overview/client-availability.rst /product-overview/frequently-asked-questions.rst The Intelligent Mission Environment (IME) @@ -57,7 +56,7 @@ Messaging collaboration .. image:: /images/messaging-new-hero.png :alt: An image showing Mattermost messaging collaboration, highlighting the ability to create public and private channels, direct messages, and threaded conversations for secure, real-time communication across web, desktop, and mobile. -See the :doc:`Client availability ` documentation to learn which features are available on different Mattermost clients. +See the :doc:`Client availability ` documentation to learn which features are available on different Mattermost clients. Workflow automation ~~~~~~~~~~~~~~~~~~~ diff --git a/source/product-overview/release-policy.md b/source/product-overview/release-policy.md index e16cfe9bb9f..08d904d6d59 100644 --- a/source/product-overview/release-policy.md +++ b/source/product-overview/release-policy.md @@ -87,15 +87,27 @@ For deprecated ESRs, an email announcement is sent 3 months in advance. We also ### Legacy Releases -The following table lists all releases across Mattermost v7.0 and v8.0, including ESRs. See the [unsupported legacy releases](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html) documentation for comprehensive changelog details for these legacy releases. +The following table lists all releases across Mattermost v7.0, v8.0, and v9.0, including ESRs. See the [unsupported legacy releases](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html) documentation for comprehensive changelog details for these legacy releases. ```{Important} - If you're on a legacy Mattermost release prior to v7.1, in order to take advantage of newer Mattermost releases, you must upgrade to [v7.1 ESR](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html#release-v7-1-extended-support-release) at a minimum. -- Upgrading from ESR-to-ESR (``major`` -> ``major_next``) is fully supported and tested. However, upgrading from ESR-to-ESR (``major`` to ``major+2``) is supported, but not tested. If you plan to upgrade across multiple releases, we strongly recommend upgrading from an ESR to another ESR. For example, if you're upgrading from v7.1 ESR, upgrade to the [v7.8 ESR](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html#release-v7-8-extended-support-release), or the [v8.1 ESR](https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html#release-v8-1-extended-support-release) before attempting to upgrade to the [v9.5 ESR](https://docs.mattermost.com/product-overview/mattermost-v9-changelog.html#release-v9-5-extended-support-release) or the v9.11 ESR. +- Upgrading from one Extended Support Release (ESR) to the next ESR (``major`` -> ``major_next``) is fully supported and tested. However, upgrading across multiple ESR versions (``major`` to ``major+2``) is supported, but not tested. If you plan to skip versions, we strongly recommend upgrading only between ESR releases. For example, if you're upgrading from v8.1 ESR, upgrade to the v9.5 ESR or the v9.11 ESR before attempting to upgrade to the [v10.5 ESR](https://docs.mattermost.com/product-overview/mattermost-v10-changelog.html#release-v10-5-extended-support-release) or the [v10.11 ESR](https://docs.mattermost.com/product-overview/mattermost-v10-changelog.html#release-v10-11-extended-support-release). ``` | **Release** | **Release Type** | **Support ended** | |:---|:---|:---| +| v9.11 | Extended | 2025-05-15 | +| v9.10 | Feature | 2024-10-15 | +| v9.9 | Feature | 2024-09-15 | +| v9.8 | Feature | 2024-08-15 | +| v9.7 | Feature | 2024-07-15 | +| v9.6 | Feature | 2024-06-15 | +| v9.5 | Extended | 2024-11-15 | +| v9.4 | Feature | 2024-04-15 | +| v9.3 | Feature | 2024-03-15 | +| v9.2 | Feature | 2024-02-15 | +| v9.1 | Feature | 2024-01-15 | +| v9.0 | Major | 2023-12-15 | | v8.1 | Extended | 2024-05-15 | | v8.0 | Major | 2023-10-15 | | v7.10 | Feature | 2023-07-15 | diff --git a/source/product-overview/server.rst b/source/product-overview/server.rst index a44af926079..692096833a0 100644 --- a/source/product-overview/server.rst +++ b/source/product-overview/server.rst @@ -16,7 +16,6 @@ Mattermost Server installs as a single compiled binary file that includes the RE /product-overview/mattermost-server-releases.md /product-overview/mattermost-v10-changelog.md - /product-overview/mattermost-v9-changelog.md /product-overview/unsupported-legacy-releases.md /product-overview/version-archive.rst @@ -24,6 +23,5 @@ Learn more about: * :doc:`Server releases ` * :doc:`v10 changelog ` -* :doc:`v9 changelog ` * :doc:`Unsupported legacy releases ` -* :doc:`Version archive ` \ No newline at end of file +* :doc:`Version archive ` diff --git a/source/product-overview/unsupported-legacy-releases.md b/source/product-overview/unsupported-legacy-releases.md index f1c255cd3bb..84ecdc298ef 100644 --- a/source/product-overview/unsupported-legacy-releases.md +++ b/source/product-overview/unsupported-legacy-releases.md @@ -1,5 +1,1469 @@ # Unsupported Legacy Releases +This documentation contains comprehensive changelog details for all legacy Mattermost releases including v9.x, v8.x, and v7.x versions that have reached their end of support lifecycle. + +```{Important} +```{include} common-esr-support-upgrade.md +``` + +(release-v9-11-extended-support-release)= +## Release v9.11 - [Extended Support Release](https://docs.mattermost.com/about/release-policy.html#release-types) + +- **9.11.18, released 2025-07-22** + - Mattermost v9.11.18 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Boards plugin version [v9.1.5](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.5). + - Mattermost v9.11.18 contains no database or functional changes. +- **9.11.17, released 2025-06-18** + - Mattermost v9.11.17 contains high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Boards plugin version [v9.1.3](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.3). + - Pre-packaged Playbooks plugin [v1.41.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.41.1). + - Mattermost v9.11.17 contains no database or functional changes. +- **9.11.16, released 2025-05-21** + - Mattermost v9.11.16 contains a Critical severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release as soon as possible is highly recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.11.16 contains no database or functional changes. +- **9.11.15, released 2025-05-09** + - Mattermost v9.11.15 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Brought back the bug fix for [MM-61361](https://mattermost.atlassian.net/browse/MM-61361), since the performance regression has been fixed by tweaking the offending SQL query. + - Mattermost v9.11.15 contains the following database changes: + - A new index was added to the ``CategoryId`` column in ``SidebarChannels`` table to improve query performance. No database downtime is expected for this upgrade. It takes around 2s to add the index on a table with 1.2M rows for PostgreSQL, and it takes around 5s on MySQL on a table with 300K rows. The migrations are fully backwards-compatible and no table locks or existing operations on the table are impacted by this upgrade. Zero downtime is expected when upgrading to this release. The SQL queries included are ``CREATE INDEX idx_sidebarchannels_categoryid ON SidebarChannels(CategoryId);`` for MYSQL and ``CREATE INDEX CONCURRENTLY IF NOT EXISTS idx_sidebarchannels_categoryid ON sidebarchannels(categoryid);`` for PostgreSQL. +- **9.11.14, released 2025-05-05** + - Mattermost v9.11.14 contains a medium severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Reverted a bug fix for [MM-61361](https://mattermost.atlassian.net/browse/MM-61361) that likely introduced a performance regression. + - Mattermost v9.11.14 contains no database or functional changes. +- **9.11.13, released 2025-04-29** + - Mattermost v9.11.13 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.11.13 contains no database or functional changes. +- **9.11.12, released 2025-04-15** + - Mattermost v9.11.12 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Stopped logging websocket PING events received by the server [MM-63693](https://mattermost.atlassian.net/browse/MM-63693). + - Mattermost v9.11.12 contains no database or functional changes. +- **9.11.11, released 2025-03-24** + - Mattermost v9.11.11 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Playbooks plugin [v1.41.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.41.0). + - Mattermost v9.11.11 contains no database or functional changes. +- **9.11.10, released 2025-03-17** + - Mattermost v9.11.10 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed errors logged by performance telemetry due to certain browser extensions [MM-62371](https://mattermost.atlassian.net/browse/MM-62371). + - Pre-packaged Calls plugin version [v0.29.8](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.8). + - Mattermost v9.11.10 contains no database or functional changes. +- **9.11.9, released 2025-02-19** + - Mattermost v9.11.9 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Boards plugin [v9.1.1](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.1.1). + - Fixed an issue in Compliance Exports whereby a missing file attachment in S3 could prevent the export run from completing [MM-62527](https://mattermost.atlassian.net/browse/MM-62527). + - Mattermost v9.11.9 contains no database or functional changes. +- **9.11.8, released 2025-01-22** + - Mattermost v9.11.8 contains critical severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Boards plugin [v9.0.5](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.0.5). + - Pre-packaged Channel Export plugin [v1.2.1](https://github.com/mattermost/mattermost-plugin-channel-export/releases/tag/v1.2.1). + - Pre-packaged Calls plugin [v0.29.7](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.7). + - Fixed a panic during LDAP synchronization [MM-61239](https://mattermost.atlassian.net/browse/MM-61239). + - Fixed an issue where the bulk export retention job would accidentally delete non-bulk export files and directories [MM-60888](https://mattermost.atlassian.net/browse/MM-60888). + - Fixed an issue where new messages from new channels wouldn't appear in the sidebar after reconnecting the websocket [MM-61361](https://mattermost.atlassian.net/browse/MM-61361). + - Mattermost v9.11.8 contains no database or functional changes. +- **9.11.7, released 2025-01-15** + - Mattermost v9.11.7 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue with the web app status not being updated correctly for the current user [MM-59952](https://mattermost.atlassian.net/browse/MM-59952). + - Pre-packaged Boards plugin [v9.0.2](https://github.com/mattermost/mattermost-plugin-boards/releases/tag/v9.0.2). + - Fixed an issue with insertion errors to ``LinkMetadata`` table. + - Fixed an issue where the scroll position reset when custom emojis were requested [MM-62102](https://mattermost.atlassian.net/browse/MM-62102). + - Mattermost v9.11.7 contains the following database changes: + - Fixed an issue where Direct and Group Messages with a ``DeleteAt`` flag in the database could cause issues with some APIs. +- **9.11.6, released 2024-12-10** + - Mattermost v9.11.6 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - A 200 response is now returned for HEAD requests to a sub-path rather than responding with a 302. This fixes mobile devices trying to connect to a server hosted on a sub-path [MM-58042](https://mattermost.atlassian.net/browse/MM-58042). + - Pre-packaged Calls plugin [v0.29.6](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.6). + - Fixed an issue with incorrect reporting in the **Server Updates** section in **System Console > Workspace Optimizations** [MM-62030](https://mattermost.atlassian.net/browse/MM-62030). + - Mattermost v9.11.6 contains no database or functional changes. +- **9.11.5, released 2024-11-14** + - Mattermost v9.11.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Calls plugin [v0.29.4](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.4). + - Mattermost v9.11.5 contains no database or functional changes. +- **9.11.4, released 2024-10-28** + - Mattermost v9.11.4 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where users would not see channels they were added to/messages from those channels in clustered environments [MM-59911](https://mattermost.atlassian.net/browse/MM-59911). + - Mattermost v9.11.4 contains no database or functional changes. +- **9.11.3, released 2024-10-10** + - Mattermost v9.11.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue with YouTube previews no longer being displayed [MM-60351](https://mattermost.atlassian.net/browse/MM-60351). + - Improved the performance of LDAP sync jobs when group-contained teams and channels are used [MM-60253](https://mattermost.atlassian.net/browse/MM-60253). + - Mattermost v9.11.3 contains no database or functional changes. +- **9.11.2, released 2024-09-26** + - Mattermost v9.11.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Added Mattermost user survey plugin to pre-packaged plugins, [v1.1.1](https://github.com/mattermost/mattermost-plugin-user-survey/releases). + - Pre-packaged Calls plugin [v0.29.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.2). + - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). + - Fixed an issue where the **Edit Post Time Limit** button was not being displayed in the System Console ([MM-58529](https://mattermost.atlassian.net/browse/MM-58529), [MM-58824](https://mattermost.atlassian.net/browse/MM-58824)). + - Fixed racy use of session in ``NewWebConn`` [MM-60307](https://mattermost.atlassian.net/browse/MM-60307). + - Mattermost v9.11.2 contains the following functional change: + - Added a configuration setting **NativeAppSettings > MobileExternalBrowser** that tells the Mobile app to perform SSO Authentication using the external default browser [MM-60332](https://mattermost.atlassian.net/browse/MM-60332). +- **9.11.1, released 2024-08-27** + - Mattermost v9.11.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.11.1 contains no database or functional changes. +- **9.11.0, released 2024-08-16** + - Original 9.11.0 release. + +### Important Upgrade Notes + + - Added support for Elasticsearch v8. Also added Beta support for [OpenSearch v1.x and v2.x](https://opensearch.org/). A new config setting ``ElasticsearchSettings.Backend`` has been added to differentiate between Elasticsearch and OpenSearch. The default value is `elasticsearch`, which breaks support for AWS Elasticsearch v7.10.x since the official v8 client only works from Elasticsearch v7.11 and higher versions. See the important note below for details. + - Mattermost supports Elasticsearch v7.17+. However, we recommend upgrading your Elasticsearch v7 instance to v8.x. See the [Elasticsearch upgrade](https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html) documentation for details. + - When using Elasticsearch v8, ensure you set ``action.destructive_requires_name`` to ``false`` in ``elasticsearch.yml`` to allow for wildcard operations to work. + +```{Important} +**AWS Elasticsearch** + +If you're using AWS Elasticsearch, you must: +1. Upgrade to AWS OpenSearch. Refer to the [OpenSearch upgrade](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/version-migration.html) documentation for details. +2. Disable "compatibility mode" in OpenSearch. +3. Upgrade Mattermost server. +4. Update the Mattermost `ElasticsearchSettings.Backend` configuration setting value from `elasticsearch` to `opensearch` manually or using [mmctl](https://docs.mattermost.com/manage/mmctl-command-line-tool.html#mmctl-config-set). This value cannot be changed using the System Console. See the Mattermost [Elasticsearch backend type](https://docs.mattermost.com/configure/environment-configuration-settings.html#elastic-backendtype) documentation for additional details. +5. Restart the Mattermost server. +``` + +### Compatibility + - Updated minimum Edge and Chrome versions to 126+. + - Added Ubuntu Noble support. + +```{Important} +If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/mattermost-v9-11-changelog/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged Calls version [v0.29.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.1). + - Pre-packaged GitHub plugin version [v2.3.0](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.3.0). + - Added user interface improvements to the keyboard shortcuts modal. + - Added a message "Editing this message with an ``@mention`` will not notify the recipient" in the post edit dialog. + - Made the appearance of several tooltips more consistent. + - Updated the help text in the **Direct Messages** modal. + - Emojis are now placed at cursor position while editing messages. + - Made keyboard shortcuts modal content DIV-accessible via the keyboard. + - Added Channel Bookmarks user interface (disabled by default and behind a feature flag). + +#### Administration + - Added a new feature where an admin with user management permission can now edit a user's settings in **System Console > Users**. + - Added download functionality for admins to download server logs from **Server Logs** page in the **System Console**. + - LDAP vendor errors are now included in the Support Packet. + - Added [metadata](https://docs.mattermost.com/manage/admin/generating-support-packet.html#contents-of-a-support-packet) to the Support Packet. + - We are now adding the user's ID and session ID to the audit log's Actor field for the login event, to match what we provide for the logout event. + - Added support for custom status in bulk export/import. + - Marked the ``RemoteTeamId`` field of the ``RemoteCluster`` entity as deprecated. + - Added log ``Name`` and ``DisplayName`` of groups. + - Logged fields of users are now updated. + +#### Performance + - Added platform related information to the notification metrics. + - Added additional information to INP and LCP client metrics. + - Added minor performance improvements to webapp initialization. + +#### mmctl + - Added two new commands to mmctl, ``mmctl job list`` and ``mmctl job update``. + - Panic message is now printed when mmctl panics. + - Setting ``AdvancedLoggingJSON`` via mmctl is now supported. + +### Bug Fixes + - Fixed an issue that displayed a wrong count for custom group members on the notification warning. + - Fixed a panic when the password was too long. + - Fixed an issue where configuration patches through mmctl did not correctly merge plugin configuration values. + - Fixed issues with the OpenID local development. + - Fixed an issue where Latex was not rendered in a code block as code when Latex rendering was disabled. + - Fixed an issue with saving custom roles. + - Fixed an issue with the left-hand side scrollbar auto-hide functionality for Chrome and Safari. + - Fixed Group Message to private channel conversion edge cases. + - Fixed an issue where users with the user management permission were unable to view the list of users in the **System Console > Users** page. + - Fixed more web app performance reports being marked as outdated after a user's computer woke up from sleep. + +### config.json +New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``ServiceSettings`` in ``config.json``: + - Added ``TerminateSessionsOnPasswordChange`` to configure the sessions revocation during password resets. + +#### Changes to the Enterprise plan: + - Under ``ElasticsearchSettings`` in ``config.json``: + - Added ``Backend`` to differentiate between Elasticsearch and OpenSearch. The default value is ``elasticsearch``. + +### API Changes + - Added new API endpoints to manage remote clusters. + - Added two new query parameters to ``GET /api/v4/jobs, job_type`` and status. + - Added a new endpoint ``PATCH /api/v4/jobs/{job_id}/status``. + - Updated ``AddChannelMember`` to accept a list of userIds. + - Added six new permissions to manage the status of particular jobs: + - ``PermissionManagePostBleveIndexesJob`` + - ``PermissionManageDataRetentionJob`` + - ``PermissionManageComplianceExportJob`` + - ``PermissionManageElasticsearchPostIndexingJob`` + - ``PermissionManageElasticsearchPostAggregationJob`` + - ``PermissionManageLdapSyncJob`` + +### Go Version + - v9.11 is built with Go ``v1.21.8``. + +### Open Source Components + - Removed ``stylelint``, and added ``elastic/go-elasticsearch`` to https://github.com/mattermost/mattermost/. + +### Known Issues + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andreabia](https://translate.mattermost.com/user/andreabia), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [ayusht2810](https://github.com/ayusht2810), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [BrandonS09](https://github.com/BrandonS09), [calebroseland](https://github.com/calebroseland), [Camillarhi](https://github.com/Camillarhi), [catalintomai](https://github.com/catalintomai), [Celeo](https://github.com/Celeo), [chessmadridista](https://github.com/chessmadridista), [ckaznable](https://github.com/ckaznable), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danielsischy](https://github.com/danielsischy), [devinbinnie](https://github.com/devinbinnie), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [ewwollesen](https://github.com/ewwollesen), [fmartingr](https://github.com/fmartingr), [frankps](https://translate.mattermost.com/user/frankps), [gabrieljackson](https://github.com/gabrieljackson), [Gesare5](https://github.com/Gesare5), [grinapo](https://github.com/grinapo), [hanzei](https://github.com/hanzei), [harmeet01singh](https://github.com/harmeet01singh), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [imanmagomedov.said](https://translate.mattermost.com/user/imanmagomedov.said), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://translate.mattermost.com/user/kaakaa), [kalil0321](https://github.com/kalil0321), [KellieSue](https://github.com/KellieSue), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthewbirtch](https://github.com/matthewbirtch), [matthew-w](https://translate.mattermost.com/user/matthew-w), [MeHow25](https://github.com/MeHow25), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [Mohamed-sobhi95](https://translate.mattermost.com/user/Mohamed-sobhi95), [mvitale1989](https://github.com/mvitale1989), [natalie-hub](https://github.com/natalie-hub), [nickmisasi](https://github.com/nickmisasi), [ningthoujamSwamikumar](https://github.com/ningthoujamSwamikumar), [Pawel1894](https://github.com/Pawel1894), [phoinixgrr](https://github.com/phoinixgrr), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahimrahman](https://github.com/rahimrahman), [Rajat-Dabade](https://github.com/Rajat-Dabade), [recontech404](https://github.com/recontech404), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [shaon72](https://github.com/shaon72), [Sharuru](https://translate.mattermost.com/user/Sharuru), [shieldsjared](https://github.com/shieldsjared), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [suraj-anthwal](https://github.com/suraj-anthwal), [svelle](https://github.com/svelle), [ThrRip](https://translate.mattermost.com/user/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [vhaska](https://translate.mattermost.com/user/vhaska), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ythosa](https://github.com/ythosa), [zenocode-org](https://translate.mattermost.com/user/zenocode-org), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) + +(release-v9-10-feature-release)= +## Release v9.10 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.10.3, released 2024-09-26** + - Mattermost v9.10.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). + - Mattermost v9.10.3 contains no database or functional changes. +- **9.10.2, released 2024-08-27** + - Mattermost v9.10.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.10.2 contains no database or functional changes. +- **9.10.1, released 2024-07-22** + - Mattermost v9.10.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Mattermost Copilot plugin version [v0.8.3](https://github.com/mattermost/mattermost-plugin-ai/releases/tag/v0.8.3). + - Ensured that the web app only requests notification permissions when needed. Fixed an issue with desktop notifications not being sent on Safari [MM-59416](https://mattermost.atlassian.net/browse/MM-59416). + - Fixed an issue where the app crashed on iOS Safari [MM-59296](https://mattermost.atlassian.net/browse/MM-59296). + - Mattermost v9.10.1 contains no database or functional changes. +- **9.10.0, released 2024-07-16** + - Original 9.10.0 release. + +```{Important} +If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/mattermost-v9-10-changelog/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged GitLab plugin version [v1.9.1](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.9.1). + - Pre-packaged Mattermost Copilot plugin version [v0.8.1](https://github.com/mattermost/mattermost-plugin-ai/releases/tag/v0.8.1). + - Pre-packaged Calls plugin version [v0.28.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.28.2). + - Re-designed the user profile popover and improved its performance. + - Added banner to prompt users to allow notification permissions when opening the app in web browsers. + - Increased the width of the profile picture setting to match other user settings. + - Improved screen reader support for the emoji picker. + - Improved the accessibility of plugin buttons in the channel header. + +#### Administration + - Extended ``PluginSiteStatsHandler`` to support more advanced visualization types. + - Stopped broadcasting ``channel_deleted/channel_restored`` messages from private channels to non-members. + +#### Performance + - Added page load time to client performance metrics. + - Added a metric to track time it takes for the Threads view to load. + - Added support for mobile client metrics. + - Increased the range of LCP metrics that can be measured. + - Added polling of ``getStatusesByIds`` and ``getProfilesByIds`` network calls. The interval of which is configurable with the ``UsersStatusAndProfileFetchingPollIntervalMilliseconds`` configuration variable. + - Added defer loading plugins scripts. + +### Bug Fixes + - Fixed an issue where the ``RefreshPostStats`` job could fail. + - Fixed an issue where attempting to create a team with the URL of an existing team showed the wrong error message. + - Fixed an issue where ``visibilitychange`` JavaScript browser event had not been added for updating the user's current timezone. + - Fixed an issue where the last admin in the system was allowed to be demoted. + - Fixed an issue where banners set by system administrators did not stack below system banners, and appeared underneath them instead. Existing system banners have remained unchanged. + - Fixed an issue with an incorrect wrapping of long words in numbered lists. + - Fixed an incorrect behavior of the image proxy when site URL is changed. + - Fixed an issue where cache invalidation messages for websocket connections were not being sent across the cluster, causing missed websocket events. + - Fixed ``EnableClientMetrics`` setting not being available in the System Console. + +### config.json +New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``ExperimentalSettings`` in ``config.json``: + - Added ``UsersStatusAndProfileFetchingPollIntervalMilliseconds`` to configure the interval of ``getStatusesByIds`` and ``getProfilesByIds`` network calls. + +### API Changes + - Added a new plugin API endpoint ``GetUsersByIds`` to retrieve a list of users by their ids. + +### Go Version + - v9.10 is built with Go ``v1.21.8``. + +### Known Issues + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [abhijit-singh](https://github.com/abhijit-singh), [aeomin](https://translate.mattermost.com/user/aeomin), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [ahmadJT](https://github.com/ahmadJT), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [apshada](https://github.com/apshada), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [BenCookie95](https://github.com/BenCookie95), [BillAnderson304](https://github.com/BillAnderson304), [Boruus](https://translate.mattermost.com/user/Boruus), [BrandonS09](https://github.com/BrandonS09), [bruno-keiko](https://github.com/bruno-keiko), [calebroseland](https://github.com/calebroseland), [Camillarhi](https://github.com/Camillarhi), [catalintomai](https://github.com/catalintomai), [chessmadridista](https://github.com/chessmadridista), [ckaznable](https://github.com/ckaznable), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [DSchalla](https://github.com/DSchalla), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [esarafianou](https://github.com/esarafianou), [EyeCantCU](https://github.com/EyeCantCU), [ezekielchow](https://github.com/ezekielchow), [fmartingr](https://github.com/fmartingr), [frankps](https://translate.mattermost.com/user/frankps), [gabrieljackson](https://github.com/gabrieljackson), [Gesare5](https://github.com/Gesare5), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [homerCOD](https://translate.mattermost.com/user/homerCOD), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JtheBAB](https://github.com/JtheBAB), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [maruTA-bis5](https://translate.mattermost.com/user/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MattSilvaa](https://github.com/MattSilvaa), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [mojahani](https://translate.mattermost.com/user/mojahani), [mvitale1989](https://github.com/mvitale1989), [nbruneau71250](https://github.com/nbruneau71250), [nickmisasi](https://github.com/nickmisasi), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [Rajat-Dabade](https://github.com/Rajat-Dabade), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [wiggin77](https://github.com/wiggin77), [willypuzzle](https://github.com/willypuzzle), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zenocode-org](https://github.com/zenocode-org) + +(release-v9-9-feature-release)= +## Release v9.9 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.9.3, released 2024-08-27** + - Mattermost v9.9.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.9.3 contains no database or functional changes. +- **9.9.2, released 2024-07-22** + - Mattermost v9.9.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.9.2 contains no database or functional changes. +- **9.9.1, released 2024-07-02** + - Mattermost v9.9.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. + - Removed feature flag which prevented enabling ``MetricsSettings.EnableClientMetrics`` [MM-58823](https://mattermost.atlassian.net/browse/MM-58823). + - Added a page load time to the client performance metrics [MM-58359](https://mattermost.atlassian.net/browse/MM-58359). + - Fixed web app performance reports being marked as outdated after the user's computer woke up from sleep [MM-58772](https://mattermost.atlassian.net/browse/MM-58772). + - Increased range of LCP metrics and Load Event End metrics that can be measured [MM-59033](https://mattermost.atlassian.net/browse/MM-59033). + - Fixed an error caused by performance telemetry when using Firefox with ``beacon.enabled`` set to ``false`` [MM-58777](https://mattermost.atlassian.net/browse/MM-58777). + - Mattermost v9.9.1 contains no database or functional changes. +- **9.9.0, released 2024-06-14** + - Original 9.9.0 release. + +### Compatibility + - Updated minimum macOS version to 12+ and minimum Safari version to 17+. + +```{Important} +If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/video-mattermost-v9-9-changelog/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged Calls plugin version [v0.27.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.27.0). + - Pre-packaged Jira plugin version [v4.1.1](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.1). + - Pre-packaged GitLab plugin version [v1.9.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.9.0). + - Pre-packaged Zoom plugin version [v1.8.0](https://github.com/mattermost/mattermost-plugin-zoom/releases/tag/v1.8.0). + - Updated the default themes to reduce eye strain (particularly on the dark themes). + - Added UI improvements to the core layout. + - Improved error text when inviting guests to a team. + - Increased the visibility Mattermost edition in-product when using the free edition. + - Added an **Unsupported** label to the Team/E0 editions in the product menu. + - Improved the look and feel of the **True/False** selector in the System Console. + - Updated the channel header layout to reduce height and simplify the UI. + +#### Administration + - Removed safety limit error message in compiled Team Edition and unlicensed Enterprise Edition deployments when message count exceeds 5 million posts. + - Adjusted safety limit error message to show when users exceed 5,000 in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable. ``ERROR_SAFE_LIMITS_EXCEEDED``. + - Improved the message length validation step in the ``mmctl import validate`` command. + - Added shell completion to ``mmctl user active`` and ``mmctl user deactivate``. + - Removed support for self-serve purchases of Mattermost Subscriptions in various flows, throughout Cloud and Self Hosted environments. + - Removed support for self-serve true up review submission in the **System Console**. + - Added streaming support to the file attachments import process. + - Added LDAP job command to mmctl. + - Made LDAP sync jobs more resilient against errors. + - Removed the ``PostPriority`` feature flag. + - Improved the error message of ``NotFound`` errors in store. + - Added support for post priority to incoming webhooks and outgoing webhook responses. + - Added a validation that the payload for an open Interactive Dialog request is valid according to the rules at https://developers.mattermost.com/integrate/plugins/interactive-dialogs/. + - Unblocked notification calls by using usernames instead of full names in case of a missing user profile. + - Increased the maximum password limit from 64 to 72 characters (``PasswordMaximumLength``). + +#### Performance + - Added the initial version of new client-side performance metrics to track web app performance and can be monitored in new [Grafana board](https://grafana.com/grafana/dashboards/21460-web-app-metrics/). + - Added a metric to track time it takes for the right-hand side to load. + - Improved js memory profile of status’s reducers. + - When a user receives a new post that is part of a thread from a root post in a channel they are not currently viewing, we do not fetch the complete root post and its thread posts immediately. However, we still store the newly received post. The root post and its thread posts are only fetched when the user navigates to that specific channel. + +### Bug Fixes + - Fixed an issue with ``aria-label`` for sidebar channel buttons. + - Fixed an issue where any remaining unclosed database RPC connections were not closed after a plugin shut down. + - Fixed an issue where the right-hand side stole the focus when coming back from threads or drafts. + - Fixed an issue where a proxy link was copied instead of the original image link when copying a post that included an embedded image. + - Fixed an issue where the user status would incorrectly get stuck to online after the user closed the tab. + - Fixed an issue where on some servers the user could not see the member count in the **Browse Channels** dialog. + - Fixed an issue with inline display of WebP images accessed through the public-link feature. + - Fixed an issue where it wasn’t clear that the ``mmctl import process --bypass-upload --local`` doesn't work if the server is in High Availability. + - Fixed an issue where the user status would incorrectly be set to offline without checking for connections in other nodes in an High Availability cluster. + - Fixed a longstanding issue where the @mention auto-complete could erase post text following the auto-completed @mention. + - Fixed an issue with status management to avoid missing notifications. + - Fixed an issue where audit events were not added for OAuth logins. + - Fixed an issue with the error check in the message export process. + - Fixed an issue where pasting in the post text box could not always paste without formatting. + - Fixed some plugin settings with defaults not changing value. + +### config.json +New setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``ExperimentalSettings`` in ``config.json``: + - Added ``DisableWakeUpReconnectHandler`` to disable the wake up on reconnect handler. + - Removed ``SelfHostedPurchase`` setting. + +#### Changes to the Enterprise plan: + - Under ``MetricsSettings`` in ``config.json``: + - Added a feature flag and a setting ``EnableClientMetrics`` to control new client performance metrics. + - Added a setting for notification metrics ``EnableNotificationMetrics``. + - Self-hosted system administrators can now configure all ``ExperimentalAuditSettings`` through the user interface in the ``System Console``. Cloud administrators can now change the ``AdvancedLoggingJSON`` value for the ``ExperimentalAuditSettings``. This is the only configuration that Cloud administrators are able to adjust. Feature flag ``ExperimentalAuditSettingsSystemConsoleUI`` must be enabled in order to leverage this new user interface. + +### Websocket Event Changes + - Changed the semantics of the ``mattermost_http_websockets_total`` metric to track all open WebSocket connections, regardless of whether they are authenticated. + - Added a ``origin_client`` label to the ``mattermost_http_websockets_total`` Prometheus metric. + +### Go Version + - v9.9 is built with Go ``v1.21.8``. + +### Open Source Components + - Removed ``@stripe/react-stripe-js`` and ``@stripe/stripe-js``, and added ``web-vitals`` at https://github.com/mattermost/mattermost. + +### Known Issues + - Some Cloud workspaces unexpectedly received emails about license expiration. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [bndn](https://translate.mattermost.com/user/bndn), [calebroseland](https://github.com/calebroseland), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [enzowritescode](https://github.com/enzowritescode), [fasal26](https://github.com/fasal26), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [joakim.rivera](https://translate.mattermost.com/user/joakim.rivera), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [marlenekoh](https://github.com/marlenekoh), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MeHow25](https://github.com/MeHow25), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [mojahani](https://translate.mattermost.com/user/mojahani), [morgancz](https://github.com/morgancz), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [nixusUM](https://github.com/nixusUM), [orimaimon](https://github.com/orimaimon), [phoinixgrr](https://github.com/phoinixgrr), [piotr-lasota](https://github.com/piotr-lasota), [pjenicot](https://translate.mattermost.com/user/pjenicot), [pmokeev](https://github.com/pmokeev), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [spirosoik](https://github.com/spirosoik), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [tarrow](https://github.com/tarrow), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zsrv](https://github.com/zsrv) + +(release-v9-8-feature-release)= +## Release v9.8 - Feature Release + +- **9.8.3, released 2024-07-22** + - Mattermost v9.8.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.8.3 contains no database or functional changes. +- **9.8.2, released 2024-07-02** + - Mattermost v9.8.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. + - Mattermost v9.8.2 contains no database or functional changes. +- **9.8.1, released 2024-06-03** + - Mattermost v9.8.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Removed a safety limit error message in compiled Team Edition and unlicensed Enterprise Edition deployments when message count exceeds 5 million posts. + - Fixed an issue with some plugin settings with defaults not changing value. + - Mattermost v9.8.1 contains no database or functional changes. +- **9.8.0, released 2024-05-16** + - Original 9.8.0 release. + +### Compatibility + - Updated minimum required Edge and Chrome versions to 122+. + +```{Important} +If you upgrade from a release earlier than v9.7, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/mattermost-v9-8-changelog/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). + - Pre-packaged GitLab plugin version [v1.8.1](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.8.1). + - Pre-packaged Calls version [v0.26.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.26.2). + - Combined Desktop and Mobile notifications in the user settings modal. + - Added a **Don't Clear** option for Do Not Disturb. + - Enhanced the user interface for channel introductions. + - Added an ephemeral message for non-team member mentions in channels. + - Added emoji tooltips on hover in post message. + - Made the appearance of several tooltips more consistent. + - Updated theme colors for onboarding tour points. + - Updated the right-hand side Thread view to use relative timestamps to be more consistent with the global Threads view. + - Added a total reply count to the right-hand side thread view. + +#### Administration + - Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable, and message count exceeds 5 million posts. ERROR_SAFE_LIMITS_EXCEEDED. + - Downloading a support packet is now extensible with plugins. If a plugin can add content to the support packet, it will be displayed in the commercial support modal. Administrators will have the option to include/exclude that from the support package. + - Upgraded Nodejs to v20.11. + - Added the backend for Channel Bookmarks (disabled by default). Added Channel Bookmarks permissions to the channel user role and to the channel moderation system. + - Added Channel Bookmarks permissions to the channel user role and to the channel moderation system. + - Added progress logs for attachments in bulk exports. + - Added a **System Console** option to rebuild Elasticsearch channels indexes. + - Obfuscated ``ReplicaLagSettings`` in the Support Packet. + - Improved license loading errors. + - Updated the keycloak docker configs and added a ``make`` command. + - Removed unused ``IsOAuth`` field from ``AppError``. + - ``bool`` is now used for ``license_is_trial`` in the Support Packet. + - Bulk export: added functionality to export roles and permissions schemes. + - A new flag (``extract-content``) was added to the mmctl import process that allows the server to skip content extraction during the import phase. + +### API Changes + - Added a create channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. + - Added additional query params to channel endpoints to include channel bookmarks. + - Added update channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. + - Added list channel bookmarks endpoint at ``/api/v4/channels/{channel_id}/bookmarks``. + - Added delete channel bookmark endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}``. + - Added update channel bookmark sort order endpoint at ``/api/v4/channels/{channel_id}/bookmarks/{bookmark_id}/sort_order``. + - Exposed a local-mode only API for reattaching plugins, primarily to facilitate mock-free unit testing. + - Exposed ``UpdateUserRoles`` in ``pluginapi``. + - Exposed ``pluginapi.ProfileImageBytes`` to simplify bot setup from a plugin. + - For ``POST /channels``, added a validation for ``display_name`` to not pass validation if the display name is empty. + +### Bug Fixes + - Fixed an issue with context cancellation for integration requests. + - Fixed an issue preventing the retrieval of SAML metadata. + - Fixed an issue causing an empty channel switcher after converting a group message to a private channel. + - Fixed an issue where System Admins were not allowed to LDAP sync SAML users when ``SamlSettings.EnableSyncWithLdap`` was set to **true**. + - Fixed an issue with markdown in the AD job status table. + - Fixed an issue with a control character in the group list modal. + - Fixed an issue where the auto-complete channels API returned archived channels in response. + - Fixed a crash issue in the **System Console**. + - Fixed an issue where links included in notifications were truncated and not clickable. + - Fixed using local requests instead of HTTP requests in the flow library. + - Fixed an issue where ``support_packet.yaml`` wasn’t generated even if an error occurred. + - Fixed an issue where outgoing webhooks did not trigger when using multiple callback URLs. + - Fixed an issue where it was not possible to clear plugin settings with a default value in the **System Console**. + - Fixed an issue where ``MaxUsersForStatistics`` wasn’t ignored when generating a Support Packet. + - Fixed an issue where the ``EnsureBot`` function did not recreate the bot if it had been manually deleted. + - Fixed an issue where users couldn't look up a user by their ID in the **System Console** anymore. + - Fixed an accessibility issue where the focus didn’t go back to the originating button when a modal was closed. + - Fixed an issue where end users were not allowed to fetch the group members list of groups that allow ``@-mentions``. + +### config.json +New setting option were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``FileSettings`` in ``config.json``: + - Added ``AmazonS3UploadPartSizeBytes`` and ``ExportAmazonS3UploadPartSizeBytes`` to control the part size used to upload files to an S3 store. + - Under ``ServiceSettings`` in ``config.json``: + - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. + - Under ``ClusterSettings`` in ``config.json``: + - Removed unused settings ``StreamingPort``, ``MaxIdleConns``, ``MaxIdleConnsPerHost`` and ``IdleConnTimeoutMilliseconds``. + + #### Changes to Professional and Enterprise plans: + - Under ``ExperimentalSettings`` in ``config.json``: + - Removed the ``UseNewSAMLLibrary`` experimental setting. + +### Go Version + - v9.8 is built with Go ``v1.21.8``. + +### Known Issues + - Status may sometimes get stuck as **Away** or **Offline** with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [Amir-Helali](https://github.com/Amir-Helali), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [annaos](https://github.com/annaos), [apshada](https://github.com/apshada), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [aszakacs](https://github.com/aszakacs), [BarbUk](https://github.com/BarbUk), [BenCookie95](https://github.com/BenCookie95), [Blaieet](https://github.com/Blaieet), [calebroseland](https://github.com/calebroseland), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyrusjc](https://github.com/cyrusjc), [daran9](https://github.com/daran9), [devharipragaz007](https://github.com/devharipragaz007), [devinbinnie](https://github.com/devinbinnie), [dsspence](https://github.com/dsspence), [Eleferen](https://translate.mattermost.com/user/Eleferen), [EltonGohJH](https://github.com/EltonGohJH), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [ezekielchow](https://github.com/ezekielchow), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [gitairman](https://github.com/gitairman), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [hossain-sazzad](https://github.com/hossain-sazzad), [ifoukarakis](https://github.com/ifoukarakis), [inconnu1](https://github.com/inconnu1), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [josephjose](https://github.com/josephjose), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jupenur](https://github.com/jupenur), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kaoski](https://github.com/kaoski), [Karimaljandali](https://github.com/Karimaljandali), [kayazeren](https://github.com/kayazeren), [KrisSiegel](https://github.com/KrisSiegel), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lbr88](https://github.com/lbr88), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [mahdiirar](https://github.com/mahdiirar), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MeHow25](https://github.com/MeHow25), [mentz](https://translate.mattermost.com/user/mentz), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [movion](https://github.com/movion), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [Nityanand13](https://github.com/Nityanand13), [nmnj](https://translate.mattermost.com/user/nmnj), [Obbi89](https://github.com/Obbi89), [pacop](https://github.com/pacop), [phoinixgrr](https://github.com/phoinixgrr), [Pkarle](https://github.com/Pkarle), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [potatogim](https://github.com/potatogim), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahimrahman](https://github.com/rahimrahman), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [RS-labhub](https://github.com/RS-labhub), [Rutam21](https://github.com/Rutam21), [s-krishnaraju](https://github.com/s-krishnaraju), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [ThrRip](https://github.com/ThrRip), [tnir](https://github.com/tnir), [toninis](https://github.com/toninis), [topolovac](https://github.com/topolovac), [varghesejose2020](https://github.com/varghesejose2020), [wetneb](https://github.com/wetneb), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [zsrv](https://github.com/zsrv) + +---- + +(release-v9-7-feature-release)= +## Release v9.7 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.7.6, released 2024-07-02** + - Mattermost v9.7.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. + - Mattermost v9.7.6 contains no database or functional changes. +- **9.7.5, released 2024-06-03** + - Mattermost v9.7.5 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.7.5 contains no database or functional changes. +- **9.7.4, released 2024-05-15** + - Fixed an issue with context cancellation for integration requests [MM-58019](https://mattermost.atlassian.net/browse/MM-58019). + - Fixed some plugin settings with defaults not changing value [MM-58102](https://mattermost.atlassian.net/browse/MM-58102). + - Mattermost v9.7.4 contains no database or functional changes. +- **9.7.3, released 2024-04-30** + - Fixed an issue where creating a Direct Message channel with synthetic users failed [MM-58019](https://mattermost.atlassian.net/browse/MM-58019). + - Mattermost v9.7.3 contains no database or functional changes. +- **9.7.2, released 2024-04-25** + - Mattermost v9.7.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.7.2 contains no database or functional changes. + - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). + - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. + - Fixed an issue where it was not possible to clear the plugin settings with a default value in the System Console. +- **9.7.1, released 2024-04-16** + - Fixed an issue with a noisy log entry for permalink post notifications. + - Mattermost v9.7.1 contains no database or functional changes. +- **9.7.0, released 2024-04-16** + - Original 9.7.0 release. + +```{Important} +If you upgrade from a release earlier than v9.6, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/mattermost-v9-7-changelog/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Added Mattermost [AI plugin](https://github.com/mattermost/mattermost-plugin-ai) to pre-packaged plugins. + - Pre-packaged Calls version [v0.25.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.25.1). + - Pre-packaged Playbooks version [v1.39.2](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.2). + - Pre-packaged GitHub plugin version [v2.2.0](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.2.0). + - The first emoji is now auto-selected in the emoji picker. + - Added Markdown support for batched email notifications. + - Users’ timezone is now used in batched email notifications. + - Removed a conflicting class (``help-text``) from the interactive dialog field description to resolve the black text color in the dark theme. + - Updated the user interface of **Team Settings** modal. + - Promoted Simplified Chinese to Beta, and downgraded Hungarian and Spanish languages to Beta. + - Improved the opening animation of the user settings modal. + +#### Administration + - Upgraded ``@mattermost/client`` and ``@mattermost/types`` to support TypeScript v5.x. + - Enforced safety limit in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable, and when the count of users who are registered, but not deactivated, exceeds 11,000. ERROR_SAFE_LIMITS_EXCEEDED. + - Dropped pre-packaged plugins for unsupported OS and architectures. + - Implemented a new **Export Settings** page in the **System Console** to allow Cloud administrators to customize their dedicated export S3 buckets. + - LDAP job details are no longer shown until the job runs. + - Added more logging to the ``NotificationsLog``. + - A message is now logged when a user tries to log in using an incorrect password. + - Posts from deactivated users are now included in **Direct Message** channel exports. Also the ``--include-archived-channels`` flag is now respected for **Direct Message** channels. + - Changed the cache headers for file endpoints to cache privately for 24 hours, instead of not caching at all. + - Improved the performance of the ElasticSearch indexing job in PostgreSQL installations. + - Moved following functions from server to public utils: + - ``ResetReadTimeout`` + - ``AppendMultipleStatementsFlag`` + - ``SetupConnection`` + - ``SanitizeDataSource`` + +#### mmctl + - mmctl can now be used to download a Support Packet using ``--local mode``. + - mmctl system ping will now return detailed server status even if the server status is unhealthy. + +### Bug Fixes + - Fixed an issue where the Desktop App login flow would erroneously show the landing page for first time users. + - Fixed an issue where a right-hand side card was not reloaded when the card body was updated. + - Fixed an issue where ``en-AU`` language selection was not allowed. + - Fixed an issue with the position of text in the default profile picture. + - Fixed an issue with the group search to parse the display name. + - Fixed an issue where items with longer text did not widen the user guide dropdown to its max-width. + - Fixed an issue where the configuration could not be updated from the **System Console** in cloud environments. + +### config.json +A new setting option was added to ``config.json``. Below is a list of the addition and its default value on install. The setting can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``CloudSettings`` in ``config.json``: + - Added a new configuration setting ``Disable`` (via config.json, or environment variable), default ``false``. When set to ``true``, all requests to the Mattermost Customer Portal from a workspace will be disabled. + +### Open Source Components + - Added ``stylelint`` to https://github.com/mattermost/mattermost/. + +### Go Version + - v9.7 is built with Go ``v1.20.7``. + +### Known Issues + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [2017Yasu](https://github.com/2017Yasu), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [amyblais](https://github.com/amyblais), [andriumm](https://github.com/andriumm), [angeloskyratzakos](https://github.com/angeloskyratzakos), [annaos](https://github.com/annaos), [apshada](https://github.com/apshada), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [Blaieet](https://github.com/Blaieet), [calebroseland](https://github.com/calebroseland), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [dipaksinha1](https://github.com/dipaksinha1), [doc-sheet](https://github.com/doc-sheet), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [ezekielchow](https://github.com/ezekielchow), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [hossain-sazzad](https://github.com/hossain-sazzad), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [iyampaul](https://github.com/iyampaul), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [Linkinlog](https://github.com/Linkinlog), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [morgancz](https://github.com/morgancz), [mozi47](https://github.com/mozi47), [mvitale1989](https://github.com/mvitale1989), [nab-77](https://github.com/nab-77), [nachtjasmin](https://github.com/nachtjasmin), [natalie-hub](https://github.com/natalie-hub), [neflyte](https://github.com/neflyte), [nickmisasi](https://github.com/nickmisasi), [phoinixgrr](https://github.com/phoinixgrr), [poppfredslund](https://translate.mattermost.com/user/poppfredslund), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [RyoKub](https://github.com/RyoKub), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://translate.mattermost.com/user/Sharuru), [sinansonmez](https://github.com/sinansonmez), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [ThrRip](https://github.com/ThrRip), [toninis](https://github.com/toninis), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [vishal-rathod-07](https://github.com/vishal-rathod-07), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [Wing0515](https://github.com/Wing0515), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1) + +---- + +(release-v9-6-feature-release)= +## Release v9.6 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.6.3, released 2024-06-03** + - Mattermost v9.6.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue with some plugin settings with defaults not changing value. + - Mattermost v9.6.3 contains no database or functional changes. +- **9.6.2, released 2024-04-25** + - Mattermost v9.6.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.6.2 contains no database or functional changes. + - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). + - Fixed an issue where it was not possible to clear the plugin settings with a default value in the System Console. +- **9.6.1, released 2024-03-26** + - Mattermost v9.6.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.6.1 contains no database or functional changes. + - Fixed an issue where the configuration could not be updated from the System Console in cloud environments. +- **9.6.0, released 2024-03-15** + - Original 9.6.0 release. + +### Compatibility + - Updated minimum required Edge and Chrome versions to 120+. + +```{Important} +If you upgrade from a release earlier than v9.5, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://mattermost.com/video/changelog-v9-6/) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged Calls version [v0.24.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.24.0). + - Pre-packaged GitLab plugin version [v1.8.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.8.0). + - Added the [Outgoing OAuth Connections](https://developers.mattermost.com/integrate/slash-commands/outgoing-oauth-connections/) integration type. + - Re-designed the **System Console > User Management** screen, and added the ability to batch export users in CSV format (Professional and Enterprise plans). On MySQL, users cannot view live results of the batch export in the user interface. + - Improved the appearance of profile/account menus. + - Added support for checkbox types in the **System Console** settings. + - Added support for WebP image previews in the web app similar to PNG and other image formats. + - Several pre-packaged plugins were removed. + +#### Administration + - Removed some unused Redux actions and reducers, including ``state.entities.posts.selectedPostId``. + - Limited the number of user preference updates to 10 per call. + - Clarified that the LDAP profile picture setting is optional. + +#### mmctl + - Extended mmctl with support for user preferences. + +### Bug Fixes + - Fixed an issue with switching to a **Direct Message** channel with a shared channel user (user from another server). + - Fixed an issue with extra space getting added to code blocks in search results. + - Fixed an issue where deactivated members were not included in a favorited **Direct Message** channel export. + - Fixed an issue where password strength settings wouldn't be disabled if they were set through environment variables. + - Fixed an issue where post mentions would grow outside the viewport on small devices. + - Fixed an issue with draft removal after deleting the post. + - Fixed a markdown issue where, on some occasions, extra space was found before a list. + - Fixed an issue where a sender to a custom group would also receive the message notification themselves. + - Fixed a web app crash when a System Admin clicked on a link to a private channel that they were not a member of. + - Fixed ``ChannelHasBeenCreated`` plugin hook not being called when a group channel was created. + - Fixed thread notifications so that if a user had **Thread Reply Notifications** disabled for your account and **Automatically follow threads in this channel** enabled for a channel, the user wouldn't receive thread notifications for that channel per global setting. + +### config.json + - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to the Enterprise plan: + - Under ``ServiceSettings`` in ``config.json``: + - Added ``EnableOutgoingOAuthConnections`` configuration setting for Outgoing OAuth Connections integration type. + +### Open Source Components + - Added ``@floating-ui/react``, and removed ``@floating-ui/react-dom`` and ``@floating-ui/react-dom-interactions`` from https://github.com/mattermost/mattermost/. + +### Go Version + - v9.6 is built with Go ``v1.20.7``. + +### Known Issues + - Users' initial status is not always loaded correctly [MM-56966](https://mattermost.atlassian.net/browse/MM-56966). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + +### Contributors + - [abdesslamhouioui](https://github.com/abdesslamhouioui), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [Alpha-4](https://github.com/Alpha-4), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [apshada](https://github.com/apshada), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [avas27JTG](https://github.com/avas27JTG), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [bewing](https://github.com/bewing), [calebroseland](https://github.com/calebroseland), [carydrew](https://github.com/carydrew), [Chlbek](https://translate.mattermost.com/user/Chlbek), [compiledsound](https://github.com/compiledsound), [cpatulea](https://github.com/cpatulea), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [edu-ap](https://github.com/edu-ap), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [esarafianou](https://github.com/esarafianou), [ewwollesen](https://github.com/ewwollesen), [gabrieljackson](https://github.com/gabrieljackson), [gourav-varma](https://github.com/gourav-varma), [Gregesp](https://github.com/Gregesp), [grundleborg](https://github.com/grundleborg), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [iabdousd](https://github.com/iabdousd), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [it33](https://github.com/it33), [jespino](https://github.com/jespino), [jlandells](https://github.com/jlandells), [johndavidlugtu](https://github.com/johndavidlugtu), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [juliovillalvazo](https://github.com/juliovillalvazo), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lucassabreu](https://github.com/lucassabreu), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [MixeroTN](https://translate.mattermost.com/user/MixeroTN), [mjnagel](https://github.com/mjnagel), [morgancz](https://translate.mattermost.com/user/morgancz), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [nokedajunky](https://github.com/nokedajunky), [olavinto](https://github.com/olavinto), [oOoBenoitoOo](https://github.com/oOoBenoitoOo), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rOt779kVceSgL](https://translate.mattermost.com/user/rOt779kVceSgL), [sadohert](https://github.com/sadohert), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://translate.mattermost.com/user/Sharuru), [sinansonmez](https://github.com/sinansonmez), [sohzm](https://github.com/sohzm), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [TealWater](https://github.com/TealWater), [ThrRip](https://github.com/ThrRip), [titanventura](https://github.com/titanventura), [toninis](https://github.com/toninis), [trangology](https://github.com/trangology), [trivikr](https://github.com/trivikr), [tsabi](https://github.com/tsabi), [Utsav-Ladani](https://github.com/Utsav-Ladani), [varghesejose2020](https://github.com/varghesejose2020), [vidhisaini10](https://github.com/vidhisaini10), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yeoji](https://github.com/yeoji) + +---- + +(release-v9-5-extended-support-release)= +## Release v9.5 - [Extended Support Release](https://docs.mattermost.com/upgrade/release-definitions.html#extended-support-release-esr) + +- **9.5.14, released 2025-05-09** + - Upgraded logr dependency to v2.0.22 for multiple improvements and bug fixes. + - Mattermost v9.5.14 contains no database or functional changes. +- **9.5.13, released 2024-11-14** + - Mattermost v9.5.13 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Calls plugin [v0.29.4](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.4). + - Mattermost v9.5.13 contains no database or functional changes. +- **9.5.12, released 2024-10-28** + - Mattermost v9.5.12 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed desyncing issues with unreads between the team sidebar and the title bar [MM-54021](https://mattermost.atlassian.net/browse/MM-54021). + - Mattermost v9.5.12 contains no database or functional changes. +- **9.5.11, released 2024-10-10** + - Mattermost v9.5.11 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue with YouTube previews no longer being displayed [MM-60351](https://mattermost.atlassian.net/browse/MM-60351). + - Pre-packaged Calls plugin [v0.29.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.29.2). + - Improved the performance of LDAP sync jobs when group-contained teams and channels are used [MM-60253](https://mattermost.atlassian.net/browse/MM-60253). + - Mattermost v9.5.11 contains no database or functional changes. +- **9.5.10, released 2024-09-26** + - Mattermost v9.5.10 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed racy use of session in ``NewWebConn`` [MM-60307](https://mattermost.atlassian.net/browse/MM-60307). + - Pre-packaged Playbooks plugin [v1.40.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.40.0). + - Mattermost v9.5.10 contains no database or functional changes. +- **9.5.9, released 2024-08-27** + - Mattermost v9.5.9 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.9 contains no database or functional changes. +- **9.5.8, released 2024-07-22** + - Mattermost v9.5.8 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.8 contains no database or functional changes. +- **9.5.7, released 2024-07-02** + - Mattermost v9.5.7 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue where banners set by system administrators did not stack below system banners, but rather appeared underneath them. Existing system banners have remained unchanged. + - Added a new configuration setting ``CloudSettings.Disable`` (via config.json, or environment variable), default ``false``. When set to ``true``, all requests to the Mattermost Customer Portal from a workspace will be disabled. + - Fixed an issue where the user status would incorrectly be set to offline without checking for connections in other nodes in an High Availability cluster [MM-57153](https://mattermost.atlassian.net/browse/MM-57153). + - Fixed an issue where users could not see the member count in the **Browse Channels** dialog on some servers [MM-56266](https://mattermost.atlassian.net/browse/MM-56266). + - Increased the maximum length of the ``Value`` column of the ``Preferences`` table [MM-57913](https://mattermost.atlassian.net/browse/MM-57913). + - Mattermost v9.5.7 contains no database or functional changes. +- **9.5.6, released 2024-06-03** + - Mattermost v9.5.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.6 contains no database or functional changes. +- **9.5.5, released 2024-05-15** + - Fixed an issue where the user status would incorrectly get stuck to online after the user closed their tab [MM-57885](https://mattermost.atlassian.net/browse/MM-57885). + - Mattermost v9.5.5 contains no database or functional changes. +- **9.5.4, released 2024-04-25** + - Mattermost v9.5.4 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.4 contains no database or functional changes. + - Pre-packaged Playbooks version [v1.39.3](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.3). + - Increased the default payload size limit (``MaximumPayloadSizeBytes``) from 100 kB to 300 kB. Existing servers need to manually update this value. + - Fixed an issue with context cancellation for integration requests. + - Fixed an issue where end users were not allowed to fetch the group members list of groups that allow ``@-mentions``. +- **9.5.3, released 2024-03-26** + - Mattermost v9.5.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.3 contains no database or functional changes. + - Improved the performance of the ElasticSearch indexing job in PostgreSQL installations. +- **9.5.2, released 2024-03-06** + - Mattermost v9.5.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.2 contains no database or functional changes. + - Fixed ``ChannelHasBeenCreated`` plugin hook not being called when a group channel was created. +- **9.5.1, released 2024-02-16** + - Mattermost v9.5.1 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.5.1 contains no database or functional changes. +- **9.5.0, released 2024-02-16** + - Original 9.5.0 release. + +### Important Upgrade Notes + - We have stopped supporting MySQL v5.7 since it's at the end of life. We urge customers to upgrade their MySQL instance at their earliest convenience. + +```{Important} +If you upgrade from a release earlier than v9.4, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Improvements + +See [this walkthrough video](https://www.youtube.com/watch?v=b1M2BGGF578&feature=youtu.be) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Pre-packaged Calls version [v0.23.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.23.1). + - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). + - Improved the behavior of suggestion boxes when changing the caret position. + - Changed the time for tomorrow in the **Do Not Disturb** timer and post reminder to refer to the next day at 9:00am instead of 24hrs from the time of activation. + - Updated message timestamp tooltips to include seconds. + - Added a new Wrangler feature to be able to move threads (Experimental). Moving threads requires a Professional/Enterprise license to activate. This feature is not yet recommended for production use. A new feature flag ``MoveThreadsEnabled`` was added and is default OFF. Changing this value to ON will enable the experimental **Move Threads** feature. + - Applied a wording change for active and activated users in the **System Console** user list. + - Applied a wording change for active and activated users in the **Team Statistics** page. + +#### Administration + - Added safety limit error message in compiled Team Edition and Enterprise Edition deployments when enterprise scale and access control automation features are unavailable and count of users who are registered and not deactivated exceeds 10,000. ERROR_SAFE_LIMITS_EXCEEDED. + - The ``where`` field is now rendered in ``model.AppError`` only when it's present. + - Added Outgoing Oauth implementation ``Get``/``List`` logic. + - The mmctl bulk import process command in local mode now supports processing an import file without actually uploading it to the server. Simply pass the file path to the import file and the server will directly read from it, and pass the ``--bypass-upload`` flag. There is no need to use the import upload command. NOTE: all of this is applicable only in local mode. + - Added **Monthly Active Users** (MAU) as part of the true-up report. + - Prometheus metrics are now available under the Source Available License. + +#### Performance + - Optimized ``createPost`` performance. + - Improved the performance of emoji uploads. + - Made small optimizations in several database calls: + - ``App.HasPermissionToChannel`` + - ``getPostsForChannelAroundLastUnread`` + - ``publishWebsocketEventForPermalinkPost`` + - ``countMentionsFromPost`` + +#### Plugins + - Plugins are now allowed to register user settings. + - Plugins can now register an action in the **User Settings** section. Plugins can also now disable a section in their **User Settings**. + - Included session id in request payload of the ``WebSocketMessageHasBeenPosted`` plugin hook. + +### Bug Fixes + - Fixed an issue where the right-hand side stopped getting the focus when navigating from **Global Threads** or **Global Drafts**. + - Fixed a theme issue in the notification settings. + - Fixed a regression in compliance exports which did not allow the export job to be canceled gracefully on server shutdown. + - Fixed an error where posts dismissed by a plugin were not properly removed from the view. + - Fixed an issue where if there were multiple websocket connections from a single user, then in case one connection got removed during a broadcast, there was a possibility that the other good connection would not get the event. + - Fixed an issue with true-up reports sending active users and not activated users. + - Fixed an issue where users were not able to navigate through links to private channels they are member of with certain configurations. + +### config.json + - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``ServiceSettings`` in ``config.json``: + - Added ``MaximumPayloadSizeBytes`` to add a limit to the payload size of API endpoints passing in arrays. + - Added a configuration setting ``OutgoingIntegrationRequestsDefaultTimeout`` for integration requests. + +#### Changes to the Professional and Enterprise plans: + - Under ``WranglerSettings`` in ``config.json``: + - Added ``AllowedEmailDomain`` - a CSV list of strings, where each is an email domain that is allowed to use the feature (e.g. - on community.mattermost.com, ``mattermost.com`` would allow staff to move a thread, while non-staff cannot). + - ``MoveThreadMaxCount`` - a number representing the maximum number of posts that can be in a thread for it to be moveable. + - ``MoveThreadToAnotherTeamEnable`` - a boolean value representing whether moving should work across teams. + - ``MoveThreadFromPrivateChannelEnable`` - a boolean value representing whether moving should work from within a private channel. + - ``MoveThreadFromDirectMessageChannelEnable`` - a boolean value representing whether moving should be allowed from within a group message. + +#### Changes to the Enterprise plan: + - Under ``DataRetentionSettings`` in ``config.json``: + - Added two new configuration settings, ``MessageRetentionHours`` and ``FileRetentionHours``, in order to support setting your global retention time in hours. ``DataRetentionSettings.MessageRetentionDays`` and ``DataRetentionSettings.FileRetentionDays`` are deprecated but we will continue to use their value until you set something for their hours equivalent. If Days are set then the hours configuration must be 0 and if hours is set then the days config must be 0. We do not support hours for granular retention policies. Due to how our Elasticsearch indexes are stored, Data retention will now also remove elastic search indexes equal to the day of the retention cut-off time. + +### API Changes + - Added a new API endpoint ``POST /api/v4/posts//move``. + - Added ``UpdateChannelMembersNotifications`` plugin API. + - Added plugin APIs and hooks for accessing the **Shared Channels** service via plugins. + - Added a limit to the payload size of API endpoints passing in arrays. + - Added ``PreferencesHaveChanged`` plugin hook. + - Added ``GetPreferenceForUser`` plugin API. + - Added a new API endpoint ``GET /api/v4/users/report`` for system admin user reporting. + - Added a new API endpoint ``GET /api/v4/reports/users/count``. + +### Open Source Components + - Added ``@tanstack/react-table`` and ``prometheus/client_model`` to https://github.com/mattermost/mattermost/. + +### Go Version + - v9.5 is built with Go ``v1.20.7``. + +### Known Issues + - User autocomplete no longer stays closed after pressing ESC key [MM-56748](https://mattermost.atlassian.net/browse/MM-56748). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akbarkz](https://translate.mattermost.com/user/akbarkz), [amyblais](https://github.com/amyblais), [andriuspetrauskis](https://github.com/andriuspetrauskis), [andriuspre](https://github.com/andriuspre), [angeloskyratzakos](https://github.com/angeloskyratzakos), [asaadmahmood](https://github.com/asaadmahmood), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [azistellar](https://translate.mattermost.com/user/azistellar), [azizthegit](https://github.com/azizthegit), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [c0d33ngr](https://github.com/c0d33ngr), [catenacyber](https://github.com/catenacyber), [cedricongjh](https://github.com/cedricongjh), [Chlbek](https://translate.mattermost.com/user/Chlbek), [chriswachira](https://github.com/chriswachira), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [cripton](https://github.com/cripton), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyberjam](https://github.com/cyberjam), [devinbinnie](https://github.com/devinbinnie), [duttakapil](https://github.com/duttakapil), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [GabrielCasaro](https://github.com/GabrielCasaro), [gabrieljackson](https://github.com/gabrieljackson), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [heisdinesh](https://github.com/heisdinesh), [hmhealey](https://github.com/hmhealey), [hynex](https://translate.mattermost.com/user/hynex), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jones](https://translate.mattermost.com/user/jones), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kerochelo](https://github.com/kerochelo), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matoro](https://github.com/matoro), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mkaraki](https://github.com/mkaraki), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [Nityanand13](https://github.com/Nityanand13), [norma596](https://translate.mattermost.com/user/norma596), [Omar8345](https://github.com/Omar8345), [phoinixgrr](https://github.com/phoinixgrr), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [Rutam21](https://github.com/Rutam21), [RyoKub](https://github.com/RyoKub), [sapnasivakumar](https://github.com/sapnasivakumar), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [ShrootBuck](https://github.com/ShrootBuck), [SkyDusH](https://translate.mattermost.com/user/SkyDusH), [sonichigo](https://github.com/sonichigo), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [TealWater](https://github.com/TealWater), [thinkGeist](https://github.com/thinkGeist), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [titanventura](https://github.com/titanventura), [toninis](https://github.com/toninis), [trangology](https://github.com/trangology), [tsabi](https://translate.mattermost.com/user/tsabi), [Utsav-Ladani](https://github.com/Utsav-Ladani), [varghesejose2020](https://github.com/varghesejose2020), [vish9812](https://github.com/vish9812), [VishalB98](https://github.com/VishalB98), [wiggin77](https://github.com/wiggin77), [Willy-Wakam](https://github.com/Willy-Wakam), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yaz](https://translate.mattermost.com/user/yaz), [yomiadetutu1](https://github.com/yomiadetutu1) + +---- + +(release-v9-4-feature-release)= +## Release v9.4 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.4.5, released 2024-03-26** + - Mattermost v9.4.5 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.4.5 contains no database or functional changes. +- **9.4.4, released 2024-03-06** + - Mattermost v9.4.4 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.4.4 contains no database or functional changes. +- **9.4.3, released 2024-02-14** + - Mattermost v9.4.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.4.3 contains no database or functional changes. + - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). +- **9.4.2, released 2024-01-30** + - Mattermost v9.4.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Fixed an issue with true-up reports sending active users and not activated users. Added **Monthly Active Users** (MAU) as part of the true-up reports. + - Mattermost v9.4.2 contains no database or functional changes. +- **9.4.1, released 2024-01-16** + - Fixed an issue where ``getChannelMemberOnly`` failed to fetch data when certain fields were NULL. +- **9.4.0, released 2024-01-16** + - Original 9.4.0 release. + +### Important Upgrade Notes + - MySQL v5.7 is at end of life. We recommend all customers to upgrade to at least 8.x. For now, we are logging a warning. From Mattermost v9.5, which is the next Extended Support Release, we will stop supporting MySQL v5.7 altogether. + +```{Important} +If you upgrade from a release earlier than v9.3, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Compatibility + - Updated the minimum required Edge version to v118+. + +### Improvements + +See [this walkthrough video](https://www.youtube.com/watch?v=bEMp4vYLi6c&feature=youtu.be&ab_channel=Mattermost) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Updated the pre-packaged GitHub plugin version to [v2.1.7](https://github.com/mattermost/mattermost-plugin-github/releases/tag/v2.1.7). + - Pre-packaged Calls plugin version [v0.22.2](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.22.2). + - Improved the user interface of the channel notifications modal. + - Emojis are now enlarged in emoji tooltips on mouse hover. + - Added a gap of 8px between buttons in the modal footer when opened in the mobile web view. + - Updated empty states to align with new branding and made changes to the empty state copy. + - Adjusted the position of the suggestion list in "Add to a channel" modal to be below or above the text field. + +#### Administration + - Added support for IP Filtering in Cloud (Cloud Enterprise plan) (this feature is disabled by default and behind a feature flag). + - Added support for Bring Your Own Key (BYOK) Encryption (Cloud Enterprise plan). + - An optional dedicated filestore is now used for compliance exports if configured (Cloud Enterprise plan). + - ``MessageExportSettings.GlobalRelaySettings.CustomerType`` now supports "CUSTOM". + - Added new ``ServerMetrics`` hook to allow plugins to register a custom HTTP endpoint to serve their metrics under the server's metrics HTTP listener. + - Admins now have the ability to pipe the output of ``mmctl websocket`` into the JSON parser. + - Added stores for OAuth **Outgoing Connections**. + - Added last login timestamp for users, and added a materialized view and a refresh job to keep track of post stats for PostgreSQL. + - Allowed plugin requests to include **Authorization** headers from external systems. + - Added a mmctl command ``mmctl system supportpacket`` to download the **Support Packet**. + - Added a new mmctl command ``oauth list`` for listing registered OAuth2 applications. + +### Bug Fixes + - Fixed an issue with the emoji reaction toggle behavior. + - Fixed an issue with the spacing between Playbooks and the separator in the Apps bar. + +### config.json + - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``RefreshPostStatsRunTime`` in ``config.json``: + - Added ``RefreshPostStatsRunTime`` to add last login timestamp for users and to add materialized view and refresh job to keep track of post stats for PostgreSQL. + +#### Changes to the Enterprise plan: + - Under ``GlobalRelayMessageExportSettings`` in ``config.json``: + - Added two new configuration settings ``CustomSMTPServerName`` and ``CustomSMTPPort`` to allow setting a custom URL and port for Global Relay export. This enables compliance export to integrate with Proofpoint. + +### Open Source Components: + - Added ``@mattermost/desktop-api`` and ``ipaddr.js`` to https://github.com/mattermost/mattermost/. + +### Go Version + - v9.4 is built with Go ``v1.20.7``. + +### Known Issues + - Non-channel-admin users can no longer use message links in private channels [MM-56575](https://mattermost.atlassian.net/browse/MM-56575). + - Preview doesn't work when editing a channel header [MM-56572](https://mattermost.atlassian.net/browse/MM-56572). + - The channel member count shows as zero in the **Browse channels** modal [MM-56266](https://mattermost.atlassian.net/browse/MM-56266). + - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [AayushChaudhary0001](https://github.com/AayushChaudhary0001), [aditipatelpro](https://github.com/aditipatelpro), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akbarkz](https://github.com/akbarkz), [Alpha-4](https://github.com/Alpha-4), [amyblais](https://github.com/amyblais), [andrius](https://translate.mattermost.com/user/andrius), [andriuspetrauskis](https://github.com/andriuspetrauskis), [andrleite](https://github.com/andrleite), [arthurhrg](https://github.com/arthurhrg), [arush-vashishtha](https://github.com/arush-vashishtha), [asaadmahmood](https://github.com/asaadmahmood), [avas27JTG](https://github.com/avas27JTG), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [caotanduc99](https://github.com/caotanduc99), [CI-YU](https://github.com/CI-YU), [codejagaban](https://github.com/codejagaban), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [cyberjam](https://github.com/cyberjam), [danielsischy](https://github.com/danielsischy), [Dev-A-Line](https://translate.mattermost.com/user/Dev-A-Line), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [dkkb](https://github.com/dkkb), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [fmartingr](https://github.com/fmartingr), [FokinAleksandr](https://github.com/FokinAleksandr), [GabrielCasaro](https://github.com/GabrielCasaro), [gabrieljackson](https://github.com/gabrieljackson), [gabsfrancis](https://translate.mattermost.com/user/gabsfrancis), [grundleborg](https://github.com/grundleborg), [hanzei](https://github.com/hanzei), [harsh4723](https://github.com/harsh4723), [harshilsharma63](https://github.com/harshilsharma63), [hasancankucuk](https://github.com/hasancankucuk), [hereje](https://github.com/hereje), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://translate.mattermost.com/user/jprusch), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [lindalumitchell](https://github.com/lindalumitchell), [ludvigbolin](https://github.com/ludvigbolin), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [morgancz](https://github.com/morgancz), [mvitale1989](https://github.com/mvitale1989), [neflyte](https://github.com/neflyte), [nickmisasi](https://github.com/nickmisasi), [Paul-Stern](https://github.com/Paul-Stern), [pgteekens](https://translate.mattermost.com/user/pgteekens), [phoinixgrr](https://github.com/phoinixgrr), [PromoFaux](https://github.com/PromoFaux), [PulkitGarg-code](https://github.com/PulkitGarg-code), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rajatdangat](https://github.com/rajatdangat), [relwell](https://github.com/relwell), [roaslin](https://github.com/roaslin), [rohan-kapse](https://github.com/rohan-kapse), [rohitkbc](https://github.com/rohitkbc), [Rutam21](https://github.com/Rutam21), [RyoKub](https://github.com/RyoKub), [saakshiraut28](https://github.com/saakshiraut28), [San4es](https://github.com/San4es), [sapnasivakumar](https://github.com/sapnasivakumar), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [ShlokJswl](https://github.com/ShlokJswl), [sinansonmez](https://github.com/sinansonmez), [srappan](https://github.com/srappan), [sri-byte](https://github.com/sri-byte), [srisri332](https://github.com/srisri332), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [svelle](https://github.com/svelle), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [TealWater](https://github.com/TealWater), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [toninis](https://github.com/toninis), [tsabi](https://github.com/tsabi), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [Vinecreeper888](https://github.com/Vinecreeper888), [weblate](https://github.com/weblate), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) + +---- + +(release-v9-3-feature-release)= +## Release v9.3 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.3.3, released 2024-03-06** + - Mattermost v9.3.3 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.3.3 contains no database or functional changes. +- **9.3.2, released 2024-02-14** + - Mattermost v9.3.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.3.2 contains no database or functional changes. + - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). +- **9.3.1, released 2024-01-30** + - Mattermost v9.3.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.3.1 contains no database or functional changes. +- **9.3.0, released 2023-12-15** + - Original 9.3.0 release. + +### Important Upgrade Notes + - Please read the [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html) before upgrading. + +### Compatibility + - Updated minimum required Firefox version to v115+. + - Updated minimum supported Chromium version to 118+. + +### Improvements + +See [this walkthrough video](https://www.youtube.com/watch?v=eXA8emM97Bo) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Updated pre-packaged Playbooks plugin version to [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). + - Updated pre-packaged Calls version to [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). + - Updated pre-packaged Jira plugin version to [v4.0.1](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.0.1). Also see [v4.0.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.0.0) for recent breaking changes. + - Added Vietnamese (Beta) as a new language. + - Added the ability to passively track keywords with highlights without triggering a notification (Professional and Enterprise plans). + - Updated the **Settings** modal with an improved user interface. + - Added a new **Jump to recents** banner when a channel is scrolled up. + - Modified the behavior of the code button (Ctrl+Alt+C) to create inline codes or code blocks. + - Disabled markdown keybindings within code blocks. + - Added a **Back** button to the ``/access_problem`` page. + - Added a default limit of the number of reactions per post. + +#### Performance + - Removed pre-fetch preference and set new prefetch limits for the webapp. + - Improved websocket event marshaling performance. + - Batched loading of recently used emojis on initial load. + +#### Administration + - The tooltip on the announcement bar in the **System Console** is now widened. + - Improved the error message when trying to activate a plugin in an unsupported environment. + - Added a file storage permission check to the workspace health dashboard. + - Performed a cleanup in preparation for adding support for multi-word keywords that trigger notification. + - Added a warning log message when the app runs as root. + - Removed all uses of the ``ExperimentalTimezone`` setting. The Timezone feature is now always enabled and no longer behind a configuration setting. + - Added support for previewing WebVTT attachments. + - Introduced separate ``AdvancedLogging`` levels for LDAP messages. + - Introduced trace logging level for LDAP messages. + - Added a new way to modify ``WebSocket`` messages sent to individual connections. + - Added a new server side hook ``MessagesWillBeConsumed`` to allow modifying post objects after they are grabbed from the database but before they are delivered to the client. This is behind a feature flag and disabled by default. + - Users and posts are now pretty-printed in the logs. + - Improved file extraction logging. + - Exposed ``ThreadView`` and ``AdvancedCreateComment`` components in the webapp plugin exported components list. + - Added **Logging > Advanced Logging** setting to the **System Console** to allow admins to configure custom log targets via the user interface. + +### Bug Fixes + - Fixed an issue where marking a Group Message as unread didn't show the badge count correctly. + - Fixed an issue where ``invite_id`` was being reset on all team changes. + - Fixed an issue where interactive dialog elements with subtype ``number`` didn't handle a ``0`` value properly. + - Fixed an issue with the download link in channel file search items when including a path in the **Site URL** setting. + - Fixed an issue with the formatting of special mentions in the right-hand side. + - Fixed ``MessageWillBeUpdated`` plugin hook to allow rejections. + - Fixed an issue with some shortcuts not working as expected. + - Fixed the message history not clearing the input on the center channel. + - Fixed an issue where a higher contrast was generated for some usernames. + - Fixed an issue where newly created Group Messages showed having 0 members. + - Fixed an issue where an incorrect timestamp was assigned to support packet files. + - Fixed an issue where the **Reset Password** link was not displayed if only LDAP/AD was enabled. + - Fixed an issue where **Recent Mentions** showed posts for other similar named users. + - Fixed an error that appeared when updating the header of Group Messages. + - Fixed an issue that caused the server to get stuck during shutdown due to a deadlock in a dependency. + - Fixed an issue where Desktop App clients would be shown an error when trying to open file preview links. + - Fixed an issue with double URL encoding of Oauth redirect URI params. + - Fixed an issue where users couldn't at-mention custom groups in group constrained teams and channels. + - Fixed an issue where the channel admin wasn't being set when converting a Group Message to a private channel. + +### config.json + - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Removed ``DisplaySettings.ExperimentalTimezone`` setting. + - Under ``ServiceSettings`` in ``config.json``: + - Added ``DefaultUniqueReactionsPerPost`` and ``MaxUniqueReactionsPerPost`` to fix an issue where invalid reactions could be added to posts and to add a default limit for the number of reactions per post. + +### API Changes + - Added an API to batch requests for custom emojis on page load. + +### Database Changes + - ``NextSyncAt`` and ``Description`` columns are removed from the ``SharedChannelsRemotes`` table. Migration impact is considered to be minimal considering the possible table size. + +### Go Version + - v9.3 is built with Go ``v1.20.7``. + +### Known Issues + - Mattermost Omnibus: Unable to install omnibus due to unmet dependencies [MM-56080](https://mattermost.atlassian.net/browse/MM-56080). + - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [AirGoatOne](https://github.com/AirGoatOne), [akbarkz](https://github.com/akbarkz), [amigo7kr](https://github.com/amigo7kr), [amyblais](https://github.com/amyblais), [anneschuth](https://github.com/anneschuth), [ARJ2160](https://github.com/ARJ2160), [Arslan-work](https://github.com/Arslan-work), [arthurh](https://translate.mattermost.com/user/arthurh), [arthurhrg](https://github.com/arthurhrg), [Aryakoste](https://github.com/Aryakoste), [asaadmahmood](https://github.com/asaadmahmood), [AshishDhama](https://github.com/AshishDhama), [avas27JTG](https://github.com/avas27JTG), [AvaterClasher](https://github.com/AvaterClasher), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BandhiyaHardik](https://github.com/BandhiyaHardik), [BenCookie95](https://github.com/BenCookie95), [Benjamin-Loison](https://github.com/Benjamin-Loison), [calebroseland](https://github.com/calebroseland), [catenacyber](https://github.com/catenacyber), [cedarice](https://github.com/cedarice), [CI-YU](https://github.com/CI-YU), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [Davut97](https://github.com/Davut97), [deepakumarvu](https://github.com/deepakumarvu), [devinbinnie](https://github.com/devinbinnie), [Dhoni77](https://github.com/Dhoni77), [DimitriDR](https://translate.mattermost.com/user/DimitriDR), [edwardnguyen225](https://github.com/edwardnguyen225), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [Emil-Carlsson](https://github.com/Emil-Carlsson), [enahum](https://github.com/enahum), [escofresco](https://github.com/escofresco), [fandour](https://translate.mattermost.com/user/fandour), [fazil-syed](https://github.com/fazil-syed), [fmartingr](https://github.com/fmartingr), [gabrieljackson](https://github.com/gabrieljackson), [hanzei](https://github.com/hanzei), [harshal2030](https://github.com/harshal2030), [harshilsharma63](https://github.com/harshilsharma63), [heisdinesh](https://github.com/heisdinesh), [hmhealey](https://github.com/hmhealey), [ifoukarakis](https://github.com/ifoukarakis), [imamimam113](https://github.com/imamimam113), [imkrishnasarathi](https://github.com/imkrishnasarathi), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jonathanwiemers](https://github.com/jonathanwiemers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [jwilander](https://github.com/jwilander), [kaakaa](https://github.com/kaakaa), [kapdev](https://translate.mattermost.com/user/kapdev), [kayazeren](https://github.com/kayazeren), [Kimbohlovette](https://github.com/Kimbohlovette), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [KuSh](https://github.com/KuSh), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [LeonardJouve](https://github.com/LeonardJouve), [lieut-data](https://github.com/lieut-data), [lindy65](https://github.com/lindy65), [linkvn](https://github.com/linkvn), [ludvigbolin](https://github.com/ludvigbolin), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [m1lt0n](https://github.com/m1lt0n), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [maxtrem271991](https://github.com/maxtrem271991), [mickmister](https://github.com/mickmister), [milotype](https://github.com/milotype), [mozi47](https://github.com/mozi47), [mvitale1989](https://github.com/mvitale1989), [nathanaelhoun](https://github.com/nathanaelhoun), [newdominic](https://github.com/newdominic), [nickmisasi](https://github.com/nickmisasi), [nosyn](https://github.com/nosyn), [otilor](https://github.com/otilor), [pacop](https://github.com/pacop), [Paul-Stern](https://github.com/Paul-Stern), [Paul-vrn](https://github.com/Paul-vrn), [phoinixgrr](https://github.com/phoinixgrr), [proggga](https://github.com/proggga), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [rahulsuresh-git](https://github.com/rahulsuresh-git), [rashmibharambe](https://github.com/rashmibharambe), [Reene-Simon](https://github.com/Reene-Simon), [rohan-kapse](https://github.com/rohan-kapse), [rohitkbc](https://github.com/rohitkbc), [rubinaga](https://github.com/rubinaga), [RyoKub](https://github.com/RyoKub), [san70sh](https://github.com/san70sh), [sapnasivakumar](https://github.com/sapnasivakumar), [sbishel](https://github.com/sbishel), [seoyeongeun](https://github.com/seoyeongeun), [Sharuru](https://github.com/Sharuru), [shivamjosh](https://github.com/shivamjosh), [sinansonmez](https://github.com/sinansonmez), [Sn-Kinos](https://github.com/Sn-Kinos), [sp6370](https://github.com/sp6370), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [sudheer121](https://github.com/sudheer121), [Syed-Ali-Abbas-Zaidi](https://github.com/Syed-Ali-Abbas-Zaidi), [tanmaythole](https://github.com/tanmaythole), [tejas161](https://github.com/tejas161), [thomasbrq](https://github.com/thomasbrq), [ThrRip](https://github.com/ThrRip), [TomerPacific](https://github.com/TomerPacific), [toninis](https://github.com/toninis), [trivikr](https://github.com/trivikr), [tsabi](https://github.com/tsabi), [turretkeeper](https://github.com/turretkeeper), [umrkhn](https://github.com/umrkhn), [vish9812](https://github.com/vish9812), [wcdfilll](https://translate.mattermost.com/user/wcdfilll), [wiebel](https://github.com/wiebel), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1) + +---- + +(release-v9-2-feature-release)= +## Release v9.2 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.2.6, released 2024-02-14** + - Mattermost v9.2.6 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.2.6 contains no database or functional changes. + - Pre-packaged Jira plugin version [v4.1.0](https://github.com/mattermost/mattermost-plugin-jira/releases/tag/v4.1.0). +- **9.2.5, released 2024-01-30** + - Mattermost v9.2.5 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.2.5 contains no database or functional changes. +- **9.2.4, released 2024-01-09** + - Mattermost v9.2.4 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.2.4 contains the following functional changes: + - Fixed an issue where invalid reactions could be added to posts. Added default limit of the number of reactions per post. +- **9.2.3, released 2023-11-29** + - Mattermost v9.2.3 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.2.3 contains no database or functional changes. + - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). +- **9.2.2, released 2023-11-08** + - Mattermost v9.2.2 contains a high severity level security fix. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). + - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. +- **9.2.1, released 2023-11-06** + - Fixed an issue where Ubuntu GLIBC errors were thrown on Ubuntu 20.04 and Debian Bullseye versions. +- **9.2.0, released 2023-11-02** + - Original 9.2.0 release + +### Important Upgrade Notes + - Fixed data retention policies to run jobs when any custom retention policy is enabled even when the global retention policy is set to **keep-forever**. Before this fix, the enabled custom data retention policies wouldn’t run as long as the global data retention policy was set to **keep-forever** or was disabled. After the fix, the custom data retention policies will run automatically even when the global data retention policy is set to **keep-forever**. Once the server is upgraded, posts may unintentionally be deleted. Admins should make sure to disable all custom data retention policies before upgrading, and then re-enable them again after upgrading. + +```{Important} +If you upgrade from a release earlier than v9.1, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Compatibility + - Updated minimum required Edge version to 116+. + +### Improvements + +See [this walkthrough video](https://www.youtube.com/watch?v=udC2OCTGooc&feature=youtu.be&ab_channel=Mattermost) on some of the improvements in our latest release below. + +#### User Interface (UI) + - Improved readability by displaying system messages on multiple lines when editing a channel header. + - Combined "joined/left" event types in system messages. + - Added a new user preference to disable webapp prefetching via **Settings > Advanced > Allow Mattermost to prefetch channel posts**. You must enable **Client Performance Debugging** in the System Console by going to **Environment > Developer** in order for this setting to appear. This setting and Client Performance Debugging should only be enabled temporarily if users are experiencing performance issues. + - Pre-packaged NPS plugin version [v1.3.3](https://github.com/mattermost/mattermost-plugin-nps/releases/tag/v1.3.3). + - Pre-packaged Todo plugin version [v0.7.1](https://github.com/mattermost/mattermost-plugin-todo/releases/tag/v0.7.1). + +#### Administration + - JSON null value cases are now handled correctly by also checking that the pointer is no longer null when unmarshalling to a pointer. + - An annotated logger is now used to capture LDAP and SAML logs. + - Replaced ``github.com/mattermost/gziphandler`` with ``github.com/klauspost/compress/gzhttp``. + - Performance metrics now contain information on if a given request was sent during a page load or a websocket reconnect. + - Elasticsearch aggregation jobs no longer start when a bulk indexing job is currently running. + - Added heap profile, CPU profile, and goroutines profile to the support package. + - Merged WIP i18n locales, but disallowed selecting unsupported locales. + +### Bug Fixes + - Fixed a panic where a simple worker would crash if it failed to get a job. + - Fixed post props on update to properly see channel links. + - Fixed an issue where the API for drafts would return empty drafts. + - Fixed the alignment of the **Help** menu in the global header. + - Fixed a broken link in the **Edit Channel** header modal. + - Fixed an issue that prevented users to be added to channels from the System Console. + - Fixed an issue where the channel member count increased when adding an already present user. + - Fixed an issue where plugin developers were unable to create a ``textarea`` in interactive dialogs. + - Fixed an issue where copy pasting images from Chrome failed. + +### config.json + - Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``LogSettings`` in ``config.json``: + - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. + +### API Changes + - Added ``origin_client`` to the ``mattermost_api_time`` metrics. + +### Go Version + - v9.2 is built with Go ``v1.20.7``. + +### Known Issues + - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [aayushborkar14](https://github.com/aayushborkar14), [AayushChaudhary0001](https://github.com/AayushChaudhary0001), [AbhineshJha](https://github.com/AbhineshJha), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akaMrDC](https://github.com/akaMrDC), [akbarkz](https://github.com/akbarkz), [alejdg](https://github.com/alejdg), [Alphanum404](https://github.com/Alphanum404), [amigo7kr](https://translate.mattermost.com/user/amigo7kr), [amyblais](https://github.com/amyblais), [amynicol1985](https://github.com/amynicol1985), [andrew-delph](https://github.com/andrew-delph), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [aniketh-varma](https://github.com/aniketh-varma), [anneschuth](https://translate.mattermost.com/user/anneschuth), [apshada](https://github.com/apshada), [ARJ2160](https://github.com/ARJ2160), [ArturBa](https://github.com/ArturBa), [asaadmahmood](https://github.com/asaadmahmood), [AsisRout](https://github.com/AsisRout), [avas27JTG](https://github.com/avas27JTG), [AvaterClasher](https://github.com/AvaterClasher), [ayrotideysarkar](https://github.com/ayrotideysarkar), [ayusht2810](https://github.com/ayusht2810), [balajik](https://github.com/balajik), [Bangik](https://github.com/Bangik), [bartaz](https://translate.mattermost.com/user/bartaz), [BaumiCoder](https://github.com/BaumiCoder), [BenCookie95](https://github.com/BenCookie95), [bishalpal](https://github.com/bishalpal), [calebroseland](https://github.com/calebroseland), [cedarice](https://translate.mattermost.com/user/cedarice), [cescpmantidfly](https://translate.mattermost.com/user/cescpmantidfly), [CI-YU](https://github.com/CI-YU), [Ciggzy1312](https://github.com/Ciggzy1312), [codeEmpress1](https://github.com/codeEmpress1), [coltoneshaw](https://github.com/coltoneshaw), [costa-neto](https://github.com/costa-neto), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://github.com/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danialkeimasi](https://github.com/danialkeimasi), [Delaney](https://github.com/Delaney), [devinbinnie](https://github.com/devinbinnie), [DHaussermann](https://github.com/DHaussermann), [dhnlr](https://github.com/dhnlr), [dipandhali2021](https://github.com/dipandhali2021), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [escofresco](https://github.com/escofresco), [esethna](https://github.com/esethna), [fazil-syed](https://github.com/fazil-syed), [fmartingr](https://github.com/fmartingr), [frjaraur](https://github.com/frjaraur), [fyfirman](https://github.com/fyfirman), [gabrieljackson](https://github.com/gabrieljackson), [Gauravpadam](https://github.com/Gauravpadam), [gibsonliketheguitar](https://github.com/gibsonliketheguitar), [h1usertest](https://translate.mattermost.com/user/h1usertest), [hanzei](https://github.com/hanzei), [harsh-solanki21](https://github.com/harsh-solanki21), [harshal2030](https://github.com/harshal2030), [harshalkh](https://github.com/harshalkh), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [ialorro](https://github.com/ialorro), [ifoukarakis](https://github.com/ifoukarakis), [imamimam113](https://translate.mattermost.com/user/imamimam113), [isacikgoz](https://github.com/isacikgoz), [iyampaul](https://github.com/iyampaul), [izruff](https://github.com/izruff), [janlengyel](https://github.com/janlengyel), [jannikbertram](https://github.com/jannikbertram), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [jgilliam17](https://github.com/jgilliam17), [jlandells](https://github.com/jlandells), [johnsonbrothers](https://github.com/johnsonbrothers), [josephjosedev](https://github.com/josephjosedev), [jprusch](https://github.com/jprusch), [js029](https://github.com/js029), [jufab](https://github.com/jufab), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kalvdans](https://github.com/kalvdans), [kayazeren](https://github.com/kayazeren), [komodin](https://github.com/komodin), [Kritik-J](https://github.com/Kritik-J), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [KuSh](https://github.com/KuSh), [larkox](https://github.com/larkox), [letehaha](https://github.com/letehaha), [libklein](https://github.com/libklein), [lieut-data](https://github.com/lieut-data), [linkvn](https://github.com/linkvn), [ludvigbolin](https://github.com/ludvigbolin), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [ManuMinue](https://github.com/ManuMinue), [marianunez](https://github.com/marianunez), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [maxtrem271991](https://github.com/maxtrem271991), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mishmanners](https://github.com/mishmanners), [MixeroTN](https://github.com/MixeroTN), [mnj93](https://github.com/mnj93), [mujpao](https://github.com/mujpao), [mustdiechik](https://github.com/mustdiechik), [mvitale1989](https://github.com/mvitale1989), [namanh-asher](https://github.com/namanh-asher), [Navystack](https://github.com/Navystack), [nickmisasi](https://github.com/nickmisasi), [Nico7as](https://translate.mattermost.com/user/Nico7as), [Nityanand13](https://github.com/Nityanand13), [NohaFahmi](https://github.com/NohaFahmi), [otilor](https://github.com/otilor), [Paul-vrn](https://github.com/Paul-vrn), [Peyo6565](https://github.com/Peyo6565), [phoinixgrr](https://github.com/phoinixgrr), [pvev](https://github.com/pvev), [qryptdev](https://github.com/qryptdev), [Quijuletim470](https://translate.mattermost.com/user/Quijuletim470), [returnedinformation](https://github.com/returnedinformation), [riteshmukim](https://github.com/riteshmukim), [rubinaga](https://github.com/rubinaga), [Rutam21](https://github.com/Rutam21), [saideepesh000](https://github.com/saideepesh000), [SaketKaswa20](https://github.com/SaketKaswa20), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [seoyeongeun](https://translate.mattermost.com/user/seoyeongeun), [Sharuru](https://github.com/Sharuru), [sjcode99](https://github.com/sjcode99), [sondrekje](https://github.com/sondrekje), [sonu27](https://github.com/sonu27), [sp6370](https://github.com/sp6370), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [StreakInTheSky](https://github.com/StreakInTheSky), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [Sudhanva-Nadiger](https://github.com/Sudhanva-Nadiger), [sudheer121](https://github.com/sudheer121), [syedzubeen](https://github.com/syedzubeen), [Tahanima](https://github.com/Tahanima),[tanmaythole](https://github.com/tanmaythole), [this-is-tobi](https://github.com/this-is-tobi), [ThrRip](https://github.com/ThrRip), [TomerPacific](https://github.com/TomerPacific), [toninis](https://github.com/toninis), [trilopin](https://github.com/trilopin), [umrkhn](https://github.com/umrkhn), [varghesejose2020](https://github.com/varghesejose2020), [venugopal1234567](https://github.com/venugopal1234567), [vip2441](https://github.com/vip2441), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yesbhautik](https://github.com/yesbhautik), [ylac](https://github.com/ylac), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) + +---- + +(release-v9-1-feature-release)= +## Release v9.1 - [Feature Release](https://docs.mattermost.com/upgrade/release-definitions.html#feature-release) + +- **9.1.5, released 2024-01-09** + - Mattermost v9.1.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.1.5 contains the following functional changes: + - Fixed an issue where invalid reactions could be added to posts. Added default limit of the number of reactions per post. +- **9.1.4, released 2023-11-29** + - Mattermost v9.1.4 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.1.4 contains no database or functional changes. + - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). +- **9.1.3, released 2023-11-13** + - Mattermost v9.1.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.1.3 contains no database or functional changes. + - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). + - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. +- **9.1.2, released 2023-11-06** + - Mattermost v9.1.2 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.1.2 contains no database or functional changes. +- **9.1.1, released 2023-10-27** + - Mattermost v9.1.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Focalboard plugin [v7.11.4](https://github.com/mattermost/focalboard/releases/tag/v7.11.4). + - Mattermost v9.1.1 contains the following functional changes: + - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. + - Added a restriction to the mobile Oauth / SAML redirection to match the ``NativeAppSettings.AppCustomURLSchemes`` configuration setting. +- **9.1.0, released 2023-10-16** + - Original 9.1.0 release + +### Important Upgrade Notes + - Improved performance on data retention ``DeleteOrphanedRows`` queries. See the [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html) for notes on a new migration that was added. Removed feature flag ``DataRetentionConcurrencyEnabled``. Data retention now runs without concurrency in order to avoid any performance degradation. Added a new configuration setting ``DataRetentionSettings.RetentionIdsBatchSize``, which allows admins to to configure how many batches of IDs will be fetched at a time when deleting orphaned reactions. The default value is 100. + - Minimum supported Desktop App version is now v5.3. OAuth/SAML flows were modified to include ``desktop_login`` which makes earlier versions incompatible. + +```{Important} +If you upgrade from a release earlier than v9.0, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Compatibility + - Updated Chromium minimum supported version to 116+. + +### Highlights + +#### Never Miss Group Messages Again + - Group messages (GMs) now behave like direct messages (DMs). [The badge count increases for every new message](https://docs.mattermost.com/collaborate/channel-types.html#group-messages). + +#### Convert Group Messages to Private Channels + - Added the ability to [convert a group message to a private channel](https://docs.mattermost.com/collaborate/convert-group-messages.html). + +See [this walkthrough video](https://www.youtube.com/watch?v=dbHg-63J9dA) on the highlights and some of the below improvements in our latest release. + +### Improvements + +#### User Interface (UI) + - Added a **Cancel** button to the **Delete category** modal. + - Added the ability to resize the channel sidebar and right-hand sidebar. + - Added two new filtering options (show all channel types and show private channels) to the **Browse channels** modal. + - Pre-packaged GitLab plugin version [v1.7.0](https://github.com/mattermost/mattermost-plugin-gitlab/releases/tag/v1.7.0). + - Pre-packaged Calls plugin version [v0.20.0](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.20.0). + - Pre-packaged Playbooks version [v1.39.0](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.0). + - Added additional reaction options when viewing threads or messages when the sidebar is larger than its minimum width. + - Added a link to [notification documentation](https://docs.mattermost.com/preferences/manage-your-notifications.html) in the **Notification Settings** modal. + - Updated the post textbox measurement code to be more reliable. + - The ``/invite`` slash command now supports custom user groups. + - Re-enabled the remote marketplace functionality, when configured as per ``PluginSettings.EnableRemoteMarketplace`` [documentation](https://docs.mattermost.com/configure/plugins-configuration-settings.html#plugins-enableremotemarketplace). + +#### Administration + - Added ``mattermost-plugin-api`` into the ``mattermost`` GitHub repository. + - Updated the public server module version to v0.0.9. + - Added 2 new URL parameters to ``GET /api/v4/groups``: ``include_archived`` and ``filter_archived``. Added the ability to restore archived groups from the user groups modal. + - Added file storage information to the support package. + - A ``user_id`` is now included in all HTTP logs (debug level) to help determine who is generating unexpected traffic. + - Added new URL parameter to ``GET /api/v4/groups`` and ``GET /api/v4/groups/:group_id``. ``include_member_ids`` will add all the members ``user_ids`` to the group response objects. You can now also add group members to a channel, any members that are not part of the team can be added to the team through this flow and subsequently added the channel. + +#### Plugin Changes + - Added new frontend plugin extension point for the new messages separator bar. + - Added a new plugin extensibility point to add actions to the code blocks. + - Added the plugin hook ``UserHasBeenDeactivated``. + - Added a new server side plugin API method to set the searchable content for file info (``SetFileSearchableContent``). The ``MessageHasBeenPosted`` plugin hook is now executed after the attachments are linked to the post. + +### Bug Fixes + - Fixed keyboard support for the left-hand side channel menu, the left-hand side category menu, and the post dot menu. + - Fixed display name in the ``comment_on`` component. + - Fixed an issue with keyboard support for some menus with submenus. + - Fixed an issue with disappearing punctuation when following a group mention. + - Fixed an issue where compliance export jobs were not able to start after disabling and enabling the compliance export. + - Fixed a potential read after write issue when loading a license. + - Fixed the API to block any changes to direct and group messages names, display name, or purpose. + +### config.json +Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Removed ``ServiceSettingsDefaultGfycatAPISecret`` and ``ServiceSettingsDefaultGfycatAPIKey`` configuration settings. + - Under ``TeamSettings`` in ``config.json``: + - Added a new config setting ``EnableJoinLeaveMessageByDefault`` that sets the default value for ``UserSetting``, ``ADVANCED_FILTER_JOIN_LEAVE``. + - Under ``DisplaySettings`` in ``config.json``: + - Added a setting ``MaxMarkdownNodes`` to limit the maximum complexity of markdown text on mobile. + + #### Changes to Enterprise plan: + - Under ``DataRetentionSettings`` in ``config.json``: + - Added a new configuration setting ``RetentionIdsBatchSize``, which allows admins to to configure how many batches of IDs will be fetched at a time when deleting orphaned reactions. The default value is 100. + +### API Changes + - Added the ``X-Forwarded-For`` request header to the audit stream for all Rest API calls. + - Added API endpoint ``POST /api/v4/user/login/desktop_login``. Modified OAuth/SAML flows to include ``desktop_login`` where applicable. + - Added new API endpoint ``GET`` ``/api/v4/channels//common_teams`` to fetch list of teams common between members of a group message. + - Added new API endpoint ``POST`` ``/api/v4/channels//convert_to_channel`` to convert a group message to a private channel. + - Added a new ``MessageHasBeenDeleted`` hook to the plugin API. + - Moved the ``request`` package into the public shared folder. + +### Go Version + - v9.1 is built with Go ``v1.20.7``. + +### Known Issues + - Converting a group message to a channel should show an error "A channel with that name already exists on the same team" for duplicate channel names [MM-54713](https://mattermost.atlassian.net/browse/MM-54713). + - Marking a group message as unread doesn't resurface the numbered notification badge [MM-54778](https://mattermost.atlassian.net/browse/MM-54778). + - Thread/posts jump when switching to and from preview mode [MM-54758](https://mattermost.atlassian.net/browse/MM-54758). + - Desktop UI doesn't show all content when the right-hand side thread is opened [MM-54696](https://mattermost.atlassian.net/browse/MM-54696). + - Left-hand side resize option overrides the **Browse/Create Channel** menu if To-Do plugin is installed [MM-54367](https://mattermost.atlassian.net/browse/MM-54367). + - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [abhinav700](https://github.com/abhinav700), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [alexdecamillo](https://github.com/alexdecamillo), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [asaadmahmood](https://github.com/asaadmahmood), [AsisRout](https://github.com/AsisRout), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [BenCookie95](https://github.com/BenCookie95), [calebroseland](https://github.com/calebroseland), [cedarice](https://translate.mattermost.com/user/cedarice), [coltoneshaw](https://github.com/coltoneshaw), [cpoile](https://github.com/cpoile), [Crere89](https://translate.mattermost.com/user/Crere89), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [deivisonrpg](https://github.com/deivisonrpg), [devinbinnie](https://github.com/devinbinnie), [djanda97](https://github.com/djanda97), [Eleferen](https://translate.mattermost.com/user/Eleferen), [emdecr](https://github.com/emdecr), [enahum](https://github.com/enahum), [esethna](https://github.com/esethna), [fmartingr](https://github.com/fmartingr), [FokinAleksandr](https://github.com/FokinAleksandr), [gabrieljackson](https://github.com/gabrieljackson), [hanzei](https://github.com/hanzei), [harshilsharma63](https://github.com/harshilsharma63), [hibou.sage](https://translate.mattermost.com/user/hibou.sage), [hmhealey](https://github.com/hmhealey), [homerCOD](https://translate.mattermost.com/user/homerCOD), [ialorro](https://github.com/ialorro), [ifoukarakis](https://github.com/ifoukarakis), [intdev32](https://github.com/intdev32), [IronOnet](https://github.com/IronOnet), [isacikgoz](https://github.com/isacikgoz), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [LimJiAn](https://github.com/LimJiAn), [limod](https://github.com/limod), [linkvn](https://github.com/linkvn), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [marie0394](https://translate.mattermost.com/user/marie0394), [maruTA-bis5](https://github.com/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [MohammedElansary-dev](https://translate.mattermost.com/user/MohammedElansary-dev), [mornaistar](https://github.com/mornaistar), [mt26691](https://translate.mattermost.com/user/mt26691), [mvitale1989](https://github.com/mvitale1989), [Navystack](https://translate.mattermost.com/user/Navystack), [nickmisasi](https://github.com/nickmisasi), [pvev](https://github.com/pvev), [RayYH](https://github.com/RayYH), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [sinansonmez](https://github.com/sinansonmez), [speedhs](https://github.com/speedhs), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [teamzamong](https://github.com/teamzamong), [TheRealJoeFriel](https://github.com/TheRealJoeFriel), [ThrRip](https://github.com/ThrRip), [timmycheng](https://github.com/timmycheng), [toninis](https://github.com/toninis), [varghese.jose](https://github.com/varghesejose2020), [wiersgallak](https://github.com/wiersgallak), [wiggin77](https://github.com/wiggin77), [y4aniv](https://github.com/y4aniv), [yasserfaraazkhan](https://github.com/yasserfaraazkhan) + +---- + +(release-v9-0-major-release)= +## Release v9.0 - [Major Release](https://docs.mattermost.com/upgrade/release-definitions.html#major-release) + +- **9.0.5, released 2023-11-29** + - Mattermost v9.0.5 contains medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.0.5 contains no database or functional changes. + - Pre-packaged Calls plugin version [v0.21.1](https://github.com/mattermost/mattermost-plugin-calls/releases/tag/v0.21.1). +- **9.0.4, released 2023-11-13** + - Mattermost v9.0.4 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.0.4 contains no database or functional changes. + - Pre-packaged Playbooks plugin version [v1.39.1](https://github.com/mattermost/mattermost-plugin-playbooks/releases/tag/v1.39.1). + - Fixed an issue where the **About Mattermost** dialog reported an incorrect server version. +- **9.0.3, released 2023-11-06** + - Mattermost v9.0.3 contains low to high severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.0.3 contains no database or functional changes. +- **9.0.2, released 2023-10-27** + - Mattermost v9.0.2 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Pre-packaged Focalboard plugin [v7.11.4](https://github.com/mattermost/focalboard/releases/tag/v7.11.4). + - Mattermost v9.0.2 contains the following functional changes: + - Added a new configuration setting ``MaxFieldSize`` to add the ability to size-limit log fields during logging. + - Added a restriction to the mobile Oauth / SAML redirection to match the ``NativeAppSettings.AppCustomURLSchemes`` configuration setting. +- **9.0.1, released 2023-10-06** + - Mattermost v9.0.1 contains low to medium severity level security fixes. [Upgrading](https://docs.mattermost.com/upgrade/upgrading-mattermost-server.html) to this release is recommended. Details will be posted on our [security updates page](https://mattermost.com/security-updates/) 30 days after release as per the [Mattermost Responsible Disclosure Policy](https://mattermost.com/security-vulnerability-report/). + - Mattermost v9.0.1 contains no database or functional changes. +- **9.0.0, released 2023-09-15** + - Original 9.0.0 release + +### Important Upgrade Notes + - Removed the deprecated Insights feature. + - Mattermost Boards and various other plugins have transitioned to being fully community supported. See this [forum post](https://forum.mattermost.com/t/upcoming-product-changes-to-boards-and-various-plugins/16669) for more details. + - The ``channel_viewed`` websocket event was changed to ``multiple_channels_viewed``, and is now only triggered for channels that actually have unread messages. + +```{Important} +If you upgrade from a release earlier than v8.1, please read the other [Important Upgrade Notes](https://docs.mattermost.com/upgrade/important-upgrade-notes.html). +``` + +### Highlights + +#### Dev/Sec/ChatOps in Strict Security Environments with Jira, Confluence, and Mattermost + - Accelerate mission-critical workflows that keep your team aligned and your data secure on [the Mattermost and Atlassian platforms](https://mattermost.com/atlassian/). + +#### Air-Gapped, Edge-Ready Generative AI with Defense Unicorn's LeapfrogAI + - Deploy and utilize local GenAI models in edge, air-gapped, and zero-trust environments with [LeapfrogAI and Mattermost](https://defenseunicorns.com/leapfrogai). + +#### AI-Accelerated Collaboration + - Mattermost partner Mobius Logic has enhanced the MS Teams Connector for the Microsoft 365 platform by embedding Mattermost directly inside [Microsoft Teams](https://docs.mattermost.com/about/mattermost-for-microsoft-teams.html). + +#### MLOps and Secure Federation with Customer Compliance + - Our partnership with SOS International (SOSi) enables the integration of advanced military-grade federation using XMPP. Read the [exoINSIGHT announcement from Exovera](https://exovera.com/press-release/exovera-unveils-exoinsight/). + +#### Improving Your Organization’s Core Collaboration + - To optimize the core platform experience, we are reinforcing the fundamentals to ensure Mattermost continues being resilient, stable, and best-in-breed for your critical operations. + +### Improvements + +#### User Interface (UI) + - The number of channel members is now shown in the **Browse channels** modal. + - An error is now displayed if a post edit history fails to load. + - Added functionality to bulk mark a whole channel category as read. + - Removed Boards product tour code. + - Replaced Gfycat with Giphy in the gif picker. + - Pre-packaged Calls version v0.19.0. + - Updated Focalboard plugin version to 7.11.3. + - Pre-packaged Playbooks version 1.38.1. + - Upgraded prepackaged Zoom plugin to v1.6.2. + - Upgraded prepackaged Antivirus plugin version to 1.0.0. + +#### Administration + - API examples are now updated to reflect latest Go API conventions, deprecating older code samples. + - Updated the public server module version to v0.0.8. + - Added a ``Post Action`` plugin hook to allow plugins to register new items in the post menu. + - Added a ``Post Editor Action`` plugin hook to allow plugins to register new items in the post editor menu. + - Improved logging on plugin initialization, activation, and removal. + - Removed the deprecated ``ManifestExecutables`` struct. + - Removed the deprecated ``UserAuth.Password`` field. + - [Remote users](https://docs.mattermost.com/onboard/shared-channels.html) are no longer counted as part of the license. + - Improved data retention logs. + - Removed ``/opengraph`` endpoint as it was unused. + - Transitionally prepackaged plugins are now installed to the filestore for continuity when a future release stops prepackaging those plugins. + - Removed the deprecated ``Manifest.RequiredConfig`` field. + - Added a ``NotificationWillBePushed`` plugin hook invoked before the push notification is processed and sent to the notification service. Plugins may modify or reject the push notification. + - Added a `SendPushNotification` plugin api method which allows plugins to send push notifications to a specific user's mobile sessions. + - Disabled ``PluginSettings.EnableRemoteMarketplace`` functionality. + +### Bug Fixes + - Fixed the error returned by ``PUT /api/v4/channels/{channelid}`` when the provided name already existed in the team. + - Fixed an issue where CRLF line endings passed to mmctl commands were not being stripped from commands. + - Fixed an issue where text copied from Microsoft OneNote is pasted as an image. + - Fixed an issue preventing successful activation of trial licenses. + - Fixed an issue where a custom group wouldn't get marked as a mention if it was not part of the webapp's local state. + - Fixed an issue with the in-product marketplace theming. + +### config.json +Multiple setting options were added to ``config.json``. Below is a list of the additions and their default values on install. The settings can be modified in ``config.json``, or the System Console when available. + +#### Changes to all plans: + - Under ``ServiceSettings`` in the ``config.json``: + - Added ``GiphySdkKey`` to replace Gfycat with Giphy in the gif picker. + +### Go Version + - v9.0 is built with Go ``v1.19.5``. + +### Open Source Components + - Added ``@giphy/js-fetch-api`` and ``@giphy/react-components`` to https://github.com/mattermost/mattermost/. + - Added ``@react-native/eslint-config``, ``@react-native/metro-config``, and ``@tsconfig/react-native`` to https://github.com/mattermost/mattermost-mobile/. + +### Known Issues + - Adding an @mention at the start of a post draft and pressing the left or right arrow key can clear the post draft and the undo history [MM-33823](https://mattermost.atlassian.net/browse/MM-33823). + - Google login fails on the Classic mobile apps. + - Status may sometimes get stuck as **Away** or **Offline** in High Availability mode with IP Hash turned off. + - Searching stop words in quotation marks with Elasticsearch enabled returns more than just the searched terms. + - The team sidebar on the desktop app does not update when channels have been read on mobile. + - Slack import through the CLI fails if email notifications are enabled. + - Push notifications don't always clear on iOS when running Mattermost in High Availability mode. + - The Playbooks left-hand sidebar doesn't update when a user is added to a run or playbook without a refresh. + - If a user isn't a member of a configured broadcast channel, posting a status update might fail without any error feedback. As a temporary workaround, join the configured broadcast channels, or remove those channels from the run configuration. + - The Playbooks left-hand sidebar does not update when a user is added to a run or playbook without a refresh. + +### Contributors + - [abdulsmapara](https://github.com/abdulsmapara), [agarciamontoro](https://github.com/agarciamontoro), [agnivade](https://github.com/agnivade), [akaravashkin](https://github.com/akaravashkin), [amyblais](https://github.com/amyblais), [andrleite](https://github.com/andrleite), [angeloskyratzakos](https://github.com/angeloskyratzakos), [apollo13](https://github.com/apollo13), [aqurilla](https://github.com/aqurilla), [ayusht2810](https://github.com/ayusht2810), [azigler](https://github.com/azigler), [bbodenmiller](https://github.com/bbodenmiller), [BenCookie95](https://github.com/BenCookie95), [Benjamin-Loison](https://github.com/Benjamin-Loison), [calebroseland](https://github.com/calebroseland), [cdmwebs](https://github.com/cdmwebs), [chumano](https://github.com/chumano), [CI-YU](https://github.com/CI-YU), [Coelho](https://translate.mattermost.com/user/Coelho), [cpoile](https://github.com/cpoile), [crspeller](https://github.com/crspeller), [ctlaltdieliet](https://translate.mattermost.com/user/ctlaltdieliet), [cwarnermm](https://github.com/cwarnermm), [danielsischy](https://github.com/danielsischy), [deivisonrpg](https://github.com/deivisonrpg), [devinbinnie](https://github.com/devinbinnie), [djanda97](https://github.com/djanda97), [douglasstasiak](https://github.com/douglasstasiak), [Eleferen](https://translate.mattermost.com/user/Eleferen), [enahum](https://github.com/enahum), [esarafianou](https://github.com/esarafianou), [esethna](https://github.com/esethna), [gabrieljackson](https://github.com/gabrieljackson), [gary-sixgen](https://github.com/gary-sixgen), [Gobbit69](https://translate.mattermost.com/user/Gobbit69), [grubbins](https://github.com/grubbins), [guneshsji](https://github.com/guneshsji), [hannaparks](https://github.com/hannaparks), [hanzei](https://github.com/hanzei), [harshal2030](https://github.com/harshal2030), [harshilsharma63](https://github.com/harshilsharma63), [hmhealey](https://github.com/hmhealey), [hpkhanh1610](https://github.com/hpkhanh1610), [ifoukarakis](https://github.com/ifoukarakis), [isacikgoz](https://github.com/isacikgoz), [it33](https://github.com/it33), [ivakorin](https://github.com/ivakorin), [jasonblais](https://github.com/jasonblais), [jespino](https://github.com/jespino), [johndavidlugtu](https://github.com/johndavidlugtu), [johnsonbrothers](https://github.com/johnsonbrothers), [jprusch](https://github.com/jprusch), [JulienTant](https://github.com/JulienTant), [kaakaa](https://github.com/kaakaa), [kayazeren](https://github.com/kayazeren), [Kshitij-Katiyar](https://github.com/Kshitij-Katiyar), [kyeongsoosoo](https://github.com/kyeongsoosoo), [larkox](https://github.com/larkox), [lieut-data](https://github.com/lieut-data), [LimJiAn](https://github.com/LimJiAn), [lindalumitchell](https://github.com/lindalumitchell), [lindy65](https://github.com/lindy65), [lynn915](https://github.com/lynn915), [M-ZubairAhmed](https://github.com/M-ZubairAhmed), [mahmoudfarouq](https://github.com/mahmoudfarouq), [majo](https://translate.mattermost.com/user/majo), [manojmalik20](https://github.com/manojmalik20), [marianunez](https://github.com/marianunez), [maruTA-bis5](https://translate.mattermost.com/user/maruTA-bis5), [master7](https://translate.mattermost.com/user/master7), [matt-w99](https://github.com/matt-w99), [matthew-w](https://translate.mattermost.com/user/matthew-w), [matthewbirtch](https://github.com/matthewbirtch), [MatthewDorner](https://github.com/MatthewDorner), [mgdelacroix](https://github.com/mgdelacroix), [mickmister](https://github.com/mickmister), [milotype](https://translate.mattermost.com/user/milotype), [mvitale1989](https://github.com/mvitale1989), [nickmisasi](https://github.com/nickmisasi), [panoramix360](https://github.com/panoramix360), [Partizann](https://github.com/Partizann), [penghao_chn](https://translate.mattermost.com/user/penghao_chn), [phoinixgrr](https://github.com/phoinixgrr), [pjenicot](https://translate.mattermost.com/user/pjenicot), [pvev](https://github.com/pvev), [raghavaggarwal2308](https://github.com/raghavaggarwal2308), [RichardScottOZ](https://github.com/RichardScottOZ), [robinsdm](https://github.com/robinsdm), [saturninoabril](https://github.com/saturninoabril), [sbishel](https://github.com/sbishel), [Sharuru](https://github.com/Sharuru), [ShrootBuck](https://github.com/ShrootBuck), [sinansonmez](https://github.com/sinansonmez), [sri-byte](https://github.com/sri-byte), [stafot](https://github.com/stafot), [StreakInTheSky](https://github.com/StreakInTheSky), [streamer45](https://github.com/streamer45), [stylianosrigas](https://github.com/stylianosrigas), [svelle](https://github.com/svelle), [tasawar-hussain](https://github.com/tasawar-hussain), [TealWater](https://github.com/TealWater), [thinkGeist](https://github.com/thinkGeist), [ThrRip](https://translate.mattermost.com/user/ThrRip), [timmycheng](https://translate.mattermost.com/user/timmycheng), [toninis](https://github.com/toninis), [tschuyebuhl](https://github.com/tschuyebuhl), [wiggin77](https://github.com/wiggin77), [Willyfrog](https://github.com/Willyfrog), [y4aniv](https://translate.mattermost.com/user/y4aniv), [yash2189](https://github.com/yash2189), [yasserfaraazkhan](https://github.com/yasserfaraazkhan), [yomiadetutu1](https://github.com/yomiadetutu1), [ZubairImtiaz3](https://github.com/ZubairImtiaz3) + (release-v8-1-extended-support-release)= ## Release v8.1 - [Extended Support Release](https://docs.mattermost.com/upgrade/release-definitions.html#extended-support-release-esr) diff --git a/source/redirects.py b/source/redirects.py index 7df05a6afa6..fc3da4b28fc 100644 --- a/source/redirects.py +++ b/source/redirects.py @@ -81,7 +81,7 @@ "about/faq-notifications.html": "https://docs.mattermost.com/end-user-guide/preferences/troubleshoot-notifications#frequently-asked-questions.html", "about/faq-product.html": - "https://docs.mattermost.com/product-overview/client-availability.html", + "https://docs.mattermost.com/end-user-guide/collaborate/client-availability.html", "about/faq-use-cases.html": "https://docs.mattermost.com/product-overview/faq-use-cases.html", "about/faq-video-audio-screensharing.html": @@ -941,14 +941,10 @@ "https://docs.mattermost.com/administration-guide/configure/configuration-settings.html", "configure/compliance-configuration-settings.html": "https://docs.mattermost.com/administration-guide/configure/compliance-configuration-settings.html", -"configure/config-proxy-apache2.html": - "https://docs.mattermost.com/administration-guide/configure/config-proxy-apache2.html", "configure/config-ssl-http2-apache2.html": "https://forum.mattermost.com/t/configuring-apache2-with-ssl-and-http-2/11939", "configure/configuration-in-your-database.html": "https://docs.mattermost.com/administration-guide/configure/configuration-in-your-database.html", -"configure/configuring-apache2.html": - "https://forum.mattermost.com/t/configuring-apache2-as-a-proxy-for-mattermost-server/11938", "configure/custom-branding-tools.html": "https://docs.mattermost.com/administration-guide/configure/custom-branding-tools.html", "configure/customize-mattermost.html": @@ -1600,13 +1596,13 @@ "configure/configuration-settings.html#enable-shared-channels": "https://docs.mattermost.com/administration-guide/configure/site-configuration-settings.html#enable-connected-workspaces", "configure/configuration-settings.html#enable-bleve-indexing": - "https://docs.mattermost.com/administration-guide/configure/experimental-configuration-settings.html#enable-bleve-indexing", + "https://docs.mattermost.com/administration-guide/configure/deprecated-configuration-settings.html#enable-bleve-indexing", "configure/configuration-settings.html#index-directory": - "https://docs.mattermost.com/administration-guide/configure/experimental-configuration-settings.html#index-directory", + "https://docs.mattermost.com/administration-guide/configure/deprecated-configuration-settings.html#index-directory", "configure/configuration-settings.html#enable-bleve-for-search-queries": - "https://docs.mattermost.com/administration-guide/configure/experimental-configuration-settings.html#enable-bleve-for-search-queries", + "https://docs.mattermost.com/administration-guide/configure/deprecated-configuration-settings.html#enable-bleve-for-search-queries", "configure/configuration-settings.html#enable-bleve-for-autocomplete-queries": - "https://docs.mattermost.com/administration-guide/configure/experimental-configuration-settings.html#enable-bleve-for-autocomplete-queries", + "https://docs.mattermost.com/administration-guide/configure/deprecated-configuration-settings.html#enable-bleve-for-autocomplete-queries", "configure/configuration-settings.html#allowed-themes": "https://docs.mattermost.com/administration-guide/configure/experimental-configuration-settings.html#allowed-themes", "configure/configuration-settings.html#maximum-users-for-statistics": @@ -2653,8 +2649,6 @@ "https://docs.mattermost.com/deployment-guide/server/deploy-linux.html", "install/enterprise-install-upgrade.html": "https://docs.mattermost.com/administration-guide/upgrade/enterprise-install-upgrade.html", -"install/config-apache2.html": - "https://forum.mattermost.com/t/configuring-apache2-as-a-proxy-for-mattermost-server/11938", "install/desktop.html": "https://docs.mattermost.com/end-user-guide/collaborate/install-desktop-app.html", "install/desktop-managed-resources.html": @@ -3955,6 +3949,11 @@ "process/working-at-mattermost.html": "https://handbook.mattermost.com/operations/workplace/people/working-at-mattermost/onboarding/engineer-onboarding", +"product-overview/faq-business.html": + "https://docs.mattermost.com/product-overview/faq-license.html", +"product-overview/mattermost-v9-changelog.html": + "https://docs.mattermost.com/product-overview/unsupported-legacy-releases.html", + # Preferences redirects "preferences/connect-multiple-workspaces.html": "https://docs.mattermost.com/end-user-guide/preferences/connect-multiple-workspaces.html", From 8921c837100583a2117853757e68433ed6dcac26 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 15 Sep 2025 13:10:01 -0400 Subject: [PATCH 03/36] v11: Document deprecation of include_removed_members parameter (#8380) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Document deprecation of include_removed_members parameter Add deprecation notices for the include_removed_members parameter in LDAP sync operations across documentation: - Added deprecation notice to mmctl ldap sync --include-removed-members flag - Added entry to deprecated features list for v11.0.0 - Added new section for deprecated API parameters with detailed explanation Related to issue #8206 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Environmental config setting consistency (#8368) * Environmental config setting consistency & normalization script * Fixed malformed tables * Config consistency & malformed table fixes * Removed helper script * Update faq-business.rst (#8376) * Update faq-business.rst Review and refinement * Update source/product-overview/faq-business.rst * Update faq-license.rst Removed redundant information, linking to single source * Update faq-business.rst * Update faq-business.rst * Update faq-license.rst Combined Business & Licensing since the pages covered redundant questions. * Delete source/product-overview/faq-business.rst Moved content to License FAQ & renamed * Added page redirect & child page nav * Incorporated reviewer feedback * Update faq-general.rst * Delete source/product-overview/faq-illicit-use.rst * Cleaned up nav following content moves --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v9.x releases to legacy status (#8360) * Update v9.x releases to legacy status - Remove v9.x versions from active release table in mattermost-server-releases.md - Move v9 changelog content to unsupported-legacy-releases.md - Update release-policy.md to include v9.x in legacy releases table - Replace v9 changelog with redirect to unsupported legacy releases - Update references to point to legacy releases documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update unsupported-legacy-releases.md * Update mattermost-server-releases.md * Update mattermost-v9-changelog.md * Update server.rst * Update common-esr-support-upgrade.md * Update unsupported-legacy-releases.md * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update common-esr-support-upgrade.md * Update common-esr-support-upgrade.md * Update release-policy.md * Update prepare-to-upgrade-mattermost.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Sven Hüster * Update deprecated-features.rst (#8387) * Update deprecated-features.rst * Update common-esr-support-upgrade.md * Update release-policy.md * Linked experimental config settings to feature label desc (#8388) * Removed v9 changlog, added redirect (#8389) * Moved client availability page to end user guide (#8390) * Moved client availability page to end user guide * Returned headings to tabbed content with toctree pages * remove apache2 docs (#8391) * Revert deprecated-features.rst and deprecated-configuration-settings.rst changes Keep only the mmctl-command-line-tool.rst deprecation notice as requested. Co-authored-by: Carrie Warner (Mattermost) --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro Co-authored-by: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Co-authored-by: Sven Hüster Co-authored-by: Ben Cooke --- source/administration-guide/manage/mmctl-command-line-tool.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 89b13e13ab1..71b404a1651 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -4286,7 +4286,7 @@ Synchronize all LDAP users and groups now. .. code-block:: sh -h, --help help for sync - --include-removed-members Include members who left or were removed from a group-synced team/channel. Useful in cases where synchronized groups are unlinked/re-linked for testing purposes, when LDAP users are deactivated and reactivated, or when a user leaves a team in error. + --include-removed-members **Deprecated in v11.0**: Include members who left or were removed from a group-synced team/channel. Useful in cases where synchronized groups are unlinked/re-linked for testing purposes, when LDAP users are deactivated and reactivated, or when a user leaves a team in error. This option is deprecated and will be removed in a future version. **Options inherited from parent commands** From 30b5cd7ff2de49a596cc7d0eebe58d6890f560e3 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:18:20 -0400 Subject: [PATCH 04/36] v11: Update MaxOpenConns and MaxIdleConns defaults (#8378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update MaxOpenConns and MaxIdleConns defaults for v11 - Update MaxOpenConns default from 300 to 100 - Update MaxIdleConns default from 20 to 50 - Add MaxIdleConns documentation to environment configuration settings - Include 2:1 ratio guidance for both settings - Fix incorrect description in MaxOpenConns documentation - Update example configurations in high availability deployment guide Related to MM-63726 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Environmental config setting consistency (#8368) * Environmental config setting consistency & normalization script * Fixed malformed tables * Config consistency & malformed table fixes * Removed helper script * Update faq-business.rst (#8376) * Update faq-business.rst Review and refinement * Update source/product-overview/faq-business.rst * Update faq-license.rst Removed redundant information, linking to single source * Update faq-business.rst * Update faq-business.rst * Update faq-license.rst Combined Business & Licensing since the pages covered redundant questions. * Delete source/product-overview/faq-business.rst Moved content to License FAQ & renamed * Added page redirect & child page nav * Incorporated reviewer feedback * Update faq-general.rst * Delete source/product-overview/faq-illicit-use.rst * Cleaned up nav following content moves --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v9.x releases to legacy status (#8360) * Update v9.x releases to legacy status - Remove v9.x versions from active release table in mattermost-server-releases.md - Move v9 changelog content to unsupported-legacy-releases.md - Update release-policy.md to include v9.x in legacy releases table - Replace v9 changelog with redirect to unsupported legacy releases - Update references to point to legacy releases documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update unsupported-legacy-releases.md * Update mattermost-server-releases.md * Update mattermost-v9-changelog.md * Update server.rst * Update common-esr-support-upgrade.md * Update unsupported-legacy-releases.md * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update common-esr-support-upgrade.md * Update common-esr-support-upgrade.md * Update release-policy.md * Update prepare-to-upgrade-mattermost.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Sven Hüster * Update deprecated-features.rst (#8387) * Update deprecated-features.rst * Update common-esr-support-upgrade.md * Update release-policy.md * Linked experimental config settings to feature label desc (#8388) * Removed v9 changlog, added redirect (#8389) * Moved client availability page to end user guide (#8390) * Moved client availability page to end user guide * Returned headings to tabbed content with toctree pages * remove apache2 docs (#8391) * Default corrections --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro Co-authored-by: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Co-authored-by: Sven Hüster Co-authored-by: Ben Cooke --- .../environment-configuration-settings.rst | 25 ++++++++++++++++--- ...-availability-cluster-based-deployment.rst | 6 +++-- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index dd3f9bce177..c29fb70975e 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -801,17 +801,34 @@ Mattermost doesn't need to manage this. See the :ref:`high availablility databas :systemconsole: Environment > Database :configjson: .SqlSettings.MaxOpenConns :environment: MM_SQLSETTINGS_MAXOPENCONNS - :description: The maximum number of idle connections held open to the database. Default is **300**. + :description: The maximum number of open connections to the database. Default is **100**. Maximum open connections ~~~~~~~~~~~~~~~~~~~~~~~~ +--------------------------------------------------------+-------------------------------------------------------------------------+ | The maximum number of open connections to the | - System Config path: **Environment > Database** | -| database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxOpenConns`` > ``300`` | +| database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxOpenConns`` > ``100`` | | | - Environment variable: ``MM_SQLSETTINGS_MAXOPENCONNS`` | -| Numerical input. Default is **300** for self-hosted | | -| deployments, and **100** for Cloud deployments. | | +| Numerical input. Default is **100**. | | ++--------------------------------------------------------+-------------------------------------------------------------------------+ + +.. config:setting:: maximum-idle-connections + :displayname: Maximum idle connections (Database) + :systemconsole: Environment > Database + :configjson: .SqlSettings.MaxIdleConns + :environment: MM_SQLSETTINGS_MAXIDLECONNS + :description: The maximum number of idle connections held open to the database. Default is **50**. + +Maximum idle connections +~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------+-------------------------------------------------------------------------+ +| The maximum number of idle connections held open to | - System Config path: **Environment > Database** | +| the database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxIdleConns`` > ``50`` | +| | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | +| Numerical input. Default is **50**. | | +| A 2:1 ratio with MaxOpenConns is recommended. | | +--------------------------------------------------------+-------------------------------------------------------------------------+ .. config:setting:: query-timeout diff --git a/source/administration-guide/scale/high-availability-cluster-based-deployment.rst b/source/administration-guide/scale/high-availability-cluster-based-deployment.rst index 7fc618047f1..df212f1b64a 100644 --- a/source/administration-guide/scale/high-availability-cluster-based-deployment.rst +++ b/source/administration-guide/scale/high-availability-cluster-based-deployment.rst @@ -314,8 +314,8 @@ Here's an example ``SqlSettings`` block for one master and two read replicas: "DataSource": "master_user:master_password@tcp(master.server)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s", "DataSourceReplicas": ["slave_user:slave_password@tcp(replica1.server)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s","slave_user:slave_password@tcp(replica2.server)/mattermost?charset=utf8mb4,utf8\u0026readTimeout=30s\u0026writeTimeout=30s"], "DataSourceSearchReplicas": [], - "MaxIdleConns": 20, - "MaxOpenConns": 300, + "MaxIdleConns": 50, + "MaxOpenConns": 100, "Trace": false, "AtRestEncryptKey": "", "QueryTimeout": 30 @@ -364,6 +364,7 @@ For the Postgres service we recommend the following configuration optimizations # If the instance is lower capacity than r5.xlarge, then set it to a lower number. # Also tune the "MaxOpenConns" setting under the "SqlSettings" of the Mattermost app accordingly. # Note that "MaxOpenConns" on Mattermost is per data source name. + # Recommended: MaxOpenConns: 100, MaxIdleConns: 50 (2:1 ratio) max_connections = 1024 # Set it to 1.1, unless the DB is using spinning disks. @@ -408,6 +409,7 @@ Copy all the above settings to the read replica, and modify or add only the belo # If the instance is lower capacity than r5.xlarge, then set it to a lower number. # Also tune the "MaxOpenConns" setting under the "SqlSettings" of the Mattermost app accordingly. # Note that "MaxOpenConns" on Mattermost is per data source name. + # Recommended: MaxOpenConns: 100, MaxIdleConns: 50 (2:1 ratio) max_connections = 1024 # This setting should be 16MB on read nodes, and 32MB on writer nodes From 0d57c99ad504fc9cc1de76d0c97d97920c04b845 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:22:26 -0400 Subject: [PATCH 05/36] v11: Update archived channels configuration (#8379) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update archived channels configuration for v11 - Add new TeamSettings.BrowseArchivedPublicChannels setting documentation - Deprecate TeamSettings.ExperimentalViewArchivedChannels setting with migration guidance - Update user documentation with guidance on archived channel access - Add information about leaving archived channels - Clarify admin controls for preventing access to specific channels Closes #8203 Related to MM-63240 and https://forum.mattermost.com/t/viewing-accessing-archived-channels-v11/22626 Co-authored-by: Carrie Warner (Mattermost) * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Environmental config setting consistency (#8368) * Environmental config setting consistency & normalization script * Fixed malformed tables * Config consistency & malformed table fixes * Removed helper script * Update faq-business.rst (#8376) * Update faq-business.rst Review and refinement * Update source/product-overview/faq-business.rst * Update faq-license.rst Removed redundant information, linking to single source * Update faq-business.rst * Update faq-business.rst * Update faq-license.rst Combined Business & Licensing since the pages covered redundant questions. * Delete source/product-overview/faq-business.rst Moved content to License FAQ & renamed * Added page redirect & child page nav * Incorporated reviewer feedback * Update faq-general.rst * Delete source/product-overview/faq-illicit-use.rst * Cleaned up nav following content moves --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v9.x releases to legacy status (#8360) * Update v9.x releases to legacy status - Remove v9.x versions from active release table in mattermost-server-releases.md - Move v9 changelog content to unsupported-legacy-releases.md - Update release-policy.md to include v9.x in legacy releases table - Replace v9 changelog with redirect to unsupported legacy releases - Update references to point to legacy releases documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update unsupported-legacy-releases.md * Update mattermost-server-releases.md * Update mattermost-v9-changelog.md * Update server.rst * Update common-esr-support-upgrade.md * Update unsupported-legacy-releases.md * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update common-esr-support-upgrade.md * Update common-esr-support-upgrade.md * Update release-policy.md * Update prepare-to-upgrade-mattermost.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Sven Hüster * Update deprecated-features.rst (#8387) * Update deprecated-features.rst * Update common-esr-support-upgrade.md * Update release-policy.md * Linked experimental config settings to feature label desc (#8388) * Removed v9 changlog, added redirect (#8389) * Moved client availability page to end user guide (#8390) * Moved client availability page to end user guide * Returned headings to tabbed content with toctree pages * remove apache2 docs (#8391) * rollback: Simplify ExperimentalViewArchivedChannels update Only update ExperimentalViewArchivedChannels to be always enabled and no longer configurable as of v11.0. Remove all other changes including new BrowseArchivedPublicChannels setting and user guidance sections. Co-authored-by: Carrie Warner (Mattermost) * search meta data improvements * Fix build errors --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro Co-authored-by: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Co-authored-by: Sven Hüster Co-authored-by: Ben Cooke --- .../configure/site-configuration-settings.rst | 99 ++++++++++++------- 1 file changed, 65 insertions(+), 34 deletions(-) diff --git a/source/administration-guide/configure/site-configuration-settings.rst b/source/administration-guide/configure/site-configuration-settings.rst index 15e66ea07f3..78b8a9e60c8 100644 --- a/source/administration-guide/configure/site-configuration-settings.rst +++ b/source/administration-guide/configure/site-configuration-settings.rst @@ -72,6 +72,7 @@ Site description :systemconsole: Site Configuration > Customization :configjson: .TeamSettings.EnableCustomBrand :environment: MM_TEAMSETTINGS_ENABLECUSTOMBRAND + :description: Enables the display of a custom image and text on the login page. Default value is **false**. - **true**: Enables the display of a custom image and text on the login page - **false**: **(Default)** Custom branding is disabled @@ -128,6 +129,7 @@ Custom brand text :systemconsole: Site Configuration > Customization :configjson: .SupportSettings.EnableAskCommunityLink :environment: MM_SUPPORTSETTINGS_ENABLEASKCOMMUNITYLINK + :description: This setting controls whether a link to the Mattermost Community appears under the **Help** menu in the channel header. Default is **true**. - **true**: **(Default)** A link to the `Mattermost Community `__ appears as **Ask the community** under the **Help** menu in the channel header. - **false**: The link does not appear. @@ -147,9 +149,7 @@ Enable Ask Community link :systemconsole: Site Configuration > Customization :configjson: .SupportSettings.HelpLink :environment: MM_SUPPORTSETTINGS_HELPLINK - - This field sets the URL for the Help link on the login and sign-up pages, as well as the **Help Resources** link under the **Help** menu in the channel header. - Default value is **https://about.mattermost.com/default-help/**. + :description: This field sets the URL for the Help link on the login and sign-up pages, as well as the **Help Resources** link under the **Help** menu in the channel header. Default value is **https://about.mattermost.com/default-help/**. Help link ~~~~~~~~~ @@ -168,9 +168,7 @@ Help link :systemconsole: Site Configuration > Customization :configjson: .SupportSettings.TermsOfServiceLink :environment: MM_SUPPORTSETTINGS_TERMSOFSERVICELINK - - This field sets the URL for the Terms of Use of a self-hosted site. A link to the terms appears at the bottom of the sign-up and login pages. - Default value is **https://about.mattermost.com/default-terms/**. + :description: This field sets the URL for the Terms of Use of a self-hosted site. A link to the terms appears at the bottom of the sign-up and login pages. Terms of Use link ~~~~~~~~~~~~~~~~~ @@ -194,9 +192,7 @@ Terms of Use link :systemconsole: Site Configuration > Customization :configjson: .SupportSettings.PrivacyPolicyLink :environment: MM_SUPPORTSETTINGS_PRIVACYPOLICYLINK - - This field sets the URL for the Privacy Policy of a self-hosted site. A link to the policy appears at the bottom of the sign-up and login pages. - Default value is **https://about.mattermost.com/default-privacy-policy/**. + :description: This field sets the URL for the Privacy Policy of a self-hosted site. A link to the policy appears at the bottom of the sign-up and login pages. Default value is **https://about.mattermost.com/default-privacy-policy/**. Privacy Policy link ~~~~~~~~~~~~~~~~~~~ @@ -218,9 +214,7 @@ Privacy Policy link :systemconsole: Site Configuration > Customization :configjson: .SupportSettings.AboutLink :environment: MM_SUPPORTSETTINGS_ABOUTLINK - - This field sets the URL for a page containing general information about a self-hosted site. A link to the About page appears at the bottom of the sign-up and login pages. - Default value is **https://about.mattermost.com/default-about/**. + :description: This field sets the URL for a page containing general information about a self-hosted site. A link to the About page appears at the bottom of the sign-up and login pages. Default value is **https://about.mattermost.com/default-about/**. About link ~~~~~~~~~~ @@ -561,7 +555,7 @@ Available languages :systemconsole: Site Configuration > Localization :configjson: EnableExperimentalLocales :environment: MM_LOCALIZATIONETTINGS_ENABLEEXPERIMENTALLOCALES - :description: nable work in progress languages in Mattermost to review translations and identify translation gaps. + :description: nable work in progress languages in Mattermost to review translations and identify translation gaps. Default is **false**. - **true**: Work in progress languages are available in Mattermost in addition to officially supported languages. - **false**: **(Default)** Only officially supported languages are available in Mattermost. @@ -646,7 +640,7 @@ Max channels per team :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.EnableJoinLeaveMessageByDefault :environment: MM_TEAMSETTINGS_ENABLEJOINLEAVEMESSAGEBYDEFAULT - :description: Specify the default configuration of system messages displayed when users join or leave channels. + :description: Specify the default configuration of system messages displayed when users join or leave channels. Default is **true**. - **true**: **(Default)** Join/Leave messages are displayed. - **false**: Join/Leave messages are hidden. @@ -670,7 +664,7 @@ Enable join/leave messages by default :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.RestrictDirectMessage :environment: MM_TEAMSETTINGS_RESTRICTDIRECTMESSAGE - :description: This setting determines whether a user can open a direct message channel with anyone on the Mattermost server or only to members of the same team. + :description: This setting determines whether a user can open a direct message channel with anyone on the Mattermost server or only to members of the same team. Default is **Any user on the Mattermost server**. - **Any user on the Mattermost server**: **(Default)** Users can send a direct message to any user through the **Direct Messages > More** menu. ``config.json`` setting: ``"any"`` - **Any member of the team**: The **Direct Messages > More** menu only allows direct messages to users on the same team. ``config.json`` setting: ``"team"`` @@ -691,7 +685,7 @@ Enable users to open direct message channels with :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.TeammateNameDisplay :environment: MM_TEAMSETTINGS_TEAMMATENAMEDISPLAY - :description: This setting determines how names appear in posts and under the **Direct Messages** list. + :description: This setting determines how names appear in posts and under the **Direct Messages** list. Default is **Show username** for self-hosted deployments and **Show first and last name** for Cloud deployments. - **Show username**: **(Default)** Displays usernames. ``config.json`` option: ``"username"``. - **Show nickname if one exists...**: Displays the user's nickname. ``config.json`` option: ``"nickname_full_name"``. @@ -723,7 +717,7 @@ Teammate name display :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.LockTeammateNameDisplay :environment: MM_TEAMSETTINGS_LOCKTEAMMATENAMEDISPLAY - :description: This setting controls whether users can change settings under **Settings > Display > Teammate Name Display**. + :description: This setting controls whether users can change settings under **Settings > Display > Teammate Name Display**. Default is **false**. - **true**: Users **cannot** change the Teammate Name Display. - **false**: **(Default)** Users can change the Teammate Name Display setting. @@ -746,27 +740,28 @@ Lock teammate name display for all users :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.ExperimentalViewArchivedChannels :environment: MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS - - - **true**: **(Default)** Allows users to access the content of archived channels of which they were a member. - - **false**: Users are unable to access content in archived channels. + :description: This setting controls whether users can view archived channels. From Mattermost v11.0, this setting is always enabled and no longer configurable. Users can always access archived channels where they are members. Allow users to view archived channels ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ -| - **true**: **(Default)** Allows users to access the content of archived channels of which they were a member. | - System Config path: **Site Configuration > Users and Teams** | -| - **false**: Users are unable to access content in archived channels. | - ``config.json`` setting: ``TeamSettings`` > ``ExperimentalViewArchivedChannels`` > ``true`` | -| | - Environment variable: ``MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS`` | -+----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ ++--------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ +| This setting is always enabled and no longer configurable from Mattermost v11.0. | - System Config path: **Site Configuration > Users and Teams** | +| Users can always access the content of archived channels of which they were a member. | - ``config.json`` setting: ``TeamSettings`` > ``ExperimentalViewArchivedChannels`` > ``true`` | +| | - Environment variable: ``MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS`` | ++--------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ .. note:: - Cloud admins can't modify this configuration setting. + + From Mattermost v11.0, this configuration setting is always enabled and no longer configurable. Users can always access archived channels where they are members. + .. config:setting:: show-email-address :displayname: Show email address (Users and Teams) :systemconsole: Site Configuration > Users and Teams :configjson: .PrivacySettings.ShowEmailAddress :environment: MM_PRIVACYSETTINGS_SHOWEMAILADDRESS + :description: This setting controls whether users can see the email addresses of other users in the client user interface. Default is **true**. - **true**: **(Default)** All users can see the email addresses of every other user. - **false**: Hides email addresses in the client user interface, except for system admins and the System Roles with read/write access to Compliance, Billing, or User Management (users/teams/channels/groups etc). @@ -786,6 +781,7 @@ Show email address :systemconsole: Site Configuration > Users and Teams :configjson: .PrivacySettings.ShowFullName :environment: MM_PRIVACYSETTINGS_SHOWFULLNAME + :description: This setting controls whether users can see the full names of other users in the client user interface. Default is - **true**: **(Default)** Full names are visible to all users in the client user interface. - **false**: Hides full names from all users, except system admins. @@ -804,6 +800,7 @@ Show full name :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.EnableCustomUserStatuses :environment: MM_TEAMSETTINGS_ENABLECUSTOMUSERSTATUSES + :description: This setting controls whether users can set custom status messages and emojis that are visible to all users. Default is **true**. - **true**: **(Default)** Users can set status messages and emojis that are visible to all users. - **false**: Users cannot set custom statuses. @@ -822,6 +819,7 @@ Enable custom user statuses :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.EnableLastActiveTime :environment: MM_TEAMSETTINGS_ENABLELASTACTIVETIME + :description: This setting controls whether users can see when deactivated users were last active on a user's profile and in direct message channel headers. Default is **true**. - **true**: **(Default)** Users can see when deactivated users were last active on a user's profile and in direct message channel headers. - **false**: Users can't see when deactivated users were last online. @@ -840,6 +838,7 @@ Enable last active time :systemconsole: Site Configuration > Users and Teams :configjson: ServiceSettings.EnableCustomGroups :environment: MM_SERVICESETTINGS.ENABLECUSTOMGROUPS + :description: This setting controls whether users with appropriate permissions can create custom user groups, and whether users can @mention custom user groups in Mattermost conversations. Default is **true**. - **true**: **(Default)** Users with appropriate permissions can create custom user groups, and users can @mention custom user groups in Mattermost conversations. - **false**: Custom user groups cannot be created. @@ -889,6 +888,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > Notifications :configjson: .TeamSettings.EnableConfirmNotificationsToChannel :environment: MM_TEAMSETTINGS_ENABLECONFIRMNOTIFICATIONSTOCHANNEL + :description: This setting controls whether users are prompted to confirm when posting @channel, @all, @here, or group mentions in channels with more than 5 members. Default is **true**. - **true**: **(Default)** Requires users to confirm when posting @channel, @all, @here, or group mentions in channels with more than 5 members. - **false**: No confirmation is required. @@ -907,6 +907,7 @@ Show @channel, @all, or @here confirmation dialog :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.SendEmailNotifications :environment: MM_EMAILSETTINGS_SENDEMAILNOTIFICATIONS + :description: This setting controls whether Mattermost sends email notifications for posts. Default is **true**. - **true**: **(Default)** Enables automatic email notifications for posts. - **false**: Disables notifications. @@ -938,6 +939,7 @@ Enable email notifications :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.EnablePreviewModeBanner :environment: MM_EMAILSETTINGS_ENABLEPREVIEWMODEBANNER + :description: This setting controls whether users see a banner in the Mattermost client when email notifications are disabled. Default is **true**. - **true**: **(Default)** When **Send email notifications** is **false**, users see the Preview Mode banner. - **false**: Preview Mode banner does not appear. @@ -961,6 +963,7 @@ Enable preview mode banner :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.EnableEmailBatching :environment: MM_EMAILSETTINGS_ENABLEEMAILBATCHING + :description: This setting controls whether email notifications for mentions and direct messages are batched into a single email over a given time period. Default is **false**. - **true**: Multiple email notifications for mentions and direct messages over a given time period are batched into a single email. Users can customize how often to receive batched notifications. - **false**: **(Default)** Emails will be sent for each mention or direct message. @@ -989,6 +992,7 @@ Enable email batching :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.EmailNotificationContentsType :environment: MM_EMAILSETTINGS_EMAILNOTIFICATIONCONTENTSTYPE + :description: This setting controls the contents of email notifications sent by the Mattermost system. Default is **Send full message contents**. - **Send full message contents**: **(Default)** Email notifications include the full message contents, along with the name of the sender and the channel. ``config.json`` setting: ``"full"`` - **Send generic description with only sender name**: Only the name of the sender and team name are included in email notifications. ``config.json`` setting: ``"generic"`` @@ -1010,7 +1014,7 @@ Email notification contents :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.FeedbackName :environment: MM_EMAILSETTINGS_FEEDBACKNAME - :description: Display name for email notifications sent from the Mattermost system. + :description: Display name for email notifications sent from the Mattermost system. No default setting. Notification display name ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1045,7 +1049,7 @@ Notification from address :systemconsole: Site Configuration > Notifications :configjson: .SupportSettings.SupportEmail :environment: MM_SUPPORTSETTINGS_SUPPORTEMAIL - :description: Sets a user support (or feedback) email address that is displayed on email notifications and during the Getting Started tutorial. + :description: Sets a user support (or feedback) email address that is displayed on email notifications and during the Getting Started tutorial. Default is feedback@mattermost.com Support email address ~~~~~~~~~~~~~~~~~~~~~ @@ -1093,6 +1097,7 @@ Notification footer mailing address :systemconsole: Site Configuration > Notifications :configjson: .EmailSettings.PushNotificationContents :environment: MM_EMAILSETTINGS_PUSHNOTIFICATIONCONTENTS + :description: This setting controls the contents of push notifications sent by the Mattermost system. Default is **Generic description with sender and channel names**. - **Generic description with only sender name**: Push notifications include the sender's name, but not the channel name or message contents. ``config.json`` setting: ``"generic_no_channel"`` - **Generic description with sender and channel names**: **(Default)** Push notifications include the name of the sender and channel, but not the message contents. ``config.json`` setting: ``"generic"`` @@ -1140,6 +1145,7 @@ Push notification contents :systemconsole: Site Configuration > Notifications :configjson: .MetricsSettings.EnableNotificationMetrics :environment: MM_METRICSSETTINGS_ENABLENOTIFICATIONMETRICS + :description: This setting controls whether Mattermost collects notification metrics data for client-side web and desktop app users. Default is **true**. - **true**: **(Default)** Mattermost notification data collection is enabled for client-side web and desktop app users. - **false**: Mattermost notification data collection is disabled. @@ -1176,7 +1182,8 @@ Access the following configuration settings in the System Console by going to ** :displayname: System-wide notifications :systemconsole: Site Configuration > System-wide notifications :configjson: .AnnouncementSettings.SystemWideNotifications - :environment: MM_ANNOUNCEMENTSETTINGS_SYSTEMWIDENOTIFICATIONS + :environment: MM_ANNOUNCEMENTSETTINGS_SYSTEMWIDENOTIFICATIONS + :description: This setting controls whether system-wide notifications are enabled. Default is **false**. - **true**: Enable system-wide notifications that display at the top of the Mattermost interface for all users across all teams. - **false**: **(Default)** Disable system-wide notifications. @@ -1243,6 +1250,7 @@ Banner text color :systemconsole: Site Configuration > System-wide notifications :configjson: .AnnouncementSettings.AllowBannerDismissal :environment: MM_ANNOUNCEMENTSETTINGS_ALLOWBANNERDISMISSAL + :description: This setting controls whether users can dismiss the system-wide notification. Default is **true**. - **true**: **(Default)** Users can dismiss the system-wide notification. It will re-appear the next time the user logs in, or when the text is updated by an admin. - **false**: Users cannot dismiss the system-wide notification. @@ -1273,6 +1281,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > Emoji :configjson: .ServiceSettings.EnableEmojiPicker :environment: MM_SERVICESETTINGS_ENABLEEMOJIPICKER + :description: This setting controls whether the emoji picker is enabled when composing messages and for message reactions. Default is **true**. - **true**: **(Default)** Enables an emoji picker when composing messages and for message reactions. - **false**: Disables the emoji picker in message composition and reactions. @@ -1291,6 +1300,7 @@ Enable emoji picker :systemconsole: Site Configuration > Emoji :configjson: .ServiceSettings.EnableCustomEmoji :environment: MM_SERVICESETTINGS_ENABLECUSTOMEMOJI + :description: This setting controls whether users can add custom emojis to the server. Default is **true**. - **true**: Allows users to add up to 6000 emojis through a **Custom Emoji** option in the emoji picker. - **false**: **(Default)** Disables custom emojis. @@ -1323,6 +1333,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.ThreadAutoFollow :environment: MM_SERVICESETTINGS_THREADAUTOFOLLOW + :description: - **true**: **(Default)** Enables automatic following for all threads that a user starts, or in which the user participates or is mentioned. - **false**: Disables automatic following of threads. @@ -1352,6 +1363,7 @@ Automatically follow threads :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.CollapsedThreads :environment: MM_SERVICESETTINGS_COLLAPSEDTHREADS + :description: Controls the availability of `threaded discussions on the server and for users. Default is **Always On**. - **Always On**: **(Default)** Enables `threaded discussions `__ on the server and for all users. ``config.json`` setting: ``"always_on"`` - **Default On**: Enables threaded discussions on the server and for all users. ``config.json`` setting: ``"default_on"`` @@ -1381,6 +1393,7 @@ Threaded discussions :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.PostPriority :environment: MM_SERVICESETTINGS_POSTPRIORITY + :description: This setting enables users to set a visual indicator for important or urgent root messages. Default is **true**. - **true**: **(Default)** Enables message priority for all users. - **false**: Disables the ability to set message priority and request acknowlegements. @@ -1414,6 +1427,7 @@ Message priority :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.AllowPersistentNotifications :environment: MM_SERVICESETTINGS_ALLOWPERSISTENTNOTIFICATIONS + :description: This setting controls whether users can send repeating notifications to mentioned recipients of urgent messages. Default is **true**. - **true**: **(Default)** Users can trigger repeating notifications to mentioned recipients of urgent messages. - **false**: Disables the ability to send repeating notifications. @@ -1495,6 +1509,7 @@ Total number of persistent notifications per post :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.EnableLinkPreviews :environment: MM_SERVICESETTINGS_ENABLELINKPREVIEWS + :description: This setting controls whether the server generates previews for website, image, and YouTube links. Default is **false**. - **true**: The server generates a preview of the first website, image, or YouTube video linked in a message. - **false**: **(Default)** All previews are disabled and the server does not request metadata for any links contained in messages. @@ -1544,6 +1559,7 @@ Disable link previews for specific domains :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.EnablePermalinkPreviews :environment: MM_SERVICESETTINGS_ENABLEPERMALINKPREVIEWS + :description: This setting controls whether message link previews are enabled. Default is **true**. - **true**: **(Default)** `Share links to Mattermost messages `__ will generate a preview for any users that have access to the original message. - **false**: Share links do not generate a preview. @@ -1573,6 +1589,7 @@ Enable message link previews :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.EnableSVGs :environment: MM_SERVICESETTINGS_ENABLESVGS + :description: This setting controls whether previews of SVG files attached to messages are enabled. Default is **false**. - **true**: Enables previews of SVG files attached to messages. - **false**: **(Default)** Disables previews of SVG files. @@ -1594,6 +1611,7 @@ Enable SVGs :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.EnableLatex :environment: MM_SERVICESETTINGS_ENABLELATEX + :description: This setting controls whether LaTeX code blocks are rendered as images. Default is **false**. - **true**: Enables rendering of `LaTeX in code blocks `__. - **false**: **(Default)** Disables rendering in blocks. Instead, LaTeX code is highlighted. @@ -1615,6 +1633,7 @@ Enable LaTeX code block rendering :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.EnableInlineLatex :environment: MM_SERVICESETTINGS_ENABLEINLINELATEX + :description: This setting controls whether inline LaTeX in message text is rendered. Default is **false**. - **true**: Enables rendering of `LaTeX in message text `__. - **false**: **(Default)** Disables inline rendering of LaTeX. Instead, LaTeX in message text is highlighted. @@ -1697,7 +1716,10 @@ Google API key :systemconsole: Site Configuration > Posts :configjson: .ServiceSettings.AllowSyncedDrafts :environment: MM_SERVICESETTINGS_ALLOWSYNCEDDRAFTS - :description: Enable or disable the ability to synchronize draft messages across all supported Mattermost clients. + :description: Enable or disable the ability to synchronize draft messages across all supported Mattermost clients. Default is **true**. + + - **true**: **(Default)** Message drafts are saved on the server and may be accessed from different clients. Users may still disable server synchronization of draft messages by going to **Settings > Advanced Settings**. + - **false**: Draft messages are stored locally on each device. Enable server syncing of message drafts ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -1759,6 +1781,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > File Sharing and Downloads :configjson: .FileSettings.EnableFileAttachments :environment: MM_FILESETTINGS_ENABLEFILEATTACHMENTS + :description: This setting controls whether users can attach files to messages. Default is **true**. - **true**: **(Default)** Allows users to attach files to messages. - **false**: Prevents users from attaching files (including images) to a message. @@ -1777,6 +1800,7 @@ Allow file sharing :systemconsole: Site Configuration > File Sharing and Downloads :configjson: .FileSettings.EnableMobileUpload :environment: MM_FILESETTINGS_ENABLEMOBILEUPLOAD + :description: This setting controls whether users can attach files to messages from mobile apps. Default is **true**. - **true**: **(Default)** Allows users to attach files to messages from mobile apps. - **false**: Prevents users from attaching files (including images) to messages from mobile apps. @@ -1795,6 +1819,7 @@ Allow file uploads on mobile :systemconsole: Site Configuration > File sharing and downloads :configjson: .FileSettings.EnableMobileDownload :environment: MM_FILESETTINGS_ENABLEMOBILEDOWNLOAD + :description: This setting controls whether users can download files from mobile apps. Default is **true**. - **true**: **(Default)** Enables file downloads on mobile apps. - **false**: Disables file downloads on mobile apps. Users can still download files from a mobile web browser. @@ -1813,6 +1838,7 @@ Allow file downloads on mobile :systemconsole: Site Configuration > File sharing and downloads :configjson: .FileSettings.MobileEnableSecureFilePreview :environment: MM_FILESETTINGS_MOBILEENABLESECUREFILEPREVIEW + :description: - **true**: Prevents file downloads, previews, and sharing for most file types. Allows in-app previews for PDFs, videos, and images only. Files are stored temporarily in the app's cache and cannot be exported or shared. - **false**: **(Default)** Secure file preview mode is disabled. @@ -1839,6 +1865,7 @@ This setting improves an organization's mobile security posture by restricting f :systemconsole: Site Configuration > File sharing and downloads :configjson: .FileSettings.MobileAllowPdfLinkNavigation :environment: MM_FILESETTINGS_MOBILEALLOWPDFLINKNAVIGATION + :description: This setting controls whether users can tap links inside PDFs when Secure File Preview Mode is active. Default is **true**. - **true**: **(Default)** Enables tapping links inside PDFs when Secure File Preview Mode is active. Links will open in the device browser or supported app. - **false**: Disables link navigation in PDFs when Secure File Preview Mode is active. @@ -1876,6 +1903,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > Public Links :configjson: .FileSettings.EnablePublicLink :environment: MM_FILESETTINGS_ENABLEPUBLICLINK + :description: This setting controls whether users can create public links to files attached to Mattermost messages. Default is **false**. - **true**: Allows users to create `public links `__ to files attached to Mattermost messages. - **false**: **(Default)** Prevents users from creating public links to files and disables all previously created links. @@ -1923,6 +1951,7 @@ Access the following configuration settings in the System Console by going to ** :systemconsole: Site Configuration > Notices :configjson: .AnnouncementSettings.AdminNoticesEnabled :environment: MM_ANNOUNCEMENTSETTINGS_ADMINNOTICESENABLED + :description: This setting controls whether system admins receive in-product notices about server upgrades and administration features. Default is **true**. - **true**: **(Default)** System admins will receive `in-product notices `__ about server upgrades and administration features. - **false**: System admins will not receive specific notices. Admins will still receive notices for all users (see **Enable end user notices**). @@ -1941,6 +1970,7 @@ Enable admin notices :systemconsole: Site Configuration > Notices :configjson: .AnnouncementSettings.UserNoticesEnabled :environment: MM_ANNOUNCEMENTSETTINGS_USERNOTICESENABLED + :description: This setting controls whether all users receive in-product notices about client upgrades and end user features. Default is **true**. - **true**: **(Default)** All users receive `in-product notices `__ about client upgrades and end user features. - **false**: Users will not receive in-product notices. @@ -1955,7 +1985,7 @@ Enable end user notices +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------+ Connected workspaces ---------------------------- +---------------------- .. include:: ../../_static/badges/ent-adv-cloud-selfhosted.rst :start-after: :nosearch: @@ -1969,10 +1999,10 @@ When connected workspaces are enabled, system admins can :doc:`create and manage :systemconsole: Site Configuration > Connected Workspaces :configjson: ConnectedWorkspacesSettings.EnableSharedChannels, ConnectedWorkspacesSettings.EnableRemoteClusterService :environment: N/A - :description: Establish secure connections between Mattermost instances, and invite secured connections to shared channels + :description: Establish secure connections between Mattermost instances, and invite secured connections to shared channels. Enable connected workspaces -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Enable the ability to establish secure connections between Mattermost instances, and invite secured connections to shared channels where users can participate as they would in any public and private channel. @@ -1996,6 +2026,7 @@ This feature's two ``config.json`` settings include: :systemconsole: N/A :configjson: ConnectedWorkspacesSettings.DisableSharedChannelsStatusSync :environment: N/A + :description: Disable member status and availability synchronization between connected workspaces. Default is false. - **true**: Channel as well as member status and availability isn't synchronized. - **false**: **(Default)** Channel as well as channel member status and availability is synchronized at regular intervals. @@ -2036,7 +2067,7 @@ Default maximum posts per sync :systemconsole: N/A :configjson: ConnectedWorkspacesSettings.SyncUsersOnConnectionOpen :environment: N/A - :description: Automatically synchronize users when a new connection between workspaces is established. Default is true. + :description: Automatically synchronize users when a new connection between workspaces is established. Default is **true**. - **true**: **(Default)** Users are automatically synchronized when a new connection is established. - **false**: Users are not automatically synchronized when a new connection is established. From 83edb2352c5264f279dcec3eb3a4cf4aaa0ab591 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 15 Sep 2025 14:31:42 -0400 Subject: [PATCH 06/36] v11: Update ExperimentalStrictCSRFEnforcement documentation (#8377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update ExperimentalStrictCSRFEnforcement documentation for v11 changes - Change default from false to true for new deployments from Mattermost Server v11 onward - Add information about legacy X-Requested-With header fallback support when disabled - Update config.json setting example to reflect new default value - Provide backward compatibility information for existing deployments Co-authored-by: Carrie Warner (Mattermost) * Update SAML encryption documentation for AES-256-GCM support (#8350) * Update SAML encryption documentation for AES-256-GCM support - Add clarification that AES-256-GCM encryption support was introduced in v10.9 and backported to v10.6.5 - Include backwards compatibility messaging that existing SAML integrations continue working without changes - Note that only customers wanting to use AES-256-GCM keys need to update their configuration - Update main SAML SSO documentation to reference new encryption support - Update technical documentation to include version information Resolves #8349 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update source/administration-guide/onboard/sso-saml-technical.rst Co-authored-by: Ben Schumacher * Update source/administration-guide/onboard/sso-saml.rst Co-authored-by: Ben Schumacher * Update source/deployment-guide/encryption-options.rst * Update source/deployment-guide/encryption-options.rst * Minor updates based on reviewer feedback --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher * Add references to Azure Local (#8367) * Add references to Azure Local * Editorial review updates --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v10.5.11 dot release documentation (#8371) * docs: Update v10.5.11 dot release documentation - Added v10.5.11 changelog entry with security fixes notice - Updated server releases table to reference v10.5.11 downloads and SBOMs - Updated version archive for both Enterprise and Team editions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update mattermost-v10-changelog.md * Update version-archive.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update docs for Desktop v5.13.1 release (#8356) * Update docs for Desktop v5.13.1 release - Updated download links and version references from v5.13.0 to v5.13.1 - Added v5.13.1 changelog entry as patch release - Updated installation instructions for all platforms 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update desktop-app-changelog.md * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-msi-installer-and-group-policy-install.rst * Update desktop-app-changelog.md * Update desktop-app-changelog.md * Update desktop-app-changelog.md --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais * Update deprecated-features.rst (#8358) * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update deprecated-features.rst * Update source/product-overview/deprecated-features.rst * Update source/product-overview/deprecated-features.rst Co-authored-by: Alejandro García Montoro --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Alejandro García Montoro * Environmental config setting consistency (#8368) * Environmental config setting consistency & normalization script * Fixed malformed tables * Config consistency & malformed table fixes * Removed helper script * Update faq-business.rst (#8376) * Update faq-business.rst Review and refinement * Update source/product-overview/faq-business.rst * Update faq-license.rst Removed redundant information, linking to single source * Update faq-business.rst * Update faq-business.rst * Update faq-license.rst Combined Business & Licensing since the pages covered redundant questions. * Delete source/product-overview/faq-business.rst Moved content to License FAQ & renamed * Added page redirect & child page nav * Incorporated reviewer feedback * Update faq-general.rst * Delete source/product-overview/faq-illicit-use.rst * Cleaned up nav following content moves --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Update v9.x releases to legacy status (#8360) * Update v9.x releases to legacy status - Remove v9.x versions from active release table in mattermost-server-releases.md - Move v9 changelog content to unsupported-legacy-releases.md - Update release-policy.md to include v9.x in legacy releases table - Replace v9 changelog with redirect to unsupported legacy releases - Update references to point to legacy releases documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Amy Blais * Update unsupported-legacy-releases.md * Update mattermost-server-releases.md * Update mattermost-v9-changelog.md * Update server.rst * Update common-esr-support-upgrade.md * Update unsupported-legacy-releases.md * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update prepare-to-upgrade-mattermost.rst * Update common-esr-support-upgrade.md * Update common-esr-support-upgrade.md * Update release-policy.md * Update prepare-to-upgrade-mattermost.rst --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> Co-authored-by: Sven Hüster * Update deprecated-features.rst (#8387) * Update deprecated-features.rst * Update common-esr-support-upgrade.md * Update release-policy.md * Linked experimental config settings to feature label desc (#8388) * Removed v9 changlog, added redirect (#8389) * Moved client availability page to end user guide (#8390) * Moved client availability page to end user guide * Returned headings to tabbed content with toctree pages * remove apache2 docs (#8391) --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) Co-authored-by: Ben Schumacher Co-authored-by: Nick Misasi Co-authored-by: Amy Blais <29708087+amyblais@users.noreply.github.com> Co-authored-by: Amy Blais Co-authored-by: Alejandro García Montoro Co-authored-by: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Co-authored-by: Sven Hüster Co-authored-by: Ben Cooke --- .../experimental-configuration-settings.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/administration-guide/configure/experimental-configuration-settings.rst b/source/administration-guide/configure/experimental-configuration-settings.rst index 994368fb262..0f6a2a4fd73 100644 --- a/source/administration-guide/configure/experimental-configuration-settings.rst +++ b/source/administration-guide/configure/experimental-configuration-settings.rst @@ -1495,21 +1495,21 @@ From Mattermost v10.10, when this :ref:`experimental Date: Tue, 16 Sep 2025 09:39:15 +0300 Subject: [PATCH 07/36] Update conf.py --- source/conf.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/conf.py b/source/conf.py index 68fc1f0cbc5..b9fa4d47b41 100644 --- a/source/conf.py +++ b/source/conf.py @@ -293,9 +293,9 @@ def setup(app: Sphinx): # built documents. # # The short X.Y version. -# version = '10.11' +# version = '11.0' # The full version, including alpha/beta/rc tags. -# release = '10.11' +# release = '11.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From e7eecf6c040c3843351dc25e655f2415732ec751 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Tue, 16 Sep 2025 08:28:20 -0400 Subject: [PATCH 08/36] Update environment-configuration-settings.rst (#8411) --- .../environment-configuration-settings.rst | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index 91fe41cd6e7..d7fa29c9489 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -835,6 +835,25 @@ Maximum idle connections | deployments, and **100** for Cloud deployments. | | +--------------------------------------------------------+-------------------------------------------------------------------------+ +.. config:setting:: maximum-idle-connections + :displayname: Maximum idle connections (Database) + :systemconsole: Environment > Database + :configjson: .SqlSettings.MaxIdleConns + :environment: MM_SQLSETTINGS_MAXIDLECONNS + :description: The maximum number of idle connections held open to the database. Default is **50**. + +Maximum idle connections +~~~~~~~~~~~~~~~~~~~~~~~~ + ++--------------------------------------------------------+-------------------------------------------------------------------------+ +| The maximum number of idle connections held open to | - System Config path: **Environment > Database** | +| the database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxIdleConns`` > ``50`` | +| | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | +| Numerical input. Default is **50**. | | +| A 2:1 ratio with MaxOpenConns is recommended. | | +| database. | | ++--------------------------------------------------------+-------------------------------------------------------------------------+ + .. config:setting:: query-timeout :displayname: Query timeout (Database) :systemconsole: Environment > Database From 0f6443485fa2e3bd5a501795b1806fa7f3debbf1 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Tue, 16 Sep 2025 08:31:33 -0400 Subject: [PATCH 09/36] Removed duplicate config setting --- .../environment-configuration-settings.rst | 21 +------------------ source/agents | 2 +- 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index d7fa29c9489..6879584d3f5 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -835,25 +835,6 @@ Maximum idle connections | deployments, and **100** for Cloud deployments. | | +--------------------------------------------------------+-------------------------------------------------------------------------+ -.. config:setting:: maximum-idle-connections - :displayname: Maximum idle connections (Database) - :systemconsole: Environment > Database - :configjson: .SqlSettings.MaxIdleConns - :environment: MM_SQLSETTINGS_MAXIDLECONNS - :description: The maximum number of idle connections held open to the database. Default is **50**. - -Maximum idle connections -~~~~~~~~~~~~~~~~~~~~~~~~ - -+--------------------------------------------------------+-------------------------------------------------------------------------+ -| The maximum number of idle connections held open to | - System Config path: **Environment > Database** | -| the database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxIdleConns`` > ``50`` | -| | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | -| Numerical input. Default is **50**. | | -| A 2:1 ratio with MaxOpenConns is recommended. | | -| database. | | -+--------------------------------------------------------+-------------------------------------------------------------------------+ - .. config:setting:: query-timeout :displayname: Query timeout (Database) :systemconsole: Environment > Database @@ -998,7 +979,7 @@ Disable database search Search behavior in Mattermost depends on which search engines are enabled: - When :doc:`Elasticsearch ` or :doc:`AWS OpenSearch
` is enabled, Mattermost will try to use it first. -- If Elasticsearch fails or is disabled, Mattermost will attempt to use Bleve search, if enabled. **Note:** Bleve search has been deprecated in Mattermost v11.0. We recommend using Elasticsearch or OpenSearch for enterprise search capabilities. +- If Elasticsearch fails or is disabled, Mattermost will attempt to use Bleve search, if enabled. Bleve search has been deprecated in Mattermost v11.0. We recommend using Elasticsearch or OpenSearch for enterprise search capabilities. - If these fail or are disabled, Mattermost tries to search the database directly, if this is enabled. - If all of the above methods fail or are disabled, the search results will be empty. diff --git a/source/agents b/source/agents index 708d1bda818..416d87d7e2e 160000 --- a/source/agents +++ b/source/agents @@ -1 +1 @@ -Subproject commit 708d1bda818bbb813a426418909bf684667b2696 +Subproject commit 416d87d7e2efab9224f1b198f6b2c5020e9b8416 From 5a898af25e89be3175d843b0681a9fdbc6468918 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 22 Sep 2025 14:29:45 -0400 Subject: [PATCH 10/36] Clarified that Team Admins can manage channel ABAC --- .../manage/admin/abac-channel-access-rules.rst | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/administration-guide/manage/admin/abac-channel-access-rules.rst b/source/administration-guide/manage/admin/abac-channel-access-rules.rst index b6c1bb5eb35..f8a12946124 100644 --- a/source/administration-guide/manage/admin/abac-channel-access-rules.rst +++ b/source/administration-guide/manage/admin/abac-channel-access-rules.rst @@ -4,9 +4,9 @@ Channel-specific access rules .. include:: ../../../_static/badges/ent-adv-cloud-selfhosted.rst :start-after: :nosearch: -Channel Admins can self-manage access controls for their private channels directly through the Channel Settings modal, without requiring System Admin intervention. For organization-wide policies created by System Admins, see :doc:`System-wide attribute-based access policies `. +Channel and Team Admins can self-manage access controls for their private channels directly through the Channel Settings modal, without requiring System Admin intervention. For organization-wide policies created by System Admins, see :doc:`System-wide attribute-based access policies `. -With channel access rules, Channel Admins can: +With channel access rules, Channel and Team Admins can: - Create channel-specific access rules using a simple interface. - Rules are **additive** to any system policies (both must be satisfied). @@ -63,8 +63,8 @@ The **Auto-add members based on access rules** toggle controls automatic members .. important:: - - If a system policy has auto-sync enabled, Channel Admins cannot disable it at the channel level. - - If a system policy has auto-sync disabled, Channel Admins can choose to enable it for their channel. + - If a system policy has auto-sync enabled, Channel and Team Admins cannot disable it at the channel level. + - If a system policy has auto-sync disabled, Channel and Team Admins can choose to enable it for their channel. - When no rules are configured, this toggle is automatically disabled. Validation and safety @@ -165,13 +165,13 @@ The **Access Control** tab is only visible when all of these conditions are met: - You have Channel Admin role or higher for the channel - The channel is a private channel (not public, group message, or direct message) - ABAC is enabled system-wide by a System Admin -- The Channel Admin ABAC is enabled via the configuration setting AccessControlSettings - EnableUserManagedAttributes +- The Channel Admin ABAC is enabled via the configuration setting ``AccessControlSettings.EnableUserManagedAttributes`` - Your user role includes the ``manage_channel_access_rules`` permission -Can Channel Admins override system policies? -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Can Channel and Team Admins override system policies? +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -No. Channel rules are always **additive** to system policies. Users must satisfy both system policies AND channel rules to access the channel. Channel Admins cannot weaken or override restrictions set by System Admins. +No. Channel rules are always **additive** to system policies. Users must satisfy both system policies AND channel rules to access the channel. Channel and Team Admins cannot weaken or override restrictions set by System Admins. What happens if I create rules that would exclude myself? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -197,7 +197,7 @@ Why is the auto-sync toggle disabled? The auto-sync toggle is automatically disabled when: - No access rules are configured -- A system policy with auto-sync enabled is applied (Channel Admins cannot disable it) +- A system policy with auto-sync enabled is applied (Channel and Team Admins cannot disable it) - There are validation errors in the current rules Synchronization and membership From b7078aecf3affb0a38abfffc79246932887831bb Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 10:21:34 -0400 Subject: [PATCH 11/36] docs: Update mobile permalink preview support documentation (#8422) Specify that permalink previews on mobile are available from mobile v2.23+ Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- source/end-user-guide/collaborate/share-links.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/end-user-guide/collaborate/share-links.rst b/source/end-user-guide/collaborate/share-links.rst index bd9c8f6d160..e4393f8d130 100644 --- a/source/end-user-guide/collaborate/share-links.rst +++ b/source/end-user-guide/collaborate/share-links.rst @@ -40,7 +40,7 @@ Share message links .. tab:: Mobile - Long press a message, and then tap **Copy Link** to copy the link to the clipboard. Long press to paste the link as a message or reply. Sharing links to messages generates a preview of the message. + Long press a message, and then tap **Copy Link** to copy the link to the clipboard. Long press to paste the link as a message or reply. From mobile v2.23, sharing links to messages generates a preview of the message. .. image:: ../../images/mobile-copy-a-link-to-the-message.gif :alt: Tap and hold on a message to access the available options. From 804f99c11fb668c1527b4e09a5372d159a7ed042 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:00:36 -0400 Subject: [PATCH 12/36] v11: Update SAML signature algorithm default from SHA1 to SHA256 (#8423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update SAML signature algorithm default from SHA1 to SHA256 for v11 - Updated authentication configuration settings to document the default change from RSAwithSHA1 to RSAwithSHA256 starting in Mattermost v11 - Added version-specific note explaining the security improvement and backward compatibility - Updated SAML technical documentation examples to use SHA-256 algorithms instead of SHA-1 - Added explanatory note about the v11 default change in the technical documentation Addresses improved security for user provisioning workflows as documented in mattermost/mattermost#33492. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Apply suggestion from @cwarnermm * Updated SAML signature algorithm --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../configure/authentication-configuration-settings.rst | 7 ++++++- source/administration-guide/onboard/sso-saml-technical.rst | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/source/administration-guide/configure/authentication-configuration-settings.rst b/source/administration-guide/configure/authentication-configuration-settings.rst index fb17bfa0582..d7f0bf76365 100644 --- a/source/administration-guide/configure/authentication-configuration-settings.rst +++ b/source/administration-guide/configure/authentication-configuration-settings.rst @@ -1499,7 +1499,7 @@ Sign request :systemconsole: Authentication > SAML 2.0 :configjson: .SamlSettings.SignatureAlgorithm :environment: MM_SAMLSETTINGS_SIGNATUREALGORITHM - :description: This setting determines the signature algorithm used to sign the SAML request. Options are: ``RSAwithSHA1``, ``RSAwithSHA256``, ``RSAwithSHA512``. + :description: This setting determines the signature algorithm used to sign the SAML request. Options are: ``RSAwithSHA1``, ``RSAwithSHA256``, ``RSAwithSHA512``. From v11, default is ``RSAwithSHA256``. Previously ``RSAwithSHA1``. Signature algorithm ~~~~~~~~~~~~~~~~~~~ @@ -1511,6 +1511,11 @@ Signature algorithm | This setting determines the signature algorithm used to sign the SAML request. Options are: ``RSAwithSHA1``, ``RSAwithSHA256``, ``RSAwithSHA512``. | - System Config path: **Authentication > SAML 2.0** | | | - ``config.json`` setting: ``SamlSettings`` > ``SignatureAlgorithm`` | | String input. | - Environment variable: ``MM_SAMLSETTINGS_SIGNATUREALGORITHM`` | +| | | +| .. note:: | | +| | | +| From Mattermost v11, the default signature algorithm has been updated from ``RSAwithSHA1`` to ``RSAwithSHA256`` for improved security. | | +| Existing configurations will continue to work, but new installations will default to ``RSAwithSHA256``. | | +----------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------+ .. config:setting:: canonical-algorithm diff --git a/source/administration-guide/onboard/sso-saml-technical.rst b/source/administration-guide/onboard/sso-saml-technical.rst index cf367cc45e9..7b1b7115292 100644 --- a/source/administration-guide/onboard/sso-saml-technical.rst +++ b/source/administration-guide/onboard/sso-saml-technical.rst @@ -42,6 +42,9 @@ When Mattermost initiates an SP-initiated SAML request flow, it generates a **HT AuthNRequests can also be signed by Mattermost, in which case the XML payload is similar to: +.. note:: + From Mattermost v11, the default signature algorithm has been updated from SHA-1 to SHA-256 for improved security. The example below reflects the new default SHA-256 algorithm. + .. code-block:: XML @@ -49,12 +52,12 @@ AuthNRequests can also be signed by Mattermost, in which case the XML payload is - + - + From a4bd8c659b8f6aa25a822d40762a99f21f58ff61 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:18:26 -0400 Subject: [PATCH 13/36] v11: Add deprecation notices for mmctl commands (#8425) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Add deprecation notices for mmctl commands in v11 - Add deprecated channel add command with reference to channel users add - Add deprecated channel remove command with reference to channel users remove - Fix permissions show example to use correct permissions role show syntax - Update child commands list to include deprecated commands Addresses https://github.com/mattermost/docs/issues/8397 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Removed deprecated mmctl commands and flags --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/mmctl-command-line-tool.rst | 104 ++++++++++++++++-- 1 file changed, 94 insertions(+), 10 deletions(-) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 71b404a1651..9fabfdd0016 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -832,6 +832,7 @@ mmctl channel Manage channels. Child Commands + - `mmctl channel add`_ - (Deprecated) Add a user to a channel - `mmctl channel archive`_ - Archive a channel - `mmctl channel create`_ - Create a channel - `mmctl channel delete`_ - Delete a channel @@ -839,6 +840,7 @@ Manage channels. - `mmctl channel make-private`_ - (Deprecated) Set a channel's type to "private" - `mmctl channel modify`_ - Modify a channel's type (private/public) - `mmctl channel move`_ - Move channels to the specified team + - `mmctl channel remove`_ - (Deprecated) Remove a user from a channel - `mmctl channel rename`_ - Rename a channel - `mmctl channel restore`_ - (Deprecated) Restore a channel from the archive - `mmctl channel search`_ - Search a channel by name @@ -880,6 +882,47 @@ Archive channels along with all related information including posts from the dat **Options inherited from parent commands** +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl channel add +~~~~~~~~~~~~~~~~~ + +This command is deprecated in favor of :ref:`mmctl channel users add `. + +**Description** + +Add a user to a channel. + +**Format** + +.. code-block:: sh + + mmctl channel add [channel] [users] [flags] + +**Examples** + +.. code-block:: sh + + mmctl channel add myteam:mychannel user@example.com username + +**Options** + +.. code-block:: sh + + -h, --help help for add + +**Options inherited from parent commands** + .. code-block:: sh --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") @@ -1160,20 +1203,61 @@ Rename an existing channel. .. code-block:: sh - mmctl channel rename myteam:oldchannel --name 'new-channel' --display_name 'New Display Name' + mmctl channel rename myteam:oldchannel --name 'new-channel' --display-name 'New Display Name' mmctl channel rename myteam:oldchannel --name 'new-channel' - mmctl channel rename myteam:oldchannel --display_name 'New Display Name' + mmctl channel rename myteam:oldchannel --display-name 'New Display Name' **Options** .. code-block:: sh - --display_name string Channel Display Name + --display-name string Channel Display Name -h, --help help for rename --name string Channel Name **Options inherited from parent commands** +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl channel remove +~~~~~~~~~~~~~~~~~~~~ + +This command is deprecated in favor of :ref:`mmctl channel users remove `. + +**Description** + +Remove a user from a channel. + +**Format** + +.. code-block:: sh + + mmctl channel remove [channel] [users] [flags] + +**Examples** + +.. code-block:: sh + + mmctl channel remove myteam:mychannel user@example.com username + +**Options** + +.. code-block:: sh + + -h, --help help for remove + +**Options inherited from parent commands** + .. code-block:: sh --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") @@ -4739,7 +4823,7 @@ Show all the information about a role. .. code-block:: sh - mmctl permissions show system_user + mmctl permissions role show system_user **Options** @@ -5870,14 +5954,14 @@ Create a team. .. code-block:: sh - mmctl team create --name mynewteam --display_name "My New Team" - mmctl team create --name private --display_name "My New Private Team" --private + mmctl team create --name mynewteam --display-name "My New Team" + mmctl team create --name private --display-name "My New Private Team" --private **Options** .. code-block:: sh - --display_name string Team Display Name + --display-name string Team Display Name --email string Administrator Email (anyone with this email is automatically a team admin) -h, --help help for create --name string Team Name @@ -6037,13 +6121,13 @@ Rename an existing team. .. code-block:: sh - mmctl team rename old-team --display_name 'New Display Name' + mmctl team rename old-team --display-name 'New Display Name' **Options** .. code-block:: sh - --display_name string Team Display Name + --display-name string Team Display Name -h, --help help for rename **Options inherited from parent commands** @@ -6535,7 +6619,7 @@ Convert user accounts to bots, or convert bots to user accounts. --locale string The locale (e.g., EN, FR) for the converted new user account. Required when the "bot" flag is set --nickname string The nickname for the converted user account. Required when the "bot" flag is set --password string The password for converted new user account. Required when "user" flag is set - --system_admin If supplied, the converted user will be a system admin. Defaults to false. Required when the "bot" flag is set + --system-admin If supplied, the converted user will be a system admin. Defaults to false. Required when the "bot" flag is set --user If supplied, convert a bot to a user --username string Username for the converted user account. Required when the "bot" flag is set From 8fea65818d300c6976c3b3db9e1b72a130c1d017 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 15:29:23 -0400 Subject: [PATCH 14/36] v11: Deprecate mmctl user email and username commands (#8424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Deprecate mmctl user email and username commands for v11 - Add deprecation warnings to mmctl user email and mmctl user username commands - Add documentation for new mmctl user edit command and subcommands: - mmctl user edit email (replaces mmctl user email) - mmctl user edit username (replaces mmctl user username) - Update command references in notes to use new commands 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Carrie Warner (Mattermost) * Deprecate mmctl user email and username commands --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/mmctl-command-line-tool.rst | 133 +++++++++++++++++- 1 file changed, 130 insertions(+), 3 deletions(-) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 9fabfdd0016..207e297a940 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -6467,7 +6467,10 @@ Manage users. - `mmctl user delete`_ - Delete users - `mmctl user deleteall`_ - Delete all users and all posts (local command only) - `mmctl user demote`_ - Demote users to guests - - `mmctl user email`_ - Set user email + - `mmctl user edit`_ - Edit user information + - `mmctl user edit email`_ - Set user email + - `mmctl user edit username`_ - Change username of the user + - `mmctl user email`_ - (Deprecated) Set user email - `mmctl user invite`_ - Invite user - `mmctl user list`_ - List users - `mmctl user migrate-auth`_ - Bulk migrate user accounts authentication type @@ -6476,7 +6479,7 @@ Manage users. - `mmctl user reset-password`_ - Reset user password - `mmctl user resetmfa`_ - Reset a user's MFA token - `mmctl user search`_ - Search for a user - - `mmctl user username`_ - Change username of the user + - `mmctl user username`_ - (Deprecated) Change username of the user - `mmctl user verify`_ - Mark user's email as verified **Options** @@ -6847,6 +6850,126 @@ Demote a user to a guest. **Options inherited from parent commands** +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl user edit +~~~~~~~~~~~~~~~ + +**Description** + +Edit user information such as email address and username. + +**Format** + +.. code-block:: sh + + mmctl user edit [command] + +**Child Commands** + +- `mmctl user edit email`_ - Set user email +- `mmctl user edit username`_ - Change username of the user + +**Options** + +.. code-block:: sh + + -h, --help help for edit + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl user edit email +~~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Change the email address associated with a user. + +.. note:: + + From Mattermost v10.9, email addresses enclosed in angle brackets (e.g., ````) will be rejected. To avoid issues, ensure all user emails comply with the plain address format (e.g., ``billy@example.com``). In addition, we strongly recommend taking proactive steps to audit and update Mattermost user data to align with this product change, as impacted users may face issues accessing Mattermost or managing their user profile. You can update these user emails manually using this mmctl command: ``mmctl user edit email "" affecteduser@domain.com``. + +**Format** + +.. code-block:: sh + + mmctl user edit email [user] [new email] [flags] + +**Examples** + +.. code-block:: sh + + mmctl user edit email testuser user@example.com + +**Options** + +.. code-block:: sh + + -h, --help help for email + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl user edit username +~~~~~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Change the username of the user. + +**Format** + +.. code-block:: sh + + mmctl user edit username [user] [new username] [flags] + +**Examples** + +.. code-block:: sh + + mmctl user edit username testuser newusername + +**Options** + +.. code-block:: sh + + -h, --help help for username + +**Options inherited from parent commands** + .. code-block:: sh --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") @@ -6862,13 +6985,15 @@ Demote a user to a guest. mmctl user email ~~~~~~~~~~~~~~~~ +This command is deprecated in favor of :ref:`mmctl user edit email `. + **Description** Change the email address associated with a user. .. note:: - From Mattermost v10.9, email addresses enclosed in angle brackets (e.g., ````) will be rejected. To avoid issues, ensure all user emails comply with the plain address format (e.g., ``billy@example.com``). In addition, we strongly recommend taking proactive steps to audit and update Mattermost user data to align with this product change, as impacted users may face issues accessing Mattermost or managing their user profile. You can update these user emails manually using this mmctl command: ``mmctl user email "" affecteduser@domain.com``. + From Mattermost v10.9, email addresses enclosed in angle brackets (e.g., ````) will be rejected. To avoid issues, ensure all user emails comply with the plain address format (e.g., ``billy@example.com``). In addition, we strongly recommend taking proactive steps to audit and update Mattermost user data to align with this product change, as impacted users may face issues accessing Mattermost or managing their user profile. You can update these user emails manually using this mmctl command: ``mmctl user edit email "" affecteduser@domain.com``. **Format** @@ -7422,6 +7547,8 @@ Search for users based on username, email, or user ID. The command returns user mmctl user username ~~~~~~~~~~~~~~~~~~~ +This command is deprecated in favor of :ref:`mmctl user edit username ` instead. + **Description** Change the username of the user. From 6e44d33c7b21d109337231994d2b6a2e0c8232a6 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 16:06:35 -0400 Subject: [PATCH 15/36] v11: Update mmctl completion commands (#8427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update mmctl completion commands for v11 - Add version note indicating completion commands are available from v11.0 onwards - Update shell completion installation section to include all supported shells (bash, fish, powershell, zsh) - Fix incorrect shell configuration paths in fish and powershell documentation - Correct code block syntax for powershell examples - Update table of contents description to reflect all supported shells Closes #8399 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Update mmctl shell completion --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/mmctl-command-line-tool.rst | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 207e297a940..583d4435f81 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -30,7 +30,7 @@ mmctl commands - `mmctl bot`_ - Bot Management - `mmctl channel`_ - Channel Management - `mmctl command`_ - Command Management -- `mmctl completion`_ - Generate autocompletion scripts for bash and zsh +- `mmctl completion`_ - Generate autocompletion scripts for bash, fish, powershell, and zsh - `mmctl compliance-export`_ - Compliance Export Management - `mmctl config`_ - Configuration Management - `mmctl docs`_ - Generate mmctl documentation @@ -471,18 +471,32 @@ And now we can run commands normally: Installing shell completions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -To install the shell completions for bash, add the following line to your ``~/.bashrc`` or ``~/.profile`` file: +mmctl supports shell completions for bash, fish, powershell, and zsh from Mattermost v11. + +To install the shell completions for **bash**, add the following line to your ``~/.bashrc`` or ``~/.profile`` file: .. code-block:: sh source <(mmctl completion bash) -For zsh, add the following line to your ``~/.zshrc`` file: +For **zsh**, add the following line to your ``~/.zshrc`` file: .. code-block:: sh source <(mmctl completion zsh) +For **fish**, add the following line to your fish configuration: + +.. code-block:: sh + + mmctl completion fish | source + +For **powershell**, add the following line to your PowerShell profile: + +.. code-block:: powershell + + mmctl completion powershell | Out-String | Invoke-Expression + mmctl auth renew ~~~~~~~~~~~~~~~~ @@ -1848,7 +1862,7 @@ To load completion, run: .. code-block:: sh - -h, --help help for bash + -h, --help help for bash --no-descriptions disable completion descriptions **Options inherited from parent commands** @@ -1876,9 +1890,9 @@ To load completion, run: .. code-block:: sh - . <(mmctl completion fish) + mmctl completion fish | source -To configure your ``fish`` shell to load completions for each session, add the above line to your ``~/.zshrc``. +To configure your ``fish`` shell to load completions for each session, add the above line to your fish configuration. **Format** @@ -1890,7 +1904,7 @@ To configure your ``fish`` shell to load completions for each session, add the a .. code-block:: sh - -h, --help help for fish + -h, --help help for fish --no-descriptions disable completion descriptions **Options inherited from parent commands** @@ -1916,15 +1930,15 @@ Generate the ``powershell`` autocompletion scripts. To load completion, run: -.. code-block:: sh +.. code-block:: powershell - . <(mmctl completion powershell) + mmctl completion powershell | Out-String | Invoke-Expression -To configure your ``powershell`` shell to load completions for each session, add the above line to your ``~/.zshrc``. +To configure your ``powershell`` shell to load completions for each session, add the above line to your PowerShell profile. **Format** -.. code-block:: sh +.. code-block:: powershell mmctl completion powershell [flags] @@ -1932,7 +1946,7 @@ To configure your ``powershell`` shell to load completions for each session, add .. code-block:: sh - -h, --help help for powershell + -h, --help help for powershell --no-descriptions disable completion descriptions **Options inherited from parent commands** @@ -1974,7 +1988,7 @@ To configure your ``zsh`` shell to load completions for each session, add the ab .. code-block:: sh - -h, --help help for zsh + -h, --help help for zsh --no-descriptions disable completion descriptions **Options inherited from parent commands** From cd59419018cbb09c546a43ad24e1f5660eef3834 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 16:13:55 -0400 Subject: [PATCH 16/36] v11: Add documentation for new mmctl Custom Profile Attribute commands (#8426) * Add documentation for new mmctl Custom Profile Attribute commands in v11 - Add mmctl cpa command for managing Custom Profile Attributes - Add mmctl cpa field subcommands: create, delete, edit, list - Include Enterprise Advanced badge for CPA commands - Follow existing mmctl documentation patterns and formatting Co-authored-by: Carrie Warner (Mattermost) * Added Custom Profile Attribute field commands to mmctl --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/mmctl-command-line-tool.rst | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 583d4435f81..01b88a2b821 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -30,6 +30,7 @@ mmctl commands - `mmctl bot`_ - Bot Management - `mmctl channel`_ - Channel Management - `mmctl command`_ - Command Management +- `mmctl cpa`_ - Custom Profile Attribute Management - `mmctl completion`_ - Generate autocompletion scripts for bash, fish, powershell, and zsh - `mmctl compliance-export`_ - Compliance Export Management - `mmctl config`_ - Configuration Management @@ -1993,6 +1994,211 @@ To configure your ``zsh`` shell to load completions for each session, add the ab **Options inherited from parent commands** +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl cpa +--------- + +.. include:: ../../_static/badges/ent-adv-only.rst + :start-after: :nosearch: + +Manage Custom Profile Attributes (CPA) for extended user profile information. + + Child Commands + - `mmctl cpa field`_ - Manage CPA fields + +**Options** + +.. code-block:: sh + + -h, --help help for cpa + +mmctl cpa field +~~~~~~~~~~~~~~~ + +**Description** + +Manage Custom Profile Attribute fields. + + Child Commands + - `mmctl cpa field create`_ - Create a new CPA field + - `mmctl cpa field delete`_ - Delete a CPA field + - `mmctl cpa field edit`_ - Edit a CPA field + - `mmctl cpa field list`_ - List CPA fields + +**Options** + +.. code-block:: sh + + -h, --help help for field + +mmctl cpa field create +~~~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Create a new Custom Profile Attribute field. + +**Format** + +.. code-block:: sh + + mmctl cpa field create [field-name] [flags] + +**Examples** + +.. code-block:: sh + + mmctl cpa field create "Department" --type text + mmctl cpa field create "Location" --type select --options "New York,London,Tokyo" + +**Options** + +.. code-block:: sh + + -h, --help help for create + --type string field type (text, select, number, date) + --options string comma-separated list of options for select fields + --required mark field as required + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl cpa field delete +~~~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Delete an existing Custom Profile Attribute field. + +**Format** + +.. code-block:: sh + + mmctl cpa field delete [field-id] [flags] + +**Examples** + +.. code-block:: sh + + mmctl cpa field delete department-field-001 + mmctl cpa field delete location-field-002 --force + +**Options** + +.. code-block:: sh + + -h, --help help for delete + --force skip confirmation prompt + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl cpa field edit +~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Edit an existing Custom Profile Attribute field. + +**Format** + +.. code-block:: sh + + mmctl cpa field edit [field-id] [flags] + +**Examples** + +.. code-block:: sh + + mmctl cpa field edit department-field-001 --name "Department/Division" + mmctl cpa field edit location-field-002 --options "New York,London,Tokyo,Sydney" + +**Options** + +.. code-block:: sh + + -h, --help help for edit + --name string update field name + --type string update field type (text, select, number, date) + --options string update comma-separated list of options for select fields + --required mark field as required + --not-required mark field as not required + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl cpa field list +~~~~~~~~~~~~~~~~~~~~ + +**Description** + +List all Custom Profile Attribute fields. + +**Format** + +.. code-block:: sh + + mmctl cpa field list [flags] + +**Examples** + +.. code-block:: sh + + mmctl cpa field list + mmctl cpa field list --json + +**Options** + +.. code-block:: sh + + -h, --help help for list + +**Options inherited from parent commands** + .. code-block:: sh --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") From 73fe6d21637d9e8dd8c4cb7ba736ecb205ed6514 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 16:45:15 -0400 Subject: [PATCH 17/36] v11: Add documentation for new mmctl user edit commands (#8428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add documentation for new v11 mmctl user edit commands - Add mmctl user edit command and child commands - Document mmctl user edit authdata for SAML authentication data - Document mmctl user edit email for SAML email address changes - Document mmctl user edit username for username modifications - Address customer pain point of requiring direct database access - Provide safer alternative for SAML configurations using email as ID attribute Fixes mattermost/docs#8400 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Added mmctl user edit command * Updated 2 section heading levels --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/mmctl-command-line-tool.rst | 95 +++++++++++++++---- 1 file changed, 79 insertions(+), 16 deletions(-) diff --git a/source/administration-guide/manage/mmctl-command-line-tool.rst b/source/administration-guide/manage/mmctl-command-line-tool.rst index 01b88a2b821..e96e189d3ed 100644 --- a/source/administration-guide/manage/mmctl-command-line-tool.rst +++ b/source/administration-guide/manage/mmctl-command-line-tool.rst @@ -6687,9 +6687,10 @@ Manage users. - `mmctl user delete`_ - Delete users - `mmctl user deleteall`_ - Delete all users and all posts (local command only) - `mmctl user demote`_ - Demote users to guests - - `mmctl user edit`_ - Edit user information - - `mmctl user edit email`_ - Set user email - - `mmctl user edit username`_ - Change username of the user + - `mmctl user edit`_ - Edit user properties + - `mmctl user edit authdata`_ - Edit user authentication data + - `mmctl user edit email`_ - Edit user email address + - `mmctl user edit username`_ - Edit user username - `mmctl user email`_ - (Deprecated) Set user email - `mmctl user invite`_ - Invite user - `mmctl user list`_ - List users @@ -7044,7 +7045,7 @@ Permanently delete all users and all related information including posts. This c --suppress-warnings disables printing warning messages mmctl user demote -^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~ **Description** @@ -7087,24 +7088,74 @@ mmctl user edit **Description** -Edit user information such as email address and username. +Edit user properties including username, email, and authentication data. This command provides a structured way to modify user properties without direct database access. **Format** .. code-block:: sh - mmctl user edit [command] + mmctl user edit [user] [flags] + +**Examples** + +.. code-block:: sh + + mmctl user edit testuser --help + +**Options** + +.. code-block:: sh + + -h, --help help for edit **Child Commands** -- `mmctl user edit email`_ - Set user email -- `mmctl user edit username`_ - Change username of the user +- `mmctl user edit authdata`_ - Edit user authentication data +- `mmctl user edit email`_ - Edit user email address +- `mmctl user edit username`_ - Edit user username + +**Options inherited from parent commands** + +.. code-block:: sh + + --config string path to the configuration file (default "$XDG_CONFIG_HOME/mmctl/config") + --disable-pager disables paged output + --insecure-sha1-intermediate allows to use insecure TLS protocols, such as SHA-1 + --insecure-tls-version allows to use TLS versions 1.0 and 1.1 + --json the output format will be in json format + --local allows communicating with the server through a unix socket + --quiet prevent mmctl to generate output for the commands + --strict will only run commands if the mmctl version matches the server one + --suppress-warnings disables printing warning messages + +mmctl user edit authdata +~~~~~~~~~~~~~~~~~~~~~~~~ + +**Description** + +Edit user authentication data. This command addresses the common customer pain point where SAML-authenticated users need to change their authentication information when SAML configuration uses email as the ID attribute, eliminating the need for direct database manipulation. + +**Format** + +.. code-block:: sh + + mmctl user edit authdata [user] [authdata] [flags] + +**Examples** + +.. code-block:: sh + + # Update SAML authentication data for a user + mmctl user edit authdata john.doe newsamlid@example.com + + # Clear authentication data for a user + mmctl user edit authdata john.doe "" **Options** .. code-block:: sh - -h, --help help for edit + -h, --help help for authdata **Options inherited from parent commands** @@ -7125,7 +7176,7 @@ mmctl user edit email **Description** -Change the email address associated with a user. +Edit user email address. This command is particularly useful for SAML-authenticated users who need to change their email addresses when the SAML configuration uses email as the ID attribute. This provides a safer alternative to direct database manipulation. .. note:: @@ -7135,19 +7186,27 @@ Change the email address associated with a user. .. code-block:: sh - mmctl user edit email [user] [new email] [flags] + mmctl user edit email [user] [new email] [flags] **Examples** .. code-block:: sh - mmctl user edit email testuser user@example.com + # Change email for a SAML-authenticated user + mmctl user edit email john.doe newemail@example.com + + # Update email for a user identified by current email + mmctl user edit email oldemail@example.com newemail@example.com + +.. note:: + + This command is especially important for SAML environments where email is used as the ID attribute. Previously, changing email addresses for SAML users required direct database manipulation, which posed security and operational risks. **Options** .. code-block:: sh - -h, --help help for email + -h, --help help for email **Options inherited from parent commands** @@ -7168,7 +7227,7 @@ mmctl user edit username **Description** -Change the username of the user. +Edit user username. This command allows changing usernames in a structured and safe manner without direct database access. **Format** @@ -7180,7 +7239,11 @@ Change the username of the user. .. code-block:: sh - mmctl user edit username testuser newusername + # Change username for a user + mmctl user edit username john.doe john.smith + + # Change username using email to identify user + mmctl user edit username user@example.com newusername **Options** @@ -7609,7 +7672,7 @@ Delete a specific user preference. --suppress-warnings disables printing warning messages mmctl user promote -^^^^^^^^^^^^^^^^^^ +~~~~~~~~~~~~~~~~~~~ **Description** From 50f8973d26b6537f5a517dde0497fc127031098b Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:06:31 -0400 Subject: [PATCH 18/36] v11: Update CPA documentation for admin-managed fields (#8429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update CPA documentation for v11 admin-managed fields - Added new section explaining admin-managed vs user-editable attributes - Updated attribute creation process to include v11 user editing permissions - Enhanced security guidance for attributes used in ABAC policies - Added best practices for determining attribute editability - Updated version-specific tabs to reflect v11 changes Addresses changes from engineering PRs #33785 and #33662 for v11 CPA field management. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Added admin managed property fields --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../manage/admin/user-attributes.rst | 68 ++++++++++++++++--- 1 file changed, 59 insertions(+), 9 deletions(-) diff --git a/source/administration-guide/manage/admin/user-attributes.rst b/source/administration-guide/manage/admin/user-attributes.rst index ad5e9b656f8..a5edd4c75ab 100644 --- a/source/administration-guide/manage/admin/user-attributes.rst +++ b/source/administration-guide/manage/admin/user-attributes.rst @@ -6,21 +6,36 @@ User attributes From Mattermost v10.8, ensure your teams always have the critical information they need to collaborate effectively by defining and managing organization-specific user profile attributes as system attributes that you can synchronize with your AD/LDAP or SAML identity provider. -System attributes enable you to customize user profile attributes to match your organization's unique needs and streamline collaboration while keeping user data centralized and consistent. The attributes you define, such as position, rank, or location, are :doc:`attributes users can manage as part of their user profile `. These custom profile attributes supplement existing user details visible from the user's profile picture. +System attributes enable you to customize user profile attributes to match your organization's unique needs and streamline collaboration while keeping user data centralized and consistent. + +From Mattermost v11, you have enhanced control over these custom profile attributes through admin-managed vs user-editable settings. By default, attributes are admin-managed for security, but you can explicitly allow user editing for specific attributes that don't impact access control or sensitive organizational data. These custom profile attributes supplement existing user details visible from the user's profile picture. .. image:: ../../../images/cpa-properties.png :alt: Mobile examples of a user profile with custom user attributes added as system attributes. Before you begin -~~~~~~~~~~~~~~~~~ +----------------- If you plan to synchronize system properties with your AD/LDAP or SAML identity provider, ensure AD/LDAP or SAML synchronization is already enabled and configured. See the :doc:`AD/LDAP groups ` product documentation or :ref:`SAML 2.0 ` configuration settings documentation for details. +.. tab:: Mattermost v11 or later + + From Mattermost v11, custom profile attributes have enhanced admin controls with a security-first approach. All attributes are admin-managed by default, providing better security and governance. System administrators can explicitly enable user editing for specific attributes through the System Console interface. + + If your organization uses :doc:`attribute-based access control (ABAC) `, which requires an Enterprise Edition Advanced license, attributes used in access control policies should remain admin-managed for security reasons. You can enable user-managed attributes for ABAC by setting ``EnableUserManagedAttributes`` in ``config.json``, or via an environment variable as noted below, but this should be done with caution: + + - ``config.json`` setting: ``".AccessControlSettings.EnableUserManagedAttributes: false",`` with options ``true`` and ``false``. + - Environment variable: ``MM_ACCESSCONTROLSETTINGS_ENABLEUSERMANAGEDATTRIBUTES`` + + This configuration setting isn't managed using the System Console, and is disabled by default to ensure that access control policies remain secure and can't be circumvented by users modifying their own profile attributes. Learn more about `admin-managed versus user-editable attributes <#admin-managed-vs-user-editable-attributes>`__. + + Additionally, from mobile app v2.31.0, user attributes are fully supported on mobile devices. Mobile users can both view and manage profile attributes (if allowed by admin settings) directly from the mobile app. Mobile attribute support requires the same server-side configuration, and no additional mobile-specific setup is required. + .. tab:: Mattermost v10.11 or later - From Mattermost v10.11, user-managed attributes are excluded from ABAC rules for security reasons. If your organization uses ABAC (which requires Enterprise Edition Advanced), a system admin can explicitly enable user-managed attributes for ABAC by setting ``EnableUserManagedAttributes`` in ``config.json`` or via an environment variable as noted below. This configuration setting isn't managed using the System Console, and is disabled by default to ensure that access control policies remain secure and can’t be circumvented by users modifying their own profile attributes. + From Mattermost v10.11, user-managed attributes are excluded from ABAC rules for security reasons. If your organization uses ABAC (which requires Enterprise Edition Advanced), a system admin can explicitly enable user-managed attributes for ABAC by setting ``EnableUserManagedAttributes`` in ``config.json`` or via an environment variable as noted below. This configuration setting isn't managed using the System Console, and is disabled by default to ensure that access control policies remain secure and can't be circumvented by users modifying their own profile attributes. - - ``config.json`` setting: ``".AccessControlSettings.EnableUserManagedAttributes: false”,`` with options ``true`` and ``false``. + - ``config.json`` setting: ``".AccessControlSettings.EnableUserManagedAttributes: false",`` with options ``true`` and ``false``. - Environment variable: ``MM_ACCESSCONTROLSETTINGS_ENABLEUSERMANAGEDATTRIBUTES`` Additionally, from mobile app v2.31.0, user attributes are fully supported on mobile devices. Mobile users can both view and manage profile attributes directly from the mobile app. Mobile attribute support requires the same server-side configuration, and no additional mobile-specific setup is required. @@ -33,8 +48,38 @@ If you plan to synchronize system properties with your AD/LDAP or SAML identity You'll need Mattermost Enterprise v10.8 or later, and be a Mattermost system admin to enable the system properties feature flag, ``MM_FEATUREFLAGS_CUSTOMPROFILEATTRIBUTES`` to create and manage system properties. See the Mattermost developer documentation for details on `enabling feature flags in a self-hosted deployment `_. Mattermost Cloud customers can request this feature flag be enabled by contacting their Mattermost Account Manager or by `creating a support ticket `_ request. +Admin-managed vs user-editable attributes +------------------------------------------- + +From Mattermost v11, system administrators have enhanced control over custom profile attributes through admin-managed vs user-editable settings. This distinction provides better security and governance for organizational profile data. + +**Admin-managed attributes** (default behavior): + +- Controlled exclusively by system administrators +- Users cannot edit these values in their profiles +- Recommended for security-sensitive information like roles, clearance levels, or organizational identifiers +- Ideal for attributes used in ABAC (Attribute-Based Access Control) policies +- Values can only be updated by admins or through identity provider synchronization + +**User-editable attributes**: + +- Users can update these values in their own profiles +- System administrators can still modify these attributes +- Appropriate for non-sensitive information like personal preferences, skills, or contact details +- Should not be used for attributes that impact security access controls + +.. note:: + For security reasons, attributes used in ABAC policies are admin-managed by default and cannot be edited by users unless explicitly enabled by a system administrator through the **Allow user editing** option. + +**Best practices:** + +- Keep attributes that affect access control or contain sensitive organizational data as admin-managed +- Only enable user editing for attributes that don't impact security policies +- Regularly review user-editable attributes to ensure they remain appropriate for user management +- Consider your organization's data governance requirements when determining attribute editability + Add attributes -~~~~~~~~~~~~~~ +--------------- You can define and manage up to 20 system attributes using the System Console. Each attribute becomes a user profile option users can populate. Once you reach the maximum of 20 attributes, you can't create new attributes until you `delete attributes <#manage-attributes>`__ you no longer need. @@ -56,14 +101,19 @@ You can define and manage up to 20 system attributes using the System Console. E - **Hide when empty**: The attribute is only visible in user profiles when it has a value. - **Always hide**: The attribute is never visible in user profiles. -4. Save your changes. +4. Configure user editing permissions (Mattermost v11 or later): + + - **Admin-managed** (default): Only system administrators can modify this attribute. Recommended for security-sensitive or policy-affecting attributes. + - **User-editable**: Allow users to edit this attribute in their profiles. Select this for non-sensitive attributes that users should be able to manage themselves. + +5. Save your changes. .. tip:: Duplicate existing attributes by selecting **More** |more-icon| and selecting **Duplicate attribute**. This creates a new attribute with the same name and type as the original attribute. You can then edit the new attribute to change its name, type, and visibility as needed. Manage attributes -~~~~~~~~~~~~~~~~~~ +------------------ - **Modify**: Select the attribute fields to make inline changes to the attribute's name, type, or values. Select **More** |more-icon| to change a attribute's visibility. @@ -71,12 +121,12 @@ Manage attributes - **Delete**: Delete attributes you no longer need or want by selecting **More** |more-icon| and selecting **Delete property**. -- **User Edit Permissions** *(v10.11+)*: By default, attributes used in ABAC policies cannot be edited by users. To allow user editing for specific attributes, administrators can enable this through the **More** |more-icon| menu and selecting **Allow user editing**. This should only be enabled for attributes that do not impact security access controls. +- **User Edit Permissions**: From Mattermost v11, all custom profile attributes are admin-managed by default for enhanced security. To allow user editing for specific attributes, administrators can enable this through the **More** |more-icon| menu and selecting **Allow user editing**. This should only be enabled for attributes that do not impact security access controls or organizational policies. Attributes used in ABAC policies should remain admin-managed unless there's a specific business need and the security implications are fully understood. In cases where multiple system admins manage system attributes, refresh your web browser instance to see real-time updates to system attributes made by other admins. Sync attributes with your identity provider -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-------------------------------------------- 1. Synchronize a attribute with AD/LDAP or SAML by selecting **More** |more-icon| and selecting **Link attribute to AD/LDAP** or **Link attribute to SAML**. Mattermost takes you directly to the **AD/LDAP** or **SAML 2.0** configuration settings page in the System Console where you can map the attributes you want to synchronize. From 7b8326b811be09ba20f49a93eeb1004a2d8da966 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:26:40 -0400 Subject: [PATCH 19/36] docs: Add Authentication Method field to user management documentation (#8431) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added documentation for new Authentication Method field in System Console user details - Field shows external authentication system details (LDAP DN, SAML NameID, OAuth ID, etc.) - Helps system administrators troubleshoot authentication issues - Enables easier correlation of Mattermost users with external authentication systems - Available starting from Mattermost v11.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../configure/user-management-configuration-settings.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/administration-guide/configure/user-management-configuration-settings.rst b/source/administration-guide/configure/user-management-configuration-settings.rst index 06929132488..728a4808dc1 100644 --- a/source/administration-guide/configure/user-management-configuration-settings.rst +++ b/source/administration-guide/configure/user-management-configuration-settings.rst @@ -43,6 +43,10 @@ From Mattermost v9.6, you can review the following user data in the System Conso - **Days active**: (PostgreSQL only) The total number of days in which the user has sent a message in Mattermost. - **Messages posted**: (PostgreSQL only) The total number of messages the user has sent on the server. +From Mattermost v11.0, you can also review the following authentication data for each user: + +- **Authentication Method**: Shows how users authenticate with the Mattermost server, including external authentication system details such as LDAP Distinguished Name (DN), SAML NameID, OAuth ID, or other external authentication identifiers. This information helps system administrators troubleshoot authentication issues and correlate Mattermost users with their external authentication systems. + By default, you see all columns of data and data for all time. - Show or hide data all data columns exccept **User details** and **Actions**, as preferred. From 97a047f2f3fb90c2ffcd982e34df6345f2e653fa Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Tue, 30 Sep 2025 09:54:22 -0400 Subject: [PATCH 20/36] v11: Update playbook mobile documentation for new features (#8434) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update playbook mobile documentation for v11 features - Enhanced mobile-app-changelog.md v2.23.0 with interactive playbook features for v11 server - Updated interact-with-playbooks.rst to reflect v11+ mobile task management capabilities - Enhanced work-with-runs.rst mobile note for v11+ server enhanced functionality - Added comprehensive mobile task management section to work-with-tasks.rst Mobile playbook features for v11 server + v2.23 mobile app: - Click tasks to open bottom sheet views - Skip/unskip tasks - Update task assignees, dates, and commands - Change run ownership 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * revert: Remove playbook features from mobile changelog v2.23.0 Co-authored-by: Carrie Warner (Mattermost) * Added playbooks on mobile guidance --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- source/end-user-guide/workflow-automation.rst | 2 ++ .../interact-with-playbooks.rst | 7 ++++-- .../workflow-automation/work-with-runs.rst | 7 ++++-- .../workflow-automation/work-with-tasks.rst | 24 +++++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) diff --git a/source/end-user-guide/workflow-automation.rst b/source/end-user-guide/workflow-automation.rst index 75b58b0c44c..34cf32dcc7b 100644 --- a/source/end-user-guide/workflow-automation.rst +++ b/source/end-user-guide/workflow-automation.rst @@ -41,6 +41,8 @@ Access Access playbooks using a web browser or the desktop app by selecting the product menu located in the top-left corner of the Mattermost interface and then selecting **Playbooks**. +From Mattermost v11 and mobile app v2.23.0, you can access playbooks from the mobile app. You can :ref:`interact with playbook tasks ` and :ref:`update tasks `. + From Mattermost v10.11 and mobile app v2.31.0, you can access playbooks from the mobile app in read-only mode. :ref:`Playbooks slash commands ` are supported in the mobile app, but actions like starting runs or updating checklists aren't available through the mobile interface. Usage diff --git a/source/end-user-guide/workflow-automation/interact-with-playbooks.rst b/source/end-user-guide/workflow-automation/interact-with-playbooks.rst index 409d432d29b..ef55f8153f5 100644 --- a/source/end-user-guide/workflow-automation/interact-with-playbooks.rst +++ b/source/end-user-guide/workflow-automation/interact-with-playbooks.rst @@ -24,9 +24,12 @@ Available slash commands include: - ``/playbook settings digest [on/off]`` - Turn daily digest on/off. - ``/playbook settings weekly-digest [on/off]`` - Turn weekly digest on/off. -.. note:: +Playbooks on the go +-------------------- - The Playbooks mobile interface is read-only from Mattermost v10.11 and mobile app v2.31.0, and actions like starting runs or updating checklists aren’t available through the mobile interface. However, if you can use playbooks slash commands in a browser or the Mattermost desktop app, you can use them in the mobile app as well. Slash commands are processed by the server-side Playbooks plugin, not the mobile app’s interface, so they work via all Mattermost clients. +From Mattermost v11.0 and mobile app v2.23.0, mobile users can :ref:`interact with playbook tasks ` and :ref:`update tasks `. + +Mattermost v10.11 and mobile app v2.31.0 introduced a read-only mobile interface, with actions like starting runs or updating checklists only available through slash commands. Advanced playbook editing and management actions require the desktop or a web browser. API documentation ----------------- diff --git a/source/end-user-guide/workflow-automation/work-with-runs.rst b/source/end-user-guide/workflow-automation/work-with-runs.rst index e7ac71f1609..d3771610eb3 100644 --- a/source/end-user-guide/workflow-automation/work-with-runs.rst +++ b/source/end-user-guide/workflow-automation/work-with-runs.rst @@ -23,9 +23,12 @@ When you’re in a channel with an active run, select the **Toggle Run Details** Some run actions can be edited while the run is in progress. This increases visibility into the run's progress and can improve accountability. -.. note:: +Playbooks on mobile +~~~~~~~~~~~~~~~~~~~~ - From Mattermost v10.11 and mobile app v2.31.0, mobile users can view playbook run details in read-only mode. While viewing and monitoring capabilities are available on mobile devices, and :ref:`playbooks slash commands ` are supported on mobile, playbook editing and management actions require the desktop or a web browser. +From Mattermost server v11.0 and mobile app v2.23.0, mobile users can :ref:`interact with playbook tasks ` and :ref:`update tasks `. + +Mattermost v10.11 and mobile app v2.31.0 introduced a read-only mobile interface and :ref:`playbooks slash commands `. Advanced playbook editing and management actions require the desktop or a web browser. Runs and channel behavior ------------------------- diff --git a/source/end-user-guide/workflow-automation/work-with-tasks.rst b/source/end-user-guide/workflow-automation/work-with-tasks.rst index 1c8816df4c1..40c7cc95b62 100644 --- a/source/end-user-guide/workflow-automation/work-with-tasks.rst +++ b/source/end-user-guide/workflow-automation/work-with-tasks.rst @@ -44,3 +44,27 @@ You can: - You can change the due date of tasks to manage priorities and urgency. To view your task inbox, access the **Playbooks** tab in Mattermost. In the header, next to your profile image, select the tasks list icon. A list of every task assigned to you from every run that's in progress is displayed. + +From Mattermost v11.0 and mobile app v2.23.0, mobile users can perform the following task management operations on playbook runs: + +Mobile task management +---------------------- + +From Mattermost v11.0 and mobile app v2.23.0, mobile users can perform the following task management operations on playbook runs: + +Interact with playbook tasks +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- **Task interaction**: Tap on any task to open a detailed bottom sheet view with task options and information. +- **Check/Uncheck tasks**: Complete or reopen tasks directly from the Mattermost mobile app. +- **Skip/Unskip tasks**: Mark tasks as skipped or return them to active status as workflow requirements change. + +Update tasks +~~~~~~~~~~~~~ + +- **Update assignee**: Change who is responsible for completing a task directly from the mobile app. +- **Modify due dates**: Adjust task deadlines to accommodate changing priorities and schedules. +- **Edit task commands**: Update slash commands or instructions associated with tasks. +- **Change run ownership**: Transfer run ownership between team members. + +These mobile capabilities provide full task management functionality for teams working with playbooks while on mobile devices, complementing your existing desktop and web browser experiences. \ No newline at end of file From 4ae23c11e29d14679148cc5dfec54172c898d7da Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Tue, 30 Sep 2025 13:08:11 -0400 Subject: [PATCH 21/36] v11: Consolidate PBKDF2 password security documentation (#8440) * docs: Consolidate PBKDF2 password security documentation for v11.0 - Add PBKDF2 key derivation information to Connected Workspaces remote cluster invitations - Include end-user password migration warning for downgrade scenarios in security preferences - Add authentication configuration note about PBKDF2 password security enhancement Addresses password security improvements per: - https://github.com/mattermost/mattermost/pull/33830 - https://github.com/mattermost/mattermost/pull/33493 Co-authored-by: Carrie Warner (Mattermost) * Added PBKDF2 password security --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../authentication-configuration-settings.rst | 4 ++++ .../onboard/connected-workspaces.rst | 6 +++--- .../preferences/manage-your-security-preferences.rst | 11 ++++++++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/source/administration-guide/configure/authentication-configuration-settings.rst b/source/administration-guide/configure/authentication-configuration-settings.rst index d7f0bf76365..8dc5f6acc2f 100644 --- a/source/administration-guide/configure/authentication-configuration-settings.rst +++ b/source/administration-guide/configure/authentication-configuration-settings.rst @@ -245,6 +245,10 @@ Password Access the following configuration settings in the System Console by going to **Authentication > Password**. +.. note:: + + From Mattermost v11.0, password hashing uses PBKDF2 for enhanced security. User passwords are automatically migrated when they log in after upgrading to v11.0 or later. This migration is progressive and happens transparently when users authenticate. + .. config:setting:: minimum-password-length :displayname: Minimum password length (Password) :systemconsole: Authentication > Password diff --git a/source/administration-guide/onboard/connected-workspaces.rst b/source/administration-guide/onboard/connected-workspaces.rst index 3282706e7b2..3b9ccc63a4d 100644 --- a/source/administration-guide/onboard/connected-workspaces.rst +++ b/source/administration-guide/onboard/connected-workspaces.rst @@ -19,7 +19,7 @@ The process of connecting Mattermost workspaces involves the following 5 steps: 2. `Enable the connected workflows functionality <#enable-connected-workflows>`__ for each Mattermost Enterprise instance you want to connect. -3. System admins must `create a secure and trusted connection <#create-a-secure-connection>`__ with other Mattermost Enterprise instances using the System Console or slash commands. This process involves creating a password-protected, encrypted invitation, creating a strong decryption password, then sending the invitation and password to the system admin of a remote Mattermost instance. +3. System admins must `create a secure and trusted connection <#create-a-secure-connection>`__ with other Mattermost Enterprise instances using the System Console or slash commands. This process involves creating a password-protected, encrypted invitation, creating a strong decryption password, then sending the invitation and password to the system admin of a remote Mattermost instance. From Mattermost v11.0, remote cluster invitations use PBKDF2 key derivation for enhanced security. 4. When a remote system admin receives the invitation, they must `accept the invitation <#accept-a-secure-connection-invitation>`__ using the System Console or slash commands. @@ -58,7 +58,7 @@ Create a secure connection 4. Select the **Destination Team** as the default team where shared channels will be added. This team will be used as the default location for organizing shared channels from this connected workspace. 5. Select **Save**. - An invitation consisting of a password-protected AES 256-bit encrypted code blob is generated. The connection is labeled as **Connection Pending** until the remote system admin accepts the invitation. + An invitation consisting of a password-protected AES 256-bit encrypted code blob is generated. From Mattermost v11.0, password protection uses PBKDF2 key derivation for enhanced security. The connection is labeled as **Connection Pending** until the remote system admin accepts the invitation. .. tab:: Slash Commands @@ -72,7 +72,7 @@ Create a secure connection ``/secure-connection create --name AcmeUS --displayname "AcmeUSA" --password examplepassword`` - This slash command creates an invitation consisting of a password-protected AES 256-bit encrypted code blob for a remote Mattermost entity known locally as ``AcmeUS`` with a password of ``examplepassword``. Within Mattermost, this shared connection displays to the local system admin based on the ``name`` and ``displayname`` provided. + This slash command creates an invitation consisting of a password-protected AES 256-bit encrypted code blob for a remote Mattermost entity known locally as ``AcmeUS`` with a password of ``examplepassword``. From Mattermost v11.0, password protection uses PBKDF2 key derivation for enhanced security. Within Mattermost, this shared connection displays to the local system admin based on the ``name`` and ``displayname`` provided. Extend the invitation ~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/end-user-guide/preferences/manage-your-security-preferences.rst b/source/end-user-guide/preferences/manage-your-security-preferences.rst index 77b47487776..79dd960a7c9 100644 --- a/source/end-user-guide/preferences/manage-your-security-preferences.rst +++ b/source/end-user-guide/preferences/manage-your-security-preferences.rst @@ -12,10 +12,15 @@ Select your profile picture, select **Profile**, and then select **Security** to | Password | You may change your password if you've logged in by email using Mattermost in | | | a web browser or using the desktop app. | | | | -| | .. note:: | +| | .. important:: | +| | | +| | - If you sign in to Mattermost using a single sign-on service, you must update your password through | +| | your SSO service account. | +| | - **Password Security Enhancement**: From v11.0, Mattermost uses PBKDF2 password hashing for improved | +| | security. When you log in after your server upgrades to v11.0+, your password will be automatically | +| | migrated to the more secure format. If your server is later downgraded to a version prior to v11.0, | +| | you may be unable to log in and will need to contact your system administrator for a password reset. | | | | -| | If you sign in to Mattermost using a single sign-on service, you must update your password through | -| | your SSO service account. | +----------------------+------------------------------------------------------------------------------------------------------------+ | Multi-factor | If your system admin has enabled :ref:`multi-factor authentication | | authentication (MFA) | ` | From 47369d95909d01288fcf49eec75ee482d22cfc6a Mon Sep 17 00:00:00 2001 From: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Date: Tue, 30 Sep 2025 16:42:48 -0500 Subject: [PATCH 22/36] Update editions-and-offerings.rst --- .../editions-and-offerings.rst | 151 ++++++++---------- 1 file changed, 71 insertions(+), 80 deletions(-) diff --git a/source/product-overview/editions-and-offerings.rst b/source/product-overview/editions-and-offerings.rst index 538bc5456b6..699cc9e581e 100644 --- a/source/product-overview/editions-and-offerings.rst +++ b/source/product-overview/editions-and-offerings.rst @@ -1,43 +1,66 @@ Editions and Offerings ====================== -Mattermost is an open core platform. +Mattermost is an open core, self-hosted platform for delivering sovereign collaborative workflow to defense, intelligence, security and critical infrastructure enterprises. Our on-prem and private cloud offerings enable mission-critical workflows including cyber defense, DevSecOps and mission operations. + +**Try it Now — 1-Hour Preview** - Experience features of Mattermost Enterprise Advanced in a live environment with our `1-hour preview `_. See how it can support your secure, mission-critical collaboration — from Security Operations and DevSecOps pipelines to sensitive joint operations. -This means we develop both an open source, self-hosted edition of our software provided free to our community, as well as a commercial edition that extends and enhances our open source software with paid, subscription-based offerings available both in self-hosted and cloud deployment modes. + +As an open core platform, we maintain and secure the `Mattermost open-source project `_ to enable customers and community to vet and verify our software supply chain. Our code base regularly passes through automated security scanning, customer review and crowd-sourced security review through `Bugcrowd `_ under our `responsible disclosure policy `_. The Mattermost open source project is used to produce Mattermost’s commercial Enterprise Edition that provides proprietary capabilities through paid subscriptions. -You can choose between one of two compiled code bases, either open source (`Team Edition <#mattermost-team-edition>`__) or commercial (`Enterprise Edition <#mattermost-enterprise-edition>`__). - -We offer a range of `plans <#mattermost-plans>`__, which are sets of features and entitlements available either free or as a paid subscription service. Mattermost sells subscriptions for both self-hosted and cloud deployments. - -Self-hosted editions --------------------- - -Self-hosted editions support deploying Mattermost within IT-controlled private environments in public clouds, including AWS, Azure, GCP and Oracle Cloud, as well as on-premises in private clouds and virtual or physical servers. When you're using a self-hosted deployment, a license file is provided and needs to be uploaded to activate your subscription. - -For customers using our service in a self-hosted deployment, the `Mattermost Free <#mattermost-free>`__ offering is available in both our open source and commercial code bases (called `Mattermost Team Edition <#mattermost-team-edition>`__ and `Mattermost Enterprise Edition <#mattermost-enterprise-edition>`__, respectively). Mattermost Enterprise Edition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Our commercial, self-hosted software is called Mattermost Enterprise Edition, and it's available as a Linux binary that deploys identically to our open source version - including upgrading in an identical fashion - with 2 key differences: It contains code for advanced commercial features and it's offered under a commercial license (https://mattermost.com/enterprise-edition-license/). The commercial license prohibits reverse engineering and tampering with our license key mechanism unlocking paid features so that we can run a compliant and fair commercial business. - -Once you’ve downloaded and installed Mattermost Enterprise Edition within your preferred environment, you have the option to use it as-is in a "free" mode, or you can access Mattermost's commercial features by starting a trial or by purchasing a subscription. You can start a 30-day free Enterprise trial via **System Console > Edition and License > Start trial**, or request a trial online at https://mattermost.com/trial/. +Our commercial self-hosted software, Mattermost Enterprise Edition, is distributed as a compiled Linux binary that includes advanced and subscription-based features. It is offered under a commercial license (https://mattermost.com/enterprise-edition-license/) that prohibits reverse engineering or tampering with the license key mechanism used to unlock paid functionality, supporting a fair and compliant business model. -Mattermost Team Edition -~~~~~~~~~~~~~~~~~~~~~~~ - -Team Edition is a free-to-use, open source, self-hosted collaboration platform offering all the core productivity benefits of competing SaaS solutions. It deploys as a single Linux binary with PostgreSQL under an MIT license. +Once you’ve installed Mattermost Enterprise Edition in your preferred environment, you can run it as-is in a free mode — known as Entry — or activate a trial or subscription to unlock additional features. -Mattermost Team Edition is also bundled inside of the free Mattermost Enterprise Edition code base, which provides the same functionality as Mattermost Team Edition, with the additional benefit of being able to trial as well as upgrade into an expanded set of features available with paid subscription, including Mattermost Professional and Mattermost Enterprise. +Mattermost Entry +~~~~~~~~~~~~~~~~ -Because of the benefits of Mattermost Enterprise Edition, we recommend installing it instead of Mattermost Team Edition, even if you don’t currently need a subscription, so you'll have the flexibility to trial or enable additional features should you need them. However, if you only want to install software with a fully open source license, then Mattermost Team Edition is the best choice. +.. include:: ../_static/badges/selfhosted-only.rst + :start-after: :nosearch: -Mattermost plans ----------------- +Mattermost Entry gives small, forward-leaning teams a **free, production-ready Intelligent Mission Environment** to get started on improving their mission-critical secure collaborative workflows. This offering includes: -Mattermost plans consist of features and entitlements available either a paid subscription service or free. :doc:`Learn more ` about the features available across all plans. +- Teams and channels for one-to-one and group messaging, file sharing, and unlimited search history with threaded messaging, emoji, and custom emoji with 10,000 messages history and 10,000 monthly push notifications. +- - :doc:`Collaborative playbooks with ad hoc add/remove tasks, automated triggers, and stakeholders dashboard up to 5 runs each month `. +- Kanban-style work management with Boards up to 1,000 cards +- Audio and screenshare with Calls up to 40 minutes +- Interactive AI agents with bring-your-own LLM integration with 250 queries each month +- Native apps for iOS, Android, Windows, macOS, and Linux. +- Pre-packaged integrations with most common developer tools, including Jira, GitHub, GitLab, Zoom, and more. +- Tools for :doc:`custom branding ` and :doc:`themes `. +- :doc:`Multi-factor authentication `. +- :doc:`Granular system permissions `. +- Highly customizable `third-party bots, integrations `_, and :doc:`command line tools `. +- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. +- Multiple languages including English (Australian, US), Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. +- :doc:`Guest access ` and :doc:`custom user groups `. +- :doc:`Active Directory/LDAP Single Sign-on and user synchronization `. +- Single Sign-on with :doc:`GitLab ` using the OpenID Connect standard, :doc:`Google `, :doc:`OpenID Connect `, :doc:`SAML ` or :doc:`Entra ID `. +- :ref:`MFA enforcement `. +- :ref:`Advanced team permissions `. +- :ref:`Read-only announcement channels `. +- :doc:`System-wide announcement banners `. +- O365 integration with `Microsoft Teams Meetings `_ and `Jira multi-server `_. +- :doc:`Sychronization of access controls, channels, and teams with AD/LDAP Groups `. +- :doc:`Enterprise mobile device management with custom EMM support via AppConfig `. +- :ref:`Private mobility with ID-only push notifications `. +- :doc:`Advanced configuration of playbook permissions, and analytics dashboards ` +- :doc:`Channel export ` +- `Granular audit logs with data export `_. +- :doc:`Advanced collaboration with connected workspaces across Mattermost instances `. +- :doc:`Advanced performance monitoring `. +- :doc:`Server health checks `. +- :doc:`Classified and Sensitive Information Controls ` +- :doc:`Zero Trust Security ` with dynamic attribute-based policy controls, environmental atributes, and User Authoritative Source integration +- :doc:`Mobile security ` controls +- :doc:`Air-gapped deployment workflows ` +- `Community support `_. -The Mattermost Professional, Enterprise, or Enterprise Advanced editions are only available after deploying our Mattermost Enterprise Edition binary, and then applying a valid license key that comes with a subscription purchase. Alternatively, you can start a 30-day free trial that can be activated either in-product (**System Console > Edition and License > Start trial**) or online at https://mattermost.com/trial/. +The following sections outline our paid offerings which provide commercial support and remove free limitations. Mattermost Enterprise Advanced ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -45,29 +68,20 @@ Mattermost Enterprise Advanced .. include:: ../_static/badges/cloud-selfhosted.rst :start-after: :nosearch: -Mattermost Enterprise Advanced is the :doc:`Intelligent Mission Environment ` for Cyber Defense and Mission Operations that features: +Built for **multi-domain secure operations**, Enterprise Advanced builds on all Enterprise-level secure collaborative workflow capabilities with specialized features for environments requiring the strictest security, compliance, and operational integrity, including: - :doc:`Classified and Sensitive Information Controls ` - :doc:`Zero Trust Security ` with dynamic attribute-based policy controls, environmental atributes, and User Authoritative Source integration - :doc:`Mobile security ` controls - :doc:`Air-gapped deployment workflows ` -Visit the :doc:`Mattermost Plans ` page to learn more about the capabilities and features available in Enterprise Advanced. - -A 30-day free trial to preview the features in this subscription can be activated either in-product (**System Console > Edition and License > Start trial**) or via an online request at https://mattermost.com/trial/. - Mattermost Enterprise ~~~~~~~~~~~~~~~~~~~~~ .. include:: ../_static/badges/cloud-selfhosted.rst :start-after: :nosearch: -Mattermost Enterprise is an enterprise-grade collaboration system that supports and helps you scale your mission-critical enterprise workflows, meet strict enterprise security, compliance, and privacy requirements, as well as provide executive reporting, dashboards, and productivity metrics. - -* *Self-hosted deployments* - **Mattermost Enterprise** is available to our self-hosted community who either run, or upgrade to, our self-hosted commercial Mattermost Enterprise Edition, who purchase and install the license key onto their Mattermost server. A 30-day free trial to preview the features in this subscription can be activated either in-product (**System Console > Edition and License > Start trial**) or via an online request at https://mattermost.com/trial/. -* *Cloud deployments* - For our cloud community, **Mattermost Enterprise** can be purchased by contacting a `Mattermost Expert `_ - -This offering includes all the features of `Mattermost Professional <#mattermost-professional>`__, plus: +Mattermost Enterprise supports large-scale, mission-critical **secure collaborative workflows** with robust security, compliance, and productivity tooling. It builds on core ChatOps capabilities from the Professional offering, plus: - :doc:`Enterprise-scale search with dedicated indexing and usage resourcing via cluster support `. - :doc:`Sychronization of access controls, channels, and teams with AD/LDAP Groups `. @@ -90,7 +104,7 @@ This offering includes all the features of `Mattermost Professional <#mattermost - Contextual AI-based :ref:`summarization `, real-time :ref:`channel briefing `, and :ref:`composition ` - Private, air-gapped & DDIL :doc:`AI operations ` - PQ&A with :doc:`access-controlled backend systems ` -- 99.99% uptime SLA guarantee (Cloud only, via dedicated virtual secure Cloud add-on option). +- 99.9% uptime SLA guarantee (Cloud only, via dedicated virtual secure Cloud add-on option). Mattermost Professional ~~~~~~~~~~~~~~~~~~~~~~~ @@ -98,12 +112,18 @@ Mattermost Professional .. include:: ../_static/badges/selfhosted-only.rst :start-after: :nosearch: -Mattermost Professional is the set of collaboration features that enables you to build and scale your sophisticated technical workflows across multiple cross-functional teams to deliver mission-critical software. - -* *Self-hosted deployments* - **Mattermost Professional** is available to our self-hosted community who either run, or upgrade to, our self-hosted commercial Mattermost Enterprise Edition (see :doc:`deployment guides `), who purchase the appropriate subscription license key through a `channel reseller `_ or by contacting a `Mattermost Expert `_, and who then install the license key onto their Mattermost server. A 30-day free trial to preview the features in this subscription can be activated in-product (**System Console > Edition and License > Start trial**). - -This offering includes all the features of `Mattermost Free <#mattermost-free>`__, plus: +Professional best serves technical and operational teams of up to 500 users looking to run **Sovereign ChatOps workflows**, with advanced collaboration and security controls. This offering provides robust collaboration and administration tools including: +- Teams and channels for one-to-one and group messaging, file sharing, and unlimited search history with threaded messaging, emoji, and custom emoji. +- Native apps for iOS, Android, Windows, macOS, and Linux. +- Pre-packaged integrations with most common developer tools, including Jira, GitHub, GitLab, Zoom, and more. +- Tools for :doc:`custom branding ` and :doc:`themes `. +- :doc:`Multi-factor authentication `. +- Single Sign-on with :doc:`GitLab ` using the OAuth 2.0 standard. +- :doc:`Granular system permissions `. +- Highly customizable `third-party bots, integrations `_, and :doc:`command line tools `. +- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. +- Multiple languages including English (Australian, US), Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. - :doc:`Guest access ` and :doc:`custom user groups `. - :doc:`Active Directory/LDAP Single Sign-on and user synchronization `. - Single Sign-on with :doc:`GitLab ` using the OpenID Connect standard, :doc:`Google `, :doc:`OpenID Connect `, :doc:`SAML ` or :doc:`Entra ID `. @@ -116,47 +136,18 @@ This offering includes all the features of `Mattermost Free <#mattermost-free>`_ - :ref:`Interactive AI bot support ` - Flexible :doc:`bring-your-own-LLM integration ` -See a `complete list of Mattermost features `_. - -Mattermost Free -~~~~~~~~~~~~~~~~ - -.. include:: ../_static/badges/selfhosted-only.rst - :start-after: :nosearch: - -Mattermost Free is a set of collaboration features for accelerating your technical team’s productivity, shipping software faster with higher quality, and improving alignment among team members. - -Mattermost Free is available to our self-hosted community through both our open source Mattermost Team Edition offering, and in our commercial Mattermost Enterprise Edition offering (when no subscription license key is active). It is best suited for teams of up to 50 members. See deployment options at: https://mattermost.com/download/. - -.. important:: - - For teams of less than 50 users, a standalone, single-node deployment of `Mattermost Team Edition <#mattermost-team-edition>`__ with frequent backups is appropriate. - - For teams larger than 50 users, it's strongly advised to deploy Mattermost with `Mattermost Enterprise <#mattermost-enterprise>`__ or `Mattermost Professional <#mattermost-professional>`__ to deliver a more secure, reliable, scalable, and resilient service. +See a complete list of Mattermost features for all paid offerings at https://mattermost.com/pricing . - Not recommended for government or sensitive commerical workloads. - -Features include: - -- Teams and channels for one-to-one and group messaging, file sharing, and unlimited search history with threaded messaging, emoji, and custom emoji. -- Native apps for iOS, Android, Windows, macOS, and Linux. -- Pre-packaged integrations with most common developer tools, including Jira, GitHub, GitLab, Zoom, and more. -- Tools for :doc:`custom branding ` and :doc:`themes `. -- :doc:`Multi-factor authentication `. -- Single Sign-on with :doc:`GitLab ` using the OAuth 2.0 standard. -- :doc:`Granular system permissions `. -- Highly customizable `third-party bots, integrations `_, and :doc:`command line tools `. -- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. -- Multiple languages including English (Australian, US), Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. -- `Community support `_. +Mattermost Team Edition +~~~~~~~~~~~~~~~~~~~~~~~ -Product decisions ------------------ +Team Edition is a free-to-use, open source, self-hosted collaboration platform that offers the core productivity benefits of competing SaaS ChatOps solutions. It is deployed as a single Linux binary with PostgreSQL and is licensed under MIT. Team Edition is intended for small teams, hobbyists, or personal use under 250 users where single sign-on (SSO) is not required. It is not recommended for government or sensitive commercial workloads. -As the platform matures and new features are added, they're evaluated to be included in the plan that best aligns with the organizational use cases outlined by the editions above. Multiple factors are considered in determining the appropriate plan to include a feature including mission-critical impact, relative value to a single team, cross-functional teams, and the enterprise, as well as security, compliance, and scalability. +Since 2016, Mattermost has partnered with GitLab to include Team Edition in the GitLab Omnibus package. Originally designed for teams of 25–50 users, it included GitLab SSO and DevSecOps integrations. Over time, Team Edition was widely over-deployed, sometimes to thousands of users, leading to performance issues and confusion between free and commercial offerings. Additionally, GitLab SSO was used as a gateway to other identity providers, overlapping with SSO capabilities reserved for paid Enterprise editions. -We recognize there aren't any features that are only useful to managers, directors, and executives. Individual practitioners may want certain features; however, we think that other buyers are relatively more likely to care about it. We also recognize that there may be some features that are put into an edition to find later there is much demand for it by individuals or a singular team; we will not hesitate to move that feature. We value feedback from our community and iterate based on that feedback. Simultaneously, we also need to offer commercial products that hold value and do our best to find the right balance. We believe the more of Mattermost that you use, the more likely it is that you benefit from the advanced editions we offer. +In 2025, GitLab began evaluating the removal of Mattermost from the Omnibus package to reduce its size. This prompted both companies to redefine their shared offering. As part of this transition, SSO is being removed from the Team Edition, aligning it with its intended scope for small teams and hobbyist use. Advanced access controls features will continue to be available in the commercial editions, including Mattermost Entry (free). Gitlab Omnibus will ship with the v10.11 ESR, enabling continued use of Gitlab SSO until a redefinition of the partnership is determined. Please see more details in `this forum post `_. -`Book a live demo `_ or `talk to a Mattermost expert `_ to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a `1-hour preview `_ for instant access to a live sandbox environment. +Mattermost, Inc. offers its software under different licenses, including open source. An open source “community edition” of the offering is compiled from the `Mattermost open source project `_ under a reciprocal open source license agreement, and in accordance with the `Mattermost trademark policy `_, which requires Mattermost wordmark and trademark be replaced, unless in some circumstances special permission is extended. The purpose of the reciprocal open source license, known as AGPLv3 or “GNU Affero General Public License”, is to have the benefits of open source reach the broader community. Community members creating derivative works of the open source code base are required to use the same reciprocal open source license, AGPLv3, to downstream beneficiaries. + -Provide feedback via `our idea portal `_, where your ideas and input influences the future of the platform. \ No newline at end of file +Organizations who prefer not to use a reciprocal open source license can choose to use one of the Enterprise Edition offerings under a commercial license. From 9aafed1cb153c5b2b51b7b1a3962b9e0b0f932af Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Wed, 1 Oct 2025 09:34:29 -0400 Subject: [PATCH 23/36] Editorial review --- .../editions-and-offerings.rst | 24 +++++++++---------- source/product-overview/faq-enterprise.rst | 2 +- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/source/product-overview/editions-and-offerings.rst b/source/product-overview/editions-and-offerings.rst index 699cc9e581e..470736756ee 100644 --- a/source/product-overview/editions-and-offerings.rst +++ b/source/product-overview/editions-and-offerings.rst @@ -3,18 +3,16 @@ Editions and Offerings Mattermost is an open core, self-hosted platform for delivering sovereign collaborative workflow to defense, intelligence, security and critical infrastructure enterprises. Our on-prem and private cloud offerings enable mission-critical workflows including cyber defense, DevSecOps and mission operations. -**Try it Now — 1-Hour Preview** - Experience features of Mattermost Enterprise Advanced in a live environment with our `1-hour preview `_. See how it can support your secure, mission-critical collaboration — from Security Operations and DevSecOps pipelines to sensitive joint operations. +**Try it Now with a 1-Hour Preview**: Experience features of Mattermost Enterprise Advanced in a live environment with our `1-hour preview `_. See how it can support your secure, mission-critical collaboration, from Security Operations and DevSecOps pipelines to sensitive joint operations. - As an open core platform, we maintain and secure the `Mattermost open-source project `_ to enable customers and community to vet and verify our software supply chain. Our code base regularly passes through automated security scanning, customer review and crowd-sourced security review through `Bugcrowd `_ under our `responsible disclosure policy `_. The Mattermost open source project is used to produce Mattermost’s commercial Enterprise Edition that provides proprietary capabilities through paid subscriptions. - Mattermost Enterprise Edition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Our commercial self-hosted software, Mattermost Enterprise Edition, is distributed as a compiled Linux binary that includes advanced and subscription-based features. It is offered under a commercial license (https://mattermost.com/enterprise-edition-license/) that prohibits reverse engineering or tampering with the license key mechanism used to unlock paid functionality, supporting a fair and compliant business model. +Our commercial self-hosted software, Mattermost Enterprise Edition, is distributed as a compiled Linux binary that includes advanced and subscription-based features. It is offered under a `commercial license `_ that prohibits reverse engineering or tampering with the license key mechanism used to unlock paid functionality, supporting a fair and compliant business model. -Once you’ve installed Mattermost Enterprise Edition in your preferred environment, you can run it as-is in a free mode — known as Entry — or activate a trial or subscription to unlock additional features. +Once you’ve installed Mattermost Enterprise Edition in your preferred environment, you can run it as-is in a free mode, known as Entry, or activate a trial or subscription to unlock additional features. Mattermost Entry ~~~~~~~~~~~~~~~~ @@ -25,17 +23,17 @@ Mattermost Entry Mattermost Entry gives small, forward-leaning teams a **free, production-ready Intelligent Mission Environment** to get started on improving their mission-critical secure collaborative workflows. This offering includes: - Teams and channels for one-to-one and group messaging, file sharing, and unlimited search history with threaded messaging, emoji, and custom emoji with 10,000 messages history and 10,000 monthly push notifications. -- - :doc:`Collaborative playbooks with ad hoc add/remove tasks, automated triggers, and stakeholders dashboard up to 5 runs each month `. -- Kanban-style work management with Boards up to 1,000 cards -- Audio and screenshare with Calls up to 40 minutes -- Interactive AI agents with bring-your-own LLM integration with 250 queries each month -- Native apps for iOS, Android, Windows, macOS, and Linux. -- Pre-packaged integrations with most common developer tools, including Jira, GitHub, GitLab, Zoom, and more. +- :doc:`Collaborative playbooks ` with ad hoc add/remove tasks, automated triggers, and stakeholders dashboard up to 5 runs each month. +- Kanban-style work management with :doc:`Boards ` up to 1,000 cards. +- Audio and screenshare with :doc:`Calls ` up to 40 minutes. +- Interactive :doc:`AI agents ` with bring-your-own LLM integration with 250 queries each month. +- Native apps for :doc:`iOS `, :doc:`Android `, :doc:`Windows, macOS, and Linux `. +- :doc:`Pre-packaged integrations ` with most common developer tools, including Jira, GitHub, GitLab, Zoom, and more. - Tools for :doc:`custom branding ` and :doc:`themes `. - :doc:`Multi-factor authentication `. - :doc:`Granular system permissions `. - Highly customizable `third-party bots, integrations `_, and :doc:`command line tools `. -- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. +- `Extensive integration support `_ via webhooks, APIs, drivers , and `third-party extensions `_. - Multiple languages including English (Australian, US), Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. - :doc:`Guest access ` and :doc:`custom user groups `. - :doc:`Active Directory/LDAP Single Sign-on and user synchronization `. @@ -122,7 +120,7 @@ Professional best serves technical and operational teams of up to 500 users look - Single Sign-on with :doc:`GitLab ` using the OAuth 2.0 standard. - :doc:`Granular system permissions `. - Highly customizable `third-party bots, integrations `_, and :doc:`command line tools `. -- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. +- Extensive integration support via `webhooks, APIs, drivers `_, and `third-party extensions `_. - Multiple languages including English (Australian, US), Bulgarian, Chinese (Simplified and Traditional), Dutch, French, German, Hungarian, Italian, Japanese, Korean, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian, and Vietnamese. - :doc:`Guest access ` and :doc:`custom user groups `. - :doc:`Active Directory/LDAP Single Sign-on and user synchronization `. diff --git a/source/product-overview/faq-enterprise.rst b/source/product-overview/faq-enterprise.rst index a683bc2f627..06075b13374 100644 --- a/source/product-overview/faq-enterprise.rst +++ b/source/product-overview/faq-enterprise.rst @@ -45,7 +45,7 @@ You can see the full list of capabilities by visiting the `Mattermost Pricing pa Does Mattermost have a Software-as-a-Service offering? ------------------------------------------------------ -Yes, Enterprises can inquire about `Mattermost Cloud Enterprise `_, as a single-tenant cloud-managed service for Mattermost Enterprise hosted by Mattermost, Inc. The system is offered on the same Kubernetes-based platform as the :ref:`self-hosted edition `, and managed by Mattermost, Inc. +Yes, Enterprises can inquire about `Mattermost Cloud Enterprise `_, as a single-tenant cloud-managed service for Mattermost Enterprise hosted by Mattermost, Inc. The system is offered on the same Kubernetes-based platform as the self-hosted edition, and managed by Mattermost, Inc. For more information, contact the Mattermost Sales organization at https://mattermost.com/contact-sales/ From 662061ceb9903348d73a843a3b8b51cb43521147 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Wed, 1 Oct 2025 09:42:18 -0400 Subject: [PATCH 24/36] v11: Migrate from gitlab omnibus (#8439) * Update Slack Migration (#8416) * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Update migrate-from-slack.rst * Fixed broken mid-page links --------- Co-authored-by: Carrie Warner (Mattermost) <74422101+cwarnermm@users.noreply.github.com> * Reordered migration guide & added GitLab Omnibus guidance --------- Co-authored-by: Eric Sethna <14333569+esethna@users.noreply.github.com> --- .../migrating-from-hipchat-to-mattermost.rst | 72 --------------- .../onboard/migrating-to-mattermost.rst | 87 +++++++++---------- .../prepare-mattermost-mysql-database.rst | 2 +- .../certifications-and-compliance.rst | 2 +- .../product-overview/deprecated-features.rst | 2 +- source/redirects.py | 17 +++- 6 files changed, 60 insertions(+), 122 deletions(-) delete mode 100644 source/administration-guide/onboard/migrating-from-hipchat-to-mattermost.rst diff --git a/source/administration-guide/onboard/migrating-from-hipchat-to-mattermost.rst b/source/administration-guide/onboard/migrating-from-hipchat-to-mattermost.rst deleted file mode 100644 index 692e38e6f46..00000000000 --- a/source/administration-guide/onboard/migrating-from-hipchat-to-mattermost.rst +++ /dev/null @@ -1,72 +0,0 @@ -:orphan: - -.. Users trying to access this page are now redirected to /administration-guide/onboard/migrating-to-mattermost.html#migrating-from-slack instead - -Migrate from HipChat to Mattermost -================================== - -You can migrate HipChat users and message histories to Mattermost using the following guidelines. - -Step 1: Set up your Mattermost instance ------------------------------------------ - -- `Go to Mattermost download page `__ to install Mattermost in your environment using one of the installation guides for Linux binary install, Docker install or various orchestrated installations. - -Questions? Please visit our `troubleshooting forum `__ for help. - -Step 2: Export your data from HipChat Server or HipChat Data Center ---------------------------------------------------------------------- - -HipChat Server/HipChat Data Center -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -If you’re able to upgrade HipChat Server or HipChat Data Center to the latest version, we recommend using Group Export Dashboard to export your data. If you’re unable to upgrade, see Command Line Interface procedure below. - -*Using the Group Export Dashboard* - -#. Log in to your Hipchat Server (e.g. hipchat.yourcompany.com). -#. Click on **Server Admin > Export**. -#. Select the data to export. -#. In the **Password** and **Confirm Password** fields, create a password to protect your archive files (Store this password as it is not saved anywhere else). -#. Click **Export**. Once the export is done, you will receive an email with a link to download the file. - -*If you’re unable to use the Group Export Dashboard, use the command line interface to export* - -#. Go to **CLI**. -#. Enter ``hipchat export --export -p your_password``. -#. Once the export is done, you will receive an email with a link to download the file. - -Step 3: Import your data into Mattermost ----------------------------------------- - -1. Follow the :doc:`Mattermost Bulk Load Tool ` guide to import your data into Mattermost. Files exported from HipChat will need to be converted to the format required by Mattermost. Talk to a `Mattermost Expert `_ if you require assistance in the conversion. - -2. You are also encouraged to use the HipChat import tool created by Herzum: https://github.com/herzum/HC2MM. - -If you’re interested in contributing or testing any community contributed solution, please let us know at info@mattermost.com, Twitter or Mattermost forums at https://forum.mattermost.com. - -3. Alternatively, talk to a `Mattermost Expert `_ for partner recommendations for your region to assist in your import. - -Step 4: Onboard your users into Mattermost -------------------------------------------- - -After importing users, you can send out an announcement via email or via your old system (or both) to let users know how to log into Mattermost with their old accounts or how to create new accounts. - -**Announcing Mattermost onboarding in your previous messaging system:** - -Use the following message template to alert users of the migration:: - - @all, we’re moving communications to a new Mattermost server. You can start your new account by going to the [your new location, e.g. ``https://yourcompany.com/mattermost``], selecting **I forgot my password**, and entering the email you used on this system in the Reset Password page to set up new credentials. Your message history and channels should carry over from this system into Mattermost. Any questions? Please let us know. - -**Announcing Mattermost onboarding using email using username/password:** - -#. Get a list of email addresses of people in the new system by running a database query on Mattermost. Run ``SELECT Email FROM Users`` from either PostgreSQL or MySQL databases. -#. Adapt the :doc:`migration announcement email template ` to let users know how to reclaim their old accounts or start new ones. - -Onboard users using SSO in Mattermost -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Alternatively, you can choose to set up SSO (Single Sign-on) with Mattermost if you are using an Enterprise version. - -#. Configure :doc:`Active Directory/LDAP ` or :doc:`SAML Single Sign-on ` from the **System Console**. -#. Adjust the messaging templates above to remove "password reset" references and indicate which SSO system credentials Mattermost has configured. diff --git a/source/administration-guide/onboard/migrating-to-mattermost.rst b/source/administration-guide/onboard/migrating-to-mattermost.rst index a018923808a..40c6e71a460 100644 --- a/source/administration-guide/onboard/migrating-to-mattermost.rst +++ b/source/administration-guide/onboard/migrating-to-mattermost.rst @@ -4,33 +4,61 @@ Migration guide .. include:: ../../_static/badges/allplans-selfhosted.rst :start-after: :nosearch: -Thousands of organizations are moving to Mattermost for powerful, flexible, and easy-to-manage workplace collaboration. Mattermost deploys as a single Linux binary with PostgreSQL, and can scale from dozens to tens of thousands of users in a single channel. +Migrations help you move your Mattermost deployment or data from one environment to another with minimal disruption. Whether you’re transitioning your Mattermost server to new infrastructure, restructuring your database, or moving from another collaboration platform like Slack, this guide provides step-by-step instructions for each supported path. Use the sections below to quickly find the scenario that matches your needs and follow the recommended process to ensure a smooth migration. -This guide summarizes different approaches to migrating to Mattermost from other tools, including :doc:`Slack `, :doc:`HipChat `, `Jabber <#migrate-from-jabber>`_, `Pidgin <#migrate-from-pidgin>`_, `Bitnami <#migrate-from-bitnami>`_, and other `bespoke messaging solutions <#migrate-from-bespoke-messaging-solutions>`_, as well as `migrating Mattermost server <#migrate-mattermost-server>`_ to another server instance. +`Book a live demo `_ or `talk to a Mattermost expert `_ to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a `1-hour preview `_ for instant access to a live sandbox environment. -Migrate from Slack ------------------- +Move Mattermost to a new server +--------------------------------- -See the :doc:`Migrate from Slack ` documentation for details on migrating from Slack to Mattermost. +The following instructions migrate Mattermost from one server to another by backing up and restoring the Mattermost database and ``config.json`` file. For these instructions, ``SOURCE`` refers to the Mattermost server *from which* your system will be migrated and ``DESTINATION`` refers to the Mattermost server *to which* your system will be migrated. -Migrate from HipChat --------------------- +1. Back up your SOURCE Mattermost server. See :doc:`Backup and Disaster Recovery documentation `. +2. Upgrade your SOURCE Mattermost server to the latest major build version. See :doc:`Upgrading Mattermost Server documentation `. +3. Install the latest major build of Mattermost server as your ``DESTINATION``. + + - Make sure your new instance is properly configured and tested. The database type (MySQL or PostgreSQL) and version of ``SOURCE`` and ``DESTINATION`` deployments need to match. + - Stop the ``DESTINATION`` server using ``sudo stop mattermost``, then back up the database and ``config.json`` file. + +4. Migrate database from ``SOURCE`` to ``DESTINATION``. Backup the database from the ``SOURCE`` Mattermost server and restore it in place of the database to which the ``DESTINATION`` server is connected. +5. Migrate ``config.json`` from ``SOURCE`` to ``DESTINATION``. Copy ``config.json`` file from ``SOURCE`` deployment to ``DESTINATION``. +6. If you use local storage (``FileSettings.DriverName`` is set to ``local``), migrate ``./data`` from ``SOURCE`` to ``DESTINATION``. + + - Copy the ``./data`` directory from ``SOURCE`` deployment to ``DESTINATION``. + - If you use a directory other than ``./data``, copy that directory instead. -See the :doc:`Migrate from HipChat ` documentation for details on migrating from HipChat Server and HipChat Data Center to Mattermost. +7. Start the ``DESTINATION`` deployment by running ``sudo start mattermost``. Then go to the **System Console**, make a minor change, and save it to upgrade your ``config.json`` schema to the latest version using default values for any new settings added. +8. Test that the system is working by going to the URL of an existing team. You may need to refresh your Mattermost browser page in order to get the latest updates from the upgrade. + +Once your migration is complete and verified, you can optionally :ref:`upgrade the Team Edition of Mattermost to Enterprise Edition using the upgrade guide `. + +Move a GitLab Omnibus instance of Mattermost +-------------------------------------------- + +From Mattermost v11, Mattermost Omnibus has reached end of life. Current Omnibus deployments will continue working as they do today until you decide to migrate. However, after v10.12, you won’t receive security updates or new features through Omnibus. We recommend migrating to one of our :ref:`supported deployment methods `, which will ensure you continue receiving security patches and feature updates. -Migrate from Jabber +See the `Mattermost Omnibus migration guidance `_ for detailed instructions on migrating your GitLab Omnibus instance of Mattermost. + +See the Mattermost Support Knowledge Base article on `Migrating Mattermost DB from GitLab Omnibus PostgreSQL installation to a standalone PostgreSQL `_. This migration is commonly needed when separating Mattermost from GitLab or when moving to dedicated database infrastructure. + +Move from Slack +------------------ + +See the :doc:`Migrate from Slack ` documentation for details on migrating from Slack to Mattermost. + +Move from Jabber ------------------- BrightScout helped a major U.S. Federal Agency rapidly migrate from Jabber to Mattermost and open sourced their Extract, Transform and Load (ETL) tool at https://github.com/Brightscout/mattermost-etl. Read more about their `case study `__ online. -Migrate from Pidgin +Move from Pidgin ------------------- In some cases, people are using Pidgin clients with different backends to communicate. To continue using Pidgin with a Mattermost backend, consider using `Mattermost ETL tool `__, created by BrightScout, to migrate data from your existing backend into Mattermost. Then use the `Pidgin-Mattermost plugin `__ (complete with an installer for end user machines) to continue to support legacy Pidgin users while offering a whole new Mattermost experience on web, mobile, and PC. -Migrate from Bitnami +Move from Bitnami -------------------- Bitnami uses MySQL, and renames the Mattermost database tables by converting the names to all lower case. For example, in non-Bitnami installations, the Users table is named ``Users``, but in Bitnami, the table is ``users`` (with a lowercase ``u``). As a result, when you migrate your data from Bitnami to a non-Bitnami installation, you must modify the MySQL startup script so that it starts MySQL in lowercase table mode. @@ -39,7 +67,7 @@ You can modify the script by adding the ``--lower-case-table-names=1`` switch to For more information about letter case in MySQL table names and the ``--lower-case-table-names`` switch, see the `Identifier Case Sensitivity `__ topic in the MySQL documentation. -Migrate from bespoke messaging solutions +Move from bespoke messaging solutions ----------------------------------------- Mattermost is often selected to replace bespoke solutions by IT and DevOps teams as a stable, enterprise-grade, commercially-supported solution on an open source platform that meets and exceeds the flexibility and innovation of bespoke solutions. @@ -51,40 +79,9 @@ If your data in the bespoke messenger is vital, consider: 1. :doc:`Mattermost bulk load tool `: Use the Mattermost bulk load tool to ETL from your bespoke system to Mattermost. 2. `Mattermost ETL framework from BrightScout `__: Consider the Mattermost ETL framework from BrightScout to custom-configure an adapter to plug in to the Bulk Load tool mentioned above. 3. **Legacy Slack import:** If you only recently switched from Slack to a bespoke tool, consider going back to import the data and users from the old Slack instance directly into Mattermost, leveraging the extensive support for Slack-import provided. -4. **Export to Slack, then import to Mattermost:** `Export HipChat, Flowdock, Campfire, Chatwork, Hall, or CSV files to Slack `_ and then export to a Slack export file and import the file into Mattermost. +4. **Export to Slack, then import to Mattermost:** `Export Flowdock, Campfire, Chatwork, Hall, or CSV files to Slack `_ and then export to a Slack export file and import the file into Mattermost. If your data in the bespoke messenger is not vital, consider: 1. **Parallel systems:** Running Mattermost in parallel with your bespoke system until the majority of workflow and collaboration has moved to Mattermost -2. **Hard switch:** Announce a "hard switch" to Mattermost after a period of time of running both systems in parallel. Often this has been done due to security concerns in bespoke products or products nearing end-of-life. - -Sometimes systems running in parallel turn into a hard switch migration when a bespoke or deprecated system experiences a major outage or a security exploit. In 2017, this was experienced by many companies using Mattermost and HipChat.com in parallel when `HipChat suffered a major security breach where customer data was stolen by an unknown attacker `_. - - ----- - -Migrate Mattermost from one server to another ---------------------------------------------- - -The following instructions migrate Mattermost from one server to another by backing up and restoring the Mattermost database and ``config.json`` file. For these instructions SOURCE refers to the Mattermost server *from which* your system will be migrated and DESTINATION refers to the Mattermost server *to which* your system will be migrated. - -1. Back up your SOURCE Mattermost server. See :doc:`Backup and Disaster Recovery documentation `. -2. Upgrade your SOURCE Mattermost server to the latest major build version. See :doc:`Upgrading Mattermost Server documentation `. -3. Install the latest major build of Mattermost server as your DESTINATION. - - - Make sure your new instance is properly configured and tested. The database type (MySQL or PostgreSQL) and version of SOURCE and DESTINATION deployments need to match. - - Stop the DESTINATION server using ``sudo stop mattermost``, then back up the database and ``config.json`` file. - -4. Migrate database from SOURCE to DESTINATION. Backup the database from the SOURCE Mattermost server and restore it in place of the database to which the DESTINATION server is connected. -5. Migrate ``config.json`` from SOURCE to DESTINATION. Copy ``config.json`` file from SOURCE deployment to DESTINATION. -6. If you use local storage (``FileSettings.DriverName`` is set to ``local``), migrate ``./data`` from SOURCE to DESTINATION. - - - Copy the ``./data`` directory from SOURCE deployment to DESTINATION. - - If you use a directory other than ``./data``, copy that directory instead. - -7. Start the DESTINATION deployment by running ``sudo start mattermost``. Then go to the **System Console**, make a minor change, and save it to upgrade your ``config.json`` schema to the latest version using default values for any new settings added. -8. Test that the system is working by going to the URL of an existing team. You may need to refresh your Mattermost browser page in order to get the latest updates from the upgrade. - -Once your migration is complete and verified, you can optionally :ref:`upgrade the Team Edition of Mattermost to Enterprise Edition using the upgrade guide `. - -`Book a live demo `_ or `talk to a Mattermost expert `_ to explore tailored solutions for your organization's secure collaboration needs. Or try Mattermost yourself with a `1-hour preview `_ for instant access to a live sandbox environment. +2. **Hard switch:** Announce a "hard switch" to Mattermost after a period of time of running both systems in parallel. Often this has been done due to security concerns in bespoke products or products nearing end-of-life. \ No newline at end of file diff --git a/source/deployment-guide/server/prepare-mattermost-mysql-database.rst b/source/deployment-guide/server/prepare-mattermost-mysql-database.rst index 82e8ba939a9..3ea248281c3 100644 --- a/source/deployment-guide/server/prepare-mattermost-mysql-database.rst +++ b/source/deployment-guide/server/prepare-mattermost-mysql-database.rst @@ -254,7 +254,7 @@ You can perform searches without this configuration by adding wildcards ``*`` to Migrate from Bitnami to a self-hosted Mattermost deployment ------------------------------------------------------------ -If you're planning a migration from Bitnami to a self-hosted Mattermost installation with a MySQL database, read these notes in our migration guide: :ref:`Migrating from Bitnami `. +If you're planning a migration from Bitnami to a self-hosted Mattermost installation with a MySQL database, read these notes in our migration guide: :ref:`Migrating from Bitnami `. Downgrade Mattermost v6.0 to v5.38 ----------------------------------- diff --git a/source/product-overview/certifications-and-compliance.rst b/source/product-overview/certifications-and-compliance.rst index 34ddd141227..d8c529b7908 100644 --- a/source/product-overview/certifications-and-compliance.rst +++ b/source/product-overview/certifications-and-compliance.rst @@ -61,7 +61,7 @@ Data management Data portability ^^^^^^^^^^^^^^^^^ -- **Data Import:** Use the :doc:`bulk loading tool ` to migrate data from an existing messaging system, or for pre-populating a new installation with data. :ref:`Review this guide ` which summarizes the different approaches and meets the `Right to Data Portability `_ principle. +- **Data Import:** Use the :doc:`bulk loading tool ` to migrate data from an existing messaging system, or for pre-populating a new installation with data. :doc:`Review our migrate from Slack guidance ` which summarizes the different approaches and meets the `Right to Data Portability `_ principle. - **Data Export:** Use :doc:`compliance exports ` to export conversations from public, private and direct message channels in XML or EML format. Those in Team Edition can export conversations directly from the database, both in PostgreSQL and in MySQL. Accessibility compliance diff --git a/source/product-overview/deprecated-features.rst b/source/product-overview/deprecated-features.rst index 333b266afea..01ad12faf68 100644 --- a/source/product-overview/deprecated-features.rst +++ b/source/product-overview/deprecated-features.rst @@ -22,7 +22,7 @@ Mattermost Server v11.0.0 (October 2025) - The ``ExperimentalStrictCSRFEnforcement`` setting will be renamed to ``StrictCSRFEnforcement`` and the default value will be changed to ``true`` for new installations. See more details in `this forum post `__. - The ``registerPostDropdownMenuComponent`` hook in the web app’s plugin API will be removed in favour of ``registerPostDropdownMenuAction``. See more details in `this forum post `__. - The web app will no longer expose the `Styled Components `__ dependency for use by web app plugins. See more details in `this forum post `__. -- Omnibus support will be deprecated. The last ``mattermost-omnibus`` release will be v10.12. See more details in `this forum post `__. +- Omnibus support will be deprecated. The last ``mattermost-omnibus`` release will be v10.12. See more details in `this forum post `__. Learn how to :ref:`move a GitLab Omnibus instance of Mattermost `. - Deprecated ``include_removed_members`` option in ``api/v4/ldap/sync`` will be removed. Admins can use the LDAP setting ``ReAddRemovedMembers``. - All telemetry support will be removed from Mattermost. The system will no longer collect or send telemetry data to external services. Customers that have the NPS plugin enabled can remove it as it will no longer sent the feedback over through telemetry. - Format query parameter requirement in ``/api/v4/config/client`` endpoint will be deprecated. diff --git a/source/redirects.py b/source/redirects.py index 2cb452448df..dc771841183 100644 --- a/source/redirects.py +++ b/source/redirects.py @@ -371,7 +371,7 @@ "administration/health-check.html": "https://docs.mattermost.com/administration-guide/manage/health-checks.html", "administration/hipchat-migration-guidelines.html": - "https://docs.mattermost.com/administration-guide/onboard/migrating-from-hipchat-to-mattermost.html", + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html", "administration/image-proxy.html": "https://docs.mattermost.com/deployment-guide/server/image-proxy.html", "administration/important-upgrade-notes.html": @@ -555,6 +555,18 @@ "https://docs.mattermost.com/administration-guide/configure/environment-configuration-settings.html#enable-secure-file-preview-on-mobile", "administration-guide/configure/site-configuration-settings.html#allow-pdf-link-navigation-on-mobile": "https://docs.mattermost.com/administration-guide/configure/environment-configuration-settings.html#allow-pdf-link-navigation-on-mobile", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-from-slack": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-from-slack", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-from-jabber": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-from-jabber", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-from-pidgin": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-from-pidgin", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-from-bitnami": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-from-bitnami", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-from-bespoke-messaging-solutions": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-from-bespoke-messaging-solutions", +"administration-guide/onboard/migrating-to-mattermost.html#migrate-mattermost-from-one-server-to-another": + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#move-mattermost-to-a-new-server", # Channels redirects "channels/find-channels.html": @@ -3651,7 +3663,7 @@ "onboard/user-provisioning-workflows.html": "https://docs.mattermost.com/administration-guide/onboard/user-provisioning-workflows.html", "onboard/migrating-from-hipchat-to-mattermost.html": - "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html#migrating-from-slack", + "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html", "onboard/ad-ldap-groups-synchronization.html#enabling-ad-ldap-group-synchronization": "https://docs.mattermost.com/administration-guide/onboard/migrating-to-mattermost.html", "onboard/ad-ldap-groups-synchronization.html#enable-ad-ldap-group-synchronization": @@ -3723,6 +3735,7 @@ "onboard/shared-channels.html#frequently-asked-questions": "https://docs.mattermost.com/administration-guide/onboard/connected-workspaces.html#frequently-asked-questions", + # Overview redirects "overview/architecture.html": "https://docs.mattermost.com/deployment-guide/application-architecture.html", From ebcbf41ad59d90cd1cdfa9eb7aa868d9b84c9795 Mon Sep 17 00:00:00 2001 From: Katie Wiersgalla <39744472+wiersgallak@users.noreply.github.com> Date: Wed, 1 Oct 2025 08:42:29 -0500 Subject: [PATCH 25/36] Update plans.md (#8442) --- source/product-overview/plans.md | 74 ++++++++++++++++---------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/source/product-overview/plans.md b/source/product-overview/plans.md index 3c56198ac31..97a1d358c5c 100644 --- a/source/product-overview/plans.md +++ b/source/product-overview/plans.md @@ -54,7 +54,7 @@ Feature Category Team Edition - E0/Starter + Entry Professional Enterprise Enterprise Advanced @@ -67,11 +67,11 @@ 1-1, group messaging, public and private channels, file sharing, link and media previews across web, PC, Mac, iOS and Android devices, with 1-1 audio calls and screen share, threaded discussions, search, custom branding themes and emojis, and availability in 20+ languages. Messaging, file sharing, and link and file previews across device platforms: Channels-based messaging including 1-1, group messaging, public and private channels, file sharing , and link and media previews across web, PC, Mac, iOS, and Android devices. - v9.11+ + *v9.11+ 1:1 audio calls and screen sharing: Call another user to start a 1-1 audio discussion in web, desktop, and mobile experiences with optional screen sharing. - v9.11+ + *v9.11+ Threaded discussions: Organize discussions within channels using threaded discussions and the thread inbox to follow-up on threaded discussions in addition to channels. @@ -79,7 +79,7 @@ Core search: Search over messages and files in Mattermost. Core search happens in a relational database and is intended for deployments under about 2–3 million posts and file entries. Beyond that scale, Enterprise Search is recommended. - v9.11+ + *v9.11+ Custom branding, themes, and emojis: Match your organizations look, feel and brand by customizing the site name, description, login brand image and text, as well as theme colors. @@ -94,31 +94,31 @@ Integrate your preferred LLM in 1-1, group messaging, public and private channels, with audio calls and screen share, and threaded discussions to speed workflows, increase efficiency and unlock innovation. Interactive AI bot support: Enable organizations to work with LLM-powered AI bots through Direct Messages, Group Messages, threads, and @mentions to bot in private and public channels with full commercial support from Mattermost, Inc. - v9.11+ + *v9.11+ Flexible bring-your-own-LLM integration: Connect Mattermost to any LLM platform compatible with OpenAI protocol across public cloud, private cloud and air gapped edge including OpenAI, Llama, Anthropic, and custom LLMs. - v9.11+ + v9.11+ Contextual summarization and composition: Enable organizational interaction with LLMs with permission-restricted access to Mattermost conversations to summarize topics, answer questions and follow-ups, note action items and open questions, and compose draft messages and responses. - v9.11+ + v9.11+ Private, air-gapped & DDIL AI operations: Run AI-accelerated operations in private cloud, air-gapped and disconnected, denied, intermittent and limited-bandwidth (DDIL) environments with open source and custom LLMs self-hosted alongside workflow, chat operations, audio calling, screen sharing, recording, transcription, analysis, workflow and summarization capabilities. - v9.11+ + v9.11+ Real-time channel briefing: Concisely summarize unread messages, action items and unanswered questions in channels to focus attention and accelerate priority responses and workflows. - v9.11+ + v9.11+ Q&A with access-controlled backend systems: Receive secure and compliant real-time answers to questions about permission-controlled backend systems connected with Mattermost channels which can optionally pass back end user credentials to work with access-controlled data. For example, asking a channel connected with an issue tracking system which code defect tickets they have access to which could expose security vulnerabilities. - v9.11+ + v9.11+ Optional full trace mode: Optional full trace mode for detailed monitoring and to verify Responsible AI/LLM assurances by recording every prompt, question, AI request and response across users, systems and LLM-backends and platform source code into specialized audit logs for analysis. - v9.11+ + v9.11+ Operational & technical collaboration @@ -141,11 +141,11 @@ Message priority: Elevate the focus of organizations with the ability for end users to specify the priority of messages as Standard (Default), Important, and Urgent. - v9.11+ + v9.11+ Persistent notifications: Replace phone-based confirmations with message-based acknowledgement requests that can persist on a recipient's Mattermost interface until acknowledged. - v9.11+ + *v9.11+ Advanced access controls & automation @@ -156,42 +156,42 @@ Single sign-on w/SAML 2.0, Entra ID, Okta, and others: Centralize, integrate, and automate identify management and access controls by enabling Mattermost to operate as a SAML 2.0 service provider. Integrate with SAML 2.0-based providers including Entra ID (formerly Office365 SSO), Okta, OneLogin, Microsoft ADFS SAML Configuration, and Keycloak, among others. - v9.11+ + v9.11+ SSO with AD/LDAP, OpenID, and others: Simplify sign-on and user management with non-SAML-based SSO options including Open ID, Google SSO, and GitLab SSO. Moreover, Mattermost offers "same sign-on" with Active Directory/LDAP by enabling the same credentials used in on-prem AD/LDAP deployments to be reused in Mattermost, with optional multi-factor authentication (MFA). - v9.11+ + v9.11+ AD/LDAP user sync: Simplify and accelerate user administration, access control, and compliance by synchronizing Active Directory and LDAP with Mattermost, including single-sign-on with AD/LDAP credentials, synchronization of user display attributes (e.g., first name, last name, email, and username), automated account provisioning on a user's first sign-on, automated assignment of Mattermost roles based on a user's LDAP group, and compliance with administrator settings managed in AD/LDAP by having the Mattermost System Console honor LDAP filters for disabled users, guest users, and administrative users. - v9.11+ + v9.11+ MFA enforcement for email and LDAP accounts: Fulfill MFA compliance requirements by enforcing an MFA requirement for login with email and LDAP accounts. - v9.11+ + v9.11+ Advanced access controls: Empower admins to manage and moderate multi-team deployments with the ability to configure channels to be read-only, to restrict channel mentions, emoji reactions, and to lock down channels so that users can only be added or removed by selected administrators. - v9.11+ + v9.11+ Multi-team collaboration Work across teams and organizations with real-time calling and screen share, guest accounts to integrate internal and external stakeholders, customer user groups to organize teams within teams, and system-wide notifications to share organization-wide messages. Group calling and screen share: Streamline real-time collaboration with complete privacy by enabling group audio calling and screenshare up to approximately 50 concurrent users in any group call per self-hosted server. High-scale options for private, self-hosted group calling and screen share are available in Mattermost Enterprise with the setup of its horizontal scaling option. - v9.11+ + *v9.11+ Guest accounts: Bring external users and users who need to have restricted access into your Mattermost instance as guests who can interact with your team with limited permissions. Activated guest accounts consume a licensed seat for billing purposes, which is returned when the guest account is deactivated. - v9.11+ + v9.11+ Custom user groups: Simplify communication by creating custom user groups to mention and notify up to 256 users who work together on projects or in functions or have other ties. Examples include creating custom groups for cross-functional teams, for job types, or organization membership within an enterprise. - v9.11+ + v9.11+ System-wide notifications: Notify users across teams of upcoming system maintenance, service changes, and other announcements using system-wide announcement banners. - v9.11+ + v9.11+ Scale & high availability @@ -210,11 +210,11 @@ Performance monitoring: Track system health in large deployments, including deployments on high availability clusters, using advanced performance monitoring integrated with Grafana and Prometheus. - v9.11+ + v9.11+ Advanced logging: Enable advanced logging for optimizing and troubleshooting high-scale, mission-critical deployments including error, panic, debug, trace and conditional logging to a full range of destinations including Syslog and TCP target options. - v9.11+ + v9.11+ High availability, horizontally scalable calls and screen share: Enable high-scale, high availability deployment of audio calling and screen share through dedicated servers managed on an integrated Kubernetes platform. @@ -222,14 +222,14 @@ Supported Kubernetes deployment: Simplify and automate IT administration through Mattermost's supported options for deploying to Kubernetes clusters running either on-prem in data centers or in managed services such as Amazon EKS, Azure Kubernetes Service, Google Kubernetes Engine, and DigitalOcean Kubernetes, among others. - v9.11+ + v9.11+ Advanced compliance & administration Fulfill enterprise- and critical infrastructure-level compliance and administration requirements with advanced identity and access control synchronization, delegated administration, granular configuration of data retention, eDiscovery, and legal hold and information export requirements while automating disclosures and agreements with end users. AD/LDAP group, channel, and team sync: Automate management of users, groups, access controls, and channel and team membership through synchronizing with Entra ID/AD/LDAP Groups. - v9.11+ + v9.11+ Delegated granular administration: In large deployments where administrative tasks need to be separated and delegated, Mattermost supports the creation and customization of system administrator roles with specific granular permissions in order to offer specialized administration delegated from senior administrators. @@ -260,52 +260,52 @@ Speed real-world workflows with enterprise-grade mobility and security through EMM, MDM, and AppConfig integration across iOS and Android mobile platforms. Enterprise Mobility Management (AppConfig) support: Enhance mobile security by deploying with Enterprise Mobility Management (EMM) to secure mobile endpoints with management application configuration, and Mattermost AppConfig compatibility. - v9.11+ + v9.11+ Private mobility with ID-only push notifications: ID-only push notifications protect a Mattermost customer against breaches in iOS and Android notification infrastructure by enabling mobile notifications to be fully private. The standard way to send notifications to iOS and Android applications requires sending clear text messages to Apple or Google so they can be forwarded to a user's phone and displayed on iOS or Android.

While Apple and Google assure the data is not collected or stored, all standard mobile notifications on the platform could be compromised should the organizations be breached or coerced. To avoid this risk, Mattermost can be configured to replace mobile notification text with message ID numbers that pass no information to Apple of Google, and which, when received by the Mattermost mobile application on a user's phone, are used to privately communicate with their Mattermost server and use the message ID to retrieve mobile notification messages over an encrypted channel. This means at no time will the message text be visible to Apple or Google's message relay system.

Because of the extra steps to retrieve the notifications messages under Mattermost's private mobility capability with ID-only push notifications, end users may experience a slight delay before the mobile notification is fully displayed compared to sending clear text through Apple and Google's platform. - v9.11+ + v9.11+ Workflow automation Streamline and automate workflows to reduce errors and delays while increasing efficiency and innovation using collaborative playbooks to speed structured team processes, from incident response and software release cycle management to accelerating operational logistics, as well as workflow dashboards to assess and refine process outcomes and operations. Collaborative playbooks: Collaborative playbooks provide structure, monitoring and automation for repeatable, team-based processes integrated with the Mattermost platform. Use cases include incident response, software release management, and logistical operations. Playbooks monitor channels for keywords or user actions to trigger structured processes, which bring up a set of individual or shared tasks, each associated with manual or automated actions.

As playbooks execute, some may have requirements for broadcasting status updates to stakeholders at regular intervals, conducting retrospectives after the core process is complete, or meeting other customer needs as exit criteria for each playbook "run." Advanced permissions are also available to delegate and manage playbook controls in larger organizations. - v9.11+ + *v9.11+ Workflow dashboards: Unlock insights about the performance of collaborative workflows across organizations with workflow dashboards. They compare the output metrics from different runs of collaborative playbooks against targets and historical performance.

Examples of metrics-based workflow dashboards that can be set up to monitor and inform performance include time to detect and time to resolve in incident response workflows, workplan completion percentage for monthly software releases management workflows, and launch success rate for logistical workflows involving launch operations. - v9.11+ + v9.11+ Federated communications Connect across organizations using Mattermost and Microsoft Teams to share information and accelerate collaborative, cross-organizational workflows. Microsoft Teams messaging integration: Increase focus and adaptability across your organization by connecting users across Microsoft Teams and Mattermost. Microsoft Teams often serves as a centralized, organization-wide standard for general collaboration and everyday productivity, which can complicate the business case for customizing workflows and integrated toolsets to meet the specialized needs of technical and operational teams.

Mattermost is often deployed to supplement a centralized, general purpose Microsoft Teams deployment with a dedicated environment for developers, security professionals, and operators. Integrated direct messaging and group messaging across Microsoft Teams and Mattermost deployments connects an organization to the best of both worlds, helping teams unlock their full potential. - v9.11+ + v9.11+ Connected Workspaces: Communicate across organizations using Mattermost by synchronizing messages, emoji reactions, and file sharing in real time through Mattermost Connected Workspaces. - v9.11+ + v9.11+ Enterprise Advanced exclusive features Advanced security, compliance, and deployment capabilities designed for the most demanding cyber defense and mission-critical environments. Classified and Sensitive Information Controls: Display channel banners to indicate classification levels and sensitive information handling requirements, ensuring compliance with security protocols for classified environments. - v10.9+ + v10.9+ Zero Trust Security: Implement dynamic attribute-based policy controls with environmental attributes and User Authoritative Source integration for comprehensive zero trust security architecture. - v10.9+ + v10.9+ Mobile security controls: Advanced mobile security features and controls designed for high-security environments and mission-critical mobile deployments. - v10.9+ + v10.9+ Air-gapped deployment workflows: Specialized deployment workflows and procedures for completely disconnected and air-gapped environments with no external network connectivity. - v10.9+ + v10.9+ Support @@ -329,7 +329,7 @@ -See a [complete list of features](https://mattermost.com/pricing) on the Mattermost website. +See a [complete list of features](https://mattermost.com/pricing) on the Mattermost website. Features with an asterick next to the checkmark indicate rate usage limitation. Please see more information [here](https://docs.mattermost.com/product-overview/editions-and-offerings.html). ```{note} Mattermost Enterprise Advanced requires a Mattermost Server running v10.9 or later and a PostgreSQL database. Enterprise plugins must be updated to support the new license (most of which are pre-packaged from v10.9). From fbae2e4448fc291fc9633fe3c4e3f9945c9f3fab Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Wed, 1 Oct 2025 10:21:28 -0400 Subject: [PATCH 26/36] v11: Update enterprise search and support packet documentation (#8430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update v11 enterprise search and support packet documentation - Add information about enterprise search connection testing during Support Packet generation - Include example error output format for Elasticsearch diagnostics - Add new FAQ section about diagnosing enterprise search connection issues - Update version tabs to reflect v11.0 changes Addresses enterprise search and support packet product experience changes from Mattermost server v11 onward as specified in the linked PR. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Editorial reviews --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../admin/generating-support-packet.rst | 79 +++++++++++++++---- ...igure-mattermost-for-enterprise-search.rst | 4 + .../scale/enterprise-search.rst | 7 ++ 3 files changed, 74 insertions(+), 16 deletions(-) diff --git a/source/administration-guide/manage/admin/generating-support-packet.rst b/source/administration-guide/manage/admin/generating-support-packet.rst index dadff5c2ff9..0352db5b128 100644 --- a/source/administration-guide/manage/admin/generating-support-packet.rst +++ b/source/administration-guide/manage/admin/generating-support-packet.rst @@ -63,11 +63,60 @@ Contents of a Support Packet The contents of a Mattermost Support Packet can differ by server version. Select the tab that corresponds to your Mattermost version to see the files included in the Support Packet. -.. tab:: v10.11 and later +.. tab:: v11.0 and later - .. note:: + **Cluster-wide files (root directory):** + + - `metadata.yaml <#metadata>`__ + - ``plugins.json`` (all active and inactive plugins) + - ``sanitized_config.json`` (sanitized copy of the Mattermost configuration) + - ``stats.yaml`` (Mattermost usage statistics) + - ``jobs.yaml`` (last runs of important jobs) + - ``diagnostics.yaml`` (core plugin diagnostics data) + - ``permissions.yaml`` (role & scheme information) + - ``postgres_schema_dump.sql`` (PostgreSQL database schema information including tables, indexes, constraints, and other database metadata to assist with database configuration diagnosis) + - ``warning.txt`` (present when issues are encountered during packet generation) + - ``tsdb_dump.tar.gz`` (present when the Metrics plugin is installed and the **Performance metrics** option is selected when generating the Support Packet) + + From Mattermost v11, Support Packet generation includes connection testing for configured :doc:`enterprise search engines `, including both :doc:`Elasticsearch ` and :doc:`AWS OpenSearch `. Any connection errors encountered during this testing are included in the Support Packet to help diagnose enterprise search configuration issues. When enterprise search is configured, the Support Packet includes connection test results and any errors encountered: + + - **Elasticsearch connection test**: Tests server connectivity and reports server version, installed plugins, and any connection errors + - **AWS OpenSearch connection test**: Tests server connectivity and reports server version, installed plugins, and any connection errors + + Example Elasticsearch diagnostic output included in the Support Packet: + + .. code-block:: yaml + + elastic: + server_version: 8.9.0 + server_plugins: + - analysis-icu + error: 'Elasticsearch.checkMaxVersion: Failed to get elasticsearch server version., an error happened during the Info query execution: dial tcp 127.0.0.1:9200: connect: connection refused' + + **Cluster-specific files (in node subdirectories):** + + - ``/mattermost.log`` (Mattermost logs for each node) + - ``/audit.log`` (Mattermost audit logs for each node) + - ``/ldap.log`` (AD/LDAP logs for each node) + - ``/notifications.log`` (notifications logs for each node) + - ``/cpu.prof`` (`Go performance metrics <#go-performance-metrics>`__ for each node) + - ``/heap.prof`` (`Go performance metrics <#go-performance-metrics>`__ for each node) + - ``/goroutines`` (`Go performance metrics <#go-performance-metrics>`__ for each node) + + The following additional plugin diagnostic data is included in the generated Support Packet when the plugin is enabled and operational: + + - GitHub: ``/github/diagnostics.yaml`` + - GitLab: ``/com.github.manland.mattermost-plugin-gitlab/diagnostics.yaml`` + - Jira: ``/jira/diagnostics.yaml`` + - Calls: ``/com.mattermost.calls/diagnostics.yaml`` + - Boards: ``/focalboard/diagnostics.yaml`` + - Playbooks: ``/playbooks/diagnostics.yaml`` + - MSCalendar: ``/com.mattermost.mscalendar/diagnostics.yaml`` + - Google Calendar: ``/com.mattermost.gcal/diagnostics.yaml`` - From v10.11, Support Packets include PostgreSQL database schema dump information that provides comprehensive metadata to help diagnose database configuration issues, performance problems, collation mismatches, and other database-related issues. +.. tab:: v10.11 + + From v10.11, Support Packets include PostgreSQL database schema dump information that provides comprehensive metadata to help diagnose database configuration issues, performance problems, collation mismatches, and other database-related issues. **Cluster-wide files (root directory):** @@ -105,14 +154,12 @@ The contents of a Mattermost Support Packet can differ by server version. Select .. tab:: v10.10 - .. note:: - - From Mattermost v10.10, Support Packets from :doc:`high availability ` deployments organize cluster-specific files (such as log files) in subdirectories named after each cluster node, while cluster-wide files remain in the root directory. + From Mattermost v10.10, Support Packets from :doc:`high availability ` deployments organize cluster-specific files (such as log files) in subdirectories named after each cluster node, while cluster-wide files remain in the root directory. - Support packet file organization has been improved to make it easier to identify cluster-wide versus cluster-specific files: + Support packet file organization has been improved to make it easier to identify cluster-wide versus cluster-specific files: - - **Cluster-wide files** (identical across all nodes in a :doc:`high-availability cluster `) remain in the root directory of the support packet. - - **Cluster-specific files** (unique per node) are now organized in subdirectories named after each cluster node. + - **Cluster-wide files** (identical across all nodes in a :doc:`high-availability cluster `) remain in the root directory of the support packet. + - **Cluster-specific files** (unique per node) are now organized in subdirectories named after each cluster node. **Cluster-wide files (root directory):** @@ -151,15 +198,15 @@ The contents of a Mattermost Support Packet can differ by server version. Select Prior to v10.10, each node in the cluster of a high availability deployment has its own ``mattermost.log`` file and advanced logging files included directly in the Support Packet. - .. note:: + From v10.5, the following Support Packet data has changed: - From v10.5, the following Support Packet data has changed: + - The ``support_packet.yaml`` file has been removed and split into ``diagnostics.yaml`` and ``stats.yaml`` files. + - All fields in ``diagnostics.yaml`` have been moved into their own objects for improved readability. + - Field names are normalized. + - New data includes server statistics, logs, permissions, and extended job list details. + - Mattermost-supported plugin diagnostic data is included where applicable. - - The ``support_packet.yaml`` file has been removed and split into ``diagnostics.yaml`` and ``stats.yaml`` files. - - All fields in ``diagnostics.yaml`` have been moved into their own objects for improved readability. - - Field names are normalized. - - New data includes server statistics, logs, permissions, and extended job list details. - - Mattermost-supported plugin diagnostic data is included where applicable. + The contents of a support packet include: - `metadata.yaml <#metadata>`__ - ``mattermost.log`` (Mattermost logs) diff --git a/source/administration-guide/scale/common-configure-mattermost-for-enterprise-search.rst b/source/administration-guide/scale/common-configure-mattermost-for-enterprise-search.rst index 7849b2753a9..99504c07a60 100644 --- a/source/administration-guide/scale/common-configure-mattermost-for-enterprise-search.rst +++ b/source/administration-guide/scale/common-configure-mattermost-for-enterprise-search.rst @@ -12,6 +12,10 @@ Set server connection details 4. Optional CA and client certificate configuration settings are available for use with basic authentication credentials or to replace them. See the :ref:`Enterprise search configuration settings ` documentation for details. 5. Select **Test Connection** and then select **Save**. If the server connection is unsuccessful you won't be able to save the configuration or enable searching with Elasticsearch or AWS OpenSearch. +.. note:: + + From Mattermost v11, enterprise search server connections are tested during :doc:`Support Packet generation `. Any connection errors encountered during Support Packet generation are automatically included in the packet to help diagnose configuration issues. + Build the post index of existing messages ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/administration-guide/scale/enterprise-search.rst b/source/administration-guide/scale/enterprise-search.rst index d25640d5ecb..e0224116cff 100644 --- a/source/administration-guide/scale/enterprise-search.rst +++ b/source/administration-guide/scale/enterprise-search.rst @@ -122,6 +122,13 @@ Mattermost provides the status of each Elasticsearch or OpenSearch indexing job Failures are returned in the server logs. The error log begins with the string ``Failed job`` and includes a job_id key/value pair. Search job failures are identified with worker name ``EnterpriseElasticsearchAggregator`` and ``EnterpriseElasticsearchIndexer``. You can optionally create a script that programmatically queries for such failures and notifies the appropriate system. +How do I diagnose enterprise search connection issues? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +From Mattermost v11, :doc:`Support Packet generation ` automatically tests the connection to your configured Elasticsearch or AWS OpenSearch server and includes any connection errors in the Support Packet. This provides valuable diagnostic information including server version, installed plugins, and specific error details if the connection fails. + +The enterprise search connection test results appear in the Support Packet and can help identify configuration issues such as network connectivity problems, authentication failures, or server availability issues. If connection errors are present, they will be clearly documented with specific error messages to aid in troubleshooting. + My search indexes won't complete, what should I do? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From a8c04eebb94cce8202b9f4915b64fc4cb1afc743 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:07:19 -0400 Subject: [PATCH 27/36] v11: Added FIPS/STIG as container deployment option (#8420) * Added FIPS/STIG as container deployment option * Incorporated reviewer feedback --- .../server/containers/fips-stig.rst | 28 +++++++++++++++++++ .../server/deploy-containers.rst | 6 ++++ 2 files changed, 34 insertions(+) create mode 100644 source/deployment-guide/server/containers/fips-stig.rst diff --git a/source/deployment-guide/server/containers/fips-stig.rst b/source/deployment-guide/server/containers/fips-stig.rst new file mode 100644 index 00000000000..cd4db4f1daa --- /dev/null +++ b/source/deployment-guide/server/containers/fips-stig.rst @@ -0,0 +1,28 @@ +.. meta:: + :name: robots + :content: noindex + +:orphan: +:nosearch: + +From Mattermost v11, each release provides two variants: a FIPS-compliant build and a non-FIPS build. This ensures that organizations with strict compliance requirements can adopt the FIPS version while others can continue with the standard release, both staying in sync with Mattermost’s overall product lifecycle. + +Mattermost FIPS-compliant Docker images are built using Chainguard’s FIPS-certified base containers. These images help organizations meet stringent security requirements by ensuring compliance with the Federal Information Processing Standards (FIPS). + +On top of this foundation, Mattermost product code itself is aligned with FIPS requirements, using only FIPS-approved cryptographic algorithms. This ensures that both the underlying container base and the application layer meet compliance expectations. + +In addition, the Chainguard base images are STIG-hardened and rigorously scanned against the DISA General Purpose Operating System SRG, providing a robust and secure operational posture. + +Mattermost FIPS Overview +------------------------- + +Mattermost’s FIPS-compliant images are built using two Chainguard base images: + +- `Build-Time Image `_: Ensures compiled Mattermost binaries invoke OpenSSL through CGO for FIPS-compliance during compilation. +- `Runtime Image `_: Enforces FIPS compliance in the runtime environment using strict OpenSSL configurations. + +All application-level code uses only FIPS-approved algorithms, ensuring that cryptographic requirements are consistently enforced across every layer of the system. + +.. note:: + + The Mattermost FIPS image includes only prepackaged Boards, Playbooks, and Agents. \ No newline at end of file diff --git a/source/deployment-guide/server/deploy-containers.rst b/source/deployment-guide/server/deploy-containers.rst index 4502c61824b..8756d255ac5 100644 --- a/source/deployment-guide/server/deploy-containers.rst +++ b/source/deployment-guide/server/deploy-containers.rst @@ -6,6 +6,12 @@ This deployment method shouldn't be used in production environments as it doesn' Choose your preferred container platform below for specific deployment instructions: +.. tab:: FIPS/STIG + :parse-titles: + + .. include:: containers/fips-stig.rst + :start-after: :nosearch: + .. tab:: Docker :parse-titles: From b52a29644d965c1d34833cf66a2422fe3ad01e81 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 09:46:19 -0400 Subject: [PATCH 28/36] v11: new private channel settings permission (#8432) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Document new private channel settings permission for Mattermost v11 Add documentation for the new 'Manage Private Channels > Manage Channel Settings' permission introduced in Mattermost v11. This permission provides granular control over who can rename private channels and edit their headers and purposes, separate from public channel management. Changes include: - Updated System Scheme description to mention v11 permission granularity - Added note about separate private channel settings management - New recipe section for restricting private channel settings management - References to the new permission being available to Channel/Team/System Admins by default Closes #8404 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * Editorial reviews --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../advanced-permissions-backend-infrastructure.rst | 7 ++++++- .../administration-guide/onboard/advanced-permissions.rst | 5 +---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/source/administration-guide/onboard/advanced-permissions-backend-infrastructure.rst b/source/administration-guide/onboard/advanced-permissions-backend-infrastructure.rst index 370746aacbd..8ba51998bc0 100644 --- a/source/administration-guide/onboard/advanced-permissions-backend-infrastructure.rst +++ b/source/administration-guide/onboard/advanced-permissions-backend-infrastructure.rst @@ -238,6 +238,8 @@ Permissions in Mattermost are a property of the server code base and are not cre +----------------------------------------------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | manage_channel_banner | channel | Manage channel banners. | +----------------------------------------------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| manage_channel_access_rules | channel | Manage attribute-based access control rules for channels. | ++----------------------------------------------+---------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ``Roles`` field ~~~~~~~~~~~~~~~ @@ -287,6 +289,7 @@ The following built-in roles with default permissions are available: - delete_bookmark_private_channel - order_bookmark_private_channel - manage_channel_banner +- manage_channel_access_rules *channel_guest* @@ -460,6 +463,7 @@ The following built-in roles with default permissions are available: - delete_bookmark_private_channel - order_bookmark_private_channel - manage_channel_banner +- manage_channel_access_rules *system_custom_group_admin* @@ -641,6 +645,7 @@ The following built-in roles with default permissions are available: - delete_bookmark_private_channel - order_bookmark_private_channel - manage_channel_banner +- manage_channel_access_rules *team_guest* @@ -684,4 +689,4 @@ Schemes are dynamic and user configurable, necessitating a database table with t - ``Team Guest Role`` (String): Empty if Channel Scope - ``Channel Admin Role`` (String): Always provided - ``Channel User Role`` (String): Always provided -- ``Channel Guest Role`` (String): Always provided +- ``Channel Guest Role`` (String): Always provided \ No newline at end of file diff --git a/source/administration-guide/onboard/advanced-permissions.rst b/source/administration-guide/onboard/advanced-permissions.rst index 67f2b033e3a..ce9a0c26161 100644 --- a/source/administration-guide/onboard/advanced-permissions.rst +++ b/source/administration-guide/onboard/advanced-permissions.rst @@ -60,10 +60,7 @@ The channel permissions interface is accessed in **System Console > User Managem Advanced access controls ~~~~~~~~~~~~~~~~~~~~~~~~~ -.. include:: ../../_static/badges/ent-pro-only.rst - :start-after: :nosearch: - -See the :ref:`team and channel management ` documentation for details on available channel access controls. +See the :ref:`team and channel management ` documentation for details. Recipes ------- From cd97cdb459954ef53a5362388d01fa295227624a Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 10:04:46 -0400 Subject: [PATCH 29/36] Clarified when secure mobile configs take effect --- .../environment-configuration-settings.rst | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index 9e37be4f553..3b9ab5017c9 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -4146,7 +4146,7 @@ Mobile security .. include:: ../../_static/badges/ent-adv-cloud-selfhosted.rst :start-after: :nosearch: -From Mattermost v10.7 and mobile app v2.27, you can configure biometric authentication, prevent Mattermost use on jailbroken or rooted devices, and can block screen captures without relying on an EMM Provider. Configure these options by going to **System Console > Environment > Mobile Security**, or by editing the ``config.json`` file as described in the following tables. Changes to configuration settings in this section require a server restart before taking effect. +From Mattermost v10.7 and mobile app v2.27, you can configure biometric authentication, prevent Mattermost use on jailbroken or rooted devices, and can block screen captures without relying on an EMM Provider. Configure these options by going to **System Console > Environment > Mobile Security**, or by editing the ``config.json`` file as described in the following tables. Changes to configuration settings in this section require a server restart and require users to restart their mobile app or log out and back in before taking effect. .. config:setting:: enable-biometric-authentication :displayname: Enable Biometric Authentication @@ -4175,12 +4175,13 @@ Enable biometric authentication .. note:: - Users must authenticate in the following situations: + - Changing this configuration setting takes effect when mobile users restart their Mattermost mobile app or log out and log back in. + - Users must authenticate in the following situations: - - Adding a new server: When a new server is added to the mobile app and biometric authentication is enabled. - - Opening the mobile app: At app launch when the active server requires authentication. - - Returning after background use: After the app has been in the background for 5 minutes or more and the active server requires authentication. - - Using multiple servers: When accessing a server for the first time, after 5 minutes of inactivity on a server, and when the last authentication attempt fails. + - Adding a new server: When a new server is added to the mobile app and biometric authentication is enabled. + - Opening the mobile app: At app launch when the active server requires authentication. + - Returning after background use: After the app has been in the background for 5 minutes or more and the active server requires authentication. + - Using multiple servers: When accessing a server for the first time, after 5 minutes of inactivity on a server, and when the last authentication attempt fails. .. config:setting:: mobile-security-enabled :displayname: Enable Jailbreak/Root Protection @@ -4210,7 +4211,8 @@ Enable jailbreak/root protection .. note:: - See the `Expo SDK documentation `_ to learn more about how checks are performed for this functionality. + - Changing this configuration setting takes effect when mobile users restart their Mattermost mobile app or log out and log back in. + - See the `Expo SDK documentation `_ to learn more about how checks are performed for this functionality. .. config:setting:: mobile-security-enabled :displayname: Prevent Screen Capture @@ -4238,6 +4240,10 @@ Prevent screen capture | blocking is disabled. | | +-----------------------------------------------+-----------------------------------------------------------------------------------------------+ +.. note:: + + Changing this configuration setting takes effect when mobile users restart their Mattermost mobile app or log out and log back in. + .. config:setting:: mobile-enable-secure-file-preview :displayname: Enable secure file preview on mobile (File sharing) :systemconsole: Site Configuration > File sharing and downloads @@ -4261,6 +4267,9 @@ This setting improves an organization's mobile security posture by restricting f | - **false**: **(Default)** Secure file preview mode is disabled. | | +---------------------------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------+ +.. note:: + Changing this configuration setting takes effect when mobile users restart their Mattermost mobile app or log out and log back in. + .. config:setting:: mobile-allow-pdf-link-navigation :displayname: Allow PDF link navigation on mobile (File sharing) :systemconsole: Site Configuration > File sharing and downloads @@ -4283,7 +4292,8 @@ Allow PDF link navigation on mobile .. note:: - This setting has no effect when the `Secure file preview on mobile <#enable-secure-file-preview-on-mobile>`__ configuration setting is disabled. + - Changing this configuration setting takes effect when mobile users restart their Mattermost mobile app or log out and log back in. + - This setting has no effect when the `Secure file preview on mobile <#enable-secure-file-preview-on-mobile>`__ configuration setting is disabled. ---- From b4730293142c9e1265febb6cd4c74b994212adc5 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 10:53:08 -0400 Subject: [PATCH 30/36] v11: Update certificate configuration settings with critical server startup requirement (#8382) * Update certificate configuration settings with critical server startup requirement - Add important warning that ClientSideCertEnable must be false to start server in v11.0+ - Clarify that ClientSideCertCheck is no longer functional in v11.0+ - Emphasize that setting ClientSideCertEnable to true will prevent server startup Co-authored-by: Carrie Warner (Mattermost) * Deprecated cert-based auth from v11 --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../experimental-configuration-settings.rst | 14 +++++++-- .../certificate-based-authentication.rst | 29 +++++++------------ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/source/administration-guide/configure/experimental-configuration-settings.rst b/source/administration-guide/configure/experimental-configuration-settings.rst index 0f6a2a4fd73..cfebfb00656 100644 --- a/source/administration-guide/configure/experimental-configuration-settings.rst +++ b/source/administration-guide/configure/experimental-configuration-settings.rst @@ -962,9 +962,13 @@ Enable client-side certification .. include:: ../../_static/badges/ent-only.rst :start-after: :nosearch: +.. important:: + + **Certificate-based authentication has been deprecated from Mattermost v11.0.** This setting must be set to ``false`` to start the server from v11. Setting this to ``true`` will prevent the server from starting. + **True**: Enables client-side certification for your Mattermost server. See :doc:`the documentation ` to learn more. -**False**: Client-side certification is disabled. +**False**: **(Default)** Client-side certification is disabled. +------------------------------------------------------------------------------------------------------------------+ | This feature's ``config.json`` setting is ``"ClientSideCertEnable": false`` with options ``true`` and ``false``. | @@ -985,11 +989,15 @@ Client-side certification login method .. include:: ../../_static/badges/ent-only.rst :start-after: :nosearch: -Used in combination with the ``ClientSideCertEnable`` configuration setting. +.. important:: + + **Certificate-based authentication has been deprecated from Mattermost v11.0.** This setting is no longer functional from Mattermost v11.0 and should be left at the default value. + +This configuration setting is used in combination with the ``ClientSideCertEnable`` configuration setting and has the following possible values: **Primary**: After the client side certificate is verified, user's email is retrieved from the certificate and is used to log in without a password. -**Secondary**: After the client side certificate is verified, user's email is retrieved from the certificate and matched against the one supplied by the user. If they match, the user logs in with regular email/password credentials. +**Secondary**: **(Default)** After the client side certificate is verified, user's email is retrieved from the certificate and matched against the one supplied by the user. If they match, the user logs in with regular email/password credentials. +----------------------------------------------------------------------------------------------------------------------------------+ | This feature's ``config.json`` setting is ``"ClientSideCertCheck": "secondary"`` with options ``"primary"`` and ``"secondary"``. | diff --git a/source/administration-guide/onboard/certificate-based-authentication.rst b/source/administration-guide/onboard/certificate-based-authentication.rst index 00100a04f67..48e5f82e66b 100644 --- a/source/administration-guide/onboard/certificate-based-authentication.rst +++ b/source/administration-guide/onboard/certificate-based-authentication.rst @@ -4,25 +4,30 @@ Certificate-based authentication (Experimental) .. include:: ../../_static/badges/ent-selfhosted.rst :start-after: :nosearch: -Certificate-based authentication (CBA) is available as an experimental feature to identify a user or a device before granting access to Mattermost and provide an additional layer of security to access the system. +.. important:: + **Experimental certificate-based authentication has been deprecated from Mattermost v11.0.** From Mattermost v11, you must :ref:`disable this feature ` to start the server. Enabling this setting will prevent the server from starting. -Follow these steps to configure user CBA for your browser and Mattermost Desktop Apps. Support for the Mattermost iOS and Android Apps is planned. It is expected that you can manage certificate distribution for each personal device (BYOD) and their life cycle management with a service like `OpenSSL `__. +Prior to v11, certificate-based authentication (CBA) is available as an experimental feature to identify a user or a device before granting access to Mattermost and provide an additional layer of security to access the system. Before you begin, follow the :doc:`official guides to install Mattermost ` on your system, including NGINX configuration as a proxy with SSL and HTTP/2, and a valid SSL certificate such as Let's Encrypt. +Then, follow the steps below to configure user CBA for your browser and Mattermost Desktop Apps. You can manage certificate distribution for each personal device (BYOD) and their life cycle management with a service like `OpenSSL `__. + Set up mutual TLS authentication for the Web App -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +------------------------------------------------- -This is the first step for setting up certificate-based authentication. If you haven't set up mutual TLS authentication yet, :doc:`see our documentation to learn more `. +:doc:`Setting up mutual TLS authentication ` is the first step to set up certificate-based authentication. Set up Mattermost server to log in with a client certificate -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +-------------------------------------------------------------- 1. Make sure your Mattermost server is licensed with a valid Enterprise license. 2. In ``ExperimentalSettings`` of the ``config.json`` file, set ``ClientSideCertEnable`` to ``true`` and ``ClientSideCertCheck`` to one of the following values: - ``primary`` - After the client side certificate is verified, user's email is retrieved from the certificate and is used to log in without a password. -- ``secondary`` - After the client side certificate is verified, user's email is retrieved from the certificate and matched against the one supplied by the user. If they match, the user logs in with regular email/password credentials. +- ``secondary`` - After the client side certificate is verified, user's email is retrieved from the certificate and matched against the one supplied by the user. + +If they match, the user logs in with regular email/password credentials. The ``config.json`` file should then have the following lines @@ -35,16 +40,4 @@ The ``config.json`` file should then have the following lines 3. Restart the Mattermost server. -On Ubuntu 14.04 and RHEL 6: - -.. code-block:: sh - - sudo restart mattermost - -On Ubuntu 16.04, Debian Stretch, and RHEL 7: - -.. code-block:: sh - - sudo systemctl restart mattermost - 4. Go to ``https://example.mattermost.com`` and try to log in. The server should require the x.509 cert to have an ``emailAddress`` equal to the Mattermost user's email. From 81221eeddf46b338e080f7f6c781415e5e275920 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 15:59:13 -0400 Subject: [PATCH 31/36] v11: Update logging documentation for consolidated mattermost.log (#8433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * docs: Update v11 logging documentation for consolidated mattermost.log - Add v11.0+ deprecation notices for NotificationLogSettings - Document consolidation of notification logs into main mattermost.log - Add new discrete notification log levels (NotificationError, NotificationWarn, etc.) - Provide advanced logging example for separating notification logs in v11.0+ - Update troubleshooting guidance for consolidated logging approach 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Carrie Warner (Mattermost) * v11 notification log consolidation --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../environment-configuration-settings.rst | 17 +- .../administration-guide/manage/logging.rst | 336 ++++++++++++++---- 2 files changed, 288 insertions(+), 65 deletions(-) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index 3b9ab5017c9..27352fccee5 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -2998,6 +2998,10 @@ Output logs to console | written to the console. | | +-----------------------------------------------+---------------------------------------------------------------------------+ +.. note:: + + From Mattermost v11.0, notification logs are automatically included in the main console logs. + .. config:setting:: console-log-level :displayname: Console general log level (General Logging) :systemconsole: Environment > Logging @@ -3103,7 +3107,8 @@ Output logs to file .. note:: - Typically set to **true** in a production environment. When enabled, you can download the ``mattermost.log`` file locally by going to **System Console > Reporting > Server Logs**, and selecting **Download Logs**. + - From Mattermost v11.0, notification logs are automatically included in the main file logs. + - This setting is typically set to **true** in a production environment. When enabled, you can download the ``mattermost.log`` file locally by going to **System Console > Reporting > Server Logs**, and selecting **Download Logs**. .. config:setting:: file-log-directory :displayname: General file log directory (General Logging) @@ -3326,7 +3331,15 @@ Enable Sentry reporting Notification logging ~~~~~~~~~~~~~~~~~~~~~ -Configure logging specifically for Mattermost notifications by editing the ``config.json`` file as described in the following tables. These settings operate independently from the main ``LogSettings`` and allow you to customize logging behavior specifically for the notification subsystem. Changes to these configuration settings require a server restart before taking effect. +.. important:: + + **From Mattermost v11, notification log settings have been consolidated into the standard console logs and mattermost.log file**. You can no longer disable notification logging without using advanced logging settings, as the main log level setting now controls both server and notification logs. + + You can use the ``AdvancedLoggingJSON`` configuration with discrete notification log levels: ``NotificationError``, ``NotificationWarn``, ``NotificationInfo``, ``NotificationDebug``, and ``NotificationTrace`` to split notification logs into separate files and reduce troubleshooting noise. See :ref:`Advanced Logging ` for details. + +The following configuration settings apply only to Mattermost server versions prior to v11.0. + +You can configure logging specifically for Mattermost notifications by editing the ``config.json`` file as described in the following tables. These settings operate independently from the main ``LogSettings`` and allow you to customize logging behavior specifically for the notification subsystem. Changes to these configuration settings require a server restart before taking effect. .. config:setting:: output-logs-to-console :displayname: Output notification logs to console (Notification Logging) diff --git a/source/administration-guide/manage/logging.rst b/source/administration-guide/manage/logging.rst index 334fe45c82f..5d2a2d2181d 100644 --- a/source/administration-guide/manage/logging.rst +++ b/source/administration-guide/manage/logging.rst @@ -4,7 +4,13 @@ Mattermost logging .. include:: ../../_static/badges/allplans-cloud-selfhosted.rst :start-after: :nosearch: -Mattermost provides 3 independent logging systems that can be configured separately with separate log files and rotation policies to meet different operational and compliance needs: +.. important:: + + **From Mattermost v11, notification log settings have been consolidated into the standard console logs and mattermost.log file**. You can no longer disable notification logging without using advanced logging settings, as the main log level setting now controls both server and notification logs. + + You can use the ``AdvancedLoggingJSON`` configuration with discrete notification log levels: ``NotificationError``, ``NotificationWarn``, ``NotificationInfo``, ``NotificationDebug``, and ``NotificationTrace`` to split notification logs into separate files and reduce troubleshooting noise. See the section below on `advanced logging <#advanced-logging>`__ for details. + +Mattermost provides independent logging systems that can be configured separately with separate log files and rotation policies to meet different operational and compliance needs: .. csv-table:: :header: "Logging Type & Capture", "Production Recommendation", "Configuration Priority" @@ -12,97 +18,181 @@ Mattermost provides 3 independent logging systems that can be configured separat "**Log Settings** - All general Mattermost server operations, errors, startup/initialization, API calls, and system events.", "Always enabled. Console: INFO, File: INFO", "**High** - Essential for operations" + All general Mattermost server operations, errors, startup/initialization, API calls, and system events. From v11.0, also includes notification subsystem events.", "Always enabled. Console: INFO, File: INFO", "**High** - Essential for operations" "**Audit Log Settings** Security and compliance events, user actions, API access, authentication events, and administrative changes.", "Enable if compliance is required", "**Medium** - Based on regulatory needs" - "**Notification Log Settings** + "**Notification Log Settings** *(applicable to v10.12 and earlier releases only)* Notification subsystem events, push notifications, email delivery, mobile notification processing.", "Enable for notification troubleshooting", "**Low** - Enable when debugging issues" -By default, all Mattermost plans write logs to both the console and to the ``mattermost.log`` file in a machine-readable JSON format for log aggregation tools. Mattermost Enterprise and Professional customers can additionally log directly to syslog and TCP socket destination targets. Audit and notification logging are designed to be asynchronous to minimize performance impact. +By default, all Mattermost plans write logs to both the console and to the ``mattermost.log`` file in a machine-readable JSON format for log aggregation tools. Mattermost Enterprise and Professional customers can additionally log directly to syslog and TCP socket destination targets. Audit logging is designed to be asynchronous to minimize performance impact. System admins can customize the following logging options based on your business practices and needs by going to **System Console > Environment > Logging** or by editing the ``config.json`` file directly. Console logs ------------ -Console logs feature verbose debug level log messages for general and notification activities that are written to the console using the standard output stream (stdout). You can customize console logs for general and notification activities. See the :ref:`Logging configuration settings ` for details. +Console logs feature verbose debug level log messages for general activities that are written to the console using the standard output stream (stdout). You can customize console logs for general activities. + +From Mattermost v11.0, notification logs are automatically included in the main console logs. See the :ref:`Logging configuration settings ` for details. File logs --------- -File logs feature info level log messages for general and notification activities, including errors and information around startup, and initialization and webhook debug messages. The file is stored in ``./logs/mattermost.log``, rotated at 100 MB, and archived to a separate file in the same directory. You can customize file logs for general and notification activities. See the :ref:`Logging configuration settings ` for details. +File logs feature info level log messages for general activities including errors and information around startup, and initialization and webhook debug messages. The file is stored in ``./logs/mattermost.log``, rotated at 100 MB, and archived to a separate file in the same directory. You can customize file logs for general activities. + +From Mattermost v11.0, notification logs are automatically included in the main ``mattermost.log`` file. See the :ref:`Logging configuration settings ` for details. .. tip:: - You can download the ``mattermost.log`` file locally by going to **System Console > Reporting > Server Logs**, and selecting **Download Logs**. + Download the ``mattermost.log`` file locally by going to **System Console > Reporting > Server Logs**, and selecting **Download Logs**. You can optionally output log records to any combination of `console <#console-target-configuration-options>`__, `local file <#file-target-configuration-options>`__, `syslog <#syslog-target-configuration-options>`__, and `TCP socket <#tcp-target-configuration-options>`__ targets, each featuring additional customization. See `Advanced Logging <#advanced-logging>`__ for details. Define logging output --------------------- -Define logging output for general and notification activities in JSON format in the System Console by going to **Environment > Logging > Advanced Logging** or by editing the ``config.json`` file directly. You can use the sample JSON below as a starting point. +Define logging output for general activities in JSON format in the System Console by going to **Environment > Logging > Advanced Logging** or by editing the ``config.json`` file directly. -.. code-block:: JSON +You can use the sample JSON below as a starting point. - { - "console1": { - "type": "console", - "format": "json", - "levels": [ - {"id": 5, "name": "debug", "stacktrace": false}, - {"id": 4, "name": "info", "stacktrace": false, "color": 36}, - {"id": 3, "name": "warn", "stacktrace": false}, - {"id": 2, "name": "error", "stacktrace": true, "color": 31}, - {"id": 1, "name": "fatal", "stacktrace": true, "color": 31}, - {"id": 0, "name": "panic", "stacktrace": true, "color": 31}, - {"id": 10, "name": "stdlog", "stacktrace": false} - ], - "options": { - "out": "stdout" +.. tab:: v11 or later + + .. code-block:: JSON + + { + "console1": { + "type": "console", + "format": "json", + "levels": [ + {"id": 5, "name": "debug", "stacktrace": false}, + {"id": 4, "name": "info", "stacktrace": false, "color": 36}, + {"id": 3, "name": "warn", "stacktrace": false}, + {"id": 2, "name": "error", "stacktrace": true, "color": 31}, + {"id": 1, "name": "fatal", "stacktrace": true, "color": 31}, + {"id": 0, "name": "panic", "stacktrace": true, "color": 31}, + {"id": 10, "name": "stdlog", "stacktrace": false}, + + {"id": 300, "name": "NotificationError", "stacktrace": true, "color": 31}, + {"id": 301, "name": "NotificationWarn", "stacktrace": false}, + {"id": 302, "name": "NotificationInfo", "stacktrace": false, "color": 36}, + {"id": 303, "name": "NotificationDebug", "stacktrace": false}, + {"id": 304, "name": "NotificationTrace", "stacktrace": false} + ], + "options": { + "out": "stdout" + }, + "maxqueuesize": 1000 }, - "maxqueuesize": 1000 - }, - "file1": { - "type": "file", - "format": "json", - "levels": [ - {"id": 5, "name": "debug", "stacktrace": false}, - {"id": 4, "name": "info", "stacktrace": false}, - {"id": 3, "name": "warn", "stacktrace": false}, - {"id": 2, "name": "error", "stacktrace": true}, - {"id": 1, "name": "fatal", "stacktrace": true}, - {"id": 0, "name": "panic", "stacktrace": true} - ], - "options": { - "filename": "mattermost_logging.log", - "max_size": 100, - "max_age": 1, - "max_backups": 10, - "compress": true + "file1": { + "type": "file", + "format": "json", + "levels": [ + {"id": 5, "name": "debug", "stacktrace": false}, + {"id": 4, "name": "info", "stacktrace": false}, + {"id": 3, "name": "warn", "stacktrace": false}, + {"id": 2, "name": "error", "stacktrace": true}, + {"id": 1, "name": "fatal", "stacktrace": true}, + {"id": 0, "name": "panic", "stacktrace": true}, + + {"id": 300, "name": "NotificationError", "stacktrace": true}, + {"id": 301, "name": "NotificationWarn", "stacktrace": false}, + {"id": 302, "name": "NotificationInfo", "stacktrace": false}, + {"id": 303, "name": "NotificationDebug", "stacktrace": false}, + {"id": 304, "name": "NotificationTrace", "stacktrace": false} + ], + "options": { + "filename": "mattermost_logging.log", + "max_size": 100, + "max_age": 1, + "max_backups": 10, + "compress": true + }, + "maxqueuesize": 1000 }, - "maxqueuesize": 1000 - }, - "file2": { - "type": "file", - "format": "json", - "levels": [ - {"id": 2, "name": "error", "stacktrace": true}, - {"id": 1, "name": "fatal", "stacktrace": true}, - {"id": 0, "name": "panic", "stacktrace": true} - ], - "options": { - "filename": "mattermost_logging_errors.log", - "max_size": 100, - "max_age": 30, - "max_backups": 10, - "compress": true + "file2": { + "type": "file", + "format": "json", + "levels": [ + {"id": 2, "name": "error", "stacktrace": true}, + {"id": 1, "name": "fatal", "stacktrace": true}, + {"id": 0, "name": "panic", "stacktrace": true}, + + {"id": 300, "name": "NotificationError", "stacktrace": true}, + {"id": 301, "name": "NotificationWarn", "stacktrace": false} + ], + "options": { + "filename": "mattermost_logging_errors.log", + "max_size": 100, + "max_age": 30, + "max_backups": 10, + "compress": true + }, + "maxqueuesize": 1000 + } + } + +.. tab:: v10.12 or earlier + + .. code-block:: JSON + + { + "console1": { + "type": "console", + "format": "json", + "levels": [ + {"id": 5, "name": "debug", "stacktrace": false}, + {"id": 4, "name": "info", "stacktrace": false, "color": 36}, + {"id": 3, "name": "warn", "stacktrace": false}, + {"id": 2, "name": "error", "stacktrace": true, "color": 31}, + {"id": 1, "name": "fatal", "stacktrace": true, "color": 31}, + {"id": 0, "name": "panic", "stacktrace": true, "color": 31}, + {"id": 10, "name": "stdlog", "stacktrace": false} + ], + "options": { + "out": "stdout" + }, + "maxqueuesize": 1000 }, - "maxqueuesize": 1000 + "file1": { + "type": "file", + "format": "json", + "levels": [ + {"id": 5, "name": "debug", "stacktrace": false}, + {"id": 4, "name": "info", "stacktrace": false}, + {"id": 3, "name": "warn", "stacktrace": false}, + {"id": 2, "name": "error", "stacktrace": true}, + {"id": 1, "name": "fatal", "stacktrace": true}, + {"id": 0, "name": "panic", "stacktrace": true} + ], + "options": { + "filename": "mattermost_logging.log", + "max_size": 100, + "max_age": 1, + "max_backups": 10, + "compress": true + }, + "maxqueuesize": 1000 + }, + "file2": { + "type": "file", + "format": "json", + "levels": [ + {"id": 2, "name": "error", "stacktrace": true}, + {"id": 1, "name": "fatal", "stacktrace": true}, + {"id": 0, "name": "panic", "stacktrace": true} + ], + "options": { + "filename": "mattermost_logging_errors.log", + "max_size": 100, + "max_age": 30, + "max_backups": 10, + "compress": true + }, + "maxqueuesize": 1000 + } } - } ---- @@ -126,7 +216,7 @@ You can enable and customize advanced audit logging in Mattermost to record acti Go to **System Console > Compliance > Audit Logging** to customize audit logging. You can use the sample JSON below as a starting point. - You can customize console logs for :ref:`general ` and :ref:`notification ` activities. + You can customize console logs for :ref:`general ` activities. From v11.0, :ref:`notification ` logs are automatically included unless advanced logging is configured. Additionally, you can also output audit log records to any combination of `console <#console-target-configuration-options>`__, `local file <#file-target-configuration-options>`__, `syslog <#syslog-target-configuration-options>`__, and `TCP socket <#tcp-target-configuration-options>`__ targets, each featuring additional customization. See `Advanced Logging <#advanced-logging>`__ below for details. @@ -156,10 +246,11 @@ Advanced logging .. include:: ../../_static/badges/ent-only.rst :start-after: :nosearch: -System admins can output log and audit records general, audit, and notification activities to any combination of `console <#console-target-configuration-options>`__, `local file <#file-target-configuration-options>`__, `syslog <#syslog-target-configuration-options>`__, and `TCP socket <#tcp-target-configuration-options>`__ targets. Each output target features additional configuration options you can customize for your Mattermost deployment. +System admins can output log and audit records for general and audit activities to any combination of `console <#console-target-configuration-options>`__, `local file <#file-target-configuration-options>`__, `syslog <#syslog-target-configuration-options>`__, and `TCP socket <#tcp-target-configuration-options>`__ targets. .. tip:: + - From Mattermost v11.0, notification activities are included in general logs by default, but can be separated using the new discrete notification log levels. Each output target features additional configuration options you can customize for your Mattermost deployment. - From Mattermost v9.11, system admins can configure advanced logging JSON options using the ``mmctl config set`` command. See the :ref:`mmctl config set ` documentation for an example slash command. - From Mattermost v9.3, system admins can configure advanced logging options in the System Console using multi-line JSON by going to **Environment > Logging**. - Alternatively, admins can configure advanced logging within the ``AdvancedLoggingJSON`` section of the ``config.json`` file using multi-line JSON or escaped JSON as a string. @@ -176,9 +267,61 @@ Define advanced log output ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. tab:: Multi-line JSON + :parse-titles: In the example below, file output is written to ``./logs/audit.log`` in plain text and includes all audit log levels & events. Older logs are kept for 1 day, and up to a total of 10 backup log files are kept at a time. Logs are rotated using gzip when the maximum size of the log file reaches 500 MB. A maximum of 1000 audit records can be queued/buffered while writing to the file. + v11 or later + ^^^^^^^^^^^^^ + + .. code-block:: JSON + + "AdvancedLoggingJSON": { + "file_1": { + "type": "file", + "format": "plain", + "format_options": { + "disable_level": false + }, + "levels": [ + { "id": 100, "name": "audit-api" }, + { "id": 101, "name": "audit-content" }, + { "id": 102, "name": "audit-permissions" }, + { "id": 103, "name": "audit-cli" } + ], + "options": { + "compress": true, + "filename": "./logs/audit.log", + "max_age": 1, + "max_backups": 10, + "max_size": 500 + }, + "maxqueuesize": 1000 + }, + "file_notifications": { + "type": "file", + "format": "json", + "levels": [ + { "id": 300, "name": "NotificationError" }, + { "id": 301, "name": "NotificationWarn" }, + { "id": 302, "name": "NotificationInfo" }, + { "id": 303, "name": "NotificationDebug" }, + { "id": 304, "name": "NotificationTrace" } + ], + "options": { + "compress": true, + "filename": "./logs/notifications.log", + "max_age": 7, + "max_backups": 5, + "max_size": 200 + }, + "maxqueuesize": 1000 + } + } + + v10.12 or earlier + ^^^^^^^^^^^^^^^^^^ + .. code-block:: JSON "AdvancedLoggingJSON": { @@ -206,6 +349,7 @@ Define advanced log output } .. tab:: Filespec + :parse-titles: Advanced logging configuration can be pointed to a filespec to another configuration file, rather than multi-line JSON, to keep the config.json file tidy: @@ -221,6 +365,72 @@ Define advanced log output Contents of ``audit_log_config.json`` file: + v11 or later + ^^^^^^^^^^^^^ + + .. code-block:: JSON + + { + "sample-console": { + "type": "console", + "format": "plain", + "format_options": { + "delim": " | " + }, + "levels": [ + {"id": 100, "name": "audit-api"}, + {"id": 101, "name": "audit-content"}, + {"id": 102, "name": "audit-permissions"}, + {"id": 103, "name": "audit-cli"} + ], + "options": { + "out": "stdout" + }, + "maxqueuesize": 1000 + }, + "sample-file": { + "type": "file", + "format": "json", + "levels": [ + {"id": 100, "name": "audit-api"}, + {"id": 101, "name": "audit-content"}, + {"id": 102, "name": "audit-permissions"}, + {"id": 103, "name": "audit-cli"} + ], + "options": { + "filename": "./logs/audit.log", + "max_size": 500, + "max_age": 1, + "max_backups": 10, + "compress": true + }, + "maxqueuesize": 1000 + }, + "notifications-file": { + "type": "file", + "format": "json", + "levels": [ + {"id": 300, "name": "NotificationError"}, + {"id": 301, "name": "NotificationWarn"}, + {"id": 302, "name": "NotificationInfo"}, + {"id": 303, "name": "NotificationDebug"}, + {"id": 304, "name": "NotificationTrace"} + ], + "options": { + "filename": "./logs/notifications.log", + "max_size": 200, + "max_age": 7, + "max_backups": 5, + "compress": true + }, + "maxqueuesize": 1000 + } + } + + + v10.12 or earlier + ^^^^^^^^^^^^^^^^^^ + .. code-block:: JSON { From 13938cff8e0a24ff6caf736864003ef0eff2b777 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:34:30 -0400 Subject: [PATCH 32/36] Corrected documented Editable by users option --- source/administration-guide/manage/admin/user-attributes.rst | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/administration-guide/manage/admin/user-attributes.rst b/source/administration-guide/manage/admin/user-attributes.rst index a5edd4c75ab..08459970285 100644 --- a/source/administration-guide/manage/admin/user-attributes.rst +++ b/source/administration-guide/manage/admin/user-attributes.rst @@ -101,10 +101,7 @@ You can define and manage up to 20 system attributes using the System Console. E - **Hide when empty**: The attribute is only visible in user profiles when it has a value. - **Always hide**: The attribute is never visible in user profiles. -4. Configure user editing permissions (Mattermost v11 or later): - - - **Admin-managed** (default): Only system administrators can modify this attribute. Recommended for security-sensitive or policy-affecting attributes. - - **User-editable**: Allow users to edit this attribute in their profiles. Select this for non-sensitive attributes that users should be able to manage themselves. +4. Configure user editing permissions (Mattermost v11 or later) by enabling or disabling the **Editable by users** option. 5. Save your changes. From 2fb0905c767ec6a9545d3bf9d37a1d120f40cf77 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:54:47 -0400 Subject: [PATCH 33/36] Max Open/Idle Comms corrections --- .../configure/environment-configuration-settings.rst | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/administration-guide/configure/environment-configuration-settings.rst b/source/administration-guide/configure/environment-configuration-settings.rst index 27352fccee5..eaadf652a7e 100644 --- a/source/administration-guide/configure/environment-configuration-settings.rst +++ b/source/administration-guide/configure/environment-configuration-settings.rst @@ -829,10 +829,6 @@ Maximum idle connections | | - Environment variable: ``MM_SQLSETTINGS_MAXIDLECONNS`` | | Numerical input. Default is **50**. | | | A 2:1 ratio with MaxOpenConns is recommended. | | -| database. | - ``config.json`` setting: ``SqlSettings`` > ``MaxOpenConns`` > ``300`` | -| | - Environment variable: ``MM_SQLSETTINGS_MAXOPENCONNS`` | -| Numerical input. Default is **300** for self-hosted | | -| deployments, and **100** for Cloud deployments. | | +--------------------------------------------------------+-------------------------------------------------------------------------+ .. config:setting:: query-timeout From c80ed7f6eb4a3a0581f57c1bd8b67deaf83c31e8 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 16:56:16 -0400 Subject: [PATCH 34/36] Updated high upper limit for TE (#8453) --- source/administration-guide/manage/admin/error-codes.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/administration-guide/manage/admin/error-codes.rst b/source/administration-guide/manage/admin/error-codes.rst index ee20e335e7d..f77f5722209 100644 --- a/source/administration-guide/manage/admin/error-codes.rst +++ b/source/administration-guide/manage/admin/error-codes.rst @@ -15,9 +15,9 @@ In advanced deployments, error codes can be overwritten by administrators to ref ERROR_SAFETY_LIMITS_EXCEEDED ---------------------------- -A safety limits exceeded error (``ERROR_SAFETY_LIMITS_EXCEEDED``) displays in the :ref:`free version of Mattermost `, and certain functionality may be limited, when usage grossly exceeds the recommended limit for users in a safe deployment, including more than 2,500 users are registered on the server. +A safety limits exceeded error (``ERROR_SAFETY_LIMITS_EXCEEDED``) displays in the :ref:`free version of Mattermost `, and certain functionality may be limited, when usage grossly exceeds the recommended limit for users in a safe deployment, including more than 250 users are registered on the server. -2,500 users represents a “high upper limit” for deployments that are approximately 100 times the recommended size, which is far beyond the intended design of the product. +250 users represents a “high upper limit” for deployments that are approximately 5 times the recommended size, which is far beyond the intended design of the product. The free version of Mattermost is intended for approximately 50 users. If your Mattermost materially exceeds this recommended size, system admins should seek to either `purchase a commercial license `_, or apply for a :doc:`non-profit subscription ` license. Alternatively, admins can :ref:`deactivate users ` until the user count falls below the high upper limit. From a2543df708d6da23b26a65a6f124ca62dd2136d0 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:12:42 -0400 Subject: [PATCH 35/36] Added important note re: MySQL deprecation from v11 (#8454) * Added important note re: MySQL deprecation from v11 * Editorial reviews --- .../configure/site-configuration-settings.rst | 20 ++++++++++--------- .../prepare-mattermost-mysql-database.rst | 1 + .../deployment-guide/server/trouble_mysql.rst | 6 ++++++ 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/source/administration-guide/configure/site-configuration-settings.rst b/source/administration-guide/configure/site-configuration-settings.rst index 78b8a9e60c8..2f40dc2e97f 100644 --- a/source/administration-guide/configure/site-configuration-settings.rst +++ b/source/administration-guide/configure/site-configuration-settings.rst @@ -740,21 +740,23 @@ Lock teammate name display for all users :systemconsole: Site Configuration > Users and Teams :configjson: .TeamSettings.ExperimentalViewArchivedChannels :environment: MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS - :description: This setting controls whether users can view archived channels. From Mattermost v11.0, this setting is always enabled and no longer configurable. Users can always access archived channels where they are members. + :description: This setting controls whether users can view archived channels. + + - **true**: **(Default)** Allows users to access the content of archived channels of which they were a member. + - **false**: Users are unable to access content in archived channels. Allow users to view archived channels ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+--------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ -| This setting is always enabled and no longer configurable from Mattermost v11.0. | - System Config path: **Site Configuration > Users and Teams** | -| Users can always access the content of archived channels of which they were a member. | - ``config.json`` setting: ``TeamSettings`` > ``ExperimentalViewArchivedChannels`` > ``true`` | -| | - Environment variable: ``MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS`` | -+--------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ +| - **true**: **(Default)** Allows users to access the content of archived channels of which they were a member. | - System Config path: **Site Configuration > Users and Teams** | +| - **false**: Users are unable to access content in archived channels. | - ``config.json`` setting: ``TeamSettings`` > ``ExperimentalViewArchivedChannels`` > ``true`` | +| | - Environment variable: ``MM_TEAMSETTINGS_EXPERIMENTALVIEWARCHIVEDCHANNELS`` | ++----------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+ .. note:: - - From Mattermost v11.0, this configuration setting is always enabled and no longer configurable. Users can always access archived channels where they are members. - + - From Mattermost v11, this configuration setting is always enabled and no longer configurable. Users can always access archived channels where they are members. + - Cloud admins can't modify this configuration setting. .. config:setting:: show-email-address :displayname: Show email address (Users and Teams) diff --git a/source/deployment-guide/server/prepare-mattermost-mysql-database.rst b/source/deployment-guide/server/prepare-mattermost-mysql-database.rst index 3ea248281c3..22e88ed3b94 100644 --- a/source/deployment-guide/server/prepare-mattermost-mysql-database.rst +++ b/source/deployment-guide/server/prepare-mattermost-mysql-database.rst @@ -8,6 +8,7 @@ Prepare your Mattermost MySQL database .. important:: + - From Mattermost v11, Mattermost completely stops support MySQL as a database driver. MySQL support has been completely removed from the codebase, and the product will throw an invalid configuration error. - PostgreSQL is our preferred database of choice. See the :ref:`database software ` documentation for details on database version support, and see the :doc:`Migrate from MySQL to PostgreSQL ` documentation for details on migrating from MySQL to PostgreSQL. - MySQL 8.0.22 contains an `issue with JSON column types `__ changing string values to integers which is preventing Mattermost from working properly. Users are advised to avoid this database version. diff --git a/source/deployment-guide/server/trouble_mysql.rst b/source/deployment-guide/server/trouble_mysql.rst index 2a506583bf2..16a8b848e0d 100644 --- a/source/deployment-guide/server/trouble_mysql.rst +++ b/source/deployment-guide/server/trouble_mysql.rst @@ -1,6 +1,12 @@ MySQL installation troubleshooting ================================== +.. important:: + + - From Mattermost v11, Mattermost completely stops support MySQL as a database driver. MySQL support has been completely removed from the codebase, and the product will throw an invalid configuration error. + + - PostgreSQL is our preferred database of choice. See the :ref:`database software ` documentation for details on database version support, and see the :doc:`Migrate from MySQL to PostgreSQL ` documentation for details on migrating from MySQL to PostgreSQL. + Before you can run the Mattermost server, you must first install and configure a database. You can start Mattermost by navigating to the ``/opt/mattermost`` directory and entering the command ``sudo -u mattermost bin/mattermost``. If the Mattermost server can't connect to the database, it will fail to start. This section deals with MySQL database issues that you may encounter when you start up Mattermost for the first time. .. note:: From 5983908250bf28d22404b48786ab8836deeb4ad6 Mon Sep 17 00:00:00 2001 From: "Carrie Warner (Mattermost)" <74422101+cwarnermm@users.noreply.github.com> Date: Fri, 3 Oct 2025 17:24:20 -0400 Subject: [PATCH 36/36] Add version-specific Bleve documentation guidance (#8455) * Add version-specific Bleve documentation guidance - Keep Bleve documentation available for pre-v11 customers with clear deprecation warnings - Add v11.0-specific upgrade guidance and critical configuration warnings - Update Bleve configuration settings with version-aware messaging - Ensure customers have appropriate guidance regardless of their Mattermost version Co-authored-by: Carrie Warner (Mattermost) * Bleve search updates & workarounds --------- Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com> Co-authored-by: Carrie Warner (Mattermost) --- .../configure/bleve-search.rst | 18 ++- .../experimental-configuration-settings.rst | 103 ++++++++++++++++++ .../upgrade/upgrading-mattermost-server.rst | 5 +- 3 files changed, 120 insertions(+), 6 deletions(-) diff --git a/source/administration-guide/configure/bleve-search.rst b/source/administration-guide/configure/bleve-search.rst index 995486ef741..4ce1b3aab19 100644 --- a/source/administration-guide/configure/bleve-search.rst +++ b/source/administration-guide/configure/bleve-search.rst @@ -5,17 +5,22 @@ Bleve search :start-after: :nosearch: .. important:: + **From Mattermost v11, Bleve search has been deprecated.** + + - **For v11.0 and later**: Use :doc:`Elasticsearch ` or :doc:`OpenSearch ` for :doc:`enterprise search ` capabilities + - **For pre-v11.0 deployments**: This documentation remains relevant for existing installations that continue using Bleve. - Experimental Bleve search is deprecated from Mattermost v11.0, and Bleve configuration settings have been moved to the :ref:`Deprecated configuration settings ` documentation. We recommend using :doc:`Elasticsearch ` or :doc:`AWS OpenSearch ` for enterprise search capabilities. - -Bleve is a search engine that uses Lucene-style full-text search and indexing. This style of search and indexing helps overcome limitations of the default database search such as challenges with characters and advanced search capabilities. The Bleve search engine works as a library integrated into the Mattermost codebase. As it generates indexes in the filesystem of the server that it is running on, it doesn’t require an external server to function. Because of this, Bleve should not be enabled in High Availability deployments. +Bleve is a search engine that uses Lucene-style full-text search and indexing. This style of search and indexing helps overcome limitations of the default database search such as challenges with characters and advanced search capabilities. .. note:: Experimental Bleve search uses the scorch index type on newly-created indexes. This new index type features efficiency improvements and indexes that use significantly less disk space. Go to **System Console > Experimental > Bleve** and select **Purge Index** to run a purge operation. When that's complete, select **Index Now** to reindex. Bleve remains compatible with existing indexes, so currently indexed data will continue to work if a purge and reindex isn't run. Configuring Bleve in Mattermost -------------------------------- +-------------------------------- + +.. note:: + The following steps are only valid for Mattermost versions prior to v11.0. For v11.0 and later, consider using Elasticsearch or OpenSearch instead. Follow these steps to configure the Mattermost server to use Bleve and generate required indexes. Once the configuration is saved, new posts made to the database will be automatically indexed with Bleve. @@ -34,7 +39,10 @@ Follow these steps to configure the Mattermost server to use Bleve and generate Search results for files shared before upgrading to Mattermost Server v5.35 may be incomplete until an extraction command is run using the :ref:`mmctl `. After running this command, the search index must be rebuilt. Go to **System Console > Experimental > Bleve > Bulk Indexing**, then select **Index Now** to rebuild the search index to include older file contents. Using Bleve search ------------------- +------------------- + +.. note:: + This section applies only to Mattermost versions prior to v11.0. The following conditions are applied when using Bleve search: diff --git a/source/administration-guide/configure/experimental-configuration-settings.rst b/source/administration-guide/configure/experimental-configuration-settings.rst index cfebfb00656..859fc482737 100644 --- a/source/administration-guide/configure/experimental-configuration-settings.rst +++ b/source/administration-guide/configure/experimental-configuration-settings.rst @@ -654,6 +654,109 @@ This setting resolves issues where YouTube video previews display as unavailable ---- +Experimental Bleve configuration settings +----------------------------------------- + +.. include:: ../../_static/badges/allplans-selfhosted.rst + :start-after: :nosearch: + +.. important:: + **From Mattermost v11, Bleve search has been deprecated.** These configuration settings are only available for Mattermost versions prior to v11.0. For v11.0 and later, :doc:`Elasticsearch ` or :doc:`OpenSearch ` for :doc:`enterprise search ` capabilities. + +Access the following configuration settings in the System Console by going to **Experimental > Bleve**, or by editing the ``config.json`` file as described in the following tables: + +.. config:setting:: enable-bleve-indexing + :displayname: Enable Bleve indexing (Experimental) + :systemconsole: Experimental > Bleve + :configjson: EnableIndexing + :environment: N/A + + - **true**: The indexing of new posts occurs automatically. + - **false**: **(Default)** The indexing of new posts does not occur automatically. + +Enable Bleve indexing +~~~~~~~~~~~~~~~~~~~~~ + +**True**: The indexing of new posts occurs automatically. Search queries will not use bleve search until :ref:`Enable Bleve for search queries ` is enabled. + +**False**: The indexing of new posts does not occur automatically. + ++------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableIndexing": false`` with options ``true`` and ``false``. | ++------------------------------------------------------------------------------------------------------------+ + +.. config:setting:: index-directory + :displayname: Index directory (Experimental) + :systemconsole: Experimental > Bleve + :configjson: IndexDir + :environment: N/A + :description: Directory path to use for storing bleve indexes. + +Index directory +~~~~~~~~~~~~~~~ + +Directory path to use for storing bleve indexes. + +.. tip:: + + The bleve index directory path isn't required to exist within the ``mattermost`` directory. When it exists outside of the ``mattermost`` directory, no additional steps are needed to preserve or reindex these files as part of a Mattermost upgrade. See our :doc:`Upgrading Mattermost Server ` documentation for details. + ++-----------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"IndexDir": ""`` with string input. | ++-----------------------------------------------------------------------------------------------------------+ + +Bulk index now +~~~~~~~~~~~~~~ + +Select **Index Now** to index all users, channels, and posts in the database from oldest to newest. Bleve is available during indexing, but search results may be incomplete until the indexing job is complete. + +Purge indexes +~~~~~~~~~~~~~ + +Select **Purge Index** to remove the contents of the Bleve index directory. Search results may be incomplete until a bulk index of the existing database is rebuilt. + +.. config:setting:: enable-bleve-indexingsearch + :displayname: Enable Bleve for search queries (Experimental) + :systemconsole: Experimental > Bleve + :configjson: EnableSearching + :environment: N/A + + - **true**: Search queries will use bleve search. + - **false**: **(Default)** Search queries will not use bleve search. + +Enable Bleve for search queries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**True**: Search queries will use bleve search. + +**False**: Search queries will not use bleve search. + ++--------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableSearching": false`` with options ``true`` and ``false``. | ++--------------------------------------------------------------------------------------------------------------+ + +.. config:setting:: enable-bleve-indexingautocomplete + :displayname: Enable Bleve for autocomplete queries (Experimental) + :systemconsole: Experimental > Bleve + :configjson: EnableAutocomplete + :environment: N/A + + - **true**: Autocomplete queries will use bleve search. + - **false**: **(Default)** Autocomplete queries will not use bleve search. + +Enable Bleve for autocomplete queries +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**True**: Autocomplete queries will use bleve search. + +**False**: Autocomplete queries will not use bleve search. + ++-----------------------------------------------------------------------------------------------------------------+ +| This feature's ``config.json`` setting is ``"EnableAutocomplete": false`` with options ``true`` and ``false``. | ++-----------------------------------------------------------------------------------------------------------------+ + +---- + Experimental audit logging configuration settings -------------------------------------------------------- diff --git a/source/administration-guide/upgrade/upgrading-mattermost-server.rst b/source/administration-guide/upgrade/upgrading-mattermost-server.rst index b9c4b71b41e..6d182333aa8 100644 --- a/source/administration-guide/upgrade/upgrading-mattermost-server.rst +++ b/source/administration-guide/upgrade/upgrading-mattermost-server.rst @@ -47,7 +47,10 @@ Comprehensive upgrade guide Before you begin ~~~~~~~~~~~~~~~~~ -**Read these instructions carefully from start to finish.** +**Read these instructions carefully from start to finish.** + +.. important:: + **Before upgrading to Mattermost v11.0**: If you're currently using Bleve search (found under **System Console > Experimental > Bleve**), ensure that ``DisableDatabaseSearch`` is set to ``false`` before upgrading, or search will become non-functional after the upgrade. Bleve search has been removed in v11.0. For enterprise search capabilities, consider migrating to :doc:`Elasticsearch ` or :doc:`OpenSearch ` for :doc:`enterprise search ` capabilities. Make sure that you understand how to :doc:`prepare for your upgrade `, familiarize yourself with all :doc:`software and hardware requirements `, read the :doc:`important upgrade notes ` and that you understand each step of the upgrade process documented below before starting a Mattermost upgrade. If you have questions or concerns, you can ask on the Mattermost forum at https://forum.mattermost.com/.