Index: src/views/pages/authorize-interaction.ejs
===================================================================
--- src/views/pages/authorize-interaction.ejs	(revision 41a7637a2e5b561b6a96b9a2791ddd41145c13c3)
+++ src/views/pages/authorize-interaction.ejs	(revision 7d932ce99c5c723eafe823cbe34b8bf8d5bf884a)
@@ -1,4 +1,22 @@
 <div class="auth-interact">
-  <% if (typeof sent !== 'undefined' && sent) { %>
+  <% if (typeof manage !== 'undefined' && manage) { %>
+    <h1 class="auth-interact-title"><%= t('fedi.manage_title') %></h1>
+    <% if (!manage.length) { %><p class="auth-interact-note"><%= t('fedi.manage_empty') %></p><% } %>
+    <ol class="comments-list">
+      <% manage.forEach(function(m){ %>
+        <li class="comment">
+          <div class="comment-body">
+            <div class="comment-content"><%- m.content %></div>
+            <div class="comment-actions">
+              <% if (m.to_handle) { %><span class="fedi-handle">→ <%= m.to_handle %></span><% } %>
+              <form method="post" action="/fediverse/<%= m.id %>/delete" onsubmit="return confirm('<%= t('fedi.delete_confirm') %>')">
+                <button type="submit" class="comment-delete-btn"><%= t('comments.delete') %></button>
+              </form>
+            </div>
+          </div>
+        </li>
+      <% }); %>
+    </ol>
+  <% } else if (typeof sent !== 'undefined' && sent) { %>
     <h1 class="auth-interact-title"><%= t('fedi.remote_sent_title') %></h1>
     <p class="auth-interact-note"><%= t('fedi.remote_sent') %></p>
Index: src/views/pages/post.ejs
===================================================================
--- src/views/pages/post.ejs	(revision 41a7637a2e5b561b6a96b9a2791ddd41145c13c3)
+++ src/views/pages/post.ejs	(revision 7d932ce99c5c723eafe823cbe34b8bf8d5bf884a)
@@ -72,6 +72,5 @@
   <% } %>
 
-  <!-- Fediverse interactions (inbound replies / likes / boosts via ActivityPub) -->
-  <!-- Mirrors the native comment markup/classes so it looks identical. -->
+  <!-- Fediverse interactions (threaded: inbound replies/likes/boosts + our replies) -->
   <% if (typeof fediverse !== 'undefined' && fediverse && fediverse.total > 0) { %>
     <section class="post-fediverse post-comments" id="fediverse">
@@ -80,61 +79,10 @@
         <span title="<%= t('fedi.likes') %>">⭐ <%= fediverse.likeCount %></span>
         <span title="<%= t('fedi.boosts') %>">🔁 <%= fediverse.announceCount %></span>
-        <span title="<%= t('fedi.replies') %>">💬 <%= fediverse.replies.length %></span>
+        <span title="<%= t('fedi.replies') %>">💬 <%= (fediverse.thread || []).length %></span>
       </p>
-      <% if (fediverse.replies.length) { %>
+      <% if (fediverse.thread && fediverse.thread.length) { %>
         <ol class="comments-list">
-          <% fediverse.replies.forEach(function(r) { %>
-            <li class="comment">
-              <div class="comment-avatar">
-                <% if (r.actor_icon) { %><img src="<%= r.actor_icon %>" alt="" loading="lazy">
-                <% } else { %><span><%= (r.actor_name || '?').charAt(0).toUpperCase() %></span><% } %>
-              </div>
-              <div class="comment-body">
-                <div class="comment-meta">
-                  <a class="comment-author" href="<%= r.actor_url %>" rel="nofollow noopener" target="_blank"><%= r.actor_name %></a>
-                  <span class="fedi-handle"><%= r.actor_handle %></span>
-                  <% if (r.published || r.created_at) { %><span class="comment-time"><%= formatDateTime(r.published || r.created_at) %></span><% } %>
-                </div>
-                <div class="comment-content"><%- r.content %></div>
-
-                <% if (typeof canManageSite !== 'undefined' && canManageSite) { %>
-                  <details class="fedi-replybox">
-                    <summary class="comment-reply-btn fedi-reply-toggle"><%= t('fedi.reply') %></summary>
-                    <form method="post" action="<%= _base %>/posts/<%= post.slug %>/fedi-reply" class="comment-reply-form">
-                      <input type="hidden" name="interaction_id" value="<%= r.id %>">
-                      <textarea name="text" rows="3" required placeholder="<%= t('fedi.reply_ph') %>"></textarea>
-                      <div class="comment-reply-form-actions">
-                        <button type="submit" class="btn btn-primary"><%= t('fedi.send') %></button>
-                      </div>
-                    </form>
-                  </details>
-                <% } else if (r.object_uri) { %>
-                  <div class="comment-actions">
-                    <button type="button" class="comment-reply-btn fedi-remote-reply-btn" data-fedi-uri="<%= r.object_uri %>" data-fedi-prompt="<%= t('fedi.remote_prompt') %>">
-                      <svg viewBox="0 0 24 24" width="13" height="13" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 17 4 12 9 7"/><path d="M20 18v-2a4 4 0 0 0-4-4H4"/></svg>
-                      <%= t('fedi.remote_reply_short') %>
-                    </button>
-                  </div>
-                <% } %>
-
-                <% var mine = (typeof fediverse.outReplies !== 'undefined' ? fediverse.outReplies : []).filter(function(o){ return o.in_reply_to && o.in_reply_to === r.object_uri; }); %>
-                <% if (mine.length) { %>
-                  <ol class="comment-replies">
-                    <% mine.forEach(function(o){ %>
-                      <li class="comment comment-reply">
-                        <div class="comment-avatar">
-                          <% if (typeof siteAvatar !== 'undefined' && siteAvatar) { %><img src="<%= siteAvatar %>" alt="">
-                          <% } else { %><span><%= t('fedi.you').charAt(0).toUpperCase() %></span><% } %>
-                        </div>
-                        <div class="comment-body">
-                          <div class="comment-meta"><span class="comment-author"><%= t('fedi.you') %></span></div>
-                          <div class="comment-content"><%- o.content %></div>
-                        </div>
-                      </li>
-                    <% }); %>
-                  </ol>
-                <% } %>
-              </div>
-            </li>
+          <% fediverse.thread.forEach(function(n){ %>
+            <li class="comment"><%- include('../partials/fedi-node', { n: n }) %></li>
           <% }); %>
         </ol>
