| Age | Commit message (Collapse) | Author |
|
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>
|
|
Step 3 - Trello Smart Sorting:
- Update GetBoards SQL with LEFT JOIN and MAX(c.id) for activity sorting
- Update GetBoardsWithCards to find max card ID per board
- Sort by: 1) Has cards, 2) Newest card activity, 3) Board name
- Trello IDs are chronologically sortable (newer > older)
Step 4 - Todoist Due-First Sorting:
- Update GetTasks ORDER BY with CASE WHEN due_date IS NULL
- Sort by: 1) Incomplete, 2) Has due date, 3) Earliest date, 4) Priority
- Tasks with due dates appear before tasks without due dates
Step 5 - Obsidian Search:
- Add SearchNotes method with LIKE queries on title/content
- Update HandleNotes to check 'q' query param and HX-Target header
- Implement smart partial rendering (obsidian-notes vs notes-tab)
- Add search input with 300ms debounce and HTMX integration
- Real-time search without page reload
Mark Steps 1-5 as complete in PHASE_2_SURGICAL_PLAN.md
All tests passing
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
- Update GetBoards SQL query with LEFT JOIN and GROUP BY
- Sort by: 1) Has cards, 2) Newest card (MAX ID), 3) Board name
- Update GetBoardsWithCards to match SQL sorting behavior
- Leverage Trello ID chronological sortability (newer > older)
- Active boards with recent activity appear first
- All tests passing
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
|
|
- Create internal/models/atom.go with Atom struct and enums
- Add mapper functions for Task, Card, Note, and Meal types
- Normalize priority scales (1-4) and assign brand colors
- Update Phase 2 plan with Atom architecture as Step 1
- Document architectural decision in SESSION_STATE.md
This abstraction enables consistent handling, sorting, and rendering
of items from Trello, Todoist, Obsidian, and PlanToEat sources.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Complete UI overhaul implementing modern design patterns with HTMX for
dynamic updates, proper Tailwind build pipeline, and improved UX.
Build Pipeline:
- Add npm + PostCSS + Tailwind CSS configuration
- Custom design system with brand colors
- Compiled CSS: 27KB (vs 3MB CDN), 99% reduction
- Makefile for unified build commands
- Inter font for improved typography
Tab Interface:
- Separate Tasks tab from Notes tab using HTMX
- Partial page updates without full refreshes
- Tab state management with proper refresh handling
- New endpoints: /tabs/tasks, /tabs/notes, /tabs/refresh
Template Architecture:
- Modular partials system (7 reusable components)
- Cleaner separation of concerns
Empty Board Management:
- Active boards in main 3-column grid
- Empty boards in collapsible section
- Reduces visual clutter
Visual Design Enhancements:
- Inter font, brand color accents
- Improved typography hierarchy and spacing
- Enhanced card styling with hover effects
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Improves UX by prioritizing boards with cards over empty boards.
Both API and cached results now sort consistently: non-empty boards
appear first, then empty boards, with alphabetical ordering within
each group.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Created comprehensive test coverage for security fixes:
- internal/api/obsidian_test.go:
* TestGetNotes_SymlinkSecurity: Verifies symlinks are not followed
* TestGetNotes_BasicFunctionality: Tests basic limit and ordering
* Uses t.TempDir() for isolated test environments
- internal/store/sqlite_test.go:
* TestGetNotes_LimitClause: Validates LIMIT parameter handling
* TestGetNotes_EmptyDatabase: Tests empty state
* TestSaveNotes_Upsert: Verifies INSERT OR REPLACE behavior
* TestGetNotes_SQLInjectionAttempt: Confirms parameterized queries
* All tests use temporary SQLite databases for isolation
All tests passing (7 new test cases). Security fixes from commits
325811c and 4c03e9c now have full test coverage.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Cleaned up CLAUDE.md by removing the AI Endpoint line from the
Technical Context section. Updated SESSION_STATE.md to track this
final documentation cleanup.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Simplified the dashboard by removing the AI agent access layer:
- Deleted internal/middleware/ai_auth.go and tests
- Removed AIAgentAPIKey from config.Config
- Removed /api/claude/snapshot endpoint registration
- Updated SESSION_STATE.md and CLAUDE.md documentation
- All tests passing after cleanup
Dashboard is now human-facing only without the AI agent endpoint.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
|
Replaced sequential card fetching in GetBoardsWithCards with concurrent
goroutines limited by a semaphore (max 5 concurrent requests). This
significantly reduces load times for users with multiple boards.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|