lune

created pr with 124.1 on 2026-04-22T02:46:44Z · by 613b58b7
changed status to closed on 2026-06-21T16:45:31Z · by 66ddd677
Closing as superceded by 126
cmds
checkout latest patchset:
ssh pr.pico.sh print 124 | git am -3
checkout any patchset in a patch request:
ssh pr.pico.sh print 124.[rev] | git am -3
add changes to patch request:
git format-patch main --stdout | ssh pr.pico.sh pr add 124
set PR to open (enables RSS notifications):
ssh pr.pico.sh pr open 124
set PR to draft (stops RSS notifications):
ssh pr.pico.sh pr draft 124

Patchset 124.1 on 2026-04-22T02:46:44Z · commit e297348

listing real name of tasks
juan 2026-04-21T03:21:16Z
construction of db for management of decrypted names of tasks
juan 2026-04-21T05:43:09Z
fix UTF8 chracteres
juan 2026-04-21T21:13:24Z
filter by status and coloring types of status
juan 2026-04-21T21:18:53Z
update help
juan 2026-04-21T21:21:36Z
list areas names
juan 2026-04-21T21:44:53Z
adjust table tasks to truncate name and list area
juan 2026-04-21T21:56:40Z
partial implementation of listing tasks by areas
juan 2026-04-21T22:05:20Z
final implementation of listing tasks by areas with UTF-8 chracteres
juan 2026-04-21T22:10:20Z
sort on task list to show first do now
juan 2026-04-21T22:33:29Z
update with 8 char of id and db.go
juan 2026-04-21T23:27:54Z
partial implementation of TUI menu on task update
juan 2026-04-21T23:35:35Z
task name correcion on TUI menu of Update task
juan 2026-04-21T23:38:19Z
TUI menu for update task with others flags
juan 2026-04-21T23:43:02Z
helper for TUI update task
juan 2026-04-21T23:49:56Z
search by first 8 char of note id for editing it
juan 2026-04-22T00:00:17Z
partial implementation on note TUI menu for update
juan 2026-04-22T00:05:46Z
TUI menu notebook just with tags
juan 2026-04-22T00:20:55Z
Note update now let you insert only the first 8 char of notebook id in update
juan 2026-04-22T00:25:53Z
implementation of (lune note notebook-list) for listing all notebooks and its ID
juan 2026-04-22T01:10:51Z
partial implementation of lune note show-content ID
juan 2026-04-22T02:01:11Z
convert \n in new line and \ in space for lune note show-content ID
juan 2026-04-22T02:18:42Z
TUI menu for update task with others flags
juan 2026-04-21T23:43:02Z
Semantic diff summary
0 added, 2 modified, 0 signature changed, 0 removed across 1 analyzed file
+75 -13 cmd/task/interactive.go #
......@@ -3,8 +3,10 @@
33 // SPDX-License-Identifier: AGPL-3.0-or-later
44
55 package task
6-
76 import (
7+ "fmt"
8+ "strconv"
9+
810 "git.secluded.site/go-lunatask"
911 "git.secluded.site/lune/internal/db"
1012 "github.com/charmbracelet/huh"
......@@ -12,15 +14,14 @@ import (
1214 )
1315
1416 func runUpdateInteractive(cmd *cobra.Command, task *lunatask.Task, builder *lunatask.TaskUpdateBuilder) error {
17+ // Existing fields
1518 name := ""
16- // Try enriching from local DB first
1719 dbName, _ := db.EnrichTask(task.ID)
1820 if dbName != "" {
1921 name = dbName
2022 } else if task.Name != nil {
2123 name = *task.Name
2224 }
23-
2425 if name == "" {
2526 name = "Unnamed Task"
2627 }
......@@ -29,12 +30,35 @@ func runUpdateInteractive(cmd *cobra.Command, task *lunatask.Task, builder *luna
2930 if task.Status != nil {
3031 newStatus = string(*task.Status)
3132 }
32-
33+
34+ // New fields
35+ priority := "normal"
36+ if task.Priority != nil {
37+ priority = string(*task.Priority)
38+ }
39+
40+ motivation := ""
41+ if task.Motivation != nil {
42+ motivation = string(*task.Motivation)
43+ }
44+
45+ note := ""
46+ if task.Note != nil {
47+ note = *task.Note
48+ }
49+
50+ estimate := 0
51+ if task.Estimate != nil {
52+ estimate = *task.Estimate
53+ }
54+ estStr := fmt.Sprintf("%d", estimate)
55+
56+ important := task.Eisenhower != nil && task.Eisenhower.IsImportant()
57+ urgent := task.Eisenhower != nil && task.Eisenhower.IsUrgent()
58+
3359 form := huh.NewForm(
3460 huh.NewGroup(
35- huh.NewInput().
36- Title("Task Name").
37- Value(&name),
61+ huh.NewInput().Title("Task Name").Value(&name),
3862 huh.NewSelect[string]().
3963 Title("Status").
4064 Options(
......@@ -43,21 +67,59 @@ func runUpdateInteractive(cmd *cobra.Command, task *lunatask.Task, builder *luna
4367 huh.NewOption("In Progress", "in-progress"),
4468 huh.NewOption("Waiting", "waiting"),
4569 huh.NewOption("Completed", "completed"),
46- ).
47- Value(&newStatus),
70+ ).Value(&newStatus),
71+ ),
72+ huh.NewGroup(
73+ huh.NewSelect[string]().
74+ Title("Priority").
75+ Options(
76+ huh.NewOption("Lowest", "lowest"),
77+ huh.NewOption("Low", "low"),
78+ huh.NewOption("Normal", "normal"),
79+ huh.NewOption("High", "high"),
80+ huh.NewOption("Highest", "highest"),
81+ ).Value(&priority),
82+ huh.NewSelect[string]().
83+ Title("Motivation").
84+ Options(
85+ huh.NewOption("Must", "must"),
86+ huh.NewOption("Should", "should"),
87+ huh.NewOption("Want", "want"),
88+ ).Value(&motivation),
89+ huh.NewInput().Title("Note").Value(&note),
90+ huh.NewInput().Title("Estimate (minutes)").Value(&estStr),
91+ ),
92+ huh.NewGroup(
93+ huh.NewConfirm().Title("Important?").Value(&important),
94+ huh.NewConfirm().Title("Urgent?").Value(&urgent),
4895 ),
4996 )
50-
97+
5198 if err := form.Run(); err != nil {
5299 return err
53100 }
54101
102+ // Apply updates
55103 builder.Name(name)
56-
57104 if newStatus != "" {
58- status := lunatask.TaskStatus(newStatus)
59- builder.WithStatus(status)
105+ builder.WithStatus(lunatask.TaskStatus(newStatus))
106+ }
107+ if priority != "" {
108+ p, _ := lunatask.ParsePriority(priority)
109+ builder.Priority(p)
110+ }
111+ if motivation != "" {
112+ m, _ := lunatask.ParseMotivation(motivation)
113+ builder.WithMotivation(m)
60114 }
115+ builder.WithNote(note)
116+
117+ if est, err := strconv.Atoi(estStr); err == nil {
118+ builder.WithEstimate(est)
119+ }
120+
121+ if important { builder.Important() } else { builder.NotImportant() }
122+ if urgent { builder.Urgent() } else { builder.NotUrgent() }
61123
62124 return nil
63125 }
Back to top