When a task is completed via checkbox tap, it fades out and collapses
before being removed from the list, matching the swipe-to-complete
animation behavior.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace multi-page task management with single-screen layout: Header
with report picker at top, scrollable TaskList in the middle, and
InputBar with property pills fixed at the bottom. Owns state for
active report, task loading, input parsing, and task completion.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
TaskItem: remove onClick navigation, wrap in SwipeAction for
swipe-to-complete, update priority colors (H=red, M=amber, L=gray,
default=hidden), add due-today amber color.
TaskList: accept activeReport prop for context-aware empty states,
replace onToggle/onTaskClick with onComplete, make scrollable with
flex:1 and overflow-y:auto.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements right-swipe-to-complete with angle-based lock-in (horizontal
must exceed 2x vertical), 100px threshold, green checkmark background
reveal, and CSS transition for snap-back and completion animation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
InputBar provides fixed-to-bottom text input with Enter to submit,
blur-delay (150ms) for pill interaction, and cursor-aware text
insertion. PropertyPills shows 8 modifier pills (Due, Pri, Project,
Tag, Recur, Scheduled, Wait, Until) on input focus.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Header shows active report name (left) with dropdown chevron and gear
icon linking to /settings (right). ReportPicker uses native Popover API
with 11 reports grouped into Common, Time-based, Recurring, and Archive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Delete /tasks/new, /tasks/[uuid], /projects, /tags routes and BottomNav
component. Simplify layout to slot-only with 100dvh flexbox. Remove
nav-height CSS variable and .page padding rules.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add tasks.parse() and tasks.listByReport() to the API layer, and
loadReport() and parseAndCreate() to the tasks store with mock mode
support for the CLI-passthrough redesign.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Create detailed deployment documentation
- Add Caddyfile.example with security headers and API proxy
- Document SystemD service setup for Go API
- Include database backup strategy
- Add troubleshooting guide
- Document OAuth configuration steps
- Add build and deployment commands
- Test production build successfully (340KB static site)
- Create TaskItem component with checkbox, meta info, tags
- Create TaskList component with loading/empty states
- Update home page with task list and filter toggle (pending/completed)
- Add new task form with description, project, priority, due date, tags
- Add task detail placeholder page
- Implement task toggle (complete/uncomplete)
- Add filter bar to switch between pending and completed tasks
- Support for optimistic UI updates and offline queueing
- Visual indicators for priority, due dates, overdue tasks
- Mobile-optimized list items with proper touch targets
- Add global CSS with mobile-first styling and CSS custom properties
- Create base UI components: Button, Input, Checkbox, Select
- Add BottomNav component with icons for Tasks, Projects, Tags, Settings
- Update app layout to include BottomNav and auth handling
- Create Settings page with API key input and sync controls
- Create auth pages: /auth/login (OAuth) and /auth/callback
- Add placeholder pages for Projects and Tags
- Implement manual API key authentication for MVP testing
- Add logout functionality and user info display
- Support for safe-area-inset (mobile notches)
- Create API client with auto-retry and token refresh support
- Add comprehensive API endpoints for tasks, tags, projects, sync, and auth
- Implement authStore for authentication state management
- Implement tasksStore with optimistic updates and offline queue
- Add derived stores for filtered task views (pending, completed, by project)
- Implement syncStore for managing sync state and queue
- Add client ID generation and persistence for sync tracking
- Add OAuth2 client for Authentik integration
- Implement JWT token generation and validation
- Add refresh token support with database storage
- Update database schema with oauth_subject, oauth_provider, and refresh_tokens table
- Create auth package with config, jwt, oauth, and token management
- Add OAuth endpoints: /auth/login, /auth/callback, /auth/refresh, /auth/logout
- Update AuthMiddleware to support both JWT and API key authentication
- Add user helper functions for OAuth user creation and retrieval
- Add .env.example with OAuth configuration template
API keys still work for CLI compatibility while JWT tokens support web/mobile clients.