Keep a short litany + Our Father at Compline on a Double, don't omit
Deploy / deploy (push) Successful in 1m28s
Deploy / deploy (push) Successful in 1m28s
compline-preces.yml was already the secular Tridentine 1906/1910 text word-for-word (verified live against both tracks), so no text change was needed there. The actual gap: both Monastic and secular tracks drop Compline's Preces to nothing on a Double-or-higher, unlike Vespers/Lauds which fall back to a short form. Per explicit request, this is now a deliberate vu-specific deviation from both tracks: on a Double, Compline substitutes the same short Kyrie/Pater-Noster litany Vespers already falls back to on Sundays/feasts, instead of showing nothing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AHXJAWVAabCKX1JgmDh4Rn
This commit is contained in:
+12
-5
@@ -41,11 +41,18 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] {
|
||||
return [{ kind: part.kind, text: resolveCommon(part.textRef.id) }];
|
||||
case 'responsory':
|
||||
return [{ kind: 'responsory', text: resolveResponsory(resolveCommon(part.textRef.id), day) }];
|
||||
case 'preces':
|
||||
if (part.omitOnDouble && isDoubleOrHigher(day.winner)) {
|
||||
return [];
|
||||
}
|
||||
return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||
case 'preces': {
|
||||
// On a Double-or-higher, the full secular Preces (compline-preces —
|
||||
// already the fuller Tridentine 1906/1910 text, see compline.yml's
|
||||
// own header) steps aside for the plain Kyrie/Pater-Noster short
|
||||
// litany (lauds-short-litany, already reused by Vespers' own
|
||||
// 'vespers-preces' case the same way) rather than vanishing
|
||||
// entirely — a deliberate choice to always keep a short litany +
|
||||
// Our Father, even though real practice (both Monastic and
|
||||
// secular) drops Compline's Preces to nothing on a Double.
|
||||
const id = part.omitOnDouble && isDoubleOrHigher(day.winner) ? 'lauds-short-litany' : part.textRef.id;
|
||||
return [{ kind: 'preces', text: resolveCommon(id), label: part.label }];
|
||||
}
|
||||
case 'lesson':
|
||||
return [{ kind: 'lesson', text: resolveCommon(part.textRef.id), label: part.label }];
|
||||
case 'opening-versicle':
|
||||
|
||||
+9
-3
@@ -34,9 +34,15 @@ export type HourPart =
|
||||
// `label`, when given, is shown as a heading (e.g. "Preces", "Pretiosa") —
|
||||
// omitted for parts that are just connective tissue around a reading
|
||||
// (a blessing, a closing dialogue) that don't read as their own section.
|
||||
// `omitOnDouble` drops the whole part on a Double-or-higher feast (real
|
||||
// Preces are suppressed above a certain rank) — see calendar/
|
||||
// isDoubleOrHigher for how far that's actually wired up today.
|
||||
// `omitOnDouble` marks a part that's suppressed above a certain rank on
|
||||
// real Double-or-higher feasts (see calendar/isDoubleOrHigher) — its own
|
||||
// resolver decides what (if anything) replaces it. Compline's own
|
||||
// 'preces' part is the only current user: it substitutes the short
|
||||
// Kyrie/Pater litany (see hours/compline.ts's 'preces' case) rather than
|
||||
// dropping to nothing, a deliberate vu-specific choice (real practice, in
|
||||
// both Monastic and secular tracks, drops Compline's Preces to nothing
|
||||
// on a Double, with no substitute) — the flag still means "not the full
|
||||
// text here," just not "nothing here."
|
||||
| { kind: 'preces'; textRef: PropersRef; label?: string; omitOnDouble?: true }
|
||||
| { kind: 'psalm'; psalmNumber: number; verses?: string; antiphonRef?: PropersRef }
|
||||
| { kind: 'canticle'; canticleId: string; textRef: PropersRef; antiphonRef?: PropersRef }
|
||||
|
||||
Reference in New Issue
Block a user