09ef54ef69
New app icon: the Š that fades into dots. Launcher icons, adaptive icon foreground and splash regenerated from assets/icon.
370 lines
20 KiB
Markdown
370 lines
20 KiB
Markdown
# Changelog
|
||
|
||
Všechny podstatné změny v aplikaci Šepot. Formát dle
|
||
[Keep a Changelog](https://keepachangelog.com/cs/1.1.0/),
|
||
verzování dle [ajtak standardu](#verzování).
|
||
|
||
## [Nevydáno]
|
||
|
||
## [1.2.2] – 2026-10-11
|
||
|
||
### Opraveno
|
||
- **Přečtený chat se dál ukazoval jako nepřečtený.** Zpráva, která přišla do
|
||
otevřeného chatu, zůstala po návratu do seznamu tučně s odznakem; teď se
|
||
přečte hned, když je chat na obrazovce (a appka v popředí). Stažení přílohy
|
||
nebo dodatečné doručení už nevrátí přečtenou zprávu mezi nepřečtené.
|
||
- Gesto „odpověď tahem“ při zavírání chatu v ladicím buildu padalo na
|
||
vytvoření animace nad zrušeným prvkem.
|
||
|
||
### Změněno
|
||
- **Nová ikona aplikace:** Š, které se ve spodní části rozpadá do teček.
|
||
|
||
## [1.2.1] – 2026-10-09
|
||
|
||
### Opraveno
|
||
- **Hovory se nedaly přijmout.** Příchozí signalizace hovoru se zahazovala dřív,
|
||
než se dostala k obsluze hovoru; volaný jen „zazvonil“ z budíčku a pak nic.
|
||
- **Obrazovka hovoru po zavěšení:** avatar a jméno uskakovaly vlevo nahoru.
|
||
- **Obnova ze 24 slov na novém telefonu** končila nekonečným čekáním — server
|
||
odmítal už existující identitu. Nové zařízení ji teď převezme podpisem.
|
||
- **Tichá ztráta zpráv:** úklid mizících zpráv mohl přepsat čerstvě přijatou
|
||
zprávu; automatický zámek během zpracování zprávy ji mohl nenávratně zahodit;
|
||
souběžné šifrování pro téhož příjemce dávalo obálky, které druhá strana
|
||
zahodila. Všechny tři cesty opraveny.
|
||
- **Velká fronta po delším výpadku** (stovky zpráv) se už neodpojuje v půlce
|
||
a server ji po osmi pokusech nemaže.
|
||
- **Nátlakový PIN** otevíral relaci se skutečnou identitou, frází i přístupem ke
|
||
smazání účtu. Teď je izolovaná: náhodná identita, žádná síť, žádný zásah do
|
||
klíčů; smazání v ní nechá skutečný účet být.
|
||
- Zvonění z budíčku bez skutečné nabídky končí po 12 s; server budíčky hovoru
|
||
omezuje na cíl, takže cizí člověk se znalostí adresy telefon nerozezvoní
|
||
pořád dokola.
|
||
- Dodatečné odeslání z fronty neztrácí anketu ani zmínky; budíček při
|
||
„připojeno“ bez provozu obnoví spojení.
|
||
|
||
### Bezpečnost
|
||
- Hádání PINu: po pěti chybách prodleva 30 s, dál dvojnásobná až 15 minut.
|
||
- Nátlakový a skutečný PIN se ověřují jednou derivací — čas odemčení neprozradí,
|
||
který byl zadán.
|
||
- Biometrie jen biometricky (zámek telefonu appku neodemkne); zabezpečení
|
||
obrazovky je výchozí zapnuté a po odemčení skutečně platí; na iOS klíče
|
||
nepřecházejí do iCloud Keychain ani záloh; filtr proti dotykům přes překryvná okna.
|
||
- Server: doplňování jednorázových klíčů a rotace podepsaných klíčů
|
||
(`POST /v1/keys`), omezení výdeje jednorázových klíčů na adresu, chyby v logu
|
||
bez adres push endpointů, připnutí DNS u budíčků, globální strop příloh,
|
||
limity délek, `/v1/ready`, uvolnění spojení při vypnutí, revize a zdroj
|
||
v `/v1/server-info`.
|
||
|
||
## [1.2.0] – 2026-10-01
|
||
|
||
### Nový vzhled
|
||
- **Domovská obrazovka s kartami Chaty, Kontakty a Nastavení.** Velký
|
||
nadpis, hledání v chatech i v obsahu zpráv (najde „klic“ i „klíč“),
|
||
filtry Vše / Nepřečtené / Skupiny, připnuté chaty nahoře.
|
||
- **Konverzace s hloubkou.** Průsvitná hlavička a pole pro psaní nad jemnou
|
||
tapetou, zprávy od stejného člověka se skládají do bloků, ve skupině
|
||
avatar a jméno autora v jeho barvě.
|
||
- **Odpověď tahem doprava**, řádek „N nových zpráv“ na místě, kde jsi
|
||
skončil, a tlačítko na nejnovější zprávy s počtem nových.
|
||
- **Hledání v konverzaci** se zvýrazněním a přeskakováním mezi výsledky;
|
||
klepnutí na citaci skočí na původní zprávu.
|
||
- **Profil kontaktu a skupiny** po klepnutí na jméno nebo avatar: ověření,
|
||
sdílené fotky, společné skupiny, mizící zprávy, ztlumení, blokování;
|
||
u skupiny členové, přidání lidí, přejmenování a odchod.
|
||
- **Fotky přes celou obrazovku s listováním** všemi fotkami konverzace.
|
||
- **Každý člověk má vlastní barvu avataru** — všude stejnou, i po
|
||
přejmenování.
|
||
- **„Přečteno“ je poznat na první pohled** — plná pilulka místo
|
||
modrošedých fajfek, které na korálové bublině skoro nebyly vidět.
|
||
|
||
### Přidáno
|
||
- **Hovory a videohovory** 1:1, šifrované end-to-end. Tlačítka v hlavičce
|
||
chatu; telefon zazvoní i se zavřenou aplikací (na iPhonu přes CallKit).
|
||
Když přímé spojení nejde, hovor šifrovaně přepošle náš server.
|
||
V chatu zůstane záznam „Hovor · 3:12“ nebo „Zmeškaný hovor“.
|
||
- **Rozepsaná zpráva zůstane.** Když odejdeš z chatu, text v poli
|
||
počká, a v seznamu chatů je vidět jako „Koncept: …“.
|
||
- **Přeposlání** zprávy, fotky, souboru i hlasovky do jiného chatu nebo
|
||
skupiny (podržet zprávu → Přeposlat).
|
||
- **Poznámky pro sebe** v kartě Kontakty: chat sám se sebou na odkazy,
|
||
fotky a poznámky. Zůstává jen v telefonu, šifrovaně, nic nejde na server.
|
||
- **@zmínky ve skupinách.** Po napsání „@“ se nabídnou členové; zmíněný
|
||
dostane upozornění, i když má skupinu ztlumenou.
|
||
- **Rychlejší přehrávání hlasovek** — 1,5× a 2×, rychlost si Šepot pamatuje.
|
||
- **Správci skupin.** Zakladatel je správce a může udělat správcem
|
||
i další členy. Odebrat člena, měnit správce a přejmenovat skupinu smí
|
||
jen správce; každou takovou změnu podepíše svým klíčem a ostatní telefony
|
||
podpis ověří, takže ji nikdo nemůže podvrhnout ani za správce vydávat.
|
||
U členů je odznak „Správce“, ostatní vidí akce neaktivní s vysvětlením.
|
||
Dokud má někdo ve skupině starší verzi Šepotu, přidávat lidi smí dál
|
||
každý, aby se skupina nerozdělila; se staršími verzemi skupiny fungují
|
||
jako dosud. Existující skupiny se převedou samy, bez jediné zprávy.
|
||
- **Profilová fotka.** V Nastavení klepni na svůj avatar. Fotka se ořízne,
|
||
zmenší a zbaví metadat a tvým kontaktům dorazí šifrovaně s další
|
||
zprávou; u nich se ukáže všude místo iniciál.
|
||
- **Ankety** v chatu i ve skupině (plus → Anketa): jedna nebo víc
|
||
odpovědí, pruhy výsledků a kdo jak hlasoval, hlas jde změnit i zrušit.
|
||
Starší verze Šepotu uvidí otázku a možnosti jako text.
|
||
- **„píše…“** v hlavičce chatu, v seznamu chatů a jako tři tečky pod
|
||
poslední zprávou. Stejně jako potvrzení přečtení je volitelné (výchozí
|
||
vypnuto) a oboustranné. Offline protistraně se nic neposílá do fronty ani
|
||
ji to nebudí — server takové oznámení doručí jen živému spojení.
|
||
- **Čas doručení a přečtení.** Pod poslední odeslanou zprávou je vidět, kdy
|
||
dorazila a kdy ji druhá strana přečetla. Po podržení zprávy ukáže „Info
|
||
o zprávě“ čas odeslání, doručení a přečtení — ve skupině u každého člena
|
||
zvlášť. Čas přečtení se ukazuje jen lidem, kteří potvrzení přečtení
|
||
sdílejí oboustranně (výchozí vypnuto).
|
||
- **Přidání lidí do skupiny.** Do existující skupiny jde nově přidat
|
||
kontakty z nabídky skupiny nebo ze seznamu členů.
|
||
|
||
### Změněno
|
||
- **Notifikace jsou na Androidu zapnuté od začátku.** Bez nich systém
|
||
Šepot na pozadí uspí a zprávy čekají, dokud aplikaci neotevřeš. Kdo má
|
||
UnifiedPush distributor (např. ntfy), dostane ho; ostatním se zapne
|
||
budíček přes Google (FCM). Google přitom vidí jen to, že má telefon
|
||
probudit — ne obsah ani odesílatele. Přepnout či vypnout jde v Nastavení.
|
||
- **Dvojitá fajfka ve skupině** svítí až ve chvíli, kdy zpráva dorazila
|
||
všem členům, ne jen prvnímu.
|
||
|
||
### Opraveno
|
||
- **Ztlumená skupina dál posílala upozornění.** Ztlumení se u skupinové
|
||
zprávy kontrolovalo v chatu s autorem, ne ve skupině.
|
||
- **Odesílané fotky nesly polohu (GPS) a údaje o telefonu.** Zpracování
|
||
fotky před odesláním metadata EXIF nečekaně zachovávalo — v odeslané
|
||
fotce i v jejím náhledu. Nově se před odesláním vždy odstraní.
|
||
- **Zablokovaný kontakt se mohl sám odblokovat**, když změnil adresu pro
|
||
doručování.
|
||
- **„Přečteno“ se už nevrací na „doručeno“.** Když potvrzení o doručení
|
||
dorazilo po potvrzení přečtení (typicky po výpadku spojení), zpráva se
|
||
tvářila jako nepřečtená.
|
||
- **Zpráva označená jako neodeslaná** se po doručení sama opraví na
|
||
doručenou.
|
||
- **Nastavení ukazovalo starou verzi aplikace.** Číslo verze bylo v kódu
|
||
napsané ručně a při vydání 1.1.1 a 1.1.2 se ho zapomnělo přepsat, takže
|
||
se všude hlásila 1.1.0 — včetně hlášení zneužití, u kterých pak nešlo
|
||
dohledat, ze které verze přišla. Verze se nově čte z nainstalovaného
|
||
balíčku a k hlášení se přikládá i číslo buildu.
|
||
|
||
## [1.1.2] – 2026-08-13
|
||
|
||
### Opraveno
|
||
- **Zprávy už nečekají na otevření aplikace.** Když mobilní síť tiše
|
||
zahodila nečinné spojení, Šepot o tom nevěděl: tvářil se připojeně, ale
|
||
odeslaná zpráva skončila chybou a příchozí nedorazily — a všechny se pak
|
||
vysypaly naráz po restartu aplikace. Spojení se teď hlídá pravidelným
|
||
pingem na obou stranách, takže výpadek se pozná a obnoví v řádu sekund.
|
||
- **Neodeslaná zpráva se pošle sama.** Dosud zůstala označená jako
|
||
neodeslaná (u příloh dokonce natrvalo na „odesílá se") a poslat znovu ji
|
||
musel člověk ručně. Nově se po obnovení spojení odešle sama; opakované
|
||
doručení téže zprávy druhá strana pozná a nezobrazí ji dvakrát.
|
||
- **Zprávy, které nešly doručit, se přestaly hromadit.** Když se cestou
|
||
ztratilo potvrzení o doručení, obálka na serveru zůstala a znovu a znovu
|
||
se posílala, aniž by ji šlo přečíst. Server teď takové zprávy po několika
|
||
marných pokusech zahodí, místo aby jimi zdržoval doručování ostatních.
|
||
|
||
### Přidáno
|
||
- **Upozornění, když nechodí notifikace.** Bez nich Android aplikaci na
|
||
pozadí uspí a zprávy uvidíš, až ji otevřeš. Šepot to teď řekne rovnou v
|
||
seznamu chatů a nabídne nastavení; hlášku jde odmítnout. Selhání
|
||
registrace u distributora se už nezamlčí.
|
||
|
||
## [1.1.1] – 2026-07-18
|
||
|
||
### Opraveno
|
||
- **Odeslání první zprávy hned po instalaci už neselže.** Krátce po
|
||
založení účtu, než se aplikace stihla připojit k relayi, mohla zpráva
|
||
spadnout s hláškou „Odeslání selhalo". Nově se v tu chvíli ukáže
|
||
srozumitelné „Šepot se ještě připojuje — zkus to za chvíli" a připojení
|
||
proběhne na pozadí.
|
||
- **QR kód a odkaz se ukážou až s doručovací adresou.** Když sis chtěl
|
||
ukázat vlastní QR dřív, než se aplikace poprvé připojila, vygeneroval se
|
||
neúplný odkaz — protistrana pak nemohla poslat první zprávu („Kontakt
|
||
nemá doručovací adresu"). Nově se místo neúplného kódu ukáže stav
|
||
připojování a QR se objeví, jakmile je hotové.
|
||
- **Neúplný odkaz kontaktu se odmítne při přidání**, ne až při prvním
|
||
odeslání — s jasnou výzvou požádat protistranu o nový odkaz.
|
||
- **Zamčení po nečinnosti už neumlčí aplikaci.** Po automatickém zamknutí
|
||
a opětovném odemčení se zprávy zase přijímají i odesílají — dřív mohl
|
||
messaging zůstat po odemčení vypnutý až do restartu aplikace.
|
||
- **Skupinová zpráva se při chybě neodeslání označí jako neodeslaná**
|
||
místo aby zůstala navždy ve stavu „odesílá se".
|
||
- Ošetřeno vzácné zdvojení spojení s relayem při rychlém přepnutí Toru
|
||
nebo zamčení během připojování.
|
||
|
||
### Změněno
|
||
- Interní úklid závislostí notifikací (odstraněna nepoužívaná větev, která
|
||
komplikovala sestavení verze pro iOS).
|
||
|
||
## [1.1.0] – 2026-07-13
|
||
|
||
### Přidáno
|
||
- **Náhled fotky před odesláním.** Vyfocená nebo vybraná fotka už
|
||
neodchází okamžitě — otevře se náhled, kde jde fotku otočit, kreslit
|
||
po ní prstem (7 barev, krok zpět), přidat na ni text (tažením se
|
||
přesouvá, klepnutím upraví) a připojit popisek. Odejde až po klepnutí
|
||
na Odeslat; zavření náhledu nic nepošle.
|
||
|
||
### Opraveno
|
||
- **Nastavení se nevykreslilo** — obrazovka místo obsahu ukazovala
|
||
chybovou hlášku „Tahle obrazovka se nevykreslila". Profilová karta
|
||
předávala do překladu otisk klíče jako objekt místo textu.
|
||
- Avatar s iniciálami spadl na prázdném jménu nebo jménu s dvojitou
|
||
mezerou; iniciály se nově skládají po grafémech, takže nerozpůlí emoji.
|
||
- **Písma se dodávají v aplikaci** (Inter, JetBrains Mono — OFL).
|
||
Aplikace dřív stahovala fonty za běhu z Google CDN — síťový požadavek
|
||
na cizí server navíc a binárka odlišná od zveřejněného zdroje.
|
||
- **Trvale vadná příchozí zpráva už neotravuje frontu.** Zpráva, jejíž
|
||
obsah nejde po dešifrování zpracovat (poškozená pole od upraveného
|
||
klienta), se potvrdí a zahodí — dřív se doručovala donekonečna při
|
||
každém připojení. Nedešifrovatelné obálky fronta dál drží.
|
||
- Příloha s poškozeným náhledem od protistrany shodila vykreslení
|
||
bubliny; vadný náhled se nově zahodí při příjmu a base64 krypto polí
|
||
příloh se validuje.
|
||
- Zachycení výměny důvěryhodního kořene relaye (signál MITM) na
|
||
pozadí — dřív tichá neošetřená výjimka, teď příznak čitelný pro UI.
|
||
- PNG bez průhlednosti (screenshoty, upravené fotky) se posílají jako
|
||
JPEG — několikanásobně menší přenos; PNG zůstává jen pro obrázky se
|
||
skutečnou průhledností.
|
||
|
||
## [1.0.0] – 2026-07-11
|
||
|
||
První ostrá verze. Šepot je od 11. 7. 2026 open source — kompletní
|
||
zdrojový kód aplikace i serveru je veřejný na
|
||
[gitea.ajtak.it/julius.joska/sepot](https://gitea.ajtak.it/julius.joska/sepot)
|
||
(zrcadlo [github.com/juliusjoska/sepot](https://github.com/juliusjoska/sepot)).
|
||
|
||
### Přidáno
|
||
- **Aplikace mluví pěti jazyky: česky, anglicky, německy, rusky
|
||
a italsky.** Jazyk se řídí systémem (neznámé jazyky spadnou na
|
||
angličtinu), nebo ho přepneš ručně v Nastavení → Obecné. Přeložené
|
||
jsou i notifikace, chybové hlášky, iOS dialogy oprávnění a chybová
|
||
obrazovka startu; volba jazyka funguje už na zamykací obrazovce.
|
||
- **Připojení přes Tor.** Přepínač v Nastavení → Připojení (Android,
|
||
vyžaduje Orbot): provoz na server jde přes síť Tor a skryje tvou IP
|
||
adresu. Přepnutí přestaví spojení za běhu, bez restartu aplikace.
|
||
- **Skupinové konverzace.** Skupinu (až 128 členů) založíš z Kontaktů,
|
||
posílat do ní jde všechno co do běžného chatu — text, fotky, přílohy,
|
||
hlasovky, reakce, odpovědi i mizící zprávy. Menu nabízí seznam členů,
|
||
přejmenování a odchod. Zprávy jsou end-to-end šifrované každému členovi
|
||
zvlášť, takže platí stejná ochrana jako v běžné konverzaci; server
|
||
o skupině neví nic.
|
||
|
||
### Opraveno
|
||
- Automatický zámek, změna PINu i nátlakový PIN ověřeny na zařízení.
|
||
|
||
## [0.3.2] – 2026-07-10
|
||
|
||
### Přidáno
|
||
- **Smazání účtu maže i server.** „Smazat všechna data" nově kromě
|
||
lokálního wipe odregistruje účet z relaye (`DELETE /v1/identity`):
|
||
smaže se registrace identity, záznamy zařízení, distribuční klíče,
|
||
push token i fronta nedoručených zpráv. Když je zařízení offline,
|
||
aplikace na to upozorní a zbytek řeší podpora@sepot.cz.
|
||
|
||
### Opraveno
|
||
- iOS: privacy manifest (`PrivacyInfo.xcprivacy`) je součástí Xcode
|
||
projektu — konec ručního vkládání při každém buildu (ITMS-91053).
|
||
- iOS: `Info.plist` měl dvakrát `CFBundleDisplayName` (jednou bez
|
||
diakritiky) a povoloval landscape, ačkoli je aplikace zamčená na
|
||
portrét. Sjednoceno.
|
||
|
||
## [0.3.1] – 2026-07-09
|
||
|
||
### Opraveno
|
||
- **Nahlašování už nevybízí k vkládání obsahu zpráv.** Formulář dřív nabízel
|
||
„pokud chceš něco doložit, vlož to do popisu sám“. U hlášení o ohrožení
|
||
dítěte by to znamenalo, že se k provozovateli dostane materiál, jehož
|
||
držení je trestné — a k posouzení ho stejně nesmí použít. Nově formulář
|
||
obsah odmítá a u této kategorie odkazuje na STOPonline.cz a Policii ČR.
|
||
|
||
## [0.3.0] – 2026-07-09
|
||
|
||
Nahlašování zneužití a standardy ochrany dětí — bez nich Šepot nesmí do
|
||
obchodů (Google Play UGC policy, Child Safety Standards, App Store 1.2).
|
||
|
||
### Přidáno
|
||
- **Nahlášení zneužití** — Nastavení → Bezpečnost → Nahlásit zneužití, nebo
|
||
z menu konverzace. Do teď „nahlásit“ jen zablokovalo kontakt a nikam
|
||
nedošlo; nově hlášení dorazí provozovateli. Kategorie zahrnují ohrožení
|
||
dítěte (CSAE), které se řeší přednostně.
|
||
- **Standardy ochrany dětí** — veřejný dokument na
|
||
[sepot.cz/bezpecnost-deti](https://sepot.cz/bezpecnost-deti), odkaz přímo
|
||
z nastavení.
|
||
- **Deklarace exportní compliance** (`ITSAppUsesNonExemptEncryption`) —
|
||
Šepot používá vlastní E2E šifrování, což se Applu hlásí pravdivě.
|
||
|
||
### Opraveno
|
||
- **iOS: bílá obrazovka po spuštění.** Nativní knihovna libsignal se na
|
||
iPhonu nenačetla (framework je v `Frameworks/`, ale není zalinkovaný, a
|
||
výchozí loader ho hledal v kořeni `.app`). Start teď knihovnu načítá přes
|
||
`@rpath` a navíc už nikdy neskončí němou plochou — když se šifrovací
|
||
jádro nespustí, objeví se čitelná chybová obrazovka s textem k odeslání.
|
||
- Verze uvedená v Nastavení → O aplikaci ukazovala pořád `0.1.0`.
|
||
|
||
### Poznámka k soukromí
|
||
Hlášení neodchází přes relay, ale na webový server sepot.cz — ten se při
|
||
odeslání dozví IP adresu odesílatele. Aplikace na to upozorňuje ještě před
|
||
odesláním. Obsah zpráv se neodesílá nikdy; do hlášení jde jen to, co
|
||
uživatel sám napíše.
|
||
|
||
## [0.2.0] – 2026-07-08
|
||
|
||
Velká funkční vlna — z E2E základu je plnohodnotný soukromý messenger.
|
||
|
||
### Přidáno
|
||
- **Jádro chatu** — odpovědi na zprávy, reakce emotikonem, úprava a mazání
|
||
odeslaných zpráv.
|
||
- **Hlasové zprávy** — nahrávání mikrofonem přímo v chatu, přehrávání
|
||
s průběhem. Šifrované per-file, plaintext audio nikdy nejde na disk.
|
||
- **Obnova účtu ze zálohovací fráze** — 24 slov vrátí tvoji identitu
|
||
(stejný SEP kód, kontakty tě dál poznají).
|
||
- **Šifrované zálohy historie** — export/import konverzací; zálohu dešifruje
|
||
jen tvoje identita.
|
||
- **Blokování a nahlášení kontaktu** — příchozí zprávy od blokovaného se
|
||
zahodí.
|
||
- **Potvrzení přečtení** (volitelné, výchozí vypnuto).
|
||
- **Smazat u mě** — lokální smazání zprávy vedle „Smazat pro všechny".
|
||
- **Zabezpečení obrazovky** — blok screenshotů a skrytí obsahu v přepínači
|
||
aplikací.
|
||
- **Nátlakový (decoy) PIN** — druhý PIN otevře prázdnou aplikaci; skutečná
|
||
data zůstanou skrytá.
|
||
- **Nativní iOS push (APNs)** — bez závislosti na Googlu.
|
||
|
||
### Změněno
|
||
- **Sjednocené logo** napříč launcherem, splash obrazovkou i uvnitř aplikace.
|
||
- **Čistší pole pro psaní** — jeden tenký obrys, ikony uvnitř, nižší profil.
|
||
- **Bubliny se scalují** podle délky zprávy.
|
||
|
||
### Opraveno
|
||
- **Doručenky (✓✓)** se povýší i u offline příjemce, jakmile si zprávu
|
||
vyzvedne.
|
||
- **Náhledy fotek** už neukazují předchozí obrázek (chyba recyklace v seznamu).
|
||
|
||
### Bezpečnost
|
||
- Zálohy i decoy PIN stojí na oddělených šifrovaných databázích a klíčích
|
||
odvozených z identity.
|
||
|
||
## [0.1.0] – 2026-07-04
|
||
|
||
První beta.
|
||
|
||
### Přidáno
|
||
- **End-to-end šifrované zprávy** (libsignal, PQXDH + Double Ratchet,
|
||
sealed sender) přes vlastní relay (WSS + Tor onion).
|
||
- **Fotky a dokumenty** — šifrované přílohy.
|
||
- **Ověření kontaktu** přes safety number a QR.
|
||
- **Mizící zprávy** s per-konverzace TTL.
|
||
- **PIN (Argon2id) a biometrické odemčení**, šifrovaná lokální DB (SQLCipher).
|
||
- **Push** — UnifiedPush (výchozí), FCM (opt-in).
|
||
- Bez telefonního čísla, bez e-mailu, bez reklam.
|
||
|
||
---
|
||
|
||
## Verzování
|
||
|
||
- **versionName `0.MINOR.PATCH`** v betě → **`1.0.0` = veřejné vydání**.
|
||
- **MINOR** = nová várka funkcí / milník (0.2.0 → 0.3.0 → 0.4.0…).
|
||
- **PATCH** = jen opravy chyb a drobnosti (0.2.1, 0.2.2…).
|
||
- **Build number** (`+N`) roste `+1` při každém uploadu, nezávisle na
|
||
versionName, stejný pro iOS i Android. Uživatel ho nevidí.
|