Add reusable Matins building blocks: types, content stores, seed data

New ResolvedPart kinds (nocturn-psalmody, te-deum) and lesson fields
(nocturn, source, isGospel, responsory) in hours/types.ts. Three new
content-store modules: propers/bible-plan.ts (the user's own continuous
scripture-reading plan, replacing the historical Nocturn-1 lectionary),
propers/nocturn-readings.ts (general feast/temporal-day Nocturn 2-3
readings, extending propers/octave-readings.ts's combine-into-one-reading
pattern via a newly-exported resolvePassages), and
propers/matins-responsories.ts (a per-book responsory pool, matched
loosely rather than by exact citation).

Data: Sunday's fixed 12-psalm/3-canticle psalmody (live-verified against
the reference engine), the invitatory antiphon, ferial hymn and
capitulum, the Te Deum, a seeded Isaiah responsory, two live-transcribed
scripture chapters, and the two bible-plan rows needed for this pass'
proof content.
This commit is contained in:
2026-08-14 11:40:31 -04:00
parent 5162eabdb4
commit 83bf55efdb
16 changed files with 1008 additions and 2 deletions
+5 -1
View File
@@ -58,7 +58,11 @@ interface OctaveReadingRecord {
status: Partial<Record<LanguageCode, TranslationStatus>>;
}
function resolvePassages(passages: ScriptureCitation[]): Partial<Record<LanguageCode, string>> {
/** Exported for reuse by src/propers/bible-plan.ts and
* src/propers/nocturn-readings.ts, which need the same "pull several
* scripture passages and join them as paragraphs" behavior for Matins
* readings outside the octave-day-keyed store this file owns. */
export function resolvePassages(passages: ScriptureCitation[]): Partial<Record<LanguageCode, string>> {
const laParagraphs: string[] = [];
const enParagraphs: string[] = [];
for (const citation of passages) {