summaryrefslogtreecommitdiff
path: root/internal/ui/ultra.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-22 09:07:07 +0300
committerPaul Buetow <paul@buetow.org>2026-06-22 09:07:07 +0300
commit02f5f1419c4cb5fccc47a0ce4dbf3957e73b0e79 (patch)
tree5ad976209e913bfcf8a022ea1d4c0d3cb0d45c60 /internal/ui/ultra.go
parente2795b421a92ec16a64b1780dd71cb1a68b92680 (diff)
Add Taskwarrior shell promptv0.18.0
Add an in-app Taskwarrior command prompt for normal and ultra modes, including selected-task prefill, async completions, captured output, and non-interactive recurrence handling. Also preserve recurring-task delete/undo support in the staged changes.
Diffstat (limited to 'internal/ui/ultra.go')
-rw-r--r--internal/ui/ultra.go21
1 files changed, 20 insertions, 1 deletions
diff --git a/internal/ui/ultra.go b/internal/ui/ultra.go
index d246726..0d5f57b 100644
--- a/internal/ui/ultra.go
+++ b/internal/ui/ultra.go
@@ -94,7 +94,8 @@ func (m Model) ultraHelpSections() []helpSection {
{key: "o", desc: "open URL from description"},
{key: "s", desc: "start/stop task"},
{key: "d", desc: "mark task done"},
- {key: "U", desc: "undo last done"},
+ {key: "D", desc: "delete task/recurring series"},
+ {key: "U", desc: "undo last done/delete"},
{key: "+", desc: "add new task"},
},
},
@@ -118,6 +119,8 @@ func (m Model) ultraHelpSections() []helpSection {
items: []helpItem{
{key: "/", desc: "search ultra cards"},
{key: "n, N", desc: "next/previous match"},
+ {key: ":", desc: "run task command prompt"},
+ {key: ";", desc: "run task command prompt for selected task"},
},
},
{
@@ -397,6 +400,8 @@ func (m *Model) ultraInputOverlay() string {
return m.addInput.View()
case m.searching:
return m.searchInput.View()
+ case m.shellActive:
+ return m.shellInput.View()
default:
return ""
}
@@ -1055,6 +1060,8 @@ func (m *Model) handleUltraMode(msg tea.KeyPressMsg) (tea.Model, tea.Cmd) {
return m.handleUltraToggleStart()
case "d":
return m.handleUltraMarkDone()
+ case "D":
+ return m.handleUltraDeleteTask()
case "o":
return m.handleOpenURL()
case "p":
@@ -1077,6 +1084,10 @@ func (m *Model) handleUltraMode(msg tea.KeyPressMsg) (tea.Model, tea.Cmd) {
return m.handleUltraSetRecurrence()
case "f":
return m.handleFilter()
+ case ":":
+ return m.handleShellPrompt()
+ case ";":
+ return m.handleShellPromptForSelectedTask()
case "+":
m.ultraClearFocusedID()
return m.handleAddTask()
@@ -1204,6 +1215,14 @@ func (m *Model) handleUltraMarkDone() (tea.Model, tea.Cmd) {
return m, m.startBlink(id, true)
}
+func (m *Model) handleUltraDeleteTask() (tea.Model, tea.Cmd) {
+ if _, ok := m.ultraPrepareSelectedTask(); !ok {
+ return m, nil
+ }
+
+ return m.handleDeleteTask()
+}
+
func (m *Model) handleUltraSetPriority() (tea.Model, tea.Cmd) {
if _, ok := m.ultraPrepareSelectedTask(); !ok {
return m, nil