@@ -37,6 +37,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
3737 case scanCompleteMsg :
3838 m .repos = msg .repos
3939 m .state = StateReady
40+ m .resetPage ()
4041 m .updateTable ()
4142
4243 // Show helpful message if no repos found
@@ -57,6 +58,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
5758 case workspaceScanCompleteMsg :
5859 m .repos = msg .repos
5960 m .state = StateReady
61+ m .resetPage ()
6062 m .updateTable ()
6163
6264 // Show helpful message about switched workspace
@@ -186,6 +188,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
186188 // Cycle through filter modes
187189 if m .state == StateReady {
188190 m .filterMode = (m .filterMode + 1 ) % 3
191+ m .resetPage ()
189192 m .updateTable ()
190193 m .statusMsg = "Filter: " + m .GetFilterModeName ()
191194 return m , nil
@@ -194,6 +197,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
194197 case "s" :
195198 if m .state == StateReady {
196199 m .sortMode = (m .sortMode + 1 ) % 4
200+ m .resetPage ()
197201 m .updateTable ()
198202 m .statusMsg = "Sorted by: " + m .GetSortModeName ()
199203 return m , nil
@@ -202,6 +206,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
202206 case "1" :
203207 if m .state == StateReady {
204208 m .sortMode = SortByDirty
209+ m .resetPage ()
205210 m .updateTable ()
206211 m .statusMsg = "Sorted by: Dirty First"
207212 return m , nil
@@ -210,6 +215,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
210215 case "2" :
211216 if m .state == StateReady {
212217 m .sortMode = SortByName
218+ m .resetPage ()
213219 m .updateTable ()
214220 m .statusMsg = "Sorted by: Name"
215221 return m , nil
@@ -218,6 +224,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
218224 case "3" :
219225 if m .state == StateReady {
220226 m .sortMode = SortByBranch
227+ m .resetPage ()
221228 m .updateTable ()
222229 m .statusMsg = "Sorted by: Branch"
223230 return m , nil
@@ -226,6 +233,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
226233 case "4" :
227234 if m .state == StateReady {
228235 m .sortMode = SortByLastCommit
236+ m .resetPage ()
229237 m .updateTable ()
230238 m .statusMsg = "Sorted by: Recent"
231239 return m , nil
@@ -237,6 +245,7 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
237245 m .searchQuery = ""
238246 m .textInput .SetValue ("" ) // Also reset the text input
239247 m .filterMode = FilterAll
248+ m .resetPage ()
240249 m .resizeTable ()
241250 m .updateTable ()
242251 m .statusMsg = "Filters cleared"
@@ -316,6 +325,24 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
316325 m .workspaceError = ""
317326 return m , textinput .Blink
318327 }
328+
329+ case "[" :
330+ // Previous page
331+ if m .state == StateReady && m .canGoPrev () {
332+ m .currentPage --
333+ m .updateTable ()
334+ m .statusMsg = fmt .Sprintf ("Page %d of %d" , m .currentPage + 1 , m .getTotalPages ())
335+ return m , nil
336+ }
337+
338+ case "]" :
339+ // Next page
340+ if m .state == StateReady && m .canGoNext () {
341+ m .currentPage ++
342+ m .updateTable ()
343+ m .statusMsg = fmt .Sprintf ("Page %d of %d" , m .currentPage + 1 , m .getTotalPages ())
344+ return m , nil
345+ }
319346 }
320347 }
321348
@@ -347,6 +374,7 @@ func (m Model) handleSearchMode(msg tea.KeyMsg) (tea.Model, tea.Cmd) {
347374 m .state = StateReady
348375 m .resizeTable ()
349376 m .textInput .Blur ()
377+ m .resetPage ()
350378 m .updateTable ()
351379 if m .searchQuery != "" {
352380 m .statusMsg = "Searching: " + m .searchQuery
0 commit comments