# 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