Clicking the header "New Task" button now scrolls to and focuses
the create-task input in the Pending column.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove legacy wwwroot files (old index.html, app.css, api.js, page scripts)
- Add Index page that redirects / to /board
- Fix mapping delete button missing handler=Delete in URL
- Add [IgnoreAntiforgeryToken] to AnalyticsModel for consistency
- Remove duplicate JS from _TaskDetail.cshtml (already in app.js)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Analytics page with stat cards (open tasks, active time, top category),
Chart.js timeline bar chart bucketed by hour, category donut chart with
legend, and paginated activity feed with htmx "Load more" support.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire up SortableJS in app.js to enable dragging task cards between
Kanban columns. On drop, fires htmx PUT requests to the appropriate
Board handler (Start/Pause/Resume/Complete) based on the column
transition. Invalid transitions are reverted. Sortable instances are
destroyed and recreated after htmx swaps to prevent memory leaks.
Also centralizes detail panel open/close/edit helpers and Escape key
handling.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Server-rendered Kanban board with 4 status columns (Pending, Active,
Paused, Completed), task cards with category colors and elapsed time,
filter bar with category chips and subtask toggle, and inline create
task form. All handlers support htmx partial updates for status
transitions (start, pause, resume, complete, abandon, create).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Register Razor Pages services and middleware in Program.cs, removing
UseDefaultFiles() since Razor Pages handles routing. Add shared layout
with dark-themed app shell (header, nav links, search/new-task buttons)
and vendor script references for htmx, Sortable, and Chart.js.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow setting ParentTaskId when updating a task via the API (with
validation that the parent exists) and when creating a task via the
MCP create_task tool.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>