Wire seasonal hymn-doxology into every plain-default Lauds hymn

Lauds' Monastic source never carries the "*" substitution marker anywhere
(audited), so this is purely the same deliberate broadening as the Vespers
commit: every plain-default hymn (Sunday, Mon-Sat, Advent, Lent,
Passiontide, Paschaltide) now routes its closing doxology through
getHymnDoxologyId/appendDoxology instead of a fixed ending, split into
matching per-annum companion files that reproduce the original text
whenever no season/feast override applies.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AGjUyhUZJaSjiniEmnLdak
This commit is contained in:
2026-09-03 15:00:17 -04:00
parent 0736c36494
commit 46b34493e2
23 changed files with 104 additions and 137 deletions
@@ -0,0 +1,7 @@
id: lauds-hymn-advent-doxology-per-annum
text:
la: "Laus, honor, virtus, glória,\nDeo Patri, et Fílio,\nSancto simul Paráclito,\nIn sæculórum sǽcula.\nAmen."
en: "Honour, glory, virtue, merit,\nTo the Father and the Son,\nWith the co-eternal Spirit,\nWhile eternal ages run.\nAmen."
status:
la: draft
en: draft
@@ -29,12 +29,6 @@ text:
Mundúmque horror cínxerit, Mundúmque horror cínxerit,
Non pro reátu púniat, Non pro reátu púniat,
Sed nos pius tunc prótegat. Sed nos pius tunc prótegat.
Laus, honor, virtus, glória,
Deo Patri, et Fílio,
Sancto simul Paráclito,
In sæculórum sǽcula.
Amen.
en: | en: |
Hark, a herald voice is calling; Hark, a herald voice is calling;
"Christ is nigh," it seems to say; "Christ is nigh," it seems to say;
@@ -55,12 +49,6 @@ text:
Wrapping all the earth in fear, Wrapping all the earth in fear,
May he then as our defender May he then as our defender
On the clouds of heaven appear. On the clouds of heaven appear.
Honour, glory, virtue, merit,
To the Father and the Son,
With the co-eternal Spirit,
While eternal ages run.
Amen.
status: status:
la: draft la: draft
en: draft en: draft
@@ -0,0 +1,7 @@
id: lauds-hymn-friday-doxology-per-annum
text:
la: "Deo Patri sit glória,\nEjúsque soli Fílio,\nCum Spíritu Paráclito,\nEt nunc, et in perpétuum.\nAmen."
en: "All laud to God the Father be,\nAll praise, Eternal Son, to thee:\nAll glory, as is ever meet,\nTo God the holy Paraclete,\nAmen."
status:
la: verified
en: verified
@@ -26,12 +26,6 @@ text:
Radícet altis sénsibus: Radícet altis sénsibus:
Secúnda spes congáudeat, Secúnda spes congáudeat,
Qua major exstat cáritas. Qua major exstat cáritas.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum.
Amen.
en: | en: |
O Christ, whose glory fills the heaven, O Christ, whose glory fills the heaven,
Our only hope, in mercy given; Our only hope, in mercy given;
@@ -57,12 +51,6 @@ text:
With joyous hope, in thee to live; With joyous hope, in thee to live;
That lifes rough way may ever be That lifes rough way may ever be
Made strong and pure by charity. Made strong and pure by charity.
All laud to God the Father be,
All praise, Eternal Son, to thee:
All glory, as is ever meet,
To God the holy Paraclete,
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-lent-doxology-per-annum
text:
la: "Te rerum univérsitas,\nClemens, adóret, Trínitas,\nEt nos novi per véniam,\nNovum canámus cánticum.\nAmen."
en: "May heaven and earth aloud proclaim\nThe Trinity's almighty fame;\nAnd we, restored to grace, rejoice\nIn newness both of heart and voice.\nAmen."
status:
la: draft
en: draft
@@ -25,12 +25,6 @@ text:
In qua reflórent ómnia: In qua reflórent ómnia:
Lætémur in hac ad tuam Lætémur in hac ad tuam
Per hanc redúcti grátiam. Per hanc redúcti grátiam.
Te rerum univérsitas,
Clemens, adóret, Trínitas,
Et nos novi per véniam,
Novum canámus cánticum.
Amen.
en: | en: |
Jesu, salvation's Sun Divine, Jesu, salvation's Sun Divine,
Within our inmost bosoms shine, Within our inmost bosoms shine,
@@ -51,12 +45,6 @@ text:
The days of joy for them that mourn; The days of joy for them that mourn;
May we of their indulgence share, May we of their indulgence share,
And bless the God that grants our prayer. And bless the God that grants our prayer.
May heaven and earth aloud proclaim
The Trinity's almighty fame;
And we, restored to grace, rejoice
In newness both of heart and voice.
Amen.
status: status:
la: draft la: draft
en: draft en: draft
@@ -0,0 +1,7 @@
id: lauds-hymn-monday-doxology-per-annum
text:
la: "Deo Patri sit glória,\nEjúsque soli Fílio,\nCum Spíritu Paráclito,\nEt nunc et in perpétuum.\nAmen."
en: "All laud to God the Father be;\nAll praise, Eternal Son, to thee;\nAll glory, as is ever meet,\nTo God the Holy Paraclete.\nAmen."
status:
la: verified
en: verified
@@ -41,12 +41,6 @@ text:
Auróra totus pródeat, Auróra totus pródeat,
In Patre totus Fílius, In Patre totus Fílius,
Et totus in Verbo Pater. Et totus in Verbo Pater.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc et in perpétuum.
Amen.
en: | en: |
O splendour of Gods glory bright, O splendour of Gods glory bright,
O thou that bringest light from light, O thou that bringest light from light,
@@ -87,12 +81,6 @@ text:
Let him come forth our perfect morn, Let him come forth our perfect morn,
The Word in God the Father One, The Word in God the Father One,
The Father perfect in the Son. The Father perfect in the Son.
All laud to God the Father be;
All praise, Eternal Son, to thee;
All glory, as is ever meet,
To God the Holy Paraclete.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-paschaltide-doxology-per-annum
text:
la: "Glória tibi Dómine,\nQui surrexísti a mórtuis,\nCum Patre et Sancto Spíritu,\nIn sempitérna sǽcula.\nAmen."
en: "To God the Father let us sing,\nTo God the Son, our risen King,\nAnd equally let us adore\nThe Spirit, God forevermore.\nAmen."
status:
la: draft
en: draft
@@ -30,12 +30,6 @@ text:
In hoc pascháli gáudio, In hoc pascháli gáudio,
Ab omni mortis ímpetu Ab omni mortis ímpetu
Tuum defénde pópulum. Tuum defénde pópulum.
Glória tibi Dómine,
Qui surrexísti a mórtuis,
Cum Patre et Sancto Spíritu,
In sempitérna sǽcula.
Amen.
en: | en: |
The morn had spread her crimson rays, The morn had spread her crimson rays,
When rang the skies with shouts of praise; When rang the skies with shouts of praise;
@@ -61,12 +55,6 @@ text:
When at the font his name we chose; When at the font his name we chose;
Oh, let not sin our robes defile, Oh, let not sin our robes defile,
And turn to grief the paschal smile. And turn to grief the paschal smile.
To God the Father let us sing,
To God the Son, our risen King,
And equally let us adore
The Spirit, God forevermore.
Amen.
status: status:
la: draft la: draft
en: draft en: draft
@@ -0,0 +1,7 @@
id: lauds-hymn-passiontide-doxology-per-annum
text:
la: "Glória et honor Deo\nUsquequáque altíssimo:\nUna Patri, Filióque,\nInclyto Paráclito:\nCui laus est et potéstas\nPer ætérna sǽcula.\nAmen."
en: "To the Trinity be glory\nEverlasting, as is meet;\nEqual to the Father, equal\nTo the Son, and Paraclete:\nTrinal Unity, whose praises\nAll created things repeat.\nAmen."
status:
la: draft
en: draft
@@ -40,14 +40,6 @@ text:
Nauta mundo náufrago, Nauta mundo náufrago,
Quem sacer cruor perúnxit, Quem sacer cruor perúnxit,
Fusus Agni córpore. Fusus Agni córpore.
Glória et honor Deo
Usquequáque altíssimo:
Una Patri, Filióque,
Inclyto Paráclito:
Cui laus est et potéstas
Per ætérna sǽcula.
Amen.
en: | en: |
Thirty years among us dwelling, Thirty years among us dwelling,
His appointed time fulfilled, His appointed time fulfilled,
@@ -83,14 +75,6 @@ text:
Harbour, like the ark of old; Harbour, like the ark of old;
With the sacred blood anointed With the sacred blood anointed
From the smitten Lamb that rolled. From the smitten Lamb that rolled.
To the Trinity be glory
Everlasting, as is meet;
Equal to the Father, equal
To the Son, and Paraclete:
Trinal Unity, whose praises
All created things repeat.
Amen.
status: status:
la: draft la: draft
en: draft en: draft
@@ -0,0 +1,7 @@
id: lauds-hymn-saturday-doxology-per-annum
text:
la: "Glória tibi Dómine,\nQui natus es de Vírgine,\nCum Patre et Sancto Spíritu,\nIn sempitérna sǽcula.\nAmen."
en: "All honour, laud, and glory be,\nO Jesu, Virgin-born, to thee;\nAll glory, as is ever meet,\nTo Father and to Paraclete.\nAmen."
status:
la: verified
en: verified
@@ -20,12 +20,6 @@ text:
Et porta lucis fúlgida: Et porta lucis fúlgida:
Vitam datam per Vírginem, Vitam datam per Vírginem,
Gentes redémptæ, pláudite. Gentes redémptæ, pláudite.
Glória tibi Dómine,
Qui natus es de Vírgine,
Cum Patre et Sancto Spíritu,
In sempitérna sǽcula.
Amen.
en: | en: |
O glorious lady! throned on high O glorious lady! throned on high
Above the star-illumined sky; Above the star-illumined sky;
@@ -41,12 +35,6 @@ text:
Light's gateway fair and glistering; Light's gateway fair and glistering;
Life through a Virgin is restored; Life through a Virgin is restored;
Ye ransomed nations, praise the Lord! Ye ransomed nations, praise the Lord!
All honour, laud, and glory be,
O Jesu, Virgin-born, to thee;
All glory, as is ever meet,
To Father and to Paraclete.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-sunday-doxology-per-annum
text:
la: "Præstet hoc nobis Déitas beáta\nPatris, ac Nati, paritérque Sancti\nSpíritus, cujus réboat in omni\nGlória mundo.\nAmen."
en: "This be our portion, God forever blessed,\nFather eternal, Son, and Holy Spirit,\nWhose is the glory, which through all creation\nEver resoundeth.\nAmen."
status:
la: verified
en: verified
@@ -11,12 +11,6 @@ text:
Pellat languórem, tríbuat salútem, Pellat languórem, tríbuat salútem,
Donet et nobis pietáte Patris Donet et nobis pietáte Patris
Regna polorum. Regna polorum.
Præstet hoc nobis Déitas beáta
Patris, ac Nati, paritérque Sancti
Spíritus, cujus réboat in omni
Glória mundo.
Amen.
en: | en: |
Lo, the dim shadows of the night are waning; Lo, the dim shadows of the night are waning;
Lightsome and blushing, dawn of day returneth; Lightsome and blushing, dawn of day returneth;
@@ -27,12 +21,6 @@ text:
Banish all troubles, kindly health bestowing; Banish all troubles, kindly health bestowing;
And may he grant us, of his countless blessings, And may he grant us, of his countless blessings,
Peace that is endless. Peace that is endless.
This be our portion, God forever blessed,
Father eternal, Son, and Holy Spirit,
Whose is the glory, which through all creation
Ever resoundeth.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-thursday-doxology-per-annum
text:
la: "Deo Patri sit glória,\nEjúsque soli Fílio,\nCum Spíritu Paráclito,\nEt nunc, et in perpétuum.\nAmen."
en: "Unto God the Father, Son,\nHoly Spirit, Three in One,\nOne in Three, be glory done,\nNow and evermore.\nAmen."
status:
la: verified
en: verified
@@ -21,12 +21,6 @@ text:
Qui nos diébus ómnibus, Qui nos diébus ómnibus,
Actúsque nostros próspicit Actúsque nostros próspicit
A luce prima in vésperum. A luce prima in vésperum.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum.
Amen.
en: | en: |
See the golden sun arise! See the golden sun arise!
Let no more our darkened eyes Let no more our darkened eyes
@@ -47,12 +41,6 @@ text:
All we do, and think, and say, All we do, and think, and say,
Watching us from break of day Watching us from break of day
Till the twilight fall. Till the twilight fall.
Unto God the Father, Son,
Holy Spirit, Three in One,
One in Three, be glory done,
Now and evermore.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-tuesday-doxology-per-annum
text:
la: "Deo Patri sit glória,\nEjúsque soli Fílio,\nCum Spíritu Paráclito,\nEt nunc, et in perpétuum.\nAmen."
en: "Unto God the Father, Son,\nHoly Spirit, Three in One,\nOne in Three, be glory done,\nNow and evermore.\nAmen."
status:
la: verified
en: verified
@@ -21,12 +21,6 @@ text:
Tu rumpe noctis víncula: Tu rumpe noctis víncula:
Tu solve peccátum vetus, Tu solve peccátum vetus,
Novúmque lumen íngere. Novúmque lumen íngere.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum.
Amen.
en: | en: |
As the bird, whose clarion gay As the bird, whose clarion gay
Sounds before the dawn is grey, Sounds before the dawn is grey,
@@ -47,12 +41,6 @@ text:
Forged by Adams ancient crime; Forged by Adams ancient crime;
And the light of Edens prime And the light of Edens prime
To the world restore! To the world restore!
Unto God the Father, Son,
Holy Spirit, Three in One,
One in Three, be glory done,
Now and evermore.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
@@ -0,0 +1,7 @@
id: lauds-hymn-wednesday-doxology-per-annum
text:
la: "Deo Patri sit glória,\nEjúsque soli Fílio,\nCum Spíritu Paráclito,\nEt nunc, et in perpétuum.\nAmen."
en: "Unto God the Father, Son,\nHoly Spirit, Three in One,\nOne in Three, be glory done,\nNow and evermore.\nAmen."
status:
la: verified
en: verified
@@ -21,12 +21,6 @@ text:
Quæ luce purgéntur tua: Quæ luce purgéntur tua:
Tu, lux Eói síderis, Tu, lux Eói síderis,
Vultu seréno illúmina. Vultu seréno illúmina.
Deo Patri sit glória,
Ejúsque soli Fílio,
Cum Spíritu Paráclito,
Et nunc, et in perpétuum.
Amen.
en: | en: |
Day is breaking, dawn is bright: Day is breaking, dawn is bright:
Hence, vain shadows of the night! Hence, vain shadows of the night!
@@ -47,12 +41,6 @@ text:
All that leads our thoughts astray! All that leads our thoughts astray!
Through our spirits, King of day, Through our spirits, King of day,
Pour thy light divine! Pour thy light divine!
Unto God the Father, Son,
Holy Spirit, Three in One,
One in Three, be glory done,
Now and evermore.
Amen.
status: status:
la: verified la: verified
en: verified en: verified
+27 -1
View File
@@ -6,10 +6,12 @@ import { getPsalmVerses } from '../psalter';
import { getCanticle, type CanticleVerse } from './lauds-canticles'; import { getCanticle, type CanticleVerse } from './lauds-canticles';
import { getLaudsSaintOverride, getLaudsCommonOverride, type LaudsPsalmodyOverride } from './lauds-psalmody-overrides'; import { getLaudsSaintOverride, getLaudsCommonOverride, type LaudsPsalmodyOverride } from './lauds-psalmody-overrides';
import { getOpeningVersicleId } from './opening-versicle'; import { getOpeningVersicleId } from './opening-versicle';
import { getHymnDoxologyId } from './hymn-doxology';
import { getMarianAntiphonId, getMarianAntiphonLabel } from './marian-antiphon'; import { getMarianAntiphonId, getMarianAntiphonLabel } from './marian-antiphon';
import { applyFlexaMark } from './antiphon'; import { applyFlexaMark } from './antiphon';
import { import {
resolveCommon, resolveCommon,
appendDoxology,
getDayCollects, getDayCollects,
getBenedictusAntiphon, getBenedictusAntiphon,
splitNamedAntiphon, splitNamedAntiphon,
@@ -261,6 +263,30 @@ function resolvePsalmody(day: LiturgicalDay): ResolvedPart[] {
return parts; return parts;
} }
/**
* Every plain-default Lauds hymn's own closing doxology stanza (split out
* into `lauds-hymn-${key}-doxology-per-annum.yml`) is re-attached here
* through the seasonal mechanism (hours/hymn-doxology.ts) rather than kept
* as fixed text — a deliberate broadening beyond the reference source
* (whose Monastic weekday/seasonal Lauds hymns mostly don't vary their own
* doxology by season at all, live-checked 2026-09-03): this project isn't
* a reconstruction (see the repo's CLAUDE.md), and a hymn's closing
* doxology is a natural, low-cost way to keep every hour visibly in step
* with the season — e.g. the plain weekday hymns used all through
* Christmastide/Epiphanytide/Corpus Christi/Sacred Heart (no
* `seasonalOfficeSuffix` covers those) previously stayed on their generic
* per-annum ending throughout; now they pick up Nat/Epi/Corp/Heart like
* Prime/Compline already did. Each `key`'s own natural ending is preserved
* as that key's per-annum default, so a season/feast with no override
* (e.g. Advent, Lent — the source itself never swaps those) reproduces the
* exact original text.
*/
function resolveLaudsHymn(day: LiturgicalDay, key: string): ResolvedText {
const body = resolveCommon(`lauds-hymn-${key}`);
const doxology = resolveCommon(getHymnDoxologyId(day, `lauds-hymn-${key}-doxology-per-annum`));
return appendDoxology(body, doxology);
}
/** Any sanctoral winner's (or named-temporal feast's) own capitulum/ /** Any sanctoral winner's (or named-temporal feast's) own capitulum/
* responsory/hymn/versicle (data/propers/common/lauds-{part}-${id}.yml), * responsory/hymn/versicle (data/propers/common/lauds-{part}-${id}.yml),
* else their Common's (`${part}-${common}`), when authored — see * else their Common's (`${part}-${common}`), when authored — see
@@ -287,7 +313,7 @@ function resolveOffice(day: LiturgicalDay): ResolvedPart[] {
return [ return [
{ kind: 'chapter', text: resolveCommon(seasonSuffix ? `lauds-capitulum-${key}` : capitulumId(day.weekday)) }, { kind: 'chapter', text: resolveCommon(seasonSuffix ? `lauds-capitulum-${key}` : capitulumId(day.weekday)) },
{ kind: 'responsory', text: resolveResponsory(resolveCommon(`lauds-responsory-${key}`), day) }, { kind: 'responsory', text: resolveResponsory(resolveCommon(`lauds-responsory-${key}`), day) },
{ kind: 'hymn', text: resolveCommon(`lauds-hymn-${key}`) }, { kind: 'hymn', text: resolveLaudsHymn(day, key) },
{ kind: 'versicle', text: resolveCommon(`lauds-versicle-${key}`) }, { kind: 'versicle', text: resolveCommon(`lauds-versicle-${key}`) },
]; ];
} }