fluffychat merge

This commit is contained in:
ggurdin 2026-02-06 09:18:03 -05:00
commit 4fd6f10464
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
60 changed files with 427349 additions and 428227 deletions

15
SECURITY.md Normal file
View file

@ -0,0 +1,15 @@
# Security Policy
If you believe you have discovered a security vulnerability in this project, **do not open a public issue**.
To report a security issue responsibly, please go to the Security tab or visit:
https://github.com/krille-chan/fluffychat/security/advisories/new
The following information can help us address the issue:
- Clear steps to reproduce the vulnerability
- The software version you are using
- The affected platforms
We appreciate your report and will respond as quickly as possible. Please note that this project is maintained by volunteers and is provided without guarantees.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -866,14 +866,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@username": {
"type": "String",
"placeholders": {}
@ -9012,7 +9004,6 @@
"report": "རེད་འདོད།",
"signInWithPassword": "ནང་བསྐུར་ནས་སྤྱོད་འཇུག",
"pleaseTryAgainLaterOrChooseDifferentServer": "ཧེ་མེད་ལོག་འགྱོ་འདི་ལས་འགོད་འབད་ནི། དེ་ལས་འགོད་འབད་ནི་ལས་འགོད་འབད་ནི།",
"signInWith": "ནང་བསྐུར་ནས {provider} ལས་འཇུག",
"profileNotFound": "བརྗེ་འདེམས་སུ་མེད་པའི་བརྗེ་འདེམས་ལས་མེད། ཁྱེད་ཀྱིས་འདི་ལས་འགོད་འབད་ནི་ལས་འགོད་འབད་ནི།",
"setTheme": "དབྱེ་བའི་དབྱེ་བ།",
"setColorTheme": "རིགས་ལུས་དབྱེ་བ།",

View file

@ -2249,15 +2249,6 @@
"type": "String",
"placeholders": {}
},
"signInWith": "Inicia sessió amb {provider}",
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"fileIsTooBigForServer": "No s'ha pogut enviar! El servidor només accepta adjunts de fins a {max}.",
"@fileIsTooBigForServer": {},
"homeserver": "Servidor",

File diff suppressed because it is too large Load diff

View file

@ -583,7 +583,6 @@
"report": "rapporter",
"signInWithPassword": "Log ind med adgangskode",
"pleaseTryAgainLaterOrChooseDifferentServer": "Prøv igen senere eller vælg en anden server.",
"signInWith": "Log ind med {provider}",
"profileNotFound": "Brugeren kunne ikke findes på serveren. Måske er der et forbindelsesproblem, eller brugeren findes ikke.",
"setTheme": "Vælg tema:",
"setColorTheme": "Vælg farvetema:",
@ -4593,14 +4592,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}
@ -12044,4 +12035,4 @@
"type": "String",
"placeholders": {}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -155,7 +155,7 @@
}
}
},
"anyoneCanJoin": "Anyone can join! However, admin can kick and ban whoever misbehaves. Those who are banned may not return!",
"anyoneCanJoin": "Anyone can join",
"@anyoneCanJoin": {
"type": "String",
"placeholders": {}
@ -3477,6 +3477,31 @@
}
}
},
"federationBaseUrl": "Federation Base URL",
"@federationBaseUrl": {},
"clientWellKnownInformation": "Client-Well-Known Information:",
"@clientWellKnownInformation": {},
"baseUrl": "Base URL",
"@baseUrl": {},
"identityServer": "Identity Server:",
"@identityServer": {},
"versionWithNumber": "Version: {version}",
"@versionWithNumber": {
"type": "String",
"placeholders": {
"version": {
"type": "String"
}
}
},
"logs": "Logs",
"@logs": {},
"advancedConfigs": "Advanced Configs",
"@advancedConfigs": {},
"advancedConfigurations": "Advanced configurations",
"@advancedConfigurations": {},
"signInWith": "Sign in with:",
"@signInWith": {},
"ignore": "Block",
"ignoredUsers": "Blocked users",
"writeAMessageLangCodes": "Type in {l1} or {l2}...",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -2747,15 +2747,6 @@
"@knock": {},
"hidePresences": "پنهان کردن فهرست وضعیت؟",
"@hidePresences": {},
"signInWith": "ورود با {provider}",
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"profileNotFound": "کاربر در سرور پیدا نشد. شاید مشکل اتصال وجود دارد یا کاربر وجود ندارد.",
"@profileNotFound": {},
"setTheme": "تنظیم پوسته:",

File diff suppressed because it is too large Load diff

View file

@ -1428,7 +1428,6 @@
"report": "iulat",
"signInWithPassword": "Mag-sign in gamit ang password",
"pleaseTryAgainLaterOrChooseDifferentServer": "Mangyaring subukan muli mamaya o pumili ng ibang server.",
"signInWith": "Mag-sign in gamit ang {provider}",
"profileNotFound": "Hindi mahanap ang user sa server. Maaaring may problema sa koneksyon o hindi umiiral ang user.",
"setTheme": "Itakda ang tema:",
"setColorTheme": "Itakda ang kulay na tema:",
@ -4524,14 +4523,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -868,14 +868,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@username": {
"type": "String",
"placeholders": {}
@ -2664,7 +2656,6 @@
"report": "रिपोर्ट करें",
"signInWithPassword": "पासवर्ड के साथ साइन इन करें",
"pleaseTryAgainLaterOrChooseDifferentServer": "कृपया बाद में पुनः प्रयास करें या अलग सर्वर चुनें।",
"signInWith": "{provider} के साथ साइन इन करें",
"profileNotFound": "सर्वर पर उपयोगकर्ता नहीं मिल सका। हो सकता है कि कनेक्शन में समस्या हो या उपयोगकर्ता मौजूद न हो।",
"setTheme": "थीम सेट करें:",
"setColorTheme": "रंग थीम सेट करें:",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -611,7 +611,6 @@
"report": "reportar",
"signInWithPassword": "Signar in con parola",
"pleaseTryAgainLaterOrChooseDifferentServer": "Per favor, tenta ancora plus tarde o selige un altere servitore.",
"signInWith": "Signar in con {provider}",
"profileNotFound": "Le usator non poteva esser trovate in le servitore. Forse il ha un problema de connection o le usator non existe.",
"setTheme": "Configurar thema:",
"setColorTheme": "Configurar thema de colore:",
@ -4609,14 +4608,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}

File diff suppressed because it is too large Load diff

View file

@ -1647,14 +1647,6 @@
}
}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@changedTheRoomAliases": {
"type": "String",
"placeholders": {
@ -2667,7 +2659,6 @@
"report": "reportar",
"signInWithPassword": "Signar con passphrase",
"pleaseTryAgainLaterOrChooseDifferentServer": "Per favor, tenta ancora plus tarde o selige un altere servitor.",
"signInWith": "Signar con {provider}",
"profileNotFound": "La usator ne poteva esser trovate in su servitor. Probabilmente es un problema de conexion o la usator no existe.",
"setTheme": "Stabilir tema:",
"setColorTheme": "Stabilir tema de color:",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1140,14 +1140,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@username": {
"type": "String",
"placeholders": {}
@ -3147,7 +3139,6 @@
"report": "denunciar",
"signInWithPassword": "Entrar com senha",
"pleaseTryAgainLaterOrChooseDifferentServer": "Por favor, tente novamente mais tarde ou escolha um servidor diferente.",
"signInWith": "Entrar com {provider}",
"profileNotFound": "O usuário não pôde ser encontrado no servidor. Talvez haja um problema de conexão ou o usuário não exista.",
"setTheme": "Definir tema:",
"setColorTheme": "Definir tema de cores:",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1117,7 +1117,6 @@
"report": "prijavi",
"signInWithPassword": "Prijavi se z geslom",
"pleaseTryAgainLaterOrChooseDifferentServer": "Poskusite znova kasneje ali izberite drug strežnik.",
"signInWith": "Prijavite se z {provider}",
"profileNotFound": "Uporabnika ni bilo mogoče najti na strežniku. Morda je težava s povezavo ali uporabnik ne obstaja.",
"setTheme": "Nastavi temo:",
"setColorTheme": "Nastavi barvno temo:",
@ -4612,14 +4611,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}

File diff suppressed because it is too large Load diff

View file

@ -2536,15 +2536,6 @@
}
}
},
"signInWith": "Logga in med {provider}",
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"optionalRedactReason": "(Frivilligt) Anledning till att ta bort det här meddelandet…",
"@optionalRedactReason": {},
"archiveRoomDescription": "Den här chatten kommer flyttas till arkivet. Andra användare kommer kunna se att du har lämnat chatten.",

View file

@ -2604,15 +2604,6 @@
},
"pleaseTryAgainLaterOrChooseDifferentServer": "தயவுசெய்து பின்னர் மீண்டும் முயற்சிக்கவும் அல்லது வேறு சேவையகத்தைத் தேர்வுசெய்க.",
"@pleaseTryAgainLaterOrChooseDifferentServer": {},
"signInWith": "{provider} மூலம் உள்நுழையவும்",
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"profileNotFound": "பயனரை சேவையகத்தில் காண முடியவில்லை. ஒரு இணைப்பு சிக்கல் இருக்கலாம் அல்லது பயனர் இல்லை.",
"@profileNotFound": {},
"inviteGroupChat": "📨 குழு அரட்டை அழைப்பு",

View file

@ -573,7 +573,6 @@
"report": "నివేదించండి",
"signInWithPassword": "పాస్వర్డ్‌తో సైన్ ఇన్ చేయండి",
"pleaseTryAgainLaterOrChooseDifferentServer": "దయచేసి తర్వాత ప్రయత్నించండి లేదా వేరే సర్వర్‌ను ఎంచుకోండి.",
"signInWith": "{provider} తో సైన్ ఇన్ చేయండి",
"profileNotFound": "సర్వర్‌పై వినియోగదారు కనుగొనబడలేదు. కనెక్షన్ సమస్య ఉండవచ్చు లేదా వినియోగదారు ఉండకపోవచ్చు.",
"setTheme": "థీమ్ సెట్ చేయండి:",
"setColorTheme": "రంగు థీమ్ సెట్ చేయండి:",
@ -4623,14 +4622,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}

View file

@ -1036,14 +1036,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@username": {
"type": "String",
"placeholders": {}
@ -2664,7 +2656,6 @@
"report": "รายงาน",
"signInWithPassword": "เข้าสู่ระบบด้วยรหัสผ่าน",
"pleaseTryAgainLaterOrChooseDifferentServer": "โปรดลองอีกครั้งในภายหลังหรือเลือกเซิร์ฟเวอร์ที่แตกต่างกัน",
"signInWith": "เข้าสู่ระบบด้วย {provider}",
"profileNotFound": "ไม่พบผู้ใช้บนเซิร์ฟเวอร์ อาจมีปัญหาในการเชื่อมต่อหรือผู้ใช้นั้นไม่มีอยู่จริง",
"setTheme": "ตั้งธีม:",
"setColorTheme": "ตั้งธีมสี:",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -496,7 +496,6 @@
"report": "報告",
"signInWithPassword": "用密碼登入",
"pleaseTryAgainLaterOrChooseDifferentServer": "請稍後再試或選擇不同的伺服器。",
"signInWith": "用 {provider} 登入",
"profileNotFound": "在伺服器上找不到該用戶。可能是連線問題或用戶不存在。",
"setTheme": "設定主題:",
"setColorTheme": "設定色彩主題:",
@ -4224,14 +4223,6 @@
"type": "String",
"placeholders": {}
},
"@signInWith": {
"type": "String",
"placeholders": {
"provider": {
"type": "String"
}
}
},
"@profileNotFound": {
"type": "String",
"placeholders": {}
@ -12074,4 +12065,4 @@
"type": "String",
"placeholders": {}
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -133,7 +133,7 @@ class HomeserverPickerView extends StatelessWidget {
hintStyle: TextStyle(
color: theme.colorScheme.surfaceTint,
),
labelText: 'Sign in with:',
labelText: L10n.of(context).signInWith,
errorText: controller.error,
errorMaxLines: 4,
suffixIcon: IconButton(

View file

@ -157,7 +157,7 @@ class SettingsHomeserverView extends StatelessWidget {
subtitle: Text(data.version),
),
ListTile(
title: const Text('Federation Base URL'),
title: Text(L10n.of(context).federationBaseUrl),
subtitle: Linkify(
text: data.federationBaseUrl.toString(),
textScaleFactor: MediaQuery.textScalerOf(
@ -210,7 +210,7 @@ class SettingsHomeserverView extends StatelessWidget {
children: [
ListTile(
title: Text(
'Client-Well-Known Information:',
L10n.of(context).clientWellKnownInformation,
style: TextStyle(
color: theme.colorScheme.secondary,
fontWeight: FontWeight.bold,
@ -218,7 +218,7 @@ class SettingsHomeserverView extends StatelessWidget {
),
),
ListTile(
title: const Text('Base URL'),
title: Text(L10n.of(context).baseUrl),
subtitle: Linkify(
text: wellKnown.mHomeserver.baseUrl.toString(),
textScaleFactor: MediaQuery.textScalerOf(
@ -234,7 +234,7 @@ class SettingsHomeserverView extends StatelessWidget {
),
if (identityServer != null)
ListTile(
title: const Text('Identity Server:'),
title: Text(L10n.of(context).identityServer),
subtitle: Linkify(
text: identityServer.baseUrl.toString(),
textScaleFactor: MediaQuery.textScalerOf(

View file

@ -65,7 +65,7 @@ abstract class PlatformInfos {
useRootNavigator: false,
// Pangea#
children: [
Text('Version: $version'),
Text(L10n.of(context).versionWithNumber(version)),
TextButton.icon(
onPressed: () => launchUrlString(AppConfig.sourceCodeUrl),
icon: const Icon(Icons.source_outlined),
@ -79,7 +79,7 @@ abstract class PlatformInfos {
Navigator.of(innerContext).pop();
},
icon: const Icon(Icons.list_outlined),
label: const Text('Logs'),
label: Text(L10n.of(context).logs),
);
},
),
@ -91,7 +91,7 @@ abstract class PlatformInfos {
Navigator.of(innerContext).pop();
},
icon: const Icon(Icons.settings_applications_outlined),
label: const Text('Advanced Configs'),
label: Text(L10n.of(context).advancedConfigs),
);
},
),

View file

@ -4,6 +4,7 @@ import 'package:go_router/go_router.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:fluffychat/config/setting_keys.dart';
import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/widgets/adaptive_dialogs/show_text_input_dialog.dart';
import 'package:fluffychat/widgets/matrix.dart';
@ -52,7 +53,7 @@ class _ConfigViewerState extends State<ConfigViewer> {
final theme = Theme.of(context);
return Scaffold(
appBar: AppBar(
title: const Text('Advanced configurations'),
title: Text(L10n.of(context).advancedConfigurations),
leading: BackButton(onPressed: () => context.go('/')),
),
body: Column(