<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/config/config.toml, branch main</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=main</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-27T10:53:34Z</updated>
<entry>
<title>feat(config): migrate to INI + one-shot TOML conversion + calendar Selection</title>
<updated>2026-07-27T10:53:34Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T10:53:34Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=809a47a227540ad8b8b2ac28a1bbbc2f115b7406'/>
<id>urn:sha1:809a47a227540ad8b8b2ac28a1bbbc2f115b7406</id>
<content type='text'>
config.Load/Save now read/write config.ini; a pre-existing config.toml is
converted once (old file kept, reversible). New [calendar] section
(epiphany/ascension/corpus_christi) + Config.Selection() feeding the engine.
Config struct API unchanged, so daily-readings and web /settings keep working.
</content>
</entry>
<entry>
<title>books: language-scoped --ref/--list via customizable books.toml + sigla_style config; v0.7.0</title>
<updated>2026-07-24T09:29:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T09:29:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a26fed000ad9f292618f9cecfd2b505dddfd004a'/>
<id>urn:sha1:a26fed000ad9f292618f9cecfd2b505dddfd004a</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>cli: pager for reading output (-P/--pager, --no-pager, config pager, $PAGER fallback); v0.3.0</title>
<updated>2026-07-24T07:30:26Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T07:30:26Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=9321fd3490b1739e4c84fd229a2cfef244ffdc29'/>
<id>urn:sha1:9321fd3490b1739e4c84fd229a2cfef244ffdc29</id>
<content type='text'>
</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>
<entry>
<title>config,web: web_versions — which version checkboxes start toggled on in lectio-web</title>
<updated>2026-07-23T19:25:27Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T19:25:27Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=ba3c501ec516e1cc58870708a83874b10fc4584a'/>
<id>urn:sha1:ba3c501ec516e1cc58870708a83874b10fc4584a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>config: parts.new preset to false (uncomment=hide); drop dead parts.traditional; clarify web_theme/web_display are the web defaults</title>
<updated>2026-07-23T19:23:10Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T19:23:10Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=0abfaeab69cb31c0a80f56598e64fa98f42824c3'/>
<id>urn:sha1:0abfaeab69cb31c0a80f56598e64fa98f42824c3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: remove deus_vult theme; add global monospace toggle (web_mono config + top-bar 'mono')</title>
<updated>2026-07-23T14:13:56Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T14:13:56Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=36d87e27019fce743e63be87222e987510863e6f'/>
<id>urn:sha1:36d87e27019fce743e63be87222e987510863e6f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: default lectio-web to port 1099 with free-port fallback</title>
<updated>2026-07-23T13:13:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T13:13:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=a600efbe3f3d2c29e3aa6e7877937a29429b9a1e'/>
<id>urn:sha1:a600efbe3f3d2c29e3aa6e7877937a29429b9a1e</id>
<content type='text'>
chooseListener(port) factors the listen logic out of Run: port==0 now
tries defaultWebPort (1099) first and only falls back to an OS-picked
free port if 1099 is taken; a non-zero port is still bound exactly,
surfacing its bind error as before. config.Default() keeps WebPort: 0
unchanged (0 still means "auto"). Adds TestChooseListener, robust to
sandboxes that can't bind 1099 or :0 (t.Skip instead of failing).

Also folds the ?ref= whitespace trim into renderLookup itself so GET /
and GET /lookup treat a whitespace-only ref identically (previously
only lookupHandler trimmed it).
</content>
</entry>
<entry>
<title>web: horizontal/vertical/interlinear display modes + web_display config</title>
<updated>2026-07-23T13:00:17Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-23T13:00:17Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=aa6c9dad764089a3f0e287b5f90937e97dde3921'/>
<id>urn:sha1:aa6c9dad764089a3f0e287b5f90937e97dde3921</id>
<content type='text'>
Adds a display-layout option to lectio-web alongside the existing colour
themes:

- config: WebDisplay field (toml web_display), default "horizontal",
  normalized on load via the new exported config.NormalizeDisplay
  (unknown -&gt; "horizontal", same lenient style as the other web_* fields).
- render: extracts the citation/ToEnglishRef resolution shared by
  GatherVersion into an unexported resolveRef helper (GatherVersion's
  signature/behavior unchanged) and adds GatherVerses(version, sec,
  lectionary) returning raw bible.Verse structs plus a versified flag, for
  column/interlinear alignment.
- web/render: RenderReadings gains a display parameter. "horizontal" is
  the original stacked layout, byte-for-byte the same code path as
  before. "vertical" reuses the same per-version column data in a
  .display-vertical/.vcol grid (the CLI compare view, browser-side).
  "interlinear" maps versions through render.OfflineVersions' pl-&gt;wuj
  substitution (pl has no verse numbers), gathers GatherVerses per
  version, and interleaves them by chapter:verse into .ilverse/.illine
  blocks (ordered union of keys, first versified version's order first).
- server: adds a display &lt;select&gt; to the top bar wired into the existing
  #controls HTMX form; a resolveQuery(cfg, r) helper replaces the
  duplicated date/lectionary/all/versions(+now display) resolution in
  indexHandler and readingsHandler.
- fold-in from the B2 review: indexHandler now populates indexData.Lookup
  via a shared renderLookup(ref, versions) helper (also used by
  lookupHandler), so a bookmarked "/?ref=...&amp;v=..." link shows its
  lookup result instead of an empty pane.
- base.css: layout-only rules for the two new modes (no colours; themes
  stay colour-only).

go test ./..., go vet ./..., gofmt clean; go build ./cmd/lectio-web ok.
</content>
</entry>
</feed>
