<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/scripts/genlect.go, branch main</title>
<subtitle>offline Catholic daily readings and liturgical calendar in Go, with CLI, TUI and web clients</subtitle>
<id>https://git.labunix.xyz/lectio.git/atom?h=main</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-28T06:49:57Z</updated>
<entry>
<title>feat: complete OF+EF calendar coverage (movable feasts, vigils, ember days, transfers)</title>
<updated>2026-07-28T06:49:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T06:49:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=70b805018f0ae0d8424c3c7de8f1169476385a35'/>
<id>urn:sha1:70b805018f0ae0d8424c3c7de8f1169476385a35</id>
<content type='text'>
Ordinary Form:
- Add the movable Marian memorials that have no fixed date: Mary, Mother of the
  Church (Monday after Pentecost) and the Immaculate Heart (Saturday after the
  Sacred Heart), computed in computeOF.
- General Norms 60: two coinciding obligatory memorials both become optional and
  the ferial is observed -- except Mary, Mother of the Church, which keeps
  precedence per its 2018 decree.

Extraordinary Form:
- Capture fixed-date vigils in the sanctoral harvest (Christmas, the Nativity of
  St John the Baptist, Sts Peter &amp; Paul, St Lawrence, the Assumption, All Saints,
  the Immaculate Conception) -- previously filtered out.
- temporalEF: the movable vigils of the Ascension (I class eve) and Pentecost
  (Whitsun Eve), and the September/Advent Ember days (II class violet ferias).
- transferIfImpededEF: the Annunciation transfers past Holy Week/the Easter
  octave to the Monday after Low Sunday; All Souls moves to Nov 3 when Nov 2 is a
  Sunday.
- genlect harvests proper Masses for the new Ember/vigil days.

Adds TestEFCoverage + TestOFMovableMemorials. Bumps to 0.39.0.

Verified per-day: OF 0 real errors vs calapi (2026-2028, 100% correct-observed);
EF 0 real errors vs missalemeum (2025-2027), residual = deep-tail vigil-occurrence
and St Joseph Passiontide-transfer edges (~1-2 days/yr, documented).
</content>
</entry>
<entry>
<title>feat(ef): complete offline EF readings — proper ferias, deuterocanon, Latin fallback</title>
<updated>2026-07-27T14:17:18Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T14:17:18Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a1e041dfbe55194c7fea0636d38cff33ee28315d'/>
<id>urn:sha1:a1e041dfbe55194c7fea0636d38cff33ee28315d</id>
<content type='text'>
Finish the Extraordinary Form (1962) offline Mass readings so every day of
the year resolves in both English and Polish.

Temporal engine (temporal_ef.go):
- Unique ferial slugs "ef-&lt;season&gt;-&lt;week&gt;-&lt;weekday&gt;" so penitential-season
  weekdays (Lent, Advent, Passiontide, Easter octave) can key their own
  proper Masses; green-season ferias have no entry and fall back to the
  preceding Sunday (the 1962 rule).
- Special "ef-lent-after-ashes-&lt;weekday&gt;" case for the days between Ash
  Wednesday and Lent I, which have their own propers.

Lectionary (tridentine-lectionary.ini, 55 -&gt; 143 entries) via genlect.go:
- Generator now fetches proper-season weekdays and stores a feria only when
  its Mass differs from the preceding Sunday's.
- cleanCite() normalises two missalemeum data glitches: a stray comma
  between book and chapter ("4 Kings, 5:1" -&gt; "4 Kings 5:1") and a
  period-as-separator ("John 20. 19-31" -&gt; "John 20:19-31"), both guarded so
  legitimate multi-chapter citations are untouched.

Citations &amp; corpora:
- books.ini: Douay abbreviations in the [en] dialect (Ex, Ezech, Jonas, and
  3/4 Kings -&gt; canonical 1/2 Kings), so the EF Lenten epistles resolve while
  the display keeps modern sigla.
- drb.tsv: +205 rows backfilling the deuterocanonical Daniel 13-14 (Susanna,
  Bel) and Esther 11-16 (Greek additions) from get.bible douayrheims, which
  the base corpus omitted; scripts/gen-deutero.py documents the fetch.

Rendering (liturgy.go):
- readingLine() falls back to the Latin Vulgate (complete) when the
  vernacular corpus lacks a passage, with a clear note. Covers the Polish
  Wujek deuterocanon gap (no clean public-domain source exists) and any
  future vernacular gap; faithful to the EF as a Latin rite.

Result: 730/730 days resolve for both EN (native) and PL (native + Latin
fallback for 3 deuterocanon days). Version 0.32.0 -&gt; 0.33.0.
</content>
</entry>
<entry>
<title>feat: EF temporal Sunday lectionary (offline Sunday Mass readings)</title>
<updated>2026-07-27T13:22:14Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T13:22:14Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=88ade3a7b7e15e6742d367bdc4b95b1293b92429'/>
<id>urn:sha1:88ade3a7b7e15e6742d367bdc4b95b1293b92429</id>
<content type='text'>
Unique temporal-day slugs (season-sunday-week); scripts/genlect.go generates
tridentine-lectionary.ini from missalemeum keyed by slug (55 entries: the
Sundays of the whole EF year). caldata.TemporalReadings(form,slug) lookup;
--liturgy resolves proper-of-feast else the temporal cycle and renders the text.
bible.ParseRef strips abbreviation dots (1 Cor. -&gt; 1 Cor). 52/53 Sundays fully
resolve offline.
</content>
</entry>
</feed>
