Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision b4af6f3a028053e65a6bdb83c3202bd7efa3e641)
+++ src/routes/posts.js	(revision 9eb6e1bceee7058678085d70abe8ff4dffe8bff8)
@@ -876,5 +876,8 @@
   let target = null, followTarget = null;
   if (!sent && !followed && !voted && !reported && uri) {
-    try { target = await ActivityPubService.resolveRemoteNote(uri); } catch { /* ignore */ }
+    // Ondertekend als de site, net als de zoekbalk: een post die alleen voor
+    // volgers zichtbaar is weigert een anonieme GET, en dan zegt deze pagina
+    // "niet gevonden" over een post die de preview wel liet zien.
+    try { target = await ActivityPubService.resolveRemoteNote(uri, site ? { asSlug: site.slug } : {}); } catch { /* ignore */ }
     // Not a post? Maybe the URI is a profile/actor → offer Follow, not reply.
     if (!target) { try { followTarget = await ActivityPubService.resolveRemoteActor(uri); } catch { /* ignore */ } }
@@ -895,4 +898,8 @@
     reacted: (site && uri) ? ActivityPubService.getReaction(site.slug, uri) : { liked: false, boosted: false },
     siteTitle: site ? site.title : '',
+    // De knoppen in de preview wijzen hierheen met ?reply=1 of ?report=1: dan
+    // staat dat deel al open en hoef je niet twee keer te tikken.
+    replyOpen: !!req.query.reply,
+    reportOpen: !!req.query.report,
   });
 });
