Commit graph

272 commits

Author SHA1 Message Date
iliya
e1585b4f71 feat: add binary file preview functionality and improve editor performance
- Introduced a new IPC handler for reading binary files as base64 for inline previews, enhancing the editor's capability to display images directly.
- Implemented a placeholder component for non-previewable binary files, providing users with file information and an option to open in the system viewer.
- Enhanced the EditorFileWatcher to ignore permission errors and adjusted debounce timing for better performance during file system events.
- Updated the ProjectFileService to include a method for reading binary previews with security checks and MIME type validation.
- Improved the EditorImagePreview component to handle loading states and display images with a checkerboard background for transparency.
- Refactored the EditorBinaryState component to utilize the new binary preview functionality, streamlining the display of binary files.
2026-03-01 23:51:51 +02:00
iliya
91412dccc1 feat: optimize file handling and component performance in editor
- Enhanced FileSearchService to implement parallel subdirectory traversal, improving efficiency in file collection.
- Refactored ProjectFileService to reuse directory stats, reducing unnecessary file system calls.
- Updated multiple components (EditorStatusBar, EditorTabBar, EditorToolbar, GitStatusBadge, QuickOpenDialog, SearchInFilesPanel) to utilize Zustand's shallow comparison for improved state management and performance.
- Introduced a module-level cache for QuickOpenDialog to minimize redundant API calls and enhance user experience.
- Added cache invalidation logic in editorSlice to ensure fresh data on file system changes.
2026-03-01 22:54:10 +02:00
iliya
533f9b9e06 feat: enhance EditorFileWatcher and FileSearchService for improved performance and event handling
- Introduced debouncing in EditorFileWatcher to aggregate rapid file system events, reducing unnecessary callbacks.
- Enhanced FileSearchService to parallelize file checks and improve efficiency in collecting file paths from directories.
- Updated EditorFileTree and ProjectEditorOverlay components to optimize state management and reduce re-renders using Zustand's shallow comparison.
- Added tests for EditorFileWatcher to ensure proper event handling and debouncing functionality.
2026-03-01 22:40:02 +02:00
iliya
509f7e82ab feat: optimize file and directory handling in editor services
- Enhanced FileSearchService to parallelize subdirectory traversal, improving performance when collecting file paths.
- Refactored ProjectFileService to classify directory entries without I/O, followed by parallel resolution of entries, optimizing file system access.
- Updated QuickOpenDialog to implement a search feature with a limit on rendered files, improving user experience when navigating large file sets.
- Introduced a new method for resolving symlinks in ProjectFileService, ensuring proper handling of symbolic links within the project structure.
2026-03-01 21:13:11 +02:00
iliya
4c5f0c3cc2 feat: implement custom project path management and task relationship features
- Added API endpoints for adding and removing custom project paths, allowing persistence across app restarts.
- Implemented IPC handlers for managing custom project paths in the application.
- Introduced functionality for adding and removing task relationships (blockedBy, blocks, related) between tasks, enhancing task management capabilities.
- Updated relevant components and services to support the new task relationship features and ensure proper integration with the existing task management system.
- Enhanced notifications for task relationships to improve user awareness of task dependencies.
2026-03-01 20:42:17 +02:00
iliya
a0764e39d1 feat: enhance team name validation and UI interactions
- Updated TEAM_NAME_PATTERN to enforce kebab-case naming conventions with lowercase letters and hyphens.
- Introduced a sanitizeTeamName function to ensure team names are properly formatted before submission.
- Enhanced CreateTeamDialog to provide real-time feedback on team name validity and display sanitized names.
- Modified NewProjectCard to open the teams tab upon navigating to a matching worktree.
- Updated TeamListView header to clarify the selection process for teams.
2026-03-01 19:41:19 +02:00
iliya
cd4cb8e10b refactor: improve chunk acceptance and rejection logic in CodeMirrorDiffUtils
- Simplified the acceptAllChunks and rejectAllChunks functions to handle document changes in a more robust manner.
- Updated logic to merge changes in a single operation, addressing potential RangeErrors with empty originals.
- Enhanced the CodeMirrorDiffView to conditionally apply themes based on the original document's content.
2026-03-01 17:58:37 +02:00
iliya
f4f02d5536 feat: enhance task management with new file renaming feature and notification settings
- Added a new file renaming functionality in the editor, allowing users to rename files and directories in place.
- Introduced notification settings for team inbox messages and task clarifications, enabling users to receive native OS notifications for important updates.
- Updated the README to reflect the new features and provide a clearer overview of the task management capabilities.
- Improved the application icon handling for notifications across different platforms.
2026-03-01 17:52:54 +02:00
iliya
cb8017b0db feat: enhance file icon handling and keyboard shortcuts
- Introduced a new FileIcon component to render file-type icons with support for Devicon CDN and fallback to lucide-react icons.
- Added a glow effect for file icons in dark mode to improve visibility.
- Updated various components to utilize the new FileIcon component for consistent icon rendering.
- Refined keyboard shortcut handling to use event.code for layout-independent key detection, improving cross-platform compatibility.
- Enhanced the EditorTabBar with a context menu for tab management, including options to close tabs and manage open files more efficiently.
2026-03-01 14:24:24 +02:00
iliya
4c8b50f3dd merge: worktree-editor-feature into improvements 2026-03-01 13:47:54 +02:00
iliya
6bdacd26af feat: add support for Claude Code CLI worktrees
- Introduced CLAUDE_CODE_DIR constant for the .claude/worktrees/ directory.
- Updated GitIdentityResolver to recognize and handle worktrees from Claude Code CLI.
- Enhanced WorktreeBadge and DashboardView to display appropriate labels for Claude Code worktrees.
- Updated type definitions and source labels to include 'claude-code' for better integration.
- Improved session handling in DateGroupedSessions and FileSectionDiff components to accommodate new worktree type.
2026-03-01 13:47:33 +02:00
iliya
a73ba551db fix: render new files via CodeMirror and fix root drop refresh
- FileSectionDiff: show CodeMirror for new files even when contentSource
  is 'unavailable' — write-new snippets provide the content
- ReviewDiffContent: remove duplicate file header (already in FileSectionHeader)
- editorSlice: fix refreshDirectory for project root — tree is the root's
  children array, not a nested entry, so merge must replace top-level
2026-03-01 13:47:30 +02:00
iliya
d7c9e87c40 fix: drag & drop — fix overlay position and root drop zone
- Use top positioning instead of transform for virtual items (fixes
  DragOverlay appearing at top instead of near cursor)
- Add spacer at bottom of tree for root drop target
- Highlight root drop zone during drag
2026-03-01 13:29:01 +02:00
iliya
ea967fd6c7 fix: drag & drop — fix overlay position and root drop zone
- Use top positioning instead of transform for virtual items (fixes
  DragOverlay appearing at top instead of near cursor)
- Add spacer at bottom of tree for root drop target
- Highlight root drop zone during drag
2026-03-01 13:28:54 +02:00
iliya
d8655df838 fix: resolve lint errors — setState-during-render instead of useEffect 2026-03-01 09:21:17 +02:00
iliya
ccee484adc fix: editor improvements — isDir bug, scroll-to-line, Quick Open, a11y
- Fix isDir heuristic: use backend-provided isDirectory instead of
  filename-based guessing (breaks for Makefile, .github, etc.)
- Add scroll-to-line on search result click via editorPendingGoToLine
- Add Cmd+Shift+W shortcut for toggling line wrap
- Rewrite Quick Open to fetch all project files from backend API
  instead of flattening the loaded tree (limited to expanded dirs)
- Fix fd leak in atomicWrite: close file handle in finally block
- Add a11y: role=dialog/alert, aria-modal, aria-label on modals
- Add type=button on error state buttons
2026-03-01 07:55:50 +02:00
iliya
8e6fb13e5f fix: rename closeTab/setActiveTab to closeEditorTab/setActiveEditorTab
Resolve naming collision between editorSlice and tabSlice.
Both slices defined closeTab and setActiveTab, and since editorSlice
was spread last in the store composition, it silently overwrote the
tabSlice methods, breaking tab management.
2026-02-28 23:53:10 +02:00
iliya
30c78b01e2 merge: integrate improvements branch into editor feature
Resolve 3 merge conflicts:
- TeamAgentToolsInstaller: keep TOOL_VERSION constant
- store/index.ts: keep editor listener + deferred CLI status
- storeTestUtils.ts: include all new slices (editor + improvements)

Fix post-merge issues:
- Restore logger in review.ts (needed by improvements' validateFilePath)
- Fix createStats return type in ProjectFileService tests
2026-02-28 23:45:33 +02:00
iliya
5b0c7d13fc feat: add project editor with drag & drop file management
- Backend: ProjectFileService with file CRUD, search, git status, file watcher
- IPC: 12 editor channels with security validation and path containment
- Store: editorSlice with multi-tab management, draft persistence, conflict detection
- UI: CodeMirror 6 editor, file tree with DnD, search-in-files, context menus
- Move: fs.rename with EXDEV fallback, full path remapping across all caches
- Tests: comprehensive coverage for services, IPC handlers, store, and utilities
2026-02-28 23:40:41 +02:00
iliya
4644328b93 refactor: remove console warnings from team-related components for cleaner logging
- Eliminated console warnings in TeamDetailView, GlobalTaskDetailDialog, and TaskDetailDialog to streamline logging and reduce clutter during team data operations.
- Updated the selectTeam function in teamSlice to remove unnecessary logging, enhancing performance and readability.
2026-02-28 23:02:21 +02:00
iliya
7d575b3383 feat: enhance MarkdownViewer with improved character limits and syntax highlighting management
- Updated character limits for Markdown content to prevent UI freezes with large inputs.
- Introduced logic to disable syntax highlighting for medium/large content and show raw previews for very large content.
- Enhanced responsiveness of the MarkdownViewer by managing rendering based on content size.
2026-02-28 22:56:53 +02:00
iliya
ede47903c1 feat: enhance TaskCommentsSection with improved comment rendering and visibility management
- Added state management for visible comments, allowing users to see a limited number of comments for better performance.
- Implemented logic to cap the number of rendered comments, preventing UI freezes with large comment lists.
- Introduced sorting for comments based on creation date to display the most recent comments first.
- Updated the UI to inform users when only a subset of comments is being displayed, enhancing user experience.
2026-02-28 22:52:18 +02:00
iliya
c528b07fec feat: enhance MarkdownViewer and task dialogs with loading state management and performance logging
- Introduced character limits for Markdown content in MarkdownViewer to prevent UI freezes with large content.
- Added state management for raw content display in MarkdownViewer, allowing users to expand and view large markdown files.
- Implemented performance logging in GlobalTaskDetailDialog and TaskDetailDialog to track loading states and improve debugging.
- Updated loading state handling in TaskDetailDialog to ensure accurate representation of loading conditions.
2026-02-28 22:48:08 +02:00
iliya
ca03b14c51 feat: implement timeout handling and logging for team data fetching
- Added a timeout mechanism to the getBranch calls in TeamDataService to prevent hangs on Windows setups, improving reliability during team data retrieval.
- Introduced performance logging in TeamDetailView and teamSlice to track the start and completion of team selection processes, enhancing debugging capabilities.
- Updated error handling to provide clearer warnings during team provisioning and selection, improving user experience.
2026-02-28 22:38:45 +02:00
iliya
9ce6d37528 feat: enhance team data fetching with performance logging and timeout handling
- Added performance logging to the handleGetData function, tracking the duration of team data retrieval and logging warnings for slow responses.
- Implemented a timeout mechanism in the selectTeam function to prevent long-running fetch operations, improving user experience.
- Enhanced the getTeamData method with detailed timing metrics for each data loading step, allowing for better performance analysis and debugging.
2026-02-28 22:29:43 +02:00
iliya
0f302521e4 fix: improve team selection logic and prevent duplicate fetches
- Enhanced GlobalTaskDetailDialog to handle loading states more effectively, preventing unnecessary re-fetching of team data.
- Updated selectTeam function in teamSlice to guard against duplicate in-flight fetches for the same team, improving performance and user experience.
- Refactored dependencies in useEffect to ensure proper data loading behavior.
2026-02-28 22:25:04 +02:00
iliya
b346fd319d feat: optimize team display name resolution and enhance file change handling
- Introduced a caching mechanism for team display names to reduce redundant API calls and improve performance.
- Updated file change event handling to debounce cache invalidation, preventing unnecessary rescans during rapid file changes.
- Enhanced GlobalTaskDetailDialog and TaskDetailDialog to manage loading states and improve team data fetching logic.
- Refactored teamSlice to streamline team selection and data loading processes.
2026-02-28 22:16:18 +02:00
iliya
ae2f7d9570 feat: enhance GlobalTaskDetailDialog and TaskDetailDialog with loading state management
- Added a loading state to the TaskDetailDialog to display a loading indicator while fetching team data.
- Updated GlobalTaskDetailDialog to pass the loading state to TaskDetailDialog.
- Modified the selectTeam function in teamSlice to accept options for skipping project auto-selection, improving team data handling.
2026-02-28 21:47:44 +02:00
iliya
b2e48c6966 feat: enhance team management with improved session and project path history handling
- Introduced constants for maximum session and project path history limits to optimize memory usage.
- Updated `TeamConfigReader` and `TeamProvisioningService` to limit session and project path history to defined maximums.
- Enhanced `TeamMembersMetaStore` to handle large meta files more efficiently by checking file size before processing.
- Refactored state management in `teamSlice` to include optimized lookups for team summaries by name and session ID.
2026-02-28 21:40:47 +02:00
iliya
3b2a0de140 feat: enhance TeamConfigReader with improved file handling and concurrency
- Introduced `mapLimit` function to manage concurrent processing of team directories, optimizing performance.
- Added `readFileHead` function to read the beginning of large configuration files efficiently.
- Implemented `extractQuotedString` to safely extract values from JSON strings in configuration headers.
- Enhanced error handling and validation for team configuration files, ensuring robust processing of team data.
- Updated logic to handle large configuration files differently, improving overall reliability and performance.
2026-02-28 21:23:16 +02:00
iliya
0cb85d463c feat: enhance project editor with new error boundary and file handling improvements
- Introduced `EditorErrorBoundary` component to catch runtime errors in CodeMirror, providing a fallback UI to prevent crashes.
- Updated file handling logic to utilize `isbinaryfile` for more reliable binary detection, replacing manual null-byte scans.
- Enhanced `openFile` method to prevent duplicate tabs for already opened files.
- Improved documentation for new components and updated file lists to reflect recent changes.
- Optimized file watcher and path validation processes for better performance and reliability.
2026-02-28 17:55:21 +02:00
iliya
736ec470d9 feat: optimize IPC initialization and context management for improved app performance
- Deferred IPC-heavy initialization to occur after the first paint to prevent app freezing on Windows.
- Staggered notification listener setup to avoid saturating the UV thread pool during startup.
- Updated context system initialization to be lazy, ensuring local context is always ready without upfront costs.
- Enhanced data fetching sequence to reduce simultaneous IPC calls, improving overall responsiveness.
2026-02-28 15:16:13 +02:00
iliya
1a928a68de feat: integrate simple-git for enhanced Git status tracking and improve file watcher performance
- Replaced direct Git command usage with `simple-git` for more reliable status tracking, including support for renamed files and conflict detection.
- Updated IPC channels to reflect changes in Git status retrieval method.
- Enhanced file watcher initialization on Windows to prevent UV thread pool saturation by starting watchers sequentially.
- Improved application startup by staggering context system initialization and notification listeners to optimize performance.
2026-02-28 14:59:53 +02:00
iliya
0c2f70b2b2 feat: implement in-app project editor with CodeMirror integration
- Added architectural plan and iteration plan for the in-app project editor.
- Introduced new components for the editor, including CodeEditorOverlay, FileTreePanel, and EditorTabsPanel.
- Established state management using Zustand for editor state persistence.
- Implemented IPC channels for file operations and editor functionality.
- Enhanced TeamDetailView with a button to open the editor overlay.
- Conducted reuse analysis for existing components to optimize codebase integration.
2026-02-27 22:36:06 +02:00
iliya
5b08cca69b refactor: move Docker files to docker/ and CHANGELOG to docs/ 2026-02-27 21:04:11 +02:00
iliya
1737662354 feat: add download badges with direct links per platform 2026-02-27 20:55:38 +02:00
iliya
995b6ef843 improvements 2026-02-27 15:58:38 +02:00
iliya
17e20847d6 improvemtns 2026-02-27 14:44:02 +02:00
iliya
290646bea8 fix: update MemberBadge and LaunchTeamDialog components for improved functionality
- Modified MemberBadge to display 'lead' for team leads instead of the full name.
- Refactored LaunchTeamDialog to simplify model selection logic and replace the Select component with a custom button-based interface for better user experience.
- Enhanced KanbanTaskCard to include meta actions for task management, improving the layout and functionality for manual review tasks.
2026-02-27 13:25:07 +02:00
iliya
6a8b9cd1b5 fix: enhance CLI installer and session management
- Updated the postinstall script in package.json to handle rebuild failures gracefully.
- Added clearContext option in team launch requests to allow starting fresh sessions without resuming previous context.
- Improved CLI installer logging by integrating raw output chunks for better terminal rendering.
- Refactored components to utilize TerminalLogPanel for displaying installation logs, enhancing user experience during CLI installation.
- Updated various services and hooks to support the new clearContext feature and raw logging.
2026-02-27 12:56:32 +02:00
iliya
a9e0416251 fix: enhance terminal IPC handlers with error handling
- Wrapped terminal IPC handler functions (write, resize, kill) in try/catch blocks to log errors from node-pty, improving robustness against PTY failures.
- Updated the TeamAgentToolsInstaller to increment TOOL_VERSION to 10, reflecting changes in the tool's versioning.
- Refactored task comment handling in TeamAgentToolsInstaller to include retry logic for improved reliability during task updates.
- Consolidated role constants into a new teamRoles.ts file for better organization and reuse across components.
2026-02-26 21:41:27 +02:00
iliya
69f7cd333a fix: update dependencies in FileSectionDiff to include discardCounter
- Modified the dependency array in the useEffect hook to include discardCounter, ensuring proper reactivity when the discard counter changes.
2026-02-26 21:02:35 +02:00
iliya
43dd94cd2c fix: address false negatives in diff matching and enhance hunk processing
- Updated the root cause analysis for false negatives in diff matching, clarifying that context lines are discarded during matching.
- Improved the `structuredPatch()` method to merge hunks based on a new threshold, enhancing accuracy in matching snippets.
- Implemented reconstruction of "old side" and "new side" content from hunks, including context lines to prevent false negatives.
- Enhanced the `CliStatusBanner` component to improve user feedback on CLI authentication status.
- Updated the change review slice to incorporate file chunk counts for better hunk decision handling.
2026-02-26 20:40:14 +02:00
iliya
960bd2fa30 fix: update package.json and add deep research documentation
- Modified the asarUnpack configuration in package.json to include all node-pty files for better packaging.
- Added a new markdown file detailing findings from deep research on diff view limitations, addressing false positives and negatives, hunk index mismatches, and content duplication issues in edits.
2026-02-26 20:21:09 +02:00
iliya
99a8bff8d2 feat: integrate terminal service and enhance CLI authentication handling
- Added PtyTerminalService to manage PTY terminal processes, enabling terminal functionalities within the application.
- Updated CLI installer to include authentication status checks, providing feedback on user login state.
- Enhanced the dashboard with a warning banner for CLI installation status, prompting users to log in if not authenticated.
- Introduced IPC channels for terminal operations, allowing communication between main and renderer processes for terminal management.
- Improved TaskCommentsSection and other components to support new features and enhance user experience during task management.
2026-02-26 20:17:32 +02:00
iliya
d97a757f24 feat: implement comprehensive audit and fix plans for diff view feature
- Added detailed audit report for the diff view feature, covering line count reliability, hunk parsing, and UI rendering.
- Introduced fix plans addressing critical bugs, including cache TTL adjustments, memory safeguards for LCS, and unified line counting methods.
- Enhanced notification handling for team messages, integrating native OS notifications for improved user experience.
- Updated various components and services to support new features and optimizations, ensuring better performance and reliability in the diff viewing process.
2026-02-26 19:28:31 +02:00
iliya
d096b6b19a feat: add task owner management and update CLI commands
- Incremented TOOL_VERSION to 9 for the CLI tool.
- Introduced setTaskOwner function to manage task ownership, allowing assignment and clearing of owners.
- Updated CLI commands to include task owner management options in help documentation.
- Enhanced Kanban components to support a compact view for task cards.
- Improved member color mapping to ensure unique colors for team members.
- Added asynchronous execution support in teamctl tests for better concurrency handling.
2026-02-26 18:32:48 +02:00
iliya
c99a9cfc48 feat: integrate CLI installer service and UI components
- Introduced the CliInstallerService to manage CLI installation, including status checks and installation processes.
- Added IPC handlers for CLI installer operations, enabling communication between main and renderer processes.
- Implemented the CliStatusBanner and CliStatusSection components to display CLI installation status and controls in the dashboard and settings.
- Enhanced the dashboard and settings UI to provide users with real-time feedback on CLI installation progress and errors.
- Updated the TeamDataService to support task clarification features, improving task management capabilities.
2026-02-26 17:58:51 +02:00
iliya
321673ff6d feat: update pricing configuration and enhance file content handling
- Removed outdated pricing entries for Claude models from pricing.json to streamline configuration.
- Enhanced the getFileContent method in FileContentResolver to accept snippets for improved content diffing.
- Updated IPC methods to support new parameters for file content retrieval, improving data handling in the review process.
- Introduced accurate line addition and removal tracking in file diffs, enhancing the review experience.
- Improved UI components to reflect changes in file content handling, ensuring better user interaction during reviews.
2026-02-26 14:30:09 +02:00
iliya
50efe267e4 feat: enhance team provisioning prompts and improve dashboard interactivity
- Updated the provisioning prompts in TeamProvisioningService to include project name alongside team and lead information, enhancing clarity for non-interactive CLI sessions.
- Refactored the RepositoryCard component in DashboardView to replace button with a div for improved accessibility and keyboard navigation, allowing users to open project paths more intuitively.
- Modified ChangeReviewDialog and ContinuousScrollView components to track discard actions using a record of counters per file, improving state management during file reviews.
2026-02-26 13:09:25 +02:00
iliya
0d0786602f feat: enhance CollapsibleTeamSection and TaskCommentsSection with new features
- Added an optional icon prop to CollapsibleTeamSection for improved visual representation.
- Introduced hideInput and onReply props in TaskCommentsSection to control comment input visibility and handle reply actions externally.
- Updated TaskDetailDialog to utilize new props for better comment management and user interaction.
- Enhanced UI components to support these new features, improving overall user experience in task management.
2026-02-26 12:52:51 +02:00
iliya
7019bf6114 feat: add team restoration and permanent deletion features
- Implemented functionality for restoring soft-deleted teams and permanently deleting teams from the system.
- Introduced new IPC channels for team restoration and permanent deletion, enhancing team management capabilities.
- Updated TeamDataService and related components to handle the new operations, ensuring data integrity during team management.
- Enhanced UI components to support team restoration and deletion actions, improving user experience and management workflows.
2026-02-26 12:15:47 +02:00
iliya
a02f46c3aa feat: implement decision persistence for review process
- Added ReviewDecisionStore to manage loading, saving, and clearing review decisions from disk.
- Introduced new IPC channels for loading, saving, and clearing decisions, enhancing the review process.
- Updated ChangeReviewDialog and related components to integrate decision persistence, improving user experience during reviews.
- Implemented debounced saving of decisions to optimize performance and reduce unnecessary writes.
2026-02-25 19:53:14 +02:00
iliya
a5da786343 feat: add initial file path support and scrolling behavior in ChangeReviewDialog
- Introduced an `initialFilePath` prop to facilitate scrolling to a specific file upon loading.
- Implemented a mechanism to reset the scroll flag when `initialFilePath` changes.
- Enhanced the scrolling functionality to automatically scroll to the specified file once the data is loaded, improving user navigation during reviews.
2026-02-25 19:35:00 +02:00
iliya
1c6b7c4ef1 feat: implement soft delete and retrieval of deleted tasks in team management
- Added functionality for soft-deleting tasks, allowing tasks to be marked as deleted without permanent removal.
- Introduced new IPC channels for soft-deleting tasks and retrieving deleted tasks, enhancing task management capabilities.
- Updated TeamDataService and TeamTaskWriter to handle soft delete operations and maintain task integrity.
- Enhanced the UI components to support viewing and managing deleted tasks, improving user experience and task visibility.
- Implemented a TrashDialog for displaying deleted tasks, allowing users to review and manage their deleted items effectively.
2026-02-25 19:30:27 +02:00
iliya
0ab2b8d769 refactor: replace button with Button component in TeamDetailView for improved styling
- Updated the headerExtra section in TeamDetailView to use a Button component instead of a button element, enhancing the visual consistency and styling.
- Adjusted the Button properties to align with the design system, including variant and size adjustments.
2026-02-25 18:25:26 +02:00
iliya
1498350cb1 feat: enhance React component data handling and improve task management features
- Updated `ProcessesSection` to directly access data from Zustand store, eliminating prop drilling for cleaner component structure.
- Added new guidelines in `react.md` for accessing data from the store over props to streamline component communication.
- Enhanced `TeamProvisioningService` to include task snapshots for team members, improving task management and visibility.
- Implemented notifications for killed processes, providing better feedback to team leads about process management actions.
- Refactored `TaskDetailDialog` and `GlobalTaskDetailDialog` to improve header content handling, enhancing user experience.
- Introduced folder collapsing functionality in `ReviewFileTree`, allowing for better navigation and organization of file structures.
2026-02-25 18:07:03 +02:00
iliya
877f214113 feat: implement process management features for team services
- Added process registration and health tracking capabilities in TeamDataService, allowing teams to monitor and manage background processes effectively.
- Introduced new CLI commands for registering, unregistering, and listing processes, enhancing the command-line tool's functionality.
- Implemented periodic health checks for registered processes, automatically updating their status and notifying the UI of changes.
- Enhanced the FileWatcher to emit team change events for process updates, ensuring real-time synchronization with the UI.
- Updated the team detail view to display active CLI processes, improving visibility into team operations.
- Added documentation for new process management protocols and CLI commands to assist users in managing background processes.
2026-02-25 16:54:53 +02:00
iliya
0df816bba6 feat: enhance diff view with continuous scroll and lazy loading
- Introduced a continuous scroll mode for the diff view, allowing users to review multiple files in a single scrollable container.
- Added lazy loading functionality to improve performance by loading file content as it approaches the viewport.
- Implemented a new portion collapse feature to allow users to expand unchanged regions incrementally, enhancing context retention during reviews.
- Updated navigation to support smooth scrolling between files and improved keyboard shortcuts for file navigation.
- Enhanced the review toolbar to manage actions across all files, including bulk accept/reject options.
- Added new hooks and components to support the continuous scroll and lazy loading features, ensuring a seamless user experience.
2026-02-25 15:39:14 +02:00
iliya
e4aa544f57 feat: add lead activity tracking for team management
- Introduced new IPC channel for retrieving lead activity state (active, idle, offline) for teams.
- Implemented lead activity state management in TeamProvisioningService, allowing real-time updates.
- Enhanced team detail and list views to display lead activity status, improving user awareness of team dynamics.
- Updated member components to reflect lead activity, providing better context for team members' statuses.
- Added localStorage fallback for comment read state management, ensuring data persistence across sessions.
2026-02-25 13:18:37 +02:00
iliya
fd3176716b feat: enhance team management and review processes with new functionalities
- Added support for inferring team lead names from configuration, improving message attribution in task communications.
- Introduced new dependencies for CodeMirror language support, enhancing the editing experience for various programming languages.
- Implemented scoped item IDs in the CLI logs view to prevent cross-group collisions, improving UI clarity.
- Enhanced sorting logic in the team list view to prioritize alive teams and match current project paths.
- Added lazy-check functionality for task changes in Kanban cards, optimizing performance and user experience.
- Updated diff view components to support new language features and improve overall editing capabilities.
2026-02-25 11:40:01 +02:00
iliya
1d7e55e89a feat: implement editable diff functionality with save and discard options
- Added support for editing file content during reviews, allowing users to save changes directly to disk.
- Introduced new IPC channels for saving edited files and handling content updates.
- Enhanced the review toolbar with actions for saving and discarding edits, along with indicators for edited files.
- Implemented keyboard shortcuts for improved navigation and editing experience.
- Integrated a new component for rendering CLI logs in a rich format, replacing the previous raw JSON display.
- Updated state management to track edited contents and handle file edits effectively.
2026-02-25 09:03:50 +02:00
iliya
ada5d8359a fix: use content fingerprint for stale check instead of computedAt
computedAt is regenerated on each cache miss, causing false positives
when the review data hasn't actually changed. Compare file count, line
counts, and file paths instead.
2026-02-24 23:48:14 +02:00
iliya
2123dfb780 fix: show diff content for new files and disk-current fallback
originalFullContent can be null for new files or when only disk-current
is available. Use empty string fallback instead of hiding the diff.
2026-02-24 23:45:47 +02:00
iliya
190cafdb8e feat: implement diff view with 4 phases — review, accept/reject, task scoping, enhanced UX
Phase 1: Core diff extraction and display
- ChangeExtractorService: JSONL streaming parser with snippet extraction
- FileContentResolver: 3-level content resolution (file-history → snippets → disk)
- ReviewApplierService: hunk-level accept/reject with conflict detection
- CodeMirrorDiffView: unified merge view with syntax highlighting
- ReviewFileTree: file browser with status indicators
- changeReviewSlice: Zustand state for review workflow

Phase 2: Interactive review with accept/reject
- Per-hunk and per-file accept/reject decisions
- Conflict checking before apply
- ReviewToolbar with bulk actions
- DiffErrorBoundary for graceful degradation

Phase 3: Per-task change scoping
- TaskBoundaryParser: detects task boundaries in JSONL (Tier 1-4 confidence)
- TaskChangeSetV2 with scope + warnings
- ConfidenceBadge and ScopeWarningBanner components

Phase 4: Enhanced features
- Keyboard navigation (j/k/n/p/a/x shortcuts via useDiffNavigation)
- Viewed file tracking (localStorage + useViewedFiles hook)
- File edit timeline (chronological events per file)
- Git fallback (GitDiffFallback service for incomplete JSONL data)
- Auto-viewed detection (IntersectionObserver sentinel)
2026-02-24 23:39:41 +02:00
iliya
238a91f5f3 Merge remote-tracking branch 'origin/main' into improvements
# Conflicts:
#	docs/iterations/diff-view/phase-1-read-only-diff.md
#	docs/iterations/diff-view/phase-2-accept-reject.md
#	docs/iterations/diff-view/phase-3-per-task-scoping.md
#	docs/iterations/diff-view/phase-4-enhanced-features.md
#	src/main/ipc/configValidation.ts
#	src/main/services/infrastructure/ConfigManager.ts
#	src/main/services/team/TeamProvisioningService.ts
#	src/renderer/components/chat/items/TeammateMessageItem.tsx
#	src/renderer/components/dashboard/DashboardView.tsx
#	src/renderer/components/settings/hooks/useSettingsConfig.ts
#	src/renderer/components/settings/hooks/useSettingsHandlers.ts
#	src/renderer/components/sidebar/SidebarTaskItem.tsx
#	src/renderer/components/team/TeamDetailView.tsx
#	src/renderer/components/team/activity/ActivityItem.tsx
#	src/renderer/components/team/dialogs/TaskCommentsSection.tsx
#	src/renderer/components/team/members/MemberExecutionLog.tsx
#	src/renderer/utils/taskGrouping.ts
#	src/shared/types/notifications.ts
2026-02-24 21:26:41 +02:00
iliya
06bf5d4381 merge: sync with upstream/main — session reports, cost calculation, Linux title bar, auto-expand AI groups
Brings in upstream changes:
- Session analysis reports (overview, cost, tokens, tools, git, quality)
- Unified cost calculation with LiteLLM pricing data
- Custom title bar for Linux with native toggle
- Auto-expand AI response groups setting
- MoreMenu toolbar component
- Various fixes (window drag, Ctrl+R, notification guard)

All merge conflicts resolved preserving both fork features (team management,
agent language, fullscreen, diff view) and upstream additions.
2026-02-24 21:04:23 +02:00
iliya
61c62741c3 feat: enhance diff view with new features and improvements
- Added 'fallback' confidence level to TaskChangeSet for Phase 3 Tier 4.
- Updated line counting logic in ChangeExtractorService to use `jsdiff.diffLines` for accurate added/removed line counts.
- Introduced new IPC handlers for agent and task changes, improving the review process.
- Enhanced error handling in review handlers with a local wrapReviewHandler function.
- Updated documentation to reflect changes in task scoping and content extraction methods.
- Improved local storage management for viewed files, ensuring compatibility with new formats.
- Added agent block usage policy to TeamProvisioningService for better message formatting control.
2026-02-24 20:56:13 +02:00
iliya
e160626c64 feat: implement diff view functionality with read-only and accept/reject capabilities
- Introduced a comprehensive implementation plan for the diff view feature, structured in four phases: MVP (read-only), accept/reject per hunk, per-task scoping, and enhanced features.
- Phase 1 includes a read-only diff view per agent, utilizing JSONL data to display file changes.
- Defined new types for file changes and review data, and established IPC channels for fetching member changes and reading file content.
- Developed backend services for extracting file changes and aggregating review data, alongside frontend components for displaying diffs and managing state.
- Subsequent phases will enhance the diff view with accept/reject functionality, task-specific change scoping, and improved user experience features.
2026-02-24 20:29:41 +02:00
iliya
2b6f9cf9cd feat: add optimistic role update and IPC handler for member role changes
- Implemented optimistic UI updates in `TeamDetailView` to reflect member role changes immediately.
- Added IPC channel for updating member roles, including validation for team and member names.
- Enhanced tests to cover the new role update functionality, ensuring proper handling of valid and invalid inputs.
2026-02-24 20:29:41 +02:00
iliya
af5f5af18b feat: implement member role update functionality
- Added IPC channel for updating a team member's role, including validation for team and member names.
- Implemented `handleUpdateMemberRole` function to manage role changes and notify the team lead of updates.
- Updated `TeamDataService` to support role changes and ensure data consistency.
- Enhanced UI components to allow role editing and display loading states during updates.
- Integrated role update handling in the team management dialogs, improving user experience.
2026-02-24 20:29:41 +02:00
iliya
70a3d8e34a feat: add agent language update handling and validation
- Introduced support for updating the agent language in the configuration, including a new callback in `initializeConfigHandlers`.
- Enhanced `handleUpdateConfig` to trigger the new language update callback when the agent language changes.
- Updated validation logic to ensure the agent language is a non-empty string.
- Modified the `TeamConfigReader` and `TeamProvisioningService` to handle the new language setting, ensuring teams are notified of language changes.
- Adjusted various components to accommodate the new task start and cancellation features, improving task management in the Kanban board.
2026-02-24 20:29:41 +02:00
iliya
33b41ef5d5 feat: enhance folder navigation and team section UI
- Implemented synthetic group creation for new folders in `DashboardView`, allowing navigation to projects without existing sessions.
- Added `headerExtra` prop to `CollapsibleTeamSection` for inline elements, improving UI flexibility.
- Updated `TeamDetailView` to include a notification button for the `claude-notifications-go` plugin, enhancing user experience with desktop notifications.
2026-02-24 20:29:41 +02:00
iliya
a30f8ab879 fix: enhance message sending reliability and error handling
- Improved the message sending process in `handleSendMessage` by separating try blocks for stdin delivery and persistence, preventing fallback to inbox on stdin success.
- Added logging for persistence failures after stdin delivery to ensure better tracking of issues.
- Updated `TeamSentMessagesStore` to handle IO errors gracefully, preserving optional fields and preventing crashes.
- Enhanced `MessageComposer` to clear draft only after successful message send, improving user experience.
2026-02-24 20:29:41 +02:00
iliya
3a05f113bc feat: enhance notifications and task management features
- Added a section for task completion notifications in the settings, allowing users to receive native OS notifications when tasks are completed.
- Implemented a button to install the `claude-notifications-go` plugin for enhanced notification capabilities.
- Updated the `TeamDetailView` to include a "Mark all as read" feature, improving message management.
- Refactored task creation dialog to support an optional immediate start parameter, enhancing task scheduling flexibility.
- Improved Kanban board functionality by allowing task addition with pre-set start conditions based on the column context.
2026-02-24 20:29:41 +02:00
iliya
e090f172ec fix: resolve new member status and notify lead to spawn teammate
- Fix member status resolution: members without messages now show as
  idle/active instead of unknown based on task ownership
- Notify running team lead via stdin when a new member is added so
  the lead can spawn the teammate process
- Map unknown presence label to idle for better UX clarity
2026-02-24 20:29:41 +02:00
iliya
34ef846a5b feat: accumulate and display assistant output during provisioning
- Added `provisioningOutputParts` to `ProvisioningRun` for accumulating assistant text during the provisioning phase.
- Updated `updateProgress` and `emitLogsProgress` functions to include the new `assistantOutput` in the progress state.
- Enhanced `ProvisioningProgressBlock` to display live assistant output using `MarkdownViewer`.
- Modified `TeamProvisioningBanner` to pass the new `assistantOutput` prop for rendering in the UI.
2026-02-24 20:29:41 +02:00
iliya
512237e047 refactor: simplify highlight.js import in ProvisioningProgressBlock
- Updated the import statement for highlight.js to use the main package instead of specific language imports, streamlining the code and reducing dependencies.
2026-02-24 20:29:41 +02:00
iliya
090c1d47aa fix: improve error handling and logging in message sending process
- Updated error handling in `handleSendMessage` to provide clearer error messages when stdin fails.
- Enhanced JSON highlighting in `highlightLogsHtml` by parsing and pretty-printing JSON strings before highlighting.
- Replaced the paperclip icon with an image plus icon in the `MessageComposer` for better visual representation of attachment options.
2026-02-24 20:29:41 +02:00
iliya
aa49ce0ccc feat: add/remove member, mesage box, improve ui... 2026-02-24 20:29:41 +02:00
iliya
051a727eb2 feat: implement diff view functionality with read-only and accept/reject capabilities
- Introduced a comprehensive implementation plan for the diff view feature, structured in four phases: MVP (read-only), accept/reject per hunk, per-task scoping, and enhanced features.
- Phase 1 includes a read-only diff view per agent, utilizing JSONL data to display file changes.
- Defined new types for file changes and review data, and established IPC channels for fetching member changes and reading file content.
- Developed backend services for extracting file changes and aggregating review data, alongside frontend components for displaying diffs and managing state.
- Subsequent phases will enhance the diff view with accept/reject functionality, task-specific change scoping, and improved user experience features.
2026-02-24 20:25:49 +02:00
iliya
ad1ce7fc2c feat: add optimistic role update and IPC handler for member role changes
- Implemented optimistic UI updates in `TeamDetailView` to reflect member role changes immediately.
- Added IPC channel for updating member roles, including validation for team and member names.
- Enhanced tests to cover the new role update functionality, ensuring proper handling of valid and invalid inputs.
2026-02-24 17:36:12 +02:00
iliya
265becae2d feat: implement member role update functionality
- Added IPC channel for updating a team member's role, including validation for team and member names.
- Implemented `handleUpdateMemberRole` function to manage role changes and notify the team lead of updates.
- Updated `TeamDataService` to support role changes and ensure data consistency.
- Enhanced UI components to allow role editing and display loading states during updates.
- Integrated role update handling in the team management dialogs, improving user experience.
2026-02-24 17:31:26 +02:00
iliya
27eacfa77c feat: add agent language update handling and validation
- Introduced support for updating the agent language in the configuration, including a new callback in `initializeConfigHandlers`.
- Enhanced `handleUpdateConfig` to trigger the new language update callback when the agent language changes.
- Updated validation logic to ensure the agent language is a non-empty string.
- Modified the `TeamConfigReader` and `TeamProvisioningService` to handle the new language setting, ensuring teams are notified of language changes.
- Adjusted various components to accommodate the new task start and cancellation features, improving task management in the Kanban board.
2026-02-24 17:11:54 +02:00
iliya
97f09520f0 feat: enhance folder navigation and team section UI
- Implemented synthetic group creation for new folders in `DashboardView`, allowing navigation to projects without existing sessions.
- Added `headerExtra` prop to `CollapsibleTeamSection` for inline elements, improving UI flexibility.
- Updated `TeamDetailView` to include a notification button for the `claude-notifications-go` plugin, enhancing user experience with desktop notifications.
2026-02-24 16:10:15 +02:00
iliya
47d266b55b fix: enhance message sending reliability and error handling
- Improved the message sending process in `handleSendMessage` by separating try blocks for stdin delivery and persistence, preventing fallback to inbox on stdin success.
- Added logging for persistence failures after stdin delivery to ensure better tracking of issues.
- Updated `TeamSentMessagesStore` to handle IO errors gracefully, preserving optional fields and preventing crashes.
- Enhanced `MessageComposer` to clear draft only after successful message send, improving user experience.
2026-02-24 16:01:44 +02:00
iliya
683146c45d feat: enhance notifications and task management features
- Added a section for task completion notifications in the settings, allowing users to receive native OS notifications when tasks are completed.
- Implemented a button to install the `claude-notifications-go` plugin for enhanced notification capabilities.
- Updated the `TeamDetailView` to include a "Mark all as read" feature, improving message management.
- Refactored task creation dialog to support an optional immediate start parameter, enhancing task scheduling flexibility.
- Improved Kanban board functionality by allowing task addition with pre-set start conditions based on the column context.
2026-02-24 15:38:58 +02:00
iliya
a50cd2a713 fix: resolve new member status and notify lead to spawn teammate
- Fix member status resolution: members without messages now show as
  idle/active instead of unknown based on task ownership
- Notify running team lead via stdin when a new member is added so
  the lead can spawn the teammate process
- Map unknown presence label to idle for better UX clarity
2026-02-24 14:58:23 +02:00
iliya
a212171faa feat: accumulate and display assistant output during provisioning
- Added `provisioningOutputParts` to `ProvisioningRun` for accumulating assistant text during the provisioning phase.
- Updated `updateProgress` and `emitLogsProgress` functions to include the new `assistantOutput` in the progress state.
- Enhanced `ProvisioningProgressBlock` to display live assistant output using `MarkdownViewer`.
- Modified `TeamProvisioningBanner` to pass the new `assistantOutput` prop for rendering in the UI.
2026-02-24 14:32:51 +02:00
iliya
abaaeea7b8 refactor: simplify highlight.js import in ProvisioningProgressBlock
- Updated the import statement for highlight.js to use the main package instead of specific language imports, streamlining the code and reducing dependencies.
2026-02-24 14:24:33 +02:00
iliya
fbcfd7b1a7 fix: improve error handling and logging in message sending process
- Updated error handling in `handleSendMessage` to provide clearer error messages when stdin fails.
- Enhanced JSON highlighting in `highlightLogsHtml` by parsing and pretty-printing JSON strings before highlighting.
- Replaced the paperclip icon with an image plus icon in the `MessageComposer` for better visual representation of attachment options.
2026-02-24 14:17:03 +02:00
iliya
6a31d440a4 feat: add/remove member, mesage box, improve ui... 2026-02-24 14:17:03 +02:00
Psypeal Gwai
6cc4299245 feat: custom title bar on Linux with native toggle Replace WindowsTitleBar with CustomTitleBar that renders on both Windows and Linux. Add useNativeTitleBar settings toggle with app relaunch to switch between custom and native window frame. 2026-02-23 20:37:42 -08:00
Paul Holstein
56dc860862 feat: show total session cost including subagents in Visible Context panel
Compute subagentCostUsd from sessionDetail.processes[].metrics and
display total cost (parent + subagents) with breakdown in the header.
When subagents exist, shows e.g. "$24.70 ($16.85 parent + $7.84 subagents)"
with a link to the Session Report for full details.

Replaces the "(parent only)" disclaimer since cost is now accurate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:15:25 -05:00
iliya
25b740c134 refactor: unify read state handling in ActivityTimeline and TeamDetailView
- Consolidated the handling of read messages by introducing a `readState` prop in `ActivityTimeline`, which combines `readSet` and `getMessageKey`.
- Updated `TeamDetailView` to pass the new `readState` structure, improving clarity and reducing prop drilling.
- Enhanced unread message logic in `ActivityTimeline` to derive unread status from the new `readState` prop.
2026-02-23 20:06:08 +02:00
iliya
c3e4521cc8 refactor: update IPC channel constants and improve markdown plugin usage
- Replaced local IPC channel constants in `index.ts` with imports from `@preload/constants/ipcChannels` for better consistency.
- Simplified the `leadRelayCapture` assignment in `TeamProvisioningService`.
- Updated markdown plugin imports across multiple components to use the new `REHYPE_PLUGINS` constant.
- Enhanced task status display logic in `TaskRow` for improved clarity.
- Adjusted CSS for better syntax highlighting in the editor.
2026-02-23 20:06:08 +02:00
iliya
361828f21a refactor: clean up GlobalTaskList and enhance TaskDetailDialog
- Removed unnecessary border styling in `GlobalTaskList` for a cleaner layout.
- Added logic in `ActivityTimeline` to identify and set team lead information based on member roles.
- Improved `TaskDetailDialog` to display owner information with enhanced styling and avatar support, utilizing team colors for better visual distinction.
- Streamlined dependency display in `TaskDetailDialog` for improved readability and user interaction.
2026-02-23 20:06:08 +02:00
iliya
1b6f7be767 feat: alot, code highlight, related tasks, group by project and other 2026-02-23 20:06:08 +02:00
Paul Holstein
5ca3fc9008 fix(review): address CodeRabbit and Gemini review comments
- Design doc: update "No UI changes" to reflect cost disclaimer
- Plan doc: fix MD001 heading level jump (### after #)
- pricing.ts: rename to PRICING_MAP, add isLiteLLMPricing type guard,
  pre-compute LOWERCASE_KEY_MAP for O(1) case-insensitive lookups
- SessionContextHeader: simplify cost disclaimer JSX into single span
- Tests: fix no-empty-function lint (() => {} → () => undefined)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:49:05 -05:00
Paul Holstein
db9a676680 feat: add parent-only disclaimer and report link to session cost
The Visible Context panel's Session Cost only reflects the parent
session. Add "(parent only · view full cost)" label that links to
the Session Report where parent + subagent costs are shown.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:25:45 -05:00