From 7a2f3952cb1fcf393865c676224aa61dbc6fdb94 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Sep 2026 10:59:51 +0200 Subject: [PATCH 1/2] Move Gallery and Knock feature flags to Labs. --- .../android/features/preferences/impl/labs/LabsPresenter.kt | 6 ++++++ features/preferences/impl/src/main/res/values/localazy.xml | 4 ++++ .../android/libraries/featureflag/api/FeatureFlags.kt | 2 ++ 3 files changed, 12 insertions(+) diff --git a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsPresenter.kt b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsPresenter.kt index f9576f93e4..158135e616 100644 --- a/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsPresenter.kt +++ b/features/preferences/impl/src/main/kotlin/io/element/android/features/preferences/impl/labs/LabsPresenter.kt @@ -89,14 +89,20 @@ class LabsPresenter( key(enabledFeature.feature.key) { val title = when (enabledFeature.feature) { FeatureFlags.Threads -> stringProvider.getString(R.string.screen_labs_enable_threads) + FeatureFlags.SendGalleryMessages -> stringProvider.getString(R.string.screen_labs_enable_gallery) + FeatureFlags.Knock -> stringProvider.getString(R.string.screen_labs_enable_knocking) else -> enabledFeature.feature.title } val description = when (enabledFeature.feature) { FeatureFlags.Threads -> stringProvider.getString(R.string.screen_labs_enable_threads_description) + FeatureFlags.SendGalleryMessages -> stringProvider.getString(R.string.screen_labs_enable_gallery_description) + FeatureFlags.Knock -> stringProvider.getString(R.string.screen_labs_enable_knocking_description) else -> enabledFeature.feature.description } val icon = when (enabledFeature.feature) { FeatureFlags.Threads -> CompoundIcons.Threads() + FeatureFlags.SendGalleryMessages -> CompoundIcons.Image() + FeatureFlags.Knock -> CompoundIcons.AskToJoin() else -> null } remember(enabledFeature) { diff --git a/features/preferences/impl/src/main/res/values/localazy.xml b/features/preferences/impl/src/main/res/values/localazy.xml index b4b97375b5..b6e4eeffe3 100644 --- a/features/preferences/impl/src/main/res/values/localazy.xml +++ b/features/preferences/impl/src/main/res/values/localazy.xml @@ -52,6 +52,10 @@ "Unable to update profile" "Edit profile" "Updating profile…" + "Gallery messages" + "Send multiple images or videos in one go. Stable on mobile, but not yet supported by web." + "Ask to join" + "Users can request access to a room that is not open for anyone to join. Stable on mobile, web implementation exists but is experimental." "Enable thread replies" "The app will restart to apply this change." "Try out our latest ideas in development. These features are not finalised; they may be unstable, may change." diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index 4a8894e99c..afceabba25 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -51,6 +51,7 @@ enum class FeatureFlags( description = "Allow creating rooms which users can request access to.", defaultValue = { false }, isFinished = false, + isInLabs = true, ), PrintLogsToLogcat( key = "feature.print_logs_to_logcat", @@ -151,6 +152,7 @@ enum class FeatureFlags( description = "Allow sending multiple media items in a single message.", defaultValue = { false }, isFinished = false, + isInLabs = true, ), MessageSearch( key = "feature.message_search", From 924cf2caf30079a11050e2c106144f704ed1c96b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Sep 2026 11:02:49 +0200 Subject: [PATCH 2/2] Reorder feature flags in labs: Thread, Gallery, Knock --- .../libraries/featureflag/api/FeatureFlags.kt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt index afceabba25..af7ccef97f 100644 --- a/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt +++ b/libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt @@ -45,14 +45,6 @@ enum class FeatureFlags( defaultValue = { false }, isFinished = false, ), - Knock( - key = "feature.knock", - title = "Ask to join", - description = "Allow creating rooms which users can request access to.", - defaultValue = { false }, - isFinished = false, - isInLabs = true, - ), PrintLogsToLogcat( key = "feature.print_logs_to_logcat", title = "Print logs to logcat", @@ -154,6 +146,14 @@ enum class FeatureFlags( isFinished = false, isInLabs = true, ), + Knock( + key = "feature.knock", + title = "Ask to join", + description = "Allow creating rooms which users can request access to.", + defaultValue = { false }, + isFinished = false, + isInLabs = true, + ), MessageSearch( key = "feature.message_search", title = "Message search",