Files
sepot/app
Julius Joska 9985b79aa6 fix(app): ping the relay, retry stuck messages, drop duplicates
A message sent into a dead socket ended up as failed — attachments even
stayed on "sending" forever — and only the user could send it again by
hand. Mobile NAT drops idle TCP silently, so neither side knew.

- pingInterval on the WebSocket, so the client notices a dead link itself
- outbox: after every reconnect, stuck messages are re-sent (batch of 30,
  up to a day old); permanent errors are not retried
- sendAttachment gained the try/catch it was missing, otherwise the
  attachment never reached the outbox
- de-duplicate by message id: a retry re-sends the SAME message, which
  would otherwise show up twice on the other side
2026-08-13 12:23:24 +02:00
..

Šepot — Flutter client

The Šepot mobile client. See the repository README for the project overview, threat model, and license.

Quick start

flutter pub get
flutter run                       # against the default relay
flutter build apk --release       # signed release APK (see key.properties)

Layout

Path Contents
lib/core/ Crypto facade, storage (SQLCipher), relay client + transport, push, services
lib/features/ Screens (onboarding, chat, contacts, groups, settings, safety…)
lib/models/ lib/providers/ Data models and Riverpod providers
lib/l10n/ Localization (app_*.arb, generated AppLocalizations)
test/ integration_test/ Unit, storage, crypto, and on-device integration tests

Localization

Strings are defined in lib/l10n/app_cs.arb (template) and translated into app_en/de/ru/it.arb. After editing, run flutter gen-l10n. See the root README for how to contribute a new language.