1. Make parent cards draggable with all subtasks
- Parent cards can now be dragged between columns
- All descendants are automatically moved with the parent
- Added isParent flag to drag/drop dataTransfer
2. Add Expand All / Collapse All buttons to Kanban view
- Added global expandedCards state management
- New buttons in Kanban header with ChevronsDown/Up icons
- Allows quick expansion/collapse of all parent cards
3. Add description field to tasks
- Added description textarea to TaskForm component
- Added description edit option to TaskMenu component
- Description displays in both TreeView and KanbanView
- Shows below metadata in italic gray text
- Backend already supported description field
New Features:
1. Auto-Complete Parent Tasks
- When all child tasks are marked as "done", parent automatically becomes "done"
- Works recursively up the task hierarchy
- Implemented in backend crud.py with check_and_update_parent_status()
- Prevents manual status management for completed branches
2. Strikethrough for Done Tasks
- Time estimates crossed out when task status is "done"
- Visual indicator that work is completed
- Applied in both TreeView and KanbanView
3. Updated Version
- Bumped to v0.1.4 in App.jsx header
4. Documentation
- Added comprehensive CHANGELOG.md
- Updated README.md with v0.1.4 features
- Documented all versions from v0.1.0 to v0.1.4
- Added usage examples, architecture diagrams, troubleshooting
Technical Changes:
- backend/app/crud.py: Added check_and_update_parent_status() recursive function
- frontend/src/components/TreeView.jsx: Added line-through styling for done tasks
- frontend/src/components/KanbanView.jsx: Added line-through styling for done tasks
- frontend/src/App.jsx: Version updated to v0.1.4
This release completes the intelligent time tracking and auto-completion features,
making TESSERACT a fully-featured hierarchical task management system.
Features:
1. Enhanced Task Creation Forms:
- New TaskForm component with all metadata fields
- Title, tags (comma-separated), time estimate (hours + minutes), flag color
- Used in TreeView (root tasks and subtasks) and KanbanView (all columns)
- Replace simple title-only inputs with full metadata forms
2. Time Format Changes:
- Display: "1h 30m" instead of "1.5h"
- Input: Separate hours and minutes fields
- Storage: Still integer minutes in backend
- Updated formatTime() utility
- Updated TaskMenu time editor with hours/minutes inputs
3. Leaf-Based Time Calculation:
- Leaf tasks (no subtasks): Show user-entered estimate
- Parent tasks (has subtasks): Show sum of all descendant LEAF tasks
- Exception: Parent with no leaf estimates shows own estimate as fallback
- New functions: calculateLeafTime(), calculateLeafTimeFlat()
- Replaces old aggregation that summed all tasks including parents
This allows accurate project planning where parent estimates are calculated from leaf tasks,
preventing double-counting when both parent and children have estimates.
Features:
- Add "Change Status" option to TaskMenu dropdown
- Allows changing task status (backlog/in progress/blocked/done) from tree view
- Shows current status with checkmark
- No longer need to switch to Kanban view to change status
- Implement recursive time aggregation for subtasks
- Tasks now show total time including all descendant subtasks
- Display format varies based on estimates:
- "1.5h" - only task's own estimate
- "(2h from subtasks)" - only subtask estimates
- "1h (3h total)" - both own and subtask estimates
- Works in both TreeView (hierarchical) and KanbanView (flat list)
- New utility functions: calculateTotalTime, calculateTotalTimeFlat, formatTimeWithTotal
This allows better project planning by showing total time investment for tasks with subtasks.
- Display time estimates, tags, and flag colors in TreeView and KanbanView
- Add TaskMenu component with three-dot dropdown for editing metadata
- Edit time estimates (stored as minutes)
- Edit tags (comma-separated input)
- Set flag colors (red, orange, yellow, green, blue, purple, pink)
- Add SearchBar component in header
- Real-time search with 300ms debounce
- Optional project filtering
- Click results to navigate to project
- Integrate TaskMenu into both TreeView and KanbanView
- Format time display: "30m" for <60 min, "1.5h" for >=60 min
Tree View:
- Fix nested task indentation to scale properly with depth (1.5rem per level)
- Sub-subtasks now indent correctly relative to their parents
Kanban View:
- Show ALL tasks as draggable cards (not just root tasks)
- Subtasks display parent task name for context
- Each subtask can be independently dragged to different status columns
- Remove nested subtask expansion since all tasks are now individual cards
This commit implements a fully functional self-hosted task decomposition engine with:
Backend (FastAPI + SQLite):
- RESTful API with full CRUD operations for projects and tasks
- Arbitrary-depth hierarchical task structure using self-referencing parent_task_id
- JSON import endpoint for seeding projects from LLM-generated breakdowns
- SQLAlchemy models with proper relationships and cascade deletes
- Status tracking (backlog, in_progress, blocked, done)
- Auto-generated OpenAPI documentation
Frontend (React + Vite + Tailwind):
- Dark cyberpunk theme with orange accents
- Project list page with create/import/delete functionality
- Dual view modes:
* Tree View: Collapsible hierarchical display with inline editing
* Kanban Board: Drag-and-drop status management
- Real-time CRUD operations for tasks and subtasks
- JSON import modal with validation
- Responsive design optimized for desktop
Infrastructure:
- Docker setup with multi-stage builds
- docker-compose for orchestration
- Nginx reverse proxy for production frontend
- Named volume for SQLite persistence
- CORS configuration for local development
Documentation:
- Comprehensive README with setup instructions
- Example JSON import file demonstrating nested structure
- API endpoint documentation
- Data model diagrams