| Age | Commit message (Collapse) | Author |
|
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>
|
|
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Replace manual string concatenation with url.Values for cleaner,
safer query parameter construction in GetBoards, GetCards, and getLists.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Code quality improvements:
- Define CacheKey* constants in store package for type safety
- Add TemplateDir to config (default: web/templates, env: TEMPLATE_DIR)
- Update handlers to use store.CacheKey* instead of hardcoded strings
- Update NewTabsHandler to accept templateDir parameter
- Use filepath.Join for cross-platform template path construction
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Add Quick Add form to create Todoist tasks or Trello cards directly
from the Tasks tab with optional due date support.
Features:
- HandleUnifiedAdd handler with due date parsing
- HandleGetListsOptions for dynamic Trello list loading
- Quick Add form with source toggle (Todoist/Trello)
- Date picker for due dates
- HX-Trigger refresh after successful creation
- Pass boards to tasks-tab template for board selector
Cleanup:
- Remove resolved issue tracking files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Closed boards were appearing because:
1. API fetched all boards including closed ones
2. Cache used upsert logic that never removed old data
Fixes:
- Add filter=open to GetBoards API call
- Add filter=visible to GetCards API call
- Clear boards/cards tables before inserting fresh data in SaveBoards
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Add checkbox UI to Tasks tab for completing Todoist tasks and archiving
Trello cards. Fix cache synchronization so completed items stay gone
after page reload by deleting them from SQLite cache after API success.
- Add HandleCompleteAtom handler routing to Todoist/Trello APIs
- Add DeleteTask/DeleteCard store methods for cache removal
- Add htmx.process() calls after innerHTML updates in app.js
- Add comprehensive tests for completion and cache behavior
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
Add filtering logic to show Trello cards as actionable tasks when they
have due dates OR are in lists named like "todo", "doing", "in progress",
"tasks", "next", or "today". This makes the Tasks tab more useful by
surfacing cards that represent work items even without explicit due dates.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
|
|
|
Make Todoist tasks visible by integrating into Planning tab:
- Add todoist-tasks template to planning-tab.html
- Update HandlePlanning to fetch and pass Tasks data
- Pass empty Projects slice (quick add form won't show initially)
- Completion checkboxes now visible and functional
Tasks with checkboxes now appear on Planning tab above Trello boards.
Users can click checkboxes to complete tasks instantly.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Complete Todoist task creation and completion functionality:
Handlers:
- Update aggregateData to fetch and populate Projects
- Add HandleCreateTask: creates task, refreshes list, re-renders
- Add HandleCompleteTask: marks task complete, returns empty
- Both handlers pass Projects to template for dropdown
Routes:
- Register POST /tasks for task creation
- Register POST /tasks/complete for task completion
UI (todoist-tasks.html):
- Add Quick Add form with collapsible details element
- Project selector dropdown (iterates over .Projects)
- Content input field with validation
- HTMX integration: hx-post, hx-target, hx-swap
- Functional completion checkboxes on each task
- Remove disabled attribute from checkboxes
- Add todoist-task-item wrapper class for HTMX targeting
- Glassmorphism styling for form
Features:
- Create Todoist tasks with optional project assignment
- Mark tasks complete with single click (disappears)
- Real-time task list updates without page reload
- Seamless HTMX partial updates
All tests pass. Full Todoist write operations now live in UI!
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Add CreateTask and CompleteTask methods to Todoist API client:
Models:
- Add Project struct (ID, Name) to types.go
- Add Projects []Project field to DashboardData
API Interface:
- Change GetProjects signature to return []models.Project
- Ensure CreateTask and CompleteTask are defined
Todoist Client:
- Add baseURL field for testability
- Refactor GetProjects to return []models.Project
- Update GetTasks to build project map from new GetProjects
- Implement CreateTask with JSON payload support
- Implement CompleteTask using POST to /tasks/{id}/close
Tests:
- Create comprehensive todoist_test.go
- Test CreateTask, CreateTask with due date, CompleteTask
- Test error handling and GetProjects
- Update mock client in handlers tests
All tests pass. Ready for handlers and UI integration.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Implement interactive Trello card management with HTMX:
Frontend:
- Create trello-board.html partial with add card form
- Add collapsible form with list selector and card title input
- Add completion checkbox on each card
- Update trello-boards.html to use new partial
- Use HTMX for seamless partial updates (hx-post, hx-swap)
Backend:
- Add HandleCreateCard: creates card and re-renders board
- Add HandleCompleteCard: marks card as closed
- Register /cards and /cards/complete POST routes
Features:
- Add cards to any list via dropdown
- Mark cards complete with checkbox (removes from view)
- Real-time board updates without full page reload
- Glassmorphism styling for form
All tests pass. Full Trello write operations now available in UI.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Expose Trello Lists in Board model to enable card creation UI:
- Add List model struct (ID, Name) to types.go
- Add Lists []List field to Board model
- Add GetLists method to TrelloAPI interface
- Refactor private getLists to return []models.List
- Update GetCards to build list map from slice
- Add public GetLists method wrapping private implementation
- Update GetBoardsWithCards to populate Lists field concurrently
- Update mock Trello client in tests to implement GetLists
All tests pass. Boards now include their lists for UI rendering.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Add CreateCard and UpdateCard methods to Trello API client with
full testability support:
- Refactor TrelloClient with configurable baseURL for testing
- Replace hardcoded trelloBaseURL constant with c.baseURL
- Implement CreateCard with support for description and due date
- Implement UpdateCard with flexible field updates
- Add comprehensive test suite using httptest.NewServer
- Tests cover success cases, error handling, and edge cases
All tests pass. Write operations ready for Phase 3 UI integration.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Visual overhaul with glassmorphism design system:
- Gradient background (indigo/purple/pink)
- Glass morphic cards with backdrop blur
- Rounded pill navigation with glass effect
- Enhanced shadows and hover states
- Refined scrollbar styling
Changes:
- Update input.css with glassmorphism components and utilities
- Modify index.html navigation to use glass container
- Mark Bug 001 as resolved in tracking docs
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|