1982 Commits

Author SHA1 Message Date
Benoit Marty
a77662421c Add support for slash commands (under Feature Flag) (#6482)
* Add support for slash commands

* Update screenshots

* Rename module `slash` to `slashcommands`

* Rename `SlashCommand` to `SlashCommandService`

* Introduce MsgType in order to send text message with a different msgtype value.

* Format file and add parameter names, add default values and cleanup

* Add isSupported parameter to filter out unsupported yet commands.

* Slash commands: disable suggestions if the feature is disabled.

* Fix sending shrug command.

* Add missing test on SuggestionsProcessor

* Add tests on MessageComposerPresenter about slash command.

* Fix import ordering

* Add missing tests on CommandExecutor

* Add missing tests in MarkdownTextEditorStateTest

* Slash commands: Improve code when sending message with prefix.

* Slash commands: Add support for /unflip

---------

Co-authored-by: ElementBot <android@element.io>
2026-04-02 16:15:32 +02:00
Jorge Martin Espinosa
b340e85f83 Add floating/sticky date badge in the timeline (#6496)
* Add floating date indicator while scrolling the timeline (#6433)

* Add `FeatureFlags.FloatingDateBadge`. This enables displaying the floating date badge in the timeline as you scroll.

* Don't display the floating badge if the timeline isn't reversed. Otherwise, this will affect talkback users and break the existing navigation

* Use `TimelineItem.formattedDate()` to get the date to display. Always try finding the closest one (usually it will be just the 1st one we try).

* Align designs with iOS. Also fix shadows in fade animation by adding some paddings.

* Update screenshots

---------

Co-authored-by: Gianluca Iavicoli <gianluca.iavicoli04@gmail.com>
Co-authored-by: ElementBot <android@element.io>
2026-04-01 10:45:57 +00:00
Benoit Marty
0b7fe2f10d Cleanup 2026-03-25 16:51:41 +01:00
Benoit Marty
0aa1084fb3 Update UI of replies. 2026-03-25 15:27:36 +01:00
ganfra
d1a6363a57 Merge pull request #6342 from element-hq/feature/fga/live_location_sharing_setup
Setup live location sharing feature
2026-03-24 15:46:45 +01:00
Benoit Marty
b30a770f9b Merge pull request #6453 from element-hq/feature/bma/increaseIconSize
Increase icon size of audio and files in the timeline
2026-03-24 11:59:17 +01:00
renovate[bot]
e8a2f97cf5 fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15 (#6306)
* fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha15

* Fix deprecations

* Add bottom sheet workaround

* Fix new lint issues

* Fix and ignore broken tests

* Update screenshots

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Jorge Martín <jorgem@element.io>
Co-authored-by: ElementBot <android@element.io>
2026-03-24 11:24:07 +01:00
Benoit Marty
cb9fdc66fc Attachments: change icon size to 24 and container to 36 2026-03-24 11:01:10 +01:00
ganfra
f9f09b12f8 Merge branch 'develop' into feature/fga/live_location_sharing_setup 2026-03-24 10:17:24 +01:00
ElementBot
b5df58fcec Sync Strings (#6435)
* Sync Strings from Localazy

* Sync strings.

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2026-03-23 18:05:26 +00:00
Jorge Martin Espinosa
a2d9f241dd Fix long messages not being clickable (#6356)
* Fix long messages not being clickable

As @bmarty found out, `clip = true` causes the click event to be ignored in some cases. Since we have the shape we want to draw and we're using a custom `onDraw` modifier anyway to cut-out part of the path, we can just draw everything using the modifier and avoid using `clip = true`.

This seems to fix the issue.

* Fix clipping of images or other items that cover the bubble

* Fix borders being displayed for contents

* Extract the layer drawing logic into `drawInLayer` to simplify the inlined code. Remove redundant code, those changes are now in the `drawInLayer` block

* Workaround for lint issue: it seems like detekt can't properly detect usages in content receivers

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-03-23 18:11:55 +01:00
Benoit Marty
93ab9f43dc Merge pull request #6322 from element-hq/feature/bma/iterateDesignOnAttachment
Design iteration on file attachment in the timeline
2026-03-23 14:37:54 +01:00
Gianluca Iavicoli
a30aed6a21 Fix keyboard not auto-opening when editing a message (#6412)
* fix: auto-open keyboard when editing a message

* fix: show keyboard on focused editor view instead of root view
2026-03-23 10:54:59 +01:00
bxdxnn
cb228e47b9 Fix room member not tappable in a Thread (#6416) 2026-03-19 14:23:10 +01:00
Benoit Marty
0fbed400eb Sync string again. 2026-03-16 14:54:06 +01:00
bmarty
3a0e01b63d Sync Strings from Localazy 2026-03-16 00:42:32 +00:00
ganfra
91c46ec971 Remove duplicate location content and reorder Live mode 2026-03-13 15:50:33 +01:00
ganfra
02b3c61edc Fix quality! 2026-03-12 21:12:52 +01:00
ganfra
fb775833c7 Code cleanup 2026-03-12 12:35:46 +01:00
Benoit Marty
41c337668f Improve preview by adding a background color. 2026-03-11 15:43:15 +01:00
Benoit Marty
4c8ec04954 Iterate on file attachment rendering in the timeline. Closes #6319 2026-03-11 15:30:15 +01:00
ganfra
60b262a19e Fix compilation 2026-03-09 21:19:57 +01:00
ganfra
046d135e4b Introduce LiveLocationContent for the timeline (needs sdk) 2026-03-09 20:54:01 +01:00
ganfra
b4cf8c274e Make sure we can display both Live and Static locations in ShowLocation 2026-03-09 20:54:01 +01:00
ganfra
8c64f704cb Rename send location to share location 2026-03-09 20:54:01 +01:00
Valere Fedronic
477c482810 Merge branch 'develop' into valere/rtc/voice_call 2026-03-09 17:18:55 +01:00
ElementBot
2ad55f4bc6 Sync Strings (#6302)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-03-09 10:38:07 +01:00
Valere
ea12fe436b review: consistency use isAudioCall everywhere (instead of voiceOnly) 2026-03-06 12:19:05 +01:00
Valere
283756db70 review: fix bad usage of modifier 2026-03-06 12:15:20 +01:00
Valere
b51a1a7c82 fix test for voice call button 2026-03-05 10:09:10 +01:00
Valere
f805dde0f3 on show voice call only option in DMs 2026-03-04 15:08:24 +01:00
Valere
04a9c677fb Merge branch 'develop' into valere/rtc/voice_call 2026-03-04 13:46:54 +01:00
Valere
d37e32834b rename voiceIntent to isAudioCall 2026-03-04 11:10:40 +01:00
Benoit Marty
a8c66381f2 Sync compound tokens https://github.com/element-hq/compound-design-tokens/releases/tag/v6.10.1 (#6273)
* Import compound token v6.10.1

./tools/compound/import_tokens.sh -b v6.10.1

* Use stop icon from Compound.

* Fix compilation issue.

* Use gradient color in ComposerAlertMolecule. Fixes #6192

* Update screenshots

* Remove ComposerAlertLevel.Default (not in the design).

* Update screenshots

---------

Co-authored-by: ElementBot <android@element.io>
2026-03-03 14:42:27 +01:00
Benoit Marty
1f69958dab Merge pull request #6035 from element-hq/fix/remove-fragment-part-in-mxc-urls
Add `MediaSource.safeUrl` for removing invalid fragment part from URLs
2026-03-03 11:57:49 +01:00
Valere
ec420332c3 WIP: Support using Element Call for voice calls in DMs 2026-03-03 11:50:22 +01:00
ElementBot
5bcaad1e81 Sync Strings from Localazy (#6269)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-03-02 14:54:50 +01:00
Benoit Marty
723cfc77ff Use gradient color in ComposerAlertMolecule. Fixes #6192 2026-03-02 13:03:47 +01:00
Jorge Martín
cdd850d4dd Apply suggestion:
- Added `MediaSource.safeUrl` property replacing `withCleanUrl` method.
- Made `url` private so it can't be used externally.
- Reverted code in `CoilMediaFetcher`
- Also add tests
2026-02-27 09:52:17 +01:00
Benoit Marty
783585bd01 Merge pull request #6194 from vmfunc/feature/audio-focus-voice-recording
request audio focus when recording voice messages
2026-02-23 13:35:57 +01:00
vmfunc
bddc5a63f4 finish recording gracefully when audio focus is lost
if something else grabs focus mid-recording (phone call, etc), stop
the recording and keep the partial result in preview state instead
of silently recording garbage

Signed-off-by: vmfunc <celeste@linux.com>
2026-02-12 18:39:40 +01:00
vmfunc
7bd157f032 add RecordVoiceMessage audio focus requester for recording
separates recording from playback focus - willPausedWhenDucked is false
for recording so notification sounds don't interrupt mid-recording

Signed-off-by: vmfunc <celeste@linux.com>
2026-02-12 18:39:39 +01:00
vmfunc
43f729414b request audio focus when recording voice messages
Signed-off-by: vmfunc <celeste@linux.com>
2026-02-12 16:28:37 +01:00
Benoit Marty
0368aa8687 Fix warning 2026-02-12 14:28:28 +01:00
Benoit Marty
b0a4ce44f0 Merge pull request #6048 from element-hq/renovate/app.cash.paparazzi-2.x
chore(deps): update plugin paparazzi to v2.0.0-alpha04
2026-02-10 16:42:54 +01:00
Jorge Martin Espinosa
1ec39821af Ensure aspect ratio of images in the timeline is restricted (#6168)
* Ensure aspect ratio of images in the timeline is restricted

Otherwise, this could cause a crash in Compose since the width and height values could become way too large.
2026-02-10 14:38:55 +00:00
Benoit Marty
8cc2d77964 Fix issues detected by Paparazzi 2026-02-10 15:30:14 +01:00
Karsten Knappe
a87250066e Merge remote-tracking branch 'kknappe/fix/start-voice-recording-when-permission-is-granted' into fix/start-voice-recording-when-permission-is-granted 2026-02-04 09:01:04 +01:00
Karsten Knappe
c082141b4a style: removes unwanted whitespace in DefaultVoiceMessageComposerPresenter 2026-02-04 09:00:56 +01:00
Karsten Knappe
10bc15d647 Merge branch 'develop' into fix/start-voice-recording-when-permission-is-granted 2026-02-03 11:23:26 +01:00