v1.15.0 — Swappable feed layouts + app tokens
🚀 FediHome v1.15.0 — your site's layout is now yours to pick, and connecting apps no longer means sharing your admin secret.
✨ Added
🗂️ Swappable feed layouts — every feed now renders through a themeable region dispatcher, with two variants: the default Cards (glass cards with cover images) or a new List (a compact, date-led index that fits far more posts per screen). Applies across all your feeds — home, journal, articles, and the public Fediverse feed. Pick it in Admin → Site settings → Appearance, or set LAYOUT_FEED. No restart. (#250 Phase 3)
🔑 Generate scoped app tokens in the admin panel — Admin → Apps → "Generate app token" mints a bearer token with the scopes you pick, and reveals it once (only its hash is stored, exactly as with OAuth tokens). Paste it into any client that takes a token — headless/CI, a read-only reader, or App Store review — without ever sharing your ADMIN_SECRET. Long-lived and revocable from the same screen. (#255)
📝 GET /api/posts returns a body preview — so a native "My Posts" list shows a real snippet for title-less microblog notes instead of "Untitled". (#253)
🔧 Fixed
✍️ Plain-text previews decode HTML entities — search results, link/OG card descriptions and notification bodies now read it's and Tom & Jerry instead of it's and Tom & Jerry. (#267)
📦 Under the hood
This release lands the region×variant contract (resolveLayout + per-theme layout presets) that the rest of the theming system builds on — swappable headers, shells, and full themes are next. Default instances render pixel-identically; nothing changes unless you choose it.
Upgrade: pull and rebuild. No schema changes, no migration, no config changes required.
Full changelog: https://github.com/TemujinCalidius/FediHome/blob/main/CHANGELOG.md