This page is the exhaustive list: every IRCv3 capability HexDroid negotiates, and every setting in the app. If you are looking for what HexDroid does rather than what it supports, start with Features.
IRCv3 capabilities
Every capability HexDroid negotiates during the connection handshake, and what it does with each one. All of them can be switched off individually per network under IRCv3 Capabilities in network settings. Badges: graduated = finalized spec · draft = draft spec · vendor = implementation-specific.
Core Message Infrastructure
| Capability | Status | What HexDroid does |
|---|---|---|
| message-tags | graduated | Parses and propagates @tag=value metadata on incoming messages |
| server-time | graduated | Displays accurate timestamps on all messages, including replayed history |
| echo-message | graduated | Uses server-echoed messages as authoritative sent events instead of local echo |
| labeled-response | graduated | Correlates command responses with their triggering requests |
| batch | graduated | Processes grouped message batches atomically. netsplit / netjoin batches collapse the quit/join flood into a single summary line (“Netsplit (a.net ↔ b.net) - N users affected”) while the nick list still updates per user |
| utf8only | graduated | Signals UTF-8 capability; enforces UTF-8 output on utf8only networks |
| message-ids | graduated | Tracks unique msgid tags for deduplication of chathistory replays |
| standard-replies | graduated | Parses FAIL/WARN/NOTE replies and surfaces them contextually per buffer |
| draft/extended-isupport | draft | Fetches server metadata before the connection finishes registering. HexDroid sends the ISUPPORT command as soon as the capability is acknowledged, so tokens like CLIENTTAGDENY, NETWORK and the filehost endpoint are known before the first message is sent rather than after. Replies arrive in a draft/isupport batch when batch is also enabled, and token withdrawals (-KEY) are honoured. |
| sts | graduated | Strict Transport Security. A plaintext connection that receives sts port= reconnects over TLS immediately; a TLS connection that receives sts duration= stores a per-host TLS-only policy that also disables the invalid-certificate override until it expires. Never requested with CAP REQ, observed only. A stale policy can be cleared from network settings. |
| draft/multiline | draft | Receives messages that exceed 512 bytes or contain line breaks as a single grouped message instead of one IRC line per visual line. Uses the draft/multiline BATCH type with the +draft/multiline-concat tag for flood-control splits. Both the draft and forward-compat graduated multiline are negotiated. |
History & Read State
| Capability | Status | What HexDroid does |
|---|---|---|
| chathistory | graduated | Requests recent message history on join |
| draft/chathistory | draft | Same as above for servers on the earlier draft spec. Request sizes respect the server's CHATHISTORY limit, and selectors fall back to a supported reference type per MSGREFTYPES. |
| draft/event-playback | draft | Replays channel state events (joins, modes) alongside message history |
| draft/read-marker | draft | Syncs read position with the server for multi-client read-state tracking |
| soju.im/read | vendor | soju-specific read-marker sync |
Membership & Presence
| Capability | Status | What HexDroid does |
|---|---|---|
| account-notify | graduated | Updates account name when a user logs in/out of services |
| away-notify | graduated | Tracks away/back state for all channel members in real time; away users are dimmed in the member list |
| chghost | graduated | Updates the user's displayed hostmask when it changes without a rejoin |
| extended-join | graduated | Receives account name and real name in JOIN; displayed in user info panel |
| multi-prefix | graduated | Shows all channel prefixes a user holds (e.g. @+nick for op+voice) |
| userhost-in-names | graduated | Receives full nick!user@host in 353 NAMES reply |
| invite-notify | graduated | Notifies you when another user is invited to a channel you're in |
| monitor | graduated | Watches for a list of nicks coming online/offline |
| extended-monitor | graduated | Extended MONITOR with account and away state in notifications. Both the graduated name and the legacy draft/extended-monitor are negotiated. |
| pre-away | graduated | Sends AWAY before 001 registration when configured as away |
Messaging
| Capability | Status | What HexDroid does |
|---|---|---|
| account-tag | graduated | Surfaces the sender's services account name as a per-message tag |
| sasl | graduated | Authenticates using PLAIN, SCRAM-SHA-256, or EXTERNAL during handshake |
| setname | graduated | Enables /setname to change your real name on the fly without reconnecting |
| draft/message-reactions | draft | Receives TAGMSG-based emoji reactions; displayed inline on messages. Removal is sent as both +draft/unreact (current react spec) and the older +draft/react-removed, and replies carry both +draft/reply and the ratified +reply tag. |
| draft/message-redaction | draft | Message deletion. Long-press one of your own messages › Delete message (or /redact <msgid>) sends REDACT; incoming redactions replace the message with a tombstone for everyone. Both the draft and forward-compat message-redaction names are negotiated. |
| draft/oper-tag | draft | Messages and notices from IRC operators are marked with an amber ★ before the nick. Reads the draft/oper tag and the eventual ratified oper name; rides message-tags, no extra negotiation. |
| bot mode / tag | graduated | Users flagged as bots are badged [bot] in the member list, on their messages, and in the nick tap sheet. Detected from the BOT ISUPPORT mode letter in WHO/WHOX flags and from the bot message tag; rides message-tags. |
| +draft/channel-context | draft | A private message carrying this client tag is annotated with the channel it relates to ([#channel] prefix), so a PM reply to something said in a channel keeps its context. Accepts the draft and ratified +channel-context forms. |
| draft/metadata-2 | draft | User and channel metadata. HexDroid subscribes to display-name, avatar, color, and status on connect: the display name appears beside the nick, a color tints the nick, and tapping a nick shows their avatar and status. A metadata editor (overflow menu › Edit metadata, or /metadata) sets your own keys - display name, status, colour, avatar and more - and reads or sets keys on another user or a channel. Deferred syncs (RPL_METADATASYNCLATER) are retried automatically. Requires the batch capability, per the spec. |
| draft/account-registration | draft | Standardized account creation without NickServ syntax. A guided Register account dialog (overflow menu) walks through register → email-verify → done, adapting its fields to the server's advertised flags (email required, custom account names), with an option to save the password for SASL auto-login. The /register and /verify commands drive the same REGISTER/VERIFY flow; a bare /verify <code> targets the account the server just asked to verify, and failure codes are translated into actionable hints. On servers without the cap, /register points at NickServ instead. |
| draft/relaymsg | draft | Renders RELAYMSG-relayed messages from bridges (Discord, Matrix, Telegram) under the original sender’s name rather than the bridge bot’s |
| draft/channel-rename | draft | Follows channel renames in real time. The buffer updates in place, keeping its scrollback and read state, so there is nothing to re-join |
| draft/no-implicit-names | draft | opt-out of implicit NAMES on join. Both the draft and graduated no-implicit-names names are negotiated. |
Multimedia
| Capability | Status | What HexDroid does |
|---|---|---|
| draft/ICON | draft | Server icon. When a server advertises ICON=<url> or draft/ICON=<url> (with optional {size} template), the icon is shown next to the network name on the Networks screen, in the sidebar, and in the network switcher. Fetched only when image previews are enabled, only over HTTPS, and never on proxied (Tor/SOCKS) profiles. |
Bouncer/Vendor
| Capability | Status | What HexDroid does |
|---|---|---|
| znc.in/server-time-iso | vendor | Parses ZNC's legacy server-time format for accurate timestamps on playback |
| znc.in/playback | vendor | Uses ZNC's playback module to request missed messages |
| soju.im/bouncer-networks | vendor | Enumerates per-network sessions from a single soju connection |
| soju.im/bouncer-networks-notify | vendor | Receives push notifications when the soju network list changes |
| soju.im/no-implicit-names | vendor | Suppresses the automatic 353 NAMES list on JOIN. Skips a full names re-download on every bouncer reconnect. |
| soju.im/FILEHOST | vendor | File uploads. When the server advertises an upload endpoint, an attach button appears in the chat input: pick a file, it uploads over HTTPS with your connection credentials, and the returned URL is placed in the input ready to send. Toggleable per network. |
Settings
Global settings in Settings, listed in the order the app shows them. Per-network options (identity, SASL, TLS client certificates, auto-join, encoding, IRCv3 capabilities) live in the network editor instead.
Appearance
| Setting | Description | Default |
|---|---|---|
| Theme | Dark, Light, Matrix, Terminal, or System default | Dark |
| UI font | Open Sans, Inter, Monospace, or a custom font file | Open Sans |
| Chat font | Typeface for the message area and input, set separately from the UI font | Monospace |
| Font size | Chat text size across all buffers | System |
| My nick colour | Auto, or pick a custom colour for your own nick | Auto |
| Compact mode | Tighter row spacing in the message list | Off |
| Network tabs | Show networks as tabs instead of a tree | Off |
| Network bar above input | Move the channel switcher to the bottom of the chat | Off |
| Intro tour | Replay the walkthrough of the main screens and shortcuts | - |
Media Previews
| Setting | Description | Default |
|---|---|---|
| Enable image & video previews | Previews for images and YouTube links posted in chat. X/Twitter links resolve via fxtwitter.com. Previews are never automatic, you tap to load | Off |
| Wi-Fi only | Only load previews on Wi-Fi, to avoid using mobile data | On |
UI
| Setting | Description | Default |
|---|---|---|
| Colourise nicks | Consistent colour per nickname | On |
| Enable mIRC colours | Render mIRC colour codes | On |
| Enable ANSI colours | Render ANSI/SGR escape sequences | On |
| Shrink ASCII/ANSI art | Collapse detected art blocks to fit the screen, with a tap to expand | On |
| Coloured channel events | Colour join/part/quit and mode lines | On |
| Show topic bar | Channel topic above the message list | On |
| Show timestamps | Timestamp each message | On |
| Timestamp format | Java pattern used for timestamps | HH:mm:ss |
| Hide MOTD on connect | Suppress the server message of the day | Off |
| Hide join/part/quit messages | Suppress join/part/quit events globally | Off |
| Hide away/back messages | Suppress away-notify events | Off |
| Hide topic on entry | Suppress the topic when joining a channel | Off |
| Max scrollback lines | Lines per buffer kept in memory | 800 |
Landscape Sidebar Settings
| Setting | Description | Default |
|---|---|---|
| Show network/chans by default | Open the buffer list automatically in landscape | On |
| Show nicklist by default | Open the member list automatically in landscape | On |
Portrait Nicklist
| Setting | Description | Default |
|---|---|---|
| Side pane nicklist | Show the nicklist as a resizable side pane instead of a popup, so the toggle becomes a persistent show/hide | On |
Highlights
| Setting | Description | Default |
|---|---|---|
| Highlight on nick | Treat mentions of your nick as highlights | On |
| Extra highlight words | Additional trigger words, one per line, case-insensitive | - |
IRC
| Setting | Description | Default |
|---|---|---|
| Show connection status notification | Persistent notification showing connection state | On |
| Keep the connection alive | Foreground service that maintains the connection in the background | On |
| Auto-reconnect | Reconnect after an unexpected disconnection | On |
| Reconnect interval (seconds) | How often to retry when the connection drops | 10 |
| Rejoin on kick | Rejoin automatically after a kick. A second kick on the same channel within 60 seconds is skipped, to avoid loops against +i/+k/+b modes | Off |
| Quit message | Sent when you disconnect | HexDroid IRC |
| Part message | Sent when you leave a channel | Leaving |
| Ignore list | Hide messages and DCC offers from specific nicks, per network | - |
Notifications
| Setting | Description | Default |
|---|---|---|
| Enable notifications | Master toggle for all notifications | On |
| Highlight notifications | Alert when your nick or a highlight word is mentioned | On |
| Private message notifications | Alert on incoming private messages | On |
| Sound on highlight | Audible alert | Off |
| Vibrate on highlight | Haptic feedback | Off |
| Vibration intensity | Low, Medium, or High | Medium |
Logging
| Setting | Description | Default |
|---|---|---|
| Enable logging | Write chat messages to log files on device | Off |
| Log server buffer | Also log server and status messages | Off |
| Log folder | Internal storage, or a custom folder chosen via SAF | Internal storage |
| Retention days | Delete logs older than N days. 0 keeps them forever | 14 |
Privacy
| Setting | Description | Default |
|---|---|---|
| Send typing indicators | Let others see when you are composing. Off by default for privacy, and only sent where the server permits the tag | Off |
| Show others' typing indicators | Display an indicator when someone else is composing | On |
IRCv3 History
| Setting | Description | Default |
|---|---|---|
| History fetch limit | Messages requested per channel on join via CHATHISTORY LATEST. 0 disables it | 50 |
| Count fetched history as unread | Mark replayed history as unread | Off |
| Trigger notifications for fetched history | Notify for replayed messages | Off |
File transfers
| Setting | Description | Default |
|---|---|---|
| Enable DCC | Master toggle for all DCC features | Off |
| Use SDCC (TLS encryption) | Wrap outgoing transfers in TLS via DCC SSEND. The remote client must also support SDCC | Off |
| Download folder | Downloads, or a custom folder | Downloads |
| Incoming port min / max | Port range to listen on, for router forwarding | 5000 / 5010 |
Backup & Restore
| Action | Description |
|---|---|
| Export backup | Save network configurations and app settings to a JSON file. Passwords and TLS certificates are not included |
| Import backup | Replace all current networks and settings with those in a backup file. Passwords must be re-entered |
DCC send mode (Active, Passive, or Auto) is chosen on the Transfers screen rather than in Settings.