aboutsummaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAgeFilesLines
* docs: fully document the bring-your-own-Bible corpus formatLukasz Kasprzak2026-07-291-9/+51
| | | | | | | | | | | | | | | | | | | Expand "Bring your own Bible" with the details a user needs to actually do it: - the six-column TSV format with three real, tab-marked example rows and a column legend; - which columns are load-bearing -- clectio matches on Book+Chapter+Verse (cols 1,4,5) and prints col 6; Abbrev/BookNum (cols 2,3) are ignored but must be present; - the Vulgate-versification requirement made explicit (a differently numbered Bible misaligns), with the "start from vul.tsv, swap the text column" tip; - pointer to the four ready corpora shipped with lectio, with a runnable drb example; - a "switching back to the Vulgate" note (the git-tracked text_*.lz blob is overwritten by a CORPUS= build). Docs only; no code change. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: --month [YYYY-MM | N] month overviewLukasz Kasprzak2026-07-291-4/+8
| | | | | | | | | | | | | | List a whole month, one line per day: weekday, day, liturgical colour and celebration name. Form-aware; colours the name on a tty and prints the colour word (aligned column) always, so a piped file stays readable. Defaults to the current month; accepts YYYY-MM or a bare month number (current year). Needs no scripture text, so it never loads or decompresses the text blob. Days-in-month and weekday are computed with days_from_civil (leap-correct); a month outside the compiled range is reported, not guessed. No table/data change; OF and EF build clean under -Wall -Wextra; binary unchanged at 666 KB. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: -a/-g runtime reading toggle and WRAP config optionLukasz Kasprzak2026-07-291-1/+9
| | | | | | | | | | | | | | | | - -a/--all and -g/--gospel override the compiled GOSPEL_ONLY default per run; the reading text for both is always embedded, so this is free. Flags may appear in any position alongside the optional date. - WRAP config.h option wraps reading text at N columns; 0 (default) fits the terminal via TIOCGWINSZ and leaves piped output one line per verse. Greedy, space-breaking, UTF-8 aware (continuation bytes do not count as columns). - Rework arg parsing into a small flag loop; expand -h usage. No table/data change; OF and EF both build clean under -Wall -Wextra. Binary grows ~4 KB (666 KB OF). Stays compile-time-first, suckless-style: the only run-time options are the reading-set toggle and -h. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* perf: DEFLATE (puff) + -no-pie -> OF binary 879 KB -> 662 KB (-25%)Lukasz Kasprzak2026-07-291-5/+6
| | | | | | | | | | | | | | | | | | | | | Two size wins: - Replace the home-grown LZSS (2.0x) with DEFLATE: mktext gzips the text and strips the gzip container to a raw DEFLATE stream; clectio decompresses it with puff, Mark Adler's public-domain reference inflate (~200 lines, verified byte-identical to gunzip on the OF/EF text, repetitive, random and empty inputs). Text blob 671 KB -> 492 KB (OF), 164 KB -> 132 KB (EF), 2.7x. - Build with -no-pie: clectio is a local CLI reading static embedded data with no attack surface, so it needs no PIE/ASLR. The linker then bakes the string- table pointers in at link time instead of emitting ~57 KB of runtime relocations. Net: OF 879 -> 662 KB, EF 266 -> 214 KB. Verified byte-identical to lectio. The default build still needs only a compiler + libc; a CORPUS= rebuild now also needs gzip. lz.h removed. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: config.h GOSPEL_ONLY -- print all readings (default) or just the GospelLukasz Kasprzak2026-07-281-0/+1
| | | | | | | | | | | Add a compile-time toggle in config.h: GOSPEL_ONLY=0 (default) prints every reading; GOSPEL_ONLY=1 prints only the Gospel. The Gospel is matched by its part label, so it works for both forms. Help and the compiled-settings line report the mode. Also tidy print_day's header underline to match the width of the "<form> for <date>" line instead of the reading count. No data change; strict -Wsign-conversion clean in both modes. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* clectio: tiny suckless C daily readings, all readings compiled inlectio2026-07-281-0/+67
clectio prints the Catholic liturgical day and its Mass readings for a date with a single table lookup -- no computation, config file, network, or deps beyond libc. The calendar, reading citations and scripture text are all compiled in; the whole shipped package fits on a 1.44 MB floppy (~1.29 MiB) and the binary is ~0.9 MB (OF) / ~0.3 MB (EF). - suckless config.h: FORM_OF/FORM_EF, SIGLA_ENGLISH/SIGLA_LATIN, COLOR. - Bring your own Bible: `make CORPUS=mybible.tsv` recompiles with any Vulgate-numbered 6-column TSV; only the ~12k cited verses are embedded. - The hard liturgical logic stays in lectio (Go, oracle-validated); its clectio-gen emits the corpus-independent tables in gen/. The scripture text is LZSS-packed (lz.h) to fit; mktext/bin2h resolve+embed it at build time. - Verified byte-identical to lectio's readings; day names match 157/157 over a 3-year sample. Default text: public-domain Latin Vulgate. ISC-licensed. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a