R rebuilds every pane detached; r refreshes data; Author gains guidance and preview; Repair gains the rebuild log

This commit is contained in:
Sam
2026-11-10 14:34:14 +11:00
parent 351cb35e8e
commit 972d4c0184
15 changed files with 683 additions and 23 deletions

View File

@@ -113,7 +113,7 @@ func (m replyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if !m.inBox {
return m, tea.Batch(m.load(), tickEvery(5*time.Second))
}
return m, tickEvery(5*time.Second)
return m, tickEvery(5 * time.Second)
case tea.KeyMsg:
if m.inBox {
@@ -178,6 +178,12 @@ func (m replyModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
case "r":
return m, m.load()
case "R":
if err := startRebuild(m.folder); err != nil {
m.err = err
return m, nil
}
return m, tea.Quit
case "esc":
m.notice = ""
return m, nil
@@ -257,13 +263,14 @@ func (m replyModel) View() string {
title: fmt.Sprintf("reply · %s", statusNote),
width: m.width, height: composerHeight, focused: m.inBox,
}
boxLines := m.composerLines(m.width - 4, composer.bodyHeight())
boxLines := m.composerLines(m.width-4, composer.bodyHeight())
footer := hintLine([]string{
keyHint("enter or tab", "write a reply"),
keyHint("s", "choose a status to send"),
keyHint("↑↓ or j k", "read the thread"),
keyHint("r", "read again"),
keyHint("R", "rebuild every pane"),
keyHint("q", "leave"),
}, m.width)
if m.inBox {