| Age | Commit message (Collapse) | Author |
|
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>
|