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/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8d0143c52..49ea0e829 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -876,6 +876,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"; diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index f96c3f694..58a81ca29 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; @@ -89,6 +90,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); } diff --git a/lib/l10n/intl_nb.arb b/lib/l10n/intl_nb.arb index 29682a498..bad5e73d1 100644 --- a/lib/l10n/intl_nb.arb +++ b/lib/l10n/intl_nb.arb @@ -3179,6 +3179,35 @@ "@swipeRightToLeftToReply": {}, "startFirstChat": "Start din første chat", "@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": {}, + "notificationRuleRoomServerAcl": "Romserverens tilgangskontrolliste", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleRoomOneToOneDescription": "Varsler brukeren om meldinger i én-til-én-rom.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleJitsiDescription": "Varsler brukeren om hendelser i Jitsi-widgeten.", + "@notificationRuleJitsiDescription": {}, "alwaysUse24HourFormat": "falsk", "commandHint_googly": "Send noen googly-øyne", "commandHint_cuddle": "Send en kose", @@ -3205,12 +3234,8 @@ "hasKnocked": "🚪 {user} har banket på", "usersMustKnock": "Brukere må banke på", "knock": "Bank på", - "unlockOldMessages": "Lås opp gamle meldinger", "storeInSecureStorageDescription": "Lagre gjenopprettingsnøkkelen i den sikre lagringen på denne enheten.", "saveKeyManuallyDescription": "Lagre denne nøkkelen manuelt ved å utløse systemets delingsdialog eller utklippstavle.", - "storeInAndroidKeystore": "Lagre i Android KeyStore", - "storeInAppleKeyChain": "Lagre i Apple KeyChain", - "storeSecurlyOnThisDevice": "Lagre sikkert på denne enheten", "foregroundServiceRunning": "Denne varslingen vises når forgrunnstjenesten kjører.", "callingAccount": "Samtalekonto", "appearOnTopDetails": "Tillater appen å vises øverst (ikke nødvendig hvis du allerede har satt opp FluffyChat som en samtalekonto)", @@ -3233,7 +3258,6 @@ "sessionLostBody": "Økten din er tapt. Vennligst rapporter denne feilen til utviklerne på {url}. Feilmeldingen er: {error}", "verifyOtherUserDescription": "Hvis du verifiserer en annen bruker, kan du være sikker på at du vet hvem du faktisk skriver til. 💪\n\nNår du starter en verifisering, vil du og den andre brukeren se en popup i appen. Der vil dere se en serie av emojis eller tall som dere må sammenligne.\n\nDen beste måten å gjøre dette på er å møtes eller starte en videosamtale. 👩‍💻", "verifyOtherDeviceDescription": "Når du verifiserer en annen enhet, kan disse enhetene utveksle nøkler, noe som øker din totale sikkerhet. 💪 Når du starter en verifisering, vil en popup vises i appen på begge enhetene. Der vil dere se en serie av emojis eller tall som dere må sammenligne.\nDet er best å ha begge enhetene tilgjengelig før du starter verifiseringen. 🤳", - "acceptedKeyVerification": "{sender} aksepterte nøkkelverifisering", "knockRestricted": "Knock-begrenset", "chatPermissionsDescription": "Definer hvilket maktnivå som er nødvendig for visse handlinger i denne chatten. Maktnivåene 0, 50 og 100 representerer vanligvis brukere, moderatorer og administratorer, men alle grader er mulige.", "sendingAttachmentCountOfCount": "Sender vedlegg {index} av {length}...", @@ -3242,13 +3266,7 @@ "notificationRuleMemberEvent": "Medlemsarrangement", "notificationRuleMemberEventDescription": "Undertrykker varsler for medlemsarrangementer.", "notificationRuleTombstone": "Tombstone", - "notificationRuleRoomServerAcl": "Romserver ACL", "notificationRuleRoomServerAclDescription": "Undertrykker varsler for romserver tilgangskontrollister (ACL).", - "notificationRuleSuppressEditsDescription": "Undertrykker varsler for redigerte meldinger.", - "notificationRuleRoomOneToOneDescription": "Varsler brukeren om meldinger i én-til-én-rom.", - "notificationRuleMessageDescription": "Varsler brukeren om generelle meldinger.", - "notificationRuleEncryptedDescription": "Varsler brukeren om meldinger i krypterte rom.", - "notificationRuleJitsiDescription": "Varsler brukeren om Jitsi-widget hendelser.", "notificationRuleServerAcl": "Undertrykk server-ACL hendelser", "notificationRuleServerAclDescription": "Undertrykker varsler for server-ACL hendelser.", "youHaveKnocked": "Du har ringt på", @@ -4501,10 +4519,6 @@ "type": "String", "placeholders": {} }, - "@unlockOldMessages": { - "type": "String", - "placeholders": {} - }, "@storeInSecureStorageDescription": { "type": "String", "placeholders": {} @@ -4513,18 +4527,6 @@ "type": "String", "placeholders": {} }, - "@storeInAndroidKeystore": { - "type": "String", - "placeholders": {} - }, - "@storeInAppleKeyChain": { - "type": "String", - "placeholders": {} - }, - "@storeSecurlyOnThisDevice": { - "type": "String", - "placeholders": {} - }, "@foregroundServiceRunning": { "type": "String", "placeholders": {} @@ -4627,14 +4629,6 @@ "type": "String", "placeholders": {} }, - "@acceptedKeyVerification": { - "type": "String", - "placeholders": { - "sender": { - "type": "String" - } - } - }, "@knockRestricted": { "type": "String", "placeholders": {} @@ -4674,34 +4668,10 @@ "type": "String", "placeholders": {} }, - "@notificationRuleRoomServerAcl": { - "type": "String", - "placeholders": {} - }, "@notificationRuleRoomServerAclDescription": { "type": "String", "placeholders": {} }, - "@notificationRuleSuppressEditsDescription": { - "type": "String", - "placeholders": {} - }, - "@notificationRuleRoomOneToOneDescription": { - "type": "String", - "placeholders": {} - }, - "@notificationRuleMessageDescription": { - "type": "String", - "placeholders": {} - }, - "@notificationRuleEncryptedDescription": { - "type": "String", - "placeholders": {} - }, - "@notificationRuleJitsiDescription": { - "type": "String", - "placeholders": {} - }, "@notificationRuleServerAcl": { "type": "String", "placeholders": {} 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: |