Commit Graph

62 Commits

Author SHA1 Message Date
8407dde30b fix: comprehensive init-tables.sql for all new tables (todos, security_audits, daily_summaries, task_comments)
All checks were successful
CI/CD / test (push) Successful in 19s
CI/CD / deploy (push) Successful in 1s
2026-01-30 05:06:52 +00:00
cbfeb6db70 Add debug endpoint for todos DB diagnostics
All checks were successful
CI/CD / test (push) Successful in 23s
CI/CD / deploy (push) Successful in 2s
2026-01-30 05:02:06 +00:00
fd823e2d75 Add SQL init fallback for todos table creation
All checks were successful
CI/CD / test (push) Successful in 16s
CI/CD / deploy (push) Successful in 2s
2026-01-30 04:59:17 +00:00
602e1ed75b fix: force db:push with yes pipe + add error logging to summaries
All checks were successful
CI/CD / test (push) Successful in 16s
CI/CD / deploy (push) Successful in 2s
2026-01-30 04:48:22 +00:00
fe18fc12f9 feat: add security audit seed data with real findings from code review
All checks were successful
CI/CD / test (push) Successful in 18s
CI/CD / deploy (push) Successful in 1s
- Added seed-security.ts with comprehensive audit data for all 5 projects
- Real findings from actual code inspection: auth, CORS, rate limiting,
  error handling, dependencies, TLS certs, infrastructure
- 35 audit entries across Hammer Dashboard, Network App, Todo App, nKode,
  and Infrastructure
- Fixed unused deleteAudit import warning in SecurityPage
2026-01-30 04:45:52 +00:00
dd2c80224e feat: add personal todos feature
All checks were successful
CI/CD / test (push) Successful in 16s
CI/CD / deploy (push) Successful in 1s
- New todos table in DB schema (title, description, priority, category, due date, completion)
- Full CRUD + toggle API routes at /api/todos
- Categories support with filtering
- Bulk import endpoint for migration
- New TodosPage with inline editing, priority badges, due date display
- Add Todos to sidebar navigation
- Dark mode support throughout
2026-01-30 04:44:34 +00:00
d5693a7624 feat: add daily summaries feature
All checks were successful
CI/CD / test (push) Successful in 19s
CI/CD / deploy (push) Successful in 2s
- Backend: daily_summaries table, API routes (GET/POST/PATCH) at /api/summaries
- Frontend: SummariesPage with calendar view, markdown rendering, stats bar, highlights
- Sidebar nav: added Summaries link between Activity and Chat
- Data population script for importing from memory files
- Bearer token + session auth support
2026-01-30 04:42:10 +00:00
b5066a0d33 feat: remove chat section from dashboard
Some checks failed
CI/CD / test (push) Failing after 16s
CI/CD / deploy (push) Has been skipped
- Remove Chat from sidebar navigation
- Remove /chat route from App.tsx
- Delete ChatPage component, gateway.ts client lib
- Delete backend chat routes and gateway-relay WebSocket code
- No other features depended on removed code
2026-01-30 04:40:51 +00:00
504215439e feat: unified activity feed with comments + progress notes
All checks were successful
CI/CD / test (push) Successful in 17s
CI/CD / deploy (push) Successful in 3s
- New /api/activity endpoint returning combined timeline of progress notes
  and comments across all tasks, sorted chronologically
- Activity page now fetches from unified endpoint instead of extracting
  from task data client-side
- Type filter (progress/comment) and status filter on Activity page
- Comment entries show author avatars and type badges
- 30s auto-refresh on activity feed
2026-01-30 00:06:41 +00:00
b7ff8437e4 feat: task comments/discussion system
All checks were successful
CI/CD / test (push) Successful in 18s
CI/CD / deploy (push) Successful in 2s
- New task_comments table (separate from progress notes)
- Backend: GET/POST/DELETE /api/tasks/:id/comments with session + bearer auth
- TaskComments component on TaskPage (full-page view) with markdown support,
  author avatars, delete own comments, 30s polling
- CompactComments in TaskDetailPanel (side panel) with last 3 + expand
- Comment API functions in frontend lib/api.ts
2026-01-30 00:04:38 +00:00
46002e0854 ci: trigger pipeline with secrets configured
All checks were successful
CI/CD / test (push) Successful in 25s
CI/CD / deploy (push) Successful in 2s
2026-01-29 23:12:56 +00:00
d01a155c95 fix: single-line curl in deploy step (act runner escaping issue)
Some checks failed
CI/CD / test (push) Successful in 17s
CI/CD / deploy (push) Failing after 2s
2026-01-29 23:08:40 +00:00
b8e490f635 feat: add deploy-to-Dokploy step in CI/CD pipeline
Some checks failed
CI/CD / test (push) Successful in 19s
CI/CD / deploy (push) Failing after 1s
- Deploy job runs after tests pass, only on push to main
- Uses Dokploy compose.deploy API with secrets for URL, token, compose ID
- PRs only run tests (no deploy)
2026-01-29 22:54:46 +00:00
268ee5d0b2 feat: add unit tests and Gitea Actions CI pipeline
All checks were successful
CI / test-backend (push) Successful in 1m42s
- Extract pure utility functions to lib/utils.ts for testability
- Add 28 unit tests covering: computeNextDueDate, resetSubtasks,
  parseTaskIdentifier, validators, statusSortOrder
- Add Gitea Actions workflow (.gitea/workflows/ci.yml) that runs
  tests and type checking on push/PR to main
- Refactor tasks.ts to use extracted utils
2026-01-29 22:42:59 +00:00
96441b818e feat: recurring tasks - auto-spawn next instance on completion
- Added recurrence field (daily/weekly/biweekly/monthly) to tasks schema
- Backend: auto-creates next task instance when recurring task completed
  - Copies title, description, assignee, project, tags, subtasks (unchecked)
  - Computes next due date based on frequency
  - Optional autoActivate to immediately activate next instance
- Frontend: recurrence picker in CreateTaskModal and TaskDetailPanel
- Recurrence badges (🔄) on TaskCard, KanbanBoard, TaskPage, DashboardPage
- Schema uses JSONB column (no migration needed, db:push on deploy)
2026-01-29 12:05:13 +00:00
dd401290c1 feat: task time estimates and velocity chart on dashboard
- Added estimatedHours column to tasks schema
- Backend: create/update support for estimatedHours
- New /api/tasks/stats/velocity endpoint: daily completions, weekly velocity, estimate totals
- Dashboard: velocity chart with 7-day bar chart, this week count, avg/week, estimate summary
- TaskDetailPanel: estimated hours input field
- CreateTaskModal: estimated hours in advanced options
- TaskCard, KanbanBoard, TaskPage: estimate badge display
2026-01-29 11:35:50 +00:00
6459734bc7 feat: command palette (Ctrl+K) and sidebar notification badges
- Command palette: Ctrl+K opens global task search with arrow key navigation
- Shows active/recent tasks when empty, filters on type
- Enter to open task detail page, Esc to close
- Sidebar: active task count badge (amber) and blocked count (red) on Queue nav
- Updated keyboard shortcuts modal with Ctrl+K
2026-01-29 11:08:02 +00:00
9279956e33 feat: keyboard shortcuts help modal (press ? to toggle) 2026-01-29 11:06:30 +00:00
bfa6c87fce feat: add tags display to TaskPage header and sidebar 2026-01-29 11:05:33 +00:00
e9c0763025 feat: task tags, sort controls, and tag filtering
- Added tags (JSONB array) to tasks schema with full CRUD support
- Tag editor in TaskDetailPanel with chip UI, Enter/comma to add, Backspace to remove
- Tag badges on TaskCard, KanbanBoard cards, and DashboardPage
- Sort controls on QueuePage: sort by priority, due date, created, updated, name
- Sort direction toggle (asc/desc) with persistence to localStorage
- Tag filter dropdown in QueuePage header (populated from existing tags)
- Search now matches tags
- Backend: tags in create/update, progressNotes in PATCH body
2026-01-29 11:04:39 +00:00
f4c60bf6aa feat: dark mode support, markdown descriptions, inline editing on TaskPage
- Full dark mode across TaskPage (header, cards, sidebar, forms)
- Task descriptions rendered as markdown (ReactMarkdown + remark-gfm)
- Inline description editing with markdown preview
- Inline title editing (click to edit)
- Theme system (useTheme hook with light/dark/system toggle)
- Dark mode classes across remaining components
2026-01-29 10:33:38 +00:00
ef35e508c4 feat: kanban board view with drag-and-drop status changes
- New KanbanBoard component with 4 columns: Active, Queued, Blocked, Done
- HTML5 drag-and-drop to move tasks between status columns
- Visual drop zone highlighting and drag state
- Task cards show priority, project, assignee, due date, subtask progress
- View toggle (list/board) in Queue page header, persisted to localStorage
- Status filter hidden in board mode (columns serve as visual filter)
- Cards link to task detail pages, click opens detail panel
2026-01-29 09:33:59 +00:00
8c284684c9 feat: code splitting, activity log page, gateway session browser in chat
- Lazy-load all route pages (React.lazy + Suspense) - main bundle 520KB → 266KB
- New Activity Log page (/activity) with timeline view, day grouping, status filter
- Chat: gateway session browser - browse existing Clawdbot sessions from sidebar
- Chat: clicking a gateway session adds it as a local thread for conversation
- Sidebar: added Activity nav item between Projects and Chat
2026-01-29 09:03:36 +00:00
819649c8c7 fix: chat WS relay URL + chat UX improvements
- Fix docker-compose to read GATEWAY_WS_URL (was VITE_WS_URL, never set)
- Fix gateway-relay.ts default to ws.hammer.donovankelly.xyz
- Fix Elysia TS errors in error handlers (cast to any)
- Add thinking/typing indicator in chat (bouncing dots)
- Add message timestamps (tap to show)
- Add thread renaming (double-click thread name)
- Auto-resize chat input textarea
2026-01-29 08:34:45 +00:00
0f084704ee feat: clickable links on dashboard, priority badges on up-next
- Up Next items link to task detail pages
- Recently Completed items are now clickable links
- High/critical priority badges shown on Up Next items
- Hover states on dashboard items
2026-01-29 08:06:37 +00:00
24c9539c00 feat: assignee picker in task detail panel
- Quick-assign buttons for Hammer/Donovan/David
- Assignee tracked in save/cancel/dirty detection
- Shows custom assignee names if set by API
2026-01-29 08:05:17 +00:00
f00e0720e1 feat: enhanced create modal, project/assignee badges, status filter, keyboard shortcuts
- CreateTaskModal: project selector, due date picker, source in 'more options'
- TaskCard: project name badge (📁) and assignee badge (👤)
- QueuePage: status filter dropdown, clear filters button, filter count indicator
- QueuePage: Ctrl+N keyboard shortcut to create task
- DashboardPage: project/assignee badges on active task cards
- Search now also matches assignee name
2026-01-29 08:03:47 +00:00
578b092a78 feat: toast notifications, delete task, due date badges on cards, keyboard shortcuts 2026-01-29 07:33:05 +00:00
e874cafbec feat: due dates, subtasks, and task detail page (HQ-{number} URLs)
- Schema: added due_date and subtasks JSONB columns to tasks
- API: CRUD endpoints for subtasks (/tasks/:id/subtasks)
- API: due date support in create/update task
- TaskDetailPanel: due date picker with overdue/soon badges
- TaskDetailPanel: subtask checklist with progress bar
- TaskPage: full-page task view at /task/HQ-{number}
- Dashboard: task cards link to detail page, show subtask progress & due date badges
- Migration: 0001_mighty_callisto.sql
2026-01-29 07:06:59 +00:00
f2b477c03d fix(relay): proper gateway protocol handshake with role/scopes/ticks
- Add role: operator, scopes: [operator.read, operator.write]
- Handle connect.challenge event from gateway
- Add tick keepalive (gateway expects periodic ticks)
- Fix duplicate message listener bug
- Fix default URL fallback (remove non-existent ws. subdomain)
2026-01-29 06:38:23 +00:00
bf3aa18f8e fix: use ws.hammer.donovankelly.xyz for gateway relay WSS
- Backend relay defaults to wss://ws.hammer.donovankelly.xyz
- Dokploy env updated: GATEWAY_WS_URL, GATEWAY_WS_TOKEN
- Caddy: ws.hammer subdomain proxies WSS to gateway
2026-01-29 06:37:29 +00:00
8bb8011eeb feat(chat): add markdown rendering, fix gateway WS env vars
- Add react-markdown + remark-gfm for rich message rendering
- Assistant messages now render markdown (code blocks, lists, links, etc.)
- User messages stay as plain text
- Fix docker-compose to map GATEWAY_WS_URL from VITE_WS_URL
- Added GATEWAY_WS_TOKEN to Dokploy env vars
2026-01-29 06:36:14 +00:00
c4368072bf feat: dashboard overview page with stats, activity, and up-next (HQ-21)
- New Dashboard page: task stats grid, active tasks, up-next queue, recent activity, recently completed
- Dashboard is now the home page (/)
- Sidebar: Dashboard → Queue → Projects → Chat
- Queue page defaults redirect to / instead of /queue
2026-01-29 06:07:21 +00:00
6ae9ea8b43 fix: gateway-relay falls back to VITE_WS_TOKEN env var 2026-01-29 06:05:55 +00:00
5cfde2f2e7 feat: progress notes UI, search/filter, chat backend relay (HQ-21)
- Add progress note input to TaskDetailPanel (textarea + Cmd+Enter submit)
- Add addProgressNote API function
- Add search bar and priority filter to Queue page
- Include chat backend: WebSocket relay (gateway-relay.ts), chat routes (chat.ts)
- Chat frontend updated to connect via backend relay (/api/chat/ws)
2026-01-29 06:05:03 +00:00
b0559cdbc8 feat: projects with context - schema, API, frontend page, task assignment (HQ-17, HQ-21) 2026-01-29 05:05:20 +00:00
8685548206 Mobile-responsive: task cards, detail panel, sticky header
- TaskCard: hide action buttons on mobile (tap to open detail panel), smaller text/badges, word-break titles
- TaskDetailPanel: full-screen on mobile with Back button, responsive padding, stacked timeline, hidden UUID on small screens
- QueuePage: sticky header offset for mobile nav bar (top-14)
- Priority/source grid stacks vertically on mobile
2026-01-29 04:32:46 +00:00
46ada23bcb fix: webhook message references dash.donovankelly.xyz (HQ-20)
- Updated webhook notification message to use dash domain
- Caddy now proxies /hooks/* to gateway, blocks all other paths
- Control UI no longer exposed publicly
2026-01-29 03:59:29 +00:00
e3ea7a204d feat: add assigneeId/assigneeName to tasks schema and API
- Added assignee_id and assignee_name columns to tasks table
- PATCH /api/tasks/:id now accepts assigneeId and assigneeName
- db:push on startup will auto-migrate the columns
2026-01-29 03:56:38 +00:00
69623da5d6 feat: mobile-friendly responsive layout (HQ-21)
- Collapsible hamburger sidebar on mobile
- Mobile header bar with menu toggle
- Thread list as overlay on mobile, sidebar on desktop
- Responsive padding and font sizes
- Task queue header responsive adjustments
2026-01-29 03:47:50 +00:00
41e7fe6b54 fix: build errors - TS unused var and useEffect return type 2026-01-29 03:40:23 +00:00
a765bf74b1 fix: use hammer.donovankelly.xyz for all gateway access (HQ-21)
- Single domain for hooks + WebSocket (path-based routing)
- No need for ws.hammer or hooks.hammer subdomains
- Caddy proxies everything to gateway on this VPS
2026-01-29 02:55:36 +00:00
ddaeb0c282 feat: chat interface with gateway WebSocket integration (HQ-21)
- GatewayClient class: WS connection, auto-reconnect, request/response, events
- ChatPage with thread list sidebar + message area
- Real-time streaming responses via chat events
- Thread management with localStorage persistence
- Message bubbles with user/assistant/system styles
- Build args for VITE_WS_URL and VITE_WS_TOKEN
- SPA routing already supported by nginx config
2026-01-29 02:19:55 +00:00
91bc69e178 feat: Hammer Dashboard with sidebar navigation (HQ-21)
- Add React Router with sidebar layout (DashboardLayout)
- Queue is now a routed page at /queue
- Chat placeholder page at /chat
- Admin page accessible from sidebar
- Dark sidebar with amber accent for active nav
- Updated CORS and auth to support dash.donovankelly.xyz
- Renamed to Hammer Dashboard
2026-01-29 02:14:25 +00:00
5c2e372ed2 fix: use hooks.hammer.donovankelly.xyz for webhook (HQ-20) 2026-01-29 02:09:41 +00:00
a73a410099 fix: enforce HTTPS for webhook, no hardcoded defaults (HQ-20)
- Webhook URL must be set via env var (no fallback)
- Webhook URL must start with https:// or it's rejected
- Both URL and token required, skip silently if missing
2026-01-29 02:05:55 +00:00
40c277c41a fix: use HTTPS for webhook URL (HQ-20)
- Default to https://hooks.donovankelly.xyz/hooks/agent
- Remove hardcoded token from compose defaults
- Token must be set via CLAWDBOT_HOOK_TOKEN env var in Dokploy
2026-01-29 02:05:25 +00:00
b27a55eb91 fix: webhook defaults for cross-server deployment (HQ-20)
- Default CLAWDBOT_HOOK_URL to VPS hook-proxy (72.60.68.214:18790)
- Add default CLAWDBOT_HOOK_TOKEN in compose for Dokploy deploys
- Add extra_hosts for host.docker.internal resolution
- Queue backend on remote server can now reach Clawdbot gateway
2026-01-29 02:03:47 +00:00
f1a314c60d feat: save/cancel buttons for task editing (HQ-19)
- EditableText now updates draft state instead of saving immediately
- Panel tracks dirty state across title, description, priority, source
- Save/Cancel bar slides up when any field is modified
- Cancel reverts all changes, Save commits them in one API call
- Slide-up animation for the save/cancel bar
2026-01-29 01:49:31 +00:00
93746f0f71 feat: session-based auth, admin roles, user management
- All logged-in users can create/edit/manage tasks (no bearer token needed)
- Added user role system (user/admin)
- Donovan's account auto-promoted to admin on startup
- Admin page: view users, change roles, delete users
- /api/me endpoint returns current user info + role
- /api/admin/* routes (admin-only)
- Removed bearer token UI from frontend
- Bearer token still works for API/bot access
2026-01-29 01:33:18 +00:00