From ec8a9c0ea46dec7d26caa763e3adefcaf3fc7552 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Sun, 25 Jan 2026 11:56:29 -1000 Subject: Fix bugs and add bug management scripts Bug fixes: - #36: Hide recurring tasks until due day (add IsRecurring to Task/Atom) - Trello cards missing: change filter=visible to filter=open - Build fix: add missing fmt import in atom.go Infrastructure: - Add scripts/bugs and scripts/resolve-bug for DB bug tracking - Remove issues/ directory (bugs now tracked in DB) - Add timeline_logic_test.go Co-Authored-By: Claude Opus 4.5 --- internal/models/atom.go | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'internal/models/atom.go') diff --git a/internal/models/atom.go b/internal/models/atom.go index 10d14d1..3e08896 100644 --- a/internal/models/atom.go +++ b/internal/models/atom.go @@ -1,6 +1,9 @@ package models -import "time" +import ( + "fmt" + "time" +) type AtomSource string @@ -8,6 +11,7 @@ const ( SourceTrello AtomSource = "trello" SourceTodoist AtomSource = "todoist" SourceMeal AtomSource = "plantoeat" + SourceBug AtomSource = "bug" ) type AtomType string @@ -16,6 +20,7 @@ const ( TypeTask AtomType = "task" TypeNote AtomType = "note" TypeMeal AtomType = "meal" + TypeBug AtomType = "bug" ) // Atom represents a unified unit of work or information @@ -34,11 +39,12 @@ type Atom struct { Priority int // Normalized: 1 (Low) to 4 (Urgent) // UI Helpers (to be populated by mappers) - SourceIcon string // e.g., "trello-icon.svg" or emoji - ColorClass string // e.g., "border-blue-500" - IsOverdue bool // True if due date is before today - IsFuture bool // True if due date is after today - HasSetTime bool // True if due time is not midnight (has specific time) + SourceIcon string // e.g., "trello-icon.svg" or emoji + ColorClass string // e.g., "border-blue-500" + IsOverdue bool // True if due date is before today + IsFuture bool // True if due date is after today + HasSetTime bool // True if due time is not midnight (has specific time) + IsRecurring bool // True if this is a recurring task // Original Data (for write operations) Raw interface{} @@ -89,6 +95,7 @@ func TaskToAtom(t Task) Atom { Priority: priority, SourceIcon: "🔴", // Red circle for Todoist ColorClass: "border-red-500", + IsRecurring: t.IsRecurring, Raw: t, } } @@ -135,3 +142,24 @@ func MealToAtom(m Meal) Atom { Raw: m, } } + +// BugToAtom converts a Bug to an Atom +func BugToAtom(b Bug) Atom { + // Bugs get high priority (3) to encourage fixing + priority := 3 + + return Atom{ + ID: fmt.Sprintf("bug-%d", b.ID), + Title: b.Description, + Description: "Bug Report", + Source: SourceBug, + Type: TypeBug, + URL: "", + DueDate: nil, // Bugs don't have due dates + CreatedAt: b.CreatedAt, + Priority: priority, + SourceIcon: "🐛", + ColorClass: "border-red-700", + Raw: b, + } +} -- cgit v1.2.3