<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/web/static, 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:33:09Z</updated>
<entry>
<title>web: pin settings/download to the top-right corner, never wrap it down</title>
<updated>2026-07-29T18:33:09Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T18:33:09Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=41f6b694b184a2b39fa56d0dfe3c9ffbf44edbc5'/>
<id>urn:sha1:41f6b694b184a2b39fa56d0dfe3c9ffbf44edbc5</id>
<content type='text'>
Per the target layout: the utility cluster (settings + the pobierz
disclosure) must hold the top-right corner on the same row as the reader
link, not drop onto a second full-width line below the controls.

Make #controls itself non-wrapping so the side cluster keeps the corner;
the left controls (.controls-main) absorb any tightness by wrapping their
OWN items onto a further line (min-width:0 lets them shrink). At the
64rem page width the whole bar cannot fit every left control AND the
corner cluster on one line, so a trailing control (layout) wraps beneath
-- the intended block-on-the-left, cluster-in-the-corner shape. A tighter
column gap buys a little room; on phones (&lt;=40rem) the bar wraps normally.
</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: move lectionary + mono to settings only; make reader link prominent</title>
<updated>2026-07-29T12:37:23Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T12:37:23Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=af67ff8a079bf92a01a462fbb525eddb348eefc1'/>
<id>urn:sha1:af67ff8a079bf92a01a462fbb525eddb348eefc1</id>
<content type='text'>
Lectionary becomes settings-only (kept as a hidden field so readings/export/calendar still use the configured value); mono toggle removed (settings has it). The reader link is uppercased + bold as the primary action.
</content>
</entry>
<entry>
<title>web: pin the utility cluster to the top-right of the controls bar</title>
<updated>2026-07-29T12:33:08Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T12:33:08Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=b07ecd9d57793003a77da0e172016c9f44ef372d'/>
<id>urn:sha1:b07ecd9d57793003a77da0e172016c9f44ef372d</id>
<content type='text'>
Wrap the essential controls in a single .controls-main block that wraps
internally, so reader/settings + downloads stay at the TOP-right instead of
dropping to a second row. #controls (index only) becomes top-aligned; the
reader's .controls form is untouched.
</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>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>
<entry>
<title>bookmarks: web reader bookmarks with notes + tags (add/list/filter/jump/delete); v0.15.0</title>
<updated>2026-07-24T13:16:47Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T13:16:47Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=1e4939874a14d8abb13e82b2273bfc5f9d653295'/>
<id>urn:sha1:1e4939874a14d8abb13e82b2273bfc5f9d653295</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web: /settings page to edit config + books.toml, persisted and applied live; v0.14.0</title>
<updated>2026-07-24T13:01:03Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T13:01:03Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=2453b598def94649cc7ce9af7155bfaad40cce12'/>
<id>urn:sha1:2453b598def94649cc7ce9af7155bfaad40cce12</id>
<content type='text'>
</content>
</entry>
<entry>
<title>web reader: /reader book picker + chapter nav + version compare, reusing pane templates; v0.9.0</title>
<updated>2026-07-24T10:48:05Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T10:48:05Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=55a5c793d04b55892fcddfc753d8526bd5748f03'/>
<id>urn:sha1:55a5c793d04b55892fcddfc753d8526bd5748f03</id>
<content type='text'>
</content>
</entry>
</feed>
