Episode highlights per series: tag by lane, group on Episodes page, move to Finished Book when series ends; v2.9.1
Publish Container / build (push) Successful in 15m21s

- Highlights get a Series field (Lane A / Lane B / General); legacy highlights count as Lane A
- Episodes page groups highlights under each series' title
- Ending a series (scheduled or manual) moves only that series' highlights onto its Finished Book page; other lane and General stay
- Archived highlights keep working: detail pages, sitemap, scripture index and search include them

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-08 10:46:33 -04:00
1 parent ddcaec0ddf
commit 652b003bd9
9 files changed
+133 -57

No files matched your search

+13
View File
@@ -68,6 +68,9 @@ export interface RedirectRule {
export interface PodcastFeaturedLink {
id: string
// Which series this highlight belongs to: Lane A (primary), Lane B (second), or general.
// Missing = primary (older highlights were all about the one running series).
lane?: 'primary' | 'second' | 'general'
title: string
episodeNumber?: string
summary: string
@@ -110,6 +113,8 @@ export interface FinishedBook {
season: number
// The study that goes with this book, so the card can offer both "Listen" and "Study"
studySlug?: string
// Episode highlights that were featured while this series was playing, kept for its page
highlights?: PodcastFeaturedLink[]
downloadUrl?: string
downloadQrUrl?: string
}
@@ -666,3 +671,11 @@ export const DEFAULTS: SiteContent = {
],
},
}
// Highlights currently featured plus those archived onto finished books (so their detail pages keep working).
export function getAllHighlights(content: Pick<SiteContent, 'podcastFeaturedLinks' | 'finishedBooks'>): PodcastFeaturedLink[] {
return [
...(content.podcastFeaturedLinks ?? []),
...(content.finishedBooks ?? []).flatMap(book => book.highlights ?? []),
]
}