Wire seasonal hymn-doxology into the Matins ferial hymn

The plain ferial hymn's Monastic source (Day1-6 Hymnus,
Psalterium/Special/Matutinum Special.txt) carries a real "*" seasonal-
substitution marker, live-checked against the reference engine. Splits the
hymn's own natural doxology ending into a new per-annum companion file and
swaps it via getHymnDoxologyId/appendDoxology, same pattern already used by
Prime and Compline.

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 14:59:49 -04:00
parent 44feb8c6b1
commit aeda043577
3 changed files with 31 additions and 19 deletions
@@ -0,0 +1,16 @@
# The ferial Matins hymn's own natural doxology ending, split out of
# matins-hymn-ferial.yml so hours/matins.ts can swap it seasonally via
# hymn-doxology.ts — the reference source's weekday (Day1-6) Matins hymns
# each carry a real "*" substitution marker here, live-checked in
# Psalterium/Special/Matutinum Special.txt, all sharing this same Latin
# ending; the Sunday (Day0) form has no such marker (its own doxology,
# "Præstet hoc nobis Déitas beáta...", is fixed) — not modeled here since
# vu's Matins doesn't distinguish Sunday from ferial (see matins.ts).
# Text/status carried over unchanged from the original file.
id: matins-hymn-doxology-per-annum
text:
la: "Præsta, Pater piíssime,\nPatríque compar Únice,\nCum Spíritu Paráclito\nRegnans per omne sǽculum. Amen."
en: "Grant this, O Father ever One\nWith Christ, thy sole-begotten Son,\nAnd Holy Ghost, whom all adore,\nReigning and blest forevermore. Amen."
status:
la: verified
en: verified
+5 -18
View File
@@ -4,6 +4,11 @@
# year-round text; only this one (evidently the ordinary-time/per-annum # year-round text; only this one (evidently the ordinary-time/per-annum
# form) is authored so far. Seasonal variants deferred (see TODO.md), # form) is authored so far. Seasonal variants deferred (see TODO.md),
# same incremental-content pattern as everywhere else in this project. # same incremental-content pattern as everywhere else in this project.
#
# The closing doxology stanza is split out into
# matins-hymn-doxology-per-annum.yml (see hours/matins.ts) — the source
# carries a real "*" seasonal-substitution marker there (live-checked
# 2026-09-03, Psalterium/Special/Matutinum Special.txt).
id: matins-hymn-ferial id: matins-hymn-ferial
text: text:
la: >- la: >-
@@ -41,15 +46,6 @@ text:
Et ore te canéntium Et ore te canéntium
Laudéris in perpétuum. Laudéris in perpétuum.
Præsta, Pater piíssime,
Patríque compar Únice,
Cum Spíritu Paráclito
Regnans per omne sǽculum. Amen.
en: >- en: >-
Our limbs refreshed with slumber now, Our limbs refreshed with slumber now,
@@ -85,15 +81,6 @@ text:
That by their lips who thee adore That by their lips who thee adore
Thou mayst be praised forevermore. Thou mayst be praised forevermore.
Grant this, O Father ever One
With Christ, thy sole-begotten Son,
And Holy Ghost, whom all adore,
Reigning and blest forevermore. Amen.
status: status:
la: verified la: verified
en: verified en: verified
+10 -1
View File
@@ -76,9 +76,11 @@ import { getPsalmVerses } from '../psalter';
import { getPsalmsFor, type PsalmRef } from '../psalter/distribution'; import { getPsalmsFor, type PsalmRef } from '../psalter/distribution';
import { getScriptureVerses } from '../scripture'; import { getScriptureVerses } from '../scripture';
import { getOpeningVersicleId } from './opening-versicle'; import { getOpeningVersicleId } from './opening-versicle';
import { getHymnDoxologyId } from './hymn-doxology';
import { applyFlexaMark } from './antiphon'; import { applyFlexaMark } from './antiphon';
import { import {
resolveCommon, resolveCommon,
appendDoxology,
getDayCollect, getDayCollect,
getOfficeOverrideId, getOfficeOverrideId,
resolveOfficeWinner, resolveOfficeWinner,
@@ -454,7 +456,14 @@ function resolveMatinsHymn(day: LiturgicalDay): ResolvedText {
return seasonal; return seasonal;
} }
} }
return resolveCommon('matins-hymn-ferial'); // The plain ferial hymn's own Monastic source (Day1-6 Hymnus, Psalterium/
// Special/Matutinum Special.txt) carries a real seasonal-doxology
// substitution marker (live-checked 2026-09-03) — unlike the Advent/
// Paschaltide seasonal hymns above, whose Monastic forms are each fixed,
// non-swapping text, so only this final fallback needs the swap.
const body = resolveCommon('matins-hymn-ferial');
const doxology = resolveCommon(getHymnDoxologyId(day, 'matins-hymn-doxology-per-annum'));
return appendDoxology(body, doxology);
} }
/** The plain ferial weekday nocturn's real antiphoned psalmody — a /** The plain ferial weekday nocturn's real antiphoned psalmody — a