summaryrefslogtreecommitdiff
path: root/README.md
Commit message (Collapse)AuthorAgeFilesLines
* license: relicense clectio's own code under GPL-3.0-or-laterLukasz Kasprzak2026-07-291-5/+6
| | | | | | | | | | | | | | | | | | | | Replace the ISC licence with GPL-3.0-or-later (Łukasz Kasprzak is sole copyright holder, so relicensing is unencumbered): - LICENSE: verbatim GNU GPL v3 text. - Add "Copyright (C) 2026 Łukasz Kasprzak. SPDX-License-Identifier: GPL-3.0-or-later" headers to the project-authored sources (clectio.c with the full grant, plus mktext.c and bin2h.c), replacing their old public-domain notes. - puff.c/.h keep Mark Adler's public-domain notice unchanged: third-party, not ours to relicense, and public domain is GPL-compatible. - README and man page LICENSE sections updated to GPL-3.0-or-later, noting puff's PD status; the scripture-text carve-out (Vulgate public domain, corpora under their own terms) is preserved. Code/comment change only; builds clean under -Wall -Wextra. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: man page (clectio.1), installed by make installLukasz Kasprzak2026-07-291-1/+2
| | | | | | | | | | Add a manual page covering usage, the -a/-g and --month options, the compile- time config.h settings (FORM/SIGLA/COLOR/GOSPEL_ONLY/WRAP), and both the bring-your-own-Bible and bring-your-own-calendar workflows, matching the README. Install it via make (MANPREFIX = $PREFIX/share/man); uninstall removes it too. Renders clean under man --warnings. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* docs: reframe calendar customization as "Bring your own calendar"Lukasz Kasprzak2026-07-291-9/+11
| | | | | | | | | Rename the "Customize the calendar" section to "Bring your own calendar" and move it directly after "Bring your own Bible", so the two data-customization axes read as a matched pair (text and calendar). Fold the compiled-range note into Coverage, now placed after the section. No content dropped. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* feat: standalone calendar overrides (calendar.h) + document customizationLukasz Kasprzak2026-07-291-0/+71
| | | | | | | | | | | | | | | | | | | | Add a compile-time override table for MINOR local calendar changes, standalone (no lectio, no toolchain): edit calendar.h (copied from calendar.def.h), add a { month, day, colour, "name" } row, make. It replaces a fixed date's name and colour, every year, in both single-day and --month output. Limits (no engine): fixed dates only; name/colour only, not readings or rank/precedence; an override wins unconditionally. README gains a "Customize the calendar" section documenting both tiers with their limits: the standalone override above, and -- for readings, ranks and movable feasts -- regenerating gen/ from a lectio calendar layer via clectio-gen (-caldir/-use), then rebuilding with CORPUS= to repack any newly cited verses, with a git-checkout revert note. Both forms build clean under -Wall -Wextra; binary unchanged at 666 KB; default (empty override table) output is unchanged. Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
* 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