Add ticket time tracking with reports and entry management.

Support start/stop timer, manual durations, grouped reports, and per-ticket edit/delete of time entries with undo.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Skruecken
2026-10-19 11:05:10 +02:00
co-authored by Cursor
parent 41feba11de
commit bfc1cbd4d9
23 changed files with 2149 additions and 94 deletions
+3 -3
View File
@@ -14,7 +14,7 @@ func TestHistoryPersistsAcrossOpen(t *testing.T) {
store := ticket.NewJSONStore(dir)
path := command.HistoryPath(dir)
h1, err := command.OpenHistory(path, store)
h1, err := command.OpenHistory(path, store, nil)
if err != nil {
t.Fatal(err)
}
@@ -30,7 +30,7 @@ func TestHistoryPersistsAcrossOpen(t *testing.T) {
t.Fatalf("history file missing: %v", err)
}
h2, err := command.OpenHistory(path, store)
h2, err := command.OpenHistory(path, store, nil)
if err != nil {
t.Fatal(err)
}
@@ -49,7 +49,7 @@ func TestHistoryPersistsAcrossOpen(t *testing.T) {
func TestHistoryCapsAtMax(t *testing.T) {
dir := t.TempDir()
store := ticket.NewJSONStore(dir)
h, err := command.OpenHistory(filepath.Join(dir, "history.json"), store)
h, err := command.OpenHistory(filepath.Join(dir, "history.json"), store, nil)
if err != nil {
t.Fatal(err)
}