Repository navigation
AirChat v1.1 (Stable-Beta-2)
Pre-release
Pre-release
·
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)andchat_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
FutureBuilderis 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
RepaintBoundaryaround every chat bubble — scrolling no longer repaints the whole list.- 300 px
cacheExtenton 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_imagedependency.
✨ 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