diff --git a/docs/releases.md b/docs/releases.md
index a3a077d7..15018d88 100644
--- a/docs/releases.md
+++ b/docs/releases.md
@@ -1755,8 +1755,9 @@ and the [ntfy Android app](https://github.com/binwiederhier/ntfy-android/release
## Not released yet
-### ntfy server v2.19.0 (UNRELEASED)
+### ntfy server v2.19.x (UNRELEASED)
**Bug fixes + maintenance:**
-* Throttle notification sound in web app to play at most once every 2 seconds
+* Web: Throttle notification sound in web app to play at most once every 2 seconds (similar to [#1550](https://github.com/binwiederhier/ntfy/issues/1550), thanks to [@jlaffaye](https://github.com/jlaffaye) for reporting)
+* Web: Add hover tooltips to icon buttons in web app account and preferences pages ([#1565](https://github.com/binwiederhier/ntfy/issues/1565), thanks to [@jermanuts](https://github.com/jermanuts) for reporting)
diff --git a/web/src/components/Account.jsx b/web/src/components/Account.jsx
index bc5e3000..508d6de2 100644
--- a/web/src/components/Account.jsx
+++ b/web/src/components/Account.jsx
@@ -136,9 +136,11 @@ const ChangePassword = () => {
⬤⬤⬤⬤⬤⬤⬤⬤⬤⬤
{!account?.provisioned ? (
-
-
-
+
+
+
+
+
) : (
@@ -899,12 +901,16 @@ const TokensTable = (props) => {
{token.token !== session.token() && !token.provisioned && (
<>
- handleEditClick(token)} aria-label={t("account_tokens_dialog_title_edit")}>
-
-
- handleDeleteClick(token)} aria-label={t("account_tokens_dialog_title_delete")}>
-
-
+
+ handleEditClick(token)} aria-label={t("account_tokens_dialog_title_edit")}>
+
+
+
+
+ handleDeleteClick(token)} aria-label={t("account_tokens_dialog_title_delete")}>
+
+
+
>
)}
{token.token === session.token() && (
diff --git a/web/src/components/Preferences.jsx b/web/src/components/Preferences.jsx
index 3ef62189..093cc775 100644
--- a/web/src/components/Preferences.jsx
+++ b/web/src/components/Preferences.jsx
@@ -385,12 +385,16 @@ const UserTable = (props) => {
{(!session.exists() || user.baseUrl !== config.base_url) && (
<>
- handleEditClick(user)} aria-label={t("prefs_users_edit_button")}>
-
-
- handleDeleteClick(user)} aria-label={t("prefs_users_delete_button")}>
-
-
+
+ handleEditClick(user)} aria-label={t("prefs_users_edit_button")}>
+
+
+
+
+ handleDeleteClick(user)} aria-label={t("prefs_users_delete_button")}>
+
+
+
>
)}
{session.exists() && user.baseUrl === config.base_url && (
@@ -738,12 +742,16 @@ const ReservationsTable = (props) => {
/>
)}
- handleEditClick(reservation)} aria-label={t("prefs_reservations_edit_button")}>
-
-
- handleDeleteClick(reservation)} aria-label={t("prefs_reservations_delete_button")}>
-
-
+
+ handleEditClick(reservation)} aria-label={t("prefs_reservations_edit_button")}>
+
+
+
+
+ handleDeleteClick(reservation)} aria-label={t("prefs_reservations_delete_button")}>
+
+
+
))}