Files
break-it-down/CHANGELOG.md
2025-11-25 23:26:47 +00:00

9.7 KiB

Changelog

All notable changes to TESSERACT will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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