Šepot — end-to-end encrypted messenger
Initial public release. Anonymous on-device identity (no phone number, e-mail, or password), Signal-protocol cryptography (X3DH + PQXDH, Double Ratchet, sealed sender) via libsignal, a metadata-minimizing relay, group chats, disappearing messages, encrypted local storage, optional Tor transport, and a UI localized into Czech, English, German, Russian, and Italian. Monorepo: Flutter client (app/), Rust relay + wire types (rust/), protobuf definitions (proto/), self-host deploy (deploy/). Licensed under AGPL-3.0 with an app-store distribution exception (§7).
This commit is contained in:
+142
@@ -0,0 +1,142 @@
|
||||
# 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]
|
||||
|
||||
### 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í.
|
||||
Reference in New Issue
Block a user