Repository navigation
Releases: Codeenk/AirChat
Release list
AirChat v1.9.0
Full Changelog: v1.8.1...v1.9.0
AirChat v1.8.1
Full Changelog: v1.8.0...v1.8.1
AirChat v1.8.0
Full Changelog: v1.7.0...v1.8.0
AirChat v1.7.0
Full Changelog: v1.6.5...v1.7.0
AirChat v1.6.5
Full Changelog: v1.6.0...v1.6.5
AirChat v1.6.0
Full Changelog: v1.5.8...v1.6.0
AirChat v1.5.8
Full Changelog: v1.5.7...v1.5.8
AirChat v1.5.7 — Reconnecting Fixed
AirChat v1.5.7 — Permanent Reconnecting Fixed
The bug
App stuck on Reconnecting forever. Relay logs showed the cause directly: auth: no signing key — the device's directory row predates signing keys, so every socket was closed on sight and the reconnect loop never healed.
The one-time startup migration could fail silently (no network at that moment) and never retried.
The fix
Auth rejection now triggers a directory re-register (upserts the current signing key, 5-minute cooldown) and the normal reconnect cycle heals on its own. No user action needed — update and the wire reconnects within seconds.
AirChat v1.5.6 — Scroll Teleport Fixed
AirChat v1.5.6 — Chat Scroll Remade
The bug
Each swipe scrolled 2–3 pages. Root cause: every scroll event near the top fired a loadMore, and each one ran its own jumpTo correction — overlapping corrections fought the fling's momentum mid-flight.
The fix (Apple fluid-interfaces rules)
- Single-flight loads: one loadMore at a time; offset corrected only when content actually grew — momentum is never interrupted
- Keyboard re-pin skipped while the finger is down
- cacheExtent 300→800 so flings don't outrun layout
- FAB springs in/out (easeOutBack) instead of popping
Both 1:1 and group chats.
AirChat v1.5.5 — Scroll Jank Fixed
AirChat v1.5.5 — Keyboard-Open Scroll Fixed
The lag
Scrolling with the keyboard open stuttered. Two per-frame costs found:
- O(n²) reply check — every bubble ran
messages.any()per build (40,000 comparisons for 200 messages on each keyboard animation frame). Replaced with a precomputed ID set per build. - MediaQuery rebuilds — every bubble subscribed to full MediaQuery, rebuilding on each keyboard animation frame. Switched to size-only subscription so bubbles skip keyboard frames entirely.
Both 1:1 and group chats.