# HG changeset patch
# Node ID 26684cef1ff7
# Parent  db4b0bcad655
diff --git a/pidgin/gtkidle.h b/pidgin/gtkidle.h
--- a/pidgin/gtkidle.h
+++ b/pidgin/gtkidle.h
@@ -34,7 +34,7 @@ G_BEGIN_DECLS
  *
  * An implementation of [iface@Purple.IdleUi] for Pidgin.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_IDLE (pidgin_idle_get_type())
@@ -49,7 +49,7 @@ G_DECLARE_FINAL_TYPE(PidginIdle, pidgin_
  *
  * Returns: (transfer full): The new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleIdleUi *pidgin_idle_new(void);
diff --git a/pidgin/gtknotify.h b/pidgin/gtknotify.h
--- a/pidgin/gtknotify.h
+++ b/pidgin/gtknotify.h
@@ -39,7 +39,7 @@ G_BEGIN_DECLS
  *
  * Returns: The GTK UI notify operations structure.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 PurpleNotifyUiOps *pidgin_notify_get_ui_ops(void);
@@ -49,7 +49,7 @@ PurpleNotifyUiOps *pidgin_notify_get_ui_
  *
  * Initializes the GTK notifications subsystem.
  *
- * Since: 2.6.0
+ * Since: 2.6
  */
 PIDGIN_AVAILABLE_IN_2_6
 void pidgin_notify_init(void);
@@ -59,7 +59,7 @@ void pidgin_notify_init(void);
  *
  * Uninitialized the GTK notifications subsystem.
  *
- * Since: 2.6.0
+ * Since: 2.6
  */
 PIDGIN_AVAILABLE_IN_2_6
 void pidgin_notify_uninit(void);
diff --git a/pidgin/gtkrequest.h b/pidgin/gtkrequest.h
--- a/pidgin/gtkrequest.h
+++ b/pidgin/gtkrequest.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  *
  * Returns: The GTK UI request operations structure.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 PurpleRequestUiOps *pidgin_request_get_ui_ops(void);
@@ -54,7 +54,7 @@ PurpleRequestUiOps *pidgin_request_get_u
  *
  * Returns: (transfer none): The dialog window.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWindow *
@@ -71,7 +71,7 @@ pidgin_request_get_dialog_window(void *u
  *
  * Returns: The requests subsystem handle.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void *pidgin_request_get_handle(void);
@@ -81,7 +81,7 @@ void *pidgin_request_get_handle(void);
  *
  * Initializes the GTK requests subsystem.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_request_init(void);
@@ -91,7 +91,7 @@ void pidgin_request_init(void);
  *
  * Uninitializes the GTK requests subsystem.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_request_uninit(void);
diff --git a/pidgin/gtkroomlist.h b/pidgin/gtkroomlist.h
--- a/pidgin/gtkroomlist.h
+++ b/pidgin/gtkroomlist.h
@@ -37,7 +37,7 @@ G_BEGIN_DECLS
  *
  * Initializes the room list subsystem.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_roomlist_init(void);
@@ -50,7 +50,7 @@ void pidgin_roomlist_init(void);
  * Returns: TRUE if there are accounts online that support listing
  *         chat rooms.  Otherwise return FALSE.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 gboolean pidgin_roomlist_is_showable(void);
@@ -60,7 +60,7 @@ gboolean pidgin_roomlist_is_showable(voi
  *
  * Shows a new roomlist dialog.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_roomlist_dialog_show(void);
@@ -71,7 +71,7 @@ void pidgin_roomlist_dialog_show(void);
  *
  * Shows a new room list dialog and fetches the list for the specified account.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_roomlist_dialog_show_with_account(PurpleAccount *account);
diff --git a/pidgin/gtkutils.h b/pidgin/gtkutils.h
--- a/pidgin/gtkutils.h
+++ b/pidgin/gtkutils.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * Get information about a user. Show immediate feedback.
  *
- * Since: 2.1.0
+ * Since: 2.1
  */
 PIDGIN_AVAILABLE_IN_2_1
 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name);
@@ -55,7 +55,7 @@ void pidgin_retrieve_user_info(PurpleCon
  *
  * Get information about a user in a chat. Show immediate feedback.
  *
- * Since: 2.1.0
+ * Since: 2.1
  */
 PIDGIN_AVAILABLE_IN_2_1
 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chatid);
@@ -68,7 +68,7 @@ void pidgin_retrieve_user_info_in_chat(P
  * Sets an ATK name for a given widget.  Also sets the labelled-by
  * and label-for ATK relationships.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_set_accessible_label(GtkWidget *w, GtkLabel *l);
@@ -81,7 +81,7 @@ void pidgin_set_accessible_label(GtkWidg
  *
  * Returns: Whether the window was made transient or not.
  *
- * Since: 2.4.0
+ * Since: 2.4
  */
 PIDGIN_AVAILABLE_IN_2_4
 gboolean pidgin_auto_parent_window(GtkWidget *window);
@@ -99,7 +99,7 @@ gboolean pidgin_auto_parent_window(GtkWi
  *
  * Returns:  (transfer full): A GtkBox already added to the GtkBox containing the GtkLabel and the GtkWidget.
  *
- * Since: 2.4.0
+ * Since: 2.4
  */
 PIDGIN_AVAILABLE_IN_2_4
 GtkWidget *pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label);
diff --git a/pidgin/gtkwhiteboard.h b/pidgin/gtkwhiteboard.h
--- a/pidgin/gtkwhiteboard.h
+++ b/pidgin/gtkwhiteboard.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  *
  * Returns: The GtkWhiteboard UI Operations.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 PurpleWhiteboardUiOps *pidgin_whiteboard_get_ui_ops(void);
diff --git a/pidgin/pidginabout.h b/pidgin/pidginabout.h
--- a/pidgin/pidginabout.h
+++ b/pidgin/pidginabout.h
@@ -46,7 +46,7 @@ G_DECLARE_FINAL_TYPE(PidginAboutDialog, 
  *
  * Returns: (transfer full): A new instance of the about dialog.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_about_dialog_new(void);
diff --git a/pidgin/pidginaccountchooser.h b/pidgin/pidginaccountchooser.h
--- a/pidgin/pidginaccountchooser.h
+++ b/pidgin/pidginaccountchooser.h
@@ -48,7 +48,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountChoose
  *
  * Returns: (transfer full): The account chooser combo box.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_chooser_new(void);
@@ -62,7 +62,7 @@ GtkWidget *pidgin_account_chooser_new(vo
  * Returns: (transfer none): Returns the #GtkFilter that is currently
  *          displayed.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkFilter *pidgin_account_chooser_get_filter(PidginAccountChooser *chooser);
@@ -74,7 +74,7 @@ GtkFilter *pidgin_account_chooser_get_fi
  *
  * Sets the current list filter for the account chooser.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_chooser_set_filter(PidginAccountChooser *chooser, GtkFilter *filter);
@@ -88,7 +88,7 @@ void pidgin_account_chooser_set_filter(P
  * Returns: (transfer full): Returns the #PurpleAccount that is currently
  *          selected.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleAccount *pidgin_account_chooser_get_selected(PidginAccountChooser *chooser);
@@ -100,7 +100,7 @@ PurpleAccount *pidgin_account_chooser_ge
  *
  * Sets the currently selected account for an account combo box.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_chooser_set_selected(PidginAccountChooser *chooser,
diff --git a/pidgin/pidginaccountdisplay.h b/pidgin/pidginaccountdisplay.h
--- a/pidgin/pidginaccountdisplay.h
+++ b/pidgin/pidginaccountdisplay.h
@@ -49,7 +49,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountDispla
  *
  * Returns: (transfer full): The account display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_display_new(PurpleAccount *account);
@@ -63,7 +63,7 @@ GtkWidget *pidgin_account_display_new(Pu
  * Returns: (transfer none): Returns the [type@Purple.Account] that is
  *          currently displayed.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleAccount *pidgin_account_display_get_account(PidginAccountDisplay *display);
@@ -75,7 +75,7 @@ PurpleAccount *pidgin_account_display_ge
  *
  * Sets the currently displayed account.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_display_set_account(PidginAccountDisplay *display, PurpleAccount *account);
diff --git a/pidgin/pidginaccountdisplay.c b/pidgin/pidginaccountdisplay.c
--- a/pidgin/pidginaccountdisplay.c
+++ b/pidgin/pidginaccountdisplay.c
@@ -144,7 +144,7 @@ pidgin_account_display_class_init(Pidgin
 	 *
 	 * The account that is currently displayed.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ACCOUNT] = g_param_spec_object(
 	        "account", "Account", "The account that is currently displayed.",
diff --git a/pidgin/pidginaccounteditor.h b/pidgin/pidginaccounteditor.h
--- a/pidgin/pidginaccounteditor.h
+++ b/pidgin/pidginaccounteditor.h
@@ -40,7 +40,7 @@
  *
  * #PidginAccountEditor is a dialog that allows you to edit an account.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 G_BEGIN_DECLS
@@ -60,7 +60,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountEditor
  *
  * Returns: (transfer full): The new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_editor_new(PurpleAccount *account);
@@ -73,7 +73,7 @@ GtkWidget *pidgin_account_editor_new(Pur
  *
  * Returns: (transfer none): The [class@Purple.Account] or %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleAccount *pidgin_account_editor_get_account(PidginAccountEditor *editor);
@@ -86,7 +86,7 @@ PurpleAccount *pidgin_account_editor_get
  * Sets the account that @editor is editing to @account. You can pass %NULL
  * to remove the current account or edit a new account.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_editor_set_account(PidginAccountEditor *editor, PurpleAccount *account);
@@ -100,7 +100,7 @@ void pidgin_account_editor_set_account(P
  * Returns: %TRUE if the account being edited has valid values, otherwise
  *          %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 gboolean pidgin_account_editor_get_is_valid(PidginAccountEditor *editor);
@@ -112,7 +112,7 @@ gboolean pidgin_account_editor_get_is_va
  * Save the account to disk. If this is a new account, it will be set to match
  * the current global status which is "online" in most cases.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_editor_save(PidginAccountEditor *editor);
diff --git a/pidgin/pidginaccounteditor.c b/pidgin/pidginaccounteditor.c
--- a/pidgin/pidginaccounteditor.c
+++ b/pidgin/pidginaccounteditor.c
@@ -1176,7 +1176,7 @@ pidgin_account_editor_class_init(PidginA
 	 *
 	 * The account that this editor is modifying.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ACCOUNT] = g_param_spec_object(
 		"account", "account",
@@ -1190,7 +1190,7 @@ pidgin_account_editor_class_init(PidginA
 	 * Whether or not the account settings are valid and it is okay to save the
 	 * account.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_VALID] = g_param_spec_boolean(
 		"valid", "valid",
diff --git a/pidgin/pidginaccountfilterconnected.h b/pidgin/pidginaccountfilterconnected.h
--- a/pidgin/pidginaccountfilterconnected.h
+++ b/pidgin/pidginaccountfilterconnected.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  * [class@Pidgin.AccountChooser] or a [iface@Gio.ListModel] that contains
  * [class@Purple.Account].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNT_FILTER_CONNECTED pidgin_account_filter_connected_get_type()
@@ -59,7 +59,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountFilter
  *
  * Returns: (transfer full): The new #PidginAccountFilterConnected instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkFilter *pidgin_account_filter_connected_new(void);
diff --git a/pidgin/pidginaccountfilterprotocol.h b/pidgin/pidginaccountfilterprotocol.h
--- a/pidgin/pidginaccountfilterprotocol.h
+++ b/pidgin/pidginaccountfilterprotocol.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  * [class@Pidgin.AccountChooser] or a [iface@Gio.ListModel] that contains
  * [class@Purple.Account].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNT_FILTER_PROTOCOL pidgin_account_filter_protocol_get_type()
@@ -60,7 +60,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountFilter
  *
  * Returns: (transfer full): The new #PidginAccountFilterProtocol instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkFilter *pidgin_account_filter_protocol_new(const gchar *protocol_id);
@@ -73,7 +73,7 @@ GtkFilter *pidgin_account_filter_protoco
  *
  * Returns: The Protocol ID that @filter is filtering for.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_account_filter_protocol_get_protocol_id(PidginAccountFilterProtocol *filter);
diff --git a/pidgin/pidginaccountmanager.h b/pidgin/pidginaccountmanager.h
--- a/pidgin/pidginaccountmanager.h
+++ b/pidgin/pidginaccountmanager.h
@@ -38,7 +38,7 @@ G_BEGIN_DECLS
  *
  * A singleton dialog for managing accounts.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNT_MANAGER (pidgin_account_manager_get_type())
@@ -54,7 +54,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountManage
  *
  * Returns: (transfer full): The dialog.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_manager_new(void);
@@ -66,7 +66,7 @@ GtkWidget *pidgin_account_manager_new(vo
  * Switches @manager to the overview page. This is useful as @manager might
  * already be visible but editing an account.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_manager_show_overview(PidginAccountManager *manager);
@@ -78,7 +78,7 @@ void pidgin_account_manager_show_overvie
  *
  * Opens the account editor in @manager for the given account.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_manager_edit_account(PidginAccountManager *manager, PurpleAccount *account);
diff --git a/pidgin/pidginaccountmanagerrow.h b/pidgin/pidginaccountmanagerrow.h
--- a/pidgin/pidginaccountmanagerrow.h
+++ b/pidgin/pidginaccountmanagerrow.h
@@ -38,7 +38,7 @@
  *
  * A [class@Gtk.ListBoxRow] subclass to display a [class@Purple.Account].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNT_MANAGER_ROW (pidgin_account_manager_row_get_type())
@@ -57,7 +57,7 @@ G_BEGIN_DECLS
  *
  * Returns: (transfer full): The new account row.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_manager_row_new(PurpleAccount *account);
@@ -70,7 +70,7 @@ GtkWidget *pidgin_account_manager_row_ne
  *
  * Returns: (transfer none): The account if set otherwise %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleAccount *pidgin_account_manager_row_get_account(PidginAccountManagerRow *row);
@@ -82,7 +82,7 @@ PurpleAccount *pidgin_account_manager_ro
  *
  * Sets the [class@Purple.Account] for @row to display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_manager_row_set_account(PidginAccountManagerRow *row, PurpleAccount *account);
diff --git a/pidgin/pidginaccountmanagerrow.c b/pidgin/pidginaccountmanagerrow.c
--- a/pidgin/pidginaccountmanagerrow.c
+++ b/pidgin/pidginaccountmanagerrow.c
@@ -361,7 +361,7 @@ pidgin_account_manager_row_class_init(Pi
 	 *
 	 * The account that this row will be representing.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ACCOUNT] = g_param_spec_object(
 		"account", "account",
diff --git a/pidgin/pidginaccountrow.h b/pidgin/pidginaccountrow.h
--- a/pidgin/pidginaccountrow.h
+++ b/pidgin/pidginaccountrow.h
@@ -45,7 +45,7 @@ G_BEGIN_DECLS
  * A [class@Adw.ComboRow] subclass that allows the user to select an
  * [class@Purple.Account].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNT_ROW (pidgin_account_row_get_type())
@@ -61,7 +61,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountRow, p
  *
  * Returns: (transfer full): The new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_account_row_new(void);
@@ -75,7 +75,7 @@ GtkWidget *pidgin_account_row_new(void);
  * Returns: (transfer none): The account if one is selected otherwise %NULL if
  *          the model is empty.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleAccount *pidgin_account_row_get_account(PidginAccountRow *row);
@@ -88,7 +88,7 @@ PurpleAccount *pidgin_account_row_get_ac
  * Sets the selected account in @row to @account. If @account is %NULL, then
  * the first item if one exists will be selected.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_row_set_account(PidginAccountRow *row, PurpleAccount *account);
@@ -102,7 +102,7 @@ void pidgin_account_row_set_account(Pidg
  *
  * Returns: (transfer none) (nullable): The filter being used or %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkFilter *pidgin_account_row_get_filter(PidginAccountRow *row);
@@ -115,7 +115,7 @@ GtkFilter *pidgin_account_row_get_filter
  * Sets the filter for @row to @filter. If @filter is %NULL, any existing
  * filter will be removed.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_account_row_set_filter(PidginAccountRow *row, GtkFilter *filter);
diff --git a/pidgin/pidginaccountrow.c b/pidgin/pidginaccountrow.c
--- a/pidgin/pidginaccountrow.c
+++ b/pidgin/pidginaccountrow.c
@@ -117,7 +117,7 @@ pidgin_account_row_class_init(PidginAcco
 	 *
 	 * The [class@Purple.Account] that is selected.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ACCOUNT] = g_param_spec_object(
 		"account", "account",
@@ -130,7 +130,7 @@ pidgin_account_row_class_init(PidginAcco
 	 *
 	 * The filter to use on the list of accounts.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_FILTER] = g_param_spec_object(
 	        "filter", "filter",
diff --git a/pidgin/pidginaccountsdisabledmenu.h b/pidgin/pidginaccountsdisabledmenu.h
--- a/pidgin/pidginaccountsdisabledmenu.h
+++ b/pidgin/pidginaccountsdisabledmenu.h
@@ -50,7 +50,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountsDisab
  *
  * Returns: (transfer full): The new menu instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GMenuModel *pidgin_accounts_disabled_menu_new(void);
diff --git a/pidgin/pidginaccountsenabledmenu.h b/pidgin/pidginaccountsenabledmenu.h
--- a/pidgin/pidginaccountsenabledmenu.h
+++ b/pidgin/pidginaccountsenabledmenu.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * A [class@Gio.MenuModel] that automatically updates itself based on what
  * accounts are enabled.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_ACCOUNTS_ENABLED_MENU (pidgin_accounts_enabled_menu_get_type())
@@ -59,7 +59,7 @@ G_DECLARE_FINAL_TYPE(PidginAccountsEnabl
  *
  * Returns: (transfer full): The new menu instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GMenuModel *pidgin_accounts_enabled_menu_new(void);
diff --git a/pidgin/pidginapplication.h b/pidgin/pidginapplication.h
--- a/pidgin/pidginapplication.h
+++ b/pidgin/pidginapplication.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginApplication is a subclass of #GtkApplication that holds all of the
  * application wide actions.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_APPLICATION (pidgin_application_get_type())
@@ -58,7 +58,7 @@ G_DECLARE_FINAL_TYPE(PidginApplication, 
  *
  * Returns: (transfer full): The new #PidginApplication instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GApplication *pidgin_application_new(void);
@@ -76,7 +76,7 @@ GApplication *pidgin_application_new(voi
  * To remove @action_group from every window, call this function with the same
  * prefix, but %NULL for @action_group.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_application_add_action_group(PidginApplication *application, const gchar *prefix, GActionGroup *action_group);
@@ -92,7 +92,7 @@ void pidgin_application_add_action_group
  * Returns: (transfer none) (nullable): The active window or %NULL if one could
  *          not be found.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWindow *pidgin_application_get_active_window(PidginApplication *application);
diff --git a/pidgin/pidginapplication.c b/pidgin/pidginapplication.c
--- a/pidgin/pidginapplication.c
+++ b/pidgin/pidginapplication.c
@@ -95,7 +95,7 @@ G_DEFINE_FINAL_TYPE(PidginApplication, p
  * The Pidgin account manager can get opened from multiple actions, so this
  * helper manages the singleton.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 static GtkWidget *
 pidgin_application_get_account_manager(void) {
@@ -117,7 +117,7 @@ pidgin_application_get_account_manager(v
  * Presents a window and makes sure its transient parent is set to the currently
  * active window of @application.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 static void
 pidgin_application_present_transient_window(PidginApplication *application,
diff --git a/pidgin/pidginautoadjustment.h b/pidgin/pidginautoadjustment.h
--- a/pidgin/pidginautoadjustment.h
+++ b/pidgin/pidginautoadjustment.h
@@ -44,7 +44,7 @@ G_BEGIN_DECLS
  * max when new items are added if the widget was already scrolled all the
  * way to the bottom.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_AUTO_ADJUSTMENT (pidgin_auto_adjustment_get_type())
@@ -60,7 +60,7 @@ G_DECLARE_FINAL_TYPE(PidginAutoAdjustmen
  *
  * Returns: (transfer full): The new #PidginAutoAdjustment instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkAdjustment *pidgin_auto_adjustment_new(void);
@@ -71,7 +71,7 @@ GtkAdjustment *pidgin_auto_adjustment_ne
  *
  * Decrements the value of @auto_scroller by a page increment.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_auto_adjustment_decrement(PidginAutoAdjustment *auto_scroller);
@@ -82,7 +82,7 @@ void pidgin_auto_adjustment_decrement(Pi
  *
  * Increments the value of @auto_scroller by a page increment.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_auto_adjustment_increment(PidginAutoAdjustment *auto_scroller);
diff --git a/pidgin/pidginavatar.h b/pidgin/pidginavatar.h
--- a/pidgin/pidginavatar.h
+++ b/pidgin/pidginavatar.h
@@ -43,7 +43,7 @@ G_BEGIN_DECLS
  * #PidginAvatar is a widget that displays avatars for contacts or
  * conversations.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_AVATAR (pidgin_avatar_get_type())
@@ -58,7 +58,7 @@ G_DECLARE_FINAL_TYPE(PidginAvatar, pidgi
  *
  * Returns: (transfer full): The new #PidginAvatar instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_avatar_new(void);
@@ -72,7 +72,7 @@ GtkWidget *pidgin_avatar_new(void);
  * non-animated image, changing this will do nothing unless a new animated
  * image is set.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_avatar_set_animate(PidginAvatar *avatar, gboolean animate);
@@ -85,7 +85,7 @@ void pidgin_avatar_set_animate(PidginAva
  *
  * Returns: Whether or not @avatar should be animated.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 gboolean pidgin_avatar_get_animate(PidginAvatar *avatar);
@@ -97,7 +97,7 @@ gboolean pidgin_avatar_get_animate(Pidgi
  *
  * Sets or unsets the #PurpleBuddy that @avatar should use for display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_avatar_set_buddy(PidginAvatar *avatar, PurpleBuddy *buddy);
@@ -110,7 +110,7 @@ void pidgin_avatar_set_buddy(PidginAvata
  *
  * Returns: (transfer none): The #PurpleBuddy that @avatar is using for display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleBuddy *pidgin_avatar_get_buddy(PidginAvatar *avatar);
@@ -123,7 +123,7 @@ PurpleBuddy *pidgin_avatar_get_buddy(Pid
  * Sets or unsets the #PurpleConversation that @avatar uses to find the
  * #PurpleBuddy whose icon to display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_avatar_set_conversation(PidginAvatar *avatar, PurpleConversation *conversation);
@@ -137,7 +137,7 @@ void pidgin_avatar_set_conversation(Pidg
  * Returns: (transfer none): The #PurpleConversation that @avatar is using to
  *          find the #PurpleBuddy whose icon to display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleConversation *pidgin_avatar_get_conversation(PidginAvatar *avatar);
diff --git a/pidgin/pidginchanneljoindialog.h b/pidgin/pidginchanneljoindialog.h
--- a/pidgin/pidginchanneljoindialog.h
+++ b/pidgin/pidginchanneljoindialog.h
@@ -38,7 +38,7 @@ G_BEGIN_DECLS
  *
  * A dialog for joining channels.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_CHANNEL_JOIN_DIALOG (pidgin_channel_join_dialog_get_type())
@@ -54,7 +54,7 @@ G_DECLARE_FINAL_TYPE(PidginChannelJoinDi
  *
  * Returns: (transfer full): The widget.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_channel_join_dialog_new(void);
diff --git a/pidgin/pidgincolor.h b/pidgin/pidgincolor.h
--- a/pidgin/pidgincolor.h
+++ b/pidgin/pidgincolor.h
@@ -48,7 +48,7 @@ G_BEGIN_DECLS
  * in glib is going to take a bit of finesse.  Also we'll need to figure out how
  * to scale to ginormous Twitch channels which will constantly bust the cache.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_color_calculate_for_text(const gchar *text,  GdkRGBA *color);
diff --git a/pidgin/pidgincontactinfomenu.h b/pidgin/pidgincontactinfomenu.h
--- a/pidgin/pidgincontactinfomenu.h
+++ b/pidgin/pidgincontactinfomenu.h
@@ -48,7 +48,7 @@ G_BEGIN_DECLS
  * Creates a [class@Gtk.PopoverMenu] for @info and displays it at the @x and @y
  * coordinates instead of @parent.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_contact_info_menu_popup(PurpleContactInfo *info, PurpleAccount *account, GtkWidget *parent, gdouble x, gdouble y);
diff --git a/pidgin/pidgincontactlist.h b/pidgin/pidgincontactlist.h
--- a/pidgin/pidgincontactlist.h
+++ b/pidgin/pidgincontactlist.h
@@ -43,7 +43,7 @@ G_BEGIN_DECLS
  * #PidginContactList is a widget that displays the [iface@Gio.ListModel] of
  * [class@Purple.Person] from [class@Purple.ContactManager].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_CONTACT_LIST (pidgin_contact_list_get_type())
@@ -61,7 +61,7 @@ G_DECLARE_FINAL_TYPE(PidginContactList, 
  *
  * Returns: (transfer full): The new #PidginContactList instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_contact_list_new(void);
diff --git a/pidgin/pidginconversation.h b/pidgin/pidginconversation.h
--- a/pidgin/pidginconversation.h
+++ b/pidgin/pidginconversation.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * A [class@Gtk.Widget] for displaying a [class@Purple.Conversation].
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 
 #define PIDGIN_TYPE_CONVERSATION (pidgin_conversation_get_type())
@@ -59,7 +59,7 @@ G_DECLARE_FINAL_TYPE(PidginConversation,
  *
  * Returns: (transfer full): The new widget.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_conversation_new(PurpleConversation *conversation);
@@ -73,7 +73,7 @@ GtkWidget *pidgin_conversation_new(Purpl
  * Returns: (transfer none) (nullable): The [class@Pidgin.Conversation] displaying
  *          @conversation if one exists, otherwise %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_conversation_from_purple_conversation(PurpleConversation *conversation);
@@ -87,7 +87,7 @@ GtkWidget *pidgin_conversation_from_purp
  * Returns: (transfer none): The [class@Purple.Conversation] that @conversation
  *          is displaying.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleConversation *pidgin_conversation_get_conversation(PidginConversation *conversation);
@@ -100,7 +100,7 @@ PurpleConversation *pidgin_conversation_
  * conversation and the user may remain in the conversation if the protocol
  * supports it.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_conversation_close(PidginConversation *conversation);
diff --git a/pidgin/pidginconversation.c b/pidgin/pidginconversation.c
--- a/pidgin/pidginconversation.c
+++ b/pidgin/pidginconversation.c
@@ -82,7 +82,7 @@ pidgin_conversation_set_conversation(Pid
  *
  * Returns: %TRUE if a tooltip was set, otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 static gboolean
 pidgin_conversation_set_tooltip_for_timestamp(GtkTooltip *tooltip,
@@ -407,7 +407,7 @@ pidgin_conversation_class_init(PidginCon
 	 *
 	 * The [class@Purple.Conversation] that this conversation is displaying.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_CONVERSATION] = g_param_spec_object(
 		"conversation", "conversation",
diff --git a/pidgin/pidgincore.h b/pidgin/pidgincore.h
--- a/pidgin/pidgincore.h
+++ b/pidgin/pidgincore.h
@@ -61,7 +61,7 @@
  *
  * Start pidgin with the given command line arguments.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 int pidgin_start(int argc, char *argv[]);
diff --git a/pidgin/pidgindebug.h b/pidgin/pidgindebug.h
--- a/pidgin/pidgindebug.h
+++ b/pidgin/pidgindebug.h
@@ -45,7 +45,7 @@ G_DECLARE_FINAL_TYPE(PidginDebugWindow, 
  * This must be called early if you want to capture logs at startup, and avoid
  * printing them out.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_debug_init_handler(void);
@@ -57,7 +57,7 @@ void pidgin_debug_init_handler(void);
  *
  * This will print to the console, if Pidgin is run from there.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_debug_set_print_enabled(gboolean enable);
@@ -67,7 +67,7 @@ void pidgin_debug_set_print_enabled(gboo
  *
  * Perform necessary initializations.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_debug_init(void);
@@ -77,7 +77,7 @@ void pidgin_debug_init(void);
  *
  * Perform necessary uninitializations.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_debug_uninit(void);
@@ -89,7 +89,7 @@ void pidgin_debug_uninit(void);
  *
  * Returns: the handle to the debug system
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void *pidgin_debug_get_handle(void);
@@ -99,7 +99,7 @@ void *pidgin_debug_get_handle(void);
  *
  * Shows the debug window.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_debug_window_show(void);
@@ -109,7 +109,7 @@ void pidgin_debug_window_show(void);
  *
  * Hides the debug window.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_debug_window_hide(void);
diff --git a/pidgin/pidgindisplayitem.h b/pidgin/pidgindisplayitem.h
--- a/pidgin/pidgindisplayitem.h
+++ b/pidgin/pidgindisplayitem.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  * A class that's used by [class@Pidgin.DisplayWindow] to represent all of the
  * displays items.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_DISPLAY_ITEM (pidgin_display_item_get_type())
@@ -69,7 +69,7 @@ PidginDisplayItem *pidgin_display_item_n
  *
  * Returns: (transfer none): The widget.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_display_item_get_widget(PidginDisplayItem *item);
@@ -82,7 +82,7 @@ GtkWidget *pidgin_display_item_get_widge
  *
  * Returns: The unique identifier of @item.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const char *pidgin_display_item_get_id(PidginDisplayItem *item);
@@ -95,7 +95,7 @@ const char *pidgin_display_item_get_id(P
  *
  * Returns: (nullable): The title of @item.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const char *pidgin_display_item_get_title(PidginDisplayItem *item);
@@ -107,7 +107,7 @@ const char *pidgin_display_item_get_titl
  *
  * Sets the title for @item to @title.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_item_set_title(PidginDisplayItem *item, const char *title);
@@ -120,7 +120,7 @@ void pidgin_display_item_set_title(Pidgi
  *
  * Returns: (nullable): The icon name to use.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const char *pidgin_display_item_get_icon_name(PidginDisplayItem *item);
@@ -132,7 +132,7 @@ const char *pidgin_display_item_get_icon
  *
  * Sets the icon name that should be used when displaying @item.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_item_set_icon_name(PidginDisplayItem *item, const char *icon_name);
@@ -145,7 +145,7 @@ void pidgin_display_item_set_icon_name(P
  *
  * Returns: %TRUE if @item needs attention otherwise %FALSE.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 gboolean pidgin_display_item_get_needs_attention(PidginDisplayItem *item);
@@ -157,7 +157,7 @@ gboolean pidgin_display_item_get_needs_a
  *
  * Sets whether or not @item needs attention.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_item_set_needs_attention(PidginDisplayItem *item, gboolean needs_attention);
@@ -170,7 +170,7 @@ void pidgin_display_item_set_needs_atten
  *
  * Returns: The value to display or %0 to display nothing.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 guint pidgin_display_item_get_badge_number(PidginDisplayItem *item);
@@ -183,7 +183,7 @@ guint pidgin_display_item_get_badge_numb
  * Sets the values to be displayed in the badge for @item to @badge_number. A
  * value of %0 indicates that the badge should not be displayed.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_item_set_badge_number(PidginDisplayItem *item, guint badge_number);
@@ -196,7 +196,7 @@ void pidgin_display_item_set_badge_numbe
  *
  * Returns: (transfer none) (nullable): The children of @item if there are any.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GListModel *pidgin_display_item_get_children(PidginDisplayItem *item);
@@ -209,7 +209,7 @@ GListModel *pidgin_display_item_get_chil
  * Sets the children of @item to @children. If @children is not %NULL then the
  * model must have an item type of [class@Pidgin.DisplayItem].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_item_set_children(PidginDisplayItem *item, GListModel *children);
diff --git a/pidgin/pidgindisplayitem.c b/pidgin/pidgindisplayitem.c
--- a/pidgin/pidgindisplayitem.c
+++ b/pidgin/pidgindisplayitem.c
@@ -195,7 +195,7 @@ pidgin_display_item_class_init(PidginDis
 	 *
 	 * The [class@Gtk.Widget] that this item is for.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_WIDGET] = g_param_spec_object(
 		"widget", "widget",
@@ -209,7 +209,7 @@ pidgin_display_item_class_init(PidginDis
 	 * A unique identifier for this item. This is used for things like
 	 * remembering positions and selections.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ID] = g_param_spec_string(
 		"id", "id",
@@ -222,7 +222,7 @@ pidgin_display_item_class_init(PidginDis
 	 *
 	 * The title that should be displayed for this item.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_TITLE] = g_param_spec_string(
 		"title", "title",
@@ -235,7 +235,7 @@ pidgin_display_item_class_init(PidginDis
 	 *
 	 * The icon name to use for this item.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_ICON_NAME] = g_param_spec_string(
 		"icon-name", "icon-name",
@@ -248,7 +248,7 @@ pidgin_display_item_class_init(PidginDis
 	 *
 	 * Determines whether the item should show that it needs attention or not.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_NEEDS_ATTENTION] = g_param_spec_boolean(
 		"needs-attention", "needs-attention",
@@ -262,7 +262,7 @@ pidgin_display_item_class_init(PidginDis
 	 * The number that should be shown in the badge. Typically this is an
 	 * unread count. If this is 0 it should not be displayed.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_BADGE_NUMBER] = g_param_spec_uint(
 		"badge-number", "badge-number",
@@ -276,7 +276,7 @@ pidgin_display_item_class_init(PidginDis
 	 * A [iface@Gio.ListModel] of child items. The type of the model needs to
 	 * be [class@Pidgin.DisplayItem].
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_CHILDREN] = g_param_spec_object(
 		"children", "children",
diff --git a/pidgin/pidgindisplaywindow.h b/pidgin/pidgindisplaywindow.h
--- a/pidgin/pidgindisplaywindow.h
+++ b/pidgin/pidgindisplaywindow.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * #PidginDisplayWindow is a widget that contains #PidginConversations.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_DISPLAY_WINDOW (pidgin_display_window_get_type())
@@ -58,7 +58,7 @@ G_DECLARE_FINAL_TYPE(PidginDisplayWindow
  *
  * Returns: (transfer full): The new #PidginDisplayWindow instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_display_window_new(void);
@@ -70,7 +70,7 @@ GtkWidget *pidgin_display_window_new(voi
  *
  * Returns: (transfer none): The default #PidginDisplayWindow.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_display_window_get_default(void);
@@ -83,7 +83,7 @@ GtkWidget *pidgin_display_window_get_def
  * Adds @conversation to @window. If @conversation is already in @window, this
  * does nothing.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_add(PidginDisplayWindow *window, PurpleConversation *conversation);
@@ -96,7 +96,7 @@ void pidgin_display_window_add(PidginDis
  * Removes @conversation from @window. If @conversation is not in @window, this
  * does nothing.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_remove(PidginDisplayWindow *window, PurpleConversation *conversation);
@@ -109,7 +109,7 @@ void pidgin_display_window_remove(Pidgin
  *
  * Returns: The number of conversations that @window contains.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 guint pidgin_display_window_get_count(PidginDisplayWindow *window);
@@ -123,7 +123,7 @@ guint pidgin_display_window_get_count(Pi
  *
  * Returns: (transfer full): The selected PurpleConversation or %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleConversation *pidgin_display_window_get_selected(PidginDisplayWindow *window);
@@ -135,7 +135,7 @@ PurpleConversation *pidgin_display_windo
  *
  * Selects @conversation, making it the active conversation.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select(PidginDisplayWindow *window, PurpleConversation *conversation);
@@ -149,7 +149,7 @@ void pidgin_display_window_select(Pidgin
  *
  * If no conversation is selected, the last conversation will be selected.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select_previous(PidginDisplayWindow *window);
@@ -162,7 +162,7 @@ void pidgin_display_window_select_previo
  *
  * If no conversation is selected, the first conversation will be selected.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select_next(PidginDisplayWindow *window);
@@ -174,7 +174,7 @@ void pidgin_display_window_select_next(P
  * Selects the first conversation in @window. If there are no conversations in
  * @window this does nothing.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select_first(PidginDisplayWindow *window);
@@ -186,7 +186,7 @@ void pidgin_display_window_select_first(
  * Selects the last conversation in @window. If there are no conversations in
  * @window this does nothing.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select_last(PidginDisplayWindow *window);
@@ -199,7 +199,7 @@ void pidgin_display_window_select_last(P
  * Switches to the @nth conversation. @nth is a 0 based index, so the first
  * conversation is at index 0.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_display_window_select_nth(PidginDisplayWindow *window, guint nth);
@@ -213,7 +213,7 @@ void pidgin_display_window_select_nth(Pi
  *
  * Returns: %TRUE if @conversation is active.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 gboolean pidgin_display_window_conversation_is_selected(PidginDisplayWindow *window, PurpleConversation *conversation);
diff --git a/pidgin/pidginiconname.h b/pidgin/pidginiconname.h
--- a/pidgin/pidginiconname.h
+++ b/pidgin/pidginiconname.h
@@ -45,7 +45,7 @@ G_BEGIN_DECLS
  *
  * Returns: The icon name to use for @primitive.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_icon_name_from_status_primitive(PurpleStatusPrimitive primitive, const gchar *fallback);
@@ -59,7 +59,7 @@ const gchar *pidgin_icon_name_from_statu
  *
  * Returns: The icon name to use for @type.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_icon_name_from_status_type(PurpleStatusType *type, const gchar *fallback);
@@ -73,7 +73,7 @@ const gchar *pidgin_icon_name_from_statu
  *
  * Returns: The icon name to use for @status.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_icon_name_from_status(PurpleStatus *status, const gchar *fallback);
@@ -88,7 +88,7 @@ const gchar *pidgin_icon_name_from_statu
  *
  * Returns: (nullable): The icon name to use or @fallback.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const char *pidgin_icon_name_from_presence_primitive(PurplePresencePrimitive primitive, const char *fallback);
@@ -103,7 +103,7 @@ const char *pidgin_icon_name_from_presen
  *
  * Returns: The icon name to represent @presence.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const char *pidgin_icon_name_from_presence(PurplePresence *presence, const char *fallback);
diff --git a/pidgin/pidginimwindow.h b/pidgin/pidginimwindow.h
--- a/pidgin/pidginimwindow.h
+++ b/pidgin/pidginimwindow.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * A window used to start a new direct message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_IM_WINDOW (pidgin_im_window_get_type())
diff --git a/pidgin/pidgininvitedialog.h b/pidgin/pidgininvitedialog.h
--- a/pidgin/pidgininvitedialog.h
+++ b/pidgin/pidgininvitedialog.h
@@ -64,7 +64,7 @@ G_BEGIN_DECLS
  * }
  * ]|
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_INVITE_DIALOG  pidgin_invite_dialog_get_type()
@@ -81,7 +81,7 @@ G_DECLARE_FINAL_TYPE(PidginInviteDialog,
  *
  * Returns: (transfer full): The new #PidginInviteDialog instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_invite_dialog_new(PurpleChatConversation *conversation);
@@ -95,7 +95,7 @@ GtkWidget *pidgin_invite_dialog_new(Purp
  * used to prepopulate the dialog in cases where you just need to prompt the
  * user for an invite message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_invite_dialog_set_contact(PidginInviteDialog *dialog, const gchar *contact);
@@ -109,7 +109,7 @@ void pidgin_invite_dialog_set_contact(Pi
  *
  * Returns: (transfer none): The contact that was entered.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_invite_dialog_get_contact(PidginInviteDialog *dialog);
@@ -122,7 +122,7 @@ const gchar *pidgin_invite_dialog_get_co
  * Sets the message to be displayed in @dialog.  The main use case is to
  * prepopulate the message.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_invite_dialog_set_message(PidginInviteDialog *dialog, const gchar *message);
@@ -136,7 +136,7 @@ void pidgin_invite_dialog_set_message(Pi
  *
  * Returns: (transfer none): The message that was entered in @dialog.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_invite_dialog_get_message(PidginInviteDialog *dialog);
@@ -150,7 +150,7 @@ const gchar *pidgin_invite_dialog_get_me
  * Returns: (transfer none): The #PurpleChatConversation that @dialog was
  *          created with.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleChatConversation *pidgin_invite_dialog_get_conversation(PidginInviteDialog *dialog);
diff --git a/pidgin/pidginkeypad.h b/pidgin/pidginkeypad.h
--- a/pidgin/pidginkeypad.h
+++ b/pidgin/pidginkeypad.h
@@ -39,7 +39,7 @@
  * #PidginKeypad is a widget that displays a DTMF keypad, with the digits 0-9,
  * an asterisk, and a number sign.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 G_BEGIN_DECLS
@@ -56,7 +56,7 @@ G_DECLARE_FINAL_TYPE(PidginKeypad, pidgi
  *
  * Returns: (transfer full): The new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_keypad_new(void);
@@ -71,7 +71,7 @@ GtkWidget *pidgin_keypad_new(void);
  * If key events are handled by the keypad, the DTMF digits will be captured
  * and trigger the pressed signal on @keypad.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_keypad_set_key_capture_widget(PidginKeypad *keypad, GtkWidget *widget);
diff --git a/pidgin/pidginnotificationaddcontact.h b/pidgin/pidginnotificationaddcontact.h
--- a/pidgin/pidginnotificationaddcontact.h
+++ b/pidgin/pidginnotificationaddcontact.h
@@ -46,7 +46,7 @@ G_BEGIN_DECLS
  * notifications from [class@Purple.NotificationManager] for
  * [class@Purple.AddContactRequest].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_NOTIFICATION_ADD_CONTACT (pidgin_notification_add_contact_get_type())
@@ -65,7 +65,7 @@ G_DECLARE_FINAL_TYPE(PidginNotificationA
  * Returns: (transfer full): The new #PidginNotificationAddContact
  *          instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_notification_add_contact_new(PurpleNotification *notification);
@@ -78,7 +78,7 @@ GtkWidget *pidgin_notification_add_conta
  *
  * Returns: (transfer none): The notification.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleNotification *pidgin_notification_add_contact_get_notification(PidginNotificationAddContact *request);
diff --git a/pidgin/pidginnotificationaddcontact.c b/pidgin/pidginnotificationaddcontact.c
--- a/pidgin/pidginnotificationaddcontact.c
+++ b/pidgin/pidginnotificationaddcontact.c
@@ -253,7 +253,7 @@ pidgin_notification_add_contact_class_in
 	 *
 	 * The [type@Purple.Notification] that is being displayed.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_NOTIFICATION] = g_param_spec_object(
 		"notification", "notification",
diff --git a/pidgin/pidginnotificationauthorizationrequest.h b/pidgin/pidginnotificationauthorizationrequest.h
--- a/pidgin/pidginnotificationauthorizationrequest.h
+++ b/pidgin/pidginnotificationauthorizationrequest.h
@@ -46,7 +46,7 @@ G_BEGIN_DECLS
  * notifications from [class@Purple.NotificationManager] for authorization
  * requests.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_NOTIFICATION_AUTHORIZATION_REQUEST (pidgin_notification_authorization_request_get_type())
@@ -65,7 +65,7 @@ G_DECLARE_FINAL_TYPE(PidginNotificationA
  * Returns: (transfer full): The new #PidginNotificationAuthorizationRequest
  *          instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_notification_authorization_request_new(PurpleNotification *notification);
@@ -78,7 +78,7 @@ GtkWidget *pidgin_notification_authoriza
  *
  * Returns: (transfer none): The notification.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleNotification *pidgin_notification_authorization_request_get_notification(PidginNotificationAuthorizationRequest *request);
diff --git a/pidgin/pidginnotificationauthorizationrequest.c b/pidgin/pidginnotificationauthorizationrequest.c
--- a/pidgin/pidginnotificationauthorizationrequest.c
+++ b/pidgin/pidginnotificationauthorizationrequest.c
@@ -285,7 +285,7 @@ pidgin_notification_authorization_reques
 	 *
 	 * The [type@Purple.AuthorizationRequestInfo] that this notification is for.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_NOTIFICATION] = g_param_spec_object(
 		"notification", "notification",
diff --git a/pidgin/pidginnotificationconnectionerror.h b/pidgin/pidginnotificationconnectionerror.h
--- a/pidgin/pidginnotificationconnectionerror.h
+++ b/pidgin/pidginnotificationconnectionerror.h
@@ -45,7 +45,7 @@ G_BEGIN_DECLS
  * #PidginNotificationConnectionError is a widget that displays notifications from
  * [class@Purple.NotificationManager].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_NOTIFICATION_CONNECTION_ERROR (pidgin_notification_connection_error_get_type())
@@ -64,7 +64,7 @@ G_DECLARE_FINAL_TYPE(PidginNotificationC
  * Returns: (transfer full): The new #PidginNotificationConnectionError
  *          instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_notification_connection_error_new(PurpleNotification *notification);
@@ -77,7 +77,7 @@ GtkWidget *pidgin_notification_connectio
  *
  * Returns: (transfer none): The notification.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleNotification *pidgin_notification_connection_error_get_notification(PidginNotificationConnectionError *error);
diff --git a/pidgin/pidginnotificationconnectionerror.c b/pidgin/pidginnotificationconnectionerror.c
--- a/pidgin/pidginnotificationconnectionerror.c
+++ b/pidgin/pidginnotificationconnectionerror.c
@@ -224,7 +224,7 @@ pidgin_notification_connection_error_cla
 	 *
 	 * The [type@Purple.ConnectionErrorInfo] that this notification is for.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 */
 	properties[PROP_NOTIFICATION] = g_param_spec_object(
 		"notification", "notification",
diff --git a/pidgin/pidginnotificationlist.h b/pidgin/pidginnotificationlist.h
--- a/pidgin/pidginnotificationlist.h
+++ b/pidgin/pidginnotificationlist.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  * #PidginNotificationList is a widget that displays notifications from
  * [class@Purple.NotificationManager].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_NOTIFICATION_LIST (pidgin_notification_list_get_type())
@@ -58,7 +58,7 @@ G_DECLARE_FINAL_TYPE(PidginNotificationL
  *
  * Returns: (transfer full): The new #PidginNotificationList instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_notification_list_new(void);
diff --git a/pidgin/pidginpluginsdialog.h b/pidgin/pidginpluginsdialog.h
--- a/pidgin/pidginpluginsdialog.h
+++ b/pidgin/pidginpluginsdialog.h
@@ -38,7 +38,7 @@ G_BEGIN_DECLS
  *
  * A dialog that allows the user to configure their plugins.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_PLUGINS_DIALOG (pidgin_plugins_dialog_get_type())
@@ -54,7 +54,7 @@ G_DECLARE_FINAL_TYPE(PidginPluginsDialog
  *
  * Returns: (transfer full): The new #PidginPluginsDialog.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_plugins_dialog_new(void);
diff --git a/pidgin/pidginpluginsmenu.h b/pidgin/pidginpluginsmenu.h
--- a/pidgin/pidginpluginsmenu.h
+++ b/pidgin/pidginpluginsmenu.h
@@ -39,7 +39,7 @@ G_BEGIN_DECLS
  * #PidginPluginsMenu is a [class@Gio.MenuModel] that automatically updates
  * itself when plugins are loaded and unloaded.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_PLUGINS_MENU (pidgin_plugins_menu_get_type())
@@ -55,7 +55,7 @@ G_DECLARE_FINAL_TYPE(PidginPluginsMenu, 
  *
  * Returns: (transfer full): The new #PidginPluginsMenu instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GMenuModel *pidgin_plugins_menu_new(void);
diff --git a/pidgin/pidginpresenceicon.h b/pidgin/pidginpresenceicon.h
--- a/pidgin/pidginpresenceicon.h
+++ b/pidgin/pidginpresenceicon.h
@@ -39,7 +39,7 @@
  * A #GtkImage subclass that will automatically update when the given presence
  * changes.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_PRESENCE_ICON (pidgin_presence_icon_get_type())
@@ -60,7 +60,7 @@ G_BEGIN_DECLS
  *
  * Returns: (transfer full): The new presence icon.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_presence_icon_new(PurplePresence *presence, const gchar *fallback, GtkIconSize icon_size);
@@ -73,7 +73,7 @@ GtkWidget *pidgin_presence_icon_new(Purp
  *
  * Returns: (transfer none): The #PurplePresence if set otherwise %NULL.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurplePresence *pidgin_presence_icon_get_presence(PidginPresenceIcon *icon);
@@ -85,7 +85,7 @@ PurplePresence *pidgin_presence_icon_get
  *
  * Sets the #PurplePresence for @icon to display.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_presence_icon_set_presence(PidginPresenceIcon *icon, PurplePresence *presence);
@@ -98,7 +98,7 @@ void pidgin_presence_icon_set_presence(P
  *
  * Returns: The fallback icon name for @icon.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 const gchar *pidgin_presence_icon_get_fallback(PidginPresenceIcon *icon);
@@ -110,7 +110,7 @@ const gchar *pidgin_presence_icon_get_fa
  *
  * Sets the fallback icon name for @icon to @fallback.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_presence_icon_set_fallback(PidginPresenceIcon *icon, const gchar *fallback);
@@ -123,7 +123,7 @@ void pidgin_presence_icon_set_fallback(P
  *
  * Returns: The #GtkIconSize that @icon is using to render.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkIconSize pidgin_presence_icon_get_icon_size(PidginPresenceIcon *icon);
@@ -135,7 +135,7 @@ GtkIconSize pidgin_presence_icon_get_ico
  *
  * Sets the #GtkIconSize that @icon will use to render the icon.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_presence_icon_set_icon_size(PidginPresenceIcon *icon, GtkIconSize icon_size);
diff --git a/pidgin/pidginprivate.h b/pidgin/pidginprivate.h
--- a/pidgin/pidginprivate.h
+++ b/pidgin/pidginprivate.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * This should only be called internally from Pidgin.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_commands_init(void);
@@ -54,7 +54,7 @@ void pidgin_commands_init(void);
  *
  * This should only be called internally from Pidgin.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_commands_uninit(void);
diff --git a/pidgin/pidginprotocolchooser.h b/pidgin/pidginprotocolchooser.h
--- a/pidgin/pidginprotocolchooser.h
+++ b/pidgin/pidginprotocolchooser.h
@@ -50,7 +50,7 @@ G_DECLARE_FINAL_TYPE(PidginProtocolChoos
  *
  * Returns: (transfer full): The protocol chooser drop down.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_protocol_chooser_new(void);
@@ -64,7 +64,7 @@ GtkWidget *pidgin_protocol_chooser_new(v
  * Returns: (transfer none): The selected [class@Purple.Protocol] or %NULL if
  *          nothing is selected.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleProtocol *pidgin_protocol_chooser_get_protocol(PidginProtocolChooser *chooser);
@@ -77,7 +77,7 @@ PurpleProtocol *pidgin_protocol_chooser_
  * Sets the currently selected protocol of @chooser to the given
  * [class@Purple.Protocol].
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_protocol_chooser_set_protocol(PidginProtocolChooser *chooser, PurpleProtocol *protocol);
diff --git a/pidgin/pidginprotocolchooser.c b/pidgin/pidginprotocolchooser.c
--- a/pidgin/pidginprotocolchooser.c
+++ b/pidgin/pidginprotocolchooser.c
@@ -106,7 +106,7 @@ pidgin_protocol_chooser_class_init(Pidgi
 	 *
 	 * The protocol which is currently selected.
 	 *
-	 * Since: 3.0.0
+	 * Since: 3.0
 	 **/
 	properties[PROP_PROTOCOL] = g_param_spec_object(
 		"protocol",
diff --git a/pidgin/pidgintextbuffer.h b/pidgin/pidgintextbuffer.h
--- a/pidgin/pidgintextbuffer.h
+++ b/pidgin/pidgintextbuffer.h
@@ -49,7 +49,7 @@ G_BEGIN_DECLS
  *
  * Returns: (transfer full) (nullable): The HTML string, which could be empty.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 char *pidgin_text_buffer_get_html(GtkTextBuffer *buffer);
@@ -68,7 +68,7 @@ char *pidgin_text_buffer_get_html(GtkTex
  *
  * Returns: (transfer full) (nullable): The HTML string, which could be empty.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 char *pidgin_text_buffer_get_html_range(GtkTextBuffer *buffer, GtkTextIter *start, GtkTextIter *end);
diff --git a/pidgin/pidginui.h b/pidgin/pidginui.h
--- a/pidgin/pidginui.h
+++ b/pidgin/pidginui.h
@@ -40,7 +40,7 @@ G_BEGIN_DECLS
  *
  * Is a subclass of [class@Purple.Ui] that identifies Pidgin to libpurple.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 #define PIDGIN_TYPE_UI (pidgin_ui_get_type())
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginUi, pidgin_ui
  *
  * Returns: (transfer full): The new instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleUi *pidgin_ui_new(void);
diff --git a/pidgin/pidginversion.h b/pidgin/pidginversion.h
--- a/pidgin/pidginversion.h
+++ b/pidgin/pidginversion.h
@@ -72,7 +72,7 @@
  * A macro that evaluates to the current stable version of Pidgin, in a format
  * that can be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_CUR_STABLE \
 	(G_ENCODE_VERSION(PIDGIN_MAJOR_VERSION, PIDGIN_MINOR_VERSION))
@@ -113,7 +113,7 @@
  * A macro that evaluates to the 2.0 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_0 (G_ENCODE_VERSION(2, 0))
 
@@ -129,7 +129,7 @@
  * A macro that evaluates to the 2.1 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_1 (G_ENCODE_VERSION(2, 1))
 
@@ -149,7 +149,7 @@
  * A macro that evaluates to the 2.2 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_2 (G_ENCODE_VERSION(2, 2))
 
@@ -165,7 +165,7 @@
  * A macro that evaluates to the 2.3 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_3 (G_ENCODE_VERSION(2, 3))
 
@@ -181,7 +181,7 @@
  * A macro that evaluates to the 2.4 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_4 (G_ENCODE_VERSION(2, 4))
 
@@ -197,7 +197,7 @@
  * A macro that evaluates to the 2.5 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_5 (G_ENCODE_VERSION(2, 5))
 
@@ -213,7 +213,7 @@
  * A macro that evaluates to the 2.6 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_6 (G_ENCODE_VERSION(2, 6))
 
@@ -229,7 +229,7 @@
  * A macro that evaluates to the 2.7 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_7 (G_ENCODE_VERSION(2, 7))
 
@@ -245,7 +245,7 @@
  * A macro that evaluates to the 2.8 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_8 (G_ENCODE_VERSION(2, 8))
 
@@ -261,7 +261,7 @@
  * A macro that evaluates to the 2.9 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_9 (G_ENCODE_VERSION(2, 9))
 
@@ -277,7 +277,7 @@
  * A macro that evaluates to the 2.10 version of Pidgin, in a format that can
  * be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_10 (G_ENCODE_VERSION(2, 10))
 
@@ -293,7 +293,7 @@
  * A macro that evaluates to the 2.11 version of Pidgin, in a format that can
  * be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_11 (G_ENCODE_VERSION(2, 11))
 
@@ -309,7 +309,7 @@
  * A macro that evaluates to the 2.12 version of Pidgin, in a format that can
  * be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_12 (G_ENCODE_VERSION(2, 12))
 
@@ -325,7 +325,7 @@
  * A macro that evaluates to the 2.13 version of Pidgin, in a format that can
  * be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_13 (G_ENCODE_VERSION(2, 13))
 
@@ -341,7 +341,7 @@
  * A macro that evaluates to the 2.14 version of Pidgin, in a format that can
  * be used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_2_14 (G_ENCODE_VERSION(2, 14))
 
@@ -357,7 +357,7 @@
  * A macro that evaluates to the 3.0 version of Pidgin, in a format that can be
  * used by the C pre-processor.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_VERSION_3_0 (G_ENCODE_VERSION(3, 0))
 
diff --git a/pidgin/prefs/pidginawayprefs.h b/pidgin/prefs/pidginawayprefs.h
--- a/pidgin/prefs/pidginawayprefs.h
+++ b/pidgin/prefs/pidginawayprefs.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginAwayPrefs is a widget for the preferences window to let users
  * choose and configure their away and idle settings.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_AWAY_PREFS (pidgin_away_prefs_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginAwayPrefs, pi
  *
  * Returns: (transfer full): The new #PidginAwayPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_away_prefs_new(void);
diff --git a/pidgin/prefs/pidginconversationprefs.h b/pidgin/prefs/pidginconversationprefs.h
--- a/pidgin/prefs/pidginconversationprefs.h
+++ b/pidgin/prefs/pidginconversationprefs.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginConversationPrefs is a widget for the preferences window to let users
  * choose and configure their conversation settings.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_CONVERSATION_PREFS (pidgin_conversation_prefs_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginConversationP
  *
  * Returns: (transfer full): The new #PidginConversationPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_conversation_prefs_new(void);
diff --git a/pidgin/prefs/pidgincredentialprefs.h b/pidgin/prefs/pidgincredentialprefs.h
--- a/pidgin/prefs/pidgincredentialprefs.h
+++ b/pidgin/prefs/pidgincredentialprefs.h
@@ -41,7 +41,7 @@ G_BEGIN_DECLS
  *
  * The standard _get_type macro for #PidginCredentialPrefs.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_CREDENTIAL_PREFS (pidgin_credential_prefs_get_type())
 
@@ -55,7 +55,7 @@ G_DECLARE_FINAL_TYPE(PidginCredentialPre
  * #PidginCredentialPrefs is a widget for the preferences window to let users
  * choose and configure their credential provider.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 /**
@@ -65,7 +65,7 @@ G_DECLARE_FINAL_TYPE(PidginCredentialPre
  *
  * Returns: (transfer full): The new #PidginCredentialPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_credential_prefs_new(void);
diff --git a/pidgin/prefs/pidgincredentialproviderrow.h b/pidgin/prefs/pidgincredentialproviderrow.h
--- a/pidgin/prefs/pidgincredentialproviderrow.h
+++ b/pidgin/prefs/pidgincredentialproviderrow.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  *
  * The standard _get_type macro for #PidginCredentialProviderRow.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_CREDENTIAL_PROVIDER_ROW (pidgin_credential_provider_row_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginCredentialPro
  * #PidginCredentialProviderRow is a widget for the preferences window to let
  * users configure their credential provider.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 
 /**
@@ -68,7 +68,7 @@ G_DECLARE_FINAL_TYPE(PidginCredentialPro
  *
  * Returns: (transfer full): The new #PidginCredentialProviderRow instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_credential_provider_row_new(PurpleCredentialProvider *provider);
@@ -81,7 +81,7 @@ GtkWidget *pidgin_credential_provider_ro
  *
  * Returns: (transfer none): The displayed #PurpleCredentialProvider.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 PurpleCredentialProvider *pidgin_credential_provider_row_get_provider(PidginCredentialProviderRow *row);
@@ -94,7 +94,7 @@ PurpleCredentialProvider *pidgin_credent
  *
  * Returns: Whether the row is active.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 gboolean pidgin_credential_provider_row_get_active(PidginCredentialProviderRow *row);
@@ -106,7 +106,7 @@ gboolean pidgin_credential_provider_row_
  *
  * Sets whether the row is displayed as active.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_credential_provider_row_set_active(PidginCredentialProviderRow *row, gboolean active);
diff --git a/pidgin/prefs/pidginnetworkprefs.h b/pidgin/prefs/pidginnetworkprefs.h
--- a/pidgin/prefs/pidginnetworkprefs.h
+++ b/pidgin/prefs/pidginnetworkprefs.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginNetworkPrefs is a widget for the preferences window to let users
  * choose and configure their network settings.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_NETWORK_PREFS (pidgin_network_prefs_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginNetworkPrefs,
  *
  * Returns: (transfer full): The new #PidginNetworkPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_network_prefs_new(void);
diff --git a/pidgin/prefs/pidginprefs.h b/pidgin/prefs/pidginprefs.h
--- a/pidgin/prefs/pidginprefs.h
+++ b/pidgin/prefs/pidginprefs.h
@@ -46,7 +46,7 @@ G_DECLARE_FINAL_TYPE(PidginPrefsWindow, 
  *
  * Initializes all UI-specific preferences.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_prefs_init(void);
@@ -56,7 +56,7 @@ void pidgin_prefs_init(void);
  *
  * Rename legacy prefs and delete some that no longer exist.
  *
- * Since: 2.0.0
+ * Since: 2.0
  */
 PIDGIN_AVAILABLE_IN_ALL
 void pidgin_prefs_update_old(void);
diff --git a/pidgin/prefs/pidginproxyprefs.h b/pidgin/prefs/pidginproxyprefs.h
--- a/pidgin/prefs/pidginproxyprefs.h
+++ b/pidgin/prefs/pidginproxyprefs.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginProxyPrefs is a widget for the preferences window to let users
  * choose and configure their proxy settings.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_PROXY_PREFS (pidgin_proxy_prefs_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginProxyPrefs, p
  *
  * Returns: (transfer full): The new #PidginProxyPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_proxy_prefs_new(void);
diff --git a/pidgin/prefs/pidginvvprefs.h b/pidgin/prefs/pidginvvprefs.h
--- a/pidgin/prefs/pidginvvprefs.h
+++ b/pidgin/prefs/pidginvvprefs.h
@@ -42,7 +42,7 @@ G_BEGIN_DECLS
  * #PidginVVPrefs is a widget for the preferences window to let users
  * choose and configure their voice and video settings.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 #define PIDGIN_TYPE_VV_PREFS (pidgin_vv_prefs_get_type())
 
@@ -57,7 +57,7 @@ G_DECLARE_FINAL_TYPE(PidginVVPrefs, pidg
  *
  * Returns: (transfer full): The new #PidginVVPrefs instance.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 GtkWidget *pidgin_vv_prefs_new(void);
@@ -69,7 +69,7 @@ GtkWidget *pidgin_vv_prefs_new(void);
  * Disable any test pipelines that may be playing on this widget. This may be
  * used when switching focus or views to a different widget.
  *
- * Since: 3.0.0
+ * Since: 3.0
  */
 PIDGIN_AVAILABLE_IN_3_0
 void pidgin_vv_prefs_disable_test_pipelines(PidginVVPrefs *prefs);
