* Added type column to scheduled post and draft table
* removed console log
* fixed a test
* fixes
* Restored ununtended changes
* Added BoR indicator in scheduled posts
* used fixed padding
* used Tag for BoR chip
* test: add comprehensive tests for formatTime humanReadable parameter
* test: add initial test file for burn on read label component
* test: add comprehensive tests for BoRLabel component
* test: update BoRLabel tests to use deep rendering and remove mocks
* test: fix renderWithIntl import and usage in BoRLabel test
* refactor: Update BoRLabel tests to use renderWithIntl and remove formatTime mock
* refactor: simplify imports and remove renderWithIntl mock in test file
* Updated tests
* reset unintended changes
* reset unintended changes
* reset unintended changes
* i18n fixes
* fixed tests
* Matched BOR tag size to post priority tag
* Review fixes
* Added scaffolding for unrevealed BoR post
* Displayed reveal UI
* Displayed expiry timer
* WIP
* Displayed own post indicator and blur text
* restored button
* Ungrouped BoR posts
* WIP
* WIP
* DIsplayed error message on revealing
* Added last run check on mobile app cleanup job
* Cleanup
* lint fix
* i18n-fix
* Added tests
* test: add test suite for revealBoRPost function
* test: add unrevealed burn on read post test file
* feat: add tests for UnrevealedBurnOnReadPost component
* test: update UnrevealedBurnOnReadPost test with PostModel type
* test: replace toBeTruthy with toBeVisible for component visibility assertions
* test: add initial test file for expiry timer component
* test: add comprehensive tests for ExpiryCountdown component
* refactor: clean up test formatting and remove redundant test case
* fix: adjust test timing for ExpiryCountdown onExpiry callback
* test: fix timer test by advancing timers in smaller increments
* Added tests
* Updated tests
* fixed accidental change
* restored package.resolved
* WIP review fixes
* Review fixes
* Review fixes
* Fixed tests
* restored package.resolved
* WIP
* test: add test for skipping BoR post cleanup within 15 minutes
* test: add comprehensive test cases for expiredBoRPostCleanup
* WIP
* WIP
* test: add bor.test.ts placeholder file
* test: add comprehensive tests for BoR utility functions
* test: add comprehensive tests for formatTime function
* WIP
* test: add comprehensive tests for getLastBoRPostCleanupRun function
* Added tests
* removed a commented code
* post list optimization
* test: add test case for updating unrevealed burn-on-read post
* fix: handle error logging in expiredBoRPostCleanup test
* test: add test case for updateLastBoRCleanupRun error handling
* review fixes
* lint fixes
* Added WS event handling (#9320)
* Added WS event handling
* test: add burn on read websocket action test
* test: add tests for handleBoRPostRevealedEvent in burn_on_read
* Added tests
* test: add comprehensive error handling test cases for burn on read
* Added tests and error handling
* BoR post - restricted actions (#9315)
* Restricted post actions for BoR post type
* Prevent opening thread fr nBoR post
* WIP
* fix: remove redundant observable wrapping in post options
* fixed a change
* removed broken
* restored package.resolved
* Added tests
* Awaiting for last run to be set
* Added tests for validating expiry timer behaviour (#9338)
* Added tests for validating expiry timer behaviour
* No need of use event setup
* Bor ux fixes (#9336)
* WIP
* UI and delete fixes
* lint fixes
* fixed tests
* Improved mocking
* Improved test
* refactor: implement custom ExpoImage wrapper for cache control
Add ExpoImage component with automatic cacheKey/cachePath management and replace all expo-image imports across the app
* refactor(ios): convert Gekidou to CocoaPods
Migrate from Swift Package Manager to CocoaPods, add Keychain write operations, refactor notification handler to remove react-native-notifications headers, and upgrade Swift to 5.0
* npm audit
* update fastlane
* feat(ci): integrate Intune MAM for enterprise builds with strict OSS protection
Add Intune submodule, CI actions, Fastlane configuration, developer scripts, pre-commit hooks, and validation workflows to enable internal MAM builds while protecting OSS repository
* fix tests by mocking @mattermost/intune
* feat: implement Intune MAM integration with comprehensive security enforcement
Add IntuneManager, refactor SecurityManager/SessionManager for MAM policies, implement native OIDC auth flow, add biometric enforcement, conditional launch blocking, and file protection controls
* fix alerts when no server database is present
* Unify cache strategy
* fix emit config changed after it was stored in the db
* Handle Mid-Session Enrollment Detection
* fix ADALLogOverrideDisabled missing in Fastfile
* fix flow for initial enrollment
* fix and add unit tests
* enable Intune configuration for PR and beta builds, CLIENT_ID should be changed before actual release
* Update intune submodule with addressed feedback
* fix validate-intune-clean workflow
* feat(intune): add comprehensive error handling and SAML+Entra support
Add production-ready error handling for native Entra authentication with
user-friendly i18n messages, comprehensive test coverage, and support for
Entra login when server requires SAML.
* update i18n
* update intune submodule
* update build-pr token
* fix race condition between server auth and intune enrollment
* fix CI workflow to build with intune
* use deploy key for intune submodule
* set the config directly in the submodule .git
* debug injection
* try setting GIT_SSH_COMMAND
* remove action debug
* fix server url input
* match pod cache with intune hash
* Fastfile and envs
* have workflows check for intune/.git
* have ci cache intune frameworks as well
* update Fastlane to set no-cache to artifacts uploaded
* fix s3 upload
* fix pblist template
* Attempt to remove the cache control for PR uploads to s3
* use hash from commit for S3 path
* Implement crash-resilient selective wipe with automatic retry and add removeInternetPassword to Gekidou Keychain
* Fix surface errors from intune login
* fix postinstall scripts
* use cacheKey for draft md images
* remove unnecessary double await during test
* Have isMinimumLicenseTier accept valid license sku tier as target
* Add missing Auth error messages
* remove the last period for intune errors in i18n
* do not call unenroll with wipe on manual logout
* Fix tests and Intune error messages
* do not filter any SSO type regardless of which is used for Intune
* fix 412 to not retry
* fix tests, app logs sharing and share_extension avatar cache
* apply setScreenCapturePolicy on license change
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* re-apply screen capture on enrollment
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* use userData from intunr login and prevent getMe
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* Check for Biometrics and Jailbreak as we used to
---------
Co-authored-by: Eva Sarafianou <eva.sarafianou@mattermost.com>
* Agents streaming
* Fix bug and lint
* Add reasoning summaries to mobile agents
* Add tool call approval UI for mobile agents
* Add citations and annotations support for mobile agents
Implements Phase 4 from the agents mobile plan:
- WebSocket event handling for annotations control signal
- CitationsList component displaying sources below agent responses
- Collapsible sources section with source count
- Each citation shows title, domain, and opens URL on tap
- Citations persisted in post.props.annotations
- Touch-optimized UI with 44pt minimum tap targets
* Add stop and regenerate controls for mobile agents
* Add tests
* Fix tool approval buttons not updating after accept/reject
- Remove optimistic WebSocket event approach that didn't work
- Clear component streaming state on ENDED event to force switch to persisted data
- Remove delays in streaming store cleanup (500ms and 100ms)
- POST_EDITED event now properly updates UI for both accept and reject
- Remove debug console.log statements
- Fix ESLint issues (unused vars, nested callbacks, nested ternary)
* Refactor agents code: remove unused client mixin, fix bugs, and simplify logic
* Fixes
* Add CLAUDE.md
* Review feedback.
* Review feedback inline functions
* Learnings
* Address review feedback: StyleSheet.create, parent mount checks, utils
* Move to observables
* Last style fix
* Style tweaks
* Login screen for easy login
* Deep link changes
* Fix login flow
* Address feedback
* Rebranding
* Add deactivated flow
* Apply changes to the get type API
* Address feedback
* Mobile fix for MM-65084
* Changing test/setup.ts to use a deterministic fill
This avoids the ci issue about parenthesis and is more clear that this is just a fixed sequence for testing, similar to randomUUID above.
* Add setBearerToken and setCSRFToken to Client definition
* Use setClientCredentials and memoize createPkceBundle
* Restoring the preauthSecret back to the Client constructors
This came out of a response to MM-65085: Support Pre Shared Password on server connect where preauthSecret was added in the buildConfig. Claude (correctly imo) identified this as now redundant and so removed it but it is valid to keep it as well. In any case, putting it back to be consistent with ClientTracking and ClientBase.
* Rename PKCE to SAML based terminology, similar to server
* Fix lint issue with too many blank lines at eof
* Removing plain on mobile side
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* typescript and view component for permalink with user and message
* Old post edited handling in permalink
* Added test and update flag value to EnablePermalinkPreview
* Added test for permalink_preview component
* Added test for content/index.tsx for permalink
* Addressed review comments
* Unit test for missing file and review comments
* Added test to check handlePostEdited permalink sync only calls one time only
* Change TouchableOpacity to Pressable
* When user not found fetch the user from the server
* Removed the redundant test in the test for permalink_preview/index?
* ts to tsx
* Removed the circular dependency
* Address review comments
* displayname fallback
* remove permalink when permalink post is deleted
* UX review comments
* Linter fixes
* Test fixes
* Address review comments
* Minor
* Some more review comments
---------
Co-authored-by: yasserfaraazkhan <attitude3cena.yf@gmail.com>
* feat: add shared server password to server setup
* feat: allow editing the sever
* refactor: changed password -> secret, styling and tests
* e2e: draft e2e tests
* chore: lint fix
* feat: also send preauth secret header when using native share
* fix: removed unused server database migration
credentials are being stored in the keychain
* i18n: added missing english translations
* test(e2e): simplified connection tests
* test(e2e): rework
* refactor: remove setBearerToken
* chore: restore migrations the way it was
* chore: reverted file to original state
* chore: removed unneeded test and renamed password to secret
* chore: function version
* chore: updated forms i18n keys
* chore: remove if from test
* chore: unneeded variable
* fix: add missing key on object list
* refactor: swift keychain access to retrieve all credentials in one call
* revert: edit server screen
* refactor: credentials use getGenericCredential
* fix: objc code calling old method
* fix: added scroll to login screen
* chore: variable names
* fix: avoid inline styles
* fix: Improved appVersion positioning
* Update app/screens/server/form.tsx
Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
* feat: show error message on 403
* Revert "feat: show error message on 403"
This reverts commit f41630c767e10211adf1885321ceefd8a0931e32.
---------
Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
* Playbook run status update post
* Show Playbooks button in Channel Info screen only if playbooks is enabled
* Handle Playbook links
* Fetch playbook if needed
* fix playbooks migration
* fix deeplinks using parsedUrl
* update last time playbooks where fetched if no errors
* show participants for run status update post
* fix tests
* remove console.log in test
* feedback review
* wrap participants footer
* add fastlane FASTLANE_XCODEBUILD_SETTINGS_RETRIES env vars
* Add the channel options to get into playbooks (#8750)
* Add the channel options to get into playbooks
* Use playbook run id instead of playbook id
* i18n
* Fix issues and move playbooks to the products folder
* Address some tests
* Fix test
* Address design issues
* Add requested comment
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Playbooks database (#8802)
* Add lastPlaybookFetchAt to channel table (#8916)
* Add lastPlaybookFetchAt to channel table
* Add missing commit
* Use my_channel table instead
* Fix test
* Address feedback
* First implementation of playbooks API (#8897)
* First implementation of playbooks API
* Add version check
* Address feedback
* Fix test
* Add last fetch at usage and other improvements
* Simplify test
* Add sort_order, update_at and previousReminder columns (#8927)
* Add sort_order, update_at and previousReminder columns
* Remove order from the schema
* Fix tests
* Add tests
* Add websockets for playbooks (#8947)
* Add websocket events for playbooks
* Fix typo
* Add playbook run list (#8761)
* Add the channel options to get into playbooks
* Use playbook run id instead of playbook id
* i18n
* Fix issues and move playbooks to the products folder
* Address some tests
* Fix test
* Add playbook run list
* Add missing texts
* Add back button support and item size to flash list
* Address design issues
* Add requested comment
* Standardize tag and use it in the card
* Fix merge
* Add API related functionality
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Add playbooks run details (#8872)
* Add the channel options to get into playbooks
* Use playbook run id instead of playbook id
* i18n
* Fix issues and move playbooks to the products folder
* Address some tests
* Fix test
* Add playbook run list
* Add missing texts
* Add back button support and item size to flash list
* Address design issues
* Add requested comment
* Standardize tag and use it in the card
* Add playbooks run details
* Fix merge
* Add API related functionality
* Add API related changes
* Order fixes
* Several fixes
* Add error state on playbook run
* i18n-extract
* Fix tests
* Fix test
* Several fixes
* Fixes and add missing UI elements
* i18n-extract
* Fix tests
* Remove files from bad merge
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Add missing tests for playbooks (#8976)
* Add the channel options to get into playbooks
* Use playbook run id instead of playbook id
* i18n
* Fix issues and move playbooks to the products folder
* Address some tests
* Fix test
* Add playbook run list
* Add missing texts
* Add back button support and item size to flash list
* Address design issues
* Add requested comment
* Standardize tag and use it in the card
* Add playbooks run details
* Fix merge
* Add API related functionality
* Add API related changes
* Order fixes
* Several fixes
* Add error state on playbook run
* i18n-extract
* Fix tests
* Fix test
* Several fixes
* Fixes and add missing UI elements
* i18n-extract
* Fix tests
* Remove files from bad merge
* Add tests
* Fix typo
* Add missing strings
* Fix tests and skip some
* Fix test
* Fix typo
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Address feedback
* Address feedback and fix tests
* Address comments and fix tests
* Address feedback
* Address plugin changes and fix bugs
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* Viewing Files in Edit mode in mobile with ability to delete and save
* Added upload attachment to keyboard tracker view
* using state instread of use ref
* Minor
* Added tests
* intl extract
* new function getFiles
ById, batch file deletion and tests
* Files fetching in edit options and tests
* Removed DeviceEventEmitter and used React context
* Added support to check minimum required version to show edit file attachments
* resolve forward ref issue
* Minor
* memotized props for context and observe config with value
* Import fixes
* Ability to show quick action and add files to edit post
* type safety for EditPostContext
* Reverted back the post priority props
* constant shift
* Added test for QuickAction to show slashcomand
* Added test for edit_post, upload_item and upload_remove
* Added test for Edit_post_input and edit_post index
* fix the height issue between attachment and keyboard due to safeArea
* Minor: removed debugging border color
* Addressed dev review comments
* Import fixes
* Address UX comments
* Fixed props for UploadItem and remove effective Edit mode
* handled save button disabled state when uploading attachments
* handled newly added and retry file removal without alert message
* Test updated
* Added test for input_quick_action index.tsx
* Added test for not in edit mode for upload_item index
* Added test for upload_remove component when not in edit mode
* added tests for file_upload_error hook
* Added test for calling callback when in edit mode
* Test for edit post input for server version check
* MM-63935 - abac end user indicators
* rename policy variables to clearly indicate are from abac
* update attributes hook to cache processed data
* use policyEnforce property
* add missing type
* rename policy_enforced to abac_policy_enforced part 1
* add channel policy enforced type
* fix translation file
* remove unnecesary stop propagation
* use existing components
* remove unnecesary files
* fix snapshot
* update snapshot
* do not tie styles to the abac feature
* remove unnecesary margin top
* simplify props, add style for flat banner, remove unncesary index
* simplify condition, extract inline to component function
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
* MM-63935 - abac end user indicators
* rename policy variables to clearly indicate are from abac
* update attributes hook to cache processed data
* use policyEnforce property
* add missing type
* rename policy_enforced to abac_policy_enforced part 1
* add channel policy enforced type
* fix translation file
* remove unnecesary stop propagation
* MM-63935 - abac end user indicators db changes
* rename the policy name to clarify which policy does refer to
* update property name and add documentation to clarify intention
* rename policy_enforced to abac_policy_enforced db changes side
* Add Report a Problem functionality
* update cache pinned SHA version from 4.0.2 to 4.2.0
* Address feedback
* Fix tests
* Fix some issues and update kotlin coroutines version
* Fix delete file for iOS
* Bump 1 more version for coroutines
* Use rxjava instead of kotlin coroutines to avoid security issue
* Move path prefix to avoid test error
* Address feedback
* Address feedback
* Address feedback
* Use mailto on iOS
* Fix tests related to button changes
* Address feedback
* Update icon and fix onboarding buttons
* Fix test
---------
Co-authored-by: Angelos Kyratzakos <angelos.kyratzakos@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Handle biometric authentication
* jailbreak/root detection and biometric small fixes
* remove server from initializeSecurityManager and fix loginEntry
* Add screen capture prevention and other small fixes
* added unit tests to SecurityManager
* added shielded nativeID to protect views
* use MobilePreventScreenCapture instead of MobileAllowScreenshots in config type definition
* Apply Swizzle for screen capture on iOS
* Apply patch to bottom sheet to prevent screen captures
* fix ios sendReply
* Fix SDWebImage swizzle to use the correct session
* Fix potential crash on Android when using hardware keyboard
* rename patch for network library to remove warning
* add temp emm reference
* fix initializeSecurityManager tests
* fix translations
* use siteName for jailbreak detection when connecting to a new server
* fix i18n typo
* do not query the entire config from the db only the required fields
* migrate manage_apps to use defineMessages
* use TestHelper.wait in tests
* use defineMessages for security manager
* fix missing else statement for gm_to_channel
* created a TestHelper function to mockQuery and replace as jest.Mock with jest.mocked
* fix unit tests
* fix unit tests (again) and include setting the test environment to UTC
* Fix keyboard disappearing on iOS
* update react-native-emm
* refactor: Use fetchCustomAttributes for user profile custom attributes
feat: Add optional filter for empty custom attributes
simplify and fix types
add again the request time, take into account errors
test: Update fetchCustomAttributes tests for filterEmpty parameter
feat: Add sort_order to CustomAttribute in fetchCustomAttributes
feat: Add optional sort_order to CustomAttribute type
fix: Add type definition for sort_order in CustomProfileField attrs
feat: Add sorting function for custom profile attributes
docs: Add JSDoc comment explaining sortCustomProfileAttributes function
refactor: Improve sortCustomProfileAttributes with nullish coalescing and localeCompare
add order to custom profile attributes
* remove blank line
* add ordering to edit_profile screen
* keep types together
* address code review
* feat: Add support for custom profile attributes in edit profile form
feat: Add support for custom profile attributes in edit profile
refactor: Normalize whitespace in CustomAttribute type definition
fix: Resolve type mismatch for customAttributes in UserInfo interface
test: Add test for udpateCustomProfileAttributeValues method
fix typing, submit changes to server
missing files
test: Add tests for CustomProfileField component
fix naming
fix imports
fix
feat: Add field_refs hook for managing field references
feat: Make `setRef` ref parameter optional with default no-op implementation
refactor: Replace CustomProfileField with useFieldRefs for profile form
refactor: Optimize edit profile screen imports and custom attributes handling
refactor: Move custom attributes logic to remote actions in user.ts
address PR reviews
test: Add tests for custom attributes in edit profile
test: Add tests for EditProfile component with custom attributes
fix: Add UserModel type assertion to currentUser in edit profile tests
test: Add tests for ProfileForm custom attributes functionality
test: Add comprehensive tests for useFieldRefs hook
test: Add tests for fetchCustomAttributes and updateCustomAttributes
add tests
remove unneeded files
review changes
remove counter from hook
remove package.resolved
create interface for reuse of record
* fix signature type
* Add new team picker for search
* try fix result header
* fix style
* add test for team picker
* add some tests
* add tests on team list and team list item
* hide All Teams search behind FF
* use style variable for separator
* ALL TEAMS does not have a search history
* Update app/components/team_list/index.test.tsx
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* move ALL_TEAMS_ID to a constant file
* memoize the construction of team list to prevent useless allocation
* combine pushes
* move style to stylesheet
* revert changes to Package.resolved
* improve team list index tests
* add test to ensure team picker does not show for just one team
* add test to ensure the file icon filter only shows when i'm on the file tab
* improve jsx readability by making the if test positive
* add test to make sure team picket does not show if there's only one team
* test: remove snapshot and add expect that separator exists in index 0 but index 1 (#8474)
* Trigger Build
---------
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
* Network metrics
* update network-client ref
* fix unit tests
* missing catch error parsing
* Replace API's to fetch all teams and channels for a user
Update groupLabel to use a type definition
Include effective Latency and Average Speed in the metrics
Include parallel and sequential request counts
* update network library and fix tests
* feat(MM-61865): send network request telemetry data to the server (#8436)
* feat(MM-61865): send network info telemetry data
* unit testing
* fix latency vs effectiveLatency
* cleanup test
* fix failing tests
* fix spelling error
* fix failing test
* more cleanup
* fix: improve parallel requests calculation (#8439)
* fix: improve parallel requests calculation
* fix test issue
* multiple parallelGroups testing
* calculateAverageSpeedWithCategories test
* categorizedRequests in it's own describe
* clean up duplicate tests
* check for when groupLabel is non-existent
* a case when groupLabel is non-existent
* more testing with effective latency.
* resolveAndFlattenModels with a capital F
* add try..catch within resolveAndFlattenModels
* update groupLabel to fix failing lint
* fix linting issue due to unknown group label
* forgot to push changes
* fix the indentation problem again
* add env var option for COLLECT_NETWORK_METRICS
---------
Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
Co-authored-by: Mattermost Build <build@mattermost.com>
* Add test notification menu
* Reduce the minimum version for testing purposes
* Address feedback
* Add missing strings
* Address feedback
* Fix snapshots
* Bump version limit and use correct link
* Fix tests
* Fix URL issues
* MM-60705 DB migration: added update_at column to draft table for mobile
* refactor: updated docs
* refactor: reverted unwanted changes and updated default value for update_at columns
* refactor: changed the condition for excepting 0 value for update_at column