* Add support for Channel Summarization, inline citations
* Add support for Channel Summarization, inline citations
* Revert package-lock to master
* i18n fixes
* e2e fixes
* Remove a few tests as they're already covered by unit
* Ensure channel summary is offline compatible
- Add channel persistence check before switching to summary channel
- Fetch and persist channel/membership if not in database
- Fix TypeScript error handling for unknown error types
- Update tests to properly mock DatabaseManager
* Fixes
* Fix expo-image patch file - remove accidental build artifacts
The patch file was accidentally corrupted with build artifacts from
node_modules/expo-image/android/build/ including .dex files, results.bin,
and Oops.rej. This was causing the 16KB page size compatibility patch
to fail during CI.
* Fix iOS date picker spacing and placeholder text
- Increase snap points on iOS to accommodate inline date picker spinner
- Update AI prompt placeholder to "Ask AI about this channel"
* Fix padding
* Address PR review feedback from larkox
- Fix i18n: use defineMessages pattern instead of separate labelId/defaultLabel
- Replace custom SummaryOptionItem with existing OptionItem component
- Add ScrollView for scrollability on smaller phones
- Extract AgentItem to separate file, use FlatList for virtualization
- Extract DateInputField component, unify DateTimePicker, add useCallback
- Consolidate types into app/products/agents/types/api.ts
- Remove unnecessary fetchPostById (WebSocket handles post delivery)
- Use jest.mocked() instead of 'as jest.Mock' for type safety
- Improve transform.ts: use urlParse, add post ID length constraint,
validate internal links with serverUrl parameter, add subpath support
- Add transform.test.ts cases for external links, subpaths, URL encoding
- Remove unnecessary Platform.select in inline_entity_link
- Revert video_file.tsx and prefetch.ts to use cachePath (patches include types)
* Update en.json with new channel summary option translations
Added missing translation keys for the defineMessages pattern used
in channel summary sheet options.
* Fix regex patterns and add negative assertions per PR review
- Use exact 26-character constraint in post ID regex instead of
permissive pattern followed by validation
- Use specific identifier pattern in channel regex instead of [^/]+
- Remove unused ID_PATH_PATTERN and IDENTIFIER_PATH_PATTERN imports
- Add negative assertions to processInlineEntities tests to verify
mutual exclusivity of link vs inline_entity_link nodes
* Add test cases for non-internal URLs and escaped slashes
Per PR review feedback, added tests for:
- Non-internal URLs with similar shape to internal links
- URLs with escaped slashes (%2F) in various positions
* Improve UI consistency for channel summary date picker and AI input
- Add focus state (border highlight) to AI prompt input on Ask Agents sheet
- Add active state highlight to Start/End date fields in date range picker
- Increase back button tap area on date range picker using hitSlop
- Fix date picker theme mismatch by setting themeVariant based on app theme
- Apply initial date when opening picker so value matches displayed date
Co-authored-by: Cursor <cursoragent@cursor.com>
* Gate AskAgentsOption behind agents plugin availability check
Add a plugin availability check for the "Ask Agents" feature that
mirrors the webapp's useGetAgentsBridgeEnabled hook. Calls
GET /api/v4/agents/status on WebSocket connect and plugin status
change events, stores the result in an RxJS BehaviorSubject
ephemeral store, and conditionally renders the AskAgentsOption
component based on the plugin being available.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix quick actions tests and default date range to last 7 days
Mock useAgentsConfig in quick actions tests so the Ask Agents button
renders when agents plugin availability is gated. Default the date
range picker to the last 7 days instead of empty.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Address enahum's review feedback on channel summaries PR
- Remove pluginEnabled=false on network error in agents_status
- Use enableDynamicSizing for channel summary bottom sheet
- Extract channel navigation logic to switchToChannelByName action
- Move icon color to stylesheet, null guard to parent in InlineEntityLink
- Replace custom URL parsing with parseDeepLink in transform.ts
- Reorder channel membership check before API request in channel_summary
- Use FormattedText, FormattedDate, FloatingTextInput consistently
- Use getErrorMessage for proper intl error handling in alerts
- Simplify agent_item to always use expo-image, memoize styles
- Gate Ask Agents item count on agentsEnabled in header.tsx
- Clean up CLAUDE-IOS-SIMULATOR.md per review suggestions
- Update tests to match new behavior
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix i18n extraction for date_range_picker translated strings
Add defineMessages declarations so the i18n extraction tool can find
the translated string IDs passed through custom props to DateInputField.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix agent profile image not rendering on agent selector
* Reduce channel summary bottom sheet max height from 80% to 50%
The 80% snap point created too much whitespace below the options.
50% fits the main content well while still leaving room for the
iOS date picker spinner when the custom date range view is shown.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Adjust channel summary bottom sheet max height to 65%
50% was too short, cutting off the iOS date picker spinner.
65% provides enough room for the date range view with spinner
while keeping the main options view compact.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Use platform-specific max height for channel summary bottom sheet
iOS uses 65% to accommodate the inline date picker spinner.
Android uses 50% since its modal date picker doesn't need extra space.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Reduce height on android slightly
* Final tweaks for spacing
* Address PR review feedback from larkox and pvev
- Use MessageDescriptor props instead of separate id/defaultMessage strings in DateInputField
- Extract hitSlop constant outside component for render stability
- Normalize date range to UTC start/end of day to avoid timezone data loss
- Replace hardcoded '#FFFFFF' with theme.buttonColor
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Mattermost Build <build@mattermost.com>
Co-authored-by: Cursor <cursoragent@cursor.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>
* 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
* 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
* Changed the Edited text style in the post from (edited) to icon + Edited
* 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
* linter fixes
* Changed font size from 16 to 14px for edited
* separated common component and test
* Removed the margin styles from the text as it is not been applied.
* removed the duplicate code from rebase
* MM-61148 Rewrite table parsing based off cmark-gfm
* MM-61148 Add better error handling to Markdown code
* Use logError instead of console.error
* Switch back to published release
* Update import paths
* fix: disables the gallery click on images inside a markdown link
* feat: removing the logic for acknowledging children that is inside link
* chore: renaming for consistency
* MM-53107 Add limit to Markdown nodes
* Update commonmark to published version
* Rename field to camel case for consistency
* Update Markdown tests for removed children
* Fix permalink to not joined channels and to not fetched posts.
* i18n-extract
* Implement as designed
* Revert unintended change
* Minor fix and fix svgs
* updated svg to fix masking problems and colors
* Fix lint
* Address feedback
* Update join_public_channel.tsx
fixed public channel svg
* Update join_public_channel.tsx
* Update join_private_channel.tsx
* Address feedback
Co-authored-by: Matthew Birtch <mattbirtch@gmail.com>
* User profile
* Access User Profile from reaction list
* Fix threads participants list & open user profile on tap
* Extra bottom padding
* Profile long press tutorial
* Adjust heights
* Reduce label margin from 12 to 8
* Channel Info screen
* Delete the channel & related data when archiving while viewing archived channels is off
* feedback review
* UX feedback
* Add missing isOptionItem prop
* Fix Markdown when theme changes / latex correct font color
* Do not fetch emojis that are unicode
* Check for unicode emoji before searching for custom emoji
* Initial attempt at search highlighting for Markdown
* Remove fonts from highlighted text so that it can be bolded
* Add initial task list support
* Render markdown checkbox
* Switch to Commonmark fork
* Use searchPatterns prop
* searchPatterns prop at post level
* Update app/components/markdown/transform.ts
Co-authored-by: Jason Frerich <jason.frerich@mattermost.com>
Co-authored-by: Harrison Healey <harrisonmhealey@gmail.com>
Co-authored-by: Jason Frerich <jason.frerich@mattermost.com>