Skip to content

OChat v1.1.0

Choose a tag to compare

@github-actions github-actions released this 25 Jul 22:00
· 7 commits to main since this release

A UX pass over the whole app: swipeable tabs, unread badges, live mesh status, and motion across lists and navigation.

Downloads

File For
ochat-arm64.apk ARM64 — essentially every modern phone. Pick this one.
ochat-x86_64.apk x86_64 — Chromebooks, some tablets, emulators
ochat-universal.apk All architectures — larger, use if unsure

Requires Android 8.0 (API 26) or newer. Signed; certificate SHA-256:

87:E2:6E:CC:64:F3:19:DB:6C:FB:03:48:30:02:4F:00:04:6C:63:BB:E1:53:84:52:88:4F:96:3F:80:55:C8:8F

What's new

Swipe between tabs. Chats, Channels and People can now be swiped as well as tapped. The tab underline follows the pager offset continuously rather than snapping when the swipe settles, so it tracks your finger through the drag.

Unread badges on tab labels. Activity in a tab you are not looking at is visible without switching to it.

Live mesh status in the top bar — "3 people nearby", or "searching for people nearby" when the mesh is empty. On an off-grid app, whether anyone is actually in range is the most useful thing to surface.

Jump-to-latest is back. This existed in the original bitchat screen and was lost when the interface was rebuilt; on a long backlog there was no way back to the newest message except scrolling by hand.

Haptic feedback on send. Mesh delivery is not instant, so the tap itself needs to feel acknowledged.

Motion. Messages and conversation rows animate into place instead of appearing instantly, which matters most when rows reorder as a conversation becomes the most recent. Opening a conversation slides in and back slides out.

New launcher icon — an amber "O" whose tail turns it into a speech bubble.

Performance

This has to stay usable on low-end hardware, so the motion is deliberately cheap:

  • Only the visible tab is composed (beyondViewportPageCount = 0). Pre-composing neighbours would build three lists during a cold start.
  • Every animated property is alpha, scale or translation. No blur, no animated shadows, no animateContentSize inside a scrolling list.
  • Timings run 120–280ms and live in one file, so they are easy to dial down.

Fixed

The new tab indicator was missing fillMaxWidth() before wrapContentSize, which would have measured its offset against the wrong box and mispositioned the underline. Caught in review before release.

Please read before installing

The interface changes in this release have been compiled and reviewed, but not run on a device. No emulator or phone was available when it was built. Motion timings especially are judged by eye, and they have not been.

Everything below the interface is unchanged and has been verified on hardware:

  • Mesh networking, protocol and cryptography are untouched from upstream bitchat
  • OChat and an unmodified bitchat client discover each other and validate each other's signed announces
  • The BLE scanning fix from 1.0.1 is included

Also still untested against a real bitchat client: private chats and media (images, voice notes, files). Only the public mesh timeline has been verified end to end.

If something looks wrong, open an issue — that feedback is genuinely useful right now.

Notes

  • OChat installs alongside bitchat rather than replacing it, so you can run both and message between them.
  • Only English strings are rebranded; other locales still say "bitchat".
  • No external security review. Do not rely on this for sensitive communication.

Fork of bitchat-android, licensed under GPL-3.0.