Files
techircd/docs/IRCV3_FEATURES.md

123 lines
3.8 KiB
Markdown

# 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.