Skip to content

v0.1.1

Choose a tag to compare

@rameerez rameerez released this 10 Jun 22:27
· 34 commits to main since this release

The first public release of chats — real-time DMs and group chats for your Rails users in minutes, Hotwire-native end to end: Turbo Streams over Action Cable for live delivery, Stimulus for the thread/composer behavior, zero build step, any Rails 7.1+/8.x app.

gem install chats · on RubyGems: https://rubygems.org/gems/chats

What ships in 0.1.1

  • Direct + group conversations with a policy seam (can_message?) the host controls, viewer-agnostic broadcast bubbles (one render per message, shared by every subscriber), and keyset scroll-up pagination.
  • Telegram-style long-press actions — a FLIP-morphing bubble lift over a blurred backdrop with a reactions pill and contextual menu (Copy / Edit / Delete + host-injected items). Verified on real WebViews: copy runs inside the user-gesture frame (WebKit drops activation in promise continuations), and Copy/Edit read the popup's visible clone (the original bubble is hidden while lifted).
  • Composer edit mode (Telegram's flow), read-horizon receipts (sent/seen double ticks), typing indicators via a Turbo Stream custom action, reactions, attachments with pre-send previews, soft-delete tombstones, inbox search.
  • Mobile-WebView resilience: stale-thread catch-up endpoint for suspended sockets, «new messages» divider, DOM budget (~300 bubbles) with reachable trimmed history, chronology guard for out-of-order broadcast appends, tail-gated autoscroll (edits/pagination never yank the viewport).
  • Host integration: ejectable views (rails g chats:views), engine importmap pins, :message_created / :conversation_read notifier hooks, and moderation-friendly seams (single marked body node, report-link injection point).

Battle-tested as the messaging layer of a production app (iOS + Android Hotwire Native shells + web) before extraction.


Full Changelog: https://github.com/rameerez/chats/commits/v0.1.1