Index: src/services/ActivityPubService.js
===================================================================
--- src/services/ActivityPubService.js	(revision 594cc50a8129da2718ac2bcd302e38991cd42653)
+++ src/services/ActivityPubService.js	(revision 2826bb97323aa77bce570c916487709c4266732a)
@@ -121,4 +121,7 @@
   for (const m of body.matchAll(/<img\b[^>]*\bsrc="([^"]+)"[^>]*>/gi)) urls.push(abs(m[1]));
   body = body.replace(/<img\b[^>]*>/gi, '');
+  // Strip Klonkt audio shortcodes ([[track:…]] etc.) — they'd federate raw as
+  // ugly text (audio federation itself is a later phase).
+  body = body.replace(/\[\[(track|album|playlist):[^\]]+\]\]/gi, '');
   const seen = new Set();
   const attachment = urls.filter(Boolean)
@@ -488,4 +491,8 @@
   const actor = await fetchActor(actorUri).catch(() => null);
   const ai = actorInfo(actor, actorUri);
+  const rawHtml = String(note.content || '').replace(/\[\[(track|album|playlist):[^\]]+\]\]/gi, '');
+  const images = (Array.isArray(note.attachment) ? note.attachment : [])
+    .filter((a) => a && a.url && (!a.mediaType || /^image\//i.test(a.mediaType)))
+    .map((a) => a.url);
   return {
     object_uri: note.id,
@@ -495,4 +502,7 @@
     actor_name: ai.name,
     actor_icon: ai.icon,
+    url: note.url || url,
+    content: HtmlSanitizerService.sanitize(rawHtml),       // full, sanitized
+    images,
     preview: HtmlSanitizerService.toPlainText(note.content || '').slice(0, 240),
   };
Index: src/services/i18n.js
===================================================================
--- src/services/i18n.js	(revision 594cc50a8129da2718ac2bcd302e38991cd42653)
+++ src/services/i18n.js	(revision 2826bb97323aa77bce570c916487709c4266732a)
@@ -109,5 +109,5 @@
     'fedi.heading': 'Vanuit de fediverse', 'fedi.likes': 'sterren', 'fedi.boosts': 'boosts', 'fedi.replies': 'Reacties uit de fediverse',
     'fedi.reply': 'Reageer', 'fedi.reply_ph': 'Je antwoord aan de fediverse…', 'fedi.send': 'Versturen', 'fedi.you': 'Jij',
-    'fedi.remote_title': 'Reageer via de fediverse', 'fedi.remote_reply': 'Reageer via de fediverse', 'fedi.remote_prompt': 'Je fediverse-adres (bv. @jij@mastodon.social):', 'fedi.remote_notfound': 'Kon die post niet ophalen. Plak de volledige post-URL:', 'fedi.remote_load': 'Ophalen', 'fedi.remote_replying_to': 'Je reageert op', 'fedi.remote_as': 'Wordt verzonden als {site}.',
+    'fedi.remote_title': 'Reageer via de fediverse', 'fedi.remote_reply': 'Reageer via de fediverse', 'fedi.remote_prompt': 'Je fediverse-adres (bv. @jij@mastodon.social):', 'fedi.remote_notfound': 'Kon die post niet ophalen. Plak de volledige post-URL:', 'fedi.remote_load': 'Ophalen', 'fedi.remote_replying_to': 'Je reageert op', 'fedi.remote_as': 'Wordt verzonden als {site}.', 'fedi.remote_view_original': 'Bekijk de hele post + reacties op de bron →',
     'comments.to_start': 'om de conversatie te starten.',
     'comments.reply': 'Reageer', 'comments.delete': 'Verwijder', 'comments.cancel': 'Annuleren',
@@ -1104,5 +1104,5 @@
     'fedi.heading': 'From the fediverse', 'fedi.likes': 'favourites', 'fedi.boosts': 'boosts', 'fedi.replies': 'Replies from the fediverse',
     'fedi.reply': 'Reply', 'fedi.reply_ph': 'Your reply to the fediverse…', 'fedi.send': 'Send', 'fedi.you': 'You',
-    'fedi.remote_title': 'Reply via the fediverse', 'fedi.remote_reply': 'Reply via the fediverse', 'fedi.remote_prompt': 'Your fediverse address (e.g. @you@mastodon.social):', 'fedi.remote_notfound': 'Could not fetch that post. Paste the full post URL:', 'fedi.remote_load': 'Fetch', 'fedi.remote_replying_to': 'Replying to', 'fedi.remote_as': 'Sent as {site}.',
+    'fedi.remote_title': 'Reply via the fediverse', 'fedi.remote_reply': 'Reply via the fediverse', 'fedi.remote_prompt': 'Your fediverse address (e.g. @you@mastodon.social):', 'fedi.remote_notfound': 'Could not fetch that post. Paste the full post URL:', 'fedi.remote_load': 'Fetch', 'fedi.remote_replying_to': 'Replying to', 'fedi.remote_as': 'Sent as {site}.', 'fedi.remote_view_original': 'View the full post + comments on the source →',
     'comments.to_start': 'to start the conversation.',
     'comments.reply': 'Reply', 'comments.delete': 'Delete', 'comments.cancel': 'Cancel',
@@ -2097,5 +2097,5 @@
     'fedi.heading': 'Aus dem Fediverse', 'fedi.likes': 'Favoriten', 'fedi.boosts': 'Boosts', 'fedi.replies': 'Antworten aus dem Fediverse',
     'fedi.reply': 'Antworten', 'fedi.reply_ph': 'Deine Antwort an das Fediverse…', 'fedi.send': 'Senden', 'fedi.you': 'Du',
-    'fedi.remote_title': 'Über das Fediverse antworten', 'fedi.remote_reply': 'Über das Fediverse antworten', 'fedi.remote_prompt': 'Deine Fediverse-Adresse (z.B. @du@mastodon.social):', 'fedi.remote_notfound': 'Beitrag konnte nicht geladen werden. Füge die vollständige Beitrags-URL ein:', 'fedi.remote_load': 'Laden', 'fedi.remote_replying_to': 'Antwort an', 'fedi.remote_as': 'Wird als {site} gesendet.',
+    'fedi.remote_title': 'Über das Fediverse antworten', 'fedi.remote_reply': 'Über das Fediverse antworten', 'fedi.remote_prompt': 'Deine Fediverse-Adresse (z.B. @du@mastodon.social):', 'fedi.remote_notfound': 'Beitrag konnte nicht geladen werden. Füge die vollständige Beitrags-URL ein:', 'fedi.remote_load': 'Laden', 'fedi.remote_replying_to': 'Antwort an', 'fedi.remote_as': 'Wird als {site} gesendet.', 'fedi.remote_view_original': 'Ganzen Beitrag + Kommentare an der Quelle ansehen →',
     'comments.to_start': 'um das Gespräch zu starten.',
     'comments.reply': 'Antworten', 'comments.delete': 'Löschen', 'comments.cancel': 'Abbrechen',
Index: src/views/pages/authorize-interaction.ejs
===================================================================
--- src/views/pages/authorize-interaction.ejs	(revision 594cc50a8129da2718ac2bcd302e38991cd42653)
+++ src/views/pages/authorize-interaction.ejs	(revision 2826bb97323aa77bce570c916487709c4266732a)
@@ -14,7 +14,14 @@
       <span class="fedi-handle"><%= target.actor_handle %></span>
     </p>
-    <% if (target.preview) { %>
-      <blockquote class="auth-interact-preview"><%= target.preview %></blockquote>
-    <% } %>
+    <blockquote class="auth-interact-preview">
+      <% if (target.content) { %><div class="auth-interact-content"><%- target.content %></div>
+      <% } else if (target.preview) { %><%= target.preview %><% } %>
+      <% (target.images || []).forEach(function(im){ %>
+        <img class="auth-interact-img" src="<%= im %>" alt="" loading="lazy">
+      <% }); %>
+      <% if (target.url || uri) { %>
+        <p class="auth-interact-orig"><a href="<%= target.url || uri %>" target="_blank" rel="nofollow noopener"><%= t('fedi.remote_view_original') %></a></p>
+      <% } %>
+    </blockquote>
     <form method="post" action="/authorize_interaction" class="auth-interact-form">
       <input type="hidden" name="uri" value="<%= uri %>">
@@ -46,3 +53,9 @@
   .auth-interact-actions { display: flex; gap: .5rem; align-items: center; }
   .auth-interact-note { color: var(--ink-soft, #999); font-size: .85rem; margin-top: 1rem; }
+  .auth-interact-content { line-height: 1.55; }
+  .auth-interact-content p { margin: .35rem 0; }
+  .auth-interact-content p:first-child { margin-top: 0; }
+  .auth-interact-img { max-width: 100%; height: auto; border-radius: 10px; margin: .5rem 0 0; display: block; }
+  .auth-interact-orig { margin: .75rem 0 0; font-size: .85rem; }
+  .auth-interact-orig a { color: var(--accent, #06c); }
 </style>
