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
Major Feature: Nested Kanban Board
- Parent tasks now appear in each column where they have subtasks
- Provides hierarchical context while maintaining status-based organization
- Eliminates need to choose between hierarchy and status views
Parent Card Features:
1. Multi-Column Presence
- Parent card appears in every column containing its descendants
- Shows "X of Y subtasks in this column" counter
- Automatically updates as children move between columns
2. Expandable/Collapsible
- Click chevron to show/hide children in that specific column
- Each parent instance independently expandable
- Children displayed nested with indentation
3. Visual Distinction
- Thicker orange border (border-2 vs border)
- Bold text styling
- "bg-cyber-darker" background instead of "bg-cyber-darkest"
- Non-draggable (only leaf tasks can be moved)
4. Recursive Display
- getDescendantsInStatus() finds all descendants (not just direct children)
- Handles arbitrary nesting depth
- Works with sub-subtasks and beyond
Technical Implementation:
- Added helper functions:
- getDescendantsInStatus(taskId, allTasks, status)
- hasDescendantsInStatus(taskId, allTasks, status)
- Modified TaskCard component with isParent and columnStatus props
- Updated KanbanColumn to show both parent and leaf tasks
- Only root-level tasks shown (nested children appear when parent expanded)
Display Logic:
- Each column shows:
1. Root parent tasks with descendants in that status
2. Root leaf tasks with that status
- Leaf tasks: tasks with no children
- Parent tasks: tasks with at least one child
Example Usage:
Project "Build Feature"
├─ Backend (2 subtasks in backlog, 1 in progress)
└─ Frontend (1 subtask in done)
Result: Project card appears in 3 columns:
- Backlog: "2 of 3 subtasks in this column"
- In Progress: "1 of 3 subtasks in this column"
- Done: "1 of 3 subtasks in this column"
Documentation:
- Updated README with nested Kanban explanation
- Added v0.1.5 section to CHANGELOG
- Updated version to v0.1.5 in App.jsx
- Moved "Nested Kanban" from roadmap to completed features
This completes the hierarchical task management vision for TESSERACT,
allowing users to see both project structure and status distribution
simultaneously without switching views.
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.
When a leaf task is marked as 'done', it no longer contributes to its parent's
time estimate. This shows remaining work rather than total estimated work.
Example:
- Parent with 2 subtasks (30m each) shows 1h
- Mark one subtask as done → parent now shows 30m
- Mark both done → parent shows 0m (or own estimate if set)
This provides accurate tracking of remaining time across the task hierarchy.
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