@@ -470,6 +470,11 @@ func (m *Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
470470 if x .Refresh {
471471 m .rebuildComponentSizes ()
472472 cmds = append (cmds , m .refreshCmd ())
473+
474+ // If in detail view, also reload the current task to reflect changes (undo/redo)
475+ if m .mode == ModeDetail {
476+ cmds = append (cmds , m .fetchOpenTaskCmd (m .det .Task ().ID ))
477+ }
473478 }
474479 return m , tea .Batch (cmds ... )
475480
@@ -2399,7 +2404,7 @@ func (m *Model) createTaskCmd(t core.Task) tea.Cmd {
23992404 if err != nil {
24002405 return errMsg {Err : err }
24012406 }
2402- m .hist .Record (history .CreateOperation (history .OpCreate , "" , []string {created .ID }, nil , []core.Task {created }))
2407+ m .hist .Record (history .CreateOperation (history .OpCreate , "" , []string {created .ID }, nil , []core.Task {created . DeepCopy () }))
24032408 return taskCreatedMsg {Task : created }
24042409 }
24052410}
@@ -2419,7 +2424,7 @@ func (m *Model) updateTaskCmd(id string, p core.TaskPatch) tea.Cmd {
24192424 if p .Status != nil {
24202425 opType = history .OpToggleStatus
24212426 }
2422- m .hist .Record (history .CreateOperation (opType , "" , []string {id }, []core.Task {before }, []core.Task {updated }))
2427+ m .hist .Record (history .CreateOperation (opType , "" , []string {id }, []core.Task {before . DeepCopy () }, []core.Task {updated . DeepCopy () }))
24232428 return taskUpdatedMsg {Task : updated }
24242429 }
24252430}
@@ -2442,7 +2447,7 @@ func (m *Model) deleteTaskCmd(id string) tea.Cmd {
24422447 if err := m .svc .Delete (m .ctx , id ); err != nil {
24432448 return errMsg {Err : err }
24442449 }
2445- m .hist .Record (history .CreateOperation (history .OpDelete , "" , []string {id }, []core.Task {before }, nil ))
2450+ m .hist .Record (history .CreateOperation (history .OpDelete , "" , []string {id }, []core.Task {before . DeepCopy () }, nil ))
24462451 return taskDeletedMsg {ID : id }
24472452 }
24482453}
@@ -2451,13 +2456,15 @@ func (m *Model) deleteAllTasksCmd() tea.Cmd {
24512456 return func () tea.Msg {
24522457 before , _ := m .svc .ListAll (m .ctx )
24532458 var ids []string
2459+ var beforeCopy []core.Task
24542460 for _ , t := range before {
24552461 ids = append (ids , t .ID )
2462+ beforeCopy = append (beforeCopy , t .DeepCopy ())
24562463 }
24572464 if err := m .svc .DeleteAll (m .ctx ); err != nil {
24582465 return errMsg {Err : err }
24592466 }
2460- m .hist .Record (history .CreateOperation (history .OpBulkDelete , "Delete All" , ids , before , nil ))
2467+ m .hist .Record (history .CreateOperation (history .OpBulkDelete , "Delete All" , ids , beforeCopy , nil ))
24612468 return taskUpdatedMsg {} // Trigger reload
24622469 }
24632470}
@@ -2522,6 +2529,7 @@ func (m *Model) applyOperation(op *history.Operation, undo bool) error {
25222529 tasks = op .Before
25232530 }
25242531 for _ , t := range tasks {
2532+ t .UpdatedAt = time .Now ()
25252533 if err := m .svc .UpsertTask (m .ctx , t ); err != nil {
25262534 return err
25272535 }
0 commit comments