Commit Graph

57 Commits

Author SHA1 Message Date
gsxdsm
c12428e996 feat(KB-159): complete Step 4 — update frontend for streaming display 2026-03-30 08:55:07 -07:00
gsxdsm
dbb9791504 feat(KB-159): complete Step 2 — implement planning session SSE infrastructure 2026-03-30 08:49:54 -07:00
gsxdsm
8b4ac5d43e fix(KB-151): lazy-load node-pty to fix packaged binary execution
- Convert static node-pty import to dynamic import in TerminalService\n- Only load native PTY module when terminal session is actually created\n- Fix Bun-compiled binary failures on commands like --help, task list\n- Add changeset documenting the lazy-loading fix
2026-03-30 08:37:31 -07:00
gsxdsm
0e61a45d72 feat(KB-141): fix workspace type resolution and add clean-checkout typecheck tests
- Remove dist-dependent workspace type resolution from all tsconfig files

- Add clean-checkout typecheck regression test to CI suite

- Update package.json type definitions for core, engine, dashboard, and cli packages

- Update README with typecheck testing documentation

- Clean up unused test files and component dependencies
2026-03-30 08:24:16 -07:00
gsxdsm
04711205fb feat(KB-134): remove planning mode checkbox and repair strict typecheck gate
- Remove PlanningModeModal checkbox functionality and related tests
- Delete NewTaskModal.test.tsx and PlanningModeModal.test.tsx
- Repair strict typecheck gate in typecheck.test.ts
- Update engine dependencies (add execa)
- Add development note about strict typecheck to dashboard README
- Clean up App.tsx and NewTaskModal.tsx planning mode code
2026-03-30 08:00:41 -07:00
gsxdsm
bf789f5c41 feat(KB-060): add model selection to task creation
- Extend task creation types, store persistence, and API payloads to accept executor and validator model overrides
- Add inline model selection to the dashboard create card with default normalization, retryable model loading, and focus-safe interactions
- Wire the list-view create flow through InlineCreateCard and style the dropdown to stay usable within the viewport on mobile and desktop
- Add store, route, app, list-view, and inline-create tests covering override submission, partial selections, and inline creation behavior
- Document the new creation-time model selection flow and include a published package changeset
2026-03-30 05:41:30 -07:00
gsxdsm
4e23716b7d feat(KB-063): add realtime GitHub badge updates
- Add a focused GitHub badge poller with shared rate-limit, freshness, and cleanup handling
- Wire a dedicated badge websocket server and routes to stream PR and issue badge snapshots
- Add a shared useBadgeWebSocket hook and update TaskCard to subscribe only when visible while preserving partial badge state
- Cover polling, websocket, and task card flows with tests and document the realtime badge channel
2026-03-30 03:19:51 -07:00
gsxdsm
93cda8fe25 fix(KB-058): resolve API naming conflict and TypeScript errors 2026-03-29 23:35:32 -07:00
gsxdsm
3d5a239060 feat(KB-058): complete Step 7 — add tests for terminal service and hook 2026-03-29 23:34:23 -07:00
gsxdsm
0b58183a5a feat(KB-058): complete Step 3 — add WebSocket terminal routes and REST endpoints 2026-03-29 23:26:41 -07:00
gsxdsm
99bfd4fb8f feat(KB-058): complete Step 2 — create TerminalService with node-pty 2026-03-29 23:25:21 -07:00
gsxdsm
2fc6c0ac19 docs(KB-056): add inline comment explaining GET /models empty array behavior
- Document why /models returns 200 with empty array instead of 404

- Clarify frontend empty state handling expectation
2026-03-29 23:23:00 -07:00
gsxdsm
fd9a1b186a feat(KB-093): add PR-first merge mode with configurable merge strategies
- Add mergeStrategy setting (fast-forward, squash, merge-commit) to config
- Implement PR-first auto-completion flow that monitors PR merge status
- Wire PR monitoring service to detect merge completion and trigger auto-close
- Add PR status UI to dashboard with merge progress indicator
- Update settings modal with merge strategy selector
- Add changeset for PR-first merge mode feature
2026-03-29 23:13:24 -07:00
gsxdsm
f99ae366f7 feat(KB-040): add break-into-subtasks toggle for task creation
- Add breakIntoSubtasks flag to core Task model and persist to store
- Plumb subtask flag through dashboard API routes with validation
- Add subtask toggle UI to inline task creation card
- Update triage agent to handle automatic subtask breakdown when enabled
- Add comprehensive tests for store, API routes, and UI components
- Include changeset for patch release documenting the new feature
2026-03-29 22:23:47 -07:00
gsxdsm
cf1bdda87f feat(KB-088): clear failed status when moving tasks and improve error display
- Fix moveTask to clear status/error/worktree/blockedBy when moving from in-progress to todo/triage
- Add error message display in TaskCard for failed tasks with truncation
- Add prominent error alert in TaskDetailModal for failed tasks
- Refactor usage tracking: move from app/components to dashboard/src/
- Add usage.ts and usage.test.ts for centralized usage tracking
- Remove UsageIndicator and useUsageData from app/ directory
- Update styles.css for error display components
- Update executor tests for error handling
- Add changeset for patch release
2026-03-29 21:48:44 -07:00
gsxdsm
63f530aac3 feat(KB-039): complete Step 2 — frontend API client and hook for usage data 2026-03-29 21:46:09 -07:00
gsxdsm
b3af346345 feat(KB-087): remove Created/Updated columns and clean up usage tracking
- Remove createdAt and updatedAt columns from ListView component
- Update TaskCard to remove date display and related styles
- Update TaskDetailModal to remove date fields
- Update ListView tests to reflect new column layout
- Fix column index in dependencies test after column removal
- Remove unused usage tracking module (usage.ts and usage.test.ts)
- Clean up related CSS styles for date columns
2026-03-29 21:43:56 -07:00
gsxdsm
9dfb851e70 feat(KB-082): complete Step 4 — Display failure in TaskCard 2026-03-29 21:42:54 -07:00
gsxdsm
9f5a171b24 feat(KB-082): complete Step 3 — Clear error on retry 2026-03-29 21:42:10 -07:00
gsxdsm
385739ee2c feat(KB-032): add Planning Mode for AI-assisted task creation
- Add PlanningModeModal component with interactive task planning UI
- Implement backend planning API with /api/planning endpoints
- Add PlanningSession class for managing planning state
- Integrate planning mode into dashboard with header button
- Add comprehensive tests for planning components and API routes
- Include AI agent structure for future planning automation
- Update README with Planning Mode documentation
2026-03-29 21:40:14 -07:00
gsxdsm
a299de8b0d feat(KB-029): add file browser for viewing and editing task files
- Add server-side file service with list, read, and write operations
- Add REST API endpoints for file operations with tests
- Add client-side API functions and React hooks for file browsing
- Create FileBrowser, FileEditor, and FileBrowserModal components
- Add CodeMirror 6 for syntax-highlighted file editing
- Integrate Files tab into TaskDetailModal
- Add comprehensive file browser styles and responsive design
2026-03-29 21:18:21 -07:00
gsxdsm
bfd3343be4 feat(KB-057): add interactive terminal to dashboard
- Add backend terminal API with SSE streaming for real-time output
- Create useTerminal hook with command history and navigation
- Refactor TerminalModal into interactive shell component
- Update App and Header for standalone terminal button
- Add CSS styles for terminal UI (prompts, output, spinner, welcome screen)
- Update tests for new terminal behavior
2026-03-29 21:09:57 -07:00
gsxdsm
1219d63b95 feat(KB-041): add task refine capability across core, API, UI, and CLI
- Add refineTask() to TaskStore with validation for feedback and requirements
- Add POST /tasks/:id/refine API endpoint with tests
- Add refine UI to TaskDetailModal for submitting feedback
- Add kb_task_refine tool to pi extension for AI-driven refinement
- Add 'kb task refine' CLI command for manual task refinement
- Include validation constraints: max 2000 chars feedback, max 5000 chars requirements
2026-03-29 21:05:57 -07:00
gsxdsm
287ce1d6d2 feat(KB-057): complete Step 2 — useTerminal hook with history, SSE streaming, and command execution 2026-03-29 20:57:18 -07:00
gsxdsm
0e26d1df30 feat(KB-052): refactor GitHub integration to use gh CLI
- Create gh-cli utility module with auth detection and command execution
- Refactor GitHubClient to use gh CLI commands with REST API fallback
- Refactor PR Monitor to use gh CLI for PR operations
- Add listIssues() and getIssue() methods to GitHubClient
- Remove in-app GitHubRateLimiter (gh CLI handles rate limiting)
- Update all tests for gh CLI implementation
- Update AGENTS.md and extension docs for gh CLI auth preference
2026-03-29 20:52:07 -07:00
gsxdsm
1d2706351b feat(KB-057): complete Step 0 and 1 — backend API and frontend client for interactive terminal 2026-03-29 20:48:39 -07:00
gsxdsm
b935f310ce feat(KB-022): add GitHub issue status badges to task cards
- Extend core types with GitHub issue tracking fields (issueNumber, issueStatus, lastIssueSync)
- Add TaskStore.getTaskGitHubIssueInfo() to fetch issue details from GitHub API
- Create server-side API endpoint for issue status lookup with caching
- Build GitHubBadge component with color-coded status indicators (open/closed)
- Integrate badges into TaskCard with hover state linking to GitHub issues
- Add CSS styles for badge positioning and visual polish
- Include comprehensive tests for GitHubBadge and TaskCard badge rendering
2026-03-29 20:12:13 -07:00
gsxdsm
37afb24d60 feat(KB-034): add task archive/unarchive functionality
- Add 'archived' column to task store with archiveTask and unarchiveTask methods
- Add CLI commands: kb task archive <id> and kb task unarchive <id>
- Add pi extension tools for archive and unarchive operations
- Add dashboard API endpoints POST /api/tasks/:id/archive and /unarchive
- Add Archived column to board UI with archive/unarchive buttons
- Prevent drag-drop into archived column, add visual distinction
- Include duplicateTask from concurrent branch in merge resolution
2026-03-29 20:03:43 -07:00
gsxdsm
3b71d032a6 feat(KB-048): add collapsible list sections to dashboard
- Add section expansion state management with localStorage persistence
- Update section headers with chevron toggle controls
- Implement conditional task row rendering based on section state
- Add Expand All / Collapse All toolbar controls
- Add CSS styles for chevron rotation animation and section headers
- Add comprehensive tests for collapsible section behavior
2026-03-29 19:51:41 -07:00
Dustin Byrne
b286ee5a2b feat(KB-168): remove legacy public/ directory and server fallback
- Delete public/index.html, public/style.css, and public/board.js legacy assets
- Remove public/ fallback from server.ts clientDir resolution chain
- Simplify clientDir to fall through to client/ instead of public/
- Add no-legacy-public test asserting public/ files and server references are gone
2026-03-28 16:30:23 -04:00
Dustin Byrne
c802108a02 refactor(HAI-116): rename kb to hai across all packages, CLI, and docs
- Rename npm packages from @kb/* to @hai/* and update all workspace references
- Rename CLI binary from kb to hai and config directory from .kb to .hai
- Update dashboard UI branding, titles, and references from kb to hai
- Update all test files, CI workflows, and documentation to reflect new naming
- Run comprehensive grep verification to ensure no stale kb references remain
2026-03-26 22:44:11 -04:00
Dustin Byrne
a8b767d6fc feat(HAI-098): add model selection and configuration support
- Extend Settings type with model provider and model name fields
- Add backend API endpoint to list available models
- Add frontend API client for fetching models
- Add model settings section to SettingsModal with provider/model dropdowns
- Update engine executor to use the selected model from settings
2026-03-26 22:44:11 -04:00
Dustin Byrne
615f31c777 feat(HAI-096): add task pause/unpause functionality
- Add paused field to Task data model and store with pauseTask method
- Update triage, scheduler, and executor to respect paused flag and terminate paused tasks
- Add REST API endpoints and CLI commands for pause/unpause operations
- Add dashboard UI visual indicator and toggle for paused state
- Update README with pause/unpause CLI command documentation
2026-03-26 22:44:11 -04:00
Dustin Byrne
7955897013 feat(HAI-095): add authentication settings UI with backend API
- Add backend auth API endpoints (GET/PUT) with validation in routes.ts
- Create frontend API client functions for fetching and updating auth config
- Add Authentication Settings section to SettingsModal with token input form
- Add comprehensive tests for routes, API client, and SettingsModal components
- Wire up auth settings routes in dashboard server
2026-03-26 19:39:31 -04:00
Dustin Byrne
a12550d625 feat(HAI-088): add @types/node to dashboard and typecheck regression test
- Add @types/node ^22.0.0 to @hai/dashboard devDependencies
- Add typecheck regression test that runs tsc --noEmit --skipLibCheck false
- Update pnpm-lock.yaml with resolved dependencies
2026-03-26 01:00:50 -04:00
Dustin Byrne
20264a854d feat(HAI-072): add agent log viewer with persistence, streaming, and UI
- Add agent log persistence layer with JSONL append/read and event emission in core store
- Add server-side SSE log streaming endpoint and REST route for fetching logs
- Create AgentLogViewer component and useAgentLogs hook for real-time log display
- Integrate log viewer into TaskDetailModal
- Fix pre-existing build and test errors
2026-03-26 00:36:48 -04:00
Dustin Byrne
fbecff7255 feat(HAI-071): add Bun single-binary compile support for CLI
- Create build script (packages/cli/build.ts) using Bun.build compile target
- Update asset resolution in dashboard server for bundled context
- Add npm scripts to wire up the build process
- Add build-exe tests to verify compiled binary output
- Fix pre-existing build errors in engine and core packages
- Document build and compile workflow in README
2026-03-26 00:32:57 -04:00
Dustin Byrne
efda541713 feat(HAI-057): add task dependency editing to dashboard UI
- Add dependencies field support to store updateTask method
- Wire dependencies through PATCH route and client API
- Add dependency editing UI (add/remove) to TaskDetailModal
- Pass tasks prop from App to TaskDetailModal for dependency picker
- Add tests for dependency CRUD in modal and API layer
2026-03-26 00:15:29 -04:00
Dustin Byrne
35177f448f feat(HAI-055): add failed task status handling with retry support
- Set task status to 'failed' on execution failure in engine executor
- Add failed indicator styling on TaskCard component
- Add POST /tasks/:id/retry API endpoint and client function
- Add retry button in TaskDetailModal for failed tasks
- Add tests for failed indicator, retry endpoint, and modal behavior
2026-03-25 23:50:11 -04:00
Dustin Byrne
507c0d6b67 feat(HAI-023): complete Step 2 — dashboard API upload/download/delete routes 2026-03-25 22:00:51 -04:00
Dustin Byrne
d452aeb0c1 fix(HAI-018): complete Step 1 — fix server-side error handling in GET /tasks/:id
- Route now returns 404 only for ENOENT, 500 for transient errors
- store.getTask() retries once after 50ms on non-ENOENT failures
- Added route tests for success, 404, and 500 cases
- Updated vitest config to include src/**/*.test.* files
2026-03-25 21:30:18 -04:00
Dustin Byrne
7f3cf51c19 fix(HAI-005): fix pre-existing build errors in types, executor, and dashboard server 2026-03-25 20:41:06 -04:00
Dustin Byrne
0e18987a70 feat(HAI-001): add API rate limiting and replace emojis with Lucide icons
- Add rate limiting middleware to dashboard API endpoints
- Install lucide-react and replace emoji usage with Lucide icons across dashboard components
- Add rate limiter unit tests
- Document API rate limiting in README
- Refactor engine executor/triage and remove unused reviewer module
2026-03-25 20:33:37 -04:00
Dustin Byrne
6fbf3519b5 feat(HAI-002): add maxWorktrees setting to limit total git worktrees
- Add maxWorktrees field to Settings interface with default of 4
- Enforce worktree limit in Scheduler.schedule() alongside maxConcurrent
- Wire setting through dashboard startup from persisted settings
- Include maxWorktrees in /api/config response
- Add Max Worktrees input to Settings Modal UI
- Backward compatible: existing configs without maxWorktrees use default
2026-03-25 20:32:07 -04:00
Dustin Byrne
669dc3d1da test(HAI-001): add rate limiter unit tests 2026-03-25 20:15:51 -04:00
Dustin Byrne
a1397d9eb7 feat(HAI-001): add rate limiting middleware to API endpoints 2026-03-25 20:15:11 -04:00
Dustin Byrne
e112a6bad1 feat(HAI-004): add GET/PUT /settings REST API endpoints 2026-03-25 20:02:50 -04:00
Dustin Byrne
8e84832505 feat(HAI-001): make task title optional and description required
- Make Task.title optional and description required in types and TaskCreateInput
- Update CLI task create to prompt for description instead of title, with updated help text
- Update REST API and dashboard CreateTaskModal to require description instead of title
- Handle optional/missing title across TaskCard, TaskDetailModal, and engine components
- Add description validation in TaskStore and update generateSpecifiedPrompt
2026-03-25 19:16:20 -04:00
Dustin Byrne
87f9cee792 revert: drop vite middleware, add watch build instead 2026-03-25 19:08:04 -04:00
Dustin Byrne
4a7a9041c1 feat: vite dev server with HMR for dashboard 2026-03-25 19:06:14 -04:00