* [MM-61899] Properly restrict users who previously shared a team from DMs/GMs when they no longer share a team.
* Fix checks
* Fix test
* Fix i18n
* Added E2E tests
* Merge'd
* Add restricted DM check to more places
* Merge'd
* Restrict patching the channel (updating the channel)
* Update verbiage in the admin console
* Fix lint
* More tests
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-65677 - prevent modals to close via save changes panel
* add proper testing
* implement pr feedback and give warning before modal close
* address tests pr feedback
* fix e2e tests and prevent race condition in team settings modal
* increase the timeout to avoid flaky test
* remove unnecessary space
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-65084: (server-side) PKCE code-exchange for SSO
Server side changes needed for MM-65084. Guarded by MobileSSOCodeExchange feature flag.
* Update users.yaml for vet-api testing
* Change error for not saving SAML token to existing generic 'can't save token' message
* Restricting to sha256 only PKCEs
* Change out PKCE terminology to SAML
This came out as Claude used "PKCE" as a shorthand for the style and I did not know better. SAML is the correct term here.
This also fixes a linter issue where we were assigning `codeVerifier` to `computed` but then overwriting it in all cases (so that was misleading and unecessary)
* Adding ConsumeTokenOnce and IsExpired as suggested by security review
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* extend shift+up e2e-test
* fix: MM-T203 Focus does not move when it has already been set elsewhere
* focus_move_spec: add coverage for replying to a reply
* Fix RHS reply input focus issues
- Addresses focus not shifting to RHS reply input when replying to messages
- Fixes issue where focus remains in center channel instead of RHS
- Related to MM-64520
* use requestAnimationFrame
* simplify
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Hide the "Welcome to Mattermost" onboarding task list when users are on
the `/preparing-workspace` route to prevent conflicting UI during the
"What's the name of your organization" flow.
This fixes a regression introduced in MM-64380 where the removal of
theme-based conditional rendering caused OnBoardingTaskList to appear
on all logged-in routes, including the preparing-workspace flow where
it conflicts with the organization setup screen.
The fix adds route-based conditional rendering to restore the original
intended behavior while maintaining the simplified component structure.
Fixes MM-65812
* Implement Interactive Dialog field refresh and multi-step form functionality
- Add field refresh capability to interactive dialogs
- Implement multi-step form support
- Add comprehensive E2E tests for new features
- Enhance InteractiveDialogAdapter with server-side error handling
- Optimize form validation and performance
- Add internationalization support for error messages
- Maintain backward compatibility with existing dialogs
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fixes and cleanup
* Enhance field refresh e2e tests with improved field ordering and form submission
- Reverse field order: project name first, then project type (with refresh)
- Ensure all tests enter project name to verify value preservation
- Add form submission to MM-T2540B test to verify complete workflow
- Update webhook server to preserve project name values during refresh
- Add submission handler for field refresh dialog callback
- Update introduction text to reflect new field ordering workflow
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* code review updates
* Simplify apps form value preservation by always merging previous values
- Remove AppFormUpdateType enum and updateType props throughout apps form system
- Simplify getDerivedStateFromProps to always preserve existing values via spread operator
- Remove restoreFormFieldValues function and manual value restoration logic
- Eliminate conditional refresh vs submit behavior in favor of consistent value preservation
This change makes apps form behavior consistent regardless of whether it's a
multi-step submission or field refresh, improving reliability and reducing complexity.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Add server-side validation for SubmitDialogResponse
- Add SubmitDialogResponseType enum with OK, Form, Navigate, and Empty types
- Implement IsValid() method with fail-fast validation logic
- Validate type field and ensure Form field consistency based on type
- Add comprehensive test coverage for all validation scenarios
- Integration validates responses in SubmitInteractiveDialog handler
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* lint fixes
* Fix test case for multierror format in Dialog.IsValid()
The Dialog.IsValid() method returns multierror format, so the test
expectation needs to match the actual error format with line breaks.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* i18n-extract
* log dialog errors, allow invalid dialog
* Fix interactive dialog test assertions for undefined values
Handle cases where dialog elements have undefined default values or
placeholders by providing empty string fallbacks. This resolves CI
test failures where undefined values were expected but empty strings
were returned from DOM elements.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Mattermost Build <build@mattermost.com>