<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/caldata, branch v0.45.0</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=v0.45.0</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=v0.45.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-29T18:52:21Z</updated>
<entry>
<title>caldata(ef): finalise the 4 review-flagged Polish names</title>
<updated>2026-07-29T18:52:21Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T18:52:21Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=790d89eaaa130d3446f8e9af4dff793a569bb98d'/>
<id>urn:sha1:790d89eaaa130d3446f8e9af4dff793a569bb98d</id>
<content type='text'>
Reviewed the four EF names missalemeum never returns. George (Martyr),
Stanislaus (Bishop and Martyr), and Zephyrinus (Pope and Martyr) were
correct as best-guessed -- flags cleared as-is. Alexander &amp; Companions
had enumerated only three of the martyrs (omitting Juvenal); since the
English name is the shortened "&amp; Companions", match it with the faithful
Polish "śś. Aleksandra i Towarzyszy, Męczenników". No more # review-pl
flags; all 322 EF names stand.
</content>
</entry>
<entry>
<title>caldata(ef): add Polish names to the traditional sanctoral</title>
<updated>2026-07-29T13:00:28Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T13:00:28Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=cd8b2f25f390d9d6d5a4d5cb27c4cd2ed8ab4073'/>
<id>urn:sha1:cd8b2f25f390d9d6d5a4d5cb27c4cd2ed8ab4073</id>
<content type='text'>
The EF (traditional) calendar showed English memorial names even with
the UI switched to Polish, because tridentine-calendar.ini carried only
name.en. Add name.pl to all 322 sanctoral entries.

Source: missalemeum.com's Polish propers (/pl/api/v5/proper/DATE), the
authoritative Polish traditional-calendar naming -- paired to each entry
by the celebration id shared across its /en/ and /pl/ responses, fetched
across two years so saints superseded by a Sunday in one year are still
resolved. 318 entries matched that way; a missalemeum source typo
("Dokotra" -&gt; "Doktora") is corrected in the two it affected.

The remaining 4 -- George, Alexander &amp; Companions, Stanislaus,
Zephyrinus -- are never returned by missalemeum in the fetched years
(superseded every time); they carry a best-guess Polish name tagged with
a "# review-pl" comment for a human to verify.
</content>
</entry>
<entry>
<title>caldata: allow an external universal sanctorale to override the embedded one</title>
<updated>2026-07-28T17:22:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T17:22:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=d5d175118138249fe7d9e85d1bc65fb0b7e3a398'/>
<id>urn:sha1:d5d175118138249fe7d9e85d1bc65fb0b7e3a398</id>
<content type='text'>
The universal calendar of saints can now be refreshed or replaced without a
rebuild: if ~/.config/lectio/sanctorale/of.ini (OF) or ef.ini (EF) is present
and parses, caldata.Base uses it instead of the embedded calendar; a missing or
malformed file falls back to the embedded default, so the binary stays
self-contained and correct out of the box. Local diocesan/national additions
keep layering on top via calendars/ + `use` (unchanged). The temporal cycle and
precedence rules stay in code -- only the sanctorale is data.

- caldata.SetSanctoraleDir hook (mirrors bible/naming/i18n); Base() prefers the
  external file per form. config.SanctoraleDir(); wired in the CLI, TUI and web
  entry points. Tests cover override, no-file, and malformed-file fallback.
- README: new "Calendar of saints" section (two tiers: overlay via `use`,
  replace via sanctorale/&lt;form&gt;.ini); config comment notes the override.
</content>
</entry>
<entry>
<title>caldata: backfill Polish names for the whole OF universal sanctoral</title>
<updated>2026-07-28T17:10:23Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T17:10:23Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a9faf42cfbb1c060ac69f703f0c78616656566cb'/>
<id>urn:sha1:a9faf42cfbb1c060ac69f703f0c78616656566cb</id>
<content type='text'>
Add name.pl to the 132 universal-calendar celebrations that lacked it, so all
212 now carry Polish names (was 80). They follow the existing liturgical style
-- genitive case, "św. &lt;name&gt;, &lt;title&gt;" / "świętych ...", feast events in the
genitive -- hand-curated from standard Polish nomenclature and keyed to each
entry's name.en/name.la. Polish patrons use their Polish forms (Adalbert -&gt;
św. Wojciech, John of Kanty -&gt; św. Jana Kantego, Hedwig -&gt; św. Jadwigi
Śląskiej). Verified: feast/solemnity saints render their Polish name as the
day header, optional memorials appear as Polish options in the day's others.
</content>
</entry>
<entry>
<title>fix(EF): resumed Sundays after Pentecost use the Epiphany Masses</title>
<updated>2026-07-28T12:54:10Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T12:54:10Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=c5abf87fa7198c8f245f407774e2326e4b6c9b9c'/>
<id>urn:sha1:c5abf87fa7198c8f245f407774e2326e4b6c9b9c</id>
<content type='text'>
In early-Easter years there are more than 24 Sundays after Pentecost. Per the
1960 Rubrics the surplus Sundays resume the Sundays after Epiphany that
Septuagesima cut short (highest-numbered first) and the last Sunday keeps the
24th (Last) Mass. temporalEF now routes those Sundays to the resumed Epiphany
slug for readings while keeping the calendrical time-after-pentecost season;
the mis-harvested tail entries (post-Pentecost sundays 24-28) are corrected to
the true 24th Mass and the surplus removed. Validated: 88/88 tail/resumed
Sunday gospels match missalemeum 2025-2050; EF oracle green.
</content>
</entry>
<entry>
<title>fix(EF): fill reading gaps (major feasts, feria-repeat-through-feast, sundays)</title>
<updated>2026-07-28T12:46:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T12:46:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=cf45e9f7f3146bca6039b63e2be02463b02f8043'/>
<id>urn:sha1:cf45e9f7f3146bca6039b63e2be02463b02f8043</id>
<content type='text'>
EF readings had ~1.8% of days with no readings (major feasts falling back to
the wrong Sunday, feria-repeats broken when the preceding Sunday was a feast).
Now 0 gaps over 9496 days (2025-2050); reading correctness spot-checks match
missalemeum except the resumed-Epiphany-Sunday edge (next commit).

- calendar.TemporalSlug: the green-season weekday-repeats-the-Sunday rule uses
  the Sunday's TEMPORAL slug, so a Monday still finds its Sunday Mass when that
  Sunday was displaced by a feast (e.g. the Purification on Feb 2).
- Add the missing EF temporal Masses (from missalemeum): the Nativity Day Mass
  (Heb 1:1-12 / John 1:1-14), Epiphany (Isa 60:1-6 / Matt 2:1-12), the Octave
  Day of Christmas (Titus 2:11-15 / Luke 2:21), the 6th Sunday after Epiphany
  (1 Thess 1:2-10 / Matt 13:31-35), and the last Sunday after Pentecost
  (Col 1:9-14 / Matt 24:15-35).
</content>
</entry>
<entry>
<title>fix(calendar): OF precedence/transfer + readings resolution; EF Pentecost octave</title>
<updated>2026-07-28T12:35:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T12:35:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a80e61963756a28a3963a0442a8ccc1572518373'/>
<id>urn:sha1:a80e61963756a28a3963a0442a8ccc1572518373</id>
<content type='text'>
Fixes found by validating the offline engine per-day vs the LiturgicalCalendar
API (OF) and missalemeum (EF) across 2005-2050. OF calendar is now 0 real
errors in the forward window (season/cycle already perfect).

OF precedence/transfer (calendar):
- Ash Wednesday and Holy Week Mon-Wed are band-2 privileged, so a coinciding
  feast (Chair of St Peter on Ash Wednesday) is suppressed, not observed.
- Solemnities transfer out of Holy Week / the Easter octave: the Annunciation
  defers to the Monday after the 2nd Sunday of Easter; St Joseph is anticipated
  to the Saturday before Palm Sunday; the Nativity of St John the Baptist moves
  to Jun 23 when a Lord's solemnity (Sacred Heart / Corpus Christi) falls Jun 24.
- Within a precedence band, a solemnity of the Lord/BVM outranks a saint's
  (dignity tiebreak) rather than losing an alphabetical slug tie.
- Perpetua &amp; Felicity corrected optional -&gt; obligatory memorial.

OF readings resolution (bible.OFRef + lectionary data):
- Verse-accurate Hebrew-&gt;Vulgate psalm mapping incl. the split psalms
  (9/10, 114/115, 116, 147); "+" verse joins and abbreviated ranges ("127-28")
  normalized; single-chapter books (2/3 John, Jude) get chapter 1.
- Cleaned harvest artifacts from of-lectionary.ini (descriptive-suffix gospels,
  "or Year A" alternates, "*"/"[Vulg.]"/bracket markers, slash abbreviations);
  Joel/Malachi/Zechariah/Esther book-versification citations fixed to Vulgate.
- Split a merged Ps 15:10/11 row in vul.tsv. Result: 0 unresolvable OF readings
  over 2557 rendered days (cycles A/B/C, varied Easters).

EF: the Octave of Pentecost (Whit Monday-Saturday) is red, not white.
</content>
</entry>
<entry>
<title>fix(of): partial-proper memorials compose proper part + ferial (match USCCB)</title>
<updated>2026-07-28T08:54:28Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T08:54:28Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=f0bfe1efb93e04e0e3b9a33b8b085fc09e86af36'/>
<id>urn:sha1:f0bfe1efb93e04e0e3b9a33b8b085fc09e86af36</id>
<content type='text'>
A memorial marked 'PROPER Gospel' (Guardian Angels, Mary Magdalene, Our Lady of
Sorrows, Joseph the Worker, the Passion of John the Baptist, Sts Martha/Mary/
Lazarus) uses the FERIAL first reading + its proper gospel; one marked 'PROPER
First Reading' (Barnabas) uses its proper first + the ferial gospel. Previously we
imported catholic-resources' *suggested* first for the gospel-proper ones, which
differs from what USCCB publishes.

- readings.go: when the observed's inline Mass has only a proper gospel (or only a
  proper first), fill the missing reading/psalm from the day's ferial and sort into
  canonical order. A fully-proper feast is untouched. Factored out ofFerial().
- gen-of-sanctoral-readings.py: keep only the strictly-proper part per the CR
  source-note.

Verified vs USCCB: Guardian Angels (2025-10-02) now = Nehemiah 8 / Ps 19 /
Matt 18:1-5,10 exactly. Updates TestUniversalSanctoralReadings.
</content>
</entry>
<entry>
<title>feat(of): Christmas-season weekday ferials from catholic-resources.org (date-based)</title>
<updated>2026-07-28T08:45:09Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T08:45:09Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=d571091e25e87758c3c77fbc8b2d935bcc8304a4'/>
<id>urn:sha1:d571091e25e87758c3c77fbc8b2d935bcc8304a4</id>
<content type='text'>
Completes the seasonal weekday lectionary. The Christmas-season weekdays sit on
the AdventChristmas page in a SHIFTED 6-column layout (Day in c[1], not c[2] like
Advent's 7-column) -- the generator now finds the Day column wherever it is. Adds
date-based slugs to temporal.go: christmas-dec-&lt;29..31&gt; (octave), christmas-jan-&lt;2..7&gt;
(before Epiphany), christmas-after-epiphany-&lt;weekday&gt; (before the Baptism). Fixes
the christmas-octave-fri coverage gap and the by-date/by-week collision.

362/362 seasonal ferial-days render across 2026-2029 with 0 gaps. Extends
TestOFSeasonalFerials. All of Advent/Lent/Easter/Christmas weekdays now CR-sourced;
only the Commons remain (optional -- memorials default to the ferial).
</content>
</entry>
<entry>
<title>feat(of): seasonal weekday ferials from catholic-resources.org + date-based late Advent</title>
<updated>2026-07-28T08:35:21Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T08:35:21Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=44cb30b7ffcd776b26952080d1ec3587282a3db4'/>
<id>urn:sha1:44cb30b7ffcd776b26952080d1ec3587282a3db4</id>
<content type='text'>
Re-sources the proper weekdays of Advent (weeks 1-3), Lent, and Eastertide from
catholic-resources.org (scripts/genlect-of-season-ferials-cr.py; single-cycle, so
both -I/-II keys get the same readings). The diff caught real niedziela defects:
- Easter weekday first readings contaminated (easter-3-mon had 1 Cor 15 instead
  of Acts 6:8-15; easter-4-thu had Rev 12 instead of Acts 13:13-25).
- The Easter octave weekdays (Easter Mon-Sat) had no readings at all.
- Stray psalm-numbering artifacts (147A(146), Ps42(41)) cleared.

Late Advent (Dec 17-24) is proper to the DATE, not the Advent week, so temporal.go
now keys those days 'advent-dec-&lt;day&gt;' (fixing the same by-date/by-week collision
as the OT numbering) and the generator supplies them (Dec 17 = the genealogy
Matt 1:1-17; Dec 24 = the Benedictus).

157 seasonal ferial-days render across 2026-2028 with 1 residual gap
(christmas-octave-fri). Adds TestOFSeasonalFerials, credits the source, bumps to
0.43.0. Christmas-season weekdays (Dec 29-31, Jan 2-5) remain niedziela-sourced
(CR's shifted layout + Epiphany-dependent assignment -- a documented follow-up).
</content>
</entry>
</feed>
