47 Commits

Author SHA1 Message Date
d784f9fea8 feat(web): add real-time activity feed via SignalR
- Add ActivityHub and wire up SignalR in Program.cs
- Broadcast new context events from ContextController
- Connect SignalR client on Analytics page for live feed updates
- Restructure activity feed HTML to support live prepending
- Add slide-in animation for new activity items
- Update CORS to allow credentials for SignalR

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 23:30:01 -05:00
5a273ba667 feat(web): add "New Task" button scroll-to-input behavior
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>
2026-03-01 23:29:49 -05:00
6ea0e40d38 fix(web): address code review findings from Razor Pages migration
- 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>
2026-03-01 22:47:49 -05:00
cffd09941a feat(web): remove React app — migration to Razor Pages complete
Delete the entire TaskTracker.Web React/npm frontend. All UI
functionality has been reimplemented as Razor Pages served from
the TaskTracker.Api project using htmx, SortableJS, and Chart.js.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:40:03 -05:00
a6adaea2da feat(web): add Mappings page with inline CRUD table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:37:29 -05:00
91f2eec922 feat(web): add Analytics page with Chart.js charts and activity feed
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>
2026-03-01 22:33:12 -05:00
fc674847f5 feat(web): add Ctrl+K command palette search modal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:28:02 -05:00
1fafae9705 feat(web): add drag-and-drop between Kanban columns via SortableJS
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>
2026-03-01 22:25:26 -05:00
1d1b2a153e feat(web): add task detail panel with inline editing, subtasks, and notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:22:45 -05:00
e34c5d561f feat(web): add Board page with Kanban columns and task cards
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>
2026-03-01 22:17:45 -05:00
bef7916cf8 feat(web): add CSS design system and vendored JS libraries
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 22:12:57 -05:00
c76956fb5b feat(web): add Razor Pages scaffolding to API project
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>
2026-03-01 22:01:53 -05:00
13b1f14344 docs: add Razor Pages migration implementation plan
11-task plan covering project setup, CSS/JS assets, Board page with
Kanban drag-and-drop, detail panel, search modal, Analytics page with
Chart.js, Mappings page with inline CRUD, and React app removal.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:50:15 -05:00
e04e9573ea docs: add Razor Pages migration design
Design for moving the TaskTracker web UI from React/npm to
Razor Pages + htmx, eliminating the Node toolchain and unifying
on a single .NET stack with one-binary deployment.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 21:47:08 -05:00
864e5b712c chore: add .playwright-mcp/ to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:21:15 -05:00
4b2a5a2707 feat(api): add parentTaskId support to task update and MCP create
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>
2026-02-27 00:20:27 -05:00
5db92d5127 fix(watcher): fix TickCount wrap and resume retry on API failure
- Use 32-bit Environment.TickCount with unchecked uint arithmetic so
  GetIdleTime stays correct after the ~49.7 day uint wrap boundary
- Only clear _pausedTaskId after successful resume, not before the API call
- Add retry path: if resume failed, retry on next poll cycle while user
  is still active

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:18:22 -05:00
74cd0f0018 Merge branch 'ui-redesign' — Linear/Vercel-inspired UI overhaul
Replaces sidebar with top nav, adds Cmd+K search modal, redesigns
kanban cards with glow effects, frosted glass detail panel, stat cards
on analytics, refined mappings table, centralized CSS design tokens.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:17:29 -05:00
71d33e355c feat(watcher): add idle detection with auto-pause/resume
When user is idle beyond IdleTimeoutMs, automatically pauses the active
task via the API. When user returns, resumes the task if it's still paused.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:14:36 -05:00
c71795c13f feat(watcher): add configurable IdleTimeoutMs setting (default 5 min)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:12:29 -05:00
f4d983a02b feat(ui): restyle subtask list and notes list with design tokens
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:12:23 -05:00
ea688c0ab0 feat(watcher): add GetLastInputInfo P/Invoke for idle detection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:11:42 -05:00
400e74be51 feat(ui): redesign mappings page with design tokens and refined table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:11:40 -05:00
8461bf788c feat(ui): redesign analytics page — stat cards, styled charts, git-log activity feed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:10:46 -05:00
0ea3fcfa6d feat(ui): restyle filter bar and create task form with design tokens
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:09:51 -05:00
664fd72086 docs: add idle detection implementation plan
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:08:55 -05:00
8c2377f956 docs: add idle detection design for WindowWatcher
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:07:45 -05:00
420ba50517 feat(ui): redesign detail panel — frosted glass, spring animation, refined hierarchy
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:07:28 -05:00
5ec4ca9a62 feat(ui): redesign kanban columns and task cards — borderless columns, glow cards, live dots
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:05:05 -05:00
320ef51c74 feat(ui): add Command-K search modal, remove inline search bar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:02:48 -05:00
8f2eae425c feat(ui): replace sidebar with slim top navigation bar
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:02:43 -05:00
4c160fe434 feat(ui): add design foundation — CSS tokens, noise texture, card glow effects
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 00:00:10 -05:00
baf941c63c docs: add UI redesign implementation plan
12-task plan covering CSS foundation, top nav, Cmd+K search,
kanban cards, detail panel, analytics, mappings, and polish.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 23:57:11 -05:00
87efedbc33 docs: add UI redesign design document
Linear/Vercel aesthetic — top nav, refined kanban cards,
muted color system, command-K search, frosted detail panel.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 23:53:24 -05:00
d153cb8392 fix: align frontend status types with API string enum serialization
ASP.NET serializes C# enums as strings by default ("Pending", "Active"),
but frontend types used numeric values (0, 1). Changed WorkTaskStatus and
NoteType to string values matching API output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:40:39 -05:00
908a312aa5 feat: add visual polish — Inter font, animations, colored shadows, hover effects
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:35:00 -05:00
a1107f434d feat: add mappings page with inline CRUD table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:32:44 -05:00
dec1757c1e feat: add analytics page with timeline, category breakdown, and activity feed
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:30:47 -05:00
1d7de30fa3 feat: add global search bar and board filter chips
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:27:55 -05:00
b936d5ba7d feat: add inline create task form in Pending column
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:24:53 -05:00
af205b367d feat: add task detail slide-over panel with inline editing, subtasks, and notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:22:57 -05:00
f0bcc01993 feat: implement Kanban board with drag-and-drop task management
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:19:51 -05:00
50e8c819fd feat: add layout shell with sidebar navigation and routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:17:11 -05:00
d896fe36a8 feat: add TypeScript types, API client, and TanStack Query hooks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:15:48 -05:00
2b0266b51e feat: scaffold TaskTracker.Web with Vite, React, TypeScript, Tailwind
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:13:49 -05:00
58d57509e5 feat: add EstimatedMinutes field and general PUT update endpoint for tasks
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:10:48 -05:00
e12f78c479 chore: initial commit of TaskTracker project
Existing ASP.NET API with vanilla JS SPA, WindowWatcher, Chrome extension, and MCP server.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-26 22:08:45 -05:00