<feed xmlns='http://www.w3.org/2005/Atom'>
<title>clectio.git/mktext.c, branch main</title>
<subtitle>tiny suckless C daily readings, floppy sized, bring your own Bible</subtitle>
<id>https://git.labunix.xyz/clectio.git/atom?h=main</id>
<link rel='self' href='https://git.labunix.xyz/clectio.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/'/>
<updated>2026-07-29T08:19:43Z</updated>
<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>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>
<entry>
<title>fix: recover dropped readings + collapse whitespace; regenerate data</title>
<updated>2026-07-28T20:51:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T20:51:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=59fc2e62cbfb94e901ac24c0d85a7bec738473e0'/>
<id>urn:sha1:59fc2e62cbfb94e901ac24c0d85a7bec738473e0</id>
<content type='text'>
Two QA-found bugs fixed:

- mktext now collapses runs of whitespace in verse text to a single space
  (and trims), matching lectio's Fields-based rendering. The Vulgate source
  has occasional double spaces that were leaking into the output.

- Regenerated gen/ with the hermetic, alias-fixed clectio-gen: the generator
  no longer picks up the user's stale books.ini (which had silently dropped
  ~30 EF Ember-day lessons, e.g. St Lawrence-common Sir 45, Osee/Hosea 14,
  2 Esdras/Nehemiah 8). Full range 2025-2054 now has 0 dropped readings.

Verified vs lectio: OF and EF 2026 are byte-identical (day names + verse
text, 0 mismatches); range boundaries 2025-01-01 / 2054-12-31 match; ASAN +
UBSAN clean over leap days, boundaries and edge cases; bad input never
crashes. Shipped total 1.28 MiB.

Claude-Session: https://claude.ai/code/session_01S1CD1u3tgSS4xNu6WHfp5a
</content>
</entry>
<entry>
<title>clectio: tiny suckless C daily readings, all readings compiled in</title>
<updated>2026-07-28T20:07:45Z</updated>
<author>
<name>lectio</name>
<email>lukasz@arcofasiagroup.com</email>
</author>
<published>2026-07-28T20:07:21Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/clectio.git/commit/?id=42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1'/>
<id>urn:sha1:42fd9a69fa2bc9ef11c65c169a58ff40c9cb0fa1</id>
<content type='text'>
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
</content>
</entry>
</feed>
