3.8 KiB
3.8 KiB
TechIRCd IRCv3 Features
✅ Implemented IRCv3 Features
Core Capability Negotiation
- CAP LS - List available capabilities
- CAP LIST - List enabled capabilities
- CAP REQ - Request capabilities
- CAP ACK/NAK - Acknowledge/reject capability requests
- CAP END - End capability negotiation
Supported Capabilities
IRCv3.1 Base
- ✅ sasl - SASL authentication (PLAIN mechanism)
- ✅ multi-prefix - Multiple channel prefixes (~@%+)
- ✅ away-notify - Away state change notifications
- ✅ account-notify - Account login/logout notifications
- ✅ extended-join - JOIN with account and real name
IRCv3.2 Extensions
- ✅ server-time - Timestamp tags on messages
- ✅ userhost-in-names - Full hostmasks in NAMES
- ✅ monitor-notify - MONITOR command for presence
- ✅ account-tag - Account tags on messages
- ✅ message-tags - IRCv3 message tag framework
IRCv3.3 Features
- ✅ echo-message - Echo sent messages back to sender
- ✅ chghost - Host change notifications
- ✅ invite-notify - Channel invite notifications
- ✅ batch - Message batching support
🚀 Usage Examples
Basic Capability Negotiation
Client: CAP LS 302
Server: :server CAP * LS :account-notify away-notify extended-join multi-prefix sasl server-time userhost-in-names account-tag message-tags echo-message batch chghost invite-notify monitor-notify
Client: CAP REQ :server-time message-tags sasl
Server: :server CAP * ACK :server-time message-tags sasl
Client: CAP END
SASL Authentication
Client: CAP REQ :sasl
Server: :server CAP * ACK :sasl
Client: AUTHENTICATE PLAIN
Server: AUTHENTICATE +
Client: AUTHENTICATE dXNlcm5hbWU6cGFzc3dvcmQ=
Server: :server 903 * :SASL authentication successful
Client: CAP END
Server-Time Tags
@time=2025-08-28T17:01:49.123Z :nick!user@host PRIVMSG #channel :Hello!
Account Tags
@account=alice;time=2025-08-28T17:01:49.123Z :alice!user@host PRIVMSG #channel :Hello!
Extended JOIN
:nick!user@host JOIN #channel alice :Real Name
MONITOR Command
Client: MONITOR + alice,bob,charlie
Server: :server 730 nick :alice,bob
Server: :server 731 nick :charlie
Client: MONITOR L
Server: :server 732 nick :alice,bob,charlie
Server: :server 733 nick :End of MONITOR list
🔧 Configuration
IRCv3 features are automatically available when clients request them through CAP negotiation. No special server configuration required.
SASL Accounts
Currently supports simple username/password authentication. Edit the authenticateUser() function in commands.go to integrate with your authentication system.
🎯 Advanced Features
Message Tags
TechIRCd automatically adds appropriate tags based on client capabilities:
time- Server timestamp (if server-time enabled)account- User account name (if logged in and account-tag enabled)
Multi-Prefix Support
Shows all user channel modes: ~@%+nick for Owner/Op/Halfop/Voice
Echo Message
When enabled, clients receive copies of their own messages, useful for multi-device synchronization.
🔮 Future IRCv3 Extensions
Planned for future releases:
- draft/chathistory - Message history replay
- draft/resume - Connection state resumption
- labeled-response - Request/response correlation
- standard-replies - Standardized error responses
💡 Client Compatibility
TechIRCd's IRCv3 implementation is compatible with:
- HexChat - Full feature support
- IRCCloud - Full feature support
- Textual - Full feature support
- WeeChat - Full feature support
- KiwiIRC - Full feature support
- IRCv3-compliant bots - Full API support
Legacy IRC clients without IRCv3 support continue to work normally without any IRCv3 features.