aboutsummaryrefslogtreecommitdiff
path: root/internal/liturgy
Commit message (Collapse)AuthorAgeFilesLines
* dayinfo: show feast/day name + colour (modern niedziela + traditional ↵Lukasz Kasprzak2026-07-246-37/+190
| | | | missalemeum) in cli/tui/web; v0.5.0
* tradlit: offline caching + read; update pre-caches traditional; --clean ↵Lukasz Kasprzak2026-07-244-29/+38
| | | | prunes it; v0.2.0
* cli,liturgy: lectio --clean prunes readings cache older than one yearLukasz Kasprzak2026-07-232-0/+120
|
* cli: flag-driven interface (short+long); -u maximal blip-proof harvestLukasz Kasprzak2026-07-232-10/+96
| | | | | | | | | | | | | | Replace the today/date/show/compare/update subcommands with a single flag-driven interface like the Python predecessor: lectio [DATE] -a/-b/-c/-r/-w/-R/-o/-l/-g/-u, short and long names bound to the same variable, DATE (YYYY-MM-DD) extracted from any position in the args. Fix Harvest's "-u" to walk to the true maximal horizon without a transient network error being mistaken for it: a fetch failure now retries a few times with backoff and, if it still fails, is reported as an error (after saving partial progress via writeSigla), while a Parse failure (the real unpublished-horizon placeholder) still stops cleanly with a nil error.
* web,liturgy: validate date against path traversal; bind lectio-web to localhostLukasz Kasprzak2026-07-232-0/+40
| | | | | | | | | | | | | | | | | An unvalidated ?date= query param flowed straight into liturgy.Load's filepath.Join(dir, date+".json"/".html") before any network call, letting a crafted date (e.g. "../../../../etc/hostname") read an arbitrary file whose JSON, if present, unmarshals into []liturgy.Section and renders back to the client. Fix both layers: resolveQuery now falls back to today() on empty or non-YYYY-MM-DD date (mirroring requestDisplay's normalize-don't-trust pattern), and liturgy.Load itself rejects a non-matching date before building any cache path, protecting every caller even if a future one forgets to validate. Also bind lectio-web's listener to 127.0.0.1 instead of all interfaces: it is a personal tool whose Run already prints http://localhost:<port>, so it should not be reachable from the LAN.
* liturgy: LoadOffline sets PartID (fix offline gospel-only)Lukasz Kasprzak2026-07-232-3/+15
|
* readings: lectionary router + part filteringLukasz Kasprzak2026-07-231-0/+7
|
* liturgy: sigla harvest + offline loadLukasz Kasprzak2026-07-233-4/+233
|
* liturgy: fetch + HTML/JSON cacheLukasz Kasprzak2026-07-232-0/+186
|
* liturgy: Section type + HTML parse (fixtures)Lukasz Kasprzak2026-07-235-0/+5835
Ports parse_sections, html_to_lines, extract_reference from ewangelia.py. Parse(html) prefers the tabnowy0all lectionary tab (falls back to tabstary0all) and errors loudly if the tab is present-but-empty or absent. ExtractCitation(heading) pulls the parenthetical citation. Section gains a PartID field (Addendum A): set from the heading prefix (1. czytanie -> pierwsze_czytanie, a second same-day 1. czytanie -> drugie_czytanie, Psalm -> psalm, Aklamacja -> aklamacja, Ewangelia -> ewangelia; anything else -> ""). Adds testdata/2026-07-22.html (split-feast day, two 1. czytanie sections) and testdata/2026-06-22.html (normal day), copied from ~/.cache/daily-reading/.