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

CapabilityStatusWhat HexDroid does
message-tagsgraduatedParses and propagates @tag=value metadata on incoming messages
server-timegraduatedDisplays accurate timestamps on all messages, including replayed history
echo-messagegraduatedUses server-echoed messages as authoritative sent events instead of local echo
labeled-responsegraduatedCorrelates command responses with their triggering requests
batchgraduatedProcesses 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
utf8onlygraduatedSignals UTF-8 capability; enforces UTF-8 output on utf8only networks
message-idsgraduatedTracks unique msgid tags for deduplication of chathistory replays
standard-repliesgraduatedParses FAIL/WARN/NOTE replies and surfaces them contextually per buffer
draft/extended-isupportdraftFetches 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.
stsgraduatedStrict 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/multilinedraftReceives 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

CapabilityStatusWhat HexDroid does
chathistorygraduatedServer-side message history. Recent messages are requested on join (LATEST); scrolling to the top of a buffer fetches the previous page (BEFORE) and keeps going as you scroll; on connect, TARGETS lists the buffers the server has stored history for and each one is caught up from your newest local message (AFTER), so a private message sent while you were offline is waiting for you rather than appearing only when the sender speaks again
draft/chathistorydraftSame 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/chathistory-targetsdraftThe batch the TARGETS reply arrives in. Channels in the list are skipped: they are caught up by the request sent when you rejoin, and re-opening a channel you deliberately closed would undo your own tidying up
draft/event-playbackdraftReplays channel state events (joins, modes) alongside message history
draft/read-markerdraftSyncs read position with the server for multi-client read-state tracking
soju.im/readvendorsoju-specific read-marker sync

Membership & Presence

CapabilityStatusWhat HexDroid does
account-notifygraduatedUpdates account name when a user logs in/out of services
away-notifygraduatedTracks away/back state for all channel members in real time; away users are dimmed in the member list
chghostgraduatedUpdates the user's displayed hostmask when it changes without a rejoin
extended-joingraduatedReceives account name and real name in JOIN; displayed in user info panel
multi-prefixgraduatedShows all channel prefixes a user holds (e.g. @+nick for op+voice)
userhost-in-namesgraduatedReceives full nick!user@host in 353 NAMES reply
invite-notifygraduatedNotifies you when another user is invited to a channel you're in
monitorgraduatedWatches for a list of nicks coming online/offline
extended-monitorgraduatedExtended MONITOR with account and away state in notifications. Both the graduated name and the legacy draft/extended-monitor are negotiated.
pre-awaygraduatedSends AWAY before 001 registration when configured as away

Messaging

CapabilityStatusWhat HexDroid does
account-taggraduatedSurfaces the sender's services account name as a per-message tag
saslgraduatedAuthenticates using PLAIN, SCRAM-SHA-256, or EXTERNAL during handshake
setnamegraduatedEnables /setname to change your real name on the fly without reconnecting
draft/typingdraftTyping indicators. Shows when someone in a channel or query is composing, and sends your own state as you type. Sent as the +typing client tag, so a server’s CLIENTTAGDENY policy is respected. Both halves are toggleable under Privacy; sending is off by default
draft/message-reactionsdraftReceives 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-redactiondraftMessage 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-tagdraftMessages 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 / taggraduatedUsers 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-contextdraftA 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-2draftUser 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-registrationdraftStandardized 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/relaymsgdraftRenders RELAYMSG-relayed messages from bridges (Discord, Matrix, Telegram) under the original sender’s name rather than the bridge bot’s
draft/channel-renamedraftFollows 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-namesdraftopt-out of implicit NAMES on join. Both the draft and graduated no-implicit-names names are negotiated.

Multimedia

CapabilityStatusWhat HexDroid does
draft/ICONdraftServer 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.

Push

CapabilityStatusWhat HexDroid does
draft/webpushdraftWeb Push notifications. The server can reach you with a highlight or private message while no connection is open, so the background connection stops being the only way to be notified. The endpoint comes from a UnifiedPush distributor on the device and is handed over with WEBPUSH REGISTER; the server’s application-server key is read from the VAPID ISUPPORT token. Off by default and requires a distributor app. See Notifications

Bouncer/Vendor

CapabilityStatusWhat HexDroid does
znc.in/server-time-isovendorParses ZNC's legacy server-time format for accurate timestamps on playback
znc.in/playbackvendorUses ZNC's playback module to request missed messages
soju.im/bouncer-networksvendorEnumerates per-network sessions from a single soju connection
soju.im/bouncer-networks-notifyvendorReceives push notifications when the soju network list changes
soju.im/no-implicit-namesvendorSuppresses the automatic 353 NAMES list on JOIN. Skips a full names re-download on every bouncer reconnect.
soju.im/webpushvendorsoju shipped Web Push before the draft existed and still advertises the vendored name; both are negotiated. See draft/webpush above
soju.im/FILEHOSTvendorFile 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, grouped by the category page each one lives on: Appearance, Chat & Messages, Media, Aliases, Highlights, IRC, Notifications, Logging, Privacy, History, File transfers and Backup. The search button in the settings top bar finds a setting by its name, its description, its category or a common alternate term, across every language the app ships rather than only the one on screen. Per-network options (identity, SASL, TLS client certificates, auto-join, encoding, IRCv3 capabilities) live in the network editor instead.

Appearance

SettingDescriptionDefault
ThemeDark, Light, Matrix, Terminal, or System defaultDark
UI fontOpen Sans, Inter, Monospace, or a custom font fileOpen Sans
Chat fontTypeface for the message area and input, set separately from the UI fontMonospace
Font sizeChat text size across all buffersSystem
My nick colourAuto, or pick a custom colour for your own nickAuto
Compact modeTighter row spacing in the message listOff
Network tabsShow networks as tabs instead of a treeOff
Network bar above inputMove the channel switcher to the bottom of the chatOff
LanguageApp language, or follow the system settingSystem
Chat font styleRegular, bold or italic for the message areaRegular
Chat line spacingSpace between one message and the next. Tight, Normal or Relaxed; text size is unchangedNormal
Font line heightSpace between the wrapped lines within a single message. Text size is unchangedNormal
Nicklist text sizeAdjusts the member list text on top of its pane width0
Intro tourReplay the walkthrough of the main screens and shortcuts-

Media Previews

SettingDescriptionDefault
Enable image & video previewsPreviews for images and YouTube links posted in chat. X/Twitter links resolve via fxtwitter.com. Previews are never automatic, you tap to loadOff
Wi-Fi onlyOnly load previews on Wi-Fi, to avoid using mobile dataOn

UI

SettingDescriptionDefault
Colourise nicksConsistent colour per nicknameOn
Enable mIRC coloursRender mIRC colour codesOn
Enable ANSI coloursRender ANSI/SGR escape sequencesOn
Shrink ASCII/ANSI artCollapse detected art blocks to fit the screen, with a tap to expandOn
Coloured channel eventsColour join/part/quit and mode linesOn
Show topic barChannel topic above the message listOn
Show timestampsTimestamp each messageOn
Timestamp formatJava pattern used for timestampsHH:mm:ss
Timestamp bracketsSquare, round, angle or curly brackets, a trailing dash, or none. A live sample shows the resultSquare
Timestamp colourGive timestamps their own colour from the picker, or leave them the same as the messageSame as the message
Nick bracketsBrackets around sender nicks: square, round, angle, curly, nick:, or noneAngle
Hide MOTD on connectSuppress the server message of the dayOff
Hide join/part/quit messagesSuppress join/part/quit events globallyOff
Hide away/back messagesSuppress away-notify eventsOff
Hide topic on entrySuppress the topic when joining a channelOff
Max scrollback linesLines per buffer kept in memory800

Landscape Sidebar Settings

SettingDescriptionDefault
Show network/chans by defaultOpen the buffer list automatically in landscapeOn
Show nicklist by defaultOpen the member list automatically in landscapeOn

Portrait Nicklist

SettingDescriptionDefault
Side pane nicklistShow the nicklist as a resizable side pane instead of a popup, so the toggle becomes a persistent show/hideOn

Aliases

SettingDescriptionDefault
Custom aliasesYour own slash commands, each a name and the command it expands to. Also managed with /alias list, /alias add <name> <expansion> and /alias remove <name>-

Highlights

SettingDescriptionDefault
Highlight on nickTreat mentions of your nick as highlightsOn
Extra highlight wordsAdditional trigger words, one per line, case-insensitive-

IRC

SettingDescriptionDefault
Show connection status notificationPersistent notification showing connection stateOn
Keep the connection aliveForeground service that maintains the connection in the backgroundOn
Auto-connect on startupConnect the networks marked auto-connect when the app opensOff
Reconnect after device restartBring the auto-connect networks back after a reboot, without opening the appOff
Wait for Wi-FiWith the above on, hold the reconnect until an unmetered network is up rather than connecting over mobile data. The connection status shows “Waiting for Wi-Fi” until then; opening the app connects immediatelyOff
Auto-reconnectReconnect after an unexpected disconnectionOn
Reconnect interval (seconds)How often to retry when the connection drops10
Rejoin on kickRejoin automatically after a kick. A second kick on the same channel within 60 seconds is skipped, to avoid loops against +i/+k/+b modesOff
Quit messageSent when you disconnectHexDroid IRC
Part messageSent when you leave a channelLeaving
Ignore listHide messages and DCC offers from specific nicks, per network-

Notifications

SettingDescriptionDefault
Enable notificationsMaster toggle for all notificationsOn
Highlight notificationsAlert when your nick or a highlight word is mentionedOn
Private message notificationsAlert on incoming private messagesOn
Push notificationsLet servers supporting the webpush extension notify you through a UnifiedPush distributor while no connection is open. Needs a distributor app installed; the switch is disabled until one is. Independent of “Keep the connection alive”, which you can then turn off if push is workingOff
Sound on highlightAudible alertOff
Vibrate on highlightHaptic feedbackOff
Vibration intensityLow, Medium, or HighMedium

Logging

SettingDescriptionDefault
Enable loggingWrite chat messages to log files on deviceOff
Log server bufferAlso log server and status messagesOff
Log folderInternal storage, or a custom folder chosen via SAFInternal storage
Raw protocol logShow every line sent and received in a Raw buffer per network. Passwords are hidden. For debuggingOff
Retention daysDelete logs older than N days. 0 keeps them forever14

Privacy

SettingDescriptionDefault
Send typing indicatorsLet others see when you are composing. Off by default for privacy, and only sent where the server permits the tagOff
Show others' typing indicatorsDisplay an indicator when someone else is composingOn

IRCv3 History

SettingDescriptionDefault
History fetch limitMessages requested per channel on join via CHATHISTORY LATEST. 0 disables it50
Load older messagesScrolling to the top of a buffer fetches the previous page from the server automatically, on top of the join-time request above. No setting: it appears only where the server supports it, and stops once the server reports nothing older-
Count fetched history as unreadMark replayed history as unreadOff
Trigger notifications for fetched historyNotify for replayed messagesOff

File transfers

SettingDescriptionDefault
Enable DCCMaster toggle for all DCC featuresOff
Use SDCC (TLS encryption)Wrap outgoing transfers in TLS via DCC SSEND. The remote client must also support SDCCOff
Download folderDownloads, or a custom folderDownloads
Incoming port min / maxPort range to listen on, for router forwarding5000 / 5010

Backup & Restore

ActionDescription
Export backupSave network configurations and app settings to a JSON file. Passwords and TLS certificates are not included
Import backupReplace 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.