Index: src/views/pages/messages.ejs
===================================================================
--- src/views/pages/messages.ejs	(revision 5c373b8e846c6510a176f2fa06bfe3e2b6753102)
+++ src/views/pages/messages.ejs	(revision 2b4252c2c84fdd36dbdc75db1a4931f813b18a90)
@@ -2,5 +2,5 @@
   <%- include('../partials/fedi-tabs', { active: 'berichten' }) %>
   <h1 class="msg-title"><%= t('msg.title') %></h1>
-  <% if (typeof success !== 'undefined' && success) { %><div class="alert alert-success"><%= success === 'guardian_accepted' ? t('msg.guard_accepted') : (success === 'guardian_rejected' ? t('msg.guard_rejected') : success) %></div><% } %>
+  <% if (typeof success !== 'undefined' && success) { %><div class="alert alert-success"><%= success === 'guardian_accepted' ? t('msg.guard_accepted') : (success === 'guardian_rejected' ? t('msg.guard_rejected') : (success === 'wave_sent' ? t('msg.wave_sent') : success)) %></div><% } %>
   <% if (typeof error !== 'undefined' && error) { %><div class="alert alert-error"><%= error === 'guardianship' ? t('msg.guard_failed') : error %></div><% } %>
 
Index: src/views/partials/msg-item.ejs
===================================================================
--- src/views/partials/msg-item.ejs	(revision 5c373b8e846c6510a176f2fa06bfe3e2b6753102)
+++ src/views/partials/msg-item.ejs	(revision 2b4252c2c84fdd36dbdc75db1a4931f813b18a90)
@@ -55,4 +55,5 @@
               <% } else if (_t === 'boost') { %><%= t('notif.boosted') %>
               <% } else if (_t === 'report') { %><%= t('notif.reported') %>
+              <% } else if (_t === 'mention' && n.wave) { %>👋 <%= t('msg.waved_at_you') %>
               <% } else if (_t === 'mention') { %><%= t('notif.mentioned') %>
               <% } else if (_t === 'sent') { %><%= t('msg.sent_reply') %>
@@ -67,4 +68,12 @@
             <% if (_t === 'report' && n.content) { %><div class="msg-content"><%= n.content %></div>
             <% } else if ((_t === 'reply' || _t === 'mention' || _t === 'sent') && n.content) { %><div class="msg-content"><%- n.content %></div>
+              <% if (_t === 'mention' && n.wave && n.actorUri && canMutate) { %>
+                <form class="msg-quickreply" method="post" action="<%= (typeof siteUrlBase !== 'undefined' ? siteUrlBase : '') %>/messages/quick-reply" style="display:flex;gap:6px;flex-wrap:wrap;margin-top:6px">
+                  <input type="hidden" name="to" value="<%= n.actorUri %>">
+                  <button class="btn small" name="text" value="<%= t('msg.wave_r1') %>"><%= t('msg.wave_r1') %></button>
+                  <button class="btn small" name="text" value="<%= t('msg.wave_r2') %>"><%= t('msg.wave_r2') %></button>
+                  <button class="btn small" name="text" value="👋"><%= t('msg.wave_back') %></button>
+                </form>
+              <% } %>
             <% } else if (_t === 'poll_done' && n.poll) { %>
               <div class="msg-poll" role="group">
