230bfd105e
Upstream commits merged (0820067..c1a6f7e):
- Fedify 2.1.0 upgrade (FEP-5feb, FEP-f1d5/0151, FEP-4f05 Tombstone,
FEP-3b86 Activity Intents, FEP-8fcf Collection Sync)
- Comprehensive security/perf audit: XSS/CSRF fixes, OAuth scopes,
rate limiting, secret hashing, token expiry/rotation, SSRF fix
- Architecture refactoring: syndicator.js, batch-broadcast.js,
init-indexes.js, federation-actions.js; index.js -35%
- CSS split into 15 feature-scoped files + reader-interactions.js
- Mastodon API status creation: content-warning field, linkify fix
Fork-specific resolutions:
- syndicator.js: added addTimelineItem mirror for own Micropub posts
- syndicator.js: fixed missing await on jf2ToAS2Activity (async fn)
- statuses.js: kept DM path, pin/unpin routes, edit post route,
processStatusContent (used by edit), addTimelineItem/lookupWithSecurity/
addNotification imports
- compose.js: kept addNotification + added federation-actions.js imports
- enrich-accounts.js: kept cache-first approach for avatar updates
- ap-notification-card.njk: kept DM lock icon (🔒) for isDirect mentions
41 lines
2.2 KiB
Plaintext
41 lines
2.2 KiB
Plaintext
{% extends "document.njk" %}
|
|
|
|
{% block content %}
|
|
{# Infinite scroll component — must load before Alpine to register via alpine:init #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-infinite-scroll.js"></script>
|
|
{# Card interaction component — apCardInteraction Alpine component #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-interactions.js"></script>
|
|
{# Autocomplete components for explore + popular accounts #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-autocomplete.js"></script>
|
|
{# Tab components — apExploreTabs #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-tabs.js"></script>
|
|
{# Relative timestamps — converts absolute dates to "5m", "3h", "2d" etc. #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-relative-time.js"></script>
|
|
|
|
{# Avatar fallback — remove broken images to reveal initials fallback underneath #}
|
|
<script>document.addEventListener("error",function(e){var t=e.target;if(t.tagName==="IMG"&&t.closest("[data-avatar-fallback]"))t.remove()},true)</script>
|
|
|
|
{# Alpine.js — must load after component scripts so alpine:init listeners are registered first #}
|
|
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js"></script>
|
|
|
|
{# Reader stylesheet — loaded in body is fine for modern browsers #}
|
|
<link rel="stylesheet" href="/assets/@rmdes-indiekit-endpoint-activitypub/reader.css">
|
|
<link rel="stylesheet" href="/assets/@rmdes-indiekit-endpoint-activitypub/reader-links.css">
|
|
|
|
{# AP link interception for internal navigation #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-links.js"></script>
|
|
{# Blurhash placeholder backgrounds for gallery images #}
|
|
<script defer src="/assets/@rmdes-indiekit-endpoint-activitypub/reader-blurhash.js"></script>
|
|
|
|
{% if readerParent %}
|
|
<nav class="ap-breadcrumb" aria-label="Breadcrumb">
|
|
<a href="{{ readerParent.href }}">{{ readerParent.text }}</a>
|
|
<span class="ap-breadcrumb__separator" aria-hidden="true">/</span>
|
|
<span class="ap-breadcrumb__current" aria-current="page">{{ title }}</span>
|
|
</nav>
|
|
{% endif %}
|
|
|
|
{% block readercontent %}
|
|
{% endblock %}
|
|
{% endblock %}
|