summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-06-29 09:08:02 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-06-29 09:08:02 +0000
commit509ae15621a3981246e8b2b54804959294938d42 (patch)
tree9ebd8553935d07dd6c57066c0d925d17c2290759 /internal
parent3fbfdd1f9441299eb146bf215449f238977deb66 (diff)
feat: make Todoist optional, guard nil client calls
TODOIST_API_KEY is no longer required — native task management works without it. Guards nil todoistClient in handleAtomToggle. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal')
-rw-r--r--internal/config/config.go6
-rw-r--r--internal/handlers/handlers.go4
2 files changed, 5 insertions, 5 deletions
diff --git a/internal/config/config.go b/internal/config/config.go
index 67658b4..6d2e2ef 100644
--- a/internal/config/config.go
+++ b/internal/config/config.go
@@ -109,11 +109,7 @@ func Load() (*Config, error) {
// Validate checks that required configuration is present
func (c *Config) Validate() error {
- // Require both Todoist and Trello (primary task management systems)
- if c.TodoistAPIKey == "" {
- return fmt.Errorf("TODOIST_API_KEY is required")
- }
-
+ // Todoist is optional — native task management replaces it when key is absent
if c.TrelloAPIKey == "" {
return fmt.Errorf("TRELLO_API_KEY is required")
}
diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go
index 877293a..5ecaf7c 100644
--- a/internal/handlers/handlers.go
+++ b/internal/handlers/handlers.go
@@ -612,6 +612,10 @@ func (h *Handler) handleAtomToggle(w http.ResponseWriter, r *http.Request, compl
err = h.store.UncompleteNativeTask(id)
}
case "todoist":
+ if h.todoistClient == nil {
+ JSONError(w, http.StatusServiceUnavailable, "Todoist not configured", nil)
+ return
+ }
if complete {
err = h.todoistClient.CompleteTask(ctx, id)
} else {