Merge pull request 'Upgrade Cwtch, Update Languages, Fix DeleteContact flow, various smaller fixes' (#686) from 1.12-rc into trunk
continuous-integration/drone/push Build is passing Details

Reviewed-on: #686
Reviewed-by: Dan Ballard <dan@openprivacy.ca>
This commit is contained in:
Sarah Jamie Lewis 2023-06-14 21:54:57 +00:00
commit 49fcbdf9aa
41 changed files with 415 additions and 392 deletions

View File

@ -66,8 +66,8 @@ steps:
- name: deps
path: /root/.pub-cache
commands:
# Run 01_general, 02_global_settings, and 04_profile_mgmt features...
- ./run-tests-headless.sh "01_general|02_global_settings|04_profile_mgmt"
# Run 01_general, 01_tor, 02_global_settings, and 04_profile_mgmt features...
- ./run-tests-headless.sh "01_general|01_tor|02_global_settings|04_profile_mgmt"
- name: test-build-android
image: openpriv/flutter-desktop:linux-fstable-3.10.2

View File

@ -1 +1 @@
2023-05-16-16-25-v0.0.4
2023-06-13-10-50-v0.0.5

View File

@ -5,6 +5,7 @@ Feature: Settings pane opens and can save settings persistently
And I tap the 'OpenSettingsView' button
And I wait until the text 'Cwtch Settings' is present
And I take a screenshot
And I wait for 5 seconds
Scenario: Change every setting (except Language)
Given I wait until the widget with type 'ProfileMgrView' is present

View File

@ -1,8 +1,9 @@
Feature: Shutdown Cwtch button works correctly
Scenario: Clicking 'Shutdown Cwtch' shuts down Cwtch
Given I wait until the widget with type 'ProfileMgrView' is present
And I tap the button with tooltip 'Shutdown Cwtch'
Then I expect the text 'Shutdown Cwtch?' to be present
#Feature: Shutdown Cwtch button works correctly
# Scenario: Clicking 'Shutdown Cwtch' shuts down Cwtch
# Given I wait until the widget with type 'ProfileMgrView' is present
# And I tap the button with tooltip 'Shutdown Cwtch'
# Then I expect the text 'Shutdown Cwtch?' to be present
# And I wait for 5 seconds
#this also kills the testing framework sadly. will have to find a workaround
#And I tap the button that contains the text 'Shutdown Cwtch'
#Then I wait until the widget with type 'ProfileMgrView' is absent

View File

@ -2,7 +2,6 @@ Feature: Tor initializes correctly
Scenario: Check the Tor version
Given I wait until the widget with type 'ProfileMgrView' is present
And I tap the icon with type "TorIcon"
Then I expect the Tor version to be present
And I expect the string 'Online' to be present within 120 seconds
Scenario: Reset Tor

View File

@ -1,12 +1,14 @@
@env:clean
Feature: Splash screen displays and then closes
Scenario: splash screen appears
Then I expect the widget 'SplashView' to be present within 10 seconds
Then I expect the widget 'ProfileManagerView' to be present within 10 seconds
# first-run of cwtch creates expected files and folders
Then I expect the folder 'integration_test/env/temp' to exist
And I expect the folder 'integration_test/env/temp/dev' to exist
And I expect the file 'integration_test/env/temp/dev/SALT' to exist
Then I wait for the file 'integration_test/env/temp/dev/ui.globals' to exist
And I expect the file 'integration_test/env/temp/dev/ui.globals' to exist
And I expect the folder 'integration_test/env/temp/dev/tor' to exist
And I expect the file 'integration_test/env/temp/dev/tor/torrc' to exist
And I expect the file 'integration_test/env/temp/dev/tor/torrc' to exist
And I wait for 5 seconds

View File

@ -32,6 +32,9 @@ Feature: Basic Profile Management
Scenario: Load Unencrypted Profile
Given I wait until the widget with type 'ProfileMgrView' is present
Then I expect a "ProfileRow" widget with text "Alice (Unencrypted)"
# This test is too short...if the test finishes before flutter has finished initializing then
# the framework gets very confused...
And I wait for 2 seconds
Scenario: Create Encrypted Profile
Given I wait until the widget with type 'ProfileMgrView' is present

View File

@ -56,6 +56,7 @@ void main() async {
// files
FolderExists(),
FileExists(),
WaitFileExists(),
];
var sb = StringBuffer();

View File

@ -19,3 +19,16 @@ StepDefinitionGeneric FileExists() {
},
);
}
StepDefinitionGeneric WaitFileExists() {
return then1<String, FlutterWorld>(
RegExp(r'I wait for the file {string} to exist'),
(input1, context) async {
await context.world.appDriver.waitUntil(
() async {
await context.world.appDriver.waitForAppToSettle();
return File(input1).existsSync();
});
},
);
}

View File

@ -33,7 +33,6 @@ StepDefinitionGeneric TorVersionPresent() {
break;
}
}
print('File is now closed.');
} catch (e) {
print('Error: $e');
}
@ -41,15 +40,18 @@ StepDefinitionGeneric TorVersionPresent() {
context.expect(versionString, "#.#.#", reason: "error reading version string from fetch-tor.sh");
return;
}
context.world.attach(versionString, "text/plain", "Then I expect the Tor version to be present");
context.world.attach( versionString.substring(0,4), "text/plain", "Then I expect the Tor version to be present");
//context.reporter.message("test!!!", MessageLevel.info);
print("looking for version string $versionString");
final finder = context.world.appDriver.findBy(
versionString,
FindType.text,
);
final isP = await context.world.appDriver.isPresent(finder);
context.expect(isP, true);
return await context.world.appDriver.waitUntil(() async {
context.world.appDriver.waitForAppToSettle();
final finder = context.world.appDriver.findBy(
versionString.substring(0,4),
FindType.text,
);
return await context.world.appDriver.isPresent(finder);
});
},
);
}

View File

@ -19,3 +19,4 @@ StepDefinitionGeneric TakeScreenshot() {
},
);
}

View File

@ -59,7 +59,7 @@ class CwtchNotifier {
}
void handleMessage(String type, dynamic data) {
//EnvironmentConfig.debugLog("NewEvent $type $data");
// EnvironmentConfig.debugLog("NewEvent $type $data");
switch (type) {
case "CwtchStarted":
appState.SetCwtchInit();
@ -161,10 +161,8 @@ class CwtchNotifier {
}
break;
case "DeleteContact":
profileCN.getProfile(data["ProfileOnion"])?.contactList.removeContact(data["ConversationID"]);
break;
case "DeleteGroup":
profileCN.getProfile(data["ProfileOnion"])?.contactList.removeContact(data["ConversationID"]);
var identifier = int.parse(data["ConversationID"]);
profileCN.getProfile(data["ProfileOnion"])?.contactList.removeContact(identifier);
break;
case "PeerStateChange":
ContactInfoState? contact = profileCN.getProfile(data["ProfileOnion"])?.contactList.findContact(data["RemotePeer"]);

View File

@ -563,7 +563,7 @@ class CwtchFfi implements Cwtch {
@override
// ignore: non_constant_identifier_names
void DeleteContact(String profileOnion, int handle) {
var deleteContact = library.lookup<NativeFunction<string_int_to_void_function>>("c_DeleteContact");
var deleteContact = library.lookup<NativeFunction<string_int_to_void_function>>("c_DeleteConversation");
// ignore: non_constant_identifier_names
final DeleteContact = deleteContact.asFunction<VoidFromStringIntFn>();
final u1 = profileOnion.toNativeUtf8();

View File

@ -1,6 +1,6 @@
{
"@@locale": "cy",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "da",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,15 +1,15 @@
{
"@@locale": "de",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"localeUk": "Ukrainian \/ українською",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"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 \/ 日本語",
"fontScalingDescription": "Passe den relativen Skalierungsfaktor der Schrift an, der auf Text und Widgets angewendet wird.",
"localeSv": "Schwedisch \/ Svenska",
"localeSw": "Suaheli \/ Kiswahili",
"localeUk": "Ukrainisch \/ українською",
"profileEnabledDescription": "Starten oder Stoppen des Profils",
"localeSw": "Swahili \/ Kiswahili",
"localeSv": "Swedish \/ Svenska",
"fontScalingDescription": "Adjust the relative font scaling factor applied to text and widgets.",
"defaultScalingText": "Text in Standardgröße (Skalierungsfaktor:",
"localeJa": "Japanese \/ 日本語",
"retryConnectionTooltip": "Cwtch retries peers regularly, but you can tell Cwtch to try sooner by pushing this button.",
"retryConnection": "Retry",
"blodeuweddExperimentEnable": "Blodeuwedd Assistent",
"blodeuweddDescription": "Der Blodeuwedd-Assistent erweitert Cwtch um neue Funktionen wie die Zusammenfassung von Chat-Transkripten und die Übersetzung von Nachrichten über ein lokal gehostetes Sprachmodell.",
"blodeuweddNotSupported": "Diese Version von Cwtch wurde ohne Unterstützung für den Blodeuwedd-Assistenten kompiliert.",

View File

@ -1,6 +1,6 @@
{
"@@locale": "el",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "en",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "es",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "fr",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "it",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "ja",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "ko",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "프로필 시각 또는 중지",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "lb",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "nl",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Start of stop het profiel",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "no",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "pl",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "pt",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "pt_BR",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "ro",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "ru",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Activate or Deactivate the profile.",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "sk",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Spustiť alebo zastaviť profil",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "sv",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainska \/ українською",
"profileEnabledDescription": "Aktivera eller inaktivera profilen",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,291 @@
{
"@@locale": "sw",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"blodeuweddPath": "Saraka ambapo Blodeuwedd iko kwenye kompyuta yako.",
"tooltipSuperscript": "Superscript",
"tooltipStrikethrough": "Mgomo",
"errorDownloadDirectoryDoesNotExist": "Kushiriki faili hakuwezi kuwashwa kwa sababu Folda ya Upakuaji haijawekwa, au imewekwa kwenye folda ambayo haipo.",
"blodeuweddDescription": "Mratibu wa Blodeuwedd huongeza vipengele vipya kwenye Cwtch kama vile muhtasari wa manukuu ya gumzo na tafsiri ya ujumbe kupitia modeli ya lugha inayopangishwa ndani ya nchi.",
"blodeuweddWarning": "Blodeuwedd hutumia modeli ya lugha ya ndani na seti ya modeli ndogo ndogo ili kudhibiti utendakazi wake. Mbinu hizi mara nyingi ni nzuri sana sio bila makosa. \n\n Ingawa tumechukua juhudi za kupunguza hatari, bado kuna uwezekano kwamba matokeo ya Blodeuwedd yatakuwa yasiyo sahihi, ya kuonewa na\/au ya kukera. \n\n Kwa sababu hiyo Blodeuwedd inahitaji kupakua vijenzi viwili vya ziada tofauti na Cwtch, Mfano wa Blodeuwedd (au kielelezo kinachooana) na Blodeuwedd Runner. \n\n Tazama https:\/\/docs.cwtch.im\/docs\/settings\/experiments\/blodeuwedd kwa maelezo zaidi kuhusu kupata vipengele hivi na kuviweka.",
"fontScalingDescription": "Rekebisha kipengele cha kuongeza fonti kinachotumika kwa maandishi na wijeti.",
"createGroupTitle": "Unda Kikundi",
"serverLabel": "Seva",
"defaultGroupName": "Kundi la Kushangaza",
"createGroupBtn": "Unda",
"profileOnionLabel": "Tuma anwani hii kwa watu unaotaka kuungana nao",
"addPeerTab": "Ongeza anwani",
"createGroupTab": "Unda kikundi",
"joinGroupTab": "Jiunge na kikundi",
"peerAddress": "Anwani",
"peerName": "Jina",
"server": "Seva",
"invitation": "Mwaliko",
"groupAddr": "Anwani",
"addPeer": "Ongeza Anwani",
"createGroup": "Unda kikundi",
"joinGroup": "Jiunge na kikundi",
"newBulletinLabel": "Bulletin Mpya",
"postNewBulletinLabel": "Chapisha taarifa mpya",
"titlePlaceholder": "kichwa...",
"pasteAddressToAddContact": "Bandika anwani ya cwtch, mwaliko au kifungu muhimu hapa ili kuongeza mazungumzo mapya",
"blocked": "Imezuiwa",
"search": "Tafuta...",
"invitationLabel": "Mwaliko",
"serverInfo": "Taarifa za Seva",
"serverConnectivityConnected": "Seva Imeunganishwa",
"serverConnectivityDisconnected": "Seva Imetenganishwa",
"serverSynced": "Imesawazishwa",
"serverNotSynced": "Inasawazisha Ujumbe Mpya (Hii inaweza kuchukua muda)...",
"viewServerInfo": "Taarifa za Seva",
"groupNameLabel": "Jina la Kikundi",
"saveBtn": "Hifadhi",
"inviteToGroupLabel": "Alika kwenye kikundi",
"inviteBtn": "Alika",
"deleteBtn": "Futa",
"update": "Sasisha",
"searchList": "Orodha ya Utafutaji",
"peerNotOnline": "Anwani haipo mtandaoni. Maombo hayawezi kutumika kwa sasa.",
"addListItemBtn": "Ongeza Kipengee",
"membershipDescription": "Ifuatayo ni orodha ya watumiaji ambao wametuma ujumbe kwa kikundi. Orodha hii inaweza isiakisi watumiaji wote wanaoweza kufikia kikundi.",
"dmTooltip": "Bofya kwa DM",
"couldNotSendMsgError": "Haikuweza kutuma ujumbe huu",
"acknowledgedLabel": "Imekubaliwa",
"pendingLabel": "Inasubiri",
"peerBlockedMessage": "Anwani imezuiwa",
"peerOfflineMessage": "Anwani haipo mtandaoni, ujumbe hauwezi kutumwa kwa sasa",
"copyBtn": "Nakili",
"newGroupBtn": "Unda kikundi kipya",
"acceptGroupInviteLabel": "Je, ungependa kukubali mwaliko wa",
"acceptGroupBtn": "Kubali",
"rejectGroupBtn": "Kataa",
"chatBtn": "Soga",
"listsBtn": "Orodha",
"bulletinsBtn": "Viaridhishi",
"puzzleGameBtn": "Mchezo wa Mafumbo",
"addressLabel": "Anwani",
"copiedToClipboardNotification": "Imenakiliwa kwenye Ubao wa kunakili",
"displayNameLabel": "Jina la Kuonyesha",
"blockBtn": "Zuia Anwani",
"savePeerHistory": "Hifadhi Historia",
"savePeerHistoryDescription": "Huamua kama kufuta historia yoyote inayohusishwa na mwasiliani.",
"dontSavePeerHistory": "Futa Historia",
"unblockBtn": "Ondoa kizuizi kwa Anwani",
"addProfileTitle": "Ongeza wasifu mpya",
"editProfileTitle": "Hariri Wasifu",
"profileName": "Jina la kuonyesha",
"defaultProfileName": "Alice",
"newProfile": "Wasifu Mpya",
"editProfile": "Hariri Wasifu",
"radioUsePassword": "Nywila",
"radioNoPassword": "Haijasimbwa (Hakuna nywila)",
"noPasswordWarning": "Kutotumia nywila kwenye akaunti hii kunamaanisha kuwa data zote zilizohifadhiwa ndani hazitasimbwa kwa njia fiche",
"yourDisplayName": "Jina Lako la Kuonyesha",
"currentPasswordLabel": "Nywila ya sasa",
"password1Label": "Nywila",
"password2Label": "Ingiza tena Nywila",
"passwordErrorEmpty": "Nywila haiwezi kuwa tupu",
"createProfileBtn": "Unda Wasifu",
"saveProfileBtn": "Hifadhi Wasifu",
"passwordErrorMatch": "Nywila hailingani",
"passwordChangeError": "Hitilafu katika kubadilisha nywila: Nenosiri lililotolewa limekataliwa",
"deleteProfileBtn": "Futa Wasifu",
"deleteConfirmLabel": "Andika FUTA ili kuthibitisha",
"deleteProfileConfirmBtn": "Kweli Futa Wasifu",
"deleteConfirmText": "FUTA",
"addNewProfileBtn": "Ongeza wasifu mpya",
"enterProfilePassword": "weka nywila ili uone wasifu wako",
"password": "Nywila",
"error0ProfilesLoadedForPassword": "0 wasifu iliyopakiwa na nywila hiyo",
"yourProfiles": "Wasifu Wako",
"yourServers": "Seva zako",
"unlock": "Fungua",
"cwtchSettingsTitle": "Mipangilio ya Cwtch",
"versionBuilddate": "Toleo: %1 Imejengwa kwa: %2",
"zoomLabel": "Ukuza wa kiolesura (huathiri zaidi maandishi na ukubwa wa vitufe)",
"blockUnknownLabel": "Zuia Anwani Zisizojulikana",
"settingLanguage": "Lugha",
"localeEn": "Kiingereza \/ Kiingereza",
"localeFr": "Kifaransa \/ Kifaransa",
"localePt": "Kireno \/ Kireno",
"localeDe": "Kijerumani \/ Kijerumani",
"settingInterfaceZoom": "Kiwango cha kukuza",
"largeTextLabel": "Kubwa",
"settingTheme": "Tumia Mandhari Mwanga",
"themeLight": "Mwanga",
"themeDark": "Giza",
"experimentsEnabled": "Washa Majaribio",
"versionTor": "Toleo la %1 lenye tor %2",
"version": "Toleo %1",
"builddate": "Imejengwa kwa: %2",
"defaultScalingText": "Kuongeza herufi",
"smallTextLabel": "Ndogo",
"loadingTor": "Inapakia tor...",
"viewGroupMembershipTooltip": "Tazama Uanachama wa Kikundi",
"networkStatusDisconnected": "Imetenganishwa na mtandao, angalia muunganisho wako",
"networkStatusAttemptingTor": "Inajaribu kuunganisha kwenye mtandao wa Tor",
"networkStatusConnecting": "Inaunganisha kwenye mtandao na anwani...",
"networkStatusOnline": "Mtandaoni",
"newConnectionPaneTitle": "Muunganisho Mpya",
"addListItem": "Ongeza Kipengee Kipya cha Orodha",
"addNewItem": "Ongeza kipengee kipya kwenye orodha",
"todoPlaceholder": "Kufanya...",
"localeEs": "Kihispania \/ Kihispania",
"localeIt": "Kiitaliano \/ Kiitaliano",
"enableGroups": "Washa Gumzo la Kikundi",
"enterCurrentPasswordForDelete": "Tafadhali weka nywila ya sasa ili kufuta wasifu huu.",
"conversationSettings": "Mipangilio ya Mazungumzo",
"invalidImportString": "Mfuatano batili wa kuleta",
"contactAlreadyExists": "Anwani Tayari Ipo",
"tooltipOpenSettings": "Fungua kidirisha cha mipangilio",
"tooltipAddContact": "Ongeza anwani au mazungumzo mapya",
"titleManageContacts": "Mazungumzo",
"tooltipUnlockProfiles": "Fungua wasifu uliosimbwa kwa njia fiche kwa kuweka nenosiri lao.",
"titleManageProfiles": "Dhibiti Wasifu wa Cwtch",
"descriptionExperiments": "Majaribio ya Cwtch ni ya hiari, vipengele vya kujijumuisha vinavyoongeza utendakazi wa ziada kwenye Cwtch ambavyo vinaweza kuwa na masuala ya faragha tofauti na gumzo la kawaida la metadata 1:1 kwa mfano gumzo la kikundi, muunganisho wa roboti n.k.",
"descriptionExperimentsGroups": "The group experiment allows Cwtch to connect with untrusted server infrastructure to facilitate communication with more than one contact.",
"descriptionBlockUnknownConnections": "Ikiwashwa, chaguo hili litafunga kiotomatiki miunganisho kutoka kwa watumiaji wa Cwtch ambao hawajaongezwa kwenye orodha yako ya anwani.",
"successfullAddedContact": "Imefanikiwa kuongezwa",
"titleManageServers": "Dhibiti Seva",
"inviteToGroup": "Umealikwa kujiunga na kikundi:",
"leaveConversation": "Acha Mazungumzo Haya",
"reallyLeaveThisGroupPrompt": "Je, una uhakika unataka kuondoka kwenye mazungumzo haya? Ujumbe na sifa zote zitafutwa.",
"yesLeave": "Ndiyo, Acha Mazungumzo Haya",
"newPassword": "Nywila Mpya",
"chatHistoryDefault": "Mazungumzo haya yatafutwa Cwtch itakapofungwa! Historia ya ujumbe inaweza kuwashwa kwa kila mazungumzo kupitia menyu ya Mipangilio iliyo upande wa juu kulia.",
"accepted": "Imekubaliwa!",
"rejected": "Imekataliwa!",
"contactSuggestion": "Hili ni pendekezo la mawasiliano kwa:",
"sendAnInvitation": "Ulituma mwaliko kwa:",
"torVersion": "Toleo la Tor",
"torStatus": "Hali ya Tor",
"resetTor": "Weka upya",
"cancel": "Ghairi",
"sendMessage": "Tuma Ujumbe",
"sendInvite": "Tuma mwaliko wa anwani au kikundi",
"deleteProfileSuccess": "Imefaulu kufuta wasifu",
"addServerFirst": "Unahitaji kuongeza seva kabla ya kuunda kikundi",
"nickChangeSuccess": "Jina la utani la wasifu limebadilishwa",
"createProfileToBegin": "Tafadhali unda au fungua wasifu wa kuanza",
"addContactFirst": "Ongeza au uchague anwani ili kuanza kupiga gumzo.",
"torNetworkStatus": "Hali ya mtandao wa Tor",
"debugLog": "Washa kumbukumbu ya utatuzi wa kiweko",
"profileDeleteSuccess": "Imefaulu kufuta wasifu",
"malformedMessage": "Ujumbe wenye hitilafu",
"shutdownCwtchTooltip": "Zima Cwtch",
"shutdownCwtchDialogTitle": "Zima Cwtch?",
"shutdownCwtchDialog": "Je, una uhakika unataka kuzima Cwtch? Hii itafunga miunganisho yote, na kuacha programu.",
"shutdownCwtchAction": "Zima Cwtch",
"groupInviteSettingsWarning": "Umealikwa kujiunga na kikundi! Tafadhali washa Jaribio la Gumzo la Kikundi katika Mipangilio ili kutazama Mwaliko huu.",
"tooltipShowPassword": "Onyesha Nywila",
"tooltipHidePassword": "Ficha Nywila",
"notificationNewMessageFromPeer": "Ujumbe mpya kutoka kwa anwani unayowasiliana nayo!",
"notificationNewMessageFromGroup": "Ujumbe mpya katika kikundi!",
"tooltipAcceptContactRequest": "Kubali ombi hili la mawasiliano.",
"tooltipRejectContactRequest": "Kataa ombi hili la mawasiliano",
"tooltipReplyToThisMessage": "Jibu ujumbe huu",
"tooltipRemoveThisQuotedMessage": "Ondoa ujumbe ulionukuliwa.",
"localePl": "Kipolishi \/ Polski",
"settingUIColumnPortrait": "Safu wima za UI katika Hali ya Wima",
"settingUIColumnLandscape": "Safu wima za UI katika Hali ya Mandhari",
"settingUIColumnSingle": "Moja",
"settingUIColumnDouble12Ratio": "Mara mbili (1:2)",
"settingUIColumnDouble14Ratio": "Mara mbili (1:4)",
"settingUIColumnOptionSame": "Sawa na mpangilio wa hali ya wima",
"contactGoto": "Nenda kwenye mazungumzo na %1",
"addContact": "Ongeza anwani",
"addContactConfirm": "Ongeza anwani %1",
"encryptedProfileDescription": "Kusimba wasifu kwa nenosiri huilinda dhidi ya watu wengine ambao wanaweza pia kutumia kifaa hiki. Wasifu uliosimbwa kwa njia fiche hauwezi kusimbwa, kuonyeshwa au kufikiwa hadi nenosiri sahihi liingizwe ili kuzifungua.",
"plainProfileDescription": "Tunapendekeza kwamba ulinde wasifu wako wa Cwtch kwa nenosiri. Ikiwa hutaweka nenosiri kwenye wasifu huu basi mtu yeyote anayeweza kufikia kifaa hiki anaweza kufikia maelezo kuhusu wasifu huu, ikiwa ni pamoja na anwani, ujumbe na funguo nyeti za kriptografia.",
"placeholderEnterMessage": "Andika ujumbe...",
"blockedMessageMessage": "Ujumbe huu unatoka kwa wasifu uliouzuia.",
"showMessageButton": "Onyesha Ujumbe",
"blockUnknownConnectionsEnabledDescription": "Miunganisho kutoka kwa anwani zisizojulikana umezuiwa. Unaweza kubadilisha hii katika Mipangilio",
"archiveConversation": "Hifadhi Mazungumzo haya kwenye kumbukumbu",
"streamerModeLabel": "Hali ya Kipeperushi\/Uwasilishaji",
"descriptionStreamerMode": "Ikiwashwa, chaguo hili hufanya programu ionekane kuwa ya faragha zaidi kwa ajili ya kutiririsha au kuwasilisha, kwa mfano, kuficha wasifu na anwani za mawasiliano.",
"retrievingManifestMessage": "Inarejesha maelezo ya faili...",
"openFolderButton": "Fungua Folda",
"downloadFileButton": "Pakua",
"labelFilename": "Jina la faili",
"labelFilesize": "Ukubwa",
"messageEnableFileSharing": "wezesha jaribio la kushiriki faili ili kuona ujumbe huu.",
"messageFileSent": "Umetuma faili",
"messageFileOffered": "Anwani inajitolea kukutumia faili",
"tooltipSendFile": "Tuma Faili",
"settingFileSharing": "Kushiriki faili",
"descriptionFileSharing": "Jaribio la kushiriki faili hukuruhusu kutuma na kupokea faili kutoka kwa anwani na vikundi vya Cwtch. Kumbuka kwamba kushiriki faili na kikundi kutasababisha washiriki wa kikundi hicho kuungana nawe moja kwa moja kupitia Cwtch ili kuipakua.",
"titleManageProfilesShort": "Wasifu",
"addServerTitle": "Ongeza Seva",
"editServerTitle": "Hariri Seva",
"serverAddress": "Anuani ya server",
"serverDescriptionLabel": "Maelezo ya Seva",
"serverDescriptionDescription": "Maelezo yako ya seva kwa matumizi ya usimamizi wa kibinafsi pekee, hayatashirikiwa kamwe",
"serverEnabled": "Seva Imewezeshwa",
"serverEnabledDescription": "Anzisha au usimamishe seva",
"serverAutostartLabel": "Anzisha kiotomatiki",
"serverAutostartDescription": "Hudhibiti ikiwa programu itazindua seva kiotomatiki inapoanza",
"saveServerButton": "Hifadhi Seva",
"serversManagerTitleLong": "Seva Unazopangisha",
"serversManagerTitleShort": "Seva",
"addServerTooltip": "Ongeza seva mpya",
"unlockServerTip": "Tafadhali unda au kufungua seva kuanza!",
"unlockProfileTip": "Tafadhali unda au fungua wasifu ili kuanza!",
"enterServerPassword": "Weka nenosiri ili kufungua seva",
"settingServers": "Seva za Kukaribisha",
"settingServersDescription": "Jaribio la seva za kupangisha huwezesha kupangisha na kudhibiti seva za Cwtch",
"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",
"fileInterrupted": "Imekatizwa",
"fileCheckingStatus": "Inakagua hali ya upakuaji",
"verfiyResumeButton": "Thibitisha\/endelea tena",
"copyServerKeys": "Nakili funguo",
"localeRU": "Kirusi \/ Русский",
"newMessagesLabel": "Ujumbe Mpya",
"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",
"manageKnownServersLong": "Dhibiti Seva Zinazojulikana",
"manageKnownServersShort": "Seva",
"serverMetricsLabel": "Vipimo vya Seva",
"serverTotalMessagesLabel": "Jumla ya Ujumbe",
"serverConnectionsLabel": "Muunganisho",
"enableExperimentClickableLinks": "Wezesha Viungo Vinavyobofka",
"experimentClickableLinksDescription": "Jaribio la viungo vinavyoweza kubofya hukuruhusu kubofya URL zilizoshirikiwa katika ujumbe",
"settingImagePreviews": "Muhtasari wa Picha na Picha za Wasifu",
"settingImagePreviewsDescription": "Picha na Picha za Profaili zitapakuliwa na kuoneshwa kiotomatiki. Tunapendekeza kwamba usiwezeshe Jaribio hili ikiwa unatumia Cwtch na anwani zisizoaminika.",
"settingDownloadFolder": "Pakua Folda",
"themeNameCwtch": "Cwtch",
"themeNameWitch": "Mchawi",
"themeNameVampire": "Vampire",
"themeNameGhost": "Roho",
"themeNamePumpkin": "Maboga",
"themeNameMermaid": "Mermaid",
"themeNameMidnight": "Usiku wa manane",
"themeNameNeon1": "Neon1",
"themeNameNeon2": "Neon2",
"themeColorLabel": "Mandhari ya Rangi",
"loadingCwtch": "Inapakia Cwtch...",
"storageMigrationModalMessage": "Inahamisha wasifu hadi umbizo jipya la hifadhi. Hii inaweza kuchukua dakika chache...",
"msgFileTooBig": "Ukubwa wa faili hauwezi kuzidi GB 10",
"msgConfirmSend": "Je, una uhakika unataka kutuma",
"btnSendFile": "Tuma Faili",
"msgAddToAccept": "Ongeza akaunti hii kwa watu unaowasiliana nao ili ukubali faili hii.",
"torSettingsEnabledAdvanced": "Wezesha Usanidi wa juu wa Tor",
"torSettingsEnabledAdvancedDescription": "Tumia huduma iliyopo ya Tor kwenye mfumo wako, au ubadilishe vigezo vya Huduma ya Cwtch Tor",
"torSettingsCustomSocksPort": "Bandari Maalum ya SOKS",
"torSettingsCustomSocksPortDescription": "Tumia mlango maalum kwa miunganisho ya data kwa seva mbadala ya Tor",
"torSettingsCustomControlPort": "Mlango wa Kudhibiti Maalum",
"torSettingsCustomControlPortDescription": "Tumia mlango maalum kudhibiti miunganisho kwa seva mbadala ya Tor",
"torSettingsUseCustomTorServiceConfiguration": "Tumia Usanidi Maalum wa Huduma ya Tor (torrc)",
"torSettingsUseCustomTorServiceConfigurastionDescription": "Batilisha usanidi chaguo-msingi wa tor. Onyo: Hii inaweza kuwa hatari. Washa hii ikiwa tu unajua unachofanya.",
"torSettingsErrorSettingPort": "Nambari ya Mlango lazima iwe kati ya 1 na 65535",
"fileSharingSettingsDownloadFolderDescription": "Faili zinapopakuliwa kiotomatiki (km faili za picha, mapitio ya picha yanapowezeshwa) eneo chaguomsingi la kupakua faili linahitajika.",
@ -58,7 +343,6 @@
"tooltipBackToMessageEditing": "Rudi kwa Kuhariri Ujumbe",
"tooltipItalicize": "Italiki",
"tooltipSubscript": "Usajili",
"tooltipStrikethrough": "Strikethrough",
"tooltipCode": "Nambari \/ Nafasi moja",
"tooltipPreviewFormatting": "Hakiki Uumbizaji wa Ujumbe",
"manageSharedFiles": "Dhibiti Faili Zilizoshirikiwa",
@ -89,7 +373,6 @@
"blodeuweddExperimentEnable": "Msaidizi wa Blodeuwedd",
"blodeuweddNotSupported": "Toleo hili la Cwtch limeundwa bila usaidizi kwa Msaidizi wa Blodeuwedd.",
"retryConnectionTooltip": "Cwtch retries wenzao mara kwa mara, lakini unaweza kuwaambia Cwtch kujaribu mapema kwa kubofya hiki kitufe",
"blodeuweddPath": "The directory where the Blodeuwedd is located on your computer.",
"blodeuweddSummarize": "Fupisha Mazungumzo",
"blodeuweddTranslate": "Tafsiri Ujumbe",
"blodeuweddProcessing": "Blodeuwedd inachakata...",
@ -100,292 +383,9 @@
"profileInfoHint2": "Unaweza kuongeza hadi sehemu 3.",
"profileInfoHint3": "Anwani zitaweza kuona maelezo haya katika Mipangilio ya Mazungumzo",
"retryConnection": "Jaribu tena",
"fontScalingDescription": "Adjust the relative font scaling factor applied to text and widgets.",
"localeUk": "Kiukreni \/ українською",
"localeSv": "Kiswidi \/ Svenska",
"localeJa": "Kijapani \/ 日本語",
"localeSw": "Kiswahili \/ Kiswahili",
"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.",
"blodeuweddDescription": "The Blodeuwedd assistant adds new features to Cwtch such as chat transcript summarization and message translation via a locally hosted language model.",
"errorDownloadDirectoryDoesNotExist": "Filesharing cannot be enabled because the Download Folder has not been set, or is set to a folder that does not exist.",
"tooltipSuperscript": "Superscript",
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
"torSettingsUseCustomTorServiceConfiguration": "Use a Custom Tor Service Configuration (torrc)",
"torSettingsCustomControlPortDescription": "Use a custom port for control connections to the Tor proxy",
"torSettingsCustomControlPort": "Custom Control Port",
"torSettingsCustomSocksPortDescription": "Use a custom port for data connections to the Tor proxy",
"torSettingsCustomSocksPort": "Custom SOCKS Port",
"torSettingsEnabledAdvancedDescription": "Use an existing Tor service on your system, or change the parameters of the Cwtch Tor Service",
"torSettingsEnabledAdvanced": "Enable Advanced Tor Configuration",
"msgAddToAccept": "Add this account to your contacts in order to accept this file.",
"btnSendFile": "Send File",
"msgConfirmSend": "Are you sure you want to send",
"msgFileTooBig": "File size cannot exceed 10 GB",
"storageMigrationModalMessage": "Migrating profiles to new storage format. This could take a few minutes...",
"loadingCwtch": "Loading Cwtch...",
"themeColorLabel": "Color Theme",
"themeNameNeon2": "Neon2",
"themeNameNeon1": "Neon1",
"themeNameMidnight": "Midnight",
"themeNameMermaid": "Mermaid",
"themeNamePumpkin": "Pumpkin",
"themeNameGhost": "Ghost",
"themeNameVampire": "Vampire",
"themeNameWitch": "Witch",
"themeNameCwtch": "Cwtch",
"settingDownloadFolder": "Download Folder",
"settingImagePreviewsDescription": "Images and Profile Pictures will be downloaded and previewed automatically. We recommend that you do not enable this Experiment if you use Cwtch with untrusted contacts.",
"settingImagePreviews": "Image Previews and Profile Pictures",
"experimentClickableLinksDescription": "The clickable links experiment allows you to click on URLs shared in messages",
"enableExperimentClickableLinks": "Enable Clickable Links",
"serverConnectionsLabel": "Connection",
"serverTotalMessagesLabel": "Total Messages",
"serverMetricsLabel": "Server Metrics",
"manageKnownServersShort": "Servers",
"manageKnownServersLong": "Manage Known Servers",
"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",
"newMessagesLabel": "New Messages",
"localeRU": "Russian \/ Русский",
"copyServerKeys": "Copy keys",
"verfiyResumeButton": "Verify\/resume",
"fileCheckingStatus": "Checking download status",
"fileInterrupted": "Interrupted",
"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",
"settingServersDescription": "The hosting servers experiment enables hosting and managing Cwtch servers",
"settingServers": "Hosting Servers",
"enterServerPassword": "Enter password to unlock server",
"unlockProfileTip": "Please create or unlock a profile to begin!",
"unlockServerTip": "Please create or unlock a server to begin!",
"addServerTooltip": "Add new server",
"serversManagerTitleShort": "Servers",
"serversManagerTitleLong": "Servers You Host",
"saveServerButton": "Save Server",
"serverAutostartDescription": "Controls if the application will automatically launch the server on start",
"serverAutostartLabel": "Autostart",
"serverEnabledDescription": "Start or stop the server",
"serverEnabled": "Server Enabled",
"serverDescriptionDescription": "Your description of the server for personal management use only, will never be shared",
"serverDescriptionLabel": "Server Description",
"serverAddress": "Server Address",
"editServerTitle": "Edit Server",
"addServerTitle": "Add Server",
"titleManageProfilesShort": "Profiles",
"descriptionFileSharing": "The file sharing experiment allows you to send and receive files from Cwtch contacts and groups. Note that sharing a file with a group will result in members of that group connecting with you directly over Cwtch to download it.",
"settingFileSharing": "File Sharing",
"tooltipSendFile": "Send File",
"messageFileOffered": "Contact is offering to send you a file",
"messageFileSent": "You sent a file",
"messageEnableFileSharing": "Enable the file sharing experiment to view this message.",
"labelFilesize": "Size",
"labelFilename": "Filename",
"downloadFileButton": "Download",
"openFolderButton": "Open Folder",
"retrievingManifestMessage": "Retrieving file information...",
"descriptionStreamerMode": "If turned on, this option makes the app more visually private for streaming or presenting with, for example, hiding profile and contact addresses",
"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.",
"encryptedProfileDescription": "Encrypting a profile with a password protects it from other people who may also use this device. Encrypted profiles cannot be decrypted, displayed or accessed until the correct password is entered to unlock them.",
"addContactConfirm": "Add contact %1",
"addContact": "Add contact",
"contactGoto": "Go to conversation with %1",
"settingUIColumnOptionSame": "Same as portrait mode setting",
"settingUIColumnDouble14Ratio": "Double (1:4)",
"settingUIColumnDouble12Ratio": "Double (1:2)",
"settingUIColumnSingle": "Single",
"settingUIColumnLandscape": "UI Columns in Landscape Mode",
"settingUIColumnPortrait": "UI Columns in Portrait Mode",
"localePl": "Polish \/ Polski",
"tooltipRemoveThisQuotedMessage": "Remove quoted message.",
"tooltipReplyToThisMessage": "Reply to this message",
"tooltipRejectContactRequest": "Reject this contact request",
"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",
"torNetworkStatus": "Tor network status",
"addContactFirst": "Add or pick a contact to begin chatting.",
"createProfileToBegin": "Please create or unlock a profile to begin",
"nickChangeSuccess": "Profile nickname changed successfully",
"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",
"defaultScalingText": "Font Scaling",
"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",
"serverLabel": "Server",
"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",
"createGroupTab": "Create a group",
"addPeerTab": "Add a contact",
"createGroupBtn": "Create",
"defaultGroupName": "Awesome Group",
"createGroupTitle": "Create Group"
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up."
}

View File

@ -1,6 +1,6 @@
{
"@@locale": "tr",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"profileEnabledDescription": "Profili başlat veya durdur",
"localeSw": "Swahili \/ Kiswahili",

View File

@ -1,6 +1,6 @@
{
"@@locale": "uk",
"@@last_modified": "2023-05-29T14:05:23+02:00",
"@@last_modified": "2023-06-04T17:50:20+02:00",
"localeUk": "Ukrainian \/ українською",
"localeSw": "Swahili \/ Kiswahili",
"localeSv": "Swedish \/ Svenska",

View File

@ -78,6 +78,7 @@ class FlwtchState extends State<Flwtch> with WindowListener {
@override
initState() {
print("initState() started, setting up handlers");
globalSettings = Settings(Locale("en", ''), CwtchDark());
globalErrorHandler = ErrorHandler();
globalTorStatus = TorStatus();

View File

@ -66,8 +66,7 @@ class WindowsNotificationManager implements NotificationsManager {
if (!active) {
active = true;
WinToast.instance().clear();
final toast = await WinToast.instance().showToast(
type: ToastType.text01, title: message);
final toast = await WinToast.instance().showToast(type: ToastType.text01, title: message);
toast?.eventStream.listen((event) {
if (event is ActivatedEvent) {
WinToast.instance().bringWindowToFront();

View File

@ -290,7 +290,9 @@ class MessageRowState extends State<MessageRow> with SingleTickerProviderStateMi
)))));
if (Provider.of<ContactInfoState>(context).newMarkerMsgIndex == widget.index) {
return Column(crossAxisAlignment: fromMe ? CrossAxisAlignment.end : CrossAxisAlignment.start, children: [Align(alignment: Alignment.center, child: _bubbleNew()), mr]);
return Column(
crossAxisAlignment: fromMe ? CrossAxisAlignment.end : CrossAxisAlignment.start,
children: [Align(alignment: Alignment.center, child: Padding(padding: EdgeInsets.all(5.0), child: _bubbleNew())), mr]);
} else {
return mr;
}

View File

@ -5,18 +5,18 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
sha256: "405666cd3cf0ee0a48d21ec67e65406aad2c726d9fa58840d3375e7bdcd32a07"
sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a
url: "https://pub.dev"
source: hosted
version: "60.0.0"
version: "61.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
sha256: "1952250bd005bacb895a01bf1b4dc00e3ba1c526cf47dca54dfe24979c65f5b3"
sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562
url: "https://pub.dev"
source: hosted
version: "5.12.0"
version: "5.13.0"
archive:
dependency: transitive
description:
@ -29,10 +29,10 @@ packages:
dependency: transitive
description:
name: args
sha256: c372bb384f273f0c2a8aaaa226dad84dc27c8519a691b888725dec59518ad53a
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
url: "https://pub.dev"
source: hosted
version: "2.4.1"
version: "2.4.2"
async:
dependency: transitive
description:
@ -77,26 +77,26 @@ packages:
dependency: transitive
description:
name: build_resolvers
sha256: "687cf90a3951affac1bd5f9ecb5e3e90b60487f3d9cdc359bb310f8876bb02a6"
sha256: db49b8609ef8c81cca2b310618c3017c00f03a92af44c04d310b907b2d692d95
url: "https://pub.dev"
source: hosted
version: "2.0.10"
version: "2.2.0"
build_runner:
dependency: "direct dev"
description:
name: build_runner
sha256: "220ae4553e50d7c21a17c051afc7b183d28a24a420502e842f303f8e4e6edced"
sha256: "5e1929ad37d48bd382b124266cb8e521de5548d406a45a5ae6656c13dab73e37"
url: "https://pub.dev"
source: hosted
version: "2.4.4"
version: "2.4.5"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: "30859c90e9ddaccc484f56303931f477b1f1ba2bab74aa32ed5d6ce15870f8cf"
sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41"
url: "https://pub.dev"
source: hosted
version: "7.2.8"
version: "7.2.10"
built_collection:
dependency: transitive
description:
@ -109,10 +109,10 @@ packages:
dependency: transitive
description:
name: built_value
sha256: "2f17434bd5d52a26762043d6b43bb53b3acd029b4d9071a329f46d67ef297e6d"
sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166"
url: "https://pub.dev"
source: hosted
version: "8.5.0"
version: "8.6.1"
characters:
dependency: transitive
description:
@ -149,10 +149,10 @@ packages:
dependency: transitive
description:
name: code_builder
sha256: "0d43dd1288fd145de1ecc9a3948ad4a6d5a82f0a14c4fdd0892260787d975cbe"
sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189"
url: "https://pub.dev"
source: hosted
version: "4.4.0"
version: "4.5.0"
collection:
dependency: transitive
description:
@ -211,10 +211,10 @@ packages:
dependency: transitive
description:
name: dart_style
sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4"
sha256: f4f1f73ab3fd2afcbcca165ee601fe980d966af6a21b5970c6c9376955c528ad
url: "https://pub.dev"
source: hosted
version: "2.2.4"
version: "2.3.1"
dbus:
dependency: "direct main"
description:
@ -278,7 +278,7 @@ packages:
description:
path: "."
ref: main
resolved-ref: "9e89cc0d89770242a3c2e86573f9618a0dd49194"
resolved-ref: cfa8a5f93267e8b544cd705ad015dcc55d7804fa
url: "https://git.openprivacy.ca/openprivacy/flutter_gherkin"
source: git
version: "3.0.0-rc.17"
@ -286,10 +286,10 @@ packages:
dependency: "direct main"
description:
name: flutter_local_notifications
sha256: ee6ee56855aa920899b68586b538474d086c149932220b47b92502cbfb5ba5e5
sha256: "812791d43ccfc1b443a0d39fa02a206fc228c597e28ff9337e09e3ca8d370391"
url: "https://pub.dev"
source: hosted
version: "14.0.0+2"
version: "14.1.1"
flutter_local_notifications_linux:
dependency: transitive
description:
@ -315,10 +315,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: "96af49aa6b57c10a312106ad6f71deed5a754029c24789bbf620ba784f0bd0b0"
sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360"
url: "https://pub.dev"
source: hosted
version: "2.0.14"
version: "2.0.15"
flutter_test:
dependency: transitive
description: flutter
@ -362,26 +362,26 @@ packages:
dependency: "direct main"
description:
name: glob
sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c"
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
version: "2.1.2"
graphs:
dependency: transitive
description:
name: graphs
sha256: "772db3d53d23361d4ffcf5a9bb091cf3ee9b22f2be52cd107cd7a2683a89ba0e"
sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19
url: "https://pub.dev"
source: hosted
version: "2.3.0"
version: "2.3.1"
http:
dependency: transitive
description:
name: http
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
sha256: "4c3f04bfb64d3efd508d06b41b825542f08122d30bda4933fb95c069d22a4fa3"
url: "https://pub.dev"
source: hosted
version: "0.13.6"
version: "1.0.0"
http_multi_server:
dependency: transitive
description:
@ -447,10 +447,10 @@ packages:
dependency: transitive
description:
name: logging
sha256: "04094f2eb032cbb06c6f6e8d3607edcfcb0455e2bb6cbc010cb01171dcb64e6d"
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
version: "1.2.0"
matcher:
dependency: transitive
description:
@ -487,10 +487,10 @@ packages:
dependency: "direct dev"
description:
name: msix
sha256: "88ee83949d87dc635ffd51d7c17ef222390e5067693cc248046661b12a353d13"
sha256: bf151b9a1648985e7604672ade54c8df693566099d0731e318548c47d54676e6
url: "https://pub.dev"
source: hosted
version: "3.12.2"
version: "3.14.2"
nested:
dependency: transitive
description:
@ -511,10 +511,10 @@ packages:
dependency: "direct main"
description:
name: package_info_plus
sha256: d39e8fbff4c5aef4592737e25ad6ac500df006ce7a7a8e1f838ce1256e167542
sha256: ceb027f6bc6a60674a233b4a90a7658af1aebdea833da0b5b53c1e9821a78c7b
url: "https://pub.dev"
source: hosted
version: "4.0.0"
version: "4.0.2"
package_info_plus_platform_interface:
dependency: transitive
description:
@ -559,10 +559,10 @@ packages:
dependency: transitive
description:
name: path_provider_linux
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57
url: "https://pub.dev"
source: hosted
version: "2.1.10"
version: "2.1.11"
path_provider_platform_interface:
dependency: transitive
description:
@ -575,10 +575,10 @@ packages:
dependency: transitive
description:
name: path_provider_windows
sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6
sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96"
url: "https://pub.dev"
source: hosted
version: "2.1.6"
version: "2.1.7"
petitparser:
dependency: transitive
description:
@ -708,10 +708,10 @@ packages:
dependency: transitive
description:
name: source_gen
sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d"
sha256: "373f96cf5a8744bc9816c1ff41cf5391bbdbe3d7a96fe98c622b6738a8a7bd33"
url: "https://pub.dev"
source: hosted
version: "1.2.6"
version: "1.3.2"
source_span:
dependency: transitive
description:
@ -812,10 +812,10 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: "7aac14be5f4731b923cc697ae2d42043945076cd0dbb8806baecc92c1dc88891"
sha256: eed4e6a1164aa9794409325c3b707ff424d4d1c2a785e7db67f8bbda00e36e51
url: "https://pub.dev"
source: hosted
version: "6.0.33"
version: "6.0.35"
url_launcher_ios:
dependency: transitive
description:
@ -852,10 +852,10 @@ packages:
dependency: transitive
description:
name: url_launcher_web
sha256: "81fe91b6c4f84f222d186a9d23c73157dc4c8e1c71489c4d08be1ad3b228f1aa"
sha256: "6bb1e5d7fe53daf02a8fee85352432a40b1f868a81880e99ec7440113d5cfcab"
url: "https://pub.dev"
source: hosted
version: "2.0.16"
version: "2.0.17"
url_launcher_windows:
dependency: transitive
description:
@ -932,10 +932,10 @@ packages:
dependency: "direct main"
description:
name: window_manager
sha256: "2b2572442b2a5178642730442dc625ac088244f5827b1f0811371b1b7485eb62"
sha256: "95096fede562cbb65f30d38b62d819a458f59ba9fe4a317f6cee669710f6676b"
url: "https://pub.dev"
source: hosted
version: "0.3.2"
version: "0.3.4"
xdg_directories:
dependency: transitive
description:

View File

@ -7,7 +7,7 @@ flutter pub run build_runner build --delete-conflicting-outputs
PATH=$PATH:$PWD/linux/Tor
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$PWD/linux/":"$PWD/linux/Tor/"
PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH CWTCH_HOME=$PWD/integration_test/env/temp/ flutter test -d linux --dart-define TEST_MODE=true integration_test/gherkin_suite_test.dart
PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH LOG_FILE=test.log CWTCH_HOME=$PWD/integration_test/env/temp/ flutter test -d linux --dart-define TEST_MODE=true integration_test/gherkin_suite_test.dart
#node index2.js
#if [ "$HEADLESS" = "false" ]; then
# xdg-open integration_test/gherkin/reports/cucumber_report.html