IRCv3 Support

Comprehensive implementation status of IRC protocol features in repartee, covering RFC 2812 core protocol and IRCv3 capability extensions.

Capability Negotiation

repartee implements the full IRCv3 capability negotiation framework including CAP LS 302 with multiline parsing, CAP REQ/ACK/NAK, and CAP NEW/DEL for runtime capability changes.

FeatureStatusNotes
CAP LS 302DoneMultiline parsing, field3/field4 handling
CAP REQ/ACK/NAKDoneRequest + detect acceptance
CAP ENDDoneProperly closes negotiation
CAP NEW/DELDoneRuntime capability changes via cap-notify

Tier 1 -- Must Have

CapabilityStatusSpecNotes
multi-prefixDone3.1All mode prefixes per user in NAMES
extended-joinDone3.1JOIN includes account + realname
server-timeDone3.2@time tag used as message timestamp
account-tagDone3.2User account in message tags
cap-notifyDone3.2Server-side capability change notifications
away-notifyDone3.1Real-time away status changes
account-notifyDone3.1Account login/logout notifications
chghostDone3.2Real-time ident/hostname changes
SASL EXTERNALDone3.1CertFP-based authentication via client TLS certificate
SASL SCRAM-SHA-256Done3.1RFC 5802/7677 challenge-response with server signature verification
SASL mechanism selectionDone--Auto-detect best: EXTERNAL > SCRAM-SHA-256 > PLAIN

Tier 2 -- High Value

CapabilityStatusSpecNotes
echo-messageDone3.2Server echoes own messages back; local echo suppressed
invite-notifyDone3.2Channel members see invites
batchDone3.2NETSPLIT/NETJOIN produce summary messages
userhost-in-namesDone3.2nick!user@host parsing in NAMES
message-tagsDone3.2Tags extracted, stored in buffer and DB

Tier 3 -- Nice to Have

CapabilityStatusNotes
monitorNot StartedNick online/offline tracking
labeled-responseNot StartedMatch responses to requests
msgidNot StartedMessage deduplication IDs
replyNot StartedMessage threading via +draft/reply
setnameNot StartedReal-time realname changes

RFC 2812 -- Core Protocol

Connection Registration

FeatureStatusNotes
PASSDoneServer password sent before registration
NICKDoneNickname setting + ERR_NICKNAMEINUSE retry
USERDoneUsername/realname registration
OPERDoneIRC operator login
QUITDoneDisconnect with message
USER MODEDone+i, +w, etc.

Channel Operations

FeatureStatusNotes
JOINDoneMultiple channels, keys
PARTDoneLeave with reason
CHANNEL MODEDone+beiklmnostRIv and prefix modes
TOPICDoneGet/set, RPL_TOPIC/RPL_TOPICWHOTIME
NAMESDoneRPL_NAMREPLY with prefix parsing, multi-prefix, userhost-in-names
LISTDoneChannel listing
INVITEDoneInvite user + notification
KICKDoneKick with reason

Messaging & Queries

FeatureStatusNotes
PRIVMSGDoneChannel + private, CTCP ACTION
NOTICEDoneServer + user notices
WHO / WHOXDoneBasic WHO (352) + WHOX (354) with account tracking
WHOISDoneFull multi-line WHOIS display
WHOWASDoneOffline user lookup
AWAYDoneSet/unset + RPL_AWAY display
WALLOPSDoneWall message display

CTCP

FeatureStatusNotes
ACTIONDoneSend + receive
VERSIONDoneAuto-response
PINGDoneAuto-response
TIMEDoneAuto-response
FINGERDoneAuto-response
SOURCEDoneAuto-response

ISUPPORT (005)

FeatureStatusNotes
Token collectionDoneRaw tokens stored on Connection
Structured parsingDonePREFIX, CHANMODES, NETWORK, STATUSMSG, WHOX, EXTBAN, CASEMAPPING
Behavior adaptationDoneUpdated on each RPL_ISUPPORT, NETWORK drives label

Custom Extensions

FeatureStatusNotes
WHOXDoneExtended WHO with field selectors, token matching, account field. Auto-detect via ISUPPORT WHOX token. Auto-WHO on channel join populates NickEntry.
ExtbanDone$a:account -- account-based bans/exempts/invites. /ban -a account shorthand. ISUPPORT EXTBAN awareness.

Skipped

CapabilityReason
metadata / metadata-notifyRarely deployed
stsStrict Transport Security -- out of scope for now
zcryptNiche, rarely used
Note: All new protocol handling includes tests. Message tags propagate to the scripting API and storage layer. The capability negotiation framework is extensible for future additions.