aboutsummaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAgeFilesLines
* feat(cli): --cal-dump NAME to generate a commented calendar templateLukasz Kasprzak2026-07-291-3/+3
| | | | | | | | | | | | | | | Replace the static examples/sanctorale-of.ini with a `--cal-dump NAME` flag that writes the running universal calendar to ~/.config/lectio/calendars/NAME.ini as a fully-commented layer template (every celebration present, all commented). Uncomment one day and edit a field to override it; enable with `use = NAME`. - Form-aware: respects -l/--lectionary, so `-l trad --cal-dump x` dumps the 1962 calendar (322 entries) and the default dumps the OF calendar (212 entries). - Entries sorted by date then slug; refuses to overwrite an existing file. - Always in sync with the embedded (or sanctorale-overridden) calendar, so no stale checked-in template to maintain. - Update help text, man page (OPTIONS/FILES/EXAMPLES) and README to match; drop examples/sanctorale-of.ini.
* examples: ship a commented sanctorale calendar-layer templateLukasz Kasprzak2026-07-291-1/+3
| | | | | | | | | | | Add examples/sanctorale-of.ini: every universal Ordinary Form sanctorale entry as a COMMENTED calendar-layer block (date, rank, class, colour, name.<lang>). As shipped it changes nothing; to alter a day you copy it into ~/.config/lectio/calendars/, uncomment its block, edit a field, and enable the layer with `use =`. The layer overlays the embedded calendar field by field, so untouched days keep their defaults (verified: uncommenting St Sebastian with rank=feast makes it displace the ferial). Header documents suppress/add/readings. Man page and README point at it.
* caldata: allow an external universal sanctorale to override the embedded oneLukasz Kasprzak2026-07-281-0/+21
| | | | | | | | | | | | | | | | 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/<form>.ini); config comment notes the override.
* caldata: backfill Polish names for the whole OF universal sanctoralLukasz Kasprzak2026-07-281-5/+6
| | | | | | | | | | | 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. <name>, <title>" / "ś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 -> św. Wojciech, John of Kanty -> św. Jana Kantego, Hedwig -> ś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.
* i18n: make all UI chrome user-translatable via ui/<code>.iniLukasz Kasprzak2026-07-281-5/+11
| | | | | | | | | | | | | | | | | | | | The interface chrome (version labels, TUI keybar/messages, CLI banner words, web control labels, section-heading words) was English/Polish hardcoded in Go. It is now data: the English and Polish tables ship as embedded lang/en.ini and lang/pl.ini, and any language is user-overridable at <config>/ui/<code>.ini, resolved per key with an English fallback. With ui_language = <code> plus a names/<code>.ini, the WHOLE interface -- chrome, day names, saint names -- is translatable without a rebuild. - i18n.Get loads the embedded English baseline, overlays the embedded/user language file, caches per lang; field <-> INI-key mapping is by reflection (lang.go) so the tables and files stay in sync automatically. Edge-space values (e.g. "error: ") are double-quoted so the INI trim keeps them. The Go tables move to golden_test.go; TestGoldenMatchesEmbedded asserts the embedded files still parse back to them, and TestGenerateLangFiles regenerates them (LECTIO_GEN=1). - config.UIDir(); wire i18n.SetUserDir in the CLI, TUI and web entry points. - README/config: document ui/<code>.ini alongside names/<code>.ini.
* docs: document corpora split, name localisation, and corpora licenceLukasz Kasprzak2026-07-281-13/+69
| | | | | | | | | | | - README: only the Vulgate is embedded by default; new "Scripture corpora" section explains the fullbible tag and the runtime corpora dir, and new "Localising day names" section covers ui_language = <code> + names/<code>.ini for day names and calendar-layer name.<lang> for saints. License section now states the bible corpora are not covered by the AGPL. - NOTICE: add a "Scripture corpora -- embedding and licence" section listing each corpus's provenance (vul/wuj/drb/grb, all public domain) and the default-embeds-vul-only policy.
* licence: relicense MIT -> AGPL-3.0-or-laterLukasz Kasprzak2026-07-281-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* refactor: remove the niedziela/missalemeum scrapers, bt, traditional_langLukasz Kasprzak2026-07-281-71/+47
| | | | | | | | | | | | | | | | | | | | | | 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).
* chore: bump to 0.35.0 + README for calendar API (JSON/iCal)Lukasz Kasprzak2026-07-271-0/+21
|
* rename the pl scripture version to bt (Biblia Tysiąclecia); v0.4.0Lukasz Kasprzak2026-07-241-7/+7
| | | | | | | | | | The niedziela.pl scraped Polish paragraph text is the Biblia Tysiąclecia translation; rename its version code from "pl" to "bt" and its i18n label to "Biblia Tysiąclecia (niedziela.pl)" everywhere the scripture VERSION is meant, across config, i18n, render, web, tui, cli and both binaries' help text. Language-role "pl" (ui_language, traditional_lang, i18n.Get lang, --lang validation) is untouched. Behavior is identical -- bt is still dropped for offline/traditional and substituted with wuj.
* web: distinct per-theme fonts + bolder accents; memento_mori bare monospaceLukasz Kasprzak2026-07-231-12/+16
|
* web: theme control boxes, one default version, drop search bar; traditional ↵Lukasz Kasprzak2026-07-231-2/+0
| | | | drops pl + all=readings-only
* web: remove deus_vult theme; add global monospace toggle (web_mono config + ↵Lukasz Kasprzak2026-07-231-4/+6
| | | | top-bar 'mono')
* web: deus_vult armor-grey ground; dominicans pure black & whiteLukasz Kasprzak2026-07-231-2/+1
|
* web: add dominicans/marian/epiphany themes + --theme-font hook (memento_mori ↵Lukasz Kasprzak2026-07-231-8/+10
| | | | monospace)
* web: theme revisions — drop camaldolese, add deus_vult (silver/white/red); ↵Lukasz Kasprzak2026-07-231-2/+2
| | | | pentecost -> red/white/gold; darker franciscans
* docs: README; wire lectio-web into build; finalizeLukasz Kasprzak2026-07-231-0/+287
Add README.md documenting all three binaries (lectio, lectio-ui, lectio-web), config keys, the 12 themes, display modes, offline/update workflow, and both lectionaries, surveyed against the real source. Wire the third binary into Makefile's build/install/uninstall/clean/cross targets (LECTIO_WEB var, ./cmd/lectio-web) and add /lectio-web to .gitignore, matching the existing lectio/lectio-ui style.