| Age | Commit message (Collapse) | Author |
|
- Standalone full-screen page at /conditions
- Tiled grid layout with autoplaying video feeds
- USGS Kilauea webcams (V1cam, V2cam) via YouTube embeds
- Windy weather maps (local Hawaii + national US)
- Opens in new tab from dashboard nav
Closes #29
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Bug fixes:
- #25: Replace 📅 with 🗓️ to avoid misleading date display
- #30: Standardize background opacity (shopping items now use bg-white/5)
New feature:
- #11: Add Timeline view showing chronological events/tasks/meals
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- New Shopping tab aggregates items from Trello Shopping board and PlanToEat
- Items grouped by store, then by category (for PlanToEat)
- Trello list names treated as store names
- Replace PlanToEat meals API with web scraping (uses session cookie)
- Add error logging for PlanToEat fetch operations
- Recipe links now point to cooking view (/recipes/{id}/cook/{event_id})
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
The uncomplete response was returning an empty body, causing HTMX to
swap the element with nothing before the refresh-tasks trigger fired.
Added HX-Reswap: none header to preserve the element while the refresh
event propagates.
Also fixed TestGetCardsByDateRange test data to include all required
columns (list_id, list_name, url).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add BaseClient HTTP abstraction (internal/api/http.go) to eliminate
duplicated HTTP boilerplate across Todoist, Trello, and PlanToEat clients
- Add response helpers (internal/handlers/response.go) for JSON/HTML responses
- Add generic cache wrapper (internal/handlers/cache.go) using Go generics
- Consolidate HandleCompleteAtom/HandleUncompleteAtom into handleAtomToggle
- Merge TabsHandler into Handler, delete tabs.go
- Extract sortTasksByUrgency and filterAndSortTrelloTasks helpers
- Update tests to work with new BaseClient structure
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>
|
|
- Default password: Fatal error in production if DEFAULT_PASS not set
- API timeouts: Reduce from 30s to 15s (4 APIs × 15s < 60s global)
- Trello lists: Log warning when list fetch fails instead of silent ignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- DB connection pool: Allow 5 connections instead of 1 for better concurrency
- JSON unmarshal: Add error handling to prevent nil slice issues
- Context cancellation: Check ctx.Done() in aggregateData goroutines
- Migration path: Make configurable via MIGRATION_DIR env var
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Prefill first store in shopping quick-add
- Tone down overdue/priority styling (red -> amber)
- Remove quick-add panel from tasks tab (use modal instead)
- Increase card opacity for better readability
- Swap task/event formatting (tasks get cards, events get border-l-4)
- Add grid layout for tasks (2-3 columns on wider screens)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add Shopping tab to action modal (Ctrl+K)
- Add /partials/shopping-lists endpoint to fetch lists from Shopping board
- Store dropdown populated dynamically from Trello
- Items added via existing unified-add endpoint
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
The boardMap was storing pointers to Board structs in the boards slice.
When the slice grew and reallocated, those pointers became stale, causing
cards to be added to old memory locations instead of the current slice.
Fixed by storing indices instead of pointers in boardMap.
Added tests to verify multiple boards with varying card counts are
correctly saved and retrieved.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
|
|
|
|
|
|
Log API responses and errors to diagnose empty boards issue.
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>
|
|
Log calendar ID on init and event count on fetch to help
diagnose configuration issues.
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>
|
|
Deletes 12 bug reports that have been fixed:
- Hide future tasks, modal menu, tap to expand
- terst.org styling, visual differentiation, urgency sort
- Todoist link, completed tasks, timestamp, background image
- Task edit details
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Update all HTML templates to match terst.org styling:
- Dark semi-transparent backgrounds (bg-black/60)
- White text with opacity variants for hierarchy
- Glass effect with backdrop-blur
- Dark form inputs with subtle borders
- Updated modals and FAB button
- Login page with background image
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
|
|
|
|
- Add deployment/deploy script for server-side deploys
- Remove 10 completed issue files (001-016 batch)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Switch from Unsplash Source API to Lorem Picsum which has proper
CORS headers for cross-origin image loading.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Fix outdated Todoist task URL format (showTask -> app/task)
- Fix quick-add date defaulting to tomorrow in evening (client-side JS)
- Add tap-to-expand for task descriptions with checkbox completion
- Add visual differentiation: overdue (red), future (gray), today (normal)
- Sort tasks by urgency: overdue > today-timed > today-allday > future
- Keep completed tasks visible with strikethrough until refresh
- Add random Unsplash landscape background with content overlay
- Hide future tasks behind collapsible fold with count badge
- Unified modal menu for Quick Add + Bug Report (Ctrl+K shortcut)
- Click task title to edit description in modal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Gray out overdue tasks (past today)
- Sort tasks with specific times before midnight-due tasks
- Fix timezone bug in quick add (use local timezone)
- Remove "Personal Dashboard" header, minimal refresh/logout bar
- Change Todoist icon from checkmark to red circle
- Show due time when set (not just date)
- Compact task list styling
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- New bugs table in SQLite (migration 005)
- Store methods for saving and retrieving bugs
- Handlers for GET/POST /bugs
- Floating bug button with modal UI
- Shows recent bug reports in modal
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Simple SVG favicon with gradient checkmark icon matching
the app's indigo/purple theme.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Hide full header on mobile, show compact version
- Make Quick Add collapsible to save space
- Compact task cards: smaller padding, text, and gaps
- Remove checkbox decoration, tap card to complete
- Reduce side padding on mobile
- Smaller tab buttons on mobile
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Manual JavaScript fetch() calls weren't including the CSRF token,
causing 403 Forbidden on /api/refresh. Extract token from
hx-headers body attribute and include in all POST requests.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add explicit permission steps (755 dirs, 644 files)
- Document systemd override for .env sourcing
- Expand troubleshooting with common errors:
- AH01144 proxy module error
- 403 forbidden on static files
- Template nil pointer panic
- Readonly database error
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Include systemd service file, Apache reverse proxy config,
and comprehensive deployment guide for Linux VPS setup.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Allow static file directory to be configured via environment
variable for flexible deployment layouts. Also fix gitignore
to not ignore cmd/dashboard directory.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
All critical issues resolved: auth tests, CSRF protection,
and acceptance tests updated. All tests passing.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Include design system guidelines, Phase 3 roadmap, code quality
review, proposed README, and authentication ADR.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Document completed and planned tasks:
- Obsidian removal (completed)
- Authentication implementation (completed)
- VPS deployment preparation (planned)
- API sync optimization research
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Include tests exploring Todoist Sync API and Trello field
filtering for efficient incremental data fetching.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Include surgical instructions and code review feedback
from authentication feature development.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Define workflow personas for multi-agent development process
with clear responsibilities and handoff protocols.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Remove inline content and delegate to trello-boards partial.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Track completed authentication work and remaining next steps
for CSRF protection and testing.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Clean up repository by removing outdated planning documents,
implementation specs, and setup guides that are no longer relevant.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Add CSRF token middleware for state-changing request protection,
integrate tokens into templates and HTMX headers, and add unit
tests for authentication service and handlers.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Implement secure authentication using scs session manager with SQLite
backing store and bcrypt password hashing.
- Add users and sessions tables (migration 004)
- Create internal/auth package with Service, Middleware, and Handlers
- Protect all routes except /login, /logout, /static/*
- Add login page template and logout button to dashboard
- Default credentials: admin/changeme (configurable via env vars)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Obsidian relied on local filesystem access which is incompatible with
public server deployment. This removes all Obsidian-related code including:
- API client and interface
- Store layer methods (SaveNotes, GetNotes, SearchNotes)
- Handler methods and routes
- UI tab and templates
- Configuration fields
- Related tests
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
- Add Todoist Sync API v9 support with incremental sync tokens
- Store sync tokens in SQLite for persistence across restarts
- Add field filtering to Trello API calls to reduce payload size
- Update handlers to use incremental sync (merge changes vs full replace)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Clear tasks table before inserting fresh API data, matching the fix
applied to SaveBoards. This ensures completed/updated/deleted tasks
are properly removed from the cache.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|