From 44cb30b7ffcd776b26952080d1ec3587282a3db4 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 28 Jul 2026 10:35:21 +0200 Subject: feat(of): seasonal weekday ferials from catholic-resources.org + date-based late Advent Re-sources the proper weekdays of Advent (weeks 1-3), Lent, and Eastertide from catholic-resources.org (scripts/genlect-of-season-ferials-cr.py; single-cycle, so both -I/-II keys get the same readings). The diff caught real niedziela defects: - Easter weekday first readings contaminated (easter-3-mon had 1 Cor 15 instead of Acts 6:8-15; easter-4-thu had Rev 12 instead of Acts 13:13-25). - The Easter octave weekdays (Easter Mon-Sat) had no readings at all. - Stray psalm-numbering artifacts (147A(146), Ps42(41)) cleared. Late Advent (Dec 17-24) is proper to the DATE, not the Advent week, so temporal.go now keys those days 'advent-dec-' (fixing the same by-date/by-week collision as the OT numbering) and the generator supplies them (Dec 17 = the genealogy Matt 1:1-17; Dec 24 = the Benedictus). 157 seasonal ferial-days render across 2026-2028 with 1 residual gap (christmas-octave-fri). Adds TestOFSeasonalFerials, credits the source, bumps to 0.43.0. Christmas-season weekdays (Dec 29-31, Jan 2-5) remain niedziela-sourced (CR's shifted layout + Epiphany-dependent assignment -- a documented follow-up). --- internal/calendar/temporal.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'internal/calendar') diff --git a/internal/calendar/temporal.go b/internal/calendar/temporal.go index ab1a742..dadae49 100644 --- a/internal/calendar/temporal.go +++ b/internal/calendar/temporal.go @@ -215,6 +215,11 @@ func temporal(date time.Time, sel Selection) temporalDay { if sun { return sundayDay(Advent, "advent-sunday-"+itoa(week), col, week) } + // From Dec 17 the weekday readings are proper to the DATE (the "O Antiphons" + // days), not the Advent week, so key them by date rather than by week-day. + if privFeria && date.Day() <= 24 { + return ferialDay(Advent, "advent-dec-"+itoa(date.Day()), Violet, week, true) + } return ferialDay(Advent, "advent-"+itoa(week)+"-"+weekdayAbbr(wd), Violet, week, privFeria) case !date.Before(christmasThis): // Dec 25..Dec 31 — Christmas octave -- cgit v1.3