office: say exactly what to do next; l opens lazygit and t opens the tool chooser everywhere; a remote run gets a terminal to ask in

This commit is contained in:
Sam
2026-11-13 07:21:23 +11:00
parent 4be72dae2e
commit cba45f82f8
12 changed files with 779 additions and 54 deletions

View File

@@ -183,27 +183,17 @@ func (m boardModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
return m, nil
}
if m.tools {
switch msg.String() {
case "esc", "q", "t":
key := msg.String()
if key == "esc" || key == "q" || key == "t" {
m.tools = false
return m, nil
case "up", "k":
m.toolAt = max(0, m.toolAt-1)
return m, nil
case "down", "j":
m.toolAt = min(len(tools)-1, m.toolAt+1)
return m, nil
case "g":
m.toolAt = 0
return m, nil
case "G":
m.toolAt = len(tools) - 1
return m, nil
case "enter":
t := tools[m.toolAt]
m.tools = false
if err := openTool(m.folder, t.name); err != nil {
m.err = err
}
if consumed, chosen := toolPickerKeys(key, &m.toolAt); consumed {
if chosen != "" {
m.tools = false
if err := openTool(m.folder, chosen); err != nil {
m.err = err
}
}
return m, nil
}
@@ -247,6 +237,12 @@ func (m boardModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case "t":
m.tools = true
return m, nil
case "l":
// lazygit in the project folder, the same key as on the other panes.
if err := openTool(m.folder, "lazygit"); err != nil {
m.err = err
}
return m, nil
case "/":
m.typing = true
return m, nil
@@ -337,7 +333,7 @@ func (m boardModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.needsTab--
}
return m, nil
case "]", "l":
case "]":
if m.focus == focusNeeds && m.needsTab < 1 {
m.needsTab++
}
@@ -406,15 +402,7 @@ func (m boardModel) View() string {
}, m.width, m.height)
}
if m.tools {
entries := make([][2]string, 0, len(tools))
for i, t := range tools {
mark := " "
if i == m.toolAt {
mark = "▸ "
}
entries = append(entries, [2]string{mark + t.name, t.about})
}
return helpOverlay("open a tool pane here", entries, m.width, m.height)
return toolMenu(m.toolAt, m.width, m.height)
}
if m.showHelp {
return helpOverlay("keys on this panel", [][2]string{
@@ -519,6 +507,7 @@ func (m boardModel) footerLine() string {
keyHint("u", "unblock"),
keyHint("c", "cancel"),
keyHint("t", "tools"),
keyHint("l", "lazygit"),
keyHint("/", "filter"),
keyHint("?", "keys"),
keyHint("tab", "panel"),