<feed xmlns='http://www.w3.org/2005/Atom'>
<title>clectio.git, branch v1.0</title>
<subtitle>tiny suckless C daily readings, floppy sized, bring your own Bible</subtitle>
<id>https://git.labunix.xyz/clectio.git/atom?h=v1.0</id>
<link rel='self' href='https://git.labunix.xyz/clectio.git/atom?h=v1.0'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/'/>
<updated>2026-07-30T09:02:48Z</updated>
<entry>
<title>reader: verse number in a left column, hang-indent wrapped text</title>
<updated>2026-07-30T09:02:48Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-30T09:02:48Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=ba1b441e1da4e99546b3b7e755c8d31b73055343'/>
<id>urn:sha1:ba1b441e1da4e99546b3b7e755c8d31b73055343</id>
<content type='text'>
putwrapped now peels the leading chap:verse token into a fixed VNUM-wide
column (new config knob, default 8) and hang-indents continuation lines
under the text, so the reading has a straight left margin instead of
wrapping flush to column 0. Verses without a numeric prefix still wrap
flush-left; the WRAP&lt;=0 (terminal-fit) path is unchanged.
</content>
</entry>
<entry>
<title>build: add `make dist` source-tarball target + .gitattributes export-ignore</title>
<updated>2026-07-29T08:30:33Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T08:30:33Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=00b51e3292062f52a4699440cb36b3aa337dbd17'/>
<id>urn:sha1:00b51e3292062f52a4699440cb36b3aa337dbd17</id>
<content type='text'>
- `make dist` runs git archive to write clectio-$(VERSION).tar.gz: a snapshot of
  the committed tree only -- no .git history, and no build artifacts (they are
  untracked, so git archive can't include them). VERSION defaults to 1.0,
  overridable (make dist VERSION=x). `clean` removes the tarball; it is
  gitignored.
- .gitattributes marks .gitignore and .gitattributes export-ignore, so they stay
  out of the shipped source tarball.

Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
</content>
</entry>
<entry>
<title>license: relicense clectio's own code under GPL-3.0-or-later</title>
<updated>2026-07-29T08:19:43Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T08:19:43Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=8d7d3ac6f2b365342aa25ecb31f8e76d18090a22'/>
<id>urn:sha1:8d7d3ac6f2b365342aa25ecb31f8e76d18090a22</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>feat: man page (clectio.1), installed by make install</title>
<updated>2026-07-29T08:06:24Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T08:06:24Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=d17262c10fc24557741a5b571f40dfd9625fdb2e'/>
<id>urn:sha1:d17262c10fc24557741a5b571f40dfd9625fdb2e</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>docs: reframe calendar customization as "Bring your own calendar"</title>
<updated>2026-07-29T08:00:37Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T08:00:37Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=389a038f55731d3df82cae71a0bec4db7086059c'/>
<id>urn:sha1:389a038f55731d3df82cae71a0bec4db7086059c</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>feat: standalone calendar overrides (calendar.h) + document customization</title>
<updated>2026-07-29T07:55:22Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T07:55:22Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=2468224d0aaacd8b0e7478af55142bcd831d2b77'/>
<id>urn:sha1:2468224d0aaacd8b0e7478af55142bcd831d2b77</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>docs: fully document the bring-your-own-Bible corpus format</title>
<updated>2026-07-29T07:13:38Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T07:13:38Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=d0bcdc3f3912a4e746fe12050e8062b3679124aa'/>
<id>urn:sha1:d0bcdc3f3912a4e746fe12050e8062b3679124aa</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>feat: --month [YYYY-MM | N] month overview</title>
<updated>2026-07-29T06:57:11Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T06:57:11Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=f16b5d713bcd839a250bf17241c734316389b5fb'/>
<id>urn:sha1:f16b5d713bcd839a250bf17241c734316389b5fb</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>feat: -a/-g runtime reading toggle and WRAP config option</title>
<updated>2026-07-29T06:49:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T06:49:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=4290b7b2cbeeba4f08446f15c04b64d70dedbabc'/>
<id>urn:sha1:4290b7b2cbeeba4f08446f15c04b64d70dedbabc</id>
<content type='text'>
- -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
</content>
</entry>
<entry>
<title>perf: DEFLATE (puff) + -no-pie -&gt; OF binary 879 KB -&gt; 662 KB (-25%)</title>
<updated>2026-07-28T22:49:47Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T22:49:47Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=302897c5e8d61db9107505ba929f9abfc197896d'/>
<id>urn:sha1:302897c5e8d61db9107505ba929f9abfc197896d</id>
<content type='text'>
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 -&gt; 492 KB (OF), 164 KB -&gt; 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 -&gt; 662 KB, EF 266 -&gt; 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
</content>
</entry>
</feed>
