* Fix emoji picker section goes blank when User chooses Skin tone
* Removed the platform check
(cherry picked from commit a3dc1a1bdc)
Co-authored-by: Rajat Dabade <rajatdabade1997@gmail.com>
* Initial setup for new keyboard
* fix the offset calculation onMove by adding isKeyboardFullyOpened
* Done with the keyboard handling implementation
* Handled keyboard focus and blured state using context
* Added default height for input container
* Android support
* Tablet state handling
* Fix for refreshing offset in list
* Created a default context for mention post list
* Fix linter errors
* Fix tests
* Minor
* Fix the height issue for tablet view
* Review comments
* Dependency fix
* Reveiw comment
* keyboard animation only enabled with screen on top navigation
* added tests
* Added extra keyboard component for emoji picker (#9328)
* Added extra keyboard component
* handled swipe geature for extra keyboard
* scroll to bottom visible on emoji picker
* Check for stale event for keyboard geature area
* fix keyboard stale event for mid-gesture change swipe direction
* Closing emoji picker when message priority is opened
* changing to thread view closes emoji picker
* Close emoij picker and keyboard when attachment icons are clicked
* handle android emoji picker behaviour
* Remove emoji picker code
* fix tests
* Address reviev comments
* Test fixes
* usePreventDoubleTab for race condition and corrected comment on isInputAccessoryViewMode flag
* File attachments option in bottom sheet quick action (#9331)
* Added extra keyboard component
* handled swipe geature for extra keyboard
* File attachments option in bottom sheet quick action
* Updated tests
* i18n
* fix test
* Added tests
* Review comment
* fix tests
* Integrated Emoji picker to Extra keyboard component. (#9339)
* Added extra keyboard component
* handled swipe geature for extra keyboard
* scroll to bottom visible on emoji picker
* Fix the post input container height change issue
* Added emoji picker with search functionality
* keyboard height not recorded fallback to default height, set search to false closing emoji picker
* fix search funcitonality in android
* scroll to end bottom dismissed with pressed
* Fixed the scroll issue for android
* fix the flickering post input issue
* Wired up the emoji picker
* Added keyboard and spaceback in emoji picker
* intl extract
* initial cursor position and simple calculation review comment
* separated grapheme to utils file
* Review comments
* nitpick
* Fix the bottom safe area and navigation stack restore fix
* Fix test
* disabled emoji picker in edit post screen
* change the name of the variable to name it clarier
* fix the tab gap issue in andriod
* disabled the emoji skin tone change on andriod
* fix the input container jump issue
* fix the failing test
* UX review
* added white space after the attachment icon
* When @ or / is press open keyboard on andriod also fix the scroll issue when keyboard is open
* back bottom closes emoji picker and opening keyboard jump fix
* reverted code
* fixed the flickering issue of input and scroll position fix
* Fix the gap issue in thread
* fix the warning reaminated issue when opening a channel
* Fix the extra space issue between input and emoij picker
* Minor fix for extra space between input and emoji picker
* Fix thread view bottom safe area and gap between keyboard and searched emojis
* Fix the keyboard issue in tablet
* Fix the warning issue react-native-keyboard-controller
* Fix tests
* Fix the tablet search hight issue
* Replaced the ExtraKeyboardProvider with KeyboardProvider from rnkc for permalink
* Bottom sheet jump issue resolved
* Search do not close after selecting emoji in search list
* Added the bottom inset height in search emoji for android
* fix buid issue
* Fix the cancel state to emoji picker
* use portals for autocomplete
* fix permalink extra space in post list
* Portal only for android
---------
(cherry picked from commit e39b27be7e)
Co-authored-by: Rajat Dabade <rajatdabade1997@gmail.com>
Co-authored-by: Rahim Rahman <rahim.rahman@mattermost.com>
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
* 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
* Handled the case of own BoR post not relying on post.metadata
* 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
* feat(MM-65145): low connectivity manager
* forgot localization
* connection banner showing limited network connectivity
* network_performance_manager test
* adding some test related to network performance monitoring
* add comment about count-based sliding window
* component and hook tests
* clean up some code based on review.
* changes based on CP review
* feat: show potential pre-auth secret error on server create
* chroe: address comments
* chore: updated message
* feat: read response header to check error source
* fix: i18n
* chore: rename pre-auth to just auth
* Add show/hide toggle to authentication secret field
Modified server form to match login form UX with password visibility toggle
* Add preauth secret field to edit server with validation and auto-open options
* chore: added missing 18n
* Increase form padding for better error message spacing
* Fix preauth secret removal when not provided
* Change edit server title from 'Edit server name' to 'Edit server'
* Add custom ping function and improve validation in edit server
* chore: revert en_AU
* chore: improved error message
* feat: animate advanced options
* fix: auth secret label being cropped
* refactor: doPing
* [MM-66420] Add missing tests for playbooks
* i18n-extract
* Update message keys to more accurate ones
* Update status update post to use a more standard error handling and fix linter bugs
* Add post-merge tests and address feedback
* Fix failing test
* Address feedback
* Latex styling update for incorrect baseline for the respective mobile OS
* Fixed style formatting causing the pipeline to fail
* Updated Platform OS method to Platform Select for latex styling
* feat: implement floating banner system
- Add FloatingBanner component with gesture support and keyboard awareness
- Implement BannerManager singleton for banner lifecycle management
- Create floating banner screen with SafeAreaProvider integration
- Add comprehensive banner configuration types and positioning
- Update Banner component to use modern gesture handling
- Enhance BannerItem with improved typography and spacing (40px height)
- Add ConnectionBanner improvements with better sizing
- Remove ConnectionBanner from channel list (moved to floating system)
- Update screens constants (remove FLOATING_BANNER - handled as overlay)
- Add i18n support for limited network connection message
The system provides:
- Auto-hide functionality with customizable duration
- Position-aware rendering (top/bottom with keyboard adjustment)
- Tablet-specific offset handling
- Swipe-to-dismiss with configurable thresholds
- Custom component support alongside default banner items
- Comprehensive test coverage with device-specific scenarios
* docs: add floating banner system documentation and cleanup
- Add comprehensive floating-banner.md with architecture diagrams
- Remove incompatible connection_banner/index.ts file
- Update device.ts hooks for better keyboard handling
- Simplify screens/index.tsx floating banner registration
- Update test/setup.ts to remove deprecated keyboard mocks
- Clean up keyboard height logic and ESLint issues
The documentation covers:
- System architecture and component relationships
- API reference and usage patterns
- Performance considerations and best practices
- Integration points and troubleshooting guide
- Comprehensive testing strategy
All tests now pass with the updated setup.
* fix issue with translation file
* some self cleanup.
* renamed index.tsx => Banner.tsx
* creaete meaningful tests for Banner component and all the hooks.
* fix tests
* cleanup based on initial review by AI
* dismissible was set to true, changing to what was configured.
* making title and message optional
* addressed some comments in PR
* more fixes based on PR review.
* added future enhancement
* dismissOverlay will be awaited
* delay dismissing overlay so we don't have to show a new one all the time
* make the banner stackable
* Fix issue with last banner dismissal delayed by 2s
* update floating-banner test
* clean-up based on review by @enahum
* fix failing test
* fix failiing tests
* rename confusing var
* fixed issue with swipe not working on android
* fix issue w/ android not registering touch events behind the overlay
* fix failing test
* animate the banner moving up when bottom banner first appear.
* removed unused functions and update tests
* add useMemo and useCallback
* update jsdoc to say dismissable is default true
* fix failing test
* Adding the notification disabled notice
* Change the color of the icon on the section notice to red.
* Fix Linter Issues
* Add new line due to CI failure
* Adressing pull request comments and change requests.
* i18 Strings alphabetical order
* result of `npm run i18n-extract`
* Add a couple more tests for notifications
* Remove two unneeded styles
* fix linter issue
- Moved STATUS_COLORS declaration outside of the conditional block for better readability.
- Updated hexColor assignment logic to ensure a default color is applied when buttonColor is not provided.
- Adjusted customButtonStyle and customButtonTextStyle to use the updated hexColor logic.
* 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
* File attachment in permalink preview component
* Fix the width and height of the image in permalink
* Added gredient when exceeds height of permalink container
* Minor
* Updated tests
* Minor
* Review comments
* Minor review comments
* type fixes
* Review comments
* Minor
* Mention ability in permalink preview
* Support for external link in permalink
* Handle device not connected update permalink post
* test fixes
* Address review comments
* Minor
* Merge fixes
* Addressed review comments
* Fix content.test.tsx after permalink branch merge
- Updated test expectations to use embedData prop instead of post prop
- Fixed assertions to match the new PermalinkPreview API
- All content tests now pass
* review comments
* Review comments
* Some more review comments
* Minor
* Fixed the undefined issue for opengraph component metadata
* More fixes
* Navigation for permalink
* Tablet fixes
* type chech for site name
* linter fixes
* UX review and remove show more height not require
* Fix tests
* Fixed the navigation issue for DM's
* Minor fixes due to merge main
---------
Co-authored-by: yasserfaraazkhan <attitude3cena.yf@gmail.com>
* Add select user screen to select owner and task assignee
* Fix i18n
* Add tests
* Address feedback
* Fix test
* Address UX feedback
* Fix test
* Put the no assignee button inline with the search
* 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
* File attachment in permalink preview component
* Fix the width and height of the image in permalink
* Added gredient when exceeds height of permalink container
* Minor
* Updated tests
* Minor
* Review comments
* Minor review comments
* type fixes
* Review comments
* Minor
* Mention ability in permalink preview
* Support for external link in permalink
* Handle device not connected update permalink post
* test fixes
* Address review comments
* Minor
* Merge fixes
* Addressed review comments
* Fix content.test.tsx after permalink branch merge
- Updated test expectations to use embedData prop instead of post prop
- Fixed assertions to match the new PermalinkPreview API
- All content tests now pass
* review comments
* Review comments
* Some more review comments
* Minor
* Fixed the undefined issue for opengraph component metadata
* More fixes
* type chech for site name
* linter fixes
* UX review and remove show more height not require
* Fix tests
* Review nitpick and fixes
* Minor UX changes
---------
Co-authored-by: yasserfaraazkhan <attitude3cena.yf@gmail.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
* File attachment in permalink preview component
* Fix the width and height of the image in permalink
* Added gredient when exceeds height of permalink container
* Minor
* Updated tests
* Minor
* Review comments
* Minor review comments
* type fixes
* Review comments
* Minor
* Address review comments
* Minor
* Merge fixes
* Addressed review comments
* Some more review comments
* linter fixes
* UX review and remove show more height not require
* Fix tests
* Review fixes, dev and ux
---------
Co-authored-by: yasserfaraazkhan <attitude3cena.yf@gmail.com>
* Common component for upload item for main application and share extension
* Addressed review comments
* intl fixes
---------
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>
* 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