diff --git a/libpurple/protocols/ircv3/purpleircv3capabilities.h b/libpurple/protocols/ircv3/purpleircv3capabilities.h
--- a/libpurple/protocols/ircv3/purpleircv3capabilities.h
+++ b/libpurple/protocols/ircv3/purpleircv3capabilities.h
@@ -64,7 +64,7 @@ G_DECLARE_FINAL_TYPE(PurpleIRCv3Capabili
  *
  * Dynamically registers the PurpleIRCv3Capabilities type.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL void purple_ircv3_capabilities_register(GPluginNativePlugin *plugin);
 
@@ -82,7 +82,7 @@ G_GNUC_INTERNAL gboolean purple_ircv3_ca
  *
  * Returns: (transfer none): The connection instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 PurpleIRCv3Connection *purple_ircv3_capabilities_get_connection(PurpleIRCv3Capabilities *capabilities);
@@ -96,7 +96,7 @@ PurpleIRCv3Connection *purple_ircv3_capa
  * `::ack` and `::nak` signals which will contain the contents of @capability
  * that was passed in here.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_capabilities_request(PurpleIRCv3Capabilities *capabilities, const char *capability);
@@ -113,7 +113,7 @@ void purple_ircv3_capabilities_request(P
  *
  * Returns: The value of the capability named @name.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 const char *purple_ircv3_capabilities_lookup(PurpleIRCv3Capabilities *capabilities, const char *name, gboolean *found);
@@ -134,7 +134,7 @@ const char *purple_ircv3_capabilities_lo
  *
  * Returns: %TRUE if @name was found and requested, %FALSE otherwise.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 gboolean purple_ircv3_capabilities_lookup_and_request(PurpleIRCv3Capabilities *capabilities, const char *name);
@@ -147,7 +147,7 @@ gboolean purple_ircv3_capabilities_looku
  * call of `CAP END` until all capability negotiation has completed. This is
  * necessary for SASL and may be necessary for other capabilities as well.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_capabilities_add_wait(PurpleIRCv3Capabilities *capabilities);
@@ -162,7 +162,7 @@ void purple_ircv3_capabilities_add_wait(
  * This is necessary for SASL and may be necessary for other capabilities as
  * well.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_capabilities_remove_wait(PurpleIRCv3Capabilities *capabilities);
# HG changeset patch
# Node ID db4b0bcad655
# Parent  db2718ed7640
diff --git a/libpurple/protocols/ircv3/purpleircv3capabilities.c b/libpurple/protocols/ircv3/purpleircv3capabilities.c
--- a/libpurple/protocols/ircv3/purpleircv3capabilities.c
+++ b/libpurple/protocols/ircv3/purpleircv3capabilities.c
@@ -251,7 +251,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 * The PurpleIRCv3Connection object that this capabilities was created
 	 * with.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_CONNECTION] = g_param_spec_object(
 		"connection", "connection",
@@ -271,7 +271,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 * For dynamically added capabilities see the `added` and `removed`
 	 * signals.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_READY] = g_signal_new_class_handler(
 		"ready",
@@ -294,7 +294,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 *
 	 * The value of @capability will be the same as the one that was requested.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_ACK] = g_signal_new_class_handler(
 		"ack",
@@ -318,7 +318,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 *
 	 * The value of @capability will be the same as the one that was requested.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_NAK] = g_signal_new_class_handler(
 		"nak",
@@ -339,7 +339,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 * Emitted when all of the requested capabilities have been either ack'd or
 	 * nak'd by the server.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_DONE] = g_signal_new_class_handler(
 		"done",
@@ -365,7 +365,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 * you can call #purple_ircv3_capabilities_lookup to see if the
 	 * capabilities you're interested in have been added.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_NEW] = g_signal_new_class_handler(
 		"new",
@@ -392,7 +392,7 @@ purple_ircv3_capabilities_class_init(Pur
 	 * #purple_ircv3_capabilities_lookup to see if the capabilities you're
 	 * interested in have been removed.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_DEL] = g_signal_new_class_handler(
 		"del",
diff --git a/libpurple/protocols/ircv3/purpleircv3connection.h b/libpurple/protocols/ircv3/purpleircv3connection.h
--- a/libpurple/protocols/ircv3/purpleircv3connection.h
+++ b/libpurple/protocols/ircv3/purpleircv3connection.h
@@ -63,7 +63,7 @@ struct _PurpleIRCv3ConnectionClass {
  *
  * Registers the dynamic type using @plugin.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL void purple_ircv3_connection_register(GPluginNativePlugin *plugin);
 
@@ -85,7 +85,7 @@ G_GNUC_INTERNAL void purple_ircv3_connec
  * Returns: %TRUE if the request was handled and the message should not be
  *          echoed, otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL gboolean purple_ircv3_connection_emit_ctcp_request(PurpleIRCv3Connection *connection, PurpleConversation *conversation, PurpleMessage *message, const char *command, const char *parameters);
 
@@ -107,7 +107,7 @@ G_GNUC_INTERNAL gboolean purple_ircv3_co
  * Returns: %TRUE if the request was handled and the message should not be
  *          echoed, otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL gboolean purple_ircv3_connection_emit_ctcp_response(PurpleIRCv3Connection *connection, PurpleConversation *conversation, PurpleMessage *message, const char *command, const char *parameters);
 
@@ -142,7 +142,7 @@ PurpleIRCv3Capabilities *purple_ircv3_co
  *
  * Returns: %TRUE if registration has been completed otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 gboolean purple_ircv3_connection_get_registered(PurpleIRCv3Connection *connection);
@@ -154,7 +154,7 @@ gboolean purple_ircv3_connection_get_reg
  *
  * Adds a message to the status conversation/window for @connection.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_connection_add_status_message(PurpleIRCv3Connection *connection, PurpleIRCv3Message *message);
@@ -171,7 +171,7 @@ void purple_ircv3_connection_add_status_
  *
  * Returns: %TRUE if @id is a channel otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 gboolean purple_ircv3_connection_is_channel(PurpleIRCv3Connection *connection, const char *id);
@@ -191,7 +191,7 @@ gboolean purple_ircv3_connection_is_chan
  *
  * Returns: (transfer none) (nullable): The conversation.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 PurpleConversation *purple_ircv3_connection_find_or_create_conversation(PurpleIRCv3Connection *connection, const char *id);
@@ -212,7 +212,7 @@ PurpleConversation *purple_ircv3_connect
  *
  * Returns: (transfer none) (nullable): The contact.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 PurpleContact *purple_ircv3_connection_find_or_create_contact(PurpleIRCv3Connection *connection, const char *nick);
diff --git a/libpurple/protocols/ircv3/purpleircv3connection.c b/libpurple/protocols/ircv3/purpleircv3connection.c
--- a/libpurple/protocols/ircv3/purpleircv3connection.c
+++ b/libpurple/protocols/ircv3/purpleircv3connection.c
@@ -606,7 +606,7 @@ purple_ircv3_connection_class_init(Purpl
 	 * This is created during registration of the connection and is useful for
 	 * troubleshooting or just reporting them to end users.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_CAPABILITIES] = g_param_spec_object(
 		"capabilities", "capabilities",
@@ -620,7 +620,7 @@ purple_ircv3_connection_class_init(Purpl
 	 * Whether or not the connection has finished the registration portion of
 	 * the connection.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_REGISTERED] = g_param_spec_boolean(
 		"registered", "registered",
@@ -640,7 +640,7 @@ purple_ircv3_connection_class_init(Purpl
 	 * completed. Plugins can use this to perform additional actions before
 	 * any channels are auto joined or similar.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_REGISTRATION_COMPLETE] = g_signal_new_class_handler(
 		"registration-complete",
@@ -670,7 +670,7 @@ purple_ircv3_connection_class_init(Purpl
 	 * command has its message contents replaced with just the CTCP parameters
 	 * and sets the [property@Message:action] to %TRUE and then returns %TRUE.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_CTCP_REQUEST] = g_signal_new_class_handler(
 		"ctcp-request",
@@ -703,7 +703,7 @@ purple_ircv3_connection_class_init(Purpl
 	 * Handlers may modify @conversation or @message to depending on their
 	 * needs.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	signals[SIG_CTCP_RESPONSE] = g_signal_new_class_handler(
 		"ctcp-response",
diff --git a/libpurple/protocols/ircv3/purpleircv3constants.h b/libpurple/protocols/ircv3/purpleircv3constants.h
--- a/libpurple/protocols/ircv3/purpleircv3constants.h
+++ b/libpurple/protocols/ircv3/purpleircv3constants.h
@@ -33,7 +33,7 @@
  *
  * A constant representing the CTCP ACTION command.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_CTCP_ACTION ("ACTION") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -42,7 +42,7 @@
  *
  * The delimiter used for CTCP messages.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_CTCP_DELIMITER (0x1) PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -51,7 +51,7 @@
  *
  * A constant representing the CTCP VERSION command.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_CTCP_VERSION ("VERSION") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -60,7 +60,7 @@
  *
  * A constant for the IRC %NICKLOCKED error.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_ERR_NICKLOCKED ("902") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -69,7 +69,7 @@
  *
  * A constant for the IRC %SASLABORTED error.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_ERR_SASLABORTED ("906") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -78,7 +78,7 @@
  *
  * A constant for the IRC %SASLALREADY error.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_ERR_SASLALREADY ("907") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -87,7 +87,7 @@
  *
  * A constant for the IRC %SASLFAIL error.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_ERR_SASLFAIL ("904") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -96,7 +96,7 @@
  *
  * A constant for the IRC %SASLTOOLONG error.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_ERR_SASLTOOLONG ("905") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -105,7 +105,7 @@
  *
  * A constant for the IRC %AUTHENTICATE message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_AUTHENTICATE ("AUTHENTICATE") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -114,7 +114,7 @@
  *
  * A constant for the IRC %CAP message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_CAP ("CAP") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -123,7 +123,7 @@
  *
  * A constant for the IRC %JOIN message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_JOIN ("JOIN") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -132,7 +132,7 @@
  *
  * A constant for the IRC %NOTICE message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_NOTICE ("NOTICE") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -141,7 +141,7 @@
  *
  * A constant for the IRC %PING message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_PING ("PING") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -150,7 +150,7 @@
  *
  * A constant for the IRC %PRIVMSG message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_PRIVMSG ("PRIVMSG") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -159,7 +159,7 @@
  *
  * A constant for the IRC %TOPIC message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_MSG_TOPIC ("TOPIC") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -168,7 +168,7 @@
  *
  * A constant for the IRC %CREATED reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_CREATED ("003") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -177,7 +177,7 @@
  *
  * A constant for the IRC %ENDOFMOTD reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_ENDOFMOTD ("376") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -186,7 +186,7 @@
  *
  * A constant for the IRC %LOGGEDIN reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LOGGEDIN ("900") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -195,7 +195,7 @@
  *
  * A constant for the IRC %LOGGEDOUT reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LOGGEDOUT ("901") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -204,7 +204,7 @@
  *
  * A constant for the IRC %LUSERCHANNELS reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LUSERCHANNELS ("254") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -213,7 +213,7 @@
  *
  * A constant for the IRC %LUSERCLIENT reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LUSERCLIENT ("251") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -222,7 +222,7 @@
  *
  * A constant for the IRC %LUSERME reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LUSERME ("255") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -231,7 +231,7 @@
  *
  * A constant for the IRC %LUSEROP reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LUSEROP ("252") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -240,7 +240,7 @@
  *
  * A constant for the IRC %LUSERUNKNOWN reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_LUSERUNKNOWN ("253") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -249,7 +249,7 @@
  *
  * A constant for the IRC %MYINFO reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_MYINFO ("004") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -258,7 +258,7 @@
  *
  * A constant for the IRC %MOTD reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_MOTD ("372") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -267,7 +267,7 @@
  *
  * A constant for the IRC %MOTDSTART reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_MOTDSTART ("375") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -276,7 +276,7 @@
  *
  * A constant for the IRC %NOTOPIC reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_NOTOPIC ("331") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -285,7 +285,7 @@
  *
  * A constant for the IRC %SASLMECHS reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_SASLMECHS ("908") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -294,7 +294,7 @@
  *
  * A constant for the IRC %SASLSUCCESS reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_SASLSUCCESS ("903") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -303,7 +303,7 @@
  *
  * A constant for the IRC %TOPIC reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_TOPIC ("332") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -312,7 +312,7 @@
  *
  * A constant for the IRC %WELCOME reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_WELCOME ("001") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
@@ -321,7 +321,7 @@
  *
  * A constant for the IRC %YOURHOST reply.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_RPL_YOURHOST ("002") PURPLE_IRCV3_AVAILABLE_MACRO_IN_3_0
 
diff --git a/libpurple/protocols/ircv3/purpleircv3ctcp.h b/libpurple/protocols/ircv3/purpleircv3ctcp.h
--- a/libpurple/protocols/ircv3/purpleircv3ctcp.h
+++ b/libpurple/protocols/ircv3/purpleircv3ctcp.h
@@ -47,7 +47,7 @@ G_BEGIN_DECLS
  *
  * Returns: %TRUE if the message was a CTCP message and %FALSE otherwise.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL
 gboolean purple_ircv3_ctcp_handle(PurpleIRCv3Connection *connection, PurpleConversation *conversation, PurpleMessage *message);
@@ -58,7 +58,7 @@ gboolean purple_ircv3_ctcp_handle(Purple
  *
  * Adds handlers for the CTCP commands that we support directly.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL
 void purple_ircv3_ctcp_add_default_handlers(PurpleIRCv3Connection *connection);
diff --git a/libpurple/protocols/ircv3/purpleircv3formatting.h b/libpurple/protocols/ircv3/purpleircv3formatting.h
--- a/libpurple/protocols/ircv3/purpleircv3formatting.h
+++ b/libpurple/protocols/ircv3/purpleircv3formatting.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * Returns: (transfer full) (nullable): The result of stripping @text.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 char *purple_ircv3_formatting_strip(const char *text);
diff --git a/libpurple/protocols/ircv3/purpleircv3message.h b/libpurple/protocols/ircv3/purpleircv3message.h
--- a/libpurple/protocols/ircv3/purpleircv3message.h
+++ b/libpurple/protocols/ircv3/purpleircv3message.h
@@ -53,7 +53,7 @@ G_DECLARE_FINAL_TYPE(PurpleIRCv3Message,
  *
  * Returns: (transfer full): The new message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 PurpleIRCv3Message *purple_ircv3_message_new(const char *command);
@@ -66,7 +66,7 @@ PurpleIRCv3Message *purple_ircv3_message
  *
  * Returns: The command of the message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 const char *purple_ircv3_message_get_command(PurpleIRCv3Message *message);
@@ -78,7 +78,7 @@ const char *purple_ircv3_message_get_com
  *
  * Sets the command for @message to @command.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_message_set_command(PurpleIRCv3Message *message, const char *command);
@@ -91,7 +91,7 @@ void purple_ircv3_message_set_command(Pu
  *
  * Returns: (transfer none) (nullable): The parameters from @message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 GStrv purple_ircv3_message_get_params(PurpleIRCv3Message *message);
@@ -103,7 +103,7 @@ GStrv purple_ircv3_message_get_params(Pu
  *
  * Sets the parameters of @message to @params.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_message_set_params(PurpleIRCv3Message *message, GStrv params);
@@ -116,7 +116,7 @@ void purple_ircv3_message_set_params(Pur
  *
  * Returns: (nullable): The source of @message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 const char *purple_ircv3_message_get_source(PurpleIRCv3Message *message);
@@ -128,7 +128,7 @@ const char *purple_ircv3_message_get_sou
  *
  * Sets the source of @message to @source.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_message_set_source(PurpleIRCv3Message *message, const char *source);
@@ -142,7 +142,7 @@ void purple_ircv3_message_set_source(Pur
  * Returns: (transfer none) (element-type utf8 utf8) (nullable): The tags from
  *          @message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 GHashTable *purple_ircv3_message_get_tags(PurpleIRCv3Message *message);
@@ -154,7 +154,7 @@ GHashTable *purple_ircv3_message_get_tag
  *
  * Sets the tags of @message to @tags.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_message_set_tags(PurpleIRCv3Message *message, GHashTable *tags);
diff --git a/libpurple/protocols/ircv3/purpleircv3message.c b/libpurple/protocols/ircv3/purpleircv3message.c
--- a/libpurple/protocols/ircv3/purpleircv3message.c
+++ b/libpurple/protocols/ircv3/purpleircv3message.c
@@ -129,7 +129,7 @@ purple_ircv3_message_class_init(PurpleIR
 	 *
 	 * This could be something like JOIN or a server reply numeric like 005.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_COMMAND] = g_param_spec_string(
 		"command", "command",
@@ -144,7 +144,7 @@ purple_ircv3_message_class_init(PurpleIR
 	 *
 	 * When serialized, the last item will be prefixed with a :.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_PARAMS] = g_param_spec_boxed(
 		"params", "params",
@@ -160,7 +160,7 @@ purple_ircv3_message_class_init(PurpleIR
 	 * This could be a nickname, a full nick!ident@server, a server name, or
 	 * %NULL.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_SOURCE] = g_param_spec_string(
 		"source", "source",
@@ -174,7 +174,7 @@ purple_ircv3_message_class_init(PurpleIR
 	 * The [ircv3 message tags](https://ircv3.net/specs/extensions/message-tags)
 	 * for the message.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_TAGS] = g_param_spec_boxed(
 		"tags", "tags",
diff --git a/libpurple/protocols/ircv3/purpleircv3messagehandlers.h b/libpurple/protocols/ircv3/purpleircv3messagehandlers.h
--- a/libpurple/protocols/ircv3/purpleircv3messagehandlers.h
+++ b/libpurple/protocols/ircv3/purpleircv3messagehandlers.h
@@ -48,7 +48,7 @@ G_BEGIN_DECLS
  * Returns: %TRUE if the command was handled properly, otherwise %FALSE and
  *          @error may be set.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_TYPE_IN_3_0
 typedef gboolean (*PurpleIRCv3MessageHandler)(PurpleIRCv3Message *message,
diff --git a/libpurple/protocols/ircv3/purpleircv3parser.h b/libpurple/protocols/ircv3/purpleircv3parser.h
--- a/libpurple/protocols/ircv3/purpleircv3parser.h
+++ b/libpurple/protocols/ircv3/purpleircv3parser.h
@@ -49,7 +49,7 @@ G_DECLARE_FINAL_TYPE(PurpleIRCv3Parser, 
  *
  * Creates a new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 PurpleIRCv3Parser *purple_ircv3_parser_new(void);
@@ -62,7 +62,7 @@ PurpleIRCv3Parser *purple_ircv3_parser_n
  * Sets @handler to be called for any messages that @parser doesn't know how to
  * handle.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_parser_set_fallback_handler(PurpleIRCv3Parser *parser, PurpleIRCv3MessageHandler handler);
@@ -78,7 +78,7 @@ void purple_ircv3_parser_set_fallback_ha
  *
  * Returns: %TRUE if the buffer was parsed correctly or %FALSE with @error set.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 gboolean purple_ircv3_parser_parse(PurpleIRCv3Parser *parser, const gchar *buffer, GError **error, gpointer data);
@@ -91,7 +91,7 @@ gboolean purple_ircv3_parser_parse(Purpl
  *
  * Calls @handler every time @parser finds the command named @command.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_parser_add_handler(PurpleIRCv3Parser *parser, const char *command, PurpleIRCv3MessageHandler handler);
@@ -105,7 +105,7 @@ void purple_ircv3_parser_add_handler(Pur
  * Like [method@Parser.add_handler] but allows you to add multiple commands at
  * once that share a handler.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_parser_add_handlers(PurpleIRCv3Parser *parser, PurpleIRCv3MessageHandler handler, ...) G_GNUC_NULL_TERMINATED;
@@ -116,7 +116,7 @@ void purple_ircv3_parser_add_handlers(Pu
  *
  * Adds all of the default handlers to @parser.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_parser_add_default_handlers(PurpleIRCv3Parser *parser);
diff --git a/libpurple/protocols/ircv3/purpleircv3protocol.h b/libpurple/protocols/ircv3/purpleircv3protocol.h
--- a/libpurple/protocols/ircv3/purpleircv3protocol.h
+++ b/libpurple/protocols/ircv3/purpleircv3protocol.h
@@ -60,7 +60,7 @@ struct _PurpleIRCv3ProtocolClass {
  *
  * Registers the dynamic type using @plugin.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 G_GNUC_INTERNAL void purple_ircv3_protocol_register(GPluginNativePlugin *plugin);
 
diff --git a/libpurple/protocols/ircv3/purpleircv3source.h b/libpurple/protocols/ircv3/purpleircv3source.h
--- a/libpurple/protocols/ircv3/purpleircv3source.h
+++ b/libpurple/protocols/ircv3/purpleircv3source.h
@@ -48,7 +48,7 @@ G_BEGIN_DECLS
  * If the user or host aren't present in @source, but a return address is
  * provided for them, that pointer will be set to %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PURPLE_IRCV3_AVAILABLE_IN_ALL
 void purple_ircv3_source_parse(const char *source, char **nick, char **user, char **host);
diff --git a/libpurple/protocols/ircv3/purpleircv3version.h b/libpurple/protocols/ircv3/purpleircv3version.h
--- a/libpurple/protocols/ircv3/purpleircv3version.h
+++ b/libpurple/protocols/ircv3/purpleircv3version.h
@@ -71,7 +71,7 @@
  * A macro that evaluates to the current stable version of the IRCv3 protocol
  * plugin, in a format that can be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_VERSION_CUR_STABLE \
 	(G_ENCODE_VERSION(PURPLE_MAJOR_VERSION, PURPLE_MINOR_VERSION))
@@ -112,7 +112,7 @@
  * A macro that evaluates to the 3.0 version of the IRCv3 protocol plugin, in a
  * format that can be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PURPLE_IRCV3_VERSION_3_0 (G_ENCODE_VERSION(3, 0))
 
