| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lectio was MIT, which let anyone take it closed. The concern is not people
selling it -- no licence stops that, and the AGPL does not try to -- but
someone building a proprietary product on it and giving nothing back.
Plain GPL would leave the obvious hole open: lectio-web is a network
service, and hosting is not distribution, so a modified lectio-web could be
run as a paid subscription API without ever publishing a line. AGPL section
13 closes exactly that.
LICENSE is the verbatim FSF text. README carries the standard notice.
Section 13 requires a modified network-reachable version to PROMINENTLY
offer its source to the users interacting with it, so the offer ships with
the code rather than living only in a file nobody fetches:
- GET /source plain text, no template or config dependency, so
it answers even when something else is broken
- page footers every full page (fragments render inside one)
- JSON envelope "source" / "license"
- iCal header X-LECTIO-SOURCE / X-LECTIO-LICENSE
The feed fields are not redundant: an /api/calendar.json consumer or an
.ics subscriber never loads a page, so the footer alone would miss them.
config.SourceURL is the single source of truth, and says in its comment
that a fork running as a service must repoint it -- an offer that leads to
someone else's code is not an offer.
Tests pin all of it. This is a licence obligation, not a feature, so it
should fail loudly if a later change drops it.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The daily view now computes entirely offline (previous commit), so retire the
network path and everything that served it:
- Delete internal/tradlit (missalemeum) and the niedziela scraper from
internal/liturgy (fetch/store/parse + fixtures); keep Section, DayInfo and
ExtractCitation.
- Remove the "bt" version everywhere (render gatherBT + branches, config,
i18n, web form, TUI) and bible.ToEnglishRef (Polish citation converter).
A legacy config carrying "bt" migrates to "wuj" on load (config.migrateBT).
- Remove the traditional_lang config field and the -g/--lang flag from all
three binaries.
- Drop the now-dead flags -R/--refresh, -o/--offline, -u/--update,
-C/--clean and the harvest/clean commands.
- New defaults: versions = wuj,vul,grb,drb; default_version = vul.
Update the README (offline-by-design, no harvest/update), help text, and
stale niedziela/bt doc comments. Tests updated for the offline reality;
go test ./... and go vet ./... are clean, all three binaries build and run
offline (OF + EF, compare, web).
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
late Advent
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-<day>' (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).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2nd readings)
The niedziela harvest had dropped the SECOND reading on 271 of ~299 Sunday-cycle
entries (a Sunday Mass is first/psalm/second/gospel). scripts/genlect-of-sundays-cr.py
re-sources the temporal Sunday & solemnity lectionary (Ordinary Time, Advent,
Christmas, Lent, Easter, Trinity, Corpus Christi, Sacred Heart, Christ the King;
all three cycles A/B/C) from catholic-resources.org, keyed by liturgical position,
and merges the complete readings into of-lectionary.ini.
- Also corrects ~6 contaminated Sunday first readings the niedziela by-date
harvest had picked up (ordinary-sunday-21-B had a Marian Prov 8; advent-2-A had
the Immaculate Conception's Gen 3; Christ the King B/C, Trinity C, Pentecost,
Ascension/7th-of-Easter were wrong).
- Content-validated: every changed first reading verified against the old one
(all changes are correct fixes or the identical passage, book spelling aside).
- Handles source quirks: hyphen/en-dash/ABC cycle markers, verbose Year-A
solemnity names, 'opt:' cycle-proper alternates, '[2025: Corpus Christi]'
displacement notes appended to names, Palm Sunday (cycle-independent
first/second, per-cycle Passion gospel kept), and abbreviation variants
(Jon/Is/Mt/Act/Zac...).
157/157 Sundays render first+psalm+second+gospel across 2026-2028. Adds
TestOFSundayCompleteReadings, credits the source in NOTICE, bumps to 0.42.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
OF feasts, solemnities, and proper-reading memorials had no readings of their own
and fell back to the day's ferial (Barnabas showed the ferial instead of Acts 11;
Our Lady of Sorrows / the Guardian Angels showed the ferial instead of their
proper gospel). scripts/gen-of-sanctoral-readings.py scrapes catholic-resources.org's
Proper of Saints table and inlines reading.first/psalm/second/gospel into
roman-calendar.ini for the 41 universal-calendar celebrations marked PROPER (plus
every feast/solemnity); memorials that draw on a Common keep the ferial, which is
the OF default. Handles the source quirks: 'or' alternatives (takes the first),
cycle-specific A:/B:/C: gospels (takes A), lectionary # refs, and vigil-vs-day
(keeps the day Mass). All 41 render; citations only. Adds
TestUniversalSanctoralReadings, credits the source in NOTICE, bumps to 0.41.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Ordinary Form ferial lectionary had two linked defects, both from harvesting
niedziela.pl by date: (1) post-Pentecost Ordinary-Time ferial WEEK NUMBERS were
one too high (temporal.go counted back from Christ the King using the weekday
itself, not its preceding Sunday, so a ferial took the next week's number), and
(2) ~17 ferial keys held a SAINT's readings (stored when a saint displaced the
ferial on the queried date, e.g. week 22 smeared with a Marian Prov 8/John 2),
plus 16 weekday slots were missing entirely.
- temporal.go: number a span-2 ferial from its preceding Sunday. Verified
388/388 ferial-week agreement with calapi across 2026-2028.
- scripts/genlect-of-cr.py: regenerate the Ordinary-Time ferial lectionary
(first/psalm/gospel, both years, all 34 weeks) from catholic-resources.org
(Fr. Felix Just, S.J.), which is keyed by liturgical position (immune to
by-date contamination) and complete. Citations only; text still rendered from
the public-domain corpora. of-lectionary.ini OT ferials now 408 (was 392).
Fixes ~17 contaminated entries + 16 gaps + the week-numbering audit item. Psalms
already share modern numbering, so no conversion. Adds TestOFOrdinaryTimeFerialWeek.
Credits catholic-resources.org in NOTICE. Bumps to 0.40.0.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
transfers)
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 & 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).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Generate internal/caldata/tridentine-calendar.ini from missalemeum's per-date
proper API (Divinum Officium 1962 data) via scripts/gen-sanctoral-ef.go: each
fixed date's observed saint with rank, colour, English name and proper
Epistle/Gospel citations, plus sancti commemorations. Multiple reference years
are tried per date so a saint occulted by a Sunday in one year is still captured
observed in another; saints never observed are ranked commemoration. Feasts of
the Lord are marked class=lord. Latin names hand-curated (missalemeum has none).
Adds TestTridentineLoads, credits missalemeum in NOTICE, bumps to 0.38.0.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Task 3 of national-bibles. Adds reading_lang (any language code) and
reading_version (explicit corpus code) config fields, setField cases,
renderConfigINI lines + self-documenting header, and Config.ReadingCorpus():
reading_version > reading_lang match > ui_language match > "" (Latin fallback
applied by the caller).
Also adds an `autoselect` corpus-metadata flag (default true), surfaced during
this task: the built-in wuj declares lang=pl, so lang-auto would have
re-selected the incomplete Wujek for Polish users and defeated the wuj-drop.
wuj.ini now sets autoselect=false, so it is reachable only via an explicit
reading_version or --ref; the resolver's language auto-match skips
non-autoselectable corpora. A corrected Wujek drop-in (autoselect defaults
true) auto-serves Polish with zero config.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Latin fallback
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-<season>-<week>-<weekday>" 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-<weekday>" case for the days between Ash
Wednesday and Lent I, which have their own propers.
Lectionary (tridentine-lectionary.ini, 55 -> 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" -> "4 Kings 5:1") and a
period-as-separator ("John 20. 19-31" -> "John 20:19-31"), both guarded so
legitimate multi-chapter citations are untouched.
Citations & corpora:
- books.ini: Douay abbreviations in the [en] dialect (Ex, Ezech, Jonas, and
3/4 Kings -> 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 -> 0.33.0.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
config-scoped citation display
books.ini with [en]/[pl]/[la]; parseBooks reads INI (bible drops go-toml).
Latin dialect resolves EF citations (Eccli->Sirach, Apoc->Revelation, Luc...);
sigla_style gains 'latin'. Reading citations now DISPLAY in the configured
sigla (FormatRef(SiglaLang)), not raw English. One-shot books.toml->books.ini
user migration (go-toml now config-only). Web settings editor -> books.ini.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
renderConfigINI now emits a top-of-file reference block listing each option's
allowed values (full-line comments; ascension/corpus_christi note the
'following Sunday' transfer). seedIfMissing generates from renderConfigINI, so
the seed, migrated configs, and web-settings saves all carry the same header;
dropped the separate embedded config.ini.
|
| | |
|
| |
|
|
|
|
|
| |
config.Load/Save now read/write config.ini; a pre-existing config.toml is
converted once (old file kept, reversible). New [calendar] section
(epiphany/ascension/corpus_christi) + Config.Selection() feeding the engine.
Config struct API unchanged, so daily-readings and web /settings keep working.
|
| |
|
|
|
|
|
|
|
|
| |
Inside a book, 'c' opens a centered prompt showing the book's chapter
range (e.g. "1-21: ") and accepts a chapter number to jump straight there,
instead of scrolling (handy for Psalm 119 etc). Digits only, backspace
edits, Enter clamps to the valid range and opens that chapter at its top,
Esc cancels. New modeChapterJump + updateChapterJump/jumpToChapter/
viewChapterJump; i18n ReaderJumpChapter/ReaderJumpChapterKeys (en/pl) and
'c' added to the reading keybar. Only offered when the book has >1 chapter.
|
| |
|
|
|
|
|
|
|
| |
The web nav links (settings, bookmarks, home), the /reader bookmark-add
form placeholders and button, the /bookmarks filter/empty/delete labels,
and every /settings field label were hardcoded English and stayed English
under ui_language=pl. Route them all through i18n (en/pl) so the Polish UI
is fully localized. No server.go change: every page's data already carries
L: i18n.Get(cfg.UILanguage).
|
| |
|
|
| |
label); --ui-lang flag overrides interface/export language (cli + web ?lang=); v0.24.0
|
| |
|
|
| |
gospel ref + liturgical colour per day); cli --calendar YYYY-MM; web /calendar + link; readings.GospelCitation; v0.23.0
|
| |
|
|
| |
embedded DejaVu Sans, covers pl/la/gr); cli --md/--pdf/--out; web /export + download links; v0.22.0
|
| |
|
|
| |
tui note box wraps long notes with hanging indent + hard-break; v0.21.0
|
| |
|
|
| |
fields), delete confirmation as a modal; v0.20.0
|
| |
|
|
| |
(write or skip); d in bookmarks confirms before deleting; v0.19.0
|
| |
|
|
| |
top-visible verse) + remember last place; v0.18.0
|
| |
|
|
| |
shows Book Ch:V; v0.17.0
|
| |
|
|
| |
version instead of erroring); v0.16.1
|
| |
|
|
| |
corpus, using the config default version; v0.16.0
|
| |
|
|
| |
(add/list/filter/jump/delete); v0.15.0
|
| |
|
|
| |
v0.14.0
|
| |
|
|
| |
version -> nothing' works in trad too; v0.13.1
|
| |
|
|
| |
default checked on fresh load; v0.13.0
|
| |
|
|
| |
scripture ref in traditional headings; v0.12.0
|
| |
|
|
| |
v0.11.1
|
| |
|
|
| |
dialect (bible.FormatRef); v0.11.0
|
| |
|
|
| |
traditional web; v0.10.0
|
| |
|
|
| |
pane templates; v0.9.0
|
| |
|
|
| |
corpora; v0.8.0
|