247 lines
9.7 KiB
Markdown
247 lines
9.7 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to TESSERACT will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [0.1.6] - 2025-01-25
|
|
|
|
### Added
|
|
- **Dynamic Status Management System**
|
|
- Per-project customizable status workflows (replacing hardcoded statuses)
|
|
- New default statuses: `backlog`, `in_progress`, `on_hold`, `done` (removed `blocked`)
|
|
- Project Settings modal with comprehensive status management:
|
|
- Drag-and-drop status reordering
|
|
- Add new custom statuses
|
|
- Rename existing statuses (inline editing)
|
|
- Delete unused statuses with validation
|
|
- Task count display per status
|
|
- Warning dialogs when attempting to delete statuses with tasks
|
|
- Settings button (⚙️) in project header to access configuration
|
|
- Status validation in backend CRUD operations
|
|
- Database migration for `projects.statuses` JSON column
|
|
|
|
- **Enhanced Task Creation**
|
|
- Status selector dropdown in TaskForm component
|
|
- Select status when creating tasks (no longer defaults to "backlog" only)
|
|
- Works across Tree View and Kanban View
|
|
- Defaults to current column status in Kanban View
|
|
- Defaults to "backlog" in Tree View
|
|
|
|
- **Subtask Creation in Kanban View**
|
|
- "+" button on task cards to add subtasks directly in Kanban
|
|
- Button appears on hover next to task menu
|
|
- Opens TaskForm with status defaulted to current column
|
|
- Automatically expands parent card after creating subtask
|
|
- Full parity with Tree View subtask functionality
|
|
|
|
### Changed
|
|
- Removed hardcoded status enums from backend (`TaskStatus` enum removed)
|
|
- Task status field changed from Enum to String in database
|
|
- All status references now dynamic (backend, frontend, Kanban UI)
|
|
- Status formatting helpers added for consistent display
|
|
- Status colors now pattern-matched based on status names
|
|
- Existing tasks migrated from uppercase enum format to lowercase
|
|
|
|
### Backend Changes
|
|
- `models.py`: Added `DEFAULT_STATUSES` constant, `statuses` JSON column to Project, changed Task.status to String
|
|
- `schemas.py`: Changed status from TaskStatus enum to str, added statuses to Project schemas
|
|
- `crud.py`: Added status validation in create_task, update_task, get_tasks_by_status
|
|
- `main.py`: Added status validation to endpoints and JSON import
|
|
|
|
### Frontend Changes
|
|
- `ProjectSettings.jsx`: New component for managing project status workflows
|
|
- `TaskForm.jsx`: Added status selector with dynamic status list
|
|
- `KanbanView.jsx`: Dynamic status columns, subtask creation, removed hardcoded STATUSES
|
|
- `TaskMenu.jsx`: Dynamic status dropdown using projectStatuses prop
|
|
- `TreeView.jsx`: Dynamic status helpers, passes statuses to forms
|
|
- `ProjectView.jsx`: Integrated ProjectSettings modal with gear icon button
|
|
|
|
### Fixed
|
|
- Database schema migration for projects.statuses column
|
|
- Task status migration from uppercase (BACKLOG, IN_PROGRESS, DONE) to lowercase format
|
|
- 51 existing tasks successfully migrated to new status format
|
|
|
|
### Technical Details
|
|
- New database column: `projects.statuses` (JSON, default: ["backlog", "in_progress", "on_hold", "done"])
|
|
- Status validation at multiple layers (CRUD, API endpoints, frontend)
|
|
- Helper functions for status formatting and color coding
|
|
- Prop drilling of projectStatuses through component hierarchy
|
|
|
|
## [0.1.5] - 2025-01-XX
|
|
|
|
### Added
|
|
- **Nested Kanban View** - Major feature implementation
|
|
- Parent tasks now appear in each column where they have subtasks
|
|
- Parent cards show "X of Y subtasks in this column" indicator
|
|
- Parent cards are expandable/collapsible to show children in that column
|
|
- Parent cards have distinct visual styling (thicker orange border, bold text)
|
|
- Only leaf tasks (tasks with no children) are draggable
|
|
- Parent cards automatically appear in multiple columns as children move
|
|
- Helper functions for nested Kanban logic:
|
|
- `getDescendantsInStatus()` - Get all descendant tasks in a specific status
|
|
- `hasDescendantsInStatus()` - Check if parent has any descendants in a status
|
|
|
|
### Changed
|
|
- Kanban board now labeled "Kanban Board (Nested View)"
|
|
- Parent task cards cannot be dragged (only leaf tasks)
|
|
- Column task counts now include parent cards
|
|
- Improved visual hierarchy with parent/child distinction
|
|
|
|
### Improved
|
|
- Better visualization of task distribution across statuses
|
|
- Easier to see project structure while maintaining status-based organization
|
|
- Parent tasks provide context for subtasks in each column
|
|
|
|
## [0.1.4] - 2025-01-XX
|
|
|
|
### Added
|
|
- Strikethrough styling for time estimates when tasks are marked as "done"
|
|
- Auto-complete parent tasks when all child tasks are marked as "done"
|
|
- Works recursively up the task hierarchy
|
|
- Parents automatically transition to "done" status when all children complete
|
|
|
|
### Changed
|
|
- Time estimates on completed tasks now display with strikethrough decoration
|
|
- Parent task status automatically updates based on children completion state
|
|
|
|
## [0.1.3] - 2025-01-XX
|
|
|
|
### Added
|
|
- Enhanced task creation forms with metadata fields
|
|
- Title field (required)
|
|
- Tags field (comma-separated input)
|
|
- Time estimate fields (hours and minutes)
|
|
- Flag color selector with 8 color options
|
|
- TaskForm component for consistent task creation across views
|
|
- Status change dropdown in TaskMenu (no longer requires Kanban view)
|
|
- Leaf-based time calculation system
|
|
- Parent tasks show sum of descendant leaf task estimates
|
|
- Prevents double-counting when both parents and children have estimates
|
|
- Excludes "done" tasks from time calculations
|
|
- Time format changed from decimal hours to hours + minutes (e.g., "1h 30m" instead of "1.5h")
|
|
- CHANGELOG.md and README.md documentation
|
|
|
|
### Changed
|
|
- Task creation now includes all metadata fields upfront
|
|
- Time estimates display remaining work (excludes completed tasks)
|
|
- Time input uses separate hours/minutes fields instead of single minutes field
|
|
- Parent task estimates calculated from leaf descendants only
|
|
|
|
### Fixed
|
|
- Time calculation now accurately represents remaining work
|
|
- Time format more human-readable with hours and minutes
|
|
|
|
## [0.1.2] - 2025-01-XX
|
|
|
|
### Added
|
|
- Metadata fields for tasks:
|
|
- `estimated_minutes` (Integer) - Time estimate stored in minutes
|
|
- `tags` (JSON Array) - Categorization tags
|
|
- `flag_color` (String) - Priority flag with 7 color options
|
|
- TaskMenu component with three-dot dropdown
|
|
- Edit time estimates
|
|
- Edit tags (comma-separated)
|
|
- Set flag colors
|
|
- Edit task title
|
|
- Delete tasks
|
|
- SearchBar component in header
|
|
- Real-time search with 300ms debounce
|
|
- Optional project filtering
|
|
- Click results to navigate to project
|
|
- Displays metadata in results
|
|
- Time and tag display in TreeView and KanbanView
|
|
- Flag color indicators on tasks
|
|
- Backend search endpoint `/api/search` with project filtering
|
|
|
|
### Changed
|
|
- TreeView and KanbanView now display task metadata
|
|
- Enhanced visual design with metadata badges
|
|
|
|
## [0.1.1] - 2025-01-XX
|
|
|
|
### Fixed
|
|
- Tree view indentation now scales properly with nesting depth
|
|
- Changed from fixed `ml-6` to calculated `marginLeft: ${level * 1.5}rem`
|
|
- Each nesting level adds 1.5rem (24px) of indentation
|
|
- Kanban view subtask handling
|
|
- All tasks (including subtasks) now appear as individual draggable cards
|
|
- Subtasks show parent context: "↳ subtask of: [parent name]"
|
|
- Removed nested subtask list display
|
|
|
|
### Changed
|
|
- Improved visual hierarchy in tree view
|
|
- Better subtask representation in Kanban board
|
|
|
|
## [0.1.0] - 2025-01-XX
|
|
|
|
### Added
|
|
- Initial MVP release
|
|
- Core Features:
|
|
- Arbitrary-depth nested task hierarchies
|
|
- Two view modes: Tree View and Kanban Board
|
|
- Self-hosted architecture with Docker deployment
|
|
- JSON import for LLM-generated task trees
|
|
- Technology Stack:
|
|
- Backend: Python FastAPI with SQLAlchemy ORM
|
|
- Database: SQLite with self-referencing Task model
|
|
- Frontend: React + Tailwind CSS
|
|
- Deployment: Docker with nginx reverse proxy
|
|
- Project Management:
|
|
- Create/read/update/delete projects
|
|
- Project-specific task trees
|
|
- Task Management:
|
|
- Create tasks with title, description, status
|
|
- Four status types: Backlog, In Progress, Blocked, Done
|
|
- Hierarchical task nesting (task → subtask → sub-subtask → ...)
|
|
- Add subtasks to any task
|
|
- Delete tasks (cascading to all subtasks)
|
|
- Tree View:
|
|
- Collapsible hierarchical display
|
|
- Expand/collapse subtasks
|
|
- Visual nesting indentation
|
|
- Inline editing
|
|
- Status display
|
|
- Kanban Board:
|
|
- Four columns: Backlog, In Progress, Blocked, Done
|
|
- Drag-and-drop to change status
|
|
- All tasks shown as cards (including subtasks)
|
|
- JSON Import:
|
|
- Bulk import task trees from JSON files
|
|
- Supports arbitrary nesting depth
|
|
- Example import file included
|
|
- UI/UX:
|
|
- Dark cyberpunk theme
|
|
- Orange (#ff6b35) accent color
|
|
- Responsive design
|
|
- Real-time updates
|
|
|
|
### Technical Details
|
|
- Backend API endpoints:
|
|
- `/api/projects` - Project CRUD
|
|
- `/api/tasks` - Task CRUD
|
|
- `/api/projects/{id}/tree` - Hierarchical task tree
|
|
- `/api/projects/{id}/tasks` - Flat task list
|
|
- `/api/projects/{id}/import` - JSON import
|
|
- Database Schema:
|
|
- `projects` table with id, name, description
|
|
- `tasks` table with self-referencing `parent_task_id`
|
|
- Frontend Routing:
|
|
- `/` - Project list
|
|
- `/project/:id` - Project view with Tree/Kanban toggle
|
|
- Docker Setup:
|
|
- Multi-stage builds for optimization
|
|
- Nginx reverse proxy configuration
|
|
- Named volumes for database persistence
|
|
- Development and production configurations
|
|
|
|
## Project Information
|
|
|
|
**TESSERACT** - Task Decomposition Engine
|
|
A self-hosted web application for managing deeply nested todo trees with advanced time tracking and project planning capabilities.
|
|
|
|
**Repository**: https://github.com/serversdwn/tesseract
|
|
**License**: MIT
|
|
**Author**: serversdwn
|