Commit Graph

78 Commits

Author SHA1 Message Date
gsxdsm
17baebe0fa feat(KB-238): remove "Using" prefix from pace indicator messages
- Remove "Using " prefix from pace calculation messages in usage.ts

- Update message format from "Using X% over/under pace" to "X% over/under pace"

- Update all UsageIndicator tests to match new message format

- Add changeset for patch release of @dustinbyrne/kb
2026-03-30 19:16:48 -07:00
gsxdsm
99f99ca401 feat(KB-227): allow viewing binary files as read-only in file browser
- Remove binary file restrictions from file service backend

- Add visual read-only indicator for binary files in FileBrowserModal

- Add CSS styles for binary file indicators

- Update tests to expect binary files to be readable
2026-03-30 18:55:57 -07:00
gsxdsm
e5499e4aef fix(KB-130): complete Step 1 — repair settings API/load contract
- Strip server-owned fields (githubTokenConfigured) from PUT /settings request
- Add tests for GET /settings and PUT /settings endpoints
- Add tests for fetchSettings and updateSettings in api.ts
2026-03-30 18:43:34 -07:00
gsxdsm
b36244f5a7 feat(KB-086): complete Step 4 — add activity log API endpoints 2026-03-30 18:30:12 -07:00
gsxdsm
1ddd6bc8ae feat(KB-086): complete Step 1 — add ActivityLogEntry types 2026-03-30 18:16:57 -07:00
gsxdsm
bbbb668044 test(KB-215): add pace integration tests for usage indicators
- Add backend tests verifying pace is attached to windows with valid timing data

- Add frontend test verifying UsageIndicator displays pace from backend data

- Test full data flow from backend calculation to UI display
2026-03-30 17:18:18 -07:00
gsxdsm
cf5a98fdf0 feat(KB-104): move file browser from task modal to toolbar
- Add backend API routes and file service for project-scoped file operations
- Create useProjectFileBrowser and useProjectFileEditor hooks with comprehensive tests
- Update FileBrowserModal to support both task and project modes via dualMode prop
- Add Files button to dashboard header toolbar
- Remove Files tab from TaskDetailModal
- Integrate project file browser into main App layout
- Include changeset for @dustinbyrne/kb package
2026-03-30 17:06:50 -07:00
gsxdsm
0ab4f251cf feat(KB-101): add ntfy notification test button in settings
- Add /api/settings/test-ntfy endpoint for sending test notifications
- Add test notification button to SettingsModal when ntfy is enabled
- Display success/error feedback after test notification attempt
- Add comprehensive tests for test notification flow
- Include changeset for patch release
2026-03-30 16:54:01 -07:00
gsxdsm
304506b237 feat(KB-069): add Archive All Done feature
- Add archiveAllDone method to TaskStore with filtering and batch archive
- Add POST /tasks/archive-all-done API endpoint with tests
- Add useTasks hook support and API function for archiveAllDone
- Add Archive All button to done column header in Board UI
- Wire up onArchiveAllDone through Board component hierarchy
2026-03-30 16:50:34 -07:00
gsxdsm
7899345cfa feat(KB-064): add batch GitHub badge status fetching
- Add batch status API types (BatchStatusRequest, BatchStatusResponse, etc.)

- Add batch GitHub client wrappers for efficient PR/issue status fetching

- Create useBatchBadgeFetch hook for coordinated dashboard fetching

- Update Board component to batch fetch badge statuses on mount

- Update TaskCard to merge batch, WebSocket, and task data with freshness comparison

- Add batch status REST endpoint at POST /api/tasks/batch/status
2026-03-30 16:41:24 -07:00
gsxdsm
e03bd1ae38 feat(KB-045): add scheduled tasks automation system
- Add AutomationStore and core automation types for cron-based scheduling
- Implement CronRunner engine for executing scheduled automations
- Add REST API routes for CRUD operations on automations
- Create UI components: ScheduleCard, ScheduleForm, and ScheduledTasksModal
- Integrate scheduled tasks into dashboard App.tsx and CLI dashboard command
- Add comprehensive tests for store, runner, API, and UI components
- Include changeset for the new scheduled tasks feature
2026-03-30 16:27:23 -07:00
gsxdsm
23692e1fa3 fix(KB-186): add pace indicators for Gemini provider
- Add windowDurationMs (24h) to Gemini usage windows for daily rate limits
- Track resetMs in Gemini usage data for pace calculation
- Update applyPaceToWindow to apply pace to any window with timing data
- Fix pace indicators not showing for Gemini provider
2026-03-30 15:52:21 -07:00
gsxdsm
7e1fdfeaf2 feat(KB-152): add Minimax and Zai providers with usage pace indicators
- Add Minimax provider backend with full test coverage
- Add Zai (Zhipu AI) provider backend for additional model options
- Implement pace calculation in UsageWindow with ahead/behind/on-pace detection
- Update UsageIndicator frontend component to consume backend pace data
- Fix pace indicator colors and icons to match design specification
- Resolve ListView QuickEntryBox type error for type safety
2026-03-30 13:45:52 -07:00
gsxdsm
f78f01ac5b feat(KB-137): add GitHub App webhooks for real-time badge updates
- Add verified POST /api/github/webhooks endpoint with signature verification
- Implement GitHub App installation token authentication for API calls
- Add webhook handlers for pull_request, issues, and issue_comment events
- Support multi-task resource matching by parsed badge URL
- Retire live GitHub polling service in favor of push-based updates
- Add comprehensive webhook integration and unit tests
- Keep 5-minute REST refresh endpoints as fallback
2026-03-30 13:37:33 -07:00
gsxdsm
2dbcf2433e feat(KB-136): add shared badge pub/sub for multi-instance deployments
- Add BadgePubSub interface with Redis and in-memory adapters

- Implement cross-instance badge snapshot delivery via Redis pub/sub

- Add message validation, echo loop prevention, and structured caching

- Support graceful fallback to in-memory mode when Redis unavailable

- Update ServerOptions for dependency injection and add documentation
2026-03-30 12:52:07 -07:00
gsxdsm
576ddb07a0 fix(KB-172): fix terminal session leak with activity tracking and stale eviction
- Add session activity tracking (lastActivityAt) to TerminalService
- Implement stale session eviction when approaching session limits
- Fix WebSocket close handler to properly kill PTY sessions on disconnect
- Add lastActivityAt to session listing endpoint for observability
- Add comprehensive tests for activity tracking, eviction, and terminal routes
- Add changeset for patch release
2026-03-30 12:11:12 -07:00
gsxdsm
b372200949 feat(KB-097): clean up type errors and remove obsolete code
- Remove stale changeset files (mobile touch fixes, subtask breakdown)
- Fix type errors in QuickEntryBox and TaskCard components
- Remove obsolete test files (TaskCard.test.tsx, triage.test.ts)
- Fix import issues in planning.ts
- Clean up triage.ts and useAgentLogs.ts
2026-03-30 11:47:37 -07:00
gsxdsm
a06a2cff27 fix(KB-090): improve refinement route validation with trimmed feedback
- Trim whitespace from feedback before length validation
- Catch whitespace-only input at route level before store call
- Update test to verify route-level validation blocks empty feedback
- Use trimmed feedback for store operations and logging
2026-03-30 11:27:06 -07:00
gsxdsm
50cd478f2e feat(KB-129): dashboard performance optimizations
- Fix SSE hook cleanup to prevent memory leaks and stale connections
- Cap agent log memory and optimize batch log processing
- Memoize Board, Column, and TaskCard with custom comparator to reduce re-renders
- Stabilize column task arrays and preserve pagination across live updates
- Add TaskCardBadge component for PR/issue state display
- Remove deprecated GitHub polling code and archive functionality from core store
2026-03-30 11:26:55 -07:00
gsxdsm
753bec19df refactor(KB-067): migrate GitHub issue routes from fetch to gh CLI
- Replace fetch-based GitHub API calls with gh CLI in issues/fetch and issues/import routes
- Update tests to mock gh CLI instead of fetch with proper error handling
- Reduce code complexity by leveraging gh CLI's built-in JSON output
- Add changeset documenting the refactoring work
2026-03-30 11:19:02 -07:00
gsxdsm
e02356b836 feat(KB-066): add batch GitHub import with throttled request handling
- Add fetchThrottled utility to GitHubClient with 429 retry handling and exponential backoff
- Implement POST /api/github/batch-import endpoint for bulk GitHub resource imports
- Add frontend API client function for batch import operations
- Add comprehensive tests for throttled requests and batch import endpoint
- Add retryAfter field to batch import result types for rate limit handling
- Clean up unfinished UsageIndicator component and worktree retry cleanup code
- Add changeset documenting the new batch GitHub import feature
2026-03-30 10:56:33 -07:00
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