Add offline-first task-master TUI with tickets, board lists, and undo.

Charm-based CLI with JSON persistence, status/list filters, external editor editing, command-history undo/redo, and glamour markdown without AutoStyle OSC hangs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Skruecken
2026-10-19 10:21:48 +02:00
co-authored by Cursor
parent 4a3d0d777b
commit 24c1e146ec
37 changed files with 3259 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
package ticket_test
import (
"testing"
"task/internal/ticket"
)
func TestBoardListMatches(t *testing.T) {
cases := []struct {
list ticket.BoardList
status ticket.Status
want bool
}{
{ticket.BoardAll, ticket.StatusTodo, true},
{ticket.BoardAll, ticket.StatusDone, true},
{ticket.BoardBacklog, ticket.StatusTodo, true},
{ticket.BoardBacklog, ticket.StatusInProgress, false},
{ticket.BoardInProgress, ticket.StatusInProgress, true},
{ticket.BoardDone, ticket.StatusDone, true},
{ticket.BoardDone, ticket.StatusTodo, false},
}
for _, tc := range cases {
if got := tc.list.Matches(tc.status); got != tc.want {
t.Errorf("%s.Matches(%s) = %v, want %v", tc.list, tc.status, got, tc.want)
}
}
}
func TestBoardListDefaultStatus(t *testing.T) {
if ticket.BoardBacklog.DefaultStatus() != ticket.StatusTodo {
t.Fatal("backlog default")
}
if ticket.BoardInProgress.DefaultStatus() != ticket.StatusInProgress {
t.Fatal("in progress default")
}
if ticket.BoardDone.DefaultStatus() != ticket.StatusDone {
t.Fatal("done default")
}
if ticket.BoardAll.DefaultStatus() != ticket.StatusTodo {
t.Fatal("all default")
}
}