Messaging

Goal: send your first message and see it confirmed, then add group chat and translation.

Send a message#

  1. Open the Messages tab → new conversation (or “send message” from a station detail — it fills the callsign).
  2. Enter the recipient callsign (with SSID; the addressee field is space-padded to 9 characters, a fixed APRS101 field) and your text.
  3. Watch the bubble: ✓ confirmed = the other client returned an ACK; spinner = waiting; ✗ = timed out.
  4. History is persisted and Chinese text works (UTF-8 / GBK decoded automatically).

A message frame looks like this (from afsk_test; after :: comes the addressee field, right-aligned and padded to 9 characters):

BG7LZQ-9>APALOC::BA7KSM   :Hello from APRSlocus

Two hard limits#

📏

The UI pre-checks both — remember them:

  • 67 characters — the APRS101 message-text cap. Most clients read beyond it; a few truncate or reject.
  • 512 bytes — the APRS-IS line cap. Over that the server may drop the whole frame, header included.
🈶

UTF-8 makes every non-ASCII character cost more than one byte, so long messages hit the 512-byte line first. The composer pre-checks both limits.

Group chat#

  1. Messages → new → Group → name it and pick members.
  2. The app generates a group callsign and invites everyone — later posts broadcast on it.
  3. Groups live in the same conversation list as direct chats, marked with an icon and unread badge.
⚠️

Group broadcast is unavailable in RF (TNC) mode and single messages are capped at 67 characters there too — the channel is shared and one broadcast occupies everyone’s frequency.

Two-way translation#

Path: Settings → Translation. Several engines, a free endpoint by default, no API key required.

  1. Translate to: pick the target language (Chinese by default).
  2. Engine: “auto” picks for you, or pin Google public / MyMemory / LibreTranslate / Baidu / custom. Public instances that need a key are highlighted; a self-hosted Libre can stay empty.
  3. Enable auto-translate: incoming messages show a translation next to the original; outgoing text can be translated before sending.
  4. Hit test translation to confirm the path works — results are validated, so a provider echoing the source back cannot fake success.
🔒

Translation requests leave from the app side only; native surfaces like home-screen widgets never see your API keys — they only receive snapshots the app pushes to them.