From a3156a2f399ea03c645ee23b0099d9d722ce7e1e Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 26 Jan 2026 20:55:50 -1000 Subject: Add Google Tasks integration (#43) - New GoogleTasksClient for fetching and managing Google Tasks - Tasks appear in Timeline view with yellow indicator dot - Tap checkbox to complete/uncomplete tasks via Google API - Shares credentials file with Google Calendar (GOOGLE_CREDENTIALS_FILE) - Configure task list via GOOGLE_TASKS_LIST_ID env var (default: @default) - Supports comma-separated list IDs for multiple lists New files: - internal/api/google_tasks.go - Google Tasks API client Co-Authored-By: Claude Opus 4.5 --- internal/models/timeline.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'internal/models/timeline.go') diff --git a/internal/models/timeline.go b/internal/models/timeline.go index 3475696..0968d41 100644 --- a/internal/models/timeline.go +++ b/internal/models/timeline.go @@ -9,10 +9,11 @@ import ( type TimelineItemType string const ( - TimelineItemTypeTask TimelineItemType = "task" - TimelineItemTypeMeal TimelineItemType = "meal" - TimelineItemTypeCard TimelineItemType = "card" - TimelineItemTypeEvent TimelineItemType = "event" + TimelineItemTypeTask TimelineItemType = "task" + TimelineItemTypeMeal TimelineItemType = "meal" + TimelineItemTypeCard TimelineItemType = "card" + TimelineItemTypeEvent TimelineItemType = "event" + TimelineItemTypeGTask TimelineItemType = "gtask" // Google Tasks ) type DaySection string @@ -36,7 +37,10 @@ type TimelineItem struct { // UI enhancement fields IsCompleted bool `json:"is_completed"` DaySection DaySection `json:"day_section"` - Source string `json:"source"` // "todoist", "trello", "plantoeat", "calendar" + Source string `json:"source"` // "todoist", "trello", "plantoeat", "calendar", "gtasks" + + // Source-specific metadata + ListID string `json:"list_id,omitempty"` // For Google Tasks } // ComputeDaySection sets the DaySection based on the item's time -- cgit v1.2.3