<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/render, branch perf/hoist-date-independent-work</title>
<subtitle>offline Catholic daily readings and liturgical calendar in Go, with CLI, TUI and web clients</subtitle>
<id>https://git.labunix.xyz/lectio.git/atom?h=perf%2Fhoist-date-independent-work</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=perf%2Fhoist-date-independent-work'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-08-03T22:05:55Z</updated>
<entry>
<title>i18n: pin the Polish part labels; cross-reference the part-ID orders</title>
<updated>2026-08-03T22:05:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-08-03T22:05:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=70c504148ca9ddf7fdb31162f5f8da7e118fca45'/>
<id>urn:sha1:70c504148ca9ddf7fdb31162f5f8da7e118fca45</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test(bible): skip corpus-dependent tests when optional corpora aren't embedded</title>
<updated>2026-07-29T09:46:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T09:46:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=8ddd910dd545c45a7227da87ca125758b4a0e2cb'/>
<id>urn:sha1:8ddd910dd545c45a7227da87ca125758b4a0e2cb</id>
<content type='text'>
Since 51c0f4e split the corpora (only vul embedded by default; wuj/drb/grb
behind -tags fullbible), `go test ./...` on the default build was red across six
packages -- every failure was a test assuming an optional corpus is present.

Guard those assertions with a skip keyed on bible.Meta(code), so they run under
-tags fullbible and skip -- not fail -- on the default vul-only build. Mixed
tests are split into subtests so the always-embedded vul assertions and pure
logic (pl-&gt;vul fallback, explicit passthrough, bt-rejection, i18n labels) keep
running on both builds. Test-only change; no product code or corpora touched.

- internal/bible: TestVerses, TestLookup, TestCorpusBooks, TestChapters,
  TestGrbNoApparatusMarkers, TestCrossChapterRange* (requireCorpus helper).
- internal/cli, config, render, tui, web: the same pattern for their
  corpus-dependent tests.
- Fixes an index-out-of-range panic in internal/tui's reader tests that was
  aborting the package binary and masking 3 further corpus-absence failures
  (TestReaderBookmarkFlow, TestReaderChapterJump, TestReaderRemembersPlace).

Verified: `go test ./...` and `go test -tags fullbible ./...` both green (0 FAIL);
guards active only on the default build (29 skips vs 1 unrelated pre-existing);
gofmt and go vet clean.
</content>
</entry>
<entry>
<title>refactor: remove the niedziela/missalemeum scrapers, bt, traditional_lang</title>
<updated>2026-07-28T10:50:31Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T10:50:31Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=7b220084cf3951c8cde0582efdfcf628afc64336'/>
<id>urn:sha1:7b220084cf3951c8cde0582efdfcf628afc64336</id>
<content type='text'>
The daily view now computes entirely offline (previous commit), so retire the
network path and everything that served it:

- Delete internal/tradlit (missalemeum) and the niedziela scraper from
  internal/liturgy (fetch/store/parse + fixtures); keep Section, DayInfo and
  ExtractCitation.
- Remove the "bt" version everywhere (render gatherBT + branches, config,
  i18n, web form, TUI) and bible.ToEnglishRef (Polish citation converter).
  A legacy config carrying "bt" migrates to "wuj" on load (config.migrateBT).
- Remove the traditional_lang config field and the -g/--lang flag from all
  three binaries.
- Drop the now-dead flags -R/--refresh, -o/--offline, -u/--update,
  -C/--clean and the harvest/clean commands.
- New defaults: versions = wuj,vul,grb,drb; default_version = vul.

Update the README (offline-by-design, no harvest/update), help text, and
stale niedziela/bt doc comments. Tests updated for the offline reality;
go test ./... and go vet ./... are clean, all three binaries build and run
offline (OF + EF, compare, web).
</content>
</entry>
<entry>
<title>feat(readings): compute the daily view offline (OF + EF)</title>
<updated>2026-07-28T09:57:45Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T09:57:45Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=feede51697be870ae183a95b513ef64f031dbd0f'/>
<id>urn:sha1:feede51697be870ae183a95b513ef64f031dbd0f</id>
<content type='text'>
Route readings.Load through the embedded calendar engine and lectionary
data instead of the niedziela/missalemeum scrapers. The daily view now
computes each day (calendar.Compute + caldata.Readings) and renders text
from the public-domain corpora, with citations resolved per corpus.

- bible.OFRef: normalise an English-canonical OF citation (drop sub-verse
  letters, ";" -&gt; ",") and renumber Psalms for the target Psalter
  (Hebrew-&gt;Vulgate chapter for vul/grb/wuj; DRB title-fold verses for drb).
- liturgy.Section gains Ref (English-canonical lookup ref) alongside
  Citation (sigla-dialect display); the loader fills both, resolveRef uses
  Ref, headings/citation command show Citation.
- EffectiveVersions always drops "bt" (no offline corpus); the single
  daily version defaults to vernacularVersion (reading corpus else Latin).

Scraper packages remain in the tree, unreferenced, pending removal.
</content>
</entry>
<entry>
<title>grb: strip SBLGNT apparatus markers (U+2E00–U+2E0D); render: show scripture ref in traditional headings; v0.12.0</title>
<updated>2026-07-24T12:23:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T12:23:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a87f2fafbda90cc9eeb32ea856356c34e1d880b0'/>
<id>urn:sha1:a87f2fafbda90cc9eeb32ea856356c34e1d880b0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>rename the pl scripture version to bt (Biblia Tysiąclecia); v0.4.0</title>
<updated>2026-07-24T07:55:36Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T07:55:36Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a865374755480a4aef2a6156afccdf08a91422ea'/>
<id>urn:sha1:a865374755480a4aef2a6156afccdf08a91422ea</id>
<content type='text'>
The niedziela.pl scraped Polish paragraph text is the Biblia Tysiąclecia
translation; rename its version code from "pl" to "bt" and its i18n label
to "Biblia Tysiąclecia (niedziela.pl)" everywhere the scripture VERSION is
meant, across config, i18n, render, web, tui, cli and both binaries' help
text. Language-role "pl" (ui_language, traditional_lang, i18n.Get lang,
--lang validation) is untouched. Behavior is identical -- bt is still
dropped for offline/traditional and substituted with wuj.
</content>
</entry>
<entry>
<title>tui: fix width-wrap garbling + straight-aligned verse column (export render.Wrap, hanging indent); strip niedziela summary subtitle (tui/cli/web); web verse grid alignment; refrain-italic pl-only</title>
<updated>2026-07-23T21:28:15Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T21:28:15Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=9ec2c438a39542ec485e221d485c43b04d692aca'/>
<id>urn:sha1:9ec2c438a39542ec485e221d485c43b04d692aca</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli,tui,web: share traditional+offline pl-drop via render.EffectiveVersions; -v/--version any position</title>
<updated>2026-07-23T20:48:55Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T20:48:55Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=f73decedab916d336247d4ea43ead2b7f7da1e83'/>
<id>urn:sha1:f73decedab916d336247d4ea43ead2b7f7da1e83</id>
<content type='text'>
</content>
</entry>
<entry>
<title>i18n: fix consistency-review gaps in ui_language (en/pl chrome)</title>
<updated>2026-07-23T20:08:56Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T20:08:56Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=390f8cb146c69d8d3a0e6e0d76ea3546f30a7611'/>
<id>urn:sha1:390f8cb146c69d8d3a0e6e0d76ea3546f30a7611</id>
<content type='text'>
Closes six findings from review of the ui_language feature so English
mode carries no leftover Polish UI text:

- Web: interlinear "no verses" note and the empty-day error fragment now
  route through i18n instead of being unconditionally Polish.
- render.GatherVersion/GatherVerses/resolveRef's four lookup/citation-
  failure blocks are now lang-aware (resolveRef gained a lang param).
- i18n.ErrorPrefix/NoReadingsFor lost a stray extra trailing space,
  restoring the pre-i18n single-space TUI concatenation.
- render.LocalizeHeading now matches a heading's actual leading label
  text against all known modern pl labels, rather than trusting the
  label keyed by sec.PartID -- fixes split-feast days where PartID is
  "drugie_czytanie" but the heading still reads "1. czytanie ...".
- cli bannerFor is lang-specific again (pl "na", en "for"), restoring
  pl's exact pre-i18n wording instead of "--" for both languages.
- index.html's &lt;html lang&gt; now follows cfg.UILanguage instead of being
  hardcoded "pl".

gofmt/vet clean, go test ./... green, all three binaries build, no new
go.mod deps. Consistency grep across cli/tui/web/render's live source
turns up only two non-displayed identifiers (a PartID slug list and a
pre-existing incipit-stripping constant on the pl scripture text itself).
</content>
</entry>
<entry>
<title>i18n: ui_language config (default en) for UI chrome across cli/tui/web; version labels localised</title>
<updated>2026-07-23T19:51:40Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T19:51:40Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=4c776396115c8120c3e1cb8fda993449fcdcd326'/>
<id>urn:sha1:4c776396115c8120c3e1cb8fda993449fcdcd326</id>
<content type='text'>
</content>
</entry>
</feed>
