<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lectio.git/internal/tui, branch v0.46.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.46.1</id>
<link rel='self' href='https://git.labunix.xyz/lectio.git/atom?h=v0.46.1'/>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/'/>
<updated>2026-07-29T11:55:27Z</updated>
<entry>
<title>tui(reader): flag bookmarked verses with a red * in the reading pane</title>
<updated>2026-07-29T11:55:27Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T11:55:27Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=18578434f41d4fe34438c2f171388109a288c18c'/>
<id>urn:sha1:18578434f41d4fe34438c2f171388109a288c18c</id>
<content type='text'>
A verse that has a bookmark now shows a red "*" at the end of its last line, so
saved verses are visible while reading. The set of bookmarked verses for the
current book+chapter is refreshed on chapter load, on save, and on returning
from the bookmarks list (one store read each). Test covers the flag + render.
</content>
</entry>
<entry>
<title>tui(reader): filter bookmarks by tag, and show tags in the list</title>
<updated>2026-07-29T11:45:19Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-29T11:45:19Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=6964ee56de01f9769a39ba480dc787339b642f7a'/>
<id>urn:sha1:6964ee56de01f9769a39ba480dc787339b642f7a</id>
<content type='text'>
Bookmarks stored tags but the list neither showed them nor let you use them.
Now each row shows "Ref — note  #tag1 #tag2", and `/` opens a live tag filter
(case-insensitive substring over a bookmark's tags): type to narrow, Enter keeps
the filter while j/k navigate the filtered list, Esc clears it. Navigation,
open and delete all act on the visible (filtered) list. Reuses the store's
existing tag data; help keybar (en/pl) updated; test covers filter/keys.
</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>lectio-ui reader: go-to-chapter jump (c)</title>
<updated>2026-07-24T20:13:06Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T20:13:06Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=1b4134d883544beba3fc51704322cef2a875a7d2'/>
<id>urn:sha1:1b4134d883544beba3fc51704322cef2a875a7d2</id>
<content type='text'>
Inside a book, 'c' opens a centered prompt showing the book's chapter
range (e.g. "1-21: ") and accepts a chapter number to jump straight there,
instead of scrolling (handy for Psalm 119 etc). Digits only, backspace
edits, Enter clamps to the valid range and opens that chapter at its top,
Esc cancels. New modeChapterJump + updateChapterJump/jumpToChapter/
viewChapterJump; i18n ReaderJumpChapter/ReaderJumpChapterKeys (en/pl) and
'c' added to the reading keybar. Only offered when the book has &gt;1 chapter.
</content>
</entry>
<entry>
<title>bookmarks: store as universal TSV (header row) with one-time JSON migration; tui note box wraps long notes with hanging indent + hard-break; v0.21.0</title>
<updated>2026-07-24T14:39:35Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:39:35Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=102bf0c522c94d36f8363c38711621fe5ad18555'/>
<id>urn:sha1:102bf0c522c94d36f8363c38711621fe5ad18555</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tui reader: bookmark note+tags as a prominent centered modal (tab switches fields), delete confirmation as a modal; v0.20.0</title>
<updated>2026-07-24T14:30:09Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:30:09Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=3eb99c1dd63565fbc1f5bf5af7fc8e835aad182e'/>
<id>urn:sha1:3eb99c1dd63565fbc1f5bf5af7fc8e835aad182e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tui reader: m opens a verse cursor (↑/↓ pick the verse) then a note box (write or skip); d in bookmarks confirms before deleting; v0.19.0</title>
<updated>2026-07-24T14:18:27Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:18:27Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=19e02a3290dc78de088f9a72fb9c16dbf6517ffc'/>
<id>urn:sha1:19e02a3290dc78de088f9a72fb9c16dbf6517ffc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tui reader: bookmarks (m=mark w/ note, b=list/jump/delete, per-verse via top-visible verse) + remember last place; v0.18.0</title>
<updated>2026-07-24T14:07:14Z</updated>
<author>
<name>Lukasz Kasprzak</name>
<email>lukas@labunix.xyz</email>
</author>
<published>2026-07-24T14:07:14Z</published>
<link rel='alternate' type='text/html' href='https://git.labunix.xyz/lectio.git/commit/?id=0321ea57f5c561215a8dea111ed7f3ea7b05594e'/>
<id>urn:sha1:0321ea57f5c561215a8dea111ed7f3ea7b05594e</id>
<content type='text'>
</content>
</entry>
</feed>
