diff --git a/src/data/hours/none.yml b/src/data/hours/none.yml index e86e24a..43a87bb 100644 --- a/src/data/hours/none.yml +++ b/src/data/hours/none.yml @@ -10,9 +10,12 @@ parts: resolve: by-weekday - kind: chapter textRef: { source: common, id: none-capitulum-per-annum } + - kind: preces + textRef: { source: common, id: minor-hour-kyrie-pater } - kind: preces textRef: { source: common, id: minor-hour-preces-feriales } label: Preces + ferialOnly: true - kind: day-collect - kind: preces textRef: { source: common, id: little-hour-conclusio } diff --git a/src/data/hours/sext.yml b/src/data/hours/sext.yml index bb28e24..96f2250 100644 --- a/src/data/hours/sext.yml +++ b/src/data/hours/sext.yml @@ -10,9 +10,12 @@ parts: resolve: by-weekday - kind: chapter textRef: { source: common, id: sext-capitulum-per-annum } + - kind: preces + textRef: { source: common, id: minor-hour-kyrie-pater } - kind: preces textRef: { source: common, id: minor-hour-preces-feriales } label: Preces + ferialOnly: true - kind: day-collect - kind: preces textRef: { source: common, id: little-hour-conclusio } diff --git a/src/data/hours/terce.yml b/src/data/hours/terce.yml index 9ff1d37..f492851 100644 --- a/src/data/hours/terce.yml +++ b/src/data/hours/terce.yml @@ -18,8 +18,13 @@ # Preces (Kyrie/Pater Noster + a short V/R litany) were added after the # chapter/collect, by deliberate choice, even though real Monastic # Terce/Sext/None has none — see minor-hour-preces-feriales.yml's header -# for the reference-engine source and the "every day" simplification, -# mirroring the same deviation already made for Prime. +# for the reference-engine source, mirroring the same deviation already +# made for Prime. Split 2026-09-01, by explicit choice: the Kyrie/Pater +# Noster piece (minor-hour-kyrie-pater) always shows regardless of rank, +# while the further Preces versicles proper (minor-hour-preces-feriales, +# now trimmed to just those) are ferial-only (`ferialOnly: true`) — +# see hours/resolve-common.ts's isFerialOrVigil, the same predicate +# Lauds'/Vespers' own ferial Preces use. id: terce parts: - kind: opening-versicle @@ -29,9 +34,12 @@ parts: resolve: by-weekday - kind: chapter textRef: { source: common, id: terce-capitulum-per-annum } + - kind: preces + textRef: { source: common, id: minor-hour-kyrie-pater } - kind: preces textRef: { source: common, id: minor-hour-preces-feriales } label: Preces + ferialOnly: true - kind: day-collect - kind: preces textRef: { source: common, id: little-hour-conclusio } diff --git a/src/data/propers/common/minor-hour-kyrie-pater.yml b/src/data/propers/common/minor-hour-kyrie-pater.yml new file mode 100644 index 0000000..1b8891d --- /dev/null +++ b/src/data/propers/common/minor-hour-kyrie-pater.yml @@ -0,0 +1,23 @@ +# Split out of minor-hour-preces-feriales.yml on 2026-09-01, by explicit +# choice: Terce/Sext/None should always show the Kyrie and Pater Noster +# (with its own "Et ne nos indúcas/Sed líbera nos a malo" completion), +# even on a Sunday or feast, while the further Preces versicles that used +# to follow in the same block (now trimmed down to just those, still under +# minor-hour-preces-feriales's own id) become ferial-only — see that +# file's header and data/hours/terce.yml's for the reasoning. Text +# otherwise unchanged from what was verified there. +id: minor-hour-kyrie-pater +text: + la: | + Kýrie, eléison. Christe, eléison. Kýrie, eléison. + Pater noster, qui es in cælis, sanctificétur nomen tuum: advéniat regnum tuum: fiat volúntas tua, sicut in cælo et in terra. Panem nostrum cotidiánum da nobis hódie: et dimítte nobis débita nostra, sicut et nos dimíttimus debitóribus nostris: + V. Et ne nos indúcas in tentatiónem: + R. Sed líbera nos a malo. + en: | + Lord, have mercy. Christ, have mercy. Lord, have mercy. + Our Father, who art in heaven, hallowed be thy name; thy kingdom come; thy will be done on earth as it is in heaven. Give us this day our daily bread; and forgive us our trespasses, as we forgive those who trespass against us: + V. And lead us not into temptation: + R. But deliver us from evil. +status: + la: verified + en: verified diff --git a/src/data/propers/common/minor-hour-preces-feriales.yml b/src/data/propers/common/minor-hour-preces-feriales.yml index de4acfb..2b80eef 100644 --- a/src/data/propers/common/minor-hour-preces-feriales.yml +++ b/src/data/propers/common/minor-hour-preces-feriales.yml @@ -5,28 +5,24 @@ # [Preces feriales minora]). Shared by Terce, Sext, and None — the Latin is # identical across all three per the reference engine. # -# Deliberate deviation from real Monastic 1617 (which has no Preces at the -# Little Hours at all) and from the reference engine's own rubric (which -# says the Pater Noster here is "secreto," silent): by explicit choice this -# project shows the Kyrie and Pater Noster as spoken text rather than -# dropping them the way Prime drops its silently-said opening Pater/Ave — -# see prime.yml's header for that contrasting precedent. +# Trimmed 2026-09-01, by explicit choice: this file used to hold the whole +# block (Kyrie + Pater Noster + all four V/R pairs) and was shown every +# day. The Kyrie/Pater Noster piece was split out into its own always- +# shown `minor-hour-kyrie-pater` part (see that file) so it keeps +# appearing regardless of rank; what's left here — the three further V/R +# pairs, the actual "Preces" versicles proper — is now ferial-only +# (`ferialOnly: true` in data/hours/terce.yml etc.), matching real +# historical practice (Preces are dropped on Sundays/feasts) more closely +# than the old "every day" simplification did. # -# Also by explicit choice, said on *every* day regardless of rank, not just -# ferias — mirroring the same "every day" simplification already made for -# Prime's ferial Preces (see prime-preces-feriales.yml). The reference -# engine's Sunday/feast form for the Little Hours (Kyrie + Pater Noster + -# a silently-said Creed, then a V/R block that's actually reused from -# Compline's own dominical Preces) looks like a data-reuse quirk rather -# than genuinely-authored minor-hour content, so it was deliberately not -# imported. +# Deliberate deviation from real Monastic 1617 (which has no Preces at the +# Little Hours at all): by explicit choice this project still adds them on +# ferial days, mirroring the same "every day" simplification originally +# made for Prime's ferial Preces (see prime-preces-feriales.yml) but now +# scoped to ferias only, per direct instruction. id: minor-hour-preces-feriales text: la: | - Kýrie, eléison. Christe, eléison. Kýrie, eléison. - Pater noster, qui es in cælis, sanctificétur nomen tuum: advéniat regnum tuum: fiat volúntas tua, sicut in cælo et in terra. Panem nostrum cotidiánum da nobis hódie: et dimítte nobis débita nostra, sicut et nos dimíttimus debitóribus nostris: - V. Et ne nos indúcas in tentatiónem: - R. Sed líbera nos a malo. V. Dómine, Deus virtútum, convérte nos. R. Et osténde fáciem tuam, et salvi érimus. V. Exsúrge, Christe, ádjuva nos. @@ -34,10 +30,6 @@ text: V. Dómine, exáudi oratiónem meam. R. Et clamor meus ad te véniat. en: | - Lord, have mercy. Christ, have mercy. Lord, have mercy. - Our Father, who art in heaven, hallowed be thy name; thy kingdom come; thy will be done on earth as it is in heaven. Give us this day our daily bread; and forgive us our trespasses, as we forgive those who trespass against us: - V. And lead us not into temptation: - R. But deliver us from evil. V. O Lord, God of hosts, convert us. R. And show us thy face, and we shall be saved. V. Arise, O Christ, and help us. diff --git a/src/hours/none.ts b/src/hours/none.ts index 8fc3475..95d5c4e 100644 --- a/src/hours/none.ts +++ b/src/hours/none.ts @@ -14,6 +14,7 @@ import { resolveMinorHourAntiphon, resolveMinorHourChapter, resolveSelfContainedHymn, + isFerialOrVigil, } from './resolve-common'; import noneDefinitionData from '../data/hours/none.yml'; import antiphonsData from '../data/hours/none-antiphons.yml'; @@ -32,6 +33,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] { case 'day-collect': return [{ kind: 'prayer', text: getDayCollect(day) }]; case 'preces': + if (part.ferialOnly && !isFerialOrVigil(day)) return []; return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }]; case 'variable': { // Only 'by-weekday' applies here — one antiphon framing all three diff --git a/src/hours/sext.ts b/src/hours/sext.ts index fa6555e..9064002 100644 --- a/src/hours/sext.ts +++ b/src/hours/sext.ts @@ -14,6 +14,7 @@ import { resolveMinorHourAntiphon, resolveMinorHourChapter, resolveSelfContainedHymn, + isFerialOrVigil, } from './resolve-common'; import sextDefinitionData from '../data/hours/sext.yml'; import antiphonsData from '../data/hours/sext-antiphons.yml'; @@ -32,6 +33,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] { case 'day-collect': return [{ kind: 'prayer', text: getDayCollect(day) }]; case 'preces': + if (part.ferialOnly && !isFerialOrVigil(day)) return []; return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }]; case 'variable': { // Only 'by-weekday' applies here — one antiphon framing all three diff --git a/src/hours/terce.ts b/src/hours/terce.ts index 9466398..47d48c7 100644 --- a/src/hours/terce.ts +++ b/src/hours/terce.ts @@ -14,6 +14,7 @@ import { resolveMinorHourAntiphon, resolveMinorHourChapter, resolveSelfContainedHymn, + isFerialOrVigil, } from './resolve-common'; import terceDefinitionData from '../data/hours/terce.yml'; import antiphonsData from '../data/hours/terce-antiphons.yml'; @@ -32,6 +33,7 @@ function resolvePart(part: HourPart, day: LiturgicalDay): ResolvedPart[] { case 'day-collect': return [{ kind: 'prayer', text: getDayCollect(day) }]; case 'preces': + if (part.ferialOnly && !isFerialOrVigil(day)) return []; return [{ kind: 'preces', text: resolveCommon(part.textRef.id), label: part.label }]; case 'variable': { // Only 'by-weekday' applies here — one antiphon framing all three diff --git a/src/hours/types.ts b/src/hours/types.ts index 20bc3cb..ecda853 100644 --- a/src/hours/types.ts +++ b/src/hours/types.ts @@ -43,7 +43,14 @@ export type HourPart = // 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 } + // `ferialOnly` marks a part that's dropped outright (not substituted) + // on a Sunday/feast day — Terce/Sext/None's own trailing Preces + // versicles (minor-hour-preces-feriales, trimmed 2026-09-01 to just + // those versicles) are the only current user: the Kyrie/Pater Noster + // that used to precede them in the same block was split out into its + // own always-shown `minor-hour-kyrie-pater` part instead of following + // suit, by explicit choice — see data/hours/terce.yml's header. + | { kind: 'preces'; textRef: PropersRef; label?: string; omitOnDouble?: true; ferialOnly?: true } | { kind: 'psalm'; psalmNumber: number; verses?: string; antiphonRef?: PropersRef } | { kind: 'canticle'; canticleId: string; textRef: PropersRef; antiphonRef?: PropersRef } | {