Rumo media delivery validation

Option 1 implemented: inline compression progress, a real time estimate, Meta-safe output, and WhatsApp-style durable offline delivery for image and video attachments only.

✓ iOS simulator passed ✓ Android emulator passed ✓ 64 focused tests passed ✓ GitHub CI passed PR #23
5 MBMeta image ceiling
16 MBMeta video ceiling
4.5 MBRumo image target
15.0 MBRumo video target

Simulator evidence

iOS · iPhone 17 Pro Max

30.7 MB source → 9.5 MB ready file

iOS compression progress at 42 percent
Compressing · 42% · about 8 seconds
iOS video ready and saved locally
Ready · durable offline outbox

Android · API 36 emulator

30.7 MB source → 9.1 MB ready file

Android compression progress at 42 percent
Compressing · Send disabled
Android video ready and saved locally
Ready · upload on reconnect

What the user experiences

  • The picker closes immediately and an inline media card appears.
  • The card shows measured progress and an estimated time remaining.
  • The user can keep typing, but Send stays disabled until the file is safe.
  • When complete, the card shows a Ready check and the final file size.
  • Prepared image/video bytes are copied from temporary picker storage to the app's durable documents outbox.
  • The send payload is persisted across restart and cache eviction.
  • Connectivity restoration triggers automatic retry using the same echo ID, preventing duplicate messages.
  • The staged file is deleted only after the server confirms upload.

Failure analysis