From 2bf7c30d7385b5a2410a67701ffd868c9f0b7506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Sat, 25 Oct 2025 09:14:18 +0200 Subject: [PATCH 1/6] build: Bump version --- CHANGELOG.md | 125 ++++++++++++++++++ .../android/en-US/changelogs/default.txt | 9 +- pubspec.yaml | 2 +- snap/snapcraft.yaml | 2 +- 4 files changed, 135 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32948157a..7441f4533 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,128 @@ +## v2.2.0 + +FluffyChat 2.2.0 introduces a new UX for spaces and adds support for restricted +join rules. + +The app also now has a new design for recording voice messages including a new +pause button. + +You also now see the progress when downloading files. + +On web the performance for image compressing has been drastically improved. Also +the config.json file loading has finally been fixed. Please be aware that the format +has changed as the available configs are now generated automatically. + +Did you know that you can set a lot of additional configs in the new config viewer +inside the app? This now supports much more options but please use with care! + +On Android FluffyChat now supports notification actions (reply and mark as read) and +also now supports Android Auto integration. Please do not cause an accident when using +the app while driving! + +On iOS the notifications are now localized. Stay tuned for more improvements on iOS +notifications in the next releases! + +Besides that this release brings a ton of bug fixes and performance improvements and +of course updated translations. Big thanks to all the volunteers who have helped on weblate! + +- feat: Add donation buttons except for PlayStore&AppStore version (Christian Kußowski) +- feat: Add iOS Notification Service Extension for localizable push notifications (Christian Kußowski) +- feat: Add notification actions (krille-chan) +- feat: Add support for restricted join rule (Christian Kußowski) +- feat: Display progress for downloading content (Christian Kußowski) +- feat: Display progress on redact events and clear archive dialogs (Christian Kußowski) +- feat: Enable native imaging for web (Christian Kußowski) +- feat: Forward notifications to Android Auto (Christian Kußowski) +- feat: Nicer record voice message UI with pause function (Christian Kußowski) +- feat: Notification actions on android (krille-chan) +- design: Improved spaces UX (Christian Kußowski) +- fix: Correctly pass through obscure text (Christian Kußowski) +- fix: Create a subdirectory in the tmp directory (Inex Code) +- fix: Cupertino text dialogs (Christian Kußowski) +- fix: Null pointer crash in chat list item (Christian Kußowski) +- chore(translations): Translated using Weblate (Arabic) (jamazi) +- chore(translations): Translated using Weblate (Basque) (xabirequejo) +- chore(translations): Translated using Weblate (Belarusian) (Alex Katon) +- chore(translations): Translated using Weblate (Chinese (Simplified Han script)) (大王叫我来巡山) +- chore(translations): Translated using Weblate (Croatian) (Milo Ivir) +- chore(translations): Translated using Weblate (Czech) (Flibble) +- chore(translations): Translated using Weblate (Dutch) (Jelv) +- chore(translations): Translated using Weblate (Esperanto) (Anonymous) +- chore(translations): Translated using Weblate (Estonian) (Priit Jõerüüt) +- chore(translations): Translated using Weblate (Finnish) (Aminda Suomalainen) +- chore(translations): Translated using Weblate (Galician) (josé m) +- chore(translations): Translated using Weblate (German) (Alex Katon) +- chore(translations): Translated using Weblate (German) (cheese1) +- chore(translations): Translated using Weblate (German) (Christian) +- chore(translations): Translated using Weblate (German) (Jana) +- chore(translations): Translated using Weblate (Greek) (Λευτέρης Τ) +- chore(translations): Translated using Weblate (Hebrew) (Anonymous) +- chore(translations): Translated using Weblate (Hungarian) (Balázs Meskó) +- chore(translations): Translated using Weblate (Indonesian) (Linerly) +- chore(translations): Translated using Weblate (Irish) (Aindriú Mac Giolla Eoin) +- chore(translations): Translated using Weblate (Japanese) (Allan Nordhøy) +- chore(translations): Translated using Weblate (Korean) (loyedison92) +- chore(translations): Translated using Weblate (Latvian) (Edgars Andersons) +- chore(translations): Translated using Weblate (Latvian) (ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝)) +- chore(translations): Translated using Weblate (Lithuanian) (Anonymous) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (Frank Paul Silye) +- chore(translations): Translated using Weblate (Norwegian Bokmål) (sunniva) +- chore(translations): Translated using Weblate (Polish) (Paweł Gronowski) +- chore(translations): Translated using Weblate (Portuguese (Brazil)) (LucasMZ) +- chore(translations): Translated using Weblate (Portuguese (Portugal)) (Anonymous) +- chore(translations): Translated using Weblate (Romanian) (Anonymous) +- chore(translations): Translated using Weblate (Russian) (Christian) +- chore(translations): Translated using Weblate (Russian) (Дмитрий Михирев) +- chore(translations): Translated using Weblate (Russian) (Жора Змейкин) +- chore(translations): Translated using Weblate (Serbian) (Anonymous) +- chore(translations): Translated using Weblate (Slovak) (Anonymous) +- chore(translations): Translated using Weblate (Spanish) (Kimby) +- chore(translations): Translated using Weblate (Spanish) (LucasMZ) +- chore(translations): Translated using Weblate (Turkish) (Christian) +- chore(translations): Translated using Weblate (Turkish) (Ufuk Karal) +- chore(translations): Translated using Weblate (Vietnamese) (desperadohp) +- chore: add a link to the platforms' different behaviors for the 24h format (kaanelloed) +- chore: Add ActionsPadding in column mode (Christian Kußowski) +- chore: Add close icon to snackbar in column mode (Christian Kußowski) +- chore: Adjust chat details button design (Christian Kußowski) +- chore: Adjust encryption page design (Christian Kußowski) +- chore: Adjust input bar button design (Christian Kußowski) +- chore: Adjust material dialog button design (krille-chan) +- chore: Adjust padding for status msg list (Christian Kußowski) +- chore: Adjust status header design (krille-chan) +- chore: Better display rooms without known messages (Christian Kußowski) +- chore: Better routing to space id (Christian Kußowski) +- chore: Correctly remove knockRestricted from possible join rules (Christian Kußowski) +- chore: Fix load config.json (Christian Kußowski) +- chore: Go back to pub.dev matrix dep (Christian Kußowski) +- chore: Hide restricted and knock restricted for unsupported room versions (Christian Kußowski) +- chore: Hide topic if empty and cannot be changed (Christian Kußowski) +- chore: Improve chat details icon color design (Christian Kußowski) +- chore: Improve ignore list UX (Christian Kußowski) +- chore: Leave invites and DM rooms when blocking a user (Christian Kußowski) +- chore: Make privacy url not configurable (Christian Kußowski) +- chore: Make progress indicators rounder (Christian Kußowski) +- chore: Mention rebases (Christian Kußowski) +- chore: Move emote settings button to chat popup menu (Christian Kußowski) +- chore: Move encryption button to input row (Christian Kußowski) +- chore: Revert "refactor: Make ChatListItem cache lasteventbody for better performance" (Christian Kußowski) +- chore: Translate iOS notifications into german (Christian Kußowski) +- chore: Try out refactored user device keys update method (Christian Kußowski) +- chore: Update matrix dart sdk (Christian Kußowski) +- chore: use time format based on system settings (kaanelloed) +- ci: Build only for arm64 (Christian Kußowski) +- refactor: Make ChatListItem cache lasteventbody for better performance (Christian Kußowski) +- refactor: Remove unused directories (Christian Kußowski) +- refactor: Rename models for matrix spec 1.16 (Christian Kußowski) +- refactor: Replace flutter typeahead with autocomplete to fix (Christian Kußowski) +- refactor: Use AppSettings enum based configuration everywhere and fix load from json on web (Christian Kußowski) +- build: Flutter upgrade 3.35.5 (Christian Kußowski) +- build: Matrix version 3.0.0 (Christian Kußowski) +- build: Remove dependency for telephony (Christian Kußowski) +- build: Remove openssl dependency (Christian Kußowski) +- build: Use correct fcm_shared_isolate version (Christian Kußowski) +- build: Use correct version of vodozemac for web build (Christian Kußowski) + ## v2.1.1 Bugfix release to trigger flatpak arm64 release again. diff --git a/android/fastlane/metadata/android/en-US/changelogs/default.txt b/android/fastlane/metadata/android/en-US/changelogs/default.txt index 3a532842a..a69b067f6 100644 --- a/android/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/android/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1 +1,8 @@ -Fixes broken error reporter for push notifications and wrong clipped avatars. Also updates dependencies and translations. \ No newline at end of file +FluffyChat 2.2.0 introduces a new UX for spaces and adds support for restricted +join rules. +The app also now has a new design for recording voice messages including a +pause button. +You also now see the progress when downloading files. +Also FluffyChat now supports notification actions (reply and mark as read) and +also now supports Android Auto integration. Please do not cause an accident when using +the app while driving! \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 609fbdfd4..5bfb78459 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: fluffychat description: Chat with your friends. publish_to: none # On version bump also increase the build number for F-Droid -version: 2.1.1+3543 +version: 2.2.0+3544 environment: sdk: ">=3.0.0 <4.0.0" diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index c5c06c8ed..fb1a1ab59 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -53,7 +53,7 @@ platforms: parts: flutter-git: source: https://github.com/flutter/flutter.git - source-tag: 3.35.3 + source-tag: 3.35.5 source-depth: 1 plugin: nil override-build: | From fb29b4c54e276702a1c04015332960dd4208fa03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Ku=C3=9Fowski?= Date: Sat, 25 Oct 2025 09:32:10 +0200 Subject: [PATCH 2/6] build: Fix iOS build with receive intent --- ios/Runner.xcodeproj/project.pbxproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index ffc039c5e..23a6d8624 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -866,6 +866,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -899,6 +900,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.FluffyChat-Share"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -931,6 +933,7 @@ PRODUCT_BUNDLE_IDENTIFIER = "im.fluffychat.app.FluffyChat-Share"; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; + SWIFT_ENABLE_EXPLICIT_MODULES = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; From 8cf46f0a7f9d3d436d92bcb5f8c9fd127268ed10 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sat, 25 Oct 2025 20:36:09 +0200 Subject: [PATCH 3/6] chore: Migrate wrong datatype for fontSizeFactor --- lib/config/setting_keys.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 1056929bc..8533b8846 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:async/async.dart'; import 'package:flutter/foundation.dart'; import 'package:http/http.dart' as http; @@ -72,6 +73,20 @@ enum AppSettings { final store = AppSettings._store = await SharedPreferences.getInstance(); + // Migrate wrong datatype for fontSizeFactor + final fontSizeFactorString = + Result(() => store.getString(AppSettings.fontSizeFactor.key)) + .asValue + ?.value; + if (fontSizeFactorString != null) { + Logs().i('Migrate wrong datatype for fontSizeFactor!'); + await store.remove(AppSettings.fontSizeFactor.key); + final fontSizeFactor = double.tryParse(fontSizeFactorString); + if (fontSizeFactor != null) { + await store.setDouble(AppSettings.fontSizeFactor.key, fontSizeFactor); + } + } + if (store.getBool(AppSettings.sendOnEnter.key) == null) { await store.setBool(AppSettings.sendOnEnter.key, !PlatformInfos.isMobile); } From c6f0f2b0858d4172d463bbbb77be99888a75a038 Mon Sep 17 00:00:00 2001 From: krille-chan Date: Sat, 25 Oct 2025 20:45:44 +0200 Subject: [PATCH 4/6] chore: Follow up fix font size slider --- lib/pages/settings_style/settings_style.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/pages/settings_style/settings_style.dart b/lib/pages/settings_style/settings_style.dart index 968759ad4..3ec628c53 100644 --- a/lib/pages/settings_style/settings_style.dart +++ b/lib/pages/settings_style/settings_style.dart @@ -157,8 +157,9 @@ class SettingsStyleController extends State { setState(() {}); } - void changeFontSizeFactor(double d) { - AppSettings.fontSizeFactor.setItem(d); + void changeFontSizeFactor(double d) async { + await AppSettings.fontSizeFactor.setItem(d); + setState(() {}); } @override From 45005d7ee0f0ce464d6bc3d6cb88b22ebae46a2c Mon Sep 17 00:00:00 2001 From: Frank Paul Silye Date: Sat, 25 Oct 2025 17:39:46 +0200 Subject: [PATCH 5/6] =?UTF-8?q?chore(translations):=20Translated=20using?= =?UTF-8?q?=20Weblate=20(Norwegian=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 90.1% (716 of 794 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nb_NO/ --- lib/l10n/intl_nb.arb | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 0cc812608..7bd94a96c 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -3178,5 +3178,28 @@ "swipeRightToLeftToReply": "Sveip fra høyre mot venstre for å svare", "@swipeRightToLeftToReply": {}, "startFirstChat": "Start din første chat", - "@startFirstChat": {} + "@startFirstChat": {}, + "unlockOldMessages": "Lås opp gamle meldinger", + "@unlockOldMessages": {}, + "storeInAndroidKeystore": "Lagre i Android KeyStore", + "@storeInAndroidKeystore": {}, + "storeInAppleKeyChain": "Lagre i Apple nøkkelring", + "@storeInAppleKeyChain": {}, + "storeSecurlyOnThisDevice": "Lagre sikkert på denne enheten", + "@storeSecurlyOnThisDevice": {}, + "acceptedKeyVerification": "{sender} godtok nøkkelverifisering", + "@acceptedKeyVerification": { + "type": "String", + "placeholders": { + "sender": { + "type": "String" + } + } + }, + "notificationRuleMessageDescription": "Varsler brukeren om generelle meldinger.", + "@notificationRuleMessageDescription": {}, + "notificationRuleSuppressEditsDescription": "Demper varsler for redigerte meldinger.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedDescription": "Varsler brukeren om meldinger i krypterte rom.", + "@notificationRuleEncryptedDescription": {} } From 774ab41a87b6c297e6e17da1f387a199679892eb Mon Sep 17 00:00:00 2001 From: Frank Paul Silye Date: Sat, 25 Oct 2025 22:24:52 +0200 Subject: [PATCH 6/6] =?UTF-8?q?chore(translations):=20Translated=20using?= =?UTF-8?q?=20Weblate=20(Norwegian=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 90.5% (719 of 794 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nb_NO/ --- lib/l10n/intl_nb.arb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 7bd94a96c..8ed066e51 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -3201,5 +3201,11 @@ "notificationRuleSuppressEditsDescription": "Demper varsler for redigerte meldinger.", "@notificationRuleSuppressEditsDescription": {}, "notificationRuleEncryptedDescription": "Varsler brukeren om meldinger i krypterte rom.", - "@notificationRuleEncryptedDescription": {} + "@notificationRuleEncryptedDescription": {}, + "notificationRuleRoomServerAcl": "Romserverens tilgangskontrolliste", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomOneToOneDescription": "Varsler brukeren om meldinger i én-til-én-rom.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleJitsiDescription": "Varsler brukeren om hendelser i Jitsi-widgeten.", + "@notificationRuleJitsiDescription": {} }