Commit Graph

90 Commits

Author SHA1 Message Date
Fusion
96aeb67a4f feat(FN-2014): merge fusion/fn-2014 2026-04-17 14:31:43 -07:00
gsxdsm
a118333c7b feat(FN-1926): merge fusion/fn-1926 2026-04-16 10:23:07 -07:00
gsxdsm
66dafb0e96 feat(FN-1777): merge fusion/fn-1777 2026-04-14 12:45:01 -07:00
gsxdsm
102af7f4f2 feat(FN-1747): merge fusion/fn-1747 2026-04-14 11:43:52 -07:00
gsxdsm
8c798952c4 feat(FN-1746): merge fusion/fn-1746 2026-04-14 10:58:57 -07:00
gsxdsm
26732e7e43 feat(FN-1719): rebuild eslint baseline and add memory lessons
- Rebuild eslint config with context-aware flat config for better TypeScript/JSX handling
- Add memory lessons for lint/type/test baseline restoration
- Skip pre-existing flaky stream test (flushes a final complete event)
- Fix api.ts require import path
- Add ProjectEngineManager.startReconciliation mock to tests for main compatibility
2026-04-13 18:21:31 -07:00
gsxdsm
65c15c56b6 feat(FN-1624): add delete button to TaskCard for triage column
- Add delete button component to TaskCard for tasks in the triage column
- Thread onDeleteTask prop through App → Board → Column → TaskCard
- Add CSS styles for delete button with hover/active states
- Add comprehensive tests for delete button visibility and click handling
- Hide delete button for non-triage columns (todo, in-progress, etc.)
2026-04-13 00:21:25 -07:00
gsxdsm
8f0bcf7f00 feat(FN-1465): merge fusion/fn-1465 2026-04-12 07:00:49 -07:00
gsxdsm
98dc20b3d3 feat(FN-1584): add step-change dependency and polling to useTaskDiffStats
- Add step-based dependency to useTaskDiffStats hook to trigger refetch when task steps change
- Implement 5-second polling interval for live diff statistics updates
- Add comprehensive test coverage for polling behavior and step-change detection
- Update TaskCard to pass step information to useTaskDiffStats
- Add TaskCard unit tests for diff statistics display
2026-04-11 11:27:32 -07:00
gsxdsm
b40c9b5406 feat(FN-1433): wire prompt overrides into mission interview service
- Import resolvePrompt and PromptOverrideMap from @fusion/core
- Add promptOverrides parameter to all agent creation paths:
  - createMissionInterviewSession
  - submitMissionInterviewResponse
  - retryMissionInterviewSession
  - initializeAgent
  - createMissionInterviewAgent
  - ensureMissionInterviewAgent
- Use resolvePrompt('planning-system', promptOverrides) for effective prompt
- Fall back to MISSION_INTERVIEW_SYSTEM_PROMPT when override absent
- Update module docs to reflect prompt override behavior
2026-04-11 08:52:39 -07:00
gsxdsm
34b2af26a7 Fix task card step progress 2026-04-10 21:46:06 -07:00
gsxdsm
2713616c7d feat(FN-1559): recover orphaned features in autopilot reconciliation
- Add tryRelinkOrphanedFeature() to find and link matching tasks
- Normalize titles (trim, lowercase, collapse whitespace) for matching
- Only relink when exactly one task matches (ambiguous = no action)
- Sync feature status from task state on successful relink
- Normalize to 'defined' when no safe relink exists
- Add 7 tests for orphaned feature relink scenarios
- All 57 tests passing
2026-04-10 19:14:23 -07:00
gsxdsm
9d5b0865b8 feat(FN-1544): add viewport-gated loading and lightweight memo comparison
- Add viewport-gated fetching to TaskCard component so only visible cards load their data
- Implement lightweight memo comparison to prevent unnecessary re-renders
- Add lazy enable gates to useSessionFiles and useTaskDiffStats hooks with caching
- Add comprehensive tests for useSessionFiles and useTaskDiffStats hooks
- Document viewport-gated loading patterns in memory and dashboard-load performance docs
2026-04-10 10:44:48 -07:00
gsxdsm
a54b0fa27f fix(FN-1374): truncate mission labels on task cards
- Add truncation logic for mission labels exceeding max length in TaskCard component
- Add CSS text-overflow styles for mission label ellipsis display
- Add unit tests for mission label truncation behavior
2026-04-09 22:55:24 -07:00
gsxdsm
7ab96cc876 feat(FN-1381): add Send Back dropdown for in-progress tasks
- Add Send Back dropdown to TaskCard showing for in-progress tasks with available target columns
- Thread onMoveTask prop through Column component to BoardView
- Terminate agent sessions when tasks move away from in-progress column
- Add executor tests for move-away session termination
- Add TaskCard send-back UI tests with dropdown visibility and interaction verification
2026-04-09 13:00:37 -07:00
gsxdsm
48ece0a265 feat(FN-1328): enable optimistic task detail modal opening
- Update useModalManager to accept Task objects for immediate modal display before full detail loads
- Refactor TaskDetailModal to render with basic Task data and load TaskDetail asynchronously
- Update TaskCard click handlers to open modal immediately with optimistic data
- Update ListView click handler for same optimistic opening behavior
- Update AppModals types to support Task | TaskDetail union
- Add CSS for modal loading/skeleton states
- Add comprehensive tests for TaskDetailModal and useModalManager optimistic flow
- Simplify TaskCard and ListView tests to reflect new optimistic opening pattern
2026-04-08 22:21:24 -07:00
gsxdsm
786c9309e1 feat(FN-1297): prevent mobile detail open from control taps
- Broaden TaskCard touch target detection from HTMLElement to Element so nested SVG targets are treated as interactive
- Keep mobile tap handling from opening task details when pressing card controls
- Add board-mobile regressions for edit button taps, steps toggle taps, and SVG-inside-button touch events
2026-04-08 12:10:16 -07:00
gsxdsm
3ab9da6f7f feat(FN-1098): add dashboard task-agent assignment flow
- Add task-agent assignment API helpers with coverage for assign, unassign, and list endpoints
- Show assigned agent badges on task cards and add assignment controls in TaskDetailModal
- Add agent task management tab plus agent selectors in quick and inline task creation UIs
- Expand component test coverage and include a changeset for the dashboard agent assignment feature
2026-04-08 03:19:09 -07:00
gsxdsm
91672f3004 feat(FN-1032): replace hardcoded colors with CSS custom properties across dashboard components
- Add CSS custom properties and modifier classes for all status colors (open, closed, merged, draft, review, in-progress, etc.)
- Remove hardcoded hex colors from GitHubBadge, replace with CSS classes
- Remove hardcoded colors from PrSection, use CSS classes and Lucide icons
- Remove COLUMN_COLOR_MAP and inline styles from TaskCard, use CSS classes
- Add theme-safety regression tests ensuring components never use inline color styles
- Update existing GitHubBadge and TaskCard tests for class-based styling
2026-04-06 15:37:45 -07:00
gsxdsm
9c4c6c06a0 fix(FN-1007): fix singular/plural for file count on task cards
- Fix file count label to show singular 'file' when count is 1 and plural 'files' otherwise
- Add comprehensive tests for TaskCard file count display
- Test edge cases: zero files, single file, multiple files, and missing attachments
2026-04-05 19:35:53 -07:00
gsxdsm
f8be9765ba feat(FN-1005): add mission title caching, abbreviation, and display on TaskCard
- Add mission title abbreviation utility (truncate long titles with ellipsis)
- Add mission title caching to avoid repeated lookups per render
- Display abbreviated mission title as a badge on TaskCard component
- Add comprehensive tests for mission title display, caching, and edge cases
2026-04-05 19:19:19 -07:00
gsxdsm
64dbbdd5ba feat(FN-970): add mission badge to TaskCard with navigation to MissionManager
- Add mission badge UI to TaskCard showing linked mission name with colored indicator
- Wire up onOpenMission prop through App → Board → Column → WorktreeGroup → TaskCard
- Add CSS styles for mission badge with hover and click states
- Update MissionManager with openMission callback support for navigation from cards
- Add comprehensive tests for mission badge rendering, click behavior, and edge cases
2026-04-05 12:03:50 -07:00
gsxdsm
6ce2b7eaff feat(FN-950): add useTaskDiffStats hook for consistent done file count in TaskCard
- Create useTaskDiffStats hook to extract and compute diff stats from task data
- Use hook in TaskCard component for consistent done file count display
- Add diffStats priority tests ensuring diff stats take precedence over steps
- Add useTaskDiffStats mock and comprehensive unit tests for the hook
2026-04-04 20:18:35 -07:00
gsxdsm
ad68e66105 fix(FN-882): show file changes on done cards using modifiedFiles fallback
Done-column task cards failed to show file changes when mergeDetails was
missing (e.g. tasks moved to done without the merge flow). The executor
already captures modifiedFiles but TaskCard never read it. Add
modifiedFiles.length as a fallback between mergeDetails.filesChanged and
the worktree-based session files check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-04 19:52:25 -07:00
gsxdsm
5f6f3ccf98 feat(FN-947): show files-changed on done column task cards
- Extend useSessionFiles hook to fetch files for done column tasks
- Update TaskCard to display files-changed indicator on done column cards
- Add tests for useSessionFiles done column support
- Add tests for TaskCard files-changed display in done column
2026-04-04 18:54:13 -07:00
gsxdsm
c16c8b9965 feat(FN-900): replace ChangedFilesModal with files tab in TaskDetailModal
- Add initialTab prop to TaskDetailModal to open directly on a specific tab
- Replace onOpenFilesForTask with onOpenDetailWithTab across App, Board, Column, WorktreeGroup
- Update TaskCard click handlers to open detail modal with files tab instead of separate modal
- Delete ChangedFilesModal component and useChangedFiles hook (296 + 78 lines removed)
- Remove associated tests (ChangedFilesModal.test.tsx, useChangedFiles.test.ts)
- Add changeset for patch release
2026-04-04 17:26:51 -07:00
gsxdsm
039633ab9e feat(FN-822): add visible stuck indicators on board and list with unified detection
- Unify stuck-task derivation using project settings (taskStuckTimeoutMs) instead of hardcoded values
- Thread taskStuckTimeoutMs through Board, Column, WorktreeGroup, and TaskCard components
- Add visual stuck indicator with pulsing animation on in-progress task cards
- Resolve merge conflicts with isSearchActive prop from main (both props coexist)
- Add taskStuck utility unit tests and update README with stuck indicator docs
2026-04-04 11:31:22 -07:00
gsxdsm
5e18ca1b0e fix: unify diff endpoints and show changed files on done task cards
- Server /tasks/:id/diff and /tasks/:id/file-diffs now both use
  resolveDiffBase() for consistent file lists across card and modal
- Both endpoints handle done tasks via mergeDetails.commitSha,
  returning structured { files, stats } from the merge commit
- TaskChangesTab uses fetchTaskDiff for all columns (no more
  fetchCommitDiff/parsePatch client-side path for done tasks)
- useChangedFiles hook simplified — server handles done tasks
- Done task cards show "N files changed" button using mergeDetails
- Updated tests for new unified data flow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 08:55:46 -07:00
gsxdsm
d3a3cc71d6 fix: use merge-base for diffStat in merger and show files changed on done task cards
The merger was using `git diff HEAD..branch --stat` which includes
artifacts from other tasks when branches fork from older main commits.
Switch to `git diff $(merge-base)..branch --stat` so commit messages
only describe the branch's own changes.

Also surface the "files changed" button on done task cards using
mergeDetails, opening the same ChangedFilesModal with commit-backed
diffs (matching the Changes tab in the task modal).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 08:33:53 -07:00
gsxdsm
0f02334ed9 refactor(FN-851): remove expand control from TaskCard component
- Remove expand/collapse toggle and related state from TaskCard component
- Delete expand-related CSS styles from styles.css
- Remove expand control tests from TaskCard test suite
- Clean up unused expand-related props and handlers
2026-04-04 05:37:51 -07:00
gsxdsm
2c861e3f75 feat(FN-814): add awaiting-approval board highlight with distinct visuals
- Add amber/orange highlight styling for tasks with awaiting-approval status on the board
- Update TaskCard component to render awaiting-approval status badge and border styling
- Add comprehensive unit tests for awaiting-approval card rendering scenarios
- Document awaiting-approval board highlight behavior in README
2026-04-03 23:21:06 -07:00
gsxdsm
16e8feebd3 feat(FN-817): add expand button and swipe-friendly touch behavior for board cards
- Add expand button to TaskCard for opening task detail modal on mobile
- Implement CSS scroll-snap on board columns for swipe-friendly navigation
- Add touch-action and overscroll-behavior styles for smoother mobile scrolling
- Add comprehensive tests for mobile scroll snap behavior and expand button
- Document expand button and swipe-friendly board behavior in README
2026-04-03 22:40:00 -07:00
gsxdsm
18335ab2a5 feat(FN-779): make inline editor taller with 4-row default and mount-time resize
- Increase inline editor textarea default rows from 1 to 4 for better multi-line editing
- Add mount-time auto-resize to fit content on initial render
- Add regression tests for taller inline editor behavior
- Update documentation to reflect the new taller editor defaults
2026-04-03 11:23:53 -07:00
gsxdsm
5148d4670b refactor(FN-761): make card inline editing description-only and remove terminal features
- Simplify TaskCard inline editing to support description-only editing
- Remove terminal/PTY features: useTerminal hook, TerminalModal, xterm integration
- Remove project store resolver caching and session file route handling
- Simplify executor worktree pool and remove terminal-related code
- Clean up dead code from dashboard server, styles, and engine
- Update QuickEntryBox and all related tests for the simplified editing model
- Remove unused .gitignore entries and update dashboard README
2026-04-03 07:13:07 -07:00
gsxdsm
05f2114743 fix(FN-000): scope dashboard project flows 2026-04-02 17:51:04 -07:00
gsxdsm
3040868824 feat(FN-699): auto-expand steps for re-triaged tasks with existing progress
- Auto-expand step list on TaskCard when triage tasks have done/skipped steps
- Update existing triage test to use pending steps for fresh task scenario
- Add tests for re-triaged tasks with completed and skipped steps
2026-04-02 13:20:22 -07:00
gsxdsm
fb204dd68c feat(KB-651): add changed files diff viewer to dashboard
- Add backend API endpoint /api/tasks/:id/diff for file diffs
- Add useChangedFiles hook for fetching and managing diff state
- Create ChangedFilesModal component with file list and diff viewer
- Integrate modal with TaskCard via files changed badge click
- Add CSS styling for changed files layout and diff display
- Add keyboard navigation (Escape to close)
- Include unit tests for ChangedFilesModal component
2026-04-01 08:26:46 -07:00
gsxdsm
228648adfa feat(FN-678): add title truncation and tooltip to TaskCard
- Truncate long board titles in TaskCard with CSS text truncation\n- Add tooltip showing full title on hover via title attribute\n- Update TaskCard tests for truncation behavior\n- Add changeset for board title truncation fix
2026-04-01 07:16:54 -07:00
gsxdsm
02a30a9e96 feat(KB-622): unify steeringComments and comments into single comments field
- Merge steeringComments and comments into unified comments field in Task type
- Update TaskStore to use single comments array instead of separate steeringComments
- Add database migration to convert existing steeringComments to comments
- Update executor to inject all comments into AI execution context
- Update dashboard SteeringTab to use unified comments API
- Update CLI task steer command to use comments field
- Update PR comment handler to add comments via unified API
2026-04-01 07:05:23 -07:00
gsxdsm
fa37de1bed feat(KB-648): enable parallel test execution and optimize test performance
- Optimize backup tests using fake timers instead of real timeouts

- Enable parallel file execution in core, engine, CLI, and dashboard packages

- Add inline test helpers to reduce dependencies in dashboard routes tests

- Update executor tests with exact command matching and improved assertions

- Update AGENTS.md with test optimization patterns (fake timers, unique temp dirs)
2026-04-01 06:54:50 -07:00
gsxdsm
e21ea42d45 feat(KB-651): add changed files diff viewer for tasks
- Add backend API endpoint to get changed files and diffs for a task worktree
- Add useChangedFiles hook for fetching and managing diff data
- Create ChangedFilesModal component with file list and diff viewer
- Integrate modal into TaskCard with click handler to view changes
- Add frontend API integration and type definitions
- Include unit tests for hook and modal components
- Add changeset for the new feature
- Remove deprecated mission-related test files
2026-04-01 02:01:31 -07:00
gsxdsm
bd829d273a feat(KB-622): unify steeringComments and comments into single field
- Add database migration to merge steeringComments into comments field
- Update SQLite schema and queries to use unified comments column
- Refactor TaskStore to handle single comments field instead of dual fields
- Update dashboard components (SteeringTab, TaskCard) for unified comments
- Update engine executor and PR comment handler for new field structure
- Remove deprecated steeringComments from types and interfaces
2026-04-01 01:34:25 -07:00
gsxdsm
7344a80e40 feat(KB-618): add multi-project support to dashboard
- Add project API methods and types (fetchProjects, registerProject, fetchProjectHealth, etc.)
- Add ProjectCard component with health metrics, status badges, and pause/resume actions
- Add server-side project management routes for multi-project orchestration
- Add ActivityFeed component with grouped entries and project badges
- Add SetupWizard component with 5-step project creation flow
- Fix TypeScript errors in server routes for listProjects and getGlobalConcurrencyState
2026-03-31 23:19:03 -07:00
gsxdsm
602cea0817 feat(KB-653): add board title truncation with tooltip
- Truncate long board titles to 140 characters with ellipsis in TaskCard\n- Add hover tooltip to display full title when truncated\n- Add comprehensive test cases for 140 character truncation edge cases\n- Include changeset for board title truncation fix
2026-03-31 22:42:09 -07:00
gsxdsm
ada014213a feat(KB-640): add role editing UI and restore KB task prefix
- Add inline role editing to AgentListModal with clickable role icons
- Add handleRoleChange and handleRoleKeyDown handlers for role updates
- Persist view toggle (board/list) with localStorage alongside role editing
- Restore task prefix from FN back to KB for generated task IDs
- Restore branch naming from fusion/ back to kb/ for task branches
- Update branch name references in executor, merger, scheduler, and CLI
- Add touch gesture detection support to TaskCard component
- Update worktree grouping labels to use KB prefix
2026-03-31 19:44:36 -07:00
gsxdsm
2873c96f0a feat(KB-642): add expand button to TaskCard component
- Add expand button to TaskCard with Maximize2 icon
- Add CSS styles for expand button overlay positioning
- Fix click behavior to prevent card expansion when clicking action buttons
- Update TaskCard tests for new expand button behavior
- Add changeset for dashboard package
2026-03-31 19:20:53 -07:00
gsxdsm
3f77d80096 feat(KB-330): rename internal packages from @kb/* to @fusion/*
- Rename @kb/core, @kb/dashboard, @kb/engine to @fusion/* namespace
- Update all import statements across 143+ files to use new package names
- Update workspace dependencies and root package.json references
- Fix bundler configurations (tsup, vite) for new package names
- Update test files and fix typecheck issues
- Add changeset file documenting the package rename
2026-03-31 13:33:44 -07:00
gsxdsm
9e03c47b91 feat(KB-175): move file browser to header with workspace support
- Add workspace file APIs and hooks for session-scoped file browsing
- Create WorkspaceSelector component for switching between workspaces
- Update FileBrowserModal with workspace mode and improved UX
- Add files button to header with workspace-aware file browsing
- Add session files indicator to task cards for quick file access
- Include comprehensive tests for all new components and hooks
2026-03-31 01:26:57 -07:00
gsxdsm
fb123f289d feat(KB-255): remove 60-character truncation from task descriptions in dashboard
- Remove 60-character truncation from ListView component task descriptions
- Remove 60-character truncation from TaskCard component task descriptions
- Update ListView tests to verify full description display
- Add TaskCard tests for description rendering without truncation
- Remove unused CSS styles related to description truncation
2026-03-30 21:40:25 -07:00
gsxdsm
c4ea1cdb24 feat(KB-253): reorder size badge to far right in done column cards
- Move size badge to the rightmost position in TaskCard for done column cards\n- Maintain left-side placement for other columns (todo, in-progress)\n- Add unit tests to verify badge positioning based on column\n- Update badge order logic to use flex row-reverse for done cards
2026-03-30 20:17:13 -07:00