aboutsummaryrefslogtreecommitdiff
path: root/internal/tui
diff options
context:
space:
mode:
authorLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 12:50:31 +0200
committerLukasz Kasprzak <lukas@labunix.xyz>2026-07-28 12:50:31 +0200
commit7b220084cf3951c8cde0582efdfcf628afc64336 (patch)
treee74bae03c61b62479ef4f68b046e3345618933c8 /internal/tui
parentfeede51697be870ae183a95b513ef64f031dbd0f (diff)
downloadlectio-7b220084cf3951c8cde0582efdfcf628afc64336.tar.gz
lectio-7b220084cf3951c8cde0582efdfcf628afc64336.zip
refactor: remove the niedziela/missalemeum scrapers, bt, traditional_lang
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).
Diffstat (limited to 'internal/tui')
-rw-r--r--internal/tui/reader.go2
-rw-r--r--internal/tui/tui.go36
-rw-r--r--internal/tui/tui_test.go6
3 files changed, 16 insertions, 28 deletions
diff --git a/internal/tui/reader.go b/internal/tui/reader.go
index 7f23f66..dc9141a 100644
--- a/internal/tui/reader.go
+++ b/internal/tui/reader.go
@@ -138,7 +138,7 @@ func (m ReaderModel) bookIndex(canonical string) int {
func corpusVersions(cfg config.Config) []string {
var out []string
for _, v := range cfg.Versions {
- if config.ValidVersion(v) && v != "bt" {
+ if config.ValidVersion(v) {
out = append(out, v)
}
}
diff --git a/internal/tui/tui.go b/internal/tui/tui.go
index 96d82c1..374537f 100644
--- a/internal/tui/tui.go
+++ b/internal/tui/tui.go
@@ -134,20 +134,14 @@ func shiftDate(date string, days int) string {
return t.AddDate(0, 0, days).Format("2006-01-02")
}
-// fetchCmd issues the readings.Load fetch for the model's current date as a
-// tea.Cmd, resolving to readingsMsg or errMsg. All follows cfg.All (config's
-// gospel-only vs every-part choice); Offline follows cfg.Offline; refresh
-// bypasses the cache (the "r" key), matching the CLI's --refresh.
-func (m Model) fetchCmd(refresh bool) tea.Cmd {
+// fetchCmd resolves the readings.Load for the model's current date as a
+// tea.Cmd, yielding readingsMsg or errMsg. All follows cfg.All (config's
+// gospel-only vs every-part choice); readings are always computed offline.
+func (m Model) fetchCmd() tea.Cmd {
cfg := m.cfg
date := m.date
return func() tea.Msg {
- secs, info, err := readings.Load(cfg, readings.Options{
- Date: date,
- Refresh: refresh,
- Offline: cfg.Offline,
- All: cfg.All,
- })
+ secs, info, err := readings.Load(cfg, readings.Options{Date: date, All: cfg.All})
if err != nil {
return errMsg{err}
}
@@ -157,7 +151,7 @@ func (m Model) fetchCmd(refresh bool) tea.Cmd {
// Init issues the first load.
func (m Model) Init() tea.Cmd {
- return m.fetchCmd(false)
+ return m.fetchCmd()
}
// Update handles key input and fetch results.
@@ -196,16 +190,12 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.date = shiftDate(m.date, -1)
m.loading = true
m.err = nil
- return m, m.fetchCmd(false)
+ return m, m.fetchCmd()
case "right":
m.date = shiftDate(m.date, +1)
m.loading = true
m.err = nil
- return m, m.fetchCmd(false)
- case "r":
- m.loading = true
- m.err = nil
- return m, m.fetchCmd(true)
+ return m, m.fetchCmd()
case "d":
m.jumping = true
m.jumpBuf = ""
@@ -253,7 +243,7 @@ func (m Model) updateJump(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
m.date = t.Format("2006-01-02")
m.loading = true
m.err = nil
- return m, m.fetchCmd(false)
+ return m, m.fetchCmd()
}
return m, nil
case tea.KeyBackspace:
@@ -423,12 +413,8 @@ func (m Model) bodyLines(w int) []string {
_, blocks := render.GatherVersion(ver, sec, m.cfg.Lectionary, m.cfg.UILanguage)
numW := maxNumWidth(blocks)
- // The refrain-italic only applies to the bt responsorial-psalm block
- // (its first, deduped paragraph); bible versions have no refrain block.
- isPsalm := sec.PartID == "psalm" && ver == "bt"
- for bi, b := range blocks {
- refrain := isPsalm && bi == 0
- lines = append(lines, styleBlock(b, refrain, w, numW)...)
+ for _, b := range blocks {
+ lines = append(lines, styleBlock(b, false, w, numW)...)
lines = append(lines, "")
}
}
diff --git a/internal/tui/tui_test.go b/internal/tui/tui_test.go
index d4aa855..68e09b5 100644
--- a/internal/tui/tui_test.go
+++ b/internal/tui/tui_test.go
@@ -153,12 +153,14 @@ func TestDayInfoLineOmittedWhenEmpty(t *testing.T) {
// TestFooterKeysLocalised checks the footer keybar text follows
// cfg.UILanguage.
func TestFooterKeysLocalised(t *testing.T) {
- en := Model{cfg: config.Config{UILanguage: "en"}, date: "2026-07-22"}
+ // Give the model a real terminal width so the one-line keybar is not wrapped
+ // across lines (the 80-col View() fallback would split "q quit").
+ en := Model{cfg: config.Config{UILanguage: "en"}, date: "2026-07-22", width: 120}
if out := en.View(); !strings.Contains(out, "q quit") {
t.Errorf("en View() footer missing %q: %q", "q quit", out)
}
- pl := Model{cfg: config.Config{UILanguage: "pl"}, date: "2026-07-22"}
+ pl := Model{cfg: config.Config{UILanguage: "pl"}, date: "2026-07-22", width: 120}
if out := pl.View(); !strings.Contains(out, "q wyjście") {
t.Errorf("pl View() footer missing %q: %q", "q wyjście", out)
}