From cfd583e9166330f053fa7cc28258b4467c48459c Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Thu, 12 Feb 2026 20:57:12 -0800 Subject: Fix nil-pointer panics in TUI and add unit tests - Initialized list models in NewModel to prevent panic on WindowSizeMsg - Added nil check for selectedFeed in itemsMsg handler - Created tui/tui_test.go with unit tests for state transitions and resizing - Verified all tests pass --- tui/tui.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'tui/tui.go') diff --git a/tui/tui.go b/tui/tui.go index 54e654b..7597292 100644 --- a/tui/tui.go +++ b/tui/tui.go @@ -54,9 +54,13 @@ type Model struct { } func NewModel() Model { - return Model{ + m := Model{ state: viewFeeds, } + // Initialize lists with empty items to avoid nil dereference in SetSize + m.feedList = list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0) + m.itemList = list.New([]list.Item{}, list.NewDefaultDelegate(), 0, 0) + return m } func (m Model) Init() tea.Cmd { @@ -113,7 +117,11 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { items[i] = itemString(it.Title) } m.itemList = list.New(items, list.NewDefaultDelegate(), m.width, m.height-4) - m.itemList.Title = m.selectedFeed.Title + if m.selectedFeed != nil { + m.itemList.Title = m.selectedFeed.Title + } else { + m.itemList.Title = "Items" + } m.state = viewItems case errMsg: -- cgit v1.2.3