Relocate Immaculate Heart of Mary off Aug 22 to Easter+69
Fixed Aug 22 collided outright with the Assumption's own octave-closing day (both this project's blended calendar tracks are kept deliberately, so one shouldn't permanently suppress the other). Moved IHM to the Saturday after the Feast of the Sacred Heart -- its real diocesan date from 1914 until Pius XII's 1944 fixed-date decree, and also the date the 1969 reform returned to. Required real new mechanism, not just a data move: a new bespoke calendar/index.ts override (applyImmaculateHeart, following the existing applyMarianSaturday/applyChristTheKing precedent), a move from the sanctoral saints store to the temporal-feasts store (different propers lookup entirely), and a real bug fix in matins.ts's nocturnReadingIds, which only ever picked up a *sanctoral* winner's own reading file. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VZSAgRi4QE4XRTqVto93zA
This commit is contained in:
+7
-1
@@ -300,7 +300,13 @@ function ferialPsalmodyThreeNocturns(day: LiturgicalDay): [ResolvedPart[], Resol
|
||||
* user's own "be generous, not winner-takes-all" instruction (2026-08). */
|
||||
function nocturnReadingIds(day: LiturgicalDay, temporalId: string): string[] {
|
||||
const ids = new Set<string>();
|
||||
if (day.winner.kind === 'sanctoral') ids.add(day.winner.id);
|
||||
// Not gated to `kind === 'sanctoral'` -- a named temporal override (e.g.
|
||||
// Immaculate Heart of Mary, calendar/index.ts's applyImmaculateHeart)
|
||||
// has its own authored nocturn-readings file keyed by its own id too,
|
||||
// distinct from the plain governing-Sunday `temporalId` added below.
|
||||
// Harmless to include unconditionally: on an ordinary day `day.winner.id`
|
||||
// already equals `temporalId`, so the Set just dedupes.
|
||||
ids.add(day.winner.id);
|
||||
for (const c of day.commemorations) {
|
||||
if (c.kind === 'sanctoral') ids.add(c.id);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,12 @@ export function resolveCommon(id: string): ResolvedText {
|
||||
// override-eligible — see hours/lauds.ts's getPsalmodyOverrideFor, which
|
||||
// shares this set (imported from here, not duplicated) since it's the
|
||||
// same "does this temporal identity carry its own real office" question.
|
||||
export const ALWAYS_OVERRIDE_TEMPORAL_IDS = new Set(['marian-saturday', 'christ-the-king', 'christmas-octave-sunday']);
|
||||
export const ALWAYS_OVERRIDE_TEMPORAL_IDS = new Set([
|
||||
'marian-saturday',
|
||||
'christ-the-king',
|
||||
'christmas-octave-sunday',
|
||||
'immaculate-heart-of-mary',
|
||||
]);
|
||||
|
||||
/**
|
||||
* Which identity's own propers actually supply the office's content
|
||||
|
||||
Reference in New Issue
Block a user