diff --git a/README.md b/README.md index 3677746..96e539e 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ You should make sure your manually installed local versions match that of [GitHu 1. Update the `spec` submodule. If the spec's a draft, confirm that it has the `work-in-progress: true` tag in the yaml header of the file. 2. List the spec on `_irc/index.md` 3. Add the spec to `_data/irc_versions.yml` - the name here is what's used in the support lists. Look at the `hide-if-no-support` and `hide-on-servers` options, they affect how the support tables are generated. Make sure you put it in the right place sorting-wise. -4. Add relevant numerics/capabilities/isupport tokens/... to `_data/registry.yml` +4. Add relevant numerics/capabilities/isupport tokens/... to `_data/registry.yml` and `_data/standard_replies_registry.yml` 5. Add the relevant support to the data files! ## Licenses diff --git a/_data/irc_versions.yml b/_data/irc_versions.yml index 9b991a1..e42a0f7 100644 --- a/_data/irc_versions.yml +++ b/_data/irc_versions.yml @@ -104,11 +104,11 @@ stable: link: /specs/extensions/message-tags.html caps: - message-tags - metadata3.2: - name: Metadata v3.2 - description: Metadata v3.2 [DEPRECATED] - link: /specs/core/metadata-3.2.html - deprecated: true + metadata: + name: Metadata + description: Metadata + link: /specs/extensions/metadata.html + draft: true monitor: name: Monitor description: Monitor diff --git a/_data/registry.yml b/_data/registry.yml index 618796c..3dc99a5 100644 --- a/_data/registry.yml +++ b/_data/registry.yml @@ -54,6 +54,41 @@ description: Indicates to a client that their monitor list is full specs: - monitor + - numeric: "760" + name: RPL_WHOISKEYVALUE + description: Provides user metadata within a `WHOIS` response + specs: + - metadata + - numeric: "761" + name: RPL_KEYVALUE + description: Provides user metadata as a response to a `METADATA` command, or to notify a user's metadata changed + specs: + - metadata + - numeric: "766" + name: RPL_KEYNOTSET + description: Indicates lack of te requested kind of user metadata as a response to a `METADATA` command, or a notification it was deleted + specs: + - metadata + - numeric: "770" + name: RPL_METADATASUBOK + description: Indicates success of the `METADATA SUB` command + specs: + - metadata + - numeric: "771" + name: RPL_METADATAUNSUBOK + description: Indicates success of the `METADATA UNSUB` command + specs: + - metadata + - numeric: "772" + name: RPL_METADATASUBS + description: Lists metadata keys a client is currently subscribed to, as a response to `METADATA SUBS` + specs: + - metadata + - numeric: "774" + name: RPL_METADATASYNCLATER + description: Indicates that metadata cannot currently be sent, as a reply to a `JOIN` or `METADATA SYNC` command. The client should request `METADATA SYNC` later + specs: + - metadata - numeric: "900" name: RPL_LOGGEDIN description: Indicates that the client is logged in @@ -182,10 +217,10 @@ specs: - message-tags description: Allows clients and servers to use tags more broadly - - name: metadata + - name: metadata-2 specs: - - metadata-3.2 - description: Lets clients store metadata about themselves with the server, for other clients to request and retrieve later. + - metadata + description: Lets clients store metadata about themselves with the server, for other clients to request, retrieve, and be notified later later. - name: monitor specs: - monitor @@ -349,7 +384,7 @@ description: Not defined by IRCv3 but extended to include usernames and hostnames. - name: METADATA specs: - - metadata-3.2 + - metadata description: Lets clients store metadata about themselves with the server, for other clients to request and retrieve later. - name: MONITOR specs: diff --git a/_data/standard_replies_registry.yml b/_data/standard_replies_registry.yml index 39d9d59..3576485 100644 --- a/_data/standard_replies_registry.yml +++ b/_data/standard_replies_registry.yml @@ -79,6 +79,51 @@ description: The client tried to remove messages from a channel they do not have access to, or does not exist specs: - message-redaction + - command: METADATA + code: INVALID_TARGET + description: The client requested metadata about a non-existent user + specs: + - metadata + - command: METADATA + code: KEY_INVALID + description: The client tried to get or set an invalid kind of metadata + specs: + - metadata + - command: METADATA + code: KEY_NO_PERMISSION + description: The client tried to get or set a kind of metadata it is not allowed to + specs: + - metadata + - command: METADATA + code: KEY_NOT_SET + description: The client tried to remove a metadata key that already does not exist + specs: + - metadata + - command: METADATA + code: LIMIT_REACHED + description: The client tried to set too many metadata items in a time period + specs: + - metadata + - command: METADATA + code: RATE_LIMITED + description: The client tried to set too many metadata items in a time period, and should retry in the given number of seconds + specs: + - metadata + - command: METADATA + code: SUBCOMMAND_INVALID + description: The client sent a `METADATA` command that was not understood + specs: + - metadata + - command: METADATA + code: TOO_MANY_SUBS + description: The client tried to subscribe to updates to too many kinds of metadata + specs: + - metadata + - command: METADATA + code: VALUE_INVALID + description: The client tried to set a metadata item to an invalid value + specs: + - metadata - command: REDACT code: REDACT_FORBIDDEN description: The client tried to remove messages from a channel they are not authorised to remove messages from diff --git a/_data/sw_clients.yml b/_data/sw_clients.yml index 7c676ed..c8f4dea 100644 --- a/_data/sw_clients.yml +++ b/_data/sw_clients.yml @@ -1252,7 +1252,6 @@ extended-join: invite-notify: labeled-response: - metadata: message-redaction: message-tags: monitor: diff --git a/_data/sw_libraries.yml b/_data/sw_libraries.yml index 3e5da6a..139a5db 100644 --- a/_data/sw_libraries.yml +++ b/_data/sw_libraries.yml @@ -184,7 +184,6 @@ extended-join: invite-notify: message-tags: - metadata: monitor: multi-prefix: sasl-3.1: @@ -211,7 +210,6 @@ echo-message: extended-join: invite-notify: - metadata: monitor: multi-prefix: sasl-3.1: diff --git a/_data/sw_servers.yml b/_data/sw_servers.yml index 62cae94..b5151e7 100644 --- a/_data/sw_servers.yml +++ b/_data/sw_servers.yml @@ -193,7 +193,6 @@ echo-message: extended-join: invite-notify: - metadata: monitor: multi-prefix: server-time: diff --git a/_irc/index.md b/_irc/index.md index 6d2836a..2a4b820 100644 --- a/_irc/index.md +++ b/_irc/index.md @@ -308,6 +308,15 @@ and do not themselves offer any user-facing features. Specific IRCv3 extensions will note their use of (and dependency on) message IDs. +## [Metadata]({{site.baseurl}}/specs/extensions/metadata.html) + +The **work-in-progress** [`metadata-2`]({{site.baseurl}}/specs/extensions/metadata.html) +specification is a framework to associate information to users. It succeeds +the v3.2 `METADATA` command, which was found to have issues related to rate-limiting +and excessive notifications, which made it impossible for servers in widespread +use to implement. + + ## [Monitor]({{site.baseurl}}/specs/extensions/monitor.html) The `MONITOR` command acts as a standardized way for clients to be alerted when @@ -410,15 +419,6 @@ implementing them. Generally, these extensions have either been superseded, or other major implementation issues have been discovered with them. -## [v3.2 Metadata]({{site.baseurl}}/specs/core/metadata-3.2.html) - -The v3.2 `METADATA` command was found to have issues related to rate-limiting -and excessive notifications, which made it impossible for servers in widespread -use to implement. A new Metadata specification is being written to address -these issues and overhaul the notification system, so we do not recommend -implementing this spec. - - ## [STARTTLS]({{site.baseurl}}/specs/deprecated/tls.html) STARTTLS allows clients to upgrade their plaintext connections to use TLS diff --git a/specs b/specs index 06bb648..92b2a27 160000 --- a/specs +++ b/specs @@ -1 +1 @@ -Subproject commit 06bb648a9ee7687239f912ca98c687c1d4291649 +Subproject commit 92b2a2736c728e79989397dc40df697a695a2a23