diff --git a/content/docs/commands.md b/content/docs/commands.md index f00ed43..7b07320 100644 --- a/content/docs/commands.md +++ b/content/docs/commands.md @@ -31,7 +31,7 @@ require `+o` and may be further restricted by your oper type (see [Operators](/d | `INVITE` / `UNINVITE` | Invite or revoke a pending invite | | `KNOCK` | Request an invite to an invite-only channel | | `CYCLE` | Part and immediately rejoin | -| `RENAME` | Rename a channel (op+) | +| `RENAME` | Rename a channel in place (op+) — see [Channel rename](/docs/ircv3#channel-rename) | | `TBAN` | Set a temporary, auto-expiring channel ban | | `NAMES` | List channel members | | `MODE` | Query or change channel/user modes | diff --git a/content/docs/ircv3.md b/content/docs/ircv3.md index 58a2ed5..17ac764 100644 --- a/content/docs/ircv3.md +++ b/content/docs/ircv3.md @@ -47,4 +47,55 @@ SASL mechanism list, enabled sub-features) to CAP-302 clients. | `draft/filehost` | Advertise an external file-host + signed upload links | | `no-implicit-names` | Suppress the automatic NAMES burst on JOIN | +## Notable capabilities + +A few of these do more than the one-line table can show. + +### Channel rename + +The `draft/channel-rename` capability lets a channel **operator** rename a channel in place, keeping +its membership, modes, topic, bans and timestamp: + +```text +RENAME <#old> <#new> [] +``` + +Members whose client negotiated the capability get a single `RENAME` message and stay in the channel +seamlessly. Members without it are moved with an automatic **PART + JOIN** (topic and names +preserved), so their client follows the channel too. A change that only alters the *case* of the name +needs no move at all. + +The server enforces a few rules: + +- you must be a channel **operator** (or an IRC operator); +- the channel **prefix** can't change (`#foo` → `&foo` is refused); +- the new name must be valid and **not already in use**, and can't be `CBAN`'d (operators bypass that); +- a **registered (`+r`) channel** is owned by services — a client can't rename it; ask ChanServ + (`/msg ChanServ RENAME <#channel> <#newname>`), which does it over the server link. Operators may + rename registered channels directly. + +Failures come back as standard replies, e.g. `FAIL RENAME CANNOT_RENAME …` or +`FAIL RENAME CHANNEL_NAME_IN_USE …`. + +### Message history + +`draft/chathistory` replays a channel's or DM's recent messages from the server's per-conversation +store (the `CHATHISTORY` command). With `draft/event-playback` the replay also carries +JOIN/PART/QUIT/NICK/MODE/TOPIC/KICK events, so a reconnecting client rebuilds the whole picture. + +### Multiline messages + +`draft/multiline` sends a message that spans several lines as one logical message, wrapped in a +`BATCH`; the advertised `max-bytes` / `max-lines` limits are configurable. + +### Web Push + +`draft/webpush` registers an RFC 8291 / 8292 subscription (the `WEBPUSH` command) so a highlight or +private message reaches a client whose tab is backgrounded or away — even when it isn't connected. + +### STS + +`sts` advertises a strict-transport-security policy on the plaintext port so capable clients upgrade +to TLS and pin it for a configured duration. + For SASL mechanisms, see [Accounts & SASL](/docs/accounts).