Add Vespers' ferial Preces, sourced from Tridentine 1906/1910

Monastic 1617 has no ferial Preces at Vespers, same gap Lauds already
had — the fuller "Preces feriales Vespera" is byte-for-byte the Lauds
ferial Preces with Psalm 129 swapped for Psalm 50 in the source, live-
verified against the same clean Advent feria already used for Lauds.
The short Sunday/feast form turns out to be identical at both hours too,
so it's reused directly rather than duplicated.

Factors the shared ferial-or-vigil predicate out of hours/lauds.ts into
resolve-common.ts's isFerialOrVigil so both hours' -preces cases resolve
it the same way instead of keeping two copies in sync by hand.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-13 21:30:01 -04:00
parent ce954fea9a
commit 4d88568c42
12 changed files with 242 additions and 20 deletions
+5
View File
@@ -13,6 +13,7 @@ import {
resolveOfficeWinner,
verifiedText,
seasonalOfficeSuffix,
isFerialOrVigil,
} from './resolve-common';
import vespersDefinitionData from '../data/hours/vespers.yml';
import vespersAntiphonsData from '../data/hours/vespers-antiphons.yml';
@@ -122,6 +123,10 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
{ kind: 'antiphon', text: full },
];
}
case 'vespers-preces': {
const id = isFerialOrVigil(day) ? 'vespers-preces-feriales' : 'lauds-short-litany';
return [{ kind: 'preces', text: resolveCommon(id) }];
}
case 'day-collects':
return getDayCollects(day);
case 'preces':