717 Commits

Author SHA1 Message Date
enki 9d14530660 Blap Android port: branding, ntfy push, spoilers, Discord-style home, EC fork
Sonar / Sonar Quality Checks (push) Has been cancelled
Code Quality Checks / Search for forbidden patterns (push) Has been cancelled
Code Quality Checks / Search for invalid screenshot files (push) Has been cancelled
Code Quality Checks / Search for invalid dependencies (push) Has been cancelled
Code Quality Checks / Konsist tests (push) Has been cancelled
Code Quality Checks / Compose tests (push) Has been cancelled
Code Quality Checks / Android lint check (push) Has been cancelled
Code Quality Checks / Detekt checks (push) Has been cancelled
Code Quality Checks / Ktlint checks (push) Has been cancelled
Code Quality Checks / Doc checks (push) Has been cancelled
Code Quality Checks / Check shell scripts (push) Has been cancelled
Code Quality Checks / Run zizmor (push) Has been cancelled
Code Quality Checks / Project Check Suite (push) Has been cancelled
Create release App Bundle and APKs / Create App Bundle (Gplay) (push) Has been cancelled
Create release App Bundle and APKs / Create App Bundle Enterprise (push) Has been cancelled
Create release App Bundle and APKs / Create APKs (FDroid) (push) Has been cancelled
Test / Runs unit tests (push) Has been cancelled
Post-release / post-release (push) Has been cancelled
Everything from port rounds 1-5 plus today's fixes, on top of upstream develop:

- Branding: Blap name/id (lol.utn.blap), purple #7c66e0 accent (both colorGreen*
  and colorAlphaGreen* Compound ramps remapped), Hanken Grotesk, squircle
  avatars, five-dot notification icon, de-branded strings across all locales
- Push: new libraries/pushproviders/ntfy module — FGS websocket to an ntfy
  server's Matrix gateway, no Google. Includes base64 payload decode, restart
  on boot/update/app-open, background-FGS-start crash guard, and a proactive
  battery-optimization banner (Doze kills the socket without the exemption)
- Spoilers (MSC2010, interops with Blap desktop 1.0.3): render + tap-to-reveal,
  Discord ||text|| send syntax, SPOILER_ filename convention for media both ways
- Home: Discord-style space rail, client-side room-list sections, DM-first sort
- Calls: embedded Element Call fork 0.20.3 assets (camera-off joins, bottom strip)
- Threads on by default; RTC ping timeline items hidden; reply-quote restyle
- URLs now point at git.utn.lol/enki/blap (was codeberg); version 26.07.2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 12:56:15 -07:00
ElementBot 03304b3ece Sync Strings (#7192)
* Sync Strings from Localazy

* Update screenshots

---------

Co-authored-by: jmartinesp <480955+jmartinesp@users.noreply.github.com>
2026-07-13 12:21:55 +02:00
ganfra 96d443e443 Fix compilation warning 2026-07-09 13:51:37 +02:00
ganfra fad8dce166 Address PR review comments 2026-07-08 18:16:13 +02:00
ganfra d25362dd36 Merge branch 'develop' into feature/fga/set_user_status 2026-07-08 17:59:30 +02:00
ganfra bfe21698f2 Tweak some UserStatusView ui 2026-07-02 18:04:43 +02:00
Aliaksandr Daroshchanka b8752152cf Add read all messages feature (#7049)
* Add read all messages feature: read all messages using Client.markAllRoomsAsRead() method

* Move the 'mark all rooms as read' footer as part of the list item

* Replace `showMarkAllRoomsAsReadConfirmation` and its associated event with `MarkAllRoomsAsRead(val needsConfirmation: Boolean)` and a `AsyncAction.Confirming` state

---------

Co-authored-by: Jorge Martín <jorgem@element.io>
2026-06-30 11:43:27 +02:00
ElementBot 46460e1c27 Sync Strings (#7115)
* Sync Strings from Localazy

* Update screenshots

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-29 14:09:36 +02:00
ganfra 29b8068d4a Address quality issues on user status 2026-06-25 12:32:32 +02:00
ganfra 4a143c1053 Format code 2026-06-25 12:32:32 +02:00
ganfra be872e6bec Move user status section below multi-account in preferences 2026-06-25 12:32:32 +02:00
ganfra 061fd82c1a Clip avatar to a circle on the user status screen 2026-06-25 12:32:32 +02:00
ganfra d29dad40f9 Extract custom status text max length into a constant 2026-06-25 12:32:32 +02:00
ganfra dd24e14cf6 Gate user status behind UserStatus feature flag 2026-06-25 12:32:32 +02:00
ganfra 1cfd3e4dfb Improve UI/UX for setting status 2026-06-25 12:32:32 +02:00
ganfra 553a4785e1 Rename Event 2026-06-25 12:32:32 +02:00
ganfra 2a0e41652a Match row heights: add vertical padding to plain text rows to align with TextField row 2026-06-25 12:32:32 +02:00
ganfra 078b63fd7c Move preview cases to UserStatusStateProvider, use @PreviewParameter in view 2026-06-25 12:32:32 +02:00
ganfra 889fd08b5c Fix button width jitter using rememberTextMeasurer to derive stable min-width 2026-06-25 12:32:32 +02:00
ganfra 167c1ced80 Add clear button in custom status text field, toggle Cancel/Save on text presence 2026-06-25 12:32:32 +02:00
ganfra 57617a362a Add TextFieldState overload to design system TextField, use it in UserStatusView 2026-06-25 12:32:32 +02:00
ganfra 73a8a3d5d8 Use TextFieldState in CustomInput state for proper MVI text handling 2026-06-25 12:32:32 +02:00
ganfra eeaaac2969 Move custom status emoji/text into CustomInput state (MVI) 2026-06-25 12:32:32 +02:00
ganfra 7309e49286 Wire UserStatusPresenter and UserStatusRow into PreferencesRoot 2026-06-25 12:32:32 +02:00
ganfra 6c34d647ca Wire UserStatusPresenter and UserStatusRow into PreferencesRoot 2026-06-25 12:32:32 +02:00
ganfra af5a237b4a Add UserStatusView composables with previews 2026-06-25 12:32:32 +02:00
ganfra 0528b787c9 Add UserStatusPresenter with full test coverage 2026-06-25 12:32:31 +02:00
ganfra eca45b574e Add UserStatusState and UserStatusEvent 2026-06-25 12:32:31 +02:00
ganfra 42966b393f Add user status string resources and PredefinedUserStatus enum 2026-06-25 12:32:31 +02:00
ElementBot 932fdaeb2c Sync Strings (#7071)
* Sync Strings from Localazy

* Sync strings again.
Restore `screen_notification_settings_sound_system_default`

---------

Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
Co-authored-by: Benoit Marty <benoit@matrix.org>
2026-06-22 15:37:33 +02:00
Benoit Marty c430877d87 Ensure Robolectric test are run using API 36 until the library support API 37. 2026-06-18 12:18:32 +02:00
ElementBot d39b208099 Sync Strings from Localazy (#7021)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-16 12:59:45 +02:00
ElementBot 5a4c0b5d58 Sync Strings from Localazy (#6986)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-08 14:33:40 +02:00
ElementBot 81ed41d580 Sync Strings (#6921)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-06-01 09:52:14 +02:00
Benoit Marty a8e1274786 Rename parameter onSoundPicked to onSoundPick. 2026-05-29 15:01:45 +02:00
Benoit Marty c88edc9621 Notification settings: pick custom sounds for messages and call ringtones (#6897)
* Notification settings: pick custom sounds for messages and call ringtones (#6702)

* Feature: add notification sound settings for messages and calls

* Add sound not available banner, accessibility checks

* Fix build and Konsist convention violations

- libraries:preferences:api now uses io.element.android-compose-library
  so NotificationSound's @Immutable annotation can resolve, matching the
  pattern in libraries:matrix:api.
- Rename SoundUnavailableBannerStateProvider to
  NotificationSoundUnavailableStateProvider so the class name contains
  the parameter type as required by KonsistClassNameTest.

* Suppress LargeClass on RoomListPresenterTest

The three new sound-unavailable tests pushed the class past Detekt's
default LargeClass threshold. Matches the suppression pattern already
used on five presenter test classes under features/messages/impl/test.

* NotificationSettingsView: guard ringtone-picker launchers in inspection mode

rememberLauncherForActivityResult requires a LocalActivityResultRegistryOwner,
which Paparazzi-driven preview snapshot tests don't provide, causing
NotificationSettingsViewPreview to throw IllegalStateException for every
preview parameter. Extract the click handlers into a helper that returns a
no-op when LocalInspectionMode.current is true; the runtime path is unchanged.

* Handle unresolved notification sounds mid session

* Quality checks, refactor mid session error ui

* Suppress detekt LargeClass on NotificationSettingsPresenterTest

* Remove notification sound resilience layer, replace with file copy

* Reselect element sound option, code cleanup

* Add element fade notification sound option

* Fix new file headers

* Revert to flowOf(Unit) for announcement service

* Add ringtone picker dialog to match message selector

* Update strings in conjunction with ios

* Update test to reflect new string

* Sync strings.

* Update screenshots

* Fix test

* Remove not properly located translations.
This will be fixed in the next String sync.

* Fix test on CI

---------

Co-authored-by: Jenna Vassar <jenna.vassar@toptal.com>
Co-authored-by: ElementBot <android@element.io>
2026-05-28 16:54:12 +02:00
Benoit Marty 2798244975 Remove unused import 2026-05-28 09:54:03 +02:00
Benoit Marty 5ebeddfe2e Revert change 2026-05-28 09:54:02 +02:00
Jorge Martín 97de57fd79 More fixes 2026-05-28 09:54:01 +02:00
Jorge Martín bf1462f9b1 WIP 2026-05-28 09:54:00 +02:00
ElementBot 0aaa80cbdc Sync Strings from Localazy (#6856)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-05-26 08:05:07 +00:00
ganfra 6cc2e59436 Merge pull request #6811 from element-hq/feature/live_location_remove_feature_flag
Remove LiveLocationSharing feature flag
2026-05-19 09:16:18 +02:00
ganfra 828337b343 Remove LiveLocationSharing feature flag 2026-05-18 20:25:36 +02:00
bmarty dcc67f9fc6 Sync Strings from Localazy 2026-05-18 00:57:56 +00:00
Benoit Marty 3ca06d71ef Rename keys on Localazy and add Black theme. 2026-05-12 17:57:55 +02:00
Benoit Marty 2d4d4cdf25 Merge pull request #6720 from element-hq/renovate/major-metro
Update metro to v1 (major)
2026-05-12 15:56:18 +02:00
Jorge Martin Espinosa 11476c73cf Adapt to new DM definition changes in the SDK (#6748)
* Set `DmRoomDefinition.TwoPeople` in `ClientBuilder`. This applies the 'direct and with at most 2 non-service members' rule to what the SDK should consider a DM.

* Map `RoomInfo.isDm` from the SDK

* Map `NotificationData.isDm` from `NotificationInfo.roomInfo.isDm`

* Remove `RoomIsDmCheck` file as its extension functions are now redundant. Move `Room.isDm` helper function to `BaseRoom`.

* Map `isDm` in `SpaceRoom` from the SDK too

* Replace `isDirect` with `isDm` where possible

* Map `RoomMember.isServiceMember` from the SDK and use it to tell apart normal members of a room from service members (i.e. `RoomMembersState.getDirectRoomMember`)
2026-05-11 17:22:16 +02:00
Jorge Martin Espinosa 1ffc09e046 Stop removing the logs dir when clearing cache (#6765) 2026-05-11 16:55:40 +02:00
ganfra e49e183178 Feature : share live location (#6741)
* First live location sharing sending implementation

* Simplify logic around canStop sharing

* Add some debug logs around LiveLocationSharingService

* Add LiveLocationException

* Expose beaconId to identify the current share

* Throttle live location instead of debouncing

* Keep sync alive when sharing live location

* Improve LiveLocation sharing

* Show LiveLocationDisclaimer

* Read minDistanceUpdate in LiveLocationSharingService

* Set minDistanceUpdate in AdvancedSettings

* Display banner in room when sharing live location

* Fix tests around LiveLocationSharing

* Ensure shares are properly restarted/stopped when app is re-launched

* Ensure LLS data is cleared when session is removed

* Update and fix LLS tests

* Handle Start LLS in ui

* Add check LLS permissions

* Remove hardcoded strings

* Fix quality and format

* Create DeviceLocationProvider so we can share location data between sources (presenter/live location service)

* Update screenshots

* Fix warning

* Do not try to stop if it was not sharing

* Revert "Create DeviceLocationProvider so we can share location data between sources (presenter/live location service)"

This reverts commit ba12bd968e82941cc231bdbb449310b24c97c5b8.

* Tweak location provider config values

* Address PR review remarks

* Fix ktlint

* Update screenshots

* Fix some tests after merging develop

* Adjust TimelineItemLocationView ui to match figma

* Update screenshots

* Documentation and cleanup

* Remove temporary resource

---------

Co-authored-by: ElementBot <android@element.io>
Co-authored-by: Benoit Marty <benoit@matrix.org>
Co-authored-by: Benoit Marty <benoitm@matrix.org>
2026-05-11 08:19:28 +00:00
ElementBot 0c657c258a Sync Strings from Localazy (#6761)
Co-authored-by: bmarty <3940906+bmarty@users.noreply.github.com>
2026-05-11 09:37:59 +02:00