Hacsak az ismerős nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse.
+ Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse.
\nA csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e.
videóhívás (nem e2e titkosított)
Alkalmazás új kapcsolatokhoz
@@ -1319,7 +1319,7 @@
Az ismerősnek online kell lennie ahhoz, hogy a kapcsolat létrejöjjön.
\nMegszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással)
A jelszó nem található a Keystore-ban, ezért kézzel szükséges megadni. Ez akkor történhetett meg, ha visszaállította az alkalmazás adatait egy biztonsági mentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel.
- Az ismerősök továbbra is csatlakoztatva maradnak.
+ Az ismerősei továbbra is csatlakoztatva maradnak.
A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze jelszavát
Az adatbázis nem működik megfelelően. Koppintson további információért
A fájl küldése leállt.
@@ -1341,7 +1341,7 @@
Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen
Az adatavédelem érdekében kapcsolja be a SimpleX zárolás funkciót.
\nA funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befejezésére.
- A videó akkor érkezik meg, amikor az ismerős elérhető, várjon, vagy ellenőrizze később!
+ A videó akkor érkezik meg, amikor az ismerőse elérhető, várjon, vagy ellenőrizze később!
Hálózati kapcsolat ellenőrzése a következővel: %1$s, és próbálja újra.
A SimpleX zárolás a Beállításokon keresztül kapcsolható be.
Az alkalmazás összeomlott
@@ -1361,20 +1361,20 @@
%1$s.]]>
Profil felfedése
Ez a hivatkozás nem érvényes kapcsolati hivatkozás!
- A végpontok közötti titkosítás ellenőrzéséhez ismerősével hasonlítsa össze (vagy szkennelje be) az eszközén lévő kódot.
- A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerőstől.
+ A végpontok közötti titkosítás ellenőrzéséhez hasonlítsa össze (vagy szkennelje be) az ismerőse eszközén lévő kódot.
+ A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerősétől.
Ez a beállítás a jelenlegi csevegési profilban lévő üzenetekre érvényes
Meghívást kapott a csoportba. Csatlakozzon, hogy kapcsolatba léphessen a csoport tagjaival.
Ez a csoport már nem létezik.
Ezen a hivatkozáson keresztül már csatlakozik a csoporthoz.
Meghívást kapott a csoportba
Ismerőse a jelenleg megengedett maximális méretű (%1$s) fájlnál nagyobbat küldött.
- Az ismerősök és az üzenetek (kézbesítés után) nem kerülnek tárolásra a SimpleX kiszolgálókon.
+ Az ismerősei és az üzenetek (kézbesítés után) nem kerülnek tárolásra a SimpleX kiszolgálókon.
Üzenetek formázása a szövegbe szúrt speciális karakterekkel:
Megnyitás alkalmazásban gombra.]]>
- Csevegési profilja megküldésre kerül
-\nismerőse számára
- Egy olyan ismerőst próbál meghívni, akivel inkognító profilt osztott meg abban a csoportban, amelyben saját fő profilja van használatban
+ Csevegési profilja elküldésre kerül
+\naz ismerőse számára
+ Egy olyan ismerősét próbálja meghívni, akivel inkognitó profilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban
%1$s csoporthoz.]]>
Amikor az alkalmazás fut
Inkognító profilt használ ehhez a csoporthoz - fő profilja megosztásának elkerülése érdekében meghívók küldése tiltott
@@ -1382,13 +1382,13 @@
Akkor lesz csatlakoztatva, ha a csatlakozási kérelme elfogadásra került, várjon, vagy ellenőrizze később!
A hangüzenetek küldése le van tiltva ebben a csoportban.
Alkalmazás akkumulátor használata / Korlátlan módot az alkalmazás beállításaiban.]]>
- Biztonságos kvantum ellenálló protokoll által.
+ Biztonságos kvantumrezisztens protokollon keresztül.
- hangüzenetek 5 percig.
\n- egyedi eltűnési időhatár
\n- előzmény szerkesztése
Használat számítógépről gombra a mobil appban és olvassa be a QR-kódot!]]>
%s at %s
- Akkor csatlakozik, amikor az ismerős eszköze online lesz, várjon, vagy ellenőrizze később!
+ Akkor csatlakozik, amikor az ismerősének az eszköze online lesz, várjon, vagy ellenőrizze később!
Kéretlen üzenetek elrejtése.
Használja az .onion hostokat NEM értékre, ha a SOCKS proxy nem támogatja őket.]]>
Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki csatlakozhat önhöz.
@@ -1397,7 +1397,7 @@
%s szerepkörét megváltoztatta erre: %s
Csoport meghívó elutasítva
Az adatvédelem érdekében, a más csevegési platformokon megszokott felhasználói azonosítók helyett, a SimpleX üzenetsorokhoz rendel azonosítókat, minden egyes ismerőshöz egy különbözőt.
- (megosztás ismerőssel)
+ (megosztás egy ismerőssel)
Csoport meghívó elküldve
Kapcsolat izolációs mód frissítése?
Kapcsolat izolációs mód
@@ -1409,11 +1409,11 @@
Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban.
Rejtett profiljának felfedéséhez írja be a teljes jelszót a Csevegési profilok oldal keresőmezőjébe.
A csevegés frissítése és megnyitása
- Hangüzeneteket küldéséhez engedélyeznie kell azok küldését az ismerősök számára.
- fogadja az üzeneteket, ismerősöket – A kiszolgálók, amelyeket az üzenetküldéshez használ.]]>
+ Hangüzeneteket küldéséhez engedélyeznie kell azok küldését az ismerősei számára.
+ fogadja az üzeneteket, ismerősöket – a kiszolgálók, amelyeket az üzenetküldéshez használ.]]>
%1$s csoport tagja.]]>
Azonosítója megváltoztatva
- Ismerősök engedélyezhetik a teljes üzenet törlést.
+ Ismerősei engedélyezhetik a teljes üzenet törlést.
A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul - nem az eszközön kerül tárolásra.
Ha engedélyezni szeretné, hogy egy mobilalkalmazás csatlakozzon a számítógéphez, akkor nyissa meg ezt a portot a tűzfalában, ha engedélyezte azt
Profilja, ismerősök és az elküldött üzenetek az eszközön kerülnek tárolásra.
@@ -1421,7 +1421,7 @@
Ez a karakterlánc nem egy meghívó hivatkozás!
Új csevegés kezdése
Már csatlakozik ezen az egyszer használatos hivatkozáson keresztül!
- Nem veszíti el ismerőseit, ha később törli az azonosítóját.
+ Nem veszíti el az ismerőseit, ha később törli az azonosítóját.
A beállítások frissítése a kiszolgálókhoz való újra kapcsolódással jár.
kapcsolatba akar lépni veled!
Saját szerepköre erre változott: %s
@@ -1444,7 +1444,7 @@
Csoporttag részére a csatlakozási kérelem eküldésre kerül.
Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott.
Már kért egy csatlakozást ezen az azonosítón keresztül!
- Megoszthatja ezt a SimpleX azonosítót ismerősökkel, hogy kapcsolatba léphessenek %s-el .
+ Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek ezzel: %s.
Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat.
Megjelenő üzenetet beállítása új tagok részére!
Köszönet a felhasználóknak - hozzájárulás a Weblaten!
@@ -1452,7 +1452,7 @@
Protokoll időkorlát KB-onként
Az adatbázis jelmondatának megváltoztatására tett kísérlet nem fejeződött be.
Ez a művelet nem vonható vissza - a kiválasztottnál korábban küldött és fogadott üzenetek törlésre kerülnek. Ez több percet is igénybe vehet.
- Profilja csak az ismerősök számára kerül megosztásra.
+ Profilja csak az ismerősei számára kerül megosztásra.
Néhány kiszolgáló megbukott a teszten:
Koppintson a csatlakozáshoz
Ez a művelet nem vonható vissza - az összes fogadott és küldött fájl a médiatartalommal együtt törlésre kerülnek. Az alacsony felbontású fotók viszont megmaradnak.
@@ -1476,7 +1476,7 @@
Az átjátszó kiszolgáló csak szükség esetén kerül használatra. Egy másik fél megfigyelheti az IP-címét.
Rendszerhitelesítés helyetti beállítás.
A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be.
- A csevegés leállítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni.
+ A csevegés leállítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni.
Jelmondat mentése a kulcstárolóban
Köszönet a felhasználóknak - hozzájárulás a Weblaten!
Jelmondat mentése a beállításokban
@@ -1505,7 +1505,7 @@
Tárolja el biztonságosan jelmondatát, mert ha elveszíti azt, NEM tudja megváltoztatni.
A jelmondat a beállítások között egyszerű szövegként kerül tárolásra, miután megváltoztatta vagy újraindította az alkalmazást.
A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói
- Fogadás a
+ Fogadás ezen keresztül:
Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez.
A szerepkör \"%s\"-re fog változni. A tag új meghívót kap.
profilkép helyőrző
@@ -1516,12 +1516,12 @@
A jelmondat a beállításokban egyszerű szövegként van tárolva.
Konzol megjelenítése új ablakban
Az előző üzenet hash-e más.
- Ezek a beállítások a jelenlegi proiljára vonatkoznak
+ Ezek a beállítások a jelenlegi profiljára vonatkoznak
Várjon, amíg a fájl betöltődik a csatolt mobilról
GitHub tárolónkban.]]>
hiba a tartalom megjelenítése közben
hiba az üzenet megjelenítésekor
- Láthatóvá teheti SimpleX ismerősök számára a Beállításokban.
+ Láthatóvá teheti SimpleX beli ismerősei számára a Beállításokban.
Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak.
A beolvasott kód nem egy SimpleX hivatkozás QR-kód.
A beillesztett szöveg nem egy SimpleX hivatkozás.
@@ -1538,8 +1538,8 @@
Az előzmények nem kerülnek elküldésre új tagok részére.
Újrapróbálkozás
A fényképező nem elérhető
- Utolsó 100 üzenet küldése új tagoknak.
- Ne küldjön előzményeket új tagok részére.
+ Az utolsó 100 üzenet elküldése az új tagoknak.
+ Ne küldjön előzményeket az új tagok részére.
Vagy mutassa meg ezt a kódot
Kamera hozzáférés engedélyezése
Fel nem használt meghívó megtartása?
@@ -1634,4 +1634,80 @@
Videóhívás
Hiba a böngésző megnyitása közben
A hívásokhoz egy alapértelmezett webböngésző szükséges. Állítson be egy alapértelmezett webböngészőt az eszközön, és osszon meg további információkat a SimpleX Chat fejlesztőivel.
+ Hálózati beállítások megerősítése
+ Hiba a csevegési adatbázis exportálásakor
+ Alkalmaz
+ Archiválás és feltöltés
+ Feltöltés megerősítése
+ Hiba az adatbázis törlésekor
+ Az adminok egy tagot mindenki számára letilthatnak.
+ Minden ismerős, a beszélgetések és a fájlok biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra.
+ Alkalmazásadatok átköltöztetése
+ Adatbázis archiválása
+ Az átköltöztetés megszakítása
+ A csevegés átköltöztetve!
+ Ellenőrizze az internetkapcsolatot, és próbálja újra
+ Archív hivatkozás létrehozása
+ Adatbázis törlése erről az eszközről
+ Letöltés sikertelen
+ Archívum letöltése
+ Letöltési hivatkozás részletei
+ Engedélyezés a közvetlen csevegésekben (BÉTA)!
+ Jelmondat megadása
+ Hiba a beállítások mentésekor
+ Hiba az archívum letöltésekor
+ Hiba az archívum feltöltésekor
+ Hiba a jelmondat ellenőrzésekor:
+ Az exportált fájl nem létezik
+ A fájl törlésre került, vagy érvénytelen hivatkozás
+ %s letöltve
+ Archívum importálása
+ Feltöltés előkészítése
+ Adatbázis jelmondatának ellenőrzése
+ Jelmondat ellenőrzése
+ Jelmondat beállítása
+ Kép a képben hívások
+ Biztonságosabb csoportok
+ Használja az alkalmazást hívás közben.
+ Vagy illessze be az archívum hivatkozását
+ Az archívum hivatkozásának beillesztése
+ Letöltés ismét
+ Sikertelen importálás
+ Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz.
+ A folytatáshoz a csevegést le kell állítani.
+ Csevegés leállítása
+ Vagy ossza meg biztonságosan ezt a fájl hivatkozást
+ Csevegés indítása
+ Nem szabad ugyanazt az adatbázist használni egyszerre két eszközön.]]>
+ Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez.
+ Átköltöztetés egy másik eszközről opciót az új eszközön és szkennelje be a QR-kódot.]]>
+ Az átköltöztetés véglegesítése
+ Az átköltöztetés véglegesítése egy másik eszközön.
+ Letöltés előkészítése
+ Feltöltés ismét
+ %s feltöltve
+ A feltöltés sikertelen
+ Archívum feltöltése
+ Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat
+ Importálás ismét
+ szabványos végpontok közötti titkosítás
+ Átköltöztetés ide
+ Eszköz átköltöztetése
+ Átköltöztetés egy másik eszközre
+ Figyelem: az archívum törlésre kerül.]]>
+ Átköltöztetés egy másik eszközről
+ Kvantumrezisztens titkosítás
+ Megpróbálhatja még egyszer.
+ Átköltöztetés befejezve
+ Átköltöztetés egy másik eszközre QR-kód használatával.
+ Átköltöztetés
+ Megjegyzés: ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a kapcsolataiból érkező üzenetek visszafejtését.]]>
+ Megpróbálhatja még egyszer.
+ Hibás hivatkozás
+ végpontok közötti kvantumrezisztens titkosítás
+ Ez a csevegés végpontok közötti titkosítással védett.
+ A költöztetési párbeszédablak megnyitása
+ Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett.
+ végpontok közötti titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]>
+ végpontok közötti kvantumrezisztens titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]>
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
index c82190936b..41618606f7 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml
@@ -1500,7 +1500,7 @@
Blocca i membri dei gruppi
Crea un gruppo usando un profilo casuale.
Collega le app mobile e desktop! 🔗
- Tramite protocollo sicuro resistente alla quantistica.
+ Tramite protocollo sicuro resistente al quantistico.
Per nascondere messaggi indesiderati.
Gruppi migliorati
Gruppi in incognito
@@ -1639,4 +1639,80 @@
Videochiamata
Errore di apertura del browser
Il browser predefinito è necessario per le chiamate. Configura il browser predefinito nel sistema, poi condividi più informazioni con gli sviluppatori.
+ Questa chat è protetta da crittografia end-to-end.
+ Questa chat è protetta da crittografia end-to-end resistente al quantistico.
+ Avvia chat
+ Migra qui
+ Scaricamento dettagli del link
+ Scaricamento archivio
+ Errore di invio dell\'archivio
+ Archivia e carica
+ Gli amministratori possono bloccare un membro per tutti.
+ Tutti i tuoi contatti, le conversazioni e i file verranno criptati in modo sicuro e caricati in blocchi sui relay XFTP configurati.
+ Migrazione dati dell\'app
+ Applica
+ Archiviazione del database
+ Nota bene: usare lo stesso database su due dispositivi bloccherà la decifrazione dei messaggi dalle tue connessioni, come misura di sicurezza.]]>
+ Annulla migrazione
+ Attenzione: l\'archivio verrà eliminato.]]>
+ Chat migrata!
+ Controlla la tua connessione internet e riprova
+ Migra da un altro dispositivo sul nuovo dispositivo e scansione il codice QR]]>
+ Conferma le impostazioni di rete
+ Conferma che ricordi la password del database da migrare.
+ Conferma caricamento
+ Creazione link dell\'archivio
+ Elimina il database da questo dispositivo
+ Scaricamento fallito
+ Attivala nelle chat dirette (BETA)!
+ Inserisci password
+ Errore di eliminazione del database
+ Errore di scaricamento dell\'archivio
+ Errore di esportazione del database della chat
+ Errore di salvataggio delle impostazioni
+ Errore di verifica della password:
+ Il file esportato non esiste
+ Il file è stato eliminato o il link non è valido
+ Importazione fallita
+ Finalizza la migrazione
+ Per continuare, la chat deve essere fermata.
+ Finalizza la migrazione su un altro dispositivo.
+ Importazione archivio
+ Link non valido
+ crittografia end-to-end con perfect forward secrecy, ripudio e recupero da intrusione.]]>
+ crittografia e2e resistente al quantistico con perfect forward secrecy, ripudio e recupero da intrusione.]]>
+ Migra dispositivo
+ Migra da un altro dispositivo
+ Migra ad un altro dispositivo
+ Migra ad un altro dispositivo via codice QR.
+ Migrazione
+ Migrazione completata
+ Apri la schermata di migrazione
+ O incolla il link dell\'archivio
+ O condividi in modo sicuro questo link del file
+ Incolla link dell\'archivio
+ Chiamate picture-in-picture
+ Conferma che le impostazioni di rete sono corrette per questo dispositivo.
+ Preparazione del caricamento
+ crittografia e2e resistente al quantistico
+ Ripeti importazione
+ Preparazione dello scaricamento
+ Crittografia resistente al quantistico
+ Ripeti scaricamento
+ Ripeti caricamento
+ Gruppi più sicuri
+ %s scaricati
+ crittografia end-to-end standard
+ Imposta password
+ Arresto della chat
+ %s caricati
+ Invio fallito
+ Invio dell\'archivio
+ Usa l\'app mentre sei in chiamata.
+ Verifica password
+ Verifica password del database
+ Attenzione: avviare la chat su più dispositivi non è supportato e provocherà problemi di recapito dei messaggi
+ Non devi usare lo stesso database su due dispositivi.]]>
+ Puoi fare un altro tentativo.
+ Puoi fare un altro tentativo.
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
index 0de26f0d68..b9f94d9db4 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml
@@ -1498,7 +1498,7 @@
Groepsleden blokkeren
Maak een groep met een willekeurig profiel.
Koppel mobiele en desktop-apps! 🔗
- Via een beveiligd kwantumbestendig protocol.
+ Via een beveiligd quantum bestendig protocol.
Om ongewenste berichten te verbergen.
Betere groepen
Incognitogroepen
@@ -1529,16 +1529,16 @@
Opnieuw proberen
Camera niet beschikbaar
Stuur tot 100 laatste berichten naar nieuwe leden.
- Contact toevoegen: om een nieuwe uitnodigingslink te maken, of om verbinding te maken via een link die u heeft ontvangen.]]>
+ Contact toevoegen: om een nieuwe uitnodigings link te maken, of om verbinding te maken via een link die u heeft ontvangen.]]>
Stuur geen geschiedenis naar nieuwe leden.
Of laat deze code zien
Er worden maximaal 100 laatste berichten naar nieuwe leden verzonden.
De code die u heeft gescand is geen SimpleX link QR-code.
De tekst die u hebt geplakt is geen SimpleX link.
Schakel cameratoegang in
- U kunt de uitnodigingslink opnieuw bekijken in de verbindingsdetails.
+ U kunt de uitnodigings link opnieuw bekijken in de verbindings details.
Ongebruikte uitnodiging bewaren?
- Deel deze eenmalige uitnodigingslink
+ Deel deze eenmalige uitnodigings link
Groep aanmaken: om een nieuwe groep aan te maken.]]>
Zichtbare geschiedenis
App toegangscode
@@ -1606,7 +1606,7 @@
contactpersoon %1$s gewijzigd in %2$s
Fout bij verwijderen van privénotities
Privénotities verwijderen?
- Zoekbalk accepteert uitnodigingslinks.
+ Zoekbalk accepteert uitnodigings links.
‐Met versleutelde bestanden en media.
Met verminderd batterijgebruik.
Opgeslagen bericht
@@ -1637,4 +1637,80 @@
Video oproep
Fout bij het openen van de browser
Voor oproepen is de standaard webbrowser vereist. Configureer de standaard browser in het systeem en deel meer informatie met de ontwikkelaars.
+ Bevestig netwerk instellingen
+ Archiveren en uploaden
+ Database archiveren
+ Al uw contacten, gesprekken en bestanden worden veilig gecodeerd en in delen geüpload naar geconfigureerde XFTP-relays.
+ Toepassen
+ Let op: als u dezelfde database op twee apparaten gebruikt, wordt de decodering van berichten van uw verbindingen verbroken, als veiligheidsmaatregel.]]>
+ Waarschuwing: het archief wordt verwijderd.]]>
+ Migratie annuleren
+ Chat gemigreerd!
+ Controleer uw internetverbinding en probeer het opnieuw
+ Migreren vanaf een ander apparaat op het nieuwe apparaat en scan de QR-code.]]>
+ Beheerders kunnen een lid voor iedereen blokkeren.
+ Migratie van app-gegevens
+ Archief link maken
+ Verwijder de database van dit apparaat
+ Bevestig dat u het wachtwoord voor de database onthoudt om deze te migreren.
+ Activeer in directe chats (BETA)!
+ Link gegevens downloaden
+ Fout bij opslaan van instellingen
+ Fout bij verwijderen database
+ Bevestig het uploaden
+ Download mislukt
+ Archief downloaden
+ Voer het wachtwoord in
+ Fout bij het downloaden van het archief
+ Fout bij het exporteren van de chat database
+ Fout bij het uploaden van het archief
+ Deze chat is beveiligd met end-to-end codering.
+ standaard end-to-end encryptie
+ Voltooi de migratie op een ander apparaat.
+ Om verder te kunnen gaan, moet de chat worden gestopt.
+ Herhaal het uploaden
+ Upload mislukt
+ Je kunt het nog een keer proberen.
+ Voltooi de migratie
+ Chat starten
+ Fout bij het verifiëren van het wachtwoord:
+ quantum bestendige encryptie
+ Beeld-in-beeld oproepen
+ Veiligere groepen
+ Gebruik de app tijdens het gesprek.
+ Migreren
+ Of plak de archief link
+ Downloaden voorbereiden
+ Herhaal het downloaden
+ Je kunt het nog een keer proberen.
+ Archief importeren
+ Herhaal import
+ Bestand is verwijderd of de link is ongeldig
+ Geëxporteerd bestand bestaat niet
+ Apparaat migreren
+ Migreer naar een ander apparaat
+ Chat stoppen
+ %s geüpload
+ Archief uploaden
+ mag niet dezelfde database op twee apparaten gebruiken.]]>
+ Controleer het wachtwoord
+ Controleer het wachtwoord van de database
+ Waarschuwing: het starten van de chat op meerdere apparaten wordt niet ondersteund en zal leiden tot mislukte bezorging van berichten
+ Importeren is mislukt
+ Ongeldige link
+ end-to-end-codering met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.]]>
+ quantum bestendige e2e-encryptie met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.]]>
+ Migreer vanaf een ander apparaat
+ Migreer hierheen
+ Migreer naar een ander apparaat via QR-code.
+ Migratie voltooid
+ Open het migratiescherm
+ Of deel deze bestands link veilig
+ Archief link plakken
+ Controleer of de netwerk instellingen correct zijn voor dit apparaat.
+ Uploaden voorbereiden
+ quantum bestendige e2e-codering
+ %s gedownload
+ Wachtwoord instellen
+ Deze chat wordt beschermd door quantum bestendige end-to-end codering.
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
index 00089a53a3..04e40e73cb 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml
@@ -1639,4 +1639,80 @@
Połączenie wideo
Błąd podczas otwierania przeglądarki
Do połączeń wymagana jest domyślna przeglądarka. Proszę skonfigurować domyślną przeglądarkę systemową, i podzielić się informacją z twórcami.
+ Ten czat jest chroniony przez kwantowo odporne szyfrowanie end-to-end.
+ szyfrowanie end-to-end z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.]]>
+ Otwórz ekran migrowania
+ Zmigruj z innego urządzenia
+ Ustaw hasło
+ standardowe szyfrowanie end-to-end
+ Czat zmigrowany!
+ Migracja danych aplikacji
+ Bezpieczniejsze grupy
+ Używaj aplikacji podczas połączenia.
+ Połączenia obraz-w-obrazie
+ Administratorzy mogą blokować członka dla wszystkich.
+ Nieprawidłowy link
+ Zmigruj tutaj
+ Migrowanie
+ Lub wklej link archiwum
+ Wklej link archiwum
+ Przygotowywanie pobrania
+ %s pobrane
+ Możesz spróbować ponownie.
+ Importowanie archiwum
+ Powtórz pobieranie
+ Import nie udał się
+ Powtórz importowanie
+ Błąd pobierania archiwum
+ Dokończ migrację na innym urządzeniu.
+ Zastosuj
+ Zmigruj urządzenie
+ Zmigruj do innego urządzenia
+ Przygotowywanie wgrania
+ Błąd usuwania bazy danych
+ Zatrzymywanie czatu
+ Aby konturować, czat musi zostać zatrzymany.
+ Archiwizowanie bazy danych
+ Potwierdź wgranie
+ %s wgrane
+ Wgrywanie nie udane
+ Wgrywanie archiwum
+ Powtórz wgrywanie
+ Tworzenie linku archiwum
+ Możesz spróbować ponownie.
+ Lub bezpiecznie udostępnij ten link pliku
+ Rozpocznij czat
+ Migracja zakończona
+ Potwierdź, że pamiętasz hasło do bazy danych, aby ją zmigrować.
+ Zweryfikuj hasło bazy danych
+ Sprawdź swoje połączenie z internetem i spróbuj ponownie
+ Wszystkie twoje kontakty, konwersacje i pliki będą bezpiecznie szyfrowane i wgrywane w kawałkach do skonfigurowanych przekaźników XFTP.
+ Archiwizuj i prześlij
+ Uwaga: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie.]]>
+ Ostrzeżenie: archiwum zostanie usunięte.]]>
+ Anuluj migrację
+ Zmigruj z innego urządzenia na nowym urządzeniu i zeskanuj kod QR.]]>
+ Potwierdź ustawienia sieciowe
+ Usuń bazę danych z tego urządzenia
+ Pobieranie nie udane
+ Pobieranie archiwum
+ Pobieranie szczegółów linku
+ Włącz w czatach bezpośrednich (BETA)!
+ Wprowadź hasło
+ Błąd eksportu bazy danych czatu
+ Błąd zapisywania ustawień
+ Błąd wgrywania archiwum
+ Błąd weryfikowania hasła:
+ Wyeksportowany plik nie istnieje
+ Ten czat jest chroniony przez szyfrowanie end-to-end.
+ Zweryfikuj hasło
+ Ostrzeżenie: rozpoczęcie czatu na wielu urządzeniach nie jest wspierane i spowoduje niepowodzenia dostarczania wiadomości
+ Nie możesz używać tej samej bazy na dwóch urządzeniach.]]>
+ Plik został usunięty lub łącze jest nieprawidłowe
+ Dokończ migrację
+ kwantowo odporne szyfrowanie end-to-end z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.]]>
+ Zmigruj do innego urządzenia przez kod QR.
+ Proszę potwierdzić, że ustawienia sieciowe są prawidłowe dla tego urządzenia.
+ kwantowo odporne szyfrowanie e2e
+ Kwantowo odporne szyfrowanie
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
index 98e6223d87..9d7bfe4ca0 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml
@@ -1713,4 +1713,89 @@
Ошибка при блокировании члена для всех
Разблокировать члена для всех?
Вы заблокировали %s
+ end-to-end шифрованием с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]>
+ Чат защищен end-to-end шифрованием.
+ Чат защищен квантово-устойчивым end-to-end шифрованием.
+ Открыть экран миграции
+ Миграция с другого устройства
+ Установить пароль
+ стандартное end-to-end шифрование
+ Приветственное сообщение слишком длинное
+ Сообщение слишком большое
+ Повторить загрузку
+ Вы можете попробовать еще раз.
+ Загрузка архива
+ Подготовка архива
+ %s загружено
+ Запустить чат
+ Миграция данных
+ Включите для контактов (BETA)!
+ Более безопасные группы
+ Админы могут заблокировать члена группы.
+ Вставьте ссылку архива
+ Ошибка ссылки
+ Миграция
+ Загрузка архива
+ Загрузка ссылки архива
+ Подготовка загрузки
+ Ошибка загрузки
+ %s загружено
+ Импорт архива
+ Ошибка импорта
+ Чат мигрирован!
+ Введите пароль
+ Ошибка загрузки архива
+ Повторить импорт
+ Пожалуйста, подтвердите, что настройки сети верны для этого устройства.
+ Применить
+ Мигрировать устройство
+ Ошибка сохранения настроек
+ Ошибка при экспорте архива чата
+ Подготовка загрузки
+ Ошибка загрузки архива
+ Ошибка при удалении данных чата
+ Остановка чата
+ Архивировать и загрузить
+ Подтвердить загрузку
+ Все ваши контакты, разговоры и файлы будут надежно зашифрованы и загружены на выбранные XFTP серверы.
+ Ошибка загрузки
+ Повторить загрузку
+ Вы можете попробовать еще раз.
+ Отменить миграцию
+ Мигрировать с другого устройства на новом устройстве и сосканируйте QR код.]]>
+ Создание ссылки на архив
+ Удалить базу данных с этого устройства
+ Завершить миграцию
+ Или передайте эту ссылку
+ Миграция завершена
+ Внимание: запуск чата на нескольких устройствах не поддерживается и приведет к сбоям доставки сообщений.
+ не должны использовать одну и ту же базу данных на двух устройствах.]]>
+ Проверьте подключение к Интернету и повторите попытку
+ Подтвердите, что Вы помните пароль базы данных для ее миграции.
+ Проверка пароля базы данных
+ Проверить пароль
+ Ошибка подтверждения пароля:
+ Аудиозвонок
+ Завершить звонок
+ Видеозвонок
+ Чтобы продолжить, чат должен быть остановлен.
+ Обратите внимание: использование одной и той же базы данных на двух устройствах нарушит расшифровку сообщений от ваших контактов, как свойство защиты соединений.]]>
+ Внимание: архив будет удален.]]>
+ Подтвердите настройки сети
+ квантово-устойчивым end-to-end шифрованием с идеальной прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.]]>
+ Мигрировать сюда
+ Мигрировать на другое устройство
+ Мигрируйте на другое устройство через QR код.
+ Или вставьте ссылку архива
+ Звонки с картинкой-в-картинке
+ квантово-устойчивое e2e шифрование
+ Квантово-устойчивое шифрование
+ Используйте приложение во время звонка.
+ Экспортированный файл не существует
+ Файл удален или ошибка ссылки
+ Завершите миграцию на другом устройстве.
+ Выполняется миграция базы данных.
+\nЭто может занять несколько минут.
+ Ошибка открытия браузера
+ Для звонков требуется веб-браузер по умолчанию. Пожалуйста, настройте браузер по умолчанию в системе и поделитесь дополнительной информацией с разработчиками.
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
index 3c8b8b31cf..4464e323f7 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml
@@ -1289,7 +1289,7 @@
Dosya gönderimi durdurulacaktır.
yönetildi
Üye bağlantısı oluşturulurken hata
- Çoklu gönderim bütün kişiler için etkinleştirilecektir.
+ Tüm kişiler için iletim bilgisi gönderme özelliği etkinleştirilecek
XFTP sunucu adreslerinin doğru formatta olduğundan, satırın ayrılmış ve kopyalanmamış olduğundan emin olun.
Yenile
Lütfen unutmayın: mesaj ve dosya yönlendiricileri SOCKS vekili tarafından bağlandı. Aramalar ve bağlantı ön gösterimleri doğrudan bağlantı kullanıyor.]]>
@@ -1640,4 +1640,80 @@
Görüntülü arama
Aramayı bitir
Tarayıcıyı açarken hata
+ uçtan uca şifreleme ile korunmaktadır.]]>
+ Bu sohbet uçtan uca şifrelemeyle korunmaktadır.
+ Taşıma ekranını aç
+ Başka bir cihazdan taşı
+ Parolayı ayarla
+ Veya arşiv bağlantısını yapıştırın
+ Sohbet taşındı!
+ Uygula
+ Taşıma işlemini sonlandır
+ Doğrudan sohbetlerde etkinleştir (BETA)!
+ Kuantuma dayanıklı şifreleme
+ Yöneticiler bir üyeyi tamamen engelleyebilirler.
+ Uygulama veri göçü.
+ QR kodu aracılığıyla başka bir cihaza geçiş yapın.
+ Resim içinde resim çağrıları
+ Daha güvenli gruplar
+ Arama sırasında uygulamayı kullanın.
+ Buraya taşı
+ Arşiv bağlantısını yapıştır
+ İndirmeye hazırlanıyor
+ Yükleme başarısız
+ Arşiv indiriliyor
+ Bağlantı detayları indiriliyor
+ İndirmeyi tekrarla
+ %s indirildi
+ İçe aktarma başarısız oldu
+ Arşiv içe aktarılıyor
+ İçe aktarmayı tekrarla
+ Bir kez daha deneyebilirsiniz.
+ Arşiv indirilirken hata oluştu
+ Taşıma işlemini başka bir cihazda sonlandırın.
+ Dışa aktarılan dosya mevcut değil
+ Cihazı taşı
+ Başka bir cihaza geçiş
+ Veritabanı silinirken hata oluştu
+ Sohbet veritabanı dışa aktarılırken hata oluştu
+ Arşiv yüklenirken hata oluştu
+ Yükleme hazırlanıyor
+ Yüklemeyi onayla
+ Devam etmek için sohbetin durdurulması gerekiyor.
+ Veritabanını arşivleme
+ Yüklemeyi tekrarla
+ %s yüklendi
+ Yükleme başarısız
+ Arşiv yükleniyor
+ Lütfen dikkat: aynı veritabanını iki cihazda kullanmak, bir güvenlik koruması olarak bağlantılarınızdaki mesajların şifresinin çözülmesini engelleyecektir.]]>
+ Taşımayı iptal et
+ Arşiv bağlantısı oluşturuluyor
+ Taşıma işlemi tamamlandı
+ Veya bu dosya bağlantısını güvenli bir şekilde paylaşın
+ Sohbeti başlat
+ Uyarı: Birden fazla cihazda sohbet başlatmak desteklenmez ve mesaj iletimi başarısızlıklara neden olabilir.
+ Veritabanı parolasını doğrulayın
+ Parolayı doğrulayın
+ Tüm kişileriniz, konuşmalarınız ve dosyalarınız güvenli bir şekilde şifrelenir ve yapılandırılmış XFTP rölelerine parçalar halinde yüklenir.
+ Arşivle ve yükle
+ Uyarı: arşiv silinecektir.]]>
+ Taşımak için veritabanı parolasını hatırladığınızı doğrulayın.
+ İnternet bağlantınızı kontrol edip tekrar deneyin
+ Ağ ayarlarını onaylayın
+ Veritabanını bu cihazdan sil
+ Parolayı girin
+ Ayarlar kaydedilirken hata oluştu
+ Parola doğrulanırken hata oluştu:
+ Dosya silindi veya bağlantı geçersiz
+ Geçersiz link
+ kuantum dirençli e2e şifreleme ile korunmaktadır.]]>
+ Taşınıyor
+ Lütfen bu cihaz için ağ ayarlarının doğru olduğunu onaylayın.
+ kuantum dirençli e2e şifreleme
+ standart uçtan uca şifreleme
+ Sohbet durduruluyor
+ Bu sohbet kuantum dirençli uçtan uca şifrelemeyle korunmaktadır.
+ kullanmamalısınız.]]>
+ Bir kez daha deneyebilirsiniz.
+ Başka bir cihazdan taşı\'yı seçin ve QR kodunu tarayın.]]>
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
index 3873aac128..3298da5097 100644
--- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
+++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml
@@ -1639,4 +1639,80 @@
结束通话
打开浏览器出错
没有默认网络浏览器无法使用通话功能。请在系统中配置默认浏览器并和开发者分享更多信息。
+ 此聊天受抗量子的端到端加密保护。
+ 此聊天受端到端加密保护。
+ 打开迁移屏幕
+ 从另一台设备迁移
+ 设置密码短语
+ 标准端到端加密
+ 存档和上传
+ 验证数据库密码短语
+ 抗量子加密
+ 应用数据迁移
+ 通过二维码迁移到另一部设备。
+ 画中画通话
+ 更安全的群组
+ 通话时使用本应用
+ 迁移到此处
+ 或粘贴存档链接
+ 正在下载存档
+ 无效链接
+ 迁移中
+ 粘贴存档链接
+ 正在准备下载
+ 下载失败了
+ 重复下载
+ %s 已下载
+ 输入密码短语
+ 导入失败了
+ 正在导入存档
+ 重复导入
+ 已迁移聊天!
+ 下载存档出错
+ 文件被删除或链接无效
+ 在另一部设备上完成迁移
+ 请确认网络设置对此这台设备正确无误。
+ 应用
+ 确认网络设置
+ 导出聊天数据库出错
+ 导出的文件不存在
+ 迁移到另一部设备
+ 正在准备上传
+ 你的所有联系人、对话和文件将被安全加密并分块上传到配置的 XFTP 中继。
+ 正在存档数据库
+ 确认上传
+ 删除数据库出错
+ 必须停止聊天才能继续。
+ 正在停止聊天
+ 重复上传
+ %s 已上传
+ 上传失败了
+ 正在上传存档
+ 取消迁移
+ 正在创建存档链接
+ 完成迁移
+ 从这部设备上删除数据库
+ 或安全地分享此文件链接
+ 警告:不支持在多部设备上启动聊天,这么做会导致消息传送失败。
+ 不能 在两部设备上使用同一数据库。]]>
+ 迁移完毕
+ 启动聊天
+ 请在迁移前确认你记得数据库的密码短语。
+ 验证密码短语
+ 警告:该存档将被删除。]]>
+ 检查你的互联网连接并重试
+ 验证密码短语出错:
+ 端到端加密保护。]]>
+ 迁移设备
+ 从一部设备迁移 并扫描二维码。]]>
+ 抗量子端到端加密保护。]]>
+ 管理员可以为所有人封禁一名成员。
+ 正在下载链接详情
+ 在私聊中开启(公测)!
+ 保存设置出错
+ 上传存档出错
+ 抗量子端到端加密
+ 你可以再试一次。
+ 你可以再试一次。
+ 请注意: 作为安全保护措施,在两部设备上使用同一数据库会破坏解密来自你联系人的消息。]]>
\ No newline at end of file
diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/model/NtfManager.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/model/NtfManager.desktop.kt
index 3f2e1a74ab..3fab849361 100644
--- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/model/NtfManager.desktop.kt
+++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/model/NtfManager.desktop.kt
@@ -111,8 +111,12 @@ object NtfManager {
}
try {
prevNtfs.add(chatId to builder.toast())
- } catch (e: Exception) {
+ } catch (e: Throwable) {
Log.e(TAG, e.stackTraceToString())
+ if (e !is Exception) {
+ val text = e.stackTraceToString().lines().getOrNull(0) ?: ""
+ showToast(generalGetString(MR.strings.error_showing_desktop_notification) + " " + text, 4_000)
+ }
}
}
diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/AppCommon.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/AppCommon.desktop.kt
index 72aca181b3..71f862b30a 100644
--- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/AppCommon.desktop.kt
+++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/AppCommon.desktop.kt
@@ -32,9 +32,9 @@ fun initApp() {
//testCrypto()
}
-fun discoverVlcLibs(path: String) {
- uk.co.caprica.vlcj.binding.LibC.INSTANCE.setenv("VLC_PLUGIN_PATH", path, 1)
-}
+//fun discoverVlcLibs(path: String) {
+// uk.co.caprica.vlcj.binding.LibC.INSTANCE.setenv("VLC_PLUGIN_PATH", path, 1)
+//}
private fun applyAppLocale() {
val lang = ChatController.appPrefs.appLanguage.get()
diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/ui/theme/Theme.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/ui/theme/Theme.desktop.kt
index 94268002a6..358c20d769 100644
--- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/ui/theme/Theme.desktop.kt
+++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/ui/theme/Theme.desktop.kt
@@ -1,5 +1,6 @@
package chat.simplex.common.ui.theme
+import androidx.compose.runtime.Composable
import chat.simplex.common.platform.Log
import chat.simplex.common.platform.TAG
import com.jthemedetecor.OsThemeDetector
@@ -9,6 +10,7 @@ private val detector: OsThemeDetector = OsThemeDetector.getDetector()
registerListener(::reactOnDarkThemeChanges)
}
+@Composable
actual fun isSystemInDarkTheme(): Boolean = try {
detector.isDark
}
diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt
index f35b114740..87c2d3e8f2 100644
--- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt
+++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt
@@ -75,7 +75,7 @@ actual fun ActiveCallView() {
chatModel.activeCall.value = call.copy(callState = CallState.Connected, connectedAt = Clock.System.now())
}
withBGApi { chatModel.controller.apiCallStatus(callRh, call.contact, callStatus) }
- } catch (e: Error) {
+ } catch (e: Throwable) {
Log.d(TAG, "call status ${r.state.connectionState} not used")
}
is WCallResponse.Connected -> {
diff --git a/apps/multiplatform/desktop/build.gradle.kts b/apps/multiplatform/desktop/build.gradle.kts
index 4f5536a25b..c3dd9bb9b0 100644
--- a/apps/multiplatform/desktop/build.gradle.kts
+++ b/apps/multiplatform/desktop/build.gradle.kts
@@ -21,7 +21,7 @@ kotlin {
dependencies {
implementation(project(":common"))
implementation(compose.desktop.currentOs)
- implementation("net.java.dev.jna:jna:5.13.0")
+ implementation("net.java.dev.jna:jna:5.14.0")
}
}
val jvmTest by getting
diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties
index 62f1ad21bc..1bfac36a28 100644
--- a/apps/multiplatform/gradle.properties
+++ b/apps/multiplatform/gradle.properties
@@ -25,12 +25,12 @@ android.nonTransitiveRClass=true
android.enableJetifier=true
kotlin.mpp.androidSourceSetLayoutVersion=2
-android.version_name=5.6-beta.1
-android.version_code=190
+android.version_name=5.6
+android.version_code=191
-desktop.version_name=5.6-beta.1
-desktop.version_code=34
+desktop.version_name=5.6
+desktop.version_code=35
-kotlin.version=1.8.20
-gradle.plugin.version=7.4.2
-compose.version=1.5.10
+kotlin.version=1.9.23
+gradle.plugin.version=8.2.0
+compose.version=1.6.1
diff --git a/apps/multiplatform/gradle/wrapper/gradle-wrapper.properties b/apps/multiplatform/gradle/wrapper/gradle-wrapper.properties
index 00c09d815c..4e4a6a3f29 100644
--- a/apps/multiplatform/gradle/wrapper/gradle-wrapper.properties
+++ b/apps/multiplatform/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Mon Feb 14 14:23:51 GMT 2022
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs
index ea79dabb10..c1428881b9 100644
--- a/apps/simplex-directory-service/src/Directory/Service.hs
+++ b/apps/simplex-directory-service/src/Directory/Service.hs
@@ -177,8 +177,8 @@ directoryService st DirectoryOpts {superUsers, serviceName, searchResults, testi
badRolesMsg :: GroupRolesStatus -> Maybe String
badRolesMsg = \case
GRSOk -> Nothing
- GRSServiceNotAdmin -> Just "You must have a group *owner* role to register the group"
- GRSContactNotOwner -> Just "You must grant directory service *admin* role to register the group"
+ GRSServiceNotAdmin -> Just "You must grant directory service *admin* role to register the group"
+ GRSContactNotOwner -> Just "You must have a group *owner* role to register the group"
GRSBadRoles -> Just "You must have a group *owner* role and you must grant directory service *admin* role to register the group"
getGroupRolesStatus :: GroupInfo -> GroupReg -> IO (Maybe GroupRolesStatus)
@@ -190,8 +190,8 @@ directoryService st DirectoryOpts {superUsers, serviceName, searchResults, testi
groupRolesStatus :: GroupMemberRole -> GroupMemberRole -> GroupRolesStatus
groupRolesStatus contactRole serviceRole = case (contactRole, serviceRole) of
(GROwner, GRAdmin) -> GRSOk
- (_, GRAdmin) -> GRSServiceNotAdmin
- (GROwner, _) -> GRSContactNotOwner
+ (_, GRAdmin) -> GRSContactNotOwner
+ (GROwner, _) -> GRSServiceNotAdmin
_ -> GRSBadRoles
getGroupMember :: GroupReg -> IO (Maybe GroupMember)
diff --git a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md
index ea4249f250..219dd2d5fe 100644
--- a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md
+++ b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md
@@ -15,7 +15,7 @@ This is a major upgrade for SimpleX messaging protocols, we are really proud to
This post also covers various aspects of end-to-end encryption, compares different messengers, and explains why and how quantum-resistant encryption is added to SimpleX Chat:
- [Why do we need end-to-end encryption?](#why-do-we-need-end-to-end-encryption)
-- [Why encryption is even allowed?](#why-encryption-is-even-allowed)
+- [Why is encryption even allowed?](#why-is-encryption-even-allowed)
- [End-to-end encryption security: attacks and defense.](#end-to-end-encryption-security-attacks-and-defense)
- Compromised message size - mitigated by padding messages to a fixed block size.
- Compromised confidentiality - mitigated by repudiation (deniability).
@@ -40,7 +40,7 @@ End-to-end encryption is an important component of our individual and business s
It's very sad to see the same people who keep their financial affairs private to protect from financial crimes, lock their doors to protect from thieves, and curtain their windows to protect from the occasional prying eyes, when it comes to protecting their personal lives from the data criminals say "we don't care about privacy, we have nothing to hide". Everybody's safety depends on keeping their affairs and relations private, not visible to a vast and ruthless data gathering machines, that abuse our data for commercial gain, without any regard to our interests or even [the safety of our families and children](https://nmdoj.gov/press-release/attorney-general-raul-torrez-files-lawsuit-against-meta-platforms-and-mark-zuckerberg-to-protect-children-from-sexual-abuse-and-human-trafficking/).
-## Why encryption is even allowed?
+## Why is encryption even allowed?
@@ -75,7 +75,7 @@ While the content encryption is the most important, concealing the actual messag
The only effective mitigation to these attacks is to pad all messages to a fixed size. Using space-efficient schemes like Padme, or padding to encryption block size is ineffective for mitigating these attacks, as they still allow differentiating message sizes.
-To the best of our knowledge the only messenger other than SimpleX Chat that padded all messages to a fixed packet size was [Pond](https://github.com/agl/pond) - SimpleX design as an evolution of it.
+To the best of our knowledge, the only messengers other than SimpleX Chat that pad all messages to a fixed packet size are Cwtch and no longer developed [Pond](https://github.com/agl/pond) - SimpleX design can be seen as an evolution of Pond design.
### 2. Compromised confidential messages - mitigated by repudiation (deniability)
@@ -97,15 +97,15 @@ This property is well understood by the users, and most messengers that focus on
### 4. Compromised long-term or session - mitigated by break-in recovery
-This attack is much less understood by the users, and forward secrecy does not protect from it. Arguably, it's almost impossible to compromise individual message keys without compromising long-term or session keys. So the ability of the encryption to recover from break-in (attacker making a copy of the device data without retaining the ongoing access) is both very and pragmatic - break-in attacks are simpler to execute on mobile devices during short-term device access than long-term ongoing compromise.
+This attack is much less understood by the users, and forward secrecy does not protect from it. Arguably, it's almost impossible to compromise individual message keys without compromising long-term or session keys. So the ability of the encryption to recover from break-in (attacker making a copy of the device data without retaining the ongoing access) is both very important and pragmatic - break-in attacks are simpler to execute on mobile devices during short-term device access than long-term ongoing compromise.
-Out of all encryption algorithms known to us only Signal double ratchet algorithm provides the ability to encryption security after break-ins. This recovery happens automatically and transparently to the users, without them doing anything special even knowing about break-in, by simply sending messages. Every time one of the communication parties replies to another party message, new random keys are generated and previously stolen keys become useless.
+Out of all encryption algorithms known to us only _Signal double ratchet algorithm_ (also referred to as _Signal algorithm_ or _double ratchet algorithm_, which is not the same as Signal messaging platform and protocols) provides the ability for the encryption security to recover after break-ins attacks. This recovery happens automatically and transparently to the users, without them doing anything special or even knowing about break-in, by simply sending messages. Every time one of the communication parties replies to another party message, new random keys are generated and previously stolen keys become useless.
-Signal double ratchet algorithm is used in Signal, Cwtch and SimpleX Chat. This is why you cannot use SimpleX Chat profile on more than one device at the same time - the encryption scheme rotates the long term keys, randomly, and keys on another device become useless, as they would become useless for the attacker who stole them. Security always has some costs to the convenience.
+Double ratchet algorithm is used in Signal, Cwtch and SimpleX Chat. This is why you cannot use SimpleX Chat profile on more than one device at the same time - the encryption scheme rotates the long term keys, randomly, and keys on another device become useless, as they would become useless for the attacker who stole them. Security always has some costs to the convenience.
### 5. Man-in-the-middle attack - mitigated by two-factor key exchange
-Many people incorrectly believe that security of end-to-end encryption cannot be broken by communication provider. But end-to-end encryption is as secure as key exchange. While any intermediary passing the keys between senders and recipients cannot recover the private keys from the public keys, they can simply replace the passed public keys with their own and then proxy all communication between the users having full access to the original messages. So instead of having an end-to-end encrypted channel, users would have two half-way encrypted channels - between users and their communication intermediary.
+Many people incorrectly believe that security of end-to-end encryption cannot be broken by communication provider. But end-to-end encryption is only as secure as key exchange. While any intermediary passing the keys between senders and recipients cannot recover the private keys from the public keys, they can simply replace the passed public keys with their own and then proxy all communication between the users having full access to the original messages. So instead of having an end-to-end encrypted channel, users would have two half-way encrypted channels - between users and their communication intermediary.
Pictures below illustrate how this attack works for RSA encryption.
@@ -143,7 +143,7 @@ Post-quantum cryptography, or encryption algorithms that are resistant to quantu
- many of post-quantum algorithms have known patent claims, so any system deploying them accepts the risks of patent litigation.
- the silver lining to these limitations is that the risk of appearance of commercially viable quantum computers in the next decade may be exaggerated.
-So, to put it bluntly and provocatively, post-quantum cryptography can be compared with a remedy against the illness that nobody has, without any guarantee that it will work. The closest analogy in the history of medicine is _snake oil_.
+So, to say it provocatively, post-quantum cryptography can be compared with a remedy against the illness that nobody has, without any guarantee that it will work. While there is a reasonable hope that it _might_ work, so it's not exactly a _snake oil_, these limitations and risks have to be much better communicated to the end users than they are.
@@ -164,8 +164,8 @@ The main objective here is to establish the framework for comparing the security
Some columns are marked with a yellow checkmark:
- when messages are padded, but not to a fixed size.
- when repudiation does not include client-server connection. In case of Cwtch it appears that the presence of cryptographic signatures compromises repudiation (deniability), but it needs to be clarified.
-- when 2-factor key exchange is optional, via security code verification.
-- when post-quantum cryptography is only added to the initial key agreement, does not protect break-in recovery.
+- when 2-factor key exchange is optional (via security code verification).
+- when post-quantum cryptography is only added to the initial key agreement and does not protect break-in recovery.
## Adding quantum resistance to Signal double ratchet algorithm
@@ -201,7 +201,7 @@ The reason it is released as opt-in is because once the conversation is upgraded
- enable _Show developer options_ toggle.
- now you will see _Post-quantum E2EE_ toggle - enable it as well.
-Now all new contacts you add to the app will use quantum resistant Signal double ratchet algorithm.
+Now all new contacts you add to the app will use quantum resistant double ratchet algorithm.
Once you have enabled it for the new contacts, you can also **enable it for some of the existing contacts**:
- open the chat with the contact you want to upgrade to be quantum resistant.
@@ -211,7 +211,7 @@ Once you have enabled it for the new contacts, you can also **enable it for some
## Next for post-quantum crypto - all direct chats, small groups and security audit
-We will be making quantum resistance default for all direct chats in v5.7, and they will be upgraded for all users without any action.
+We will be making quantum resistance default for all direct chats in v5.7, and we plan that all existing direct chats will be automatically upgraded when both contacts install v5.7.
We will also be adding quantum resistance to small groups up to 10-20 members. Computing cryptographic keys is much slower, in comparison, and it would be very inefficient (and completely unnecessary) for large public groups.
diff --git a/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md b/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md
index f036b95f1f..c017b9d1cc 100644
--- a/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md
+++ b/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md
@@ -1,20 +1,128 @@
---
layout: layouts/article.html
-title: "SimpleX network: real privacy and stable profits, non-profit protocol governance, v5.6 released with quantum resistant e2e encryption and simple profile migration"
+title: "SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration"
date: 2024-03-23
-# previewBody: blog_previews/20240314.html
-preview: TODO
-draft: true
-# image: images/20240314-kem.jpg
-# imageWide: true
+previewBody: blog_previews/20240323.html
+image: images/20240323-post-preview.png
+imageBottom: true
permalink: "/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html"
---
-# SimpleX network: real privacy and stable profits, non-profit protocol governance, v5.6 released with quantum resistant e2e encryption and simple profile migration
+# SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration
-This is a stub for release permalink
+**Published:** Mar 23, 2024
-TODO
+SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:
+- [community and business interests are aligned](#community-and-business-interests-are-aligned).
+- [the journey to the decentralized non-profit protocol governance](#the-journey-to-the-decentralized-non-profit-protocol-governance).
+- [welcome, Esra’a](#welcome-esraa)!
+
+What's new in v5.6:
+- [quantum resistant end-to-end encryption](#quantum-resistant-end-to-end-encryption-beta) (BETA) – enable it for the new contacts.
+- [use the app during the audio and video calls](#use-the-app-during-the-audio-and-video-calls).
+- [migrate all app data to another device via QR code](#migrate-all-app-data-to-another-device-via-qr-code).
+
+There are many other improvements and fixes in this release:
+- group admins can block a member for all other members.
+- filtering chats no longer includes muted chats with unread messages.
+- and more - see the [release notes](https://github.com/simplex-chat/simplex-chat/releases/tag/v5.6.0).
+
+## SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance
+
+### Community and business interests are aligned
+
+Some people in our users' community believe that there is a conflict between the business and the community interests. This view fails to see a bigger picture of how these interests are aligned. I wrote a blog post about it [here](https://www.poberezkin.com/posts/2023-10-31-why-privacy-impossible-without-venture-funding.html). Our goal is to grow the network and the ecosystem while enriching all stakeholders involved, both the community and the business shareholders. This strategy relies on the strengths and opportunities of both the business and the decentralized network we build, with its vibrant community of individuals and organizations. It positions the business not as a controller but as a supporter of the community growth, resilience and sustainability.
+
+By leveraging access to investment resources, its ability to provide stock-based incentives beyond salaries, operating as a business will satisfy users' and community needs more effectively, ensuring the long-term viability and growth of the network, while remaining true to the mission. A purely nonprofit model with no avenue to sustain this growth is simply not possible. Sustainability requires profits, that is simply spending less than earning, as every responsible individual and organization should aim for, and these profits must be based on users' payments, and not on some other sources of revenue or funds. And building the software product that customers are willing to pay for requires substantial business investments. We will accomplish it while maintaining transparency and the commitment to keep SimpleX network and its protocols open and free to use.
+
+### The journey to the decentralized non-profit protocol governance
+
+At the current early stage of network growth the protocols will benefit most from the rapid evolution and centralized design. Many protocols that decentralized their evolution too early failed to evolve and to adapt to the product requirements of the majority of users, causing them to stall in growth. Even the open web became possible only thanks to Netscape, a venture funded company, that developed browsers and web server software taking it upon themselves to rapidly evolve web specification to make it into a robust application platform as we now know it. It is very unlikely that it would have happened if it was managed by a nonprofit or community, in a decentralized way.
+
+Once SimpleX network protocols stabilize and reach the required maturity, we plan to transition its governance to several new nonprofit entities, ensuring its continued evolution aligns more closely with our vision of community-driven, independent and transparent governance. We and our investors believe that this is a win-win strategy. It both maximizes the business value, by creating a product built on protecting privacy and users' trust - a model that we see as the only viable path forward. It also maximizes the value created for the user community.
+
+### Welcome, Esra’a!
+
+To help us deliver these goals, Esra’a Al Shafei joined SimpleX Chat team - we are excited to welcome her!
+
+Esra'a is a longtime privacy and human rights advocate from Bahrain. She is the founder of [Majal.org](http://majal.org), a network of platforms that amplify under-reported and marginalized voices in the Middle East and North Africa. She is also the co-founder of the [Numun Fund](https://numun.fund/), the first dedicated fund for women-led tech in the Global South. Esra’a is currently the Vice Chair of the Board at the [Wikimedia Foundation](https://wikimediafoundation.org/), the nonprofit which hosts Wikipedia. She is also on the Board of the [Tor Project](https://www.torproject.org/), developers of one of the world’s strongest tools for privacy and freedom online. Previously, she served on the Board of [Access Now](https://www.accessnow.org/), an international nonprofit dedicated to an open and free Internet.
+
+In her own words: *"Privacy and security have been the center of my work as a human rights advocate for the last 20 years in one of the most surveilled countries in the world where staying safe remains a burden. Our privacy is our dignity. It is something that belongs to us and something we should treasure - as people, as companies, as governments. Despite messaging being the most intimate aspect of our digital lives, the leading protocols in this space are centralized and we deserve a web that operates on the core principles of genuine privacy and security in a fully decentralized framework. SimpleX network will play a critical role towards that vision."*
+
+Executing the plan towards decentralized nonprofit protocol governance will be Esra’a’s primary responsibility. Our primary objective with this plan is to ensure that no single entity can control or have unrestricted ownership of the protocols, so it can maintain its integrity.
+
+## What's new in v5.6
+
+### Quantum resistant end-to-end encryption (BETA)
+
+Adding post-quantum resistance to the double ratchet end-to-end encryption algorithm in SimpleX Chat is a major upgrade to messaging protocols, and it creates the security against the future quantum computers.
+
+I wrote in detail in the previous post about various properties of end-to-end encryption and how exactly quantum resistance is implemented in SimpleX Chat - currently SimpleX Chat has [the most secure end-to-end encryption design](./20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md#how-secure-is-end-to-end-encryption-in-different-messengers) against the present and future attacks.
+
+We plan to perform a security audit of this design and implementation later this year.
+
+Post-quantum encryption is currently added as opt-in and has to be separately enabled to be active for the new contacts, and, additionally, can be enabled for the existing contacts.
+
+
+
+**To enable quantum resistance for the new conversations**:
+- open the app settings (tap user avatar in the top left corner).
+- scroll down to _Developer tools_ and open them.
+- enable _Show developer options_ toggle.
+- now you will see _Post-quantum E2EE_ toggle - enable it as well.
+
+Now all new contacts you add to the app will use quantum resistant Signal double ratchet algorithm.
+
+Once you have enabled it for the new contacts, you can also **enable it for some of the existing contacts**:
+- open the chat with the contact you want to upgrade to be quantum resistant.
+- tap contact name above the chat.
+- tap Allow PQ encryption.
+- exchange several messages back and forth with that contact - the quantum resistant double ratchet will kick in after 3-5 messages (depending on how many messages you send in each direction), and you will see the notice in the chat once it enables.
+
+We will be making quantum resistance default for all direct chats in v5.7, and we plan that all existing direct chats will be automatically upgraded when both contacts install v5.7.
+
+### Use the app during the audio and video calls
+
+
+
+Since we added the audio and video calls in 2022 a lot of work was done to improve the stability of calls. One of the usability downsides until this release was that it was impossible to use the app during the call.
+
+This version solved this problem - now you can return back to the app without interrupting the call and use any of the app functions - for example, you can send the messages or files to the person you are in the call with. If this is a video call, you will continue seeing your contact in a small picture-in-picture view.
+
+### Migrate all app data to another device via QR code
+
+We always believed that cross-platform data portability is very important for any software. Users own their data, and they should have a way to export it from any software they use. So from the version of SimpleX Chat [released in July 2022](./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#database-export-and-import) it was possible to export the database as a self-contained file, including all contacts, messages and files, and import it on a new device.
+
+_"How can I migrate my data to another device?"_ was one of the most frequent user questions, but until this release this process was [quite complex](), requiring too many steps, and most non-technical users were not willing to try it, as even though it was reliable, it appeared risky.
+
+This release made the app data migration very simple, see the steps below.
+
+**Start the migration on the source device**
+
+
+
+On the device you migrate your app data from, follow these steps:
+- choose _Migrate to another device_,
+- if necessary, set the database passphrase (initially, the database is encrypted with a random passphrase), or, if it's already set, verify it - for security and to ensure that the archive will be usable on the new device,
+- tap _Archive and upload_ to and upload the app data in chunks to the XFTP servers configured in the app,
+- the app will show the QR code that should be scanned from the new device.
+
+**Migrate data to the target device**
+
+
+
+On the device you migrate your data to, follow these steps:
+- on the first app page choose _Migrate from another device_,
+- scan the QR code shown on the source device,
+- once the archive downloads, enter the database passphrase and tap _Open chat_,
+
+**Finalize migration on the source device**
+
+
+
+When the chat starts on the target device, make sure to tap _Finalize migration_ and then _Delete database_ on the source device.
+
+The database cannot be used on two devices at the same time, doing so would make it impossible to decrypt the received messages. This is a security measure - the break-in recovery property of double ratchet algorithm.
## SimpleX network
diff --git a/blog/README.md b/blog/README.md
index 3b89628211..7f27c46c76 100644
--- a/blog/README.md
+++ b/blog/README.md
@@ -1,5 +1,19 @@
# Blog
+Mar 23, 2024 [SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration](./20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md)
+
+SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:
+- community and business interests are aligned.
+- the journey to the decentralized non-profit protocol governance.
+- welcome, Esra’a!
+
+What's new in v5.6:
+- quantum resistant end-to-end encryption (BETA) – enable it for the new contacts.
+- use the app during the audio and video calls.
+- migrate all app data to another device via QR code.
+
+---
+
Mar 14, 2024 [SimpleX Chat v5.6 (beta): adding quantum resistance to Signal double ratchet algorithm](./20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
This is a major upgrade for SimpleX Chat messaging protocol stack, I am really proud to present this work of the whole team.
diff --git a/blog/images/20240314-comparison.jpg b/blog/images/20240314-comparison.jpg
index 34027a43a7..579b2fd73c 100644
Binary files a/blog/images/20240314-comparison.jpg and b/blog/images/20240314-comparison.jpg differ
diff --git a/blog/images/20240323-call1.png b/blog/images/20240323-call1.png
new file mode 100644
index 0000000000..0cf954a07e
Binary files /dev/null and b/blog/images/20240323-call1.png differ
diff --git a/blog/images/20240323-call2.png b/blog/images/20240323-call2.png
new file mode 100644
index 0000000000..8a69d1891e
Binary files /dev/null and b/blog/images/20240323-call2.png differ
diff --git a/blog/images/20240323-migrate-from0.png b/blog/images/20240323-migrate-from0.png
new file mode 100644
index 0000000000..033ead3fd9
Binary files /dev/null and b/blog/images/20240323-migrate-from0.png differ
diff --git a/blog/images/20240323-migrate-from1.png b/blog/images/20240323-migrate-from1.png
new file mode 100644
index 0000000000..be016ada2c
Binary files /dev/null and b/blog/images/20240323-migrate-from1.png differ
diff --git a/blog/images/20240323-migrate-from2.png b/blog/images/20240323-migrate-from2.png
new file mode 100644
index 0000000000..2cee12e6f4
Binary files /dev/null and b/blog/images/20240323-migrate-from2.png differ
diff --git a/blog/images/20240323-migrate-from3.png b/blog/images/20240323-migrate-from3.png
new file mode 100644
index 0000000000..92d7bf19a6
Binary files /dev/null and b/blog/images/20240323-migrate-from3.png differ
diff --git a/blog/images/20240323-migrate-from4.png b/blog/images/20240323-migrate-from4.png
new file mode 100644
index 0000000000..9b96f9efd8
Binary files /dev/null and b/blog/images/20240323-migrate-from4.png differ
diff --git a/blog/images/20240323-migrate-from5.png b/blog/images/20240323-migrate-from5.png
new file mode 100644
index 0000000000..dfc22a3987
Binary files /dev/null and b/blog/images/20240323-migrate-from5.png differ
diff --git a/blog/images/20240323-migrate-from6.png b/blog/images/20240323-migrate-from6.png
new file mode 100644
index 0000000000..18d9c8b627
Binary files /dev/null and b/blog/images/20240323-migrate-from6.png differ
diff --git a/blog/images/20240323-migrate-to1.png b/blog/images/20240323-migrate-to1.png
new file mode 100644
index 0000000000..b3fb0e32f1
Binary files /dev/null and b/blog/images/20240323-migrate-to1.png differ
diff --git a/blog/images/20240323-migrate-to2.png b/blog/images/20240323-migrate-to2.png
new file mode 100644
index 0000000000..f64544cd9b
Binary files /dev/null and b/blog/images/20240323-migrate-to2.png differ
diff --git a/blog/images/20240323-migrate-to3.png b/blog/images/20240323-migrate-to3.png
new file mode 100644
index 0000000000..626032737b
Binary files /dev/null and b/blog/images/20240323-migrate-to3.png differ
diff --git a/blog/images/20240323-migrate-to4.png b/blog/images/20240323-migrate-to4.png
new file mode 100644
index 0000000000..59153a464c
Binary files /dev/null and b/blog/images/20240323-migrate-to4.png differ
diff --git a/blog/images/20240323-migrate-to5.png b/blog/images/20240323-migrate-to5.png
new file mode 100644
index 0000000000..b86f42b292
Binary files /dev/null and b/blog/images/20240323-migrate-to5.png differ
diff --git a/blog/images/20240323-post-preview.png b/blog/images/20240323-post-preview.png
new file mode 100644
index 0000000000..69c9908a1e
Binary files /dev/null and b/blog/images/20240323-post-preview.png differ
diff --git a/cabal.project b/cabal.project
index 547ec861e0..be58b64283 100644
--- a/cabal.project
+++ b/cabal.project
@@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd
source-repository-package
type: git
location: https://github.com/simplex-chat/simplexmq.git
- tag: 7b6b80cea21c7fbafffa118f1ed268411fcb79ca
+ tag: 8496884b42d76bd0d934e5ae481846d9c324d3c7
source-repository-package
type: git
diff --git a/docs/DOWNLOADS.md b/docs/DOWNLOADS.md
index 6726fa02fe..b394c9dd27 100644
--- a/docs/DOWNLOADS.md
+++ b/docs/DOWNLOADS.md
@@ -4,10 +4,10 @@ permalink: /downloads/index.html
revision: 11.02.2024
---
-| Updated 11.02.2024 | Languages: EN |
+| Updated 23.03.2024 | Languages: EN |
# Download SimpleX apps
-The latest stable version is v5.5.3.
+The latest stable version is v5.6.
You can get the latest beta releases from [GitHub](https://github.com/simplex-chat/simplex-chat/releases).
diff --git a/docs/rfcs/2024-03-22-communicating-reject.md b/docs/rfcs/2024-03-22-communicating-reject.md
new file mode 100644
index 0000000000..37bb4eab26
--- /dev/null
+++ b/docs/rfcs/2024-03-22-communicating-reject.md
@@ -0,0 +1,95 @@
+# Communicating rejection
+
+## Problem
+
+Many interactions support either approval, or silent rejection. From privacy perspective, rejection being silent is a correct default. However, for improved usability we could add optional communication of rejection, as many users don't mind sending such signals to their contacts.
+
+Features currently not supporting communicating rejection:
+- Rejecting contact request
+- Rejecting group join request
+- Rejecting call
+- Rejecting group invitation
+- TBC Other?
+
+## Solution
+
+## Rejection of contact / group join requests
+
+- Contact and group join requests are very similar between each other and different from other features as they both use mechanism of "contact connections".
+
+- Rejection can be made to the address proposed by requester in AgentInvitation message, where currently AgentConfirmation is sent in case of acceptance.
+
+ ``` haskell
+ data AgentMsgEnvelope
+ = ...
+ | AgentRejection
+ { e2eEncryption :: RcvE2ERatchetParams 'C.X448,
+ encRejectionInfo :: ByteString
+ }
+ ```
+
+- Unlike other AgentMsgEnvelope constructors, AgentRejection doesn't require agentVersion since connection will be deleted after sending this message.
+
+ - We may be able to re-use recently added mechanism of marking connection for deletion with deleted_at_wait_delivery field without much additional work.
+
+- e2eEncryption will be used to encrypt first message, same as for AgentConfirmation. (?)
+
+- Both sync and async versions of agent functions are required, as contact rejection will be user action, while group join rejection will be automated (in case, for example, if link host is no longer admin).
+
+ - Group requests non-automatic approval is a separate matter and requires UI consideration, but if it was added it would use sync function.
+
+ - For sync function either new API can be added, or rejectContact can be parameterized.
+
+- Chat protocol requires adding new messages to be sent in encRejectionInfo, to be processed on requester side based on connections' semantics.
+
+ ```haskell
+ -- / contact request rejection
+ XReject :: ChatMsgEvent 'Json
+ -- or
+ -- (contact can send reason for rejection; we don't even have welcome messages in XContact though)
+ XReject :: Maybe Text -> ChatMsgEvent 'Json
+
+ -- / group join request rejection
+ XGrpReject :: Maybe GrpRejectReason -> ChatMsgEvent 'Json
+
+ data GrpRejectReason
+ = GRRNone -- manual reject with no reason? use Nothing in GRRText instead?
+ | GRRCantInvite -- e.g., no longer admin
+ | GRRText {text :: Text} -- manual reject once supported? Maybe Text?
+
+ -- add similar type for contact request rejection?
+ -- minimal is to always send XReject without reasons
+ ```
+
+ - As a side note, it may have been a design mistake to mix both "connInfo" messages as well as regular chat messages in a single type for protocol messages, so it may be best to keep these as separate constructors.
+
+- Versioning considerations:
+ - Increase chat version.
+ - We already save peer chat version on contact_requests on initial REQ message. It can be used to differentiate UI whether contact supports rejection messages and not offer option to reject with notification.
+ - Increase agent version? Agent can prohibit sending AgentRejection based on version in AgentInvitation, though it shouldn't be reachable as chat should also prohibit it.
+
+## Rejecting calls
+
+- New chat protocol message is enough
+ - Based on user action in reply to XCallInv instead of XCallOffer.
+ - Send in APIRejectCall.
+
+ ```haskell
+ XCallReject :: CallId -> ChatMsgEvent 'Json
+ ```
+
+- Same chat versioning considerations as above.
+
+## Rejecting group invitation
+
+- Same, new protocol message.
+ - Based on user action in reply to XGrpInv instead of XGrpAcpt.
+ - Can't be sent as simple chat message since there's no group ID in invitation? (only optional groupLinkId)
+ - So, have to send as "conn info" via join, same as for XGrpAcpt.
+ - APIDeleteChat is already used for deleting group invitations, can re-use. In this case `notify` parameter in APIDeleteChat can be used to send rejection.
+
+ ```haskell
+ XGrpReject :: CallId -> ChatMsgEvent 'Json
+ ```
+
+- Same chat versioning considerations as above.
diff --git a/package.yaml b/package.yaml
index ed6bc96cb1..dbc75ddf9f 100644
--- a/package.yaml
+++ b/package.yaml
@@ -1,5 +1,5 @@
name: simplex-chat
-version: 5.6.0.3
+version: 5.6.0.4
#synopsis:
#description:
homepage: https://github.com/simplex-chat/simplex-chat#readme
@@ -104,16 +104,20 @@ executables:
- -threaded
simplex-broadcast-bot:
- source-dirs: apps/simplex-broadcast-bot/src
- main: ../Main.hs
+ source-dirs:
+ - apps/simplex-broadcast-bot
+ - apps/simplex-broadcast-bot/src
+ main: Main.hs
dependencies:
- simplex-chat
ghc-options:
- -threaded
simplex-directory-service:
- source-dirs: apps/simplex-directory-service/src
- main: ../Main.hs
+ source-dirs:
+ - apps/simplex-directory-service
+ - apps/simplex-directory-service/src
+ main: Main.hs
dependencies:
- simplex-chat
ghc-options:
diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix
index b898978fcc..1fd783a1d3 100644
--- a/scripts/nix/sha256map.nix
+++ b/scripts/nix/sha256map.nix
@@ -1,5 +1,5 @@
{
- "https://github.com/simplex-chat/simplexmq.git"."7b6b80cea21c7fbafffa118f1ed268411fcb79ca" = "0a665v4v1ilm2j9cxkiwqq2xlp2732h95mqaywf7qrlk03qkasfi";
+ "https://github.com/simplex-chat/simplexmq.git"."8496884b42d76bd0d934e5ae481846d9c324d3c7" = "0c040s00zc1qg0ilsvpv54f01xz7flh8rsar2nplcs4a4gnp78qs";
"https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38";
"https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d";
"https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl";
diff --git a/simplex-chat.cabal b/simplex-chat.cabal
index 8361d3f55d..c9c7012102 100644
--- a/simplex-chat.cabal
+++ b/simplex-chat.cabal
@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: simplex-chat
-version: 5.6.0.3
+version: 5.6.0.4
category: Web, System, Services, Cryptography
homepage: https://github.com/simplex-chat/simplex-chat#readme
author: simplex.chat
@@ -355,13 +355,14 @@ executable simplex-bot-advanced
, text >=1.2.3.0 && <1.3
executable simplex-broadcast-bot
- main-is: ../Main.hs
+ main-is: Main.hs
+ hs-source-dirs:
+ apps/simplex-broadcast-bot
+ apps/simplex-broadcast-bot/src
other-modules:
Broadcast.Bot
Broadcast.Options
Paths_simplex_chat
- hs-source-dirs:
- apps/simplex-broadcast-bot/src
ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded
build-depends:
aeson ==2.2.*
@@ -481,7 +482,10 @@ executable simplex-chat
, text >=1.2.3.0 && <1.3
executable simplex-directory-service
- main-is: ../Main.hs
+ main-is: Main.hs
+ hs-source-dirs:
+ apps/simplex-directory-service
+ apps/simplex-directory-service/src
other-modules:
Directory.Events
Directory.Options
@@ -489,8 +493,6 @@ executable simplex-directory-service
Directory.Service
Directory.Store
Paths_simplex_chat
- hs-source-dirs:
- apps/simplex-directory-service/src
ghc-options: -Wall -Wcompat -Werror=incomplete-patterns -Wredundant-constraints -Wincomplete-record-updates -Wincomplete-uni-patterns -Wunused-type-patterns -threaded
build-depends:
aeson ==2.2.*
diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs
index cdb6f90a98..959265141d 100644
--- a/src/Simplex/Chat.hs
+++ b/src/Simplex/Chat.hs
@@ -1563,19 +1563,40 @@ processChatCommand' vr = \case
processChatCommand . APISendMessage chatRef True Nothing $ ComposedMessage Nothing Nothing mc
SendMessageBroadcast msg -> withUser $ \user -> do
contacts <- withStore' $ \db -> getUserContacts db vr user
- let cts = filter (\ct -> contactReady ct && contactActive ct && directOrUsed ct) contacts
- ChatConfig {logLevel} <- asks config
withChatLock "sendMessageBroadcast" . procCmd $ do
- (successes, failures) <- foldM (sendAndCount user logLevel) (0, 0) cts
- timestamp <- liftIO getCurrentTime
- pure CRBroadcastSent {user, msgContent = mc, successes, failures, timestamp}
+ let ctConns_ = L.nonEmpty $ foldr addContactConn [] contacts
+ case ctConns_ of
+ Nothing -> do
+ timestamp <- liftIO getCurrentTime
+ pure CRBroadcastSent {user, msgContent = mc, successes = 0, failures = 0, timestamp}
+ Just (ctConns :: NonEmpty (Contact, Connection)) -> do
+ let idsEvts = L.map ctSndEvent ctConns
+ sndMsgs <- createSndMessages idsEvts
+ let msgReqs_ :: NonEmpty (Either ChatError MsgReq) = L.zipWith (fmap . ctMsgReq) ctConns sndMsgs
+ (errs, ctSndMsgs :: [(Contact, SndMessage)]) <-
+ partitionEithers . L.toList . zipWith3' combineResults ctConns sndMsgs <$> deliverMessagesB msgReqs_
+ timestamp <- liftIO getCurrentTime
+ void $ withStoreBatch' $ \db -> map (createCI db user timestamp) ctSndMsgs
+ pure CRBroadcastSent {user, msgContent = mc, successes = length ctSndMsgs, failures = length errs, timestamp}
where
mc = MCText msg
- sendAndCount user ll (s, f) ct =
- (sendToContact user ct $> (s + 1, f)) `catchChatError` \e -> when (ll <= CLLInfo) (toView $ CRChatError (Just user) e) $> (s, f + 1)
- sendToContact user ct = do
- (sndMsg, _) <- sendDirectContactMessage user ct (XMsgNew $ MCSimple (extMsgContent mc Nothing))
- void $ saveSndChatItem user (CDDirectSnd ct) sndMsg (CISndMsgContent mc)
+ addContactConn :: Contact -> [(Contact, Connection)] -> [(Contact, Connection)]
+ addContactConn ct ctConns = case contactSendConn_ ct of
+ Right conn | directOrUsed ct -> (ct, conn) : ctConns
+ _ -> ctConns
+ ctSndEvent :: (Contact, Connection) -> (ConnOrGroupId, PQSupport, ChatMsgEvent 'Json)
+ ctSndEvent (_, Connection {connId, pqSupport}) = (ConnectionId connId, pqSupport, XMsgNew $ MCSimple (extMsgContent mc Nothing))
+ ctMsgReq :: (Contact, Connection) -> SndMessage -> MsgReq
+ ctMsgReq (_, conn) SndMessage {msgId, msgBody} = (conn, MsgFlags {notification = hasNotification XMsgNew_}, msgBody, msgId)
+ zipWith3' :: (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d
+ zipWith3' f ~(x :| xs) ~(y :| ys) ~(z :| zs) = f x y z :| zipWith3 f xs ys zs
+ combineResults :: (Contact, Connection) -> Either ChatError SndMessage -> Either ChatError (Int64, PQEncryption) -> Either ChatError (Contact, SndMessage)
+ combineResults (ct, _) (Right msg') (Right _) = Right (ct, msg')
+ combineResults _ (Left e) _ = Left e
+ combineResults _ _ (Left e) = Left e
+ createCI :: DB.Connection -> User -> UTCTime -> (Contact, SndMessage) -> IO ()
+ createCI db user createdAt (ct, sndMsg) =
+ void $ createNewSndChatItem db user (CDDirectSnd ct) sndMsg (CISndMsgContent mc) Nothing Nothing False createdAt
SendMessageQuote cName (AMsgDirection msgDir) quotedMsg msg -> withUser $ \user@User {userId} -> do
contactId <- withStore $ \db -> getContactIdByName db user cName
quotedItemId <- withStore $ \db -> getDirectChatItemIdByText db userId contactId msgDir quotedMsg
@@ -2221,7 +2242,7 @@ processChatCommand' vr = \case
summary <- case changedCts_ of
Nothing -> pure $ UserProfileUpdateSummary 0 0 []
Just changedCts -> do
- let idsEvts = L.map ctSndMsg changedCts
+ let idsEvts = L.map ctSndEvent changedCts
msgReqs_ <- L.zipWith ctMsgReq changedCts <$> createSndMessages idsEvts
(errs, cts) <- partitionEithers . L.toList . L.zipWith (second . const) changedCts <$> deliverMessagesB msgReqs_
unless (null errs) $ toView $ CRChatErrors (Just user) errs
@@ -2238,16 +2259,15 @@ processChatCommand' vr = \case
-- [incognito] filter out contacts with whom user has incognito connections
addChangedProfileContact :: User -> Contact -> [ChangedProfileContact] -> [ChangedProfileContact]
addChangedProfileContact user' ct changedCts = case contactSendConn_ ct' of
- Left _ -> changedCts
- Right conn
- | connIncognito conn || mergedProfile' == mergedProfile -> changedCts
- | otherwise -> ChangedProfileContact ct ct' mergedProfile' conn : changedCts
+ Right conn | not (connIncognito conn) && mergedProfile' /= mergedProfile ->
+ ChangedProfileContact ct ct' mergedProfile' conn : changedCts
+ _ -> changedCts
where
mergedProfile = userProfileToSend user Nothing (Just ct) False
ct' = updateMergedPreferences user' ct
mergedProfile' = userProfileToSend user' Nothing (Just ct') False
- ctSndMsg :: ChangedProfileContact -> (ConnOrGroupId, PQSupport, ChatMsgEvent 'Json)
- ctSndMsg ChangedProfileContact {mergedProfile', conn = Connection {connId, pqSupport}} = (ConnectionId connId, pqSupport, XInfo mergedProfile')
+ ctSndEvent :: ChangedProfileContact -> (ConnOrGroupId, PQSupport, ChatMsgEvent 'Json)
+ ctSndEvent ChangedProfileContact {mergedProfile', conn = Connection {connId, pqSupport}} = (ConnectionId connId, pqSupport, XInfo mergedProfile')
ctMsgReq :: ChangedProfileContact -> Either ChatError SndMessage -> Either ChatError MsgReq
ctMsgReq ChangedProfileContact {conn} =
fmap $ \SndMessage {msgId, msgBody} ->
diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs
index 1054a1d8eb..b78d36f489 100644
--- a/tests/Bots/DirectoryTests.hs
+++ b/tests/Bots/DirectoryTests.hs
@@ -522,7 +522,7 @@ testNotApprovedBadRoles tmp =
let approve = "/approve 1:privacy 1"
superUser #> ("@SimpleX-Directory " <> approve)
superUser <# ("SimpleX-Directory> > " <> approve)
- superUser <## " Group is not approved: user is not an owner."
+ superUser <## " Group is not approved: SimpleX-Directory is not an admin."
groupNotFound cath "privacy"
bob ##> "/mr privacy SimpleX-Directory admin"
bob <## "#privacy: you changed the role of SimpleX-Directory from member to admin"
diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs
index 409dd2bb3e..8e9d11d91f 100644
--- a/tests/ChatClient.hs
+++ b/tests/ChatClient.hs
@@ -37,10 +37,11 @@ import Simplex.Chat.Types
import Simplex.FileTransfer.Description (kb, mb)
import Simplex.FileTransfer.Server (runXFTPServerBlocking)
import Simplex.FileTransfer.Server.Env (XFTPServerConfig (..), defaultFileExpiration)
+import Simplex.Messaging.Agent (disposeAgentClient)
import Simplex.Messaging.Agent.Env.SQLite
import Simplex.Messaging.Agent.Protocol (currentSMPAgentVersion, duplexHandshakeSMPAgentVersion, pqdrSMPAgentVersion, supportedSMPAgentVRange)
import Simplex.Messaging.Agent.RetryInterval
-import Simplex.Messaging.Agent.Store.SQLite (MigrationConfirmation (..))
+import Simplex.Messaging.Agent.Store.SQLite (MigrationConfirmation (..), closeSQLiteStore)
import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB
import Simplex.Messaging.Client (ProtocolClientConfig (..), defaultNetworkConfig)
import Simplex.Messaging.Crypto.Ratchet (supportedE2EEncryptVRange, pattern PQSupportOff)
@@ -250,10 +251,12 @@ startTestChat_ db cfg opts user = do
pure TestCC {chatController = cc, virtualTerminal = t, chatAsync, termAsync, termQ, printOutput = False}
stopTestChat :: TestCC -> IO ()
-stopTestChat TestCC {chatController = cc, chatAsync, termAsync} = do
+stopTestChat TestCC {chatController = cc@ChatController {smpAgent, chatStore}, chatAsync, termAsync} = do
stopChatController cc
uninterruptibleCancel termAsync
uninterruptibleCancel chatAsync
+ liftIO $ disposeAgentClient smpAgent
+ closeSQLiteStore chatStore
threadDelay 200000
withNewTestChat :: HasCallStack => FilePath -> String -> Profile -> (HasCallStack => TestCC -> IO a) -> IO a
diff --git a/tests/ChatTests/Direct.hs b/tests/ChatTests/Direct.hs
index 4e06f68fb6..4b0389ab90 100644
--- a/tests/ChatTests/Direct.hs
+++ b/tests/ChatTests/Direct.hs
@@ -2997,10 +2997,15 @@ testPQEnableContactCompression =
bob ##> "/pq @alice on"
bob <## "alice: enable quantum resistant end-to-end encryption"
PQSupportOn <- bob `pqSupportForCt` 2
+ threadDelay 300000
(alice, "lrg 1", v) \:#> (bob, v')
+ threadDelay 300000
(bob, "lrg 2", v') \:#> (alice, v')
+ threadDelay 300000
(alice, "lrg 3", v') \:#> (bob, v')
+ threadDelay 300000
(bob, "lrg 4", v') \:#> (alice, v')
+ threadDelay 300000
(alice, "lrg 5", v') +:#> (bob, v')
PQEncOff <- alice `pqForContact` 2
PQEncOff <- bob `pqForContact` 2
diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs
index bf9b445925..77bac11145 100644
--- a/tests/ChatTests/Groups.hs
+++ b/tests/ChatTests/Groups.hs
@@ -871,6 +871,9 @@ testGroupRemoveAdd =
testChatCfg3 testCfgCreateGroupDirect aliceProfile bobProfile cathProfile $
\alice bob cath -> do
createGroup3 "team" alice bob cath
+
+ threadDelay 100000
+
-- remove member
alice ##> "/rm team bob"
concurrentlyN_
@@ -880,6 +883,9 @@ testGroupRemoveAdd =
bob <## "use /d #team to delete the group",
cath <## "#team: alice removed bob from the group"
]
+
+ threadDelay 100000
+
alice ##> "/a team bob"
alice <## "invitation to join the group #team sent to bob"
bob <## "#team_1: alice invites you to join the group as member"
@@ -1916,6 +1922,8 @@ testGroupLink =
(alice <# "#team cath> hey team")
(bob <# "#team cath> hey team")
+ threadDelay 100000
+
-- leaving team removes link
alice ##> "/l team"
concurrentlyN_
diff --git a/website/langs/cs.json b/website/langs/cs.json
index d087fd5bec..6e2416e4a2 100644
--- a/website/langs/cs.json
+++ b/website/langs/cs.json
@@ -37,10 +37,10 @@
"hero-overlay-1-title": "Jak funguje SimpleX?",
"hero-overlay-2-title": "Proč jsou uživatelská ID špatná pro soukromí?",
"feature-1-title": "E2E šifrované zprávy s Markdown a editací",
- "feature-3-title": "Decentralizované tajné skupiny —
pouze uživatelé vědí, že existují",
+ "feature-3-title": "E2E-šifrované decentralizované skupiny — pouze uživatelé vědí, že existují",
"feature-4-title": "Hlasové zprávy šifrované E2E",
"feature-6-title": "E2E šifrované
hlasové a videohovory",
- "feature-7-title": "Přenosná šifrovaná databáze— přeneste svůj profil do jiného zařízení",
+ "feature-7-title": "Přenosné šifrované ůložiště aplikace — přeneste profil do jiného zařízení",
"feature-8-title": "režim Inkognito —
Unikátní pro SimpleX Chat",
"simplex-network-overlay-1-title": "Srovnání s protokoly zpráv P2P",
"simplex-private-2-title": "Další vrstva
šifrování serveru",
@@ -170,8 +170,8 @@
"comparison-section-list-point-1": "Založeném obvykle na telefonním čísle a v některých případech uživatelském jménu",
"comparison-section-list-point-2": "Adresy založené na DNS",
"comparison-section-list-point-3": "Veřejný klíč nebo jiné globálně jedinečné ID",
- "comparison-section-list-point-4": "Pokud jsou servery operátora ohroženy",
- "comparison-section-list-point-5": "Nechrání metadata uživatelů",
+ "comparison-section-list-point-4": "Pokud jsou servery operátora kompromitovány. Ověřte bezpečnostní kód v Signálu a nějaké jiné aplikaci ke zmírnění",
+ "comparison-section-list-point-5": "Nechrání soukromí metadat uživatelů",
"comparison-section-list-point-6": "Zatímco P2P jsou distribuovány, nejsou federované – fungují jako jediná síť",
"comparison-section-list-point-7": "P2P sítě mají buď centrální autoritu, nebo může být ohrožena celá síť",
"see-here": "viz zde",
@@ -195,7 +195,7 @@
"simplex-explained-tab-3-p-2": "Uživatelé mohou dále zlepšit soukromí metadat pomocí Tor pro přístup k serverům, což zabraňuje korelaci podle IP adresy.",
"hero-p-1": "Jiné aplikace mají uživatelská ID: Signal, Matrix, Session, Briar, Jami, Cwtch atd.
SimpleX ne, ani náhodná čísla.
To radikálně zlepšuje vaše soukromí.",
"hero-2-header-desc": "Video ukazuje, jak se spojit se svým přítelem prostřednictvím jeho jednorázového QR kódu, osobně nebo prostřednictvím QR kódu ve videu. Můžete se také připojit sdílením pozvánky.",
- "feature-2-title": "Obrázky a soubory šifrované E2E
",
+ "feature-2-title": "E2E šifrované
obrázky, videa a soubory",
"feature-5-title": "Mizící tajné konverzace",
"simplex-private-1-title": "2-vrstvé
end-to-end šifrování",
"simplex-private-8-title": "Smíchání zpráv
ke snížení korelace",
@@ -232,5 +232,25 @@
"on-this-page": "Na této stránce",
"back-to-top": "Zpět nahoru",
"newer-version-of-eng-msg": "V angličtině je novější verze této stránky.",
- "glossary": "Rejstřík"
+ "glossary": "Rejstřík",
+ "hero-overlay-3-title": "Posouzení bezpečnosti",
+ "hero-overlay-3-textlink": "Posouzení bezpečnosti",
+ "hero-overlay-card-3-p-1": "Trail of Bits je přední bezpečnostní a technologické poradenství, jejichž klienti zahrnují velké technologické firmy, vládní agentury a významné blockchainové projekty.",
+ "f-droid-page-simplex-chat-repo-section-text": "Chcete-li jej přidat do vašeho F-Droid clienta, naskenujte QR kód nebo použijte tuto adresu URL:",
+ "f-droid-page-f-droid-org-repo-section-text": "SimpleX Chat a F-Droid.org repozitáře jsou podepsané různými klíči. Chcete-li přepnout, prosím exportujte chat databázi a přeinstalujte aplikaci.",
+ "comparison-section-list-point-4a": "SimpleX relé nemůže ohrozit šifrování e2e. Ověřte bezpečnostní kód, který zmírňuje mimo pásmový útok na kanál",
+ "docs-dropdown-8": "Služba SimpleX Directory",
+ "please-enable-javascript": "Prosím, povolte JavaScript k zobrazení QR kódu.",
+ "please-use-link-in-mobile-app": "Prosím použijte odkaz v mobilní aplikaci",
+ "simplex-chat-via-f-droid": "SimpleX Chat přes F-Droid",
+ "simplex-chat-repo": "SimpleX Chat repozitář",
+ "stable-and-beta-versions-built-by-developers": "Stabilní a beta verze vytvořené vývojáři",
+ "signing-key-fingerprint": "Otisk podpisového klíče (SHA-256)",
+ "f-droid-org-repo": "F-Droid.org repozitář",
+ "stable-versions-built-by-f-droid-org": "Stabilní verze vytvořené F-Droid.org",
+ "releases-to-this-repo-are-done-1-2-days-later": "Vydání v tomto repozitáři se provádí o 1-2 dny později",
+ "jobs": "Připojit k týmu",
+ "hero-overlay-card-3-p-2": "Trail of Bits přezkoumala kryptografii a síťové komponenty SimpleX platformy v listopadu 2022.",
+ "hero-overlay-card-3-p-3": "Přečtěte si více v ohlášení.",
+ "docs-dropdown-9": "Ke stažení"
}
diff --git a/website/src/_includes/blog_previews/20240323.html b/website/src/_includes/blog_previews/20240323.html
new file mode 100644
index 0000000000..7fe4c78179
--- /dev/null
+++ b/website/src/_includes/blog_previews/20240323.html
@@ -0,0 +1,16 @@
+SimpleX network: deliver real privacy via a profitable business and non-profit protocol governance:
+
+
+ - community and business interests are aligned.
+ - the journey to the decentralized non-profit protocol governance.
+ - welcome, Esra'a!
+
+
+v5.6 is released:
+
+
+ - quantum resistant end-to-end encryption (BETA) - enable it for the new contacts.
+ - use the app during the audio and video calls.
+ - migrate all app data to another device via QR code.
+ - blocking members and many other improvements.
+