From 7b220084cf3951c8cde0582efdfcf628afc64336 Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 28 Jul 2026 12:50:31 +0200 Subject: 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). --- internal/tui/reader.go | 2 +- internal/tui/tui.go | 36 +++++++++++------------------------- internal/tui/tui_test.go | 6 ++++-- 3 files changed, 16 insertions(+), 28 deletions(-) (limited to 'internal/tui') 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) } -- cgit v1.3