echoIRCd/docs/ircv3.md

71 lines
3.3 KiB
Markdown

# IRCv3
echoIRCd implements a broad set of [IRCv3](https://ircv3.net) capabilities. A
client negotiates them with `CAP LS` / `CAP REQ`; `cap-notify` keeps the client
informed as they change. This page groups what's supported.
## Message tags & framing
| Capability | What it adds |
|------------|--------------|
| `message-tags` (+ `msgid`) | Arbitrary message tags, and a unique `msgid` on messages. |
| `server-time` | A `time` tag with the server's timestamp on each message. |
| `account-tag` | The sender's logged-in account as a tag. |
| `echo-message` | The server echoes your own `PRIVMSG`/`NOTICE` back to you. |
| `labeled-response` | Correlate a response batch to the command that caused it. |
| `batch` | Group related messages (history playback, netjoins, …). |
| `standard-replies` | Structured `FAIL` / `WARN` / `NOTE` replies. |
| `TAGMSG` | A tag-only message (e.g. typing / reactions) with no text body. |
## Membership & identity
| Capability | What it adds |
|------------|--------------|
| `extended-join` | Account and real name included in `JOIN`. |
| `account-notify` | Notified when a user logs in / out of an account. |
| `away-notify` | Notified when a user's away state changes. |
| `chghost` | Notified when a user's host/ident changes (instead of a rejoin). |
| `setname` | Change your real name in-session (`SETNAME`). |
| `multi-prefix` | See all of a member's status prefixes at once. |
| `userhost-in-names` | Full `nick!user@host` in `NAMES`. |
| `invite-notify` | Channel ops see invites to their channel. |
## Authentication
| Capability | What it adds |
|------------|--------------|
| `sasl` | `AUTHENTICATE` with **PLAIN** or **EXTERNAL** (client-cert / CertFP), relayed to the services server. See [linking](linking.md). |
| `draft/account-registration` | Create and confirm an account in-band with `REGISTER` / `VERIFY`. |
## History & messaging
| Capability | What it adds |
|------------|--------------|
| `draft/chathistory` | `CHATHISTORY` — fetch recent messages for a conversation. |
| `draft/message-redaction` | `REDACT` — delete/redact a prior message. |
| `draft/multiline` | Send one logical message spanning multiple lines. |
| `draft/read-marker` | `MARKREAD` — set/query the last-read point of a conversation. |
| `draft/relaymsg` | `RELAYMSG` — speak under a spoofed relay nick (for bridges). |
## Monitoring & notifications
`MONITOR` (+ `extended-monitor`), the legacy `WATCH` list, `SILENCE`, and
caller-id (`ACCEPT` + user mode `+g`) let clients track other users' presence and
control who may message them.
## Metadata & misc
| Capability / feature | What it adds |
|----------------------|--------------|
| `draft/metadata-2` | `METADATA` key/value data on users and channels. |
| `draft/extended-isupport` | Re-request the current ISUPPORT tokens on demand. |
| `draft/json-log` | Stream the server log to an oper as JSON. |
| `EXTJWT` | A short-lived, server-signed HS256 token a client can present elsewhere. |
| network icon / profile link | Advertise a network icon and per-account profile URLs. |
## ISUPPORT
On registration the server advertises its limits and features via `RPL_ISUPPORT`
(005), including `PREFIX`, `CHANMODES`, `EXTBAN` (see [modes](modes.md)), `WHOX`,
`CHATHISTORY`, `MONITOR` / `WATCH` / `SILENCE` sizes, `NICKLEN` / `CHANNELLEN`,
`CASEMAPPING=ascii`, `UTF8ONLY`, and `NETWORK`.