Chat tile
The Chat tile is mission-scoped text chat. It’s a simple surface compared to the voice side — everyone in the mission sees every message, threads are flat (reply-to, not nested), and the entire history is searchable and replayable.
What you see
Each row in the chat stream shows:
- Avatar + sender name — the sender’s asset chip with callsign if set.
- Message text — plain text plus a truncated reply-to indicator if this message replies to another.
- Timestamp — local time; relative labels (“just now”) for recent messages.
Consecutive messages from the same sender within 2 minutes are grouped — the avatar + name + timestamp only show on the first message; subsequent ones just indent for visual cleanliness.
Sending a message
Type in the composer at the bottom and press Enter to send. Shift+Enter inserts a newline.
- Plain text only.
- No markdown, no attachments, no emoji picker (use native OS emoji input).
- No typing indicators for other participants.
Replying to a message
Click the reply arrow on any message. The composer sticks the parent message as a context bar above it. Type your reply and send — the message lands as a normal row but with a clickable truncated parent preview.
Clicking the preview scrolls the chat to the parent message.
Deleting a message
Authors can delete their own messages:
- Click the trash icon on your message.
- Confirm.
- The message soft-deletes (Firestore doc updates
deleted: true— the row disappears from everyone’s view).
Commanders / admins cannot delete others’ messages from the chat tile UI.
Unread badge
The chat tile header shows a numeric badge when there are messages below your current scroll position. When you scroll to the bottom, the badge clears. Unread count is tracked in memory — it resets on tile unmount.
Persistence
- Messages live in Firestore at
missions/{missionId}/chat/{messageId}. - Reading is via a real-time listener so anyone in the mission sees new messages appear within a second of send.
- Sent via
api.sendChatMessage(); deleted via a Firestore doc update.
System messages
A system message type exists (for automated events like “mission started”
or “team joined”) but the current build doesn’t surface UI for writers to
produce them. System messages render with a different style if they arrive
— treat this as aspirational for now.
No search / filter
The tile doesn’t have a search box. For finding old messages, use the timeline tile — it indexes chat as one of its event types and supports free-text search.
Known limitations
- No edits. Soft-delete + repost is the only way to change.
- No reactions / emoji responses.
- No files / images attached to chat (use flags + attachments for media).
- No commander-delete of others’ messages.
- No @mentions with notifications.
Related
- Timeline tile — searchable history including chat.
- Comms-PTT tile — voice-side equivalent.
- PTT & comms — the floating PTT widget.