| Age | Commit message (Collapse) | Author |
|
- Update Google API interfaces with setters for list/calendar IDs
- Update fetchCalendarEvents and fetchGoogleTasks to use enabled IDs from source_configs
- Update timeline logic tests to reflect interface changes and seed config data
- Ensure dashboard respects user-selected lists from settings
|
|
- Add feature_toggles table (migration 012)
- Add source_config table for future source selection (migration 013)
- Create settings page at /settings with:
- Feature toggle management (enable/disable/create/delete)
- Data source configuration (sync and toggle boards/calendars)
- Add store methods for feature toggles and source config
- Add GetCalendarList and GetTaskLists to Google API clients
- Document feature toggle workflow in DESIGN.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add TIMEZONE config option (defaults to Pacific/Honolulu)
- Store display timezone in GoogleCalendarClient
- Convert all event times to configured display timezone
- Parse events in their native timezone then convert for display
This fixes the issue where events were showing 10 hours off
due to server running in UTC while user is in Hawaii.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Use event's TimeZone field when parsing DateTime
- Handle cases where DateTime has no timezone offset
- Parse in event timezone then convert to local for display
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Use option.WithCredentialsFile instead of non-existent
option.WithAuthCredentialsFile function.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Fix errcheck: handle all error return values in production code
- Fix errcheck: handle all error return values in test files
- Fix staticcheck: replace deprecated WithCredentialsFile with WithAuthCredentialsFile
- Remove unused code: authHeaders, planToEatPlannerItem, planToEatResponse
- Use defer func() { _ = x.Close() }() pattern for ignored close errors
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Extract parseEventTime() and deduplicateEvents() in google_calendar.go
- Add scanTask() and scanTasks() SQL helpers in sqlite.go
- Move completed-atom HTML to partial template
- Add loadTestTemplates() test helper for template-dependent tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
#40, #41: Fix calendar event timezone handling
- Parse all-day events in local timezone using ParseInLocation
- Convert timed events to local time after parsing RFC3339
- Update ComputeDaySection to normalize both now and item time to local
before comparison, ensuring consistent today/tomorrow classification
#42: Mobile conditions page now uses 2 columns
- Changed 600px breakpoint from 1 column to 2 columns
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Events copied across calendars may have different timezone representations
in their RFC3339 strings. Using Unix timestamps ensures the same moment
in time produces the same dedup key.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Bug fixes:
- #24: Deduplicate calendar events across multiple calendars using
summary + start time as key
- #25: Change event icon from calendar to clock to avoid confusion
with date display
- #26: Add task uncomplete functionality via ReopenTask API for
Todoist and closed=false for Trello
- #27: Restructure planning view with sections for Scheduled (timed
events/tasks), Today (unscheduled), Quick Add, and Upcoming (3 days)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
GOOGLE_CALENDAR_ID now accepts comma-separated calendar IDs:
GOOGLE_CALENDAR_ID=cal1@group.calendar.google.com,cal2@gmail.com
Events from all calendars are merged and sorted by start time.
If one calendar fails to fetch, others still load.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add GoogleCalendarClient for fetching upcoming events
- Add GoogleCalendarAPI interface and CalendarEvent model
- Add config for GOOGLE_CREDENTIALS_FILE and GOOGLE_CALENDAR_ID
- Display events in Planning tab with date/time formatting
- Update handlers and tests to support optional calendar client
Config env vars:
- GOOGLE_CREDENTIALS_FILE: Path to service account JSON
- GOOGLE_CALENDAR_ID: Calendar ID (defaults to "primary")
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|