From afb00e929561b7b14061f0d130936f5472e4c524 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Mon, 21 Aug 2023 10:50:55 -0700 Subject: [PATCH 1/3] DisableProfile, SaveHistorySetting, DeleteServerInfo, Draft Whonix Config Fixes #593 Fixes #690 Fixes #629 --- .../kotlin/im/cwtch/flwtch/MainActivity.kt | 9 +- lib/cwtch/cwtch.dart | 1 + lib/cwtch/ffi.dart | 17 +- lib/cwtch/gomobile.dart | 8 +- lib/l10n/intl_cy.arb | 10 +- lib/l10n/intl_da.arb | 10 +- lib/l10n/intl_de.arb | 10 +- lib/l10n/intl_el.arb | 10 +- lib/l10n/intl_en.arb | 10 +- lib/l10n/intl_es.arb | 10 +- lib/l10n/intl_fr.arb | 10 +- lib/l10n/intl_it.arb | 68 ++--- lib/l10n/intl_ja.arb | 10 +- lib/l10n/intl_ko.arb | 256 +++++++++--------- lib/l10n/intl_lb.arb | 10 +- lib/l10n/intl_nl.arb | 48 ++-- lib/l10n/intl_no.arb | 10 +- lib/l10n/intl_pl.arb | 10 +- lib/l10n/intl_pt.arb | 10 +- lib/l10n/intl_pt_BR.arb | 10 +- lib/l10n/intl_ro.arb | 10 +- lib/l10n/intl_ru.arb | 10 +- lib/l10n/intl_sk.arb | 10 +- lib/l10n/intl_sv.arb | 10 +- lib/l10n/intl_sw.arb | 10 +- lib/l10n/intl_tr.arb | 10 +- lib/l10n/intl_uk.arb | 10 +- lib/models/profile.dart | 4 +- lib/settings.dart | 19 +- lib/views/addeditprofileview.dart | 2 +- lib/views/contactsview.dart | 1 + lib/views/globalsettingsview.dart | 18 ++ lib/views/peersettingsview.dart | 14 +- lib/views/remoteserverview.dart | 57 +++- lib/widgets/filebubble.dart | 2 +- lib/widgets/messagelist.dart | 3 +- linux/cwtch-whonix.yml | 57 ++++ 37 files changed, 529 insertions(+), 255 deletions(-) create mode 100644 linux/cwtch-whonix.yml diff --git a/android/app/src/main/kotlin/im/cwtch/flwtch/MainActivity.kt b/android/app/src/main/kotlin/im/cwtch/flwtch/MainActivity.kt index f0a49033..400ece7c 100644 --- a/android/app/src/main/kotlin/im/cwtch/flwtch/MainActivity.kt +++ b/android/app/src/main/kotlin/im/cwtch/flwtch/MainActivity.kt @@ -343,7 +343,7 @@ class MainActivity: FlutterActivity() { return } - "RestartSharing" -> { + "RestartFileShare" -> { val profile: String = call.argument("ProfileOnion") ?: "" val filepath: String = call.argument("filekey") ?: "" result.success(Cwtch.restartFileShare(profile, filepath)) @@ -357,6 +357,13 @@ class MainActivity: FlutterActivity() { return } + "DeleteServerInfo" -> { + val profile: String = call.argument("ProfileOnion") ?: "" + val handle: String = call.argument("handle") ?: "" + result.success(Cwtch.deleteServerInfo(profile, handle)) + return + } + "PeerWithOnion" -> { val profile: String = call.argument("ProfileOnion") ?: "" val onion: String = call.argument("onion") ?: "" diff --git a/lib/cwtch/cwtch.dart b/lib/cwtch/cwtch.dart index d9e236fc..cc41f3b0 100644 --- a/lib/cwtch/cwtch.dart +++ b/lib/cwtch/cwtch.dart @@ -146,4 +146,5 @@ abstract class Cwtch { // ignore: non_constant_identifier_names Future SearchConversations(String profile, String pattern); + void DeleteServerInfo(String profile, String handle); } diff --git a/lib/cwtch/ffi.dart b/lib/cwtch/ffi.dart index b14b790c..7bcffcfd 100644 --- a/lib/cwtch/ffi.dart +++ b/lib/cwtch/ffi.dart @@ -880,7 +880,7 @@ class CwtchFfi implements Cwtch { @override void RestartSharing(String profile, String filekey) { - var restartSharingC = library.lookup>("c_RestartSharing"); + var restartSharingC = library.lookup>("c_RestartFileShare"); // ignore: non_constant_identifier_names final RestartSharing = restartSharingC.asFunction(); final utf8profile = profile.toNativeUtf8(); @@ -902,6 +902,18 @@ class CwtchFfi implements Cwtch { malloc.free(ut8filekey); } + @override + void DeleteServerInfo(String profile, String handle) { + var deleteServerInfoC = library.lookup>("c_DeleteServerInfo"); + // ignore: non_constant_identifier_names + final StopSharing = deleteServerInfoC.asFunction(); + final utf8profile = profile.toNativeUtf8(); + final ut8handle = handle.toNativeUtf8(); + StopSharing(utf8profile, utf8profile.length, ut8handle, ut8handle.length); + malloc.free(utf8profile); + malloc.free(ut8handle); + } + @override void UpdateSettings(String json) { var updateSettings = library.lookup>("c_UpdateSettings"); @@ -912,6 +924,9 @@ class CwtchFfi implements Cwtch { malloc.free(u1); } + + + @override bool IsServersCompiled() { return library.providesSymbol("c_LoadServers"); diff --git a/lib/cwtch/gomobile.dart b/lib/cwtch/gomobile.dart index 010a2bfe..8072c5f4 100644 --- a/lib/cwtch/gomobile.dart +++ b/lib/cwtch/gomobile.dart @@ -352,7 +352,7 @@ class CwtchGomobile implements Cwtch { @override void RestartSharing(String profile, String filekey) { - cwtchPlatform.invokeMethod("RestartSharing", {"ProfileOnion": profile, "filekey": filekey}); + cwtchPlatform.invokeMethod("RestartFileShare", {"ProfileOnion": profile, "filekey": filekey}); } @override @@ -360,6 +360,12 @@ class CwtchGomobile implements Cwtch { cwtchPlatform.invokeMethod("StopSharing", {"ProfileOnion": profile, "filekey": filekey}); } + @override + void DeleteServerInfo(String profile, String handle) { + cwtchPlatform.invokeMethod("DeleteServerInfo", {"ProfileOnion": profile, "handle": handle}); + } + + @override void UpdateSettings(String json) { cwtchPlatform.invokeMethod("UpdateSettings", {"json": json}); diff --git a/lib/l10n/intl_cy.arb b/lib/l10n/intl_cy.arb index 4389e6c3..d2ca4b8c 100644 --- a/lib/l10n/intl_cy.arb +++ b/lib/l10n/intl_cy.arb @@ -1,6 +1,12 @@ { "@@locale": "cy", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Mewn gwirionedd dileu gweinydd", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grwpiau rydw i'n eu cynnal ar y gweinydd hwn", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -97,7 +103,6 @@ "serverMetricsLabel": "Metrigau Gweinydd", "manageKnownServersLong": "Rheoli Gweinyddwyr Hysbys", "manageKnownServersButton": "Rheoli Gweinyddwyr Hysbys", - "groupsOnThisServerLabel": "Grwpiau rydw i'n eu cynnal ar y gweinydd hwn", "importLocalServerSelectText": "Dewiswch Gweinyddwr Lleol", "importLocalServerLabel": "Mewnforio gweinydd a letyir yn lleol", "enterCurrentPasswordForDeleteServer": "Rhowch y cyfrinair cyfredol i ddileu'r gweinydd hwn", @@ -113,7 +118,6 @@ "torSettingsCustomControlPortDescription": "Defnyddiwch borthladd wedi'i deilwra ar gyfer cysylltiadau rheoli i'r dirprwy Tor", "torSettingsUseCustomTorServiceConfiguration": "Defnyddiwch Ffurfweddiad Gwasanaeth Custom Tor (torrc)", "fileSharingSettingsDownloadFolderDescription": "Pan fydd ffeiliau'n cael eu llwytho i lawr yn awtomatig (ee ffeiliau delwedd, pan fydd rhagolygon delwedd yn cael eu galluogi) mae angen lleoliad rhagosodedig i lawrlwytho'r ffeiliau iddo.", - "deleteServerConfirmBtn": "Mewn gwirionedd dileu gweinydd", "deleteServerSuccess": "Wedi dileu gweinydd yn llwyddiannus", "enterServerPassword": "Rhowch gyfrinair i ddatgloi gweinydd", "unlockProfileTip": "Crëwch neu ddatgloi proffil i ddechrau!", diff --git a/lib/l10n/intl_da.arb b/lib/l10n/intl_da.arb index 509e2493..1e26a2bf 100644 --- a/lib/l10n/intl_da.arb +++ b/lib/l10n/intl_da.arb @@ -1,6 +1,12 @@ { "@@locale": "da", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Ja fjern server", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupper som jeg er vært for på denne server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -159,7 +165,6 @@ "displayNameTooltip": "Vælg et navn til præsentation", "manageKnownServersButton": "Administrer kendte Servere", "fieldDescriptionLabel": "Beskrivelse", - "groupsOnThisServerLabel": "Grupper som jeg er vært for på denne server", "importLocalServerButton": "Importer %1", "importLocalServerSelectText": "Vælg lokal Server", "importLocalServerLabel": "Importer en lokalt administreret server", @@ -171,7 +176,6 @@ "fileSavedTo": "Gemt på", "encryptedServerDescription": "Ved at kryptere en server med et password beskytter du mod angreb fra andre brugere af denne enhed. Krypterede servere kan ikke tilgås, aflæses eller vises før det korrekte password er blevet brugt til at åbne dem.", "plainServerDescription": "Vi anbefaler at du beskytter dine Cwtch servere med et password. Hvis ikke du sætter et password kan alle med adgang til denne enhed indsamle information om denne server samt hente beskyttede krypteringsnøgler.", - "deleteServerConfirmBtn": "Ja fjern server", "deleteServerSuccess": "Fjernede server", "enterCurrentPasswordForDeleteServer": "Indtast nuværende password for at fjerne denne server", "copyAddress": "Kopier Adresse", diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 3f674676..d2e5b3d0 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,6 +1,12 @@ { "@@locale": "de", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Server wirklich löschen", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Gruppen, in denen ich bin, werden auf diesem Server gehostet", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "retryConnection": "Wiederholen", "retryConnectionTooltip": "Cwtch wiederholt die Versuche regelmäßig, aber du kannst Cwtch anweisen, es früher zu versuchen, indem du diese Taste drückst.", "localeJa": "Japanisch \/ 日本語", @@ -285,7 +291,6 @@ "copyAddress": "Adresse kopieren", "enterCurrentPasswordForDeleteServer": "Bitte gib das aktuelle Passwort ein, um diesen Server zu löschen", "deleteServerSuccess": "Server erfolgreich gelöscht", - "deleteServerConfirmBtn": "Server wirklich löschen", "plainServerDescription": "Wir empfehlen, dass du deinen Cwtch-Server mit einem Passwort schützst. Wenn Du diesen Server nicht mit einem Kennwort versiehst, kann jeder, der Zugang zu diesem Gerät hat, auf Informationen über diesen Server zugreifen, einschließlich sensibler kryptografischer Schlüssel.", "encryptedServerDescription": "Das Verschlüsseln eines Servers mit einem Kennwort schützt ihn vor anderen Personen, die dieses Gerät ebenfalls benutzen könnten. Verschlüsselte Server können nicht entschlüsselt, angezeigt oder aufgerufen werden, bis das richtige Kennwort eingegeben wird, um sie zu entsperren.", "fileSavedTo": "Gesichert in", @@ -297,7 +302,6 @@ "importLocalServerLabel": "Importieren eines lokal gehosteten Servers", "importLocalServerSelectText": "Lokalen Server auswählen", "importLocalServerButton": "%1 importieren", - "groupsOnThisServerLabel": "Gruppen, in denen ich bin, werden auf diesem Server gehostet", "fieldDescriptionLabel": "Beschreibung", "manageKnownServersButton": "Bekannte Server verwalten", "displayNameTooltip": "Bitte gib einen Anzeigenamen ein", diff --git a/lib/l10n/intl_el.arb b/lib/l10n/intl_el.arb index 550e3fe9..aa587944 100644 --- a/lib/l10n/intl_el.arb +++ b/lib/l10n/intl_el.arb @@ -1,6 +1,12 @@ { "@@locale": "el", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -202,11 +208,9 @@ "experimentClickableLinksDescription": "The clickable links experiment allows you to click on URLs shared in messages", "enableExperimentClickableLinks": "Enable Clickable Links", "serverMetricsLabel": "Server Metrics", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", - "deleteServerConfirmBtn": "Really delete server", "settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers", "settingServers": "Hosting Servers", "unlockProfileTip": "Please create or unlock a profile to begin!", diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 10a8930a..e4e1229d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -1,6 +1,12 @@ { "@@locale": "en", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -157,7 +163,6 @@ "displayNameTooltip": "Please enter a display name", "manageKnownServersButton": "Manage Known Servers", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", @@ -170,7 +175,6 @@ "fileSavedTo": "Saved to", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", - "deleteServerConfirmBtn": "Really delete server", "deleteServerSuccess": "Successfully deleted server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "copyAddress": "Copy Address", diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 718e0975..8ef62797 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,6 +1,12 @@ { "@@locale": "es", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Realmente eliminar el servidor", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupos alojados en este servidor en los que estoy", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -132,8 +138,6 @@ "torSettingsCustomControlPort": "Puerto de control personalizado", "torSettingsCustomSocksPortDescription": "Usar un puerto personalizad para conexiones de datos al proxy Tor", "serverMetricsLabel": "Métricas del servidor", - "groupsOnThisServerLabel": "Grupos alojados en este servidor en los que estoy", - "deleteServerConfirmBtn": "Realmente eliminar el servidor", "settingServersDescription": "El experimento de alojar servidores permite alojar y administrar servidores de Cwtch", "settingServers": "Alojar Servidores", "unlockProfileTip": "Crea o desbloquea un perfil para comenzar!", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 76d19b3e..9b747aa9 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,6 +1,12 @@ { "@@locale": "fr", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Supprimer vraiment le serveur", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Les groupes dont je fais partie sont hébergés sur ce serveur", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -168,7 +174,6 @@ "importLocalServerSelectText": "Sélectionnez le serveur local", "importLocalServerLabel": "Importer un serveur hébergé localement", "importLocalServerButton": "Importer %1", - "groupsOnThisServerLabel": "Les groupes dont je fais partie sont hébergés sur ce serveur", "fieldDescriptionLabel": "Description", "savePeerHistoryDescription": "Détermine s'il faut ou non supprimer tout historique associé au contact.", "newMessagesLabel": "Nouveaux messages", @@ -181,7 +186,6 @@ "enterCurrentPasswordForDeleteServer": "Veuillez saisir le mot de passe actuel pour supprimer ce serveur", "encryptedServerDescription": "Le chiffrement d’un serveur avec un mot de passe le protège des autres personnes qui peuvent également utiliser cet appareil. Les serveurs cryptés ne peuvent pas être déchiffrés, affichés ou accessibles tant que le mot de passe correct n’est pas entré pour les déverrouiller.", "deleteServerSuccess": "Le serveur a été supprimé avec succès", - "deleteServerConfirmBtn": "Supprimer vraiment le serveur", "unlockServerTip": "Veuillez créer ou déverrouiller un serveur pour commencer !", "unlockProfileTip": "Veuillez créer ou déverrouiller un profil pour commencer !", "settingServersDescription": "L'expérience des serveurs d'hébergement permet d'héberger et de gérer les serveurs Cwtch.", diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb index 55afd944..66141be6 100644 --- a/lib/l10n/intl_it.arb +++ b/lib/l10n/intl_it.arb @@ -1,37 +1,43 @@ { "@@locale": "it", - "@@last_modified": "2023-06-04T17:50:20+02:00", - "localeUk": "Ukrainian \/ українською", - "profileEnabledDescription": "Activate or Deactivate the profile.", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Elimina davvero il server", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Gruppi di cui sono parte su questo server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", + "retryConnectionTooltip": "Cwtch riprova i peer regolarmente, ma puoi dire a Cwtch di provare prima premendo questo pulsante.", + "localeJa": "Giapponese \/ 日本語", + "fontScalingDescription": "Regola il fattore di scala relativo dei caratteri applicato al testo e ai widget.", + "localeSv": "Svedese \/ Svenska", "localeSw": "Swahili \/ Kiswahili", - "localeSv": "Swedish \/ Svenska", - "fontScalingDescription": "Adjust the relative font scaling factor applied to text and widgets.", + "localeUk": "Ucraino \/українською", + "localeNl": "Olandese \/ Dutch", + "localePtBr": "Portoghese brasiliano \/ Português do Brasil", + "profileAutostartLabel": "Avvio automatico", + "profileEnabled": "Abilita", + "profileAutostartDescription": "Controlla se il profilo verrà lanciato automaticamente all'avvio.", + "profileEnabledDescription": "Attiva o disattiva il profilo.", + "localeSk": "Slovacco \/ Slovák", + "localeKo": "Coreano \/ 한국어", + "blodeuweddExperimentEnable": "Assistente Blodeuwedd", + "blodeuweddDescription": "L'assistente Blodeuwedd aggiunge nuove funzionalità a Cwtch come il riepilogo della trascrizione della chat e la traduzione dei messaggi tramite un modello linguistico ospitato localmente.", + "blodeuweddNotSupported": "Questa versione di Cwtch è stata compilata senza il supporto per l'assistente Blodeuwedd.", + "blodeuweddPath": "La directory in cui si trova Blodeuwedd sul tuo computer.", + "blodeuweddSummarize": "Riassumi la conversazione", + "blodeuweddTranslate": "Traduci il messaggio", + "blodeuweddProcessing": "Blodeuwedd sta elaborando...", + "blodeuweddWarning": "Blodeuwedd utilizza un modello linguistico locale e una serie di piccoli modelli ausiliari per alimentare la sua funzionalità. Queste tecniche sono spesso molto efficaci ma non prive di errori. \n\nSebbene ci siamo impegnati per ridurre al minimo il rischio, esiste ancora la possibilità che i risultati di Blodeuwedd siano errati, allucinati e\/o offensivi. \n\nPer questo Blodeuwedd richiede il download di due componenti aggiuntivi separati da Cwtch, il Blodeuwedd Model (o un modello compatibile) e il Blodeuwedd Runner. \n\nVedere https:\/\/docs.cwtch.im\/docs\/settings\/experiments\/blodeuwedd per ulteriori informazioni su come ottenere questi componenti e configurarli.", + "availabilityStatusAvailable": "Disponibile", + "availabilityStatusAway": "Assente", + "availabilityStatusBusy": "Non disponibile", + "availabilityStatusTooltip": "Imposta il tuo stato di disponibilità", + "profileInfoHint": "Aggiungi qui alcune informazioni personali pubbliche, ad esempio blog, siti web, breve biografia.", + "profileInfoHint2": "È possibile aggiungere fino a 3 campi.", + "profileInfoHint3": "I contatti potranno vedere queste informazioni nelle Impostazioni di conversazione. ", + "retryConnection": "Riprova", "defaultScalingText": "Testo di dimensioni predefinite (fattore di scala:", - "localeJa": "Japanese \/ 日本語", - "retryConnectionTooltip": "Cwtch retries peers regularly, but you can tell Cwtch to try sooner by pushing this button.", - "retryConnection": "Retry", - "availabilityStatusTooltip": "Set your availability status", - "profileInfoHint3": "Contacts will be able to see this information in Conversation Settings ", - "profileInfoHint2": "You can add up to 3 fields.", - "profileInfoHint": "Add some public information about yourself here e.g. blog, websites, brief bio.", - "availabilityStatusBusy": "Busy", - "availabilityStatusAway": "Away", - "availabilityStatusAvailable": "Available", - "blodeuweddWarning": "Blodeuwedd uses a local language model and a set of small auxiliary models to power its functionality. These techniques are often very effective they are not without error. \n\nWhile we have taken efforts to minimize the risk, there is still the possibility that Blodeuwedd outputs will be incorrect, hallucinated and\/or offensive.\n\nBecause of that Blodeuwedd requires downloading two additional components separate from Cwtch, the Blodeuwedd Model (or a compatible model) and the Blodeuwedd Runner. \n\nSee https:\/\/docs.cwtch.im\/docs\/settings\/experiments\/blodeuwedd for more information on obtaining these components and setting them up.", - "blodeuweddProcessing": "Blodeuwedd is processing...", - "blodeuweddTranslate": "Translate Message", - "blodeuweddSummarize": "Summarize Conversation", - "blodeuweddPath": "The directory where the Blodeuwedd is located on your computer.", - "blodeuweddNotSupported": "This version of Cwtch has been compiled without support for the Blodeuwedd Assistant.", - "blodeuweddDescription": "The Blodeuwedd assistant adds new features to Cwtch such as chat transcript summarization and message translation via a locally hosted language model.", - "blodeuweddExperimentEnable": "Blodeuwedd Assistant", - "localeKo": "Korean \/ 한국어", - "localeSk": "Slovak \/ Slovák", - "profileAutostartDescription": "Controls if the profile will be automatically launched on startup", - "profileEnabled": "Enable", - "profileAutostartLabel": "Autostart", - "localePtBr": "Brazilian Portuguese \/ Português do Brasil", - "localeNl": "Dutch \/ Dutch", "tooltipPinConversation": "Aggiungi la conversazione in cima alla lista \"Conversazioni\"", "tooltipUnpinConversation": "Rimuovi la conversazione dalla cima della lista \"Conversazioni\"", "errorDownloadDirectoryDoesNotExist": "La condivisione file non può essere abilitata perché la destinazione dei download non è stata impostata o è impostata su una cartella che non esiste.", @@ -206,7 +212,6 @@ "profileOnionLabel": "Invia questo indirizzo ai contatti con cui vuoi connetterti", "importLocalServerLabel": "Importa un server ospitato localmente", "importLocalServerButton": "Importa %1", - "groupsOnThisServerLabel": "Gruppi di cui sono parte su questo server", "fieldDescriptionLabel": "Descrizione", "displayNameTooltip": "Inserisci un nome visualizzato", "manageKnownServersShort": "Server", @@ -268,7 +273,6 @@ "copyAddress": "Copia indirizzo", "enterCurrentPasswordForDeleteServer": "Inserisci la password attuale per eliminare questo server", "deleteServerSuccess": "Server eliminato con successo", - "deleteServerConfirmBtn": "Elimina davvero il server", "encryptedServerDescription": "Criptare un server con una password lo protegge da altre persone che potrebbero usare questo dispositivo. I server criptati non possono essere decriptati, visualizzati o accessibili finché non viene inserita la password corretta per sbloccarli.", "fileSavedTo": "Salvato in", "fileInterrupted": "Interrotto", diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 318a88fb..d1e9a54b 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,6 +1,12 @@ { "@@locale": "ja", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -186,7 +192,6 @@ "displayNameTooltip": "Please enter a display name", "manageKnownServersButton": "Manage Known Servers", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", @@ -196,7 +201,6 @@ "fileCheckingStatus": "Checking download status", "fileInterrupted": "Interrupted", "fileSavedTo": "Saved to", - "deleteServerConfirmBtn": "Really delete server", "deleteServerSuccess": "Successfully deleted server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "copyAddress": "Copy Address", diff --git a/lib/l10n/intl_ko.arb b/lib/l10n/intl_ko.arb index 989b0db6..a29d8d72 100644 --- a/lib/l10n/intl_ko.arb +++ b/lib/l10n/intl_ko.arb @@ -1,6 +1,134 @@ { "@@locale": "ko", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", + "showMessageButton": "메시지 표시", + "addContactConfirm": "연락처 %1 추가", + "addContact": "연락처 추가", + "sendMessage": "메시지 보내기", + "cancel": "취소", + "rejected": "거부!", + "accepted": "수락!", + "localeIt": "이탈리아어 \/ Italiano", + "localeEs": "스페인어 \/ Español", + "yourProfiles": "내 프로필", + "addNewProfileBtn": "새 프로필 추가", + "copiedToClipboardNotification": "클립보드에 복사됨", + "tooltipHidePassword": "비밀번호 숨기기", + "tooltipShowPassword": "비밀번호 표시", + "enterCurrentPasswordForDelete": "이 프로파일을 삭제하려면 현재 비밀번호를 입력하십시오.", + "password": "비밀번호", + "passwordErrorMatch": "비밀번호가 일치하지 않습니다.", + "passwordErrorEmpty": "비밀번호는 비워 둘 수 없습니다.", + "password2Label": "비밀번호를 다시 입력하세요", + "password1Label": "비밀번호", + "currentPasswordLabel": "현제 비밀번호", + "noPasswordWarning": "이 계정에서 비밀번호를 사용하지 않으면 로컬에 저장된 모든 데이터가 암호화되지 않습니다", + "radioNoPassword": "암호화되지 않음(비밀번호 없음)", + "radioUsePassword": "비밀번호", + "newPassword": "새 비밀번호", + "yesLeave": "이 대화에서 나가기 확인", + "leaveConversation": "이 대화에서 나가기", + "shutdownCwtchAction": "Cwtch (크치)를 종료", + "shutdownCwtchTooltip": "Cwtch (크치)를 종료", + "shutdownCwtchDialogTitle": "Cwtch (크치)를 종료하시겠습니까?", + "successfullAddedContact": "성공적으로 추가되었습니다.", + "titleManageServers": "서버 관리", + "cwtchSettingsTitle": "Cwtch (크치) 설정", + "titleManageProfiles": "Cwtch (크치) 프로파일 관리", + "tooltipAddContact": "새 연락처 또는 대화 추가", + "tooltipOpenSettings": "설정 창 열기", + "contactAlreadyExists": "연락처가 이미 있음", + "conversationSettings": "대화 설정", + "titleManageContacts": "대화", + "enableGroups": "그룹 채팅 사용", + "zoomLabel": "인터페이스 확대\/축소(주로 텍스트 및 버튼 크기에 영향을 줌)", + "blockUnknownLabel": "알 수 없는 연락처 차단", + "unlock": "잠금 해제", + "acceptGroupInviteLabel": "초대를 수락하시겠습니까?", + "bulletinsBtn": "게시판", + "update": "업데이트", + "serverNotSynced": "새 메시지 동기화 중(시간이 걸릴 수 있음)...", + "serverConnectivityDisconnected": "서버 연결 끊김", + "search": "검색...", + "postNewBulletinLabel": "새 게시판 게시", + "newBulletinLabel": "새 게시판", + "joinGroup": "그룹 가입", + "invitation": "초대", + "joinGroupTab": "그룹 가입", + "displayNameLabel": "표시 이름", + "puzzleGameBtn": "퍼즐 게임", + "searchList": "목록 검색", + "inviteBtn": "초대", + "inviteToGroupLabel": "그룹에 초대", + "groupNameLabel": "그룹 이름", + "viewServerInfo": "서버 정보", + "titlePlaceholder": "자격", + "addProfileTitle": "새 프로필 추가", + "newProfile": "새 프로필", + "newConnectionPaneTitle": "새로운 연결", + "networkStatusOnline": "온라인", + "smallTextLabel": "작은", + "themeLight": "밝음", + "settingTheme": "밝은 테마 사용", + "themeDark": "어둠", + "largeTextLabel": "큰", + "localeDe": "독일어 \/ Deutsch", + "localePt": "포르투갈어 \/ Português", + "localeFr": "프랑스어 \/ Français", + "localeEn": "영어 \/ English", + "settingLanguage": "언어", + "yourServers": "서버", + "deleteBtn": "삭제", + "saveBtn": "저장", + "serverSynced": "동기화", + "serverConnectivityConnected": "서버 연결됨", + "serverInfo": "서버 정보", + "invitationLabel": "초대", + "serverLabel": "서버", + "blocked": "차단됨", + "createGroup": "그룹 만들기", + "addPeer": "연락처 추가", + "groupAddr": "주소", + "server": "서버", + "peerName": "이름", + "peerAddress": "주소", + "builddate": "Built on: %2", + "deleteProfileConfirmBtn": "프로필 삭제 확인", + "deleteConfirmLabel": "DELETE를 입력하여 확인", + "deleteProfileBtn": "프로필 삭제", + "saveProfileBtn": "프로필 저장", + "createProfileBtn": "프로필 만들기", + "yourDisplayName": "표시 이름", + "profileOnionLabel": "연결하려는 연락처에 이 주소를 보냅니다.", + "editProfile": "프로필 편집", + "defaultProfileName": "앨리스", + "profileName": "표시 이름", + "editProfileTitle": "프로필 편집", + "dontSavePeerHistory": "기록 삭제", + "savePeerHistory": "기록 저장", + "blockBtn": "연락처 차단", + "addressLabel": "주소", + "listsBtn": "목록", + "chatBtn": "채팅", + "acceptGroupBtn": "동의", + "rejectGroupBtn": "거부", + "newGroupBtn": "새 그룹 만들기", + "copyBtn": "복사", + "peerOfflineMessage": "연락처가 오프라인 상태이므로 지금은 메시지를 전달할 수 없습니다.", + "peerBlockedMessage": "연락처가 차단되었습니다.", + "pendingLabel": "보류 중", + "acknowledgedLabel": "인정됨", + "couldNotSendMsgError": "이 메시지를 보낼 수 없습니다.", + "dmTooltip": "DM으로 클릭하세요.", + "membershipDescription": "다음은 그룹에 메시지를 보낸 사용자 목록입니다. 이 목록에는 그룹에 액세스할 수 있는 모든 사용자가 표시되지 않을 수 있습니다.", + "addListItemBtn": "아이템 추가", + "peerNotOnline": "연락처가 오프라인 상태입니다. 지금은 응용 프로그램을 사용할 수 없습니다.", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "프로필 시각 또는 중지", "localeSw": "Swahili \/ Kiswahili", @@ -14,7 +142,6 @@ "addPeerTab": "연락처 추가", "createGroupBtn": "창조", "defaultGroupName": "굉장한 그룹", - "serverLabel": "Server", "createGroupTitle": "그룹 만들기", "availabilityStatusAway": "자리 비움", "availabilityStatusBusy": "바쁘다", @@ -63,8 +190,6 @@ "notificationContentContactInfo": "대화 정보", "newMessageNotificationConversationInfo": "%1의 새로운 메시지", "localePl": "폴란드어 \/ Polski", - "addContact": "Add contact", - "addContactConfirm": "Add contact %1", "downloadFileButton": "다운로드", "labelFilesize": "크기", "messageFileSent": "파일을 보냈습니다.", @@ -172,7 +297,6 @@ "serverTotalMessagesLabel": "Total Messages", "displayNameTooltip": "Please enter a display name", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", "copyServerKeys": "Copy keys", @@ -182,7 +306,6 @@ "fileSavedTo": "Saved to", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", - "deleteServerConfirmBtn": "Really delete server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers", "enterServerPassword": "Enter password to unlock server", @@ -207,7 +330,6 @@ "streamerModeLabel": "Streamer\/Presentation Mode", "archiveConversation": "Archive this Conversation", "blockUnknownConnectionsEnabledDescription": "Connections from unknown contacts are blocked. You can change this in Settings", - "showMessageButton": "Show Message", "blockedMessageMessage": "This message is from a profile you have blocked.", "placeholderEnterMessage": "Type a message...", "plainProfileDescription": "We recommend that you protect your Cwtch profiles with a password. If you do not set a password on this profile then anyone who has access to this device may be able to access information about this profile, including contacts, messages and sensitive cryptographic keys.", @@ -225,13 +347,8 @@ "tooltipAcceptContactRequest": "Accept this contact request.", "notificationNewMessageFromGroup": "New message in a group!", "notificationNewMessageFromPeer": "New message from a contact!", - "tooltipHidePassword": "Hide Password", - "tooltipShowPassword": "Show Password", "groupInviteSettingsWarning": "You have been invited to join a group! Please enable the Group Chat Experiment in Settings to view this Invitation.", - "shutdownCwtchAction": "Shutdown Cwtch", "shutdownCwtchDialog": "Are you sure you want to shutdown Cwtch? This will close all connections, and exit the application.", - "shutdownCwtchDialogTitle": "Shutdown Cwtch?", - "shutdownCwtchTooltip": "Shutdown Cwtch", "malformedMessage": "Malformed message", "profileDeleteSuccess": "Successfully deleted profile", "debugLog": "Turn on console debug logging", @@ -242,150 +359,37 @@ "addServerFirst": "You need to add a server before you can create a group", "deleteProfileSuccess": "Successfully deleted profile", "sendInvite": "Send a contact or group invite", - "sendMessage": "Send Message", - "cancel": "Cancel", "resetTor": "Reset", "torStatus": "Tor Status", "torVersion": "Tor Version", "sendAnInvitation": "You sent an invitation for: ", "contactSuggestion": "This is a contact suggestion for: ", - "rejected": "Rejected!", - "accepted": "Accepted!", "chatHistoryDefault": "This conversation will be deleted when Cwtch is closed! Message history can be enabled per-conversation via the Settings menu in the upper right.", - "newPassword": "New Password", - "yesLeave": "Yes, Leave This Conversation", "reallyLeaveThisGroupPrompt": "Are you sure you want to leave this conversation? All messages and attributes will be deleted.", - "leaveConversation": "Leave This Conversation", "inviteToGroup": "You have been invited to join a group:", - "titleManageServers": "Manage Servers", - "successfullAddedContact": "Successfully added ", "descriptionBlockUnknownConnections": "If turned on, this option will automatically close connections from Cwtch users that have not been added to your contact list.", "descriptionExperimentsGroups": "The group experiment allows Cwtch to connect with untrusted server infrastructure to facilitate communication with more than one contact.", "descriptionExperiments": "Cwtch experiments are optional, opt-in features that add additional functionality to Cwtch that may have different privacy considerations than traditional 1:1 metadata resistant chat e.g. group chat, bot integration etc.", - "titleManageProfiles": "Manage Cwtch Profiles", "tooltipUnlockProfiles": "Unlock encrypted profiles by entering their password.", - "titleManageContacts": "Conversations", - "tooltipAddContact": "Add a new contact or conversation", - "tooltipOpenSettings": "Open the settings pane", - "contactAlreadyExists": "Contact Already Exists", "invalidImportString": "Invalid import string", - "conversationSettings": "Conversation Settings", - "enterCurrentPasswordForDelete": "Please enter current password to delete this profile.", - "enableGroups": "Enable Group Chat", - "localeIt": "Italian \/ Italiano", - "localeEs": "Spanish \/ Español", "todoPlaceholder": "Todo...", "addNewItem": "Add a new item to the list", "addListItem": "Add a New List Item", - "newConnectionPaneTitle": "New Connection", - "networkStatusOnline": "Online", "networkStatusConnecting": "Connecting to network and contacts...", "networkStatusAttemptingTor": "Attempting to connect to Tor network", "networkStatusDisconnected": "Disconnected from the internet, check your connection", "viewGroupMembershipTooltip": "View Group Membership", "loadingTor": "Loading tor...", - "smallTextLabel": "Small", - "builddate": "Built on: %2", "version": "Version %1", "versionTor": "Version %1 with tor %2", "experimentsEnabled": "Enable Experiments", - "themeDark": "Dark", - "themeLight": "Light", - "settingTheme": "Use Light Themes", - "largeTextLabel": "Large", "settingInterfaceZoom": "Zoom level", - "localeDe": "German \/ Deutsch", - "localePt": "Portuguese \/ Portuguesa", - "localeFr": "French \/ Français", - "localeEn": "English \/ English", - "settingLanguage": "Language", - "blockUnknownLabel": "Block Unknown Contacts", - "zoomLabel": "Interface zoom (mostly affects text and button sizes)", "versionBuilddate": "Version: %1 Built on: %2", - "cwtchSettingsTitle": "Cwtch Settings", - "unlock": "Unlock", - "yourServers": "Your Servers", - "yourProfiles": "Your Profiles", "error0ProfilesLoadedForPassword": "0 profiles loaded with that password", - "password": "Password", "enterProfilePassword": "Enter a password to view your profiles", - "addNewProfileBtn": "Add new profile", "deleteConfirmText": "DELETE", - "deleteProfileConfirmBtn": "Really Delete Profile", - "deleteConfirmLabel": "Type DELETE to confirm", - "deleteProfileBtn": "Delete Profile", "passwordChangeError": "Error changing password: Supplied password rejected", - "passwordErrorMatch": "Passwords do not match", - "saveProfileBtn": "Save Profile", - "createProfileBtn": "Create Profile", - "passwordErrorEmpty": "Password cannot be empty", - "password2Label": "Reenter password", - "password1Label": "Password", - "currentPasswordLabel": "Current Password", - "yourDisplayName": "Your Display Name", - "profileOnionLabel": "Send this address to contacts you want to connect with", - "noPasswordWarning": "Not using a password on this account means that all data stored locally will not be encrypted", - "radioNoPassword": "Unencrypted (No password)", - "radioUsePassword": "Password", - "editProfile": "Edit Profile", - "newProfile": "New Profile", - "defaultProfileName": "Alice", - "profileName": "Display name", - "editProfileTitle": "Edit Profile", - "addProfileTitle": "Add new profile", - "deleteBtn": "Delete", "unblockBtn": "Unblock Contact", - "dontSavePeerHistory": "Delete History", "savePeerHistoryDescription": "Determines whether to delete any history associated with the contact.", - "savePeerHistory": "Save History", - "blockBtn": "Block Contact", - "saveBtn": "Save", - "displayNameLabel": "Display Name", - "copiedToClipboardNotification": "Copied to Clipboard", - "addressLabel": "Address", - "puzzleGameBtn": "Puzzle Game", - "bulletinsBtn": "Bulletins", - "listsBtn": "Lists", - "chatBtn": "Chat", - "rejectGroupBtn": "Reject", - "acceptGroupBtn": "Accept", - "acceptGroupInviteLabel": "Do you want to accept the invitation to", - "newGroupBtn": "Create new group", - "copyBtn": "Copy", - "peerOfflineMessage": "Contact is offline, messages can't be delivered right now", - "peerBlockedMessage": "Contact is blocked", - "pendingLabel": "Pending", - "acknowledgedLabel": "Acknowledged", - "couldNotSendMsgError": "Could not send this message", - "dmTooltip": "Click to DM", - "membershipDescription": "Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.", - "addListItemBtn": "Add Item", - "peerNotOnline": "Contact is offline. Applications cannot be used right now.", - "searchList": "Search List", - "update": "Update", - "inviteBtn": "Invite", - "inviteToGroupLabel": "Invite to group", - "groupNameLabel": "Group Name", - "viewServerInfo": "Server Info", - "serverNotSynced": "Syncing New Messages (This can take some time)...", - "serverSynced": "Synced", - "serverConnectivityDisconnected": "Server Disconnected", - "serverConnectivityConnected": "Server Connected", - "serverInfo": "Server Information", - "invitationLabel": "Invitation", - "search": "Search...", - "blocked": "Blocked", - "pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation", - "titlePlaceholder": "title...", - "postNewBulletinLabel": "Post new bulletin", - "newBulletinLabel": "New Bulletin", - "joinGroup": "Join group", - "createGroup": "Create group", - "addPeer": "Add Contact", - "groupAddr": "Address", - "invitation": "Invitation", - "server": "Server", - "peerName": "Name", - "peerAddress": "Address", - "joinGroupTab": "Join a group" + "pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation" } \ No newline at end of file diff --git a/lib/l10n/intl_lb.arb b/lib/l10n/intl_lb.arb index 7f12b905..0ebd024f 100644 --- a/lib/l10n/intl_lb.arb +++ b/lib/l10n/intl_lb.arb @@ -1,6 +1,12 @@ { "@@locale": "lb", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -250,7 +256,6 @@ "displayNameTooltip": "Please enter a display name", "manageKnownServersButton": "Manage Known Servers", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", @@ -262,7 +267,6 @@ "fileSavedTo": "Saved to", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", - "deleteServerConfirmBtn": "Really delete server", "deleteServerSuccess": "Successfully deleted server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "copyAddress": "Copy Address", diff --git a/lib/l10n/intl_nl.arb b/lib/l10n/intl_nl.arb index 14114ee6..ebb60fa5 100644 --- a/lib/l10n/intl_nl.arb +++ b/lib/l10n/intl_nl.arb @@ -1,31 +1,37 @@ { "@@locale": "nl", - "@@last_modified": "2023-06-04T17:50:20+02:00", - "localeUk": "Ukrainian \/ українською", - "profileEnabledDescription": "Start of stop het profiel", - "localeSw": "Swahili \/ Kiswahili", - "localeSv": "Swedish \/ Svenska", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Server echt verwijderen", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Groepen waarin ik zit gehost op deze server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", + "profileEnabledDescription": "Activeer of deactiveer het profiel.", + "defaultScalingText": "Lettertype schalen", + "blodeuweddSummarize": "Gesprek samenvatten", + "blodeuweddTranslate": "Bericht vertalen", + "blodeuweddProcessing": "Blodeuwedd is aan het verwerken...", + "blodeuweddPath": "De map waar de Blodeuwedd zich bevindt op je computer.", + "blodeuweddNotSupported": "Deze versie van Cwtch is gecompileerd zonder ondersteuning voor de Blodeuwedd Assistant.", + "blodeuweddExperimentEnable": "Blodeuwedd Assistent", + "localeKo": "Koreaans \/ 한국어", "fontScalingDescription": "Adjust the relative font scaling factor applied to text and widgets.", - "defaultScalingText": "Standaardtekstgrootte (schaalfactor:", - "localeJa": "Japanese \/ 日本語", + "availabilityStatusTooltip": "Stel je beschikbaarheidsstatus in", + "profileInfoHint2": "Je kunt maximaal 3 velden toevoegen.", + "availabilityStatusBusy": "Bezig", + "availabilityStatusAway": "Afwezig", + "availabilityStatusAvailable": "Beschikbaar", + "retryConnection": "Opnieuw", + "localeJa": "Japans \/ 日本語", + "localeSv": "Zweeds \/ Svenska", + "localeSw": "Swahili \/ Kiswahili", + "localeUk": "Oekraïens \/ українською", "retryConnectionTooltip": "Cwtch retries peers regularly, but you can tell Cwtch to try sooner by pushing this button.", - "retryConnection": "Retry", - "availabilityStatusTooltip": "Set your availability status", "profileInfoHint3": "Contacts will be able to see this information in Conversation Settings ", - "profileInfoHint2": "You can add up to 3 fields.", "profileInfoHint": "Add some public information about yourself here e.g. blog, websites, brief bio.", - "availabilityStatusBusy": "Busy", - "availabilityStatusAway": "Away", - "availabilityStatusAvailable": "Available", "blodeuweddWarning": "Blodeuwedd uses a local language model and a set of small auxiliary models to power its functionality. These techniques are often very effective they are not without error. \n\nWhile we have taken efforts to minimize the risk, there is still the possibility that Blodeuwedd outputs will be incorrect, hallucinated and\/or offensive.\n\nBecause of that Blodeuwedd requires downloading two additional components separate from Cwtch, the Blodeuwedd Model (or a compatible model) and the Blodeuwedd Runner. \n\nSee https:\/\/docs.cwtch.im\/docs\/settings\/experiments\/blodeuwedd for more information on obtaining these components and setting them up.", - "blodeuweddProcessing": "Blodeuwedd is processing...", - "blodeuweddTranslate": "Translate Message", - "blodeuweddSummarize": "Summarize Conversation", - "blodeuweddPath": "The directory where the Blodeuwedd is located on your computer.", - "blodeuweddNotSupported": "This version of Cwtch has been compiled without support for the Blodeuwedd Assistant.", "blodeuweddDescription": "The Blodeuwedd assistant adds new features to Cwtch such as chat transcript summarization and message translation via a locally hosted language model.", - "blodeuweddExperimentEnable": "Blodeuwedd Assistant", - "localeKo": "Korean \/ 한국어", "profileAutostartDescription": "Regelt of het profiel automatisch wordt gestart bij het opstarten", "profileAutostartLabel": "Automatisch starten", "profileEnabled": "Inschakelen", @@ -77,7 +83,6 @@ "addContactFirst": "Voeg een contact toe of kies een contact om te beginnen met chatten.", "experimentClickableLinksDescription": "Het klikbare links experiment maakt het mogelijk op URLs te klikken in berichten", "enableExperimentClickableLinks": "Klikbare links inschakelen", - "groupsOnThisServerLabel": "Groepen waarin ik zit gehost op deze server", "displayNameTooltip": "Voer een weergavenaam in", "tooltipBackToMessageEditing": "Terug naar bericht bewerken", "editServerTitle": "Server bewerken", @@ -147,7 +152,6 @@ "fileCheckingStatus": "Downloadstatus controleren", "fileInterrupted": "Onderbroken", "fileSavedTo": "Opgeslagen in", - "deleteServerConfirmBtn": "Server echt verwijderen", "deleteServerSuccess": "Server succesvol verwijderd", "enterCurrentPasswordForDeleteServer": "Voer huidige wachtwoord in om deze server te verwijderen", "settingServersDescription": "Het servers hosten experiment maakt het mogelijk Cwtch-servers te hosten en te beheren", diff --git a/lib/l10n/intl_no.arb b/lib/l10n/intl_no.arb index 7d1612b9..109060ee 100644 --- a/lib/l10n/intl_no.arb +++ b/lib/l10n/intl_no.arb @@ -1,6 +1,12 @@ { "@@locale": "no", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Slette tjener", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupper jeg er vert for på denne tjeneren", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -160,7 +166,6 @@ "displayNameTooltip": "Oppgi visningsnavn", "manageKnownServersButton": "Tilpass kjente tjenere", "fieldDescriptionLabel": "Beskrivelse", - "groupsOnThisServerLabel": "Grupper jeg er vert for på denne tjeneren", "importLocalServerButton": "Importér %1", "importLocalServerSelectText": "Velg lokal tjener", "importLocalServerLabel": "Importér en lokal tjener", @@ -172,7 +177,6 @@ "fileSavedTo": "Lagret til", "encryptedServerDescription": "Kryptering av en tjener med passord beskytter den mot andre som også bruker dette systemet. Krytperte tjenere må låses opp med det korrekte passordet før de kan dekrypteres, vises eller benyttes.", "plainServerDescription": "Vi anbefaler at du beskyter Cwetch-tjenere med et passord. Dersom du ikke setter et passord for tjeneren så kan hvem som helst med tilgang til enheten få fult innsyn i informasjon om tjeneren, inklusive kryptonøkler.", - "deleteServerConfirmBtn": "Slette tjener", "deleteServerSuccess": "Tjener slettet", "enterCurrentPasswordForDeleteServer": "Oppgi passord for å slette tjener", "copyAddress": "Kopiér adresse", diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index 0a77d305..64cd3993 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,6 +1,12 @@ { "@@locale": "pl", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Usuń", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupy na tym serwerze, których jesteś członkiem", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -261,7 +267,6 @@ "displayNameTooltip": "Wprowadź nazwę", "manageKnownServersButton": "Zarządzaj znanymi serwerami", "fieldDescriptionLabel": "Opis", - "groupsOnThisServerLabel": "Grupy na tym serwerze, których jesteś członkiem", "importLocalServerButton": "Importuj %1", "importLocalServerSelectText": "Wybierz lokalny serwer", "importLocalServerLabel": "Importuj lokalnie hostowany serwer", @@ -269,7 +274,6 @@ "fileInterrupted": "Przerwano", "encryptedServerDescription": "Zaszyfrowanie serwera hasłem chroni go przed dostępem innych osób korzystających z tego urządzenia.", "plainServerDescription": "Zalecamy ustawienie hasła dla Cwtch. Jeśli hasło nie zostanie ustawione, każdy z dostępem do tego urządzenia uzyska dostęp do tego serwera, w tym do wrażliwych kluczy kryptograficznych.", - "deleteServerConfirmBtn": "Usuń", "deleteServerSuccess": "Usunięto serwer", "settingServersDescription": "Hostowanie serwerów (eksperymentalne) umożliwia tworzenie i zarządzanie serwerami Cwtch", "settingServers": "Hostowanie serwerów", diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 6f996722..63a0b5c5 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -1,6 +1,12 @@ { "@@locale": "pt", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -155,7 +161,6 @@ "displayNameTooltip": "Please enter a display name", "manageKnownServersButton": "Manage Known Servers", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", @@ -167,7 +172,6 @@ "fileSavedTo": "Saved to", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", - "deleteServerConfirmBtn": "Really delete server", "deleteServerSuccess": "Successfully deleted server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "copyAddress": "Copy Address", diff --git a/lib/l10n/intl_pt_BR.arb b/lib/l10n/intl_pt_BR.arb index 9cff9ded..b43a339c 100644 --- a/lib/l10n/intl_pt_BR.arb +++ b/lib/l10n/intl_pt_BR.arb @@ -1,6 +1,12 @@ { "@@locale": "pt_BR", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Realmente excluir servidor", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupos nos quais estou hospedado neste servidor", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -147,7 +153,6 @@ "displayNameTooltip": "Por favor, digite um nome de exibição", "manageKnownServersButton": "Gerenciar Servidores Conhecidos", "fieldDescriptionLabel": "Descrição", - "groupsOnThisServerLabel": "Grupos nos quais estou hospedado neste servidor", "importLocalServerButton": "Importar %1", "importLocalServerSelectText": "Selecione Servidor Local", "importLocalServerLabel": "Importar um servidor hospedado localmente", @@ -160,7 +165,6 @@ "fileSavedTo": "Salvar em", "encryptedServerDescription": "Criptografar um servidor com uma senha o protege de outras pessoas que também podem usar este dispositivo. Os servidores criptografados não podem ser descriptografados, exibidos ou acessados até que a senha correta seja inserida para desbloqueá-los.", "plainServerDescription": "Recomendamos que você proteja seus servidores Cwtch com uma senha. Se você não definir uma senha neste servidor, qualquer pessoa que tenha acesso a este dispositivo poderá acessar informações sobre este servidor, incluindo chaves criptográficas sensíveis.", - "deleteServerConfirmBtn": "Realmente excluir servidor", "deleteServerSuccess": "Servidor excluído com sucesso", "enterCurrentPasswordForDeleteServer": "Por favor, digite a senha atual para excluir este servidor", "copyAddress": "Copiar endereço", diff --git a/lib/l10n/intl_ro.arb b/lib/l10n/intl_ro.arb index 01c3138b..efa6a3ec 100644 --- a/lib/l10n/intl_ro.arb +++ b/lib/l10n/intl_ro.arb @@ -1,6 +1,12 @@ { "@@locale": "ro", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Sigur doriți sa ștergeți serverul", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupurile în care mă aflu care sunt găzduite pe acest server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -313,7 +319,6 @@ "copyAddress": "Copiați adresa", "enterCurrentPasswordForDeleteServer": "Vă rugăm să introduceți parola actuală pentru a șterge acest server", "deleteServerSuccess": "Serverul a fost șters cu succes", - "deleteServerConfirmBtn": "Sigur doriți sa ștergeți serverul", "plainServerDescription": "Vă recomandăm să vă protejați serverele Cwtch cu o parolă. Dacă nu setați o parolă pe acest server, atunci oricine are acces la acest dispozitiva are acces la informații despre acest server, inclusiv la chei criptografice importante.", "fileSavedTo": "Salvat în", "fileInterrupted": "Întrerupt", @@ -324,7 +329,6 @@ "importLocalServerLabel": "Importați un server găzduit local", "importLocalServerSelectText": "Selectați Server local", "importLocalServerButton": "Importă %1", - "groupsOnThisServerLabel": "Grupurile în care mă aflu care sunt găzduite pe acest server", "fieldDescriptionLabel": "Descriere", "manageKnownServersButton": "Gestionați serverele cunoscute", "displayNameTooltip": "Vă rugăm să introduceți un nume de afișat", diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index 0f010dee..7b0ab6cc 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,6 +1,12 @@ { "@@locale": "ru", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Вы точно хотите удалить сервер?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Группы, в которых я нахожусь, размещены на этом сервере", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Activate or Deactivate the profile.", "localeSw": "Swahili \/ Kiswahili", @@ -131,7 +137,6 @@ "themeColorLabel": "Основной цвет темы", "settingDownloadFolder": "Папка для загрузок", "importLocalServerLabel": "Использовать локальный сервер", - "deleteServerConfirmBtn": "Вы точно хотите удалить сервер?", "unlockProfileTip": "Создайте или импортируйте профиль, чтобы начать", "unlockServerTip": "Создайте или импортируйте сервер, чтобы начать", "saveServerButton": "Сохранить", @@ -187,7 +192,6 @@ "displayNameTooltip": "Введите отображаемое имя", "manageKnownServersButton": "Управление серверами", "fieldDescriptionLabel": "Описание", - "groupsOnThisServerLabel": "Группы, в которых я нахожусь, размещены на этом сервере", "importLocalServerButton": "Импорт %1", "importLocalServerSelectText": "Выбрать локальный сервер", "newMessagesLabel": "Новое сообщение", diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index d91a916c..30122657 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,6 +1,12 @@ { "@@locale": "sk", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Vážne vymazať server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Skupiny ktorých som členom a sú hostované na tomto servery", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Spustiť alebo zastaviť profil", "localeSw": "Swahili \/ Kiswahili", @@ -150,7 +156,6 @@ "displayNameTooltip": "Prosím zadajte zobrazované meno", "manageKnownServersButton": "Spravovať Známe Servery", "fieldDescriptionLabel": "Popis", - "groupsOnThisServerLabel": "Skupiny ktorých som členom a sú hostované na tomto servery", "importLocalServerButton": "Importovať %1", "importLocalServerSelectText": "Zvoliť Lokálny Server", "importLocalServerLabel": "Importovať lokálne hostovaný server", @@ -163,7 +168,6 @@ "fileSavedTo": "Uložené do", "encryptedServerDescription": "Šifrovanie serveru heslom ho chráni pred ostatnými ľuďmi ktorý by mohli toto zariadenie využívať taktiež. Šifrované servery sa nedajú odšifrovať, zobraziť alebo sprístupniť pokiaľ nie je zadané správne heslo.", "plainServerDescription": "Odporúčame aby ste si ochránili Cwtch servery heslom. Ak si na servery nenastavíte heslo, každý s prístupom k tomuto zariadeniu bude schopný vidieť informácie o danom servry, vrátane citlivých kryptografických klúčov.", - "deleteServerConfirmBtn": "Vážne vymazať server?", "deleteServerSuccess": "Server bol úspešne vymazaný", "enterCurrentPasswordForDeleteServer": "Prosím zadajte aktuálne heslo pre zmazanie tohoto serveru", "copyAddress": "Kopírovať Adresu", diff --git a/lib/l10n/intl_sv.arb b/lib/l10n/intl_sv.arb index 29f7062e..c77ffe0b 100644 --- a/lib/l10n/intl_sv.arb +++ b/lib/l10n/intl_sv.arb @@ -1,6 +1,12 @@ { "@@locale": "sv", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Bekräfta borttagning av servern", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Grupper jag är med i på den här servern", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainska \/ українською", "profileEnabledDescription": "Aktivera eller inaktivera profilen", "localeSw": "Swahili \/ Kiswahili", @@ -232,7 +238,6 @@ "copyAddress": "Kopiera adress", "enterCurrentPasswordForDeleteServer": "Ange lösenord för att radera den här servern", "deleteServerSuccess": "Servern har tagits bort", - "deleteServerConfirmBtn": "Bekräfta borttagning av servern", "plainServerDescription": "Vi rekommenderar att du skyddar dina Cwtch-servrar med ett lösenord. Om du inte anger ett lösenord på den här servern kan alla som har åtkomst till den här enheten komma åt information om den här servern, inklusive känsliga kryptografiska nycklar.", "encryptedServerDescription": "Genom att kryptera en server med ett lösenord skyddas den från andra personer som också kan använda den här enheten. Krypterade servrar kan inte dekrypteras, visas eller nås förrän rätt lösenord har angetts för att låsa upp dem.", "fileSavedTo": "Sparad till", @@ -245,7 +250,6 @@ "importLocalServerLabel": "Importera en lokal server", "importLocalServerSelectText": "Välj lokal server", "importLocalServerButton": "Importera %1", - "groupsOnThisServerLabel": "Grupper jag är med i på den här servern", "fieldDescriptionLabel": "Beskrivning", "manageKnownServersButton": "Hantera kända servrar", "displayNameTooltip": "Ange ett visningsnamn", diff --git a/lib/l10n/intl_sw.arb b/lib/l10n/intl_sw.arb index def3cf34..de8e06f5 100644 --- a/lib/l10n/intl_sw.arb +++ b/lib/l10n/intl_sw.arb @@ -1,6 +1,12 @@ { "@@locale": "sw", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Futa kabisa seva", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Vikundi nilivyopangishwa kwenye seva hii", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "blodeuweddPath": "Saraka ambapo Blodeuwedd iko kwenye kompyuta yako.", "tooltipSuperscript": "Superscript", "tooltipStrikethrough": "Mgomo", @@ -236,7 +242,6 @@ "copyAddress": "Nakili Anwani", "enterCurrentPasswordForDeleteServer": "Tafadhali ingiza nywila ya sasa ili kufuta seva hii", "deleteServerSuccess": "Seva iliyo fanikiwa futwa", - "deleteServerConfirmBtn": "Futa kabisa seva", "plainServerDescription": "Tunapendekeza kwamba ulinde seva zako za Cwtch kwa nenosiri. Ikiwa hutaweka nenosiri kwenye seva hii basi mtu yeyote ambaye ana idhini ya kufikia kifaa hiki anaweza kufikia maelezo kuhusu seva hii, ikiwa ni pamoja na funguo nyeti za kriptografia.", "encryptedServerDescription": "Kusimba seva kwa nenosiri huilinda dhidi ya watu wengine ambao wanaweza pia kutumia kifaa hiki. Seva zilizosimbwa kwa njia fiche haziwezi kusimbwa, kuonyeshwa au kufikiwa hadi nenosiri sahihi liingizwe ili kuzifungua.", "fileSavedTo": "Imehifadhiwa kwa", @@ -249,7 +254,6 @@ "importLocalServerLabel": "Ingiza seva iliyopangishwa ndani ya nchi", "importLocalServerSelectText": "Chagua Seva ya Karibu", "importLocalServerButton": "Ingiza %1", - "groupsOnThisServerLabel": "Vikundi nilivyopangishwa kwenye seva hii", "fieldDescriptionLabel": "Maelezo", "manageKnownServersButton": "Dhibiti Seva Zinazojulikana", "displayNameTooltip": "Tafadhali ingiza jina la kuonyesha", diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index a7dd032d..ca4565d6 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -1,6 +1,12 @@ { "@@locale": "tr", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Sunucuyu gerçekten sil", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Bu sunucuda içinde bulunduğum gruplar", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "profileEnabledDescription": "Profili başlat veya durdur", "localeSw": "Swahili \/ Kiswahili", @@ -298,7 +304,6 @@ "copyAddress": "Adresi Kopyala", "enterCurrentPasswordForDeleteServer": "Lütfen sunucuyu silmek için şifreyi girin", "deleteServerSuccess": "Sunucu başarıyla silindi", - "deleteServerConfirmBtn": "Sunucuyu gerçekten sil", "plainServerDescription": "Cwtch sunucularınızı bir parola ile korumanızı öneririz. Bir parola belirlemezseniz, bu cihaza erişimi olan herkes kriptografik anahtarlar da dahil olmak üzere sunucunun hassas bilgilerine erişebilir.", "encryptedServerDescription": "Bir sunucuyu parola ile şifrelemek, sunucuyu bu aygıtı kullanabilecek diğer kişilerden korur. Doğru şifre girilene kadar şifrelenmiş sunucular görüntülenemez veya erişilemez.", "fileSavedTo": "Şuraya kaydedildi", @@ -310,7 +315,6 @@ "importLocalServerLabel": "Yerel bir sunucuyu içeri aktar", "importLocalServerSelectText": "Yerel Sunucu Seç", "importLocalServerButton": "%1'i içeri aktar", - "groupsOnThisServerLabel": "Bu sunucuda içinde bulunduğum gruplar", "fieldDescriptionLabel": "Açıklama", "manageKnownServersButton": "Bilinen Sunucuları Yönet", "displayNameTooltip": "Lütfen bir ad girin", diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index 64add566..e9d7fe4c 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -1,6 +1,12 @@ { "@@locale": "uk", - "@@last_modified": "2023-06-04T17:50:20+02:00", + "@@last_modified": "2023-08-21T19:40:19+02:00", + "deleteServerConfirmBtn": "Really Delete Server?", + "cannotDeleteServerIfActiveGroups": "There are active groups associated with this Cwtch Server. Please delete them prior to deleting this Cwtch Server entry.", + "groupsOnThisServerLabel": "Known Groups on this Cwtch Server", + "serverinfoNoGroupInfo": "There are no groups associated with this Cwtch Server.", + "preserveHistorySettingDescription": "By default, Cwtch will purge conversation history when Cwtch is shutdown. If this setting is enabled, Cwtch will preserve the conversation history of peer conversations.", + "defaultPreserveHistorySetting": "Preserve Conversation History", "localeUk": "Ukrainian \/ українською", "localeSw": "Swahili \/ Kiswahili", "localeSv": "Swedish \/ Svenska", @@ -146,7 +152,6 @@ "displayNameTooltip": "Please enter a display name", "manageKnownServersButton": "Manage Known Servers", "fieldDescriptionLabel": "Description", - "groupsOnThisServerLabel": "Groups I am in hosted on this server", "importLocalServerButton": "Import %1", "importLocalServerSelectText": "Select Local Server", "importLocalServerLabel": "Import a locally hosted server", @@ -159,7 +164,6 @@ "fileSavedTo": "Saved to", "encryptedServerDescription": "Encrypting a server with a password protects it from other people who may also use this device. Encrypted servers cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.", "plainServerDescription": "We recommend that you protect your Cwtch servers with a password. If you do not set a password on this server then anyone who has access to this device may be able to access information about this server, including sensitive cryptographic keys.", - "deleteServerConfirmBtn": "Really delete server", "deleteServerSuccess": "Successfully deleted server", "enterCurrentPasswordForDeleteServer": "Please enter current password to delete this server", "copyAddress": "Copy Address", diff --git a/lib/models/profile.dart b/lib/models/profile.dart index fed1b3a6..d80bcce8 100644 --- a/lib/models/profile.dart +++ b/lib/models/profile.dart @@ -67,9 +67,11 @@ class ProfileInfoState extends ChangeNotifier { List contacts = jsonDecode(contactsJson); this._contacts.addAll(contacts.map((contact) { this._unreadMessages += contact["numUnread"] as int; + + return ContactInfoState(this.onion, contact["identifier"], contact["onion"], nickname: contact["name"], - localNickname: contact["localname"], + localNickname: contact["attributes"]?["local.profile.name"] ?? "", // contact may not have a local name status: contact["status"], imagePath: contact["picture"], defaultImagePath: contact["isGroup"] ? contact["picture"] : contact["defaultPicture"], diff --git a/lib/settings.dart b/lib/settings.dart index a0ba35ce..e28c173e 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -53,6 +53,7 @@ class Settings extends ChangeNotifier { NotificationPolicy _notificationPolicy = NotificationPolicy.DefaultAll; NotificationContent _notificationContent = NotificationContent.SimpleEvent; + bool preserveHistoryByDefault = false; bool blockUnknownConnections = false; bool streamerMode = false; String _downloadPath = ""; @@ -131,13 +132,14 @@ class Settings extends ChangeNotifier { switchLocaleByCode(settings["Locale"]); // Decide whether to enable Experiments - _fontScaling = double.parse(settings["FontScaling"].toString()).clamp(0.5, 2.0); + _fontScaling = double.parse(settings["FontScaling"].toString() ?? "1.0").clamp(0.5, 2.0); blockUnknownConnections = settings["BlockUnknownConnections"] ?? false; streamerMode = settings["StreamerMode"] ?? false; // Decide whether to enable Experiments experimentsEnabled = settings["ExperimentsEnabled"] ?? false; + preserveHistoryByDefault = settings["DefaultSaveHistory"] ?? false; // Set the internal experiments map. Casting from the Map that we get from JSON experiments = new HashMap.from(settings["Experiments"]); @@ -208,6 +210,18 @@ class Settings extends ChangeNotifier { notifyListeners(); } + /// Preserve the History of all Conversations By Default (can be overridden for specific conversations) + setPreserveHistoryDefault() { + preserveHistoryByDefault = true; + notifyListeners(); + } + + /// Delete the History of all Conversations By Default (can be overridden for specific conversations) + setDeleteHistoryDefault() { + preserveHistoryByDefault = false; + notifyListeners(); + } + /// Block Unknown Connections will autoblock connections if they authenticate with public key not in our contacts list. /// This is one of the best tools we have to combat abuse, while it isn't ideal it does allow a user to curate their contacts /// list without being bothered by spurious requests (either permanently, or as a short term measure). @@ -472,7 +486,8 @@ class Settings extends ChangeNotifier { "UseTorCache": _useTorCache, "TorCacheDir": _torCacheDir, "BlodeuweddPath": _blodeuweddPath, - "FontScaling": _fontScaling + "FontScaling": _fontScaling, + "DefaultSaveHistory": preserveHistoryByDefault }; } } diff --git a/lib/views/addeditprofileview.dart b/lib/views/addeditprofileview.dart index 7e9a700b..a80a70f7 100644 --- a/lib/views/addeditprofileview.dart +++ b/lib/views/addeditprofileview.dart @@ -227,7 +227,7 @@ class _AddEditProfileViewState extends State { // Enabled Visibility( - visible: Provider.of(context).onion.isNotEmpty && !Provider.of(context).enabled, + visible: Provider.of(context).onion.isNotEmpty, child: SwitchListTile( title: Text(AppLocalizations.of(context)!.profileEnabled, style: TextStyle(color: Provider.of(context).current().mainTextColor)), subtitle: Text(AppLocalizations.of(context)!.profileEnabledDescription), diff --git a/lib/views/contactsview.dart b/lib/views/contactsview.dart index ca28f090..d168fea9 100644 --- a/lib/views/contactsview.dart +++ b/lib/views/contactsview.dart @@ -385,6 +385,7 @@ class _ContactsViewState extends State { Navigator.of(context).push( PageRouteBuilder( + settings: RouteSettings(name: "profileremoteservers"), pageBuilder: (bcontext, a1, a2) { return MultiProvider( providers: [ChangeNotifierProvider.value(value: profileInfoState), Provider.value(value: Provider.of(context))], diff --git a/lib/views/globalsettingsview.dart b/lib/views/globalsettingsview.dart index 7adde168..5a8bfdbe 100644 --- a/lib/views/globalsettingsview.dart +++ b/lib/views/globalsettingsview.dart @@ -350,6 +350,24 @@ class _GlobalSettingsViewState extends State { inactiveTrackColor: settings.theme.defaultButtonDisabledColor, secondary: Icon(CwtchIcons.block_unknown, color: settings.current().mainTextColor), ), + SwitchListTile( + title: Text(AppLocalizations.of(context)!.defaultPreserveHistorySetting), + subtitle: Text(AppLocalizations.of(context)!.preserveHistorySettingDescription), + value: settings.preserveHistoryByDefault, + onChanged: (bool value) { + if (value) { + settings.setPreserveHistoryDefault(); + } else { + settings.setDeleteHistoryDefault(); + } + + // Save Settings... + saveSettings(context); + }, + activeTrackColor: settings.theme.defaultButtonColor, + inactiveTrackColor: settings.theme.defaultButtonDisabledColor, + secondary: Icon(CwtchIcons.block_unknown, color: settings.current().mainTextColor), + ), SizedBox( height: 40, ), diff --git a/lib/views/peersettingsview.dart b/lib/views/peersettingsview.dart index e871315a..07031b28 100644 --- a/lib/views/peersettingsview.dart +++ b/lib/views/peersettingsview.dart @@ -217,8 +217,9 @@ class _PeerSettingsViewState extends State { subtitle: Text(AppLocalizations.of(context)!.savePeerHistoryDescription), leading: Icon(CwtchIcons.peer_history, color: settings.current().mainTextColor), trailing: DropdownButton( - value: Provider.of(context).savePeerHistory == "DefaultDeleteHistory" - ? AppLocalizations.of(context)!.dontSavePeerHistory + value: (Provider.of(context).savePeerHistory == "DefaultDeleteHistory" || + Provider.of(context).savePeerHistory == "HistoryDefault") + ? AppLocalizations.of(context)!.conversationNotificationPolicyDefault : (Provider.of(context).savePeerHistory == "SaveHistory" ? AppLocalizations.of(context)!.savePeerHistory : AppLocalizations.of(context)!.dontSavePeerHistory), @@ -230,8 +231,13 @@ class _PeerSettingsViewState extends State { const SaveHistoryKey = "profile.SavePeerHistory"; const SaveHistory = "SaveHistory"; const DelHistory = "DeleteHistoryConfirmed"; + const HistoryDefault = "HistoryDefault"; - if (newValue == AppLocalizations.of(context)!.savePeerHistory) { + // NOTE: .savePeerHistory is used to show ephemeral warnings so it's state is important to update. + if(newValue == AppLocalizations.of(context)!.conversationNotificationPolicyDefault) { + Provider.of(context, listen: false).savePeerHistory = HistoryDefault; + Provider.of(context, listen: false).cwtch.SetConversationAttribute(profileOnion, identifier, SaveHistoryKey, HistoryDefault); + } else if (newValue == AppLocalizations.of(context)!.savePeerHistory) { Provider.of(context, listen: false).savePeerHistory = SaveHistory; Provider.of(context, listen: false).cwtch.SetConversationAttribute(profileOnion, identifier, SaveHistoryKey, SaveHistory); } else { @@ -240,7 +246,7 @@ class _PeerSettingsViewState extends State { } }); }, - items: [AppLocalizations.of(context)!.savePeerHistory, AppLocalizations.of(context)!.dontSavePeerHistory].map>((String value) { + items: [AppLocalizations.of(context)!.conversationNotificationPolicyDefault, AppLocalizations.of(context)!.savePeerHistory, AppLocalizations.of(context)!.dontSavePeerHistory].map>((String value) { return DropdownMenuItem( value: value, child: Text(value, style: settings.scaleFonts(defaultDropDownMenuItemTextStyle)), diff --git a/lib/views/remoteserverview.dart b/lib/views/remoteserverview.dart index b9f70f91..859747ec 100644 --- a/lib/views/remoteserverview.dart +++ b/lib/views/remoteserverview.dart @@ -20,6 +20,8 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import '../errorHandler.dart'; import '../main.dart'; import '../config.dart'; +import '../models/appstate.dart'; +import '../themes/opaque.dart'; /// Pane to add or edit a server class RemoteServerView extends StatefulWidget { @@ -91,12 +93,26 @@ class _RemoteServerViewState extends State { SizedBox( height: 20, ), - + Row(crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.end, children: [ + Tooltip( + message: serverInfoState.groups.isNotEmpty ? AppLocalizations.of(context)!.cannotDeleteServerIfActiveGroups : AppLocalizations.of(context)!.leaveConversation, + child: ElevatedButton.icon( + onPressed: serverInfoState.groups.isNotEmpty ? null : () { + showAlertDialog(context); + }, + icon: Icon(CwtchIcons.leave_group), + label: Text( + AppLocalizations.of(context)!.deleteBtn, + style: settings.scaleFonts(defaultTextButtonStyle), + ), + )) + ]), Padding( padding: EdgeInsets.all(8), child: Text(AppLocalizations.of(context)!.groupsOnThisServerLabel), ), - Expanded(child: _buildGroupsList(serverInfoState)) + Expanded(child: _buildGroupsList(serverInfoState)), + ]))); }); } @@ -147,3 +163,40 @@ class _RemoteServerViewState extends State { ])); } } + +showAlertDialog(BuildContext context) { + // set up the buttons + Widget cancelButton = ElevatedButton( + child: Text(AppLocalizations.of(context)!.cancel), + onPressed: () { + Navigator.of(context).pop(); // dismiss dialog + }, + ); + Widget continueButton = ElevatedButton( + style: ButtonStyle(padding: MaterialStateProperty.all(EdgeInsets.all(20))), + child: Text(AppLocalizations.of(context)!.deleteServerConfirmBtn), + onPressed: () { + var profileOnion = Provider.of(context, listen: false).onion; + var serverInfoState = Provider.of(context, listen: false); + Provider.of(context, listen: false).cwtch.DeleteServerInfo(profileOnion, serverInfoState.onion); + Navigator.popUntil(context, (route) => route.settings.name == "profileremoteservers"); + }, + ); + + // set up the AlertDialog + AlertDialog alert = AlertDialog( + title: Text(AppLocalizations.of(context)!.deleteServerConfirmBtn), + actions: [ + cancelButton, + continueButton, + ], + ); + + // show the dialog + showDialog( + context: context, + builder: (BuildContext context) { + return alert; + }, + ); +} diff --git a/lib/widgets/filebubble.dart b/lib/widgets/filebubble.dart index a8bb683b..1127d7ef 100644 --- a/lib/widgets/filebubble.dart +++ b/lib/widgets/filebubble.dart @@ -430,7 +430,7 @@ class FileBubbleState extends State { icon: Icon(Icons.arrow_downward), onPressed: androidExport, label: Text( - AppLocalizations.of(context)!.saveBtn, + AppLocalizations.of(bcontext)!.saveBtn, )))), ]), )))); diff --git a/lib/widgets/messagelist.dart b/lib/widgets/messagelist.dart index 257afc22..2de84486 100644 --- a/lib/widgets/messagelist.dart +++ b/lib/widgets/messagelist.dart @@ -38,7 +38,8 @@ class _MessageListState extends State { //bool isGroupAndSynced = Provider.of(context).isGroup && Provider.of(context).status == "Synced"; //bool isGroupAndNotAuthenticated = Provider.of(context).isGroup && Provider.of(context).status != "Authenticated"; - bool showEphemeralWarning = (isP2P && Provider.of(context).savePeerHistory != "SaveHistory"); + bool preserveHistoryByDefault = Provider.of(context, listen:false).preserveHistoryByDefault; + bool showEphemeralWarning = (isP2P && (!preserveHistoryByDefault && Provider.of(context).savePeerHistory != "SaveHistory")); bool showOfflineWarning = Provider.of(context).isOnline() == false; bool showSyncing = isGroupAndSyncing; bool showMessageWarning = showEphemeralWarning || showOfflineWarning || showSyncing; diff --git a/linux/cwtch-whonix.yml b/linux/cwtch-whonix.yml new file mode 100644 index 00000000..9bf7788d --- /dev/null +++ b/linux/cwtch-whonix.yml @@ -0,0 +1,57 @@ +# TODO: This can likely be restricted even further, especially in regards to the ADD_ONION pattern +- exe-paths: + - '' +users: + - '*' +hosts: + - '*' +commands: + AUTHCHALLENGE: + - 'SAFECOOKIE .*' + SETEVENTS: + - 'CIRC WARN ERR' + - 'CIRC ORCONN INFO NOTICE WARN ERR HS_DESC HS_DESC_CONTENT' + GETINFO: + - 'net/listeners/socks' + - '.*' + GETCONF: + - 'DisableNetwork' + SETCONF: + - 'DisableNetwork.*' + ADD_ONION: + - '.*' + DEL_ONION: + - '.+' + HSFETCH: + - '.+' +events: + CIRC: + suppress: true + ORCONN: + suppress: true + INFO: + suppress: true + NOTICE: + suppress: true + WARN: + suppress: true + ERR: + suppress: true + HS_DESC: + response: + - pattern: '650 HS_DESC CREATED (\S+) (\S+) (\S+) \S+ (.+)' + replacement: '650 HS_DESC CREATED {} {} {} redacted {}' + - pattern: '650 HS_DESC UPLOAD (\S+) (\S+) .*' + replacement: '650 HS_DESC UPLOAD {} {} redacted redacted' + - pattern: '650 HS_DESC UPLOADED (\S+) (\S+) .+' + replacement: '650 HS_DESC UPLOADED {} {} redacted' + - pattern: '650 HS_DESC REQUESTED (\S+) NO_AUTH' + replacement: '650 HS_DESC REQUESTED {} NO_AUTH' + - pattern: '650 HS_DESC REQUESTED (\S+) NO_AUTH \S+ \S+' + replacement: '650 HS_DESC REQUESTED {} NO_AUTH redacted redacted' + - pattern: '650 HS_DESC RECEIVED (\S+) NO_AUTH \S+ \S+' + replacement: '650 HS_DESC RECEIVED {} NO_AUTH redacted redacted' + - pattern: '.*' + replacement: '' + HS_DESC_CONTENT: + suppress: true \ No newline at end of file From 8e5074ec98e244495e806945b4be1415a892d348 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Aug 2023 14:48:17 -0700 Subject: [PATCH 2/3] Update Cwtch --- LIBCWTCH-GO.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LIBCWTCH-GO.version b/LIBCWTCH-GO.version index 2ca18597..0e5f97cb 100644 --- a/LIBCWTCH-GO.version +++ b/LIBCWTCH-GO.version @@ -1 +1 @@ -2023-08-02-13-12-v0.0.5-14-g6e06231 \ No newline at end of file +2023-08-22-14-06-v0.0.6 \ No newline at end of file From a36a5ea2fe2606428332487dc62019cd71e90d8a Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Aug 2023 16:12:41 -0700 Subject: [PATCH 3/3] Fix UI Tests. --- README.md | 7 +++++++ lib/main.dart | 6 +++++- lib/settings.dart | 6 +++++- lib/views/addeditprofileview.dart | 3 ++- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 93473bbd..15654ef0 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,13 @@ Cwtch processes the following environment variables: - `LOG_FILE=` will reroute all of libcwtch-go's logging to the specified file instead of the console - `LOG_LEVEL=debug` will set the log level to debug instead of info +## Running Tests + +You can run specific tests with `./run-tests-headless.sh`. See also the `.drone.yml` file for information on the specific tests that run.1 + +The gherkin test framework will occasionally fail silently with incomplete test. This is usually because a previous run resulted in an exception and the underlying Tor +process was not cleaned up (See #711). + ## Building ### Getting Started diff --git a/lib/main.dart b/lib/main.dart index f3ccc0ad..5a3ef06b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -109,7 +109,11 @@ class FlwtchState extends State with WindowListener { print("initState: invoking cwtch.Start()"); cwtch.Start(); print("initState: starting connectivityListener"); - startConnectivityListener(); + if (EnvironmentConfig.TEST_MODE == false) { + startConnectivityListener(); + } else { + connectivityStream = null; + } print("initState: done!"); super.initState(); } diff --git a/lib/settings.dart b/lib/settings.dart index e28c173e..1366f7e9 100644 --- a/lib/settings.dart +++ b/lib/settings.dart @@ -132,7 +132,11 @@ class Settings extends ChangeNotifier { switchLocaleByCode(settings["Locale"]); // Decide whether to enable Experiments - _fontScaling = double.parse(settings["FontScaling"].toString() ?? "1.0").clamp(0.5, 2.0); + var fontScale = settings["FontScaling"]; + if (fontScale == null) { + fontScale = 1.0; + } + _fontScaling = double.parse(fontScale.toString()).clamp(0.5, 2.0); blockUnknownConnections = settings["BlockUnknownConnections"] ?? false; streamerMode = settings["StreamerMode"] ?? false; diff --git a/lib/views/addeditprofileview.dart b/lib/views/addeditprofileview.dart index a80a70f7..a0513b22 100644 --- a/lib/views/addeditprofileview.dart +++ b/lib/views/addeditprofileview.dart @@ -227,7 +227,8 @@ class _AddEditProfileViewState extends State { // Enabled Visibility( - visible: Provider.of(context).onion.isNotEmpty, + // FIXME don't show the disable switch in test mode...this is a bug relating to scrolling things into view + visible: Provider.of(context).onion.isNotEmpty && (EnvironmentConfig.TEST_MODE == false), child: SwitchListTile( title: Text(AppLocalizations.of(context)!.profileEnabled, style: TextStyle(color: Provider.of(context).current().mainTextColor)), subtitle: Text(AppLocalizations.of(context)!.profileEnabledDescription),