<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/web/server.go, branch v0.45.1</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=v0.45.1</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=v0.45.1'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-29T18:46:57Z</updated>
<entry>
<title>web(settings): drop the terminal "versions" field; it is CLI-only</title>
<updated>2026-07-29T18:46:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T18:46:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=03ead1722f4c57616adc6c709ebbce0642c03cfb'/>
<id>urn:sha1:03ead1722f4c57616adc6c709ebbce0642c03cfb</id>
<content type='text'>
The settings page showed two near-identical version checkbox rows --
"versions" (the terminal compare set) and "web_versions" (the web page's
own default ticks). The first only affects the CLI, so editing it from
the web is pointless and was actively confusing (both rows list the same
wuj/vul/grb/drb boxes).

Remove the "versions" row from the form and stop reading it in
settingsPost, so cfg.Versions is preserved from the live config (same
pattern as offline/width/pager). The web settings now expose only what
the web uses: default_version and web_versions.
</content>
</entry>
<entry>
<title>web: reader link to the left, downloads into a "pobierz" disclosure</title>
<updated>2026-07-29T13:06:57Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T13:06:57Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=ae8af86660243b75db1d54bb0c8d26431bd17f52'/>
<id>urn:sha1:ae8af86660243b75db1d54bb0c8d26431bd17f52</id>
<content type='text'>
Finish the top-bar rework. The reader entry point now leads the controls
bar on the far left (it was in the right-hand cluster); settings stays in
the top-right cluster.

The flat "download: txt md pdf · kalendarz" strip becomes a single
"pobierz" summary that opens a small floating panel with two rows:
 - a month calendar with its own month + year &lt;select&gt; pickers (localised
   month names, both pre-selected from the shown date) and a PDF button
   that hits /calendar?month=YYYY-MM;
 - the shown day's readings as txt/md/pdf, labelled with the date.

The panel is absolutely positioned under the link so opening it doesn't
reflow the bar. indexData gains MonthOpts/YearOpts (a calOpt list); the
year picker is a small window around the shown year.
</content>
</entry>
<entry>
<title>web: declutter the UI, fix date arrows, red * for bookmarked verses in reader</title>
<updated>2026-07-29T12:24:16Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T12:24:16Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=855859bdaac101e7e87d5cb0237b7c30f4f4b371'/>
<id>urn:sha1:855859bdaac101e7e87d5cb0237b7c30f4f4b371</id>
<content type='text'>
Daily page (index.html):
- Date arrows now step the date input client-side and dispatch its change, so
  they move relative to the CURRENT day and update the shown date (they were
  stuck one step from the initial date, computed server-side).
- Theme picker removed (theme lives only in /settings now); bookmarks link
  removed (bookmarks belong to the reader, not the daily readings).
- reader/settings nav + the download links move to a right-aligned .controls-side
  cluster; essential controls (date, lectionary, versions, parts, layout, mono)
  stay on the left. mono stops its change bubbling so it no longer refetches.

Reader (reader.html + RenderPassage): a bookmarked verse now shows a red "*"
(end of line in columns, after the verse number interlinear). Threaded a
marked set (keyed "chap:verse") through the reader render path only; the daily
RenderReadings path is untouched.

Settings (settings.html): Save button moved to the top; removed offline (dead),
width and pager (CLI/TUI-only, no web effect) -- their config values are
preserved since the handler no longer reads/zeroes them.

Footer: source/licence centred.

Web tests + full suite green both build modes.
</content>
</entry>
<entry>
<title>licence: relicense MIT -&gt; AGPL-3.0-or-later</title>
<updated>2026-07-28T12:02:54Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-28T12:02:54Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=0586599fc6020df996c4278230eeea99b9d070cb'/>
<id>urn:sha1:0586599fc6020df996c4278230eeea99b9d070cb</id>
<content type='text'>
lectio was MIT, which let anyone take it closed. The concern is not people
selling it -- no licence stops that, and the AGPL does not try to -- but
someone building a proprietary product on it and giving nothing back.

Plain GPL would leave the obvious hole open: lectio-web is a network
service, and hosting is not distribution, so a modified lectio-web could be
run as a paid subscription API without ever publishing a line. AGPL section
13 closes exactly that.

LICENSE is the verbatim FSF text. README carries the standard notice.

Section 13 requires a modified network-reachable version to PROMINENTLY
offer its source to the users interacting with it, so the offer ships with
the code rather than living only in a file nobody fetches:

  - GET /source          plain text, no template or config dependency, so
                         it answers even when something else is broken
  - page footers         every full page (fragments render inside one)
  - JSON envelope        "source" / "license"
  - iCal header          X-LECTIO-SOURCE / X-LECTIO-LICENSE

The feed fields are not redundant: an /api/calendar.json consumer or an
.ics subscriber never loads a page, so the footer alone would miss them.

config.SourceURL is the single source of truth, and says in its comment
that a fork running as a service must repoint it -- an offer that leads to
someone else's code is not an offer.

Tests pin all of it. This is a licence obligation, not a feature, so it
should fail loudly if a later change drops it.
</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(web): /api/calendar.json + /calendar.ics endpoints (capped, nosniff, validated)</title>
<updated>2026-07-27T19:41:38Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T19:41:38Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=b423759bf017d8fa1e45e5d1ce978f1b8d0a6a9f'/>
<id>urn:sha1:b423759bf017d8fa1e45e5d1ce978f1b8d0a6a9f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>feat: books.toml -&gt; books.ini, multi-language (add Latin dialect), config-scoped citation display</title>
<updated>2026-07-27T12:59:14Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-27T12:59:14Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=cb3379f41c06a94085c77fe359709b46712850dc'/>
<id>urn:sha1:cb3379f41c06a94085c77fe359709b46712850dc</id>
<content type='text'>
books.ini with [en]/[pl]/[la]; parseBooks reads INI (bible drops go-toml).
Latin dialect resolves EF citations (Eccli-&gt;Sirach, Apoc-&gt;Revelation, Luc...);
sigla_style gains 'latin'. Reading citations now DISPLAY in the configured
sigla (FormatRef(SiglaLang)), not raw English. One-shot books.toml-&gt;books.ini
user migration (go-toml now config-only). Web settings editor -&gt; books.ini.
</content>
</entry>
<entry>
<title>export: localize calendar title (month name via i18n Months + lectionary label); --ui-lang flag overrides interface/export language (cli + web ?lang=); v0.24.0</title>
<updated>2026-07-24T15:07:48Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T15:07:48Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=8a7839cad92a264d68635e4c853347d763b8e457'/>
<id>urn:sha1:8a7839cad92a264d68635e4c853347d763b8e457</id>
<content type='text'>
</content>
</entry>
<entry>
<title>export: month calendar PDF (A4 landscape, Monday-first grid, feast name + gospel ref + liturgical colour per day); cli --calendar YYYY-MM; web /calendar + link; readings.GospelCitation; v0.23.0</title>
<updated>2026-07-24T14:56:07Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:56:07Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=378926240f34759116b19e078d2b2504965f5329'/>
<id>urn:sha1:378926240f34759116b19e078d2b2504965f5329</id>
<content type='text'>
</content>
</entry>
<entry>
<title>export: internal/export (Markdown/Text/ReadingsPDF via pure-Go go-pdf/fpdf + embedded DejaVu Sans, covers pl/la/gr); cli --md/--pdf/--out; web /export + download links; v0.22.0</title>
<updated>2026-07-24T14:50:45Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:50:45Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=29e244c48222278c2f255ff2adf45e3af7c9f895'/>
<id>urn:sha1:29e244c48222278c2f255ff2adf45e3af7c9f895</id>
<content type='text'>
</content>
</entry>
</feed>
