+ {# Back button #}
+
+
+ {% if notFound %}
+ {# Post not found — show message with external link #}
+
+
{{ __("activitypub.reader.post.notFound") }}
+ {% if objectUrl %}
+
{{ __("activitypub.reader.post.openExternal") }} →
+ {% endif %}
+
+ {% else %}
+ {# Parent posts (thread context above main post) #}
+ {% if parentPosts and parentPosts.length > 0 %}
+
+
{{ __("activitypub.reader.post.parentPosts") }}
+ {% for parentItem in parentPosts %}
+ {% set item = parentItem %}
+
+ {% include "partials/ap-item-card.njk" %}
+
+ {% endfor %}
+
+ {% endif %}
+
+ {# Main post #}
+
+ {% include "partials/ap-item-card.njk" %}
+
+
+ {# Replies (below main post) #}
+ {% if replyPosts and replyPosts.length > 0 %}
+
+
{{ __("activitypub.reader.post.replies") }}
+ {% for replyItem in replyPosts %}
+ {% set item = replyItem %}
+
+ {% include "partials/ap-item-card.njk" %}
+
+ {% endfor %}
+
+ {% endif %}
+ {% endif %}
+
+{% endblock %}
diff --git a/views/activitypub-reader.njk b/views/activitypub-reader.njk
index 47be2a1..08494cd 100644
--- a/views/activitypub-reader.njk
+++ b/views/activitypub-reader.njk
@@ -34,7 +34,7 @@
{# Timeline items #}
{% if items.length > 0 %}
-
+
{% for item in items %}
{% include "partials/ap-item-card.njk" %}
{% endfor %}
diff --git a/views/activitypub-remote-profile.njk b/views/activitypub-remote-profile.njk
index 7bf7a15..9b26896 100644
--- a/views/activitypub-remote-profile.njk
+++ b/views/activitypub-remote-profile.njk
@@ -46,7 +46,8 @@
{% if icon %}
-

+

{% else %}
{{ name[0] }}
{% endif %}
diff --git a/views/layouts/ap-reader.njk b/views/layouts/ap-reader.njk
index 2ef8bd8..d91cd82 100644
--- a/views/layouts/ap-reader.njk
+++ b/views/layouts/ap-reader.njk
@@ -6,6 +6,10 @@
{# Reader stylesheet — loaded in body is fine for modern browsers #}
+
+
+ {# AP link interception for internal navigation #}
+
{% block readercontent %}
{% endblock %}
diff --git a/views/partials/ap-item-card.njk b/views/partials/ap-item-card.njk
index 99c234a..3792d5b 100644
--- a/views/partials/ap-item-card.njk
+++ b/views/partials/ap-item-card.njk
@@ -17,14 +17,15 @@
{# Reply context if this is a reply #}
{% if item.inReplyTo %}
{% endif %}
{# Author header #}
{% if item.author.photo %}
-
+
{% else %}
{{ item.author.name[0] | upper if item.author.name else "?" }}
{% endif %}
@@ -50,7 +51,7 @@
{# Post title (articles only) #}
{% if item.name %}
{% endif %}
@@ -71,6 +72,9 @@
{% endif %}
+ {# Link previews #}
+ {% include "partials/ap-link-preview.njk" %}
+
{# Media hidden behind CW #}
{% include "partials/ap-item-media.njk" %}
@@ -83,6 +87,9 @@
{% endif %}
+ {# Link previews #}
+ {% include "partials/ap-link-preview.njk" %}
+
{# Media visible directly #}
{% include "partials/ap-item-media.njk" %}
{% endif %}
diff --git a/views/partials/ap-link-preview.njk b/views/partials/ap-link-preview.njk
new file mode 100644
index 0000000..fdecbcb
--- /dev/null
+++ b/views/partials/ap-link-preview.njk
@@ -0,0 +1,34 @@
+{# Link preview cards for external links (OpenGraph) #}
+{% if item.linkPreviews and item.linkPreviews.length > 0 %}
+
+{% endif %}