Add Lauds' ferial Preces (Tridentine 1906/1910), shown on ferial/vigil days
Deploy / deploy (push) Successful in 53s

Monastic 1617 has no Preces feriales at Lauds at all -- content sourced
from Tridentine 1906/1910 per direct instruction, same track as the
Cross suffrage and St. Joseph's suffrage. New lauds-preces-feriales.yml
(Kyrie, Pater noster, the full versicle litany, Psalm 129, closing
versicles) transcribed from a live query against a clean Advent feria,
matching what actually rendered rather than the underlying template's
own conditional markup (the Pope/Bishop and benefactors' versicles are
both dropped live despite being present in the template; the King/nation
versicle pair is kept despite the template's own rubric note suggesting
otherwise).

New `lauds-preces` part kind (hours/types.ts) picks between this and the
existing short Sunday/feast litany (lauds-short-litany.yml, unchanged
content) on a ferial-or-vigil day. Deliberately not the shared
`isSundayOrFeast` predicate, which treats a Vigil as a "feast" -- here a
Vigil needs to land on the ferial side instead, per direct instruction.
Also deliberately wider than the real 1906/1910 rubric itself, which
restricts the fuller form to Advent/Lent/Ember days specifically -- shown
on *every* ferial or vigil day instead, mirroring the identical explicit
choice already made for Prime's own ferial Preces.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-12 07:12:27 -04:00
parent 2f8f744cd1
commit 9c9811a9ed
12 changed files with 209 additions and 8 deletions
+16
View File
@@ -301,6 +301,22 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
const id = getMarianAntiphonId(day);
return [{ kind: 'preces', text: resolveCommon(id), label: getMarianAntiphonLabel(id) }];
}
case 'lauds-preces': {
// Deliberately not `isSundayOrFeast` -- that treats any sanctoral
// winner, Vigils included, as a "feast." Here a Vigil needs to land
// on the ferial side instead (per direct instruction), so it's
// checked for explicitly: a Vigil-ranked sanctoral winner, or a
// bare temporal winner that isn't Sunday and isn't a named
// temporal identity like Marian Saturday or Christ the King (which
// aren't Sunday or a sanctoral winner either, but still aren't a
// bare ferial office -- same reasoning as the Cross suffrage's own
// gate just above).
const isVigil = day.winner.kind === 'sanctoral' && day.winner.rank === 'vigil';
const isBareFeria = day.winner.kind === 'temporal' && !getTemporalFeastRecord(day.winner.id);
const isFerialOrVigil = day.weekday !== 'sunday' && (isVigil || isBareFeria);
const id = isFerialOrVigil ? 'lauds-preces-feriales' : 'lauds-short-litany';
return [{ kind: 'preces', text: resolveCommon(id) }];
}
// Not used by Lauds.
case 'hymn':
case 'lesson':