Files
sepot/CHANGELOG.md
T
2026-08-13 12:33:24 +02:00

12 KiB
Raw Blame History

Changelog

Všechny podstatné změny v aplikaci Šepot. Formát dle Keep a Changelog, verzování dle ajtak standardu.

[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 (zrcadlo 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, 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í.