Skip to content

refactor(mob): align app with backend API and redesign UI - #155

Merged
mrsumanbiswas merged 1 commit into
CommandLineCoding:v0.3.0from
mrsumanbiswas:154-mob-refactor-and-upgrade
Oct 3, 2026
Merged

mrsumanbiswas merged 1 commit into
CommandLineCoding:v0.3.0from
mrsumanbiswas:154-mob-refactor-and-upgrade

Conversation

@mrsumanbiswas

Copy link
Copy Markdown
Member

Fix client/server mismatches:

  • Decode the {type, ciphertext} message envelope in one place, so plaintext group messages (type 0) no longer fail Signal decryption
  • Replace the app-level ping/pong watchdog (the server never sends pong) with protocol-level WebSocket pings
  • Refresh the access token before each WebSocket connect and share a single refresh request across the app, since refresh tokens rotate
  • Cap messages by UTF-8 bytes and size-check frames against the server's 4096-byte WebSocket limit
  • Stop re-uploading prekeys on every launch, refill one-time prekeys when the server reports fewer than 10, and allow sessions when a contact has none left
  • Show the full 60-digit safety number
  • Resolve the signed-in user ID lazily, send UTC paging cursors, wipe cached chats when a different account signs in, and match the server's registration validation

Use more of the API: message edit, contact verification, server key reset, group rename/leave/add/remove, groups without messages, group unread counts, mark all read, paged user search, older-message paging.

Redesign every screen on a shared glass design system (theme tokens and widgets in widgets/ui/) built on the Frost, Aura, Onyx and Nebula themes. Remove UI with no backend: stories, calls, phone number, forgot password, and the notification and chats & media stubs.

Bump the local DB schema to v2 (adds messages.edited_at).

Add protocol unit tests, a frame-size budget test, and a UI smoke test covering all four themes at two screen sizes.

Refs #154

Fix client/server mismatches:
- Decode the {type, ciphertext} message envelope in one place, so
  plaintext group messages (type 0) no longer fail Signal decryption
- Replace the app-level ping/pong watchdog (the server never sends
  pong) with protocol-level WebSocket pings
- Refresh the access token before each WebSocket connect and share a
  single refresh request across the app, since refresh tokens rotate
- Cap messages by UTF-8 bytes and size-check frames against the
  server's 4096-byte WebSocket limit
- Stop re-uploading prekeys on every launch, refill one-time prekeys
  when the server reports fewer than 10, and allow sessions when a
  contact has none left
- Show the full 60-digit safety number
- Resolve the signed-in user ID lazily, send UTC paging cursors, wipe
  cached chats when a different account signs in, and match the
  server's registration validation

Use more of the API: message edit, contact verification, server key
reset, group rename/leave/add/remove, groups without messages, group
unread counts, mark all read, paged user search, older-message paging.

Redesign every screen on a shared glass design system (theme tokens
and widgets in widgets/ui/) built on the Frost, Aura, Onyx and Nebula
themes. Remove UI with no backend: stories, calls, phone number,
forgot password, and the notification and chats & media stubs.

Bump the local DB schema to v2 (adds messages.edited_at).

Add protocol unit tests, a frame-size budget test, and a UI smoke
test covering all four themes at two screen sizes.

Refs CommandLineCoding#154
@mrsumanbiswas
mrsumanbiswas merged commit 1b33c53 into CommandLineCoding:v0.3.0 Oct 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant