Skip to content

AirChat v1.1 (Stable-Beta-2)

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 23 Aug 16:22
· 55 commits to main since this release

AirChat v1.1 (Stable-Beta-2)

A performance-focused release: 17 optimizations across 11 files targeting start-up, database, media pipeline and rendering.

🚀 Performance in v1.1

Phase 1 — Database & State

  • DB indexes on messages(chat_id, timestamp) and chat_threads(last_message_time) — chat loads no longer full-scan (schema v2 → v3, automatic migration).
  • Message pagination — chats load the latest 50 messages with on-demand loadMore() for history.
  • Home list N+1 fix — single JOIN query embeds contact names in chat threads; the per-row FutureBuilder is gone.
  • WebSocket listener leak fixed — MessageRouter.start() is now idempotent (no duplicate listeners).
  • Incoming messages are stored before directory lookups (which run in the background) — delivery to the UI is no longer blocked by network.
  • 10s timeout added to identity directory lookups.

Phase 2 — Media Pipeline

  • LRU cache for decrypted images (25 entries / 50 MB) — reopening a photo no longer re-downloads + re-decrypts.
  • Picked images are capped at 1080p before encryption — smaller ciphertexts, faster uploads.
  • 25 MB document guard before loading into memory (matches server limit, prevents OOM).
  • Retry with exponential backoff + timeouts on media upload/download (3 attempts).

Phase 3 — UI Rendering

  • RepaintBoundary around every chat bubble — scrolling no longer repaints the whole list.
  • 300 px cacheExtent on the message list for smoother fast-scrolls.
  • GlobalKey map capped at 200 entries (no unbounded memory growth in long chats).
  • Avatar extracted from the username screen rebuild path — typing no longer rebuilds the full screen.
  • Removed unused cached_network_image dependency.

✨ Earlier highlights

  • ⚡ Instant cold start (network init deferred past first frame) + unified AirChat branding (v1.0)
  • 💬 Swipe-to-reply with tappable quotes; instant killed-app notifications (v0.6)
  • 🔐 Per-message E2EE (X25519 + ChaCha20-Poly1305), ephemeral 24 h relay, QR identities, encrypted media & local storage (v0.5)

Full Changelog: v1.0.0-beta...v1.1.0-beta2

⚠️ Beta software — please report issues at https://github.com/Codeenk/AirChat/issues