- Added deduplication logic to prevent recent equivalent cross-team messages from being sent multiple times.
- Introduced functions to normalize message content and build deduplication keys.
- Updated CrossTeamService and CrossTeamOutbox to utilize deduplication during message sending.
- Enhanced tests to verify deduplication behavior and ensure correct message handling in various scenarios.
When both FROM and TO filters are active simultaneously,
messages matching either direction are shown instead of
requiring both conditions (which produced empty results
for same-member selections like FROM:bob + TO:bob).
Single-filter behavior remains unchanged.
- Updated MessageComposer to disable input when provisioning is active, enhancing user experience during team launches.
- Refactored useMarkCommentsRead hook to simplify comment read logic by removing IntersectionObserver, ensuring comments are marked as read on mount and when the comments list changes.
- Team selector dropdown in MessageComposer (left of recipient selector)
- Cross-team mode locks recipient to team-lead, disables attachments
- Sender copy written to fromTeam inbox with source 'cross_team_sent'
- Purple accent styling for cross-team messages (incoming + outgoing)
- "from team-x" / "to team-x" badges in ActivityItem
- Strip [Cross-team from ...] prefix in UI (kept in stored text for CLI)
- CSS variables for cross-team theme (dark + light)
- Store: fetchCrossTeamTargets (all teams), sendCrossTeamMessage action
- Tests updated for sender copy and formatted text prefix
- Updated TeamProvisioningService to mirror provisioning narration into the live cache, allowing visibility in Messages/Activity.
- Modified TeamDetailView to include current lead session ID for better context in team interactions.
- Enhanced ActivityTimeline to suppress reconnect boundaries based on current lead session ID, improving session clarity.
- Adjusted MessageComposer to clarify provisioning status in UI messages and placeholders, enhancing user awareness during team launches.
- Updated TeamProvisioningService to prevent duplicate display of provisioning narration in the Activity timeline.
- Enhanced CompactBoundary component with a cleaner design and improved interaction for expanding/collapsing content.
- Added new CSS variables for compact phase badge styling to enhance visual consistency.
- Modified TeamDetailView to include a collapsible status block for better organization of team information.
- Improved MessageComposer to reflect provisioning status in placeholders and notifications, enhancing user awareness during team launches.
- Updated ActivityTimeline to suppress session separators for reconnects within the same team, streamlining the user experience.
- Enhanced the startTask function to clear stale kanban entries when a task is reopened, ensuring accurate task tracking.
- Updated the addTaskComment function to handle notification failures gracefully, allowing comments to persist even if owner notifications fail.
- Added tests to validate the resilience of task comment notifications and ensure correct behavior under failure scenarios.
- Refactored related functions for improved clarity and maintainability in task management.
- Introduced a new function to notify task owners on comments from other members, improving communication and responsiveness.
- Updated existing comment handling functions to include logic for notifying owners based on comment type and author.
- Added tests to validate the new notification behavior, ensuring that owners are correctly alerted for relevant comments while avoiding unnecessary notifications for self-comments.
- Refactored task management logic to streamline comment processing and notification handling.
- Introduced a new function to determine the current review state based on task history events, improving the accuracy of review status tracking.
- Updated the requestReview, approveReview, and requestChanges functions to append corresponding review events to the task history, ensuring comprehensive tracking of review actions.
- Refactored task management logic to utilize the new historyEvents structure, replacing the previous statusHistory implementation for better clarity and maintainability.
- Enhanced tests to validate the new review event handling and ensure correct behavior across various task states.
- Added 'needsFix' as a new review state to improve task tracking and management.
- Updated kanban and task handling functions to accommodate the new review state, including modifications to clearKanban and task status updates.
- Enhanced task briefing output to include sections for tasks needing fixes, pending tasks, and approved tasks, improving clarity in task management.
- Updated UI components to display the 'needsFix' state appropriately across various views, including task rows and tooltips.
- Refactored tests to cover new functionalities related to the 'needsFix' state, ensuring comprehensive coverage of task management scenarios.
- Refactored task creation logic to support explicit immediate start and maintain default pending status.
- Implemented notification system for task owners upon assignment, including detailed task instructions.
- Enhanced task briefing output to provide a compact view of assigned tasks, differentiating between in-progress, pending, and completed tasks.
- Added utility functions for better task management and streamlined task reference handling.
- Updated tests to cover new task assignment notifications and briefing functionalities, ensuring accurate task status representation.
- Added a new method to create and push live lead messages during team provisioning, enhancing real-time communication.
- Updated the event handling to ensure lead-message events only refresh team details, preventing unnecessary updates to team/task lists.
- Improved error handling in team data refresh to preserve existing data during provisioning and transient errors.
- Enhanced tests to cover new lead-message functionality and ensure proper behavior during team provisioning scenarios.
- Removed the legacy teamctl CLI integration, including the associated source code and references in the main module.
- Updated the package description to reflect the current functionality without legacy support.
- Cleaned up build scripts by removing unnecessary executable permissions and legacy file handling.
- Adjusted tests and documentation to remove references to the deprecated CLI.
- Refactored plugin and MCP server installation/uninstallation handlers to use async/await for improved readability and error handling.
- Added cache invalidation logic upon successful installation of plugins and MCP servers to ensure up-to-date state.
- Introduced error message handling for installation failures, providing users with clearer feedback on issues encountered during the process.
- Updated UI components to display error messages related to installation and uninstallation, enhancing user experience.
- Implemented sanitization for MCP server names to ensure compliance with CLI requirements.
- Cron-based task scheduling with SchedulerService (create, pause, resume, delete)
- One-shot executor using `claude -p` with stream-json output for rich log display
- CLAUDECODE env var stripped to prevent nested session detection
- JsonScheduleRepository for persistent schedule/run/log storage
- Full IPC pipeline: handlers, preload bridge, API types, HttpClient stubs
- ScheduleSection UI with create/edit dialog, run history, status badges
- ScheduleRunLogDialog with CliLogsRichView (thinking blocks, tool cards, markdown)
- Real-time run status updates via store subscription
- Retry logic with configurable max retries and auto-pause on consecutive failures
- CronScheduleInput with human-readable descriptions via cronstrue
- 3 test suites: SchedulerService, ScheduledTaskExecutor, JsonScheduleRepository
- Removed legacy overlay review state handling from taskStore, simplifying task normalization processes.
- Updated task retrieval methods to directly use normalized task data without fallback to legacy kanban states.
- Eliminated outdated tests related to legacy kanban overlay, focusing on modern task management mechanisms.
- Refactored TeamDataService and TaskBoundaryParser to enhance clarity and maintainability by removing unnecessary complexity.
- Updated related types and interfaces to reflect the removal of legacy support.
- Updated the `getTeamData` method to accept an options parameter, allowing for conditional inclusion of messages in the response.
- Modified the `handleGetData` function to validate and process the new options, improving flexibility in data retrieval.
- Enhanced the `TeamDetailView` and message components to handle loading states and display messages based on the new options.
- Introduced a loading delay for messages to optimize UI performance during data fetching.
- Updated relevant types and interfaces to support the new options structure.
- Added `ensureStableMessageIds` method to assign deterministic IDs to messages lacking a messageId, ensuring stability across UI updates.
- Introduced `normalizeMessageIdPart` for consistent message ID formatting.
- Enhanced `buildTeammateAgentBlockReminder` function to provide clear internal instructions for handling agent-only messages.
- Updated tests to verify the inclusion of hidden-instruction block rules in team prompts.
- Introduced a new `wrapAgentBlock` function to standardize the formatting of agent-only messages across the application.
- Updated the `requestReview` method to utilize the new agent block format, enhancing consistency in review request messages.
- Refactored legacy agent block handling to support both new XML-like and legacy fenced formats, ensuring backward compatibility.
- Enhanced tests to validate the new agent block formatting and ensure proper extraction of agent-only content from messages.
- Updated the addTaskComment method to include the author as 'user' for better context in task comments.
- Enhanced error handling in TeamProvisioningService during MCP config file writing to ensure proper cleanup on failure.
- Improved user interface elements in TeamDetailView and AddMemberDialog for better accessibility and responsiveness.
- Refined mention handling in MentionableTextarea to allow for smoother user interactions with task references.
- Adjusted CSS styles for better visual contrast in light theme, enhancing overall user experience.
- Updated the check:workspace script to include end-to-end testing for the MCP package.
- Added a new test:e2e script in the MCP server for running end-to-end tests.
- Refactored controller import logic to support default exports from the agent-teams-controller.
- Improved team deletion handling in IPC by ensuring team provisioning is stopped before deletion.
- Introduced a function to resolve the real node binary path for better compatibility in Electron environments.
- Enhanced task display in MemberCard and TaskDetailDialog components for improved user experience.
- Enhanced package.json scripts by adding a new linting command for the MCP workspace and updating the check script to include MCP linting.
- Modified CI workflow to replace individual typecheck and lint steps with a consolidated validation step for improved efficiency.
- Introduced a new TypeScript configuration for testing in the MCP server, enhancing type checking capabilities.
- Reorganized imports in several components for better clarity and maintainability.
- Added maintenance module to the agent-teams-controller, enabling the reconciliation of stale kanban entries and linked inbox comments.
- Implemented garbage collection logic in kanbanStore to remove invalid task references and clean up column orders.
- Updated controller to expose maintenance functionalities, allowing for better task and comment management.
- Enhanced tests to validate the new reconciliation process, ensuring idempotency and correctness in handling stale data.
- Integrated new CLI argument options for worktree and custom arguments in team launch and creation dialogs, improving user flexibility.
- Added requestReview method to facilitate task review requests, integrating with kanban and messaging systems.
- Updated taskStore to manage review states, ensuring compatibility with kanban columns.
- Enhanced message handling by introducing appendSentMessage for better tracking of sent messages.
- Improved task management by normalizing review states and integrating them into task creation and retrieval processes.
- Updated tests to cover new review and messaging features, ensuring robust functionality across components.
- Added agent-teams-controller as a dependency and updated the bundling configuration to exclude it.
- Refactored task management functions to utilize the new taskStore, improving code organization and maintainability.
- Introduced new methods for handling task states, including soft deletion and restoration.
- Enhanced kanban functionality with improved reviewer management and task column updates.
- Updated tests to reflect changes in task creation and approval processes, ensuring robust coverage.
- Improved task ID handling and display logic for better user experience across components.
- useNewItemKeys: replace useRef with useState to fix react-hooks/refs
errors, add missing paginationKey dependency, use derive-state-during-render
pattern for resetKey, wrap commit step in queueMicrotask
- TeamProvisioningService: re-arm pendingPostCompactReminder in second
idle guard after async work so reminder is deferred instead of dropped
Resolve conflicts in ActivityTimeline and TaskCommentsSection by keeping
the newer useNewItemKeys hook approach from dev over the reducer/useState
approach from the lint-fix branch.
- Fix import sorting (simple-import-sort) in 10+ files
- Remove unnecessary type assertions in TeamProvisioningService, store/index
- Extract nested template literals in httpClient.ts
- Fix react-hooks/refs violations: replace render-time ref access with
useState + "adjust state during render" pattern in ActivityTimeline,
TaskCommentsSection, AnimatedHeightReveal
- Fix react-hooks/rules-of-hooks: move conditional hooks above early returns
in ActivityTimeline, ToolApprovalSheet
- Fix react-hooks/set-state-in-effect: wrap synchronous setState in
queueMicrotask in useComposerDraft, MessageComposer, AttachmentPreviewList,
ToolApprovalSheet
- Fix react-hooks/exhaustive-deps: destructure draft properties before
useCallback in MessageComposer, copy ref values in AttachmentPreviewList
- Fix no-param-reassign: use Object.assign in ToolApprovalSheet, local
variable in AnimatedHeightReveal
- Fix sonarjs violations: remove void operator, reduce nesting in
LeadThoughtsGroup; remove unused import in CliLogsRichView
- Use RegExp.exec() instead of String.match() in FileLink
- Use optional chain in streamJsonParser with eslint-disable for TS conflict
- Updated ClaudeLogsSection to conditionally render search and filter components based on log availability, enhancing user experience.
- Adjusted TeamDetailView layout by adding padding to the action container for better alignment and visual consistency.
- Improved handling of empty log states in ClaudeLogsSection to provide clearer user feedback.
- Replaced manual tracking of new item keys in ActivityTimeline and TaskCommentsSection with a new custom hook, useNewItemKeys, for improved code clarity and reusability.
- Simplified state management related to new items in both components, enhancing maintainability and reducing complexity.
- Updated related logic to ensure consistent handling of newly visible items during pagination and resets.
- Refactored notification handling to utilize NotificationManager for team events, improving consistency and reducing duplicate notifications.
- Introduced deduplication keys for notifications to prevent storage of identical messages.
- Updated notifyNewInboxMessages and notifyNewSentMessages functions to streamline message processing and enhance user experience.
- Enhanced rate limit message handling with in-memory tracking to prevent re-notification of deleted messages.
- Improved UI components with new animations and consistent styling for better user engagement.
- Added support for team-specific notifications, including new event types and improved error handling in notifications.
- Added theme-aware accent and info colors in tailwind configuration for improved visual consistency.
- Updated CSS variables for accent and info styles to support light and dark themes.
- Refactored various components to utilize the new themed badge logic, ensuring consistent styling based on the current theme.
- Improved accessibility and visual feedback in components like SidebarTaskItem, TeamListView, and ActivityItem by adjusting color schemes and hover states.
- Enhanced the CreateTeamDialog and other team-related components with updated styling for better user experience.
- Improved post-compact reminder handling in TeamProvisioningService to preserve pending reminders during compact boundaries and ensure proper state management on errors.
- Updated SendMessageDialog to remove the summary field, simplifying the message submission process and ensuring the message body is used consistently.
- Enhanced MemberCard styling with a gradient background for better visual appeal.
- Adjusted MemberList layout to dynamically adapt based on sidebar state, improving user experience in member display.
- Added tests to validate new reminder logic and ensure live config updates are reflected in reminders.
- Replaced hardcoded maximum lengths for comments and messages with a centralized constant `MAX_TEXT_LENGTH` for consistency across components.
- Enhanced README to provide a brief overview of the project.
- Introduced a new function to build a compact members roster for improved team member display in reminders.
- Added support for displaying image attachments from comments in the task detail dialog.
- Updated session and subagent route handlers to support an optional `bypassCache` query parameter, allowing clients to bypass cached responses.
- Enhanced README to include a Discord link for community engagement.
- Improved CSS for lightbox toolbar buttons to address macOS hit-testing issues.
- Refactored task ID linkification in markdown to ensure accurate matching and improved functionality in various components.
- Improved lightbox toolbar button hit targets for better accessibility.
- Updated ActivityItem and ActivityTimeline components to support managed collapse states for messages.
- Refactored message collapsing logic to allow for user-controlled expansion in various components.
- Enhanced CreateTeamDialog and LaunchTeamDialog with improved loading indicators and layout adjustments.
- Increased maximum message length in SendMessageDialog to accommodate larger inputs.
- Added icons and visual enhancements in ProjectPathSelector and EffortLevelSelector for better user experience.
- Added support for user-controlled message expansion in ActivityTimeline and LeadThoughtsGroup components.
- Integrated expand/collapse overrides to allow users to manually expand messages even in collapsed mode.
- Updated ActivityItem to trigger collapse toggle callbacks on click and key events for improved accessibility.
- Refactored related components to accommodate new expand/collapse logic, enhancing user experience in message handling.
- Introduced EffortLevel type to define valid effort levels ('low', 'medium', 'high').
- Updated TeamCreateRequest and TeamLaunchRequest interfaces to include effort parameter.
- Enhanced CreateTeamDialog and LaunchTeamDialog to allow users to select effort levels.
- Integrated effort level handling in provisioning requests and responses within TeamProvisioningService.
- Removed auto-focus effect in ToolApprovalSheet for improved user experience.
- Added support for tool approval requests and responses in the team provisioning service.
- Introduced IPC channels for handling tool approval events between main and renderer processes.
- Enhanced the UI to display tool approval requests and allow user responses through new components.
- Updated team launch and creation dialogs to include an option for skipping permissions, integrating with the new tool approval logic.
- Implemented state management for pending approvals in the store, ensuring a seamless user experience during tool interactions.
- Renamed package from `@claude-team/mcp-server` to `agent-teams-mcp` and updated description for clarity.
- Added `files` and `keywords` fields in package.json for better package management.
- Introduced new loading logic in ClaudeLogsSection to handle older log retrieval and improved state management for loading indicators.
- Implemented utility functions for appending older log lines and determining overlap, enhancing log display efficiency.
- Updated ActivityItem and ActivityTimeline components to support message collapsing functionality, improving user experience in message handling.
- Added `strip-markdown` package to handle markdown formatting in plain-text contexts.
- Updated `teams.ts` and `NotificationManager.ts` to use `stripMarkdown` for truncating notification bodies and error messages, enhancing readability.
- Introduced `textFormatting.ts` utility for markdown stripping functionality.
- Enhanced `GlobalTaskList` component with sorting options and improved UI for task management.
- Implemented localStorage persistence for collapsed group states in `useCollapsedGroups` hook.
ResizeObserver stops firing once scroll container reaches maxHeight,
breaking auto-scroll for long-running live thought groups. Use useEffect
on chronologicalThoughts dependency instead.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix import sort order in 6 files (TeamDataService, TeamProvisioningService,
ChatHistory, SortableTab, LeadThoughtsGroup, MemberDraftRow)
- Replace slow regex with string manipulation in MemberStatsComputer
- Use RegExp.exec() instead of String.match() in toolSummary
- Fix non-backtracking regex pattern in toolSummary parser
- Remove unnecessary type assertions in TeamDataService and TeamProvisioningService
- Convert for-loop to for-of in TeamDataService
- Fix no-param-reassign in TeamDataService.sendMessage
- Convert function component to arrow function in LeadThoughtsGroup
- Fix nested functions depth in MentionableTextarea tip rotation
- Use optional chain in teamSlice
- Updated LeadThoughtsGroup component to visually distinguish 'Agent' and 'TaskCreate' tool calls with specific styling and icons.
- Increased the character limit for tool previews from 60 to 200 in the extractToolPreview function, allowing for more detailed descriptions.
- Improved overall tooltip display for better user insights into tool usage.
- Refactored TeamDataService and TeamProvisioningService to replace tool usage counts with structured tool call details, improving accuracy and clarity in tool tracking.
- Introduced ToolCallMeta type for better representation of tool call metadata, including name and preview.
- Updated tool summary generation to utilize new tool call details, enhancing the visibility of tool interactions in messages.
- Enhanced LeadThoughtsGroupRow to aggregate tool calls for improved tooltip display, providing users with clearer insights into tool usage.
- Modified UI components to accommodate changes in tool summary handling, ensuring a consistent user experience.
- Updated README to clarify that the app runs entirely locally and added a comprehensive table of contents.
- Enhanced the description of the Claude Agent Teams UI to better convey its functionality and target audience.
- Improved the SortableTab component to ensure immediate rendering of team colors based on available data.
- Filtered out team lead members in the TeamDetailView to streamline member display.
- Eagerly patched team data in the state management to improve UI responsiveness and data accuracy.
- Added new dependencies for mcp-server in pnpm-lock.yaml, including fastmcp and zod.
- Updated pnpm-workspace.yaml to include mcp-server in the workspace packages.
- Modified TeamDataService and TeamProvisioningService to exclude 'SendMessage' from tool usage counts, improving accuracy in tool tracking.
- Enhanced ChatHistory component to display context injection percentages, improving user feedback on context usage.
- Updated TeamDetailView to ensure session details are fetched periodically for active tabs, enhancing data freshness.
- Improved ActivityTimeline styling for better visual separation of sessions and messages.
- Replaced buildToolSummary with formatToolSummaryFromMap in TeamDataService and TeamProvisioningService to streamline tool summary generation.
- Enhanced JSONL file path handling in TeamDataService to accommodate variations in project directory naming.
- Introduced pendingToolCounts in TeamProvisioningService to accumulate tool usage data for better message context.
- Updated SortableTab and DragOverlayTab components for improved styling and responsiveness.
- Adjusted ClaudeLogsSection to refine log display height for better usability.
- Enhanced TeamDetailView to filter out lead-to-user messages temporarily, improving message clarity.
- Added model selection UI in MemberDraftRow with informative tooltips for user guidance.
- Improved MentionableTextarea with rotating tips to enhance user experience during message composition.
- Added tool summary generation in TeamDataService and TeamProvisioningService to capture tool usage details in messages.
- Updated InboxMessage type to include toolSummary for better tracking of tool usage in assistant messages.
- Enhanced LeadThoughtsGroupRow to aggregate and display total tool usage across thoughts, improving visibility of tool interactions.
- Refactored TeamModelSelector to incorporate provider icons and improve user interface for model selection.
- Updated README and CLAUDE.md to reflect new command usage and features related to tool summaries.
- Refactored isValidFilePath function to improve validation logic, including trimming whitespace and stripping trailing punctuation.
- Updated MemberStatsComputer to filter out invalid file paths from perFileStats, ensuring only valid paths are included in the final stats.
- Added unit tests for isValidFilePath to cover various edge cases, enhancing reliability of file path handling.
- Improved overall code readability and maintainability in MemberStatsComputer.
- Updated handleGetSessionDetail and handleGetSubagentDetail functions to accept an optional options parameter for bypassing cache.
- Modified IPC and API methods to support the new options parameter, enhancing flexibility in data retrieval.
- Adjusted MemberLogsTab to utilize the bypassCache option when fetching log details, improving data freshness.
- Updated message deduplication logic in handleGetData to exclude lead_process messages with a 'to' field.
- Added source field to message payloads in TeamAgentToolsInstaller for system notifications.
- Enriched sendMessage function in TeamDataService with leadSessionId for better session tracking.
- Improved UI components including MessageComposer placeholder text and scroll behavior in ActivityTimeline.
- Enhanced LeadThoughtsGroupRow to support live indicators and auto-scroll functionality for new messages.
- Added an eslint-disable comment in LeadThoughtsGroupRow to clarify intentional state updates in useEffect.
- Removed unnecessary eslint-disable comment in TaskAttachments to clean up the codebase.
- Implemented lead session ID propagation in TeamDataService to enrich inbox messages without existing leadSessionId.
- Added source and leadSessionId fields to message payloads in TeamInboxReader for better tracking.
- Updated CSS for compact CLI logs display, improving item density in the UI.
- Refactored CliLogsRichView and LeadThoughtsGroupRow to support new UI features and enhance message visibility.
- Adjusted ActivityTimeline to include zebra striping for better readability of messages.
- Updated handleGetData to collect text fingerprints from all message sources for deduplication of lead_process messages.
- Removed outdated leadSessionId assignment logic in TeamDataService to streamline message processing.
- Enhanced CollapsibleTeamSection and TeamDetailView to support an afterBadge prop for additional UI elements.
- Refactored ActivityTimeline to optimize pagination by excluding lead thoughts from visible message counts.
- Improved LeadThoughtsGroup to ensure single thoughts are rendered as distinct groups, enhancing clarity in the timeline.
- Enhanced TeamDataService to include a 'source' field in message payloads, specifically for system notifications.
- Updated InboxMessage type to accommodate the new 'system_notification' source.
- Modified TeamInboxWriter to conditionally include the source field in the message payload.
- Added tests to verify the inclusion and omission of the source field based on request parameters.
- Refactored TeamDataService to improve lead session message handling, including deduplication logic to prevent double-rendering of messages.
- Added leadSessionId to InboxMessage type for better session tracking.
- Updated ActivityTimeline to visually separate messages by session, enhancing user experience.
- Improved LeadThoughtsGroupRow to support live indicators and auto-scroll functionality for new messages.
- Enhanced AddMemberDialog, LaunchTeamDialog, and MemberDraftRow with updated placeholder text for clarity.
- ConfigEditorDialog: wrap api.config.get() in try/catch to prevent
dialog from getting stuck in loading state on IPC failure
- CreateTaskDialog: clear description and chips when dialog opens
without defaults, preventing stale state from previous opens
- useAttachments: handle persistenceKey→undefined transition by
flushing pending saves and clearing stale attachment state
- Remove commented-out code in TeamProvisioningService and MemberCard
(sonarjs/no-commented-code)
- Revert useAttachments keyRef sync from useEffect back to direct
render assignment to avoid stale closure race, suppress react-hooks/refs
- Updated ProvisioningRun interface to include leadTurnSeq and leadTurnMessageTimestamp for better tracking of lead messages.
- Refactored pushLiveLeadProcessMessage to handle message updates and prevent duplicates.
- Introduced removeLiveLeadProcessMessage for better management of live lead messages.
- Enhanced ActivityTimeline to group lead thoughts into collapsible blocks and improve zebra striping logic.
- Updated MemberLogsTab to support quick previews from lead sessions, enhancing task visibility.
- Fix React hooks violations: ref updates during render (useDraftPersistence,
useChipDraftPersistence, useAttachments), setState in effects across 15+
components, useCallback self-reference TDZ in useResizableColumns
- Fix TypeScript lint: remove unnecessary type assertions, replace inline
import() annotations with direct imports, remove unused variables/imports
- Fix SonarJS issues: prefer-regexp-exec, slow-regex in SubagentResolver,
no-misleading-array-reverse in TeamProvisioningService, use-type-alias
in ClaudeLogsSection, variable shadowing in ChangeExtractorService
- Fix accessibility: associate labels with controls in filter popovers
- Fix template expression safety: wrap unknown errors with String()
- Fix flaky FileWatcher test: floor instanceCreatedAt to second granularity
to match filesystem birthtimeMs resolution on Linux
- Replace TODO comments with NOTE where features are intentionally disabled
- Remove unused leadContextByTeam from TeamDetailView store selector
62 files changed across main process, renderer, shared types, and hooks.
All 1646 tests pass, typecheck clean, 0 lint errors.
- Increased PREFLIGHT_TIMEOUT_MS to 60 seconds for improved preflight checks.
- Updated PREFLIGHT_PING_PROMPT for clarity and added new arguments to PREFLIGHT_PING_ARGS for enhanced probing.
- Introduced isTransientProbeWarning function to better handle transient warnings during probe operations.
- Enhanced readiness messages in TeamProvisioningService to provide clearer feedback based on warning states.
- Improved ClaudeLogsSection to reflect team status more accurately in log messages.
- Simplified message sending behavior in SendMessageDialog and TaskCommentInput by removing modifier key references.
- Added subagent message preview functionality in MemberLogsTab for better task tracking and visibility.
- Added new properties to ProvisioningRun for managing lead text emission state and throttling.
- Implemented logic to push lead text messages immediately after provisioning, improving real-time updates in the UI.
- Updated DisplayItemList to support customizable render order for display items.
- Refactored task assignment visibility in various components to replace "Не назначено" with "Unassigned" for better clarity.
- Enhanced TaskDetailDialog and KanbanTaskCard to improve user experience with task ownership display.
- Implemented validation for member names to prevent the use of auto-suffixed names (e.g., "alice-2") in TeamDataService and TeamProvisioningService.
- Added cleanup functionality to remove auto-suffixed members from configuration and metadata, ensuring a cleaner team member list.
- Enhanced error handling for member name inputs, including checks for empty names and reserved names like "team-lead".
- Updated member management logic in TeamFSWorker to drop auto-suffixed members from the member map.
- Improved overall robustness of team member handling across services.
- Added functionality to drop CLI auto-suffixed duplicates (e.g., "alice-2") when the base name exists in TeamConfigReader, TeamMemberResolver, and TeamMembersMetaStore.
- Introduced createCliAutoSuffixNameGuard utility to manage name validation.
- Updated ActivityItem component to handle system messages with distinct styling.
- Enhanced CSS variables for system activity messages in index.css.
- Refactored SortableTab and TeamTabSectionNav components for improved layout and accessibility.
- Bumped package version from 0.1.0 to 1.0.0 to reflect significant updates.
- Added @codemirror/lint dependency to enhance code linting capabilities.
- Updated pnpm-lock.yaml to include the new linting dependency version.
- Updated TeamDataService to ensure consistent kanban task status updates with rollback capabilities on failure.
- Introduced silentUserDmForward functionality in TeamProvisioningService to manage internal DM forwarding to teammates without user echo.
- Enhanced task status update logic in TeamTaskWriter to prevent redundant updates.
- Improved ClaudeLogsSection to support search query overrides for better log filtering in the UI.
- Introduced caching mechanisms in TeamProvisioningService to optimize probe results and reduce redundant calls.
- Refactored warmup logic to utilize a new getCachedOrProbeResult method for better performance.
- Enhanced DisplayItemList, TextItem, and ThinkingItem components to support optional search query overrides for improved inline highlighting.
- Updated MarkdownViewer to handle search highlighting more effectively, accommodating local search queries.
- Improved TaskAttachments and TaskDetailDialog components with better handling of task assignment visibility and user experience.
- Introduced functions to identify and filter out internal coordination noise from inbox messages, improving notification relevance.
- Updated TeamProvisioningService to automatically mark noise messages as read, reducing clutter for team leads.
- Enhanced TeamDetailView and MessagesFilterPopover to allow users to toggle visibility of noise messages in the UI.
- Refactored various components to improve the handling of task attachments and message serialization, ensuring better user experience.
- Improved error handling and state management in session detail fetching, allowing for real-time updates without UI disruptions.
- Introduced utility functions for summing context injection tokens and formatting percentages of total tokens.
- Updated SessionContextPanel and SessionContextHeader to utilize new utility functions for improved readability and maintainability.
- Refactored TeamDetailView to streamline context token calculations and enhance the display of context percentages.
- Improved error handling in ProjectPathSelector for better user experience during folder selection.
- Made minor adjustments to ActivityTimeline and ProvisioningProgressBlock for code clarity and consistency.
- Integrated yet-another-react-lightbox to improve image preview functionality across various components.
- Updated ImageLightbox and AttachmentDisplay to utilize the new lightbox for displaying images.
- Enhanced TaskAttachments and TaskCommentsSection to support image lightbox previews, improving user experience when viewing attachments.
- Refactored SendMessageDialog and EditorImagePreview to ensure consistent image handling with the new lightbox implementation.
- Introduced functionality for managing task attachments, including file storage and retrieval with size validation.
- Added methods for sanitizing filenames and detecting MIME types based on file headers.
- Enhanced TeamTaskAttachmentStore to support new attachment naming conventions and improved file path management.
- Updated TeamProvisioningService to include new commands for attaching files to tasks and comments.
- Improved UI components to facilitate attachment management, including confirmation dialogs for task deletions and enhanced log displays.
- Introduced TEAM_GET_CLAUDE_LOGS IPC channel for fetching buffered Claude CLI logs.
- Implemented handleGetClaudeLogs function to validate requests and retrieve logs with pagination support.
- Enhanced TeamProvisioningService to manage and store Claude log lines, including limits on stored logs.
- Added ClaudeLogsSection component to display logs in the UI, with support for pagination and real-time updates.
- Updated relevant types and API interfaces to accommodate new log retrieval features.
- Updated SendMessageDialog and MessageComposer to support team-specific draft persistence for messages and attachments.
- Refactored logic for attachment handling to ensure proper validation based on team status.
- Improved MemberLogsTab to sort logs and manage expanded log details more effectively.
- Enhanced useDraftPersistence and useChipDraftPersistence hooks to manage draft states with improved key handling.
- Added debounced save functionality for draft persistence to prevent stale data issues.
- Updated task sorting logic in TeamTaskReader to handle non-numeric IDs with stable lexicographic ordering.
- Refactored ActivityItem to remove unnecessary whitespace for cleaner code.
- Enhanced AttachmentPreviewItem to improve accessibility by adding pointer-events-none class for disabled state.
- Modified MessageComposer to ensure the summary remains compact during message sending.
- Added cleanup logic in useResizableColumns to handle global listeners and styles during drag events.
- Updated local image storage documentation to reflect changes in protocol handling for attachments.
- Added attachment metadata handling in message sending and inbox writing processes, improving attachment management.
- Implemented size validation for attachments in the TeamAttachmentStore, ensuring compliance with storage limits.
- Enhanced UI components to support attachment previews and improved user experience in managing attachments.
- Introduced a new RoleSelect component for better role management within teams.
- Added support for lead context usage tracking, allowing retrieval of context window usage for team leads.
- Implemented attachment handling in task comments, enabling users to add and manage attachments with size and type validation.
- Updated README to include new features related to visual workflow editor and multi-model support.
- Improved error handling and validation for task comments and attachments, ensuring a smoother user experience.
- Updated README to specify CLI runtime capabilities for headless environments.
- Introduced a comprehensive implementation plan for the diff view feature, detailing phases, required packages, types, IPC channels, backend services, and UI components.
- Added new documentation on competitors in AI orchestration platforms and research on local image storage and markdown rendering pipeline.
- Included a workflow editor research document to evaluate visual libraries for node-based workflow orchestration.
- Introduced a conflict dismissal feature in CreateTeamDialog and LaunchTeamDialog to allow users to dismiss conflict warnings when a team is already running.
- Added state management for conflict dismissal and reset logic to ensure the warning reappears when relevant conditions change.
- Updated UI to include a dismiss button for better user experience in handling team conflicts.
- Introduced clearProvisioningError method in team-related components to reset provisioning errors when dialogs open, enhancing user experience.
- Added onRestartTeam callback to ActivityItem and ActivityTimeline components for handling authentication errors, allowing users to restart teams directly from error messages.
- Updated various components to support the new functionality, improving error handling and team management interactions.
- Changed default value of includeSubagentErrors to false across multiple components for consistency in notification settings.
- Updated type definitions for statusChangeStatuses to use string arrays instead of TeamTaskStatus, enhancing flexibility in status management.
- Adjusted step numbering in TeamProvisioningService to improve clarity in task execution instructions.
- Enhanced logic in teamSlice to correctly handle status changes, including the new 'approved' kanban column, ensuring accurate notifications for task transitions.
- Updated fileMentionsTaskId method to include an 'assumeTeam' parameter for better team detection in logs.
- Added logic to extract team information from process entries and message content, improving task attribution accuracy.
- Enhanced handling of task updates without explicit team names, ensuring correct task processing in solo scenarios.
- Improved overall robustness of log parsing and team identification, facilitating better task management in team environments.
- Added functionality to conditionally display the archive toggle based on the presence of archived tasks.
- Implemented a new `handleRenameCancel` function to reset the renaming state.
- Refactored task state management to improve performance using `useMemo` for returning task local state.
- Enhanced overall task management experience by improving the visibility and organization of tasks in the sidebar.
- Updated task assignment notifications to skip inbox messages when leads assign tasks to themselves, improving user experience for solo teams.
- Refactored notification logic in TeamAgentToolsInstaller and TeamDataService to ensure clarity and maintainability.
- Introduced new functionality in GlobalTaskList to manage pinned and archived tasks, enhancing task visibility and organization.
- Added renaming capabilities for tasks in SidebarTaskItem, allowing users to edit task subjects directly.
- Improved overall task filtering and grouping logic to support better task management practices.
- Updated the `getTaskChanges` method to accept an optional `options` parameter, allowing for more granular control over the retrieval of task changes.
- Introduced new fields in the options object, including `owner`, `status`, `since`, and `intervals`, to improve filtering capabilities.
- Refactored related services and IPC methods to accommodate the new options, enhancing the overall task change management experience.
- Improved type definitions for better clarity and maintainability.
- Added new configuration options for task status change notifications, including toggles for enabling notifications, solo mode restrictions, and customizable target statuses.
- Updated validation logic to accommodate new notification settings, ensuring proper handling of boolean and array types.
- Enhanced UI components to allow users to manage status change notification preferences effectively.
- Implemented backend logic to detect and trigger notifications based on task status changes, improving user awareness of task progress.
- Invalidate main-process file content cache after applying review decisions
- Clear stale per-file review state after instant-apply to prevent re-apply conflicts
- Disable accept/reject for preview-only files and surface deleted/renamed/moved badges
- Persist per-file collapse state across reopen
Made-with: Cursor
- Introduced a new `statusHistory` feature to record every status transition of tasks, including the previous status, new status, timestamp, and actor responsible for the change.
- Updated task creation and status update methods to append transitions to the status history, ensuring a comprehensive audit trail.
- Enhanced UI components to display the status history, providing better visibility into task progress and changes over time.
- Refactored related services to support the new status history functionality, improving overall task management practices.
- Added functionality to re-add rejected new files to the review list, allowing for undo operations.
- Introduced a new `addReviewFile` method in changeReviewSlice to facilitate restoring files with their content.
- Updated ChangeReviewDialog to manage undo actions for recently rejected files, improving user experience during file reviews.
- Refactored file handling logic to ensure accurate state management and enhance the overall review process.
- Removed unnecessary member metadata retrieval in TeamDataService to simplify task handling and prevent self-notifications for lead-owned tasks.
- Updated lead owner validation to ensure consistent case handling.
- Introduced a new reference in ChangeReviewDialog to manage in-flight file operations, preventing duplicate actions during file rejection.
- Enhanced changeReviewSlice to return null for invalid states, improving error handling and state management.
Made-with: Cursor
- Added a new "Solo mode" feature in the README, allowing a single agent to manage tasks independently, improving token efficiency.
- Updated TeamMemberLogsFinder to include team name in task ID checks, preventing cross-team task collisions.
- Enhanced TeamProvisioningService with clearer task status protocols and execution discipline guidelines to improve task management practices.
- Introduced new callbacks in ChangeReviewDialog for accepting and rejecting new files, streamlining the review process.
- Updated changeReviewSlice to handle file rejection logic, ensuring accurate state management during reviews.
Made-with: Cursor
- Updated WorktreeGrouper to normalize project paths before resolving identities and branches, ensuring consistent behavior across platforms.
- Enhanced TeamDataService to improve lead name resolution and prevent self-notification for comments on lead-owned tasks in solo teams.
- Added new utility functions in TeamDataService for better lead name handling and solo team validation.
- Improved TeamMemberLogsFinder to exclude owner sessions when the owner is the team lead, refining log retrieval logic.
- Updated UI components to reflect changes in team member suggestions based on solo team status.
Made-with: Cursor
- Added validation to prevent the use of reserved names ("user" and "team-lead") for team members, ensuring clearer error messages during member addition.
- Updated IPC handlers to improve logging functionality, enhancing observability of team-related actions.
- Implemented normalization of file paths across various services to ensure consistent handling on different platforms.
- Enhanced UI components to provide better feedback on team member statuses and actions.
Made-with: Cursor
- Added background polling timer stop during service shutdown to prevent hanging.
- Enhanced IPC handlers by importing and utilizing renderer log handlers for better logging.
- Updated team-related services to handle member provisioning more robustly, including validation for empty member arrays.
- Implemented timeout handling for file system operations to improve reliability.
- Improved UI components to reflect solo team status and provide clearer feedback on member counts.
Made-with: Cursor
- Added support for a new worker in the team file system to list teams, improving performance and reliability in team management.
- Introduced event loop lag monitoring in various IPC handlers to track and log slow operations, enhancing observability.
- Implemented caching for CLI installation status to reduce redundant calls and improve responsiveness.
- Updated project and team data services to include total session counts, optimizing data handling and performance.
- Enhanced error handling and logging across multiple services to provide clearer insights into performance issues and failures.
Made-with: Cursor
- Introduced a new utility function `readFileUtf8WithTimeout` to handle file reading with a specified timeout, improving robustness against long read operations.
- Added size validation for various team-related files (e.g., config, inbox, processes) to prevent issues with oversized files.
- Updated multiple services (TeamConfigReader, TeamDataService, TeamInboxReader, TeamKanbanManager, TeamMembersMetaStore, TeamProvisioningService, TeamSentMessagesStore, TeamTaskReader) to utilize the new file reading method and enforce size limits.
- Enhanced error handling to gracefully manage read timeouts and invalid file states, improving overall system stability.
Made-with: Cursor
- Updated error handling in TeamAgentToolsInstaller to provide clearer guidance on available domains, improving user experience.
- Added an important note in TeamProvisioningService documentation regarding domain support, clarifying that "member" is not a valid domain.
- Adjusted EditTeamDialog component for consistent styling by removing unnecessary class properties.
Made-with: Cursor
- Removed outdated OAuth token warning logic from TeamProvisioningService to streamline authentication handling.
- Updated TeamProvisioningBanner to prevent auto-dismissal of "ready" state, allowing users to inspect logs after rapid provisioning cycles.
- Enhanced TaskCommentsSection UI by integrating MemberBadge for author display and improving comment styling for better visual clarity.
Made-with: Cursor
- Added a new prop `defaultLiveOutputOpen` to control the initial state of the live output section in the ProvisioningProgressBlock component.
- Implemented state management for the live output visibility, allowing it to be expanded or collapsed based on user interaction.
- Updated the UI to display a message when no output is captured, improving user feedback during provisioning processes.
- Adjusted the TeamProvisioningBanner to utilize the new live output feature, enhancing the user experience during team provisioning.
Made-with: Cursor
- Introduced functionality to notify users of new messages in sentMessages.json, improving user awareness of team communications.
- Enhanced configuration validation to include new notification settings: notifyOnLeadInbox, notifyOnUserInbox, and notifyOnClarifications, ensuring proper boolean handling.
- Updated TeamProvisioningService to persist sent messages, improving message tracking and reliability.
- Improved UI components to reflect changes in message handling and user feedback during provisioning processes.
Made-with: Cursor
- Updated file naming in release workflow to use consistent dot notation for better clarity.
- Enhanced RELEASE.md to reflect updated file names for download links.
- Added logic to filter out the "user" pseudo-member in TeamMemberResolver to prevent confusion in team configurations.
- Improved error handling in TeamProvisioningService to avoid caching authentication failures and ensure accurate readiness status.
- Introduced visual tone handling in ProvisioningProgressBlock for better user feedback on errors.
Made-with: Cursor
- Introduced a new utility function, computeEffectiveTeamModel, to streamline the logic for determining the effective model based on selected options and context.
- Updated CreateTeamDialog and LaunchTeamDialog components to utilize the new utility for cleaner code.
- Refactored TeamProvisioningService test to improve type handling for child processes, ensuring compatibility with vitest.
Made-with: Cursor
- Updated the ReplaceMembersRequest import in preload to use a local type definition for consistency.
- Refactored MemberDraftRow and MembersEditorSection components to utilize InlineChip type directly, enhancing type clarity.
- Improved performance by using useMemo for workflow chips in MemberDraftRow, optimizing re-renders.
- Adjusted the JSON text setting in MembersEditorSection to use queueMicrotask for better asynchronous handling.
- Added TEAM_REPLACE_MEMBERS to IPC mock definitions for improved testing coverage.
- Added a new handler for replacing team members, allowing bulk updates to team member roles and workflows.
- Enhanced the FileSearchService to include caching for file listings, improving performance by reducing redundant file system scans.
- Updated editor and team-related services to support the new member replacement feature, ensuring proper validation and error handling.
- Improved UI components to accommodate workflow input for team members, enhancing user experience during team management.
- Refactored MentionableTextarea to use a getter for trigger index, enhancing performance and avoiding stale closures.
- Updated PRESET_ROLES to include additional roles: architect, docs, auditor, and optimizer, expanding role selection options.
- Adjusted package.json build scripts to remove automatic publishing flags for a more streamlined build process.
- Introduced a comprehensive FAQ section in the README to address common user queries regarding app installation, code handling, agent communication, and project management.
- Enhanced cross-platform keyboard shortcut handling in the Electron app for better user experience on macOS and Windows/Linux.
- Updated signal handling in the standalone process to ensure proper shutdown behavior across platforms.
- Improved WSL user resolution logic to support default user retrieval for better compatibility.
- Enhanced notification handling to support cross-platform features and improve user feedback.
- Refactored SSH connection management to include additional key file types and improve authentication handling.
- Updated team management services to ensure consistent process termination across platforms.
- Improved project path handling in team provisioning to accommodate different operating systems.
- Enhanced editor components to utilize shared utility functions for path management, improving code maintainability.
- Added support for revealing files in the editor when requested, enhancing user experience during file navigation.
- Implemented a pending file reveal mechanism to ensure files are opened correctly after the editor initializes.
- Updated the ChipInteractionLayer to allow users to open files directly from chips, streamlining access to relevant files.
- Enhanced the MentionSuggestionList styling for better visual feedback on selection.
- Improved mention detection logic to maintain selection state during redundant events, optimizing user interaction.
- Introduced a new IPC handler for listing project files, enabling file mentions independent of editor state.
- Enhanced the MentionableTextarea component to support file suggestions based on project path, improving user experience when mentioning files.
- Implemented a custom hook for loading and filtering project files as mention suggestions, optimizing performance with caching.
- Updated relevant components to integrate project path handling, ensuring seamless file mention functionality across dialogs and message composers.
- Improved EditorFileWatcher to debounce content change events, optimizing git status cache invalidation for rapid file saves.
- Updated ProjectScanner to derive project and display names from actual paths, enhancing reliability in project identification.
- Enhanced IPC methods for creating tasks and sending messages directly from the editor context menu, streamlining team collaboration.
- Refactored task relationship handling to ensure accurate linking of tasks based on user actions.
- Introduced animations for new chat messages and comments, improving user experience in chat history and task comments sections.
- Updated notification configuration to separate settings for lead and user inbox messages, improving user control over notifications.
- Enhanced the handling of inbox message notifications to respect individual inbox settings.
- Introduced new IPC methods for managing watched directories, allowing for more granular file monitoring.
- Improved task management by implementing work intervals for task status transitions, ensuring accurate tracking of task progress.
- Added validation for task creation and configuration, ensuring proper input handling for project paths and task properties.
- Introduced a grace period in EditorFileWatcher to ignore rapid 'change' events during startup, preventing performance issues in large repositories.
- Added a new IPC channel for setting watched file paths, optimizing file monitoring by focusing on currently open tabs.
- Updated the editor API to include the new setWatchedFiles method, enhancing performance by avoiding unnecessary project-wide file watching.
- Enhanced tests for EditorFileWatcher to validate the new startup behavior and ensure proper event handling.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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
- 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
- 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
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- Updated the import statement for highlight.js to use the main package instead of specific language imports, streamlining the code and reducing dependencies.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
- Updated the import statement for highlight.js to use the main package instead of specific language imports, streamlining the code and reducing dependencies.
- 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.
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>
- 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.
- 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.
- 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.
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>
Replace the hardcoded MODEL_PRICING table and costUsd() function in
sessionAnalyzer.ts with calculateMessageCost() and getDisplayPricing()
from the shared pricing module. Re-export getDisplayPricing as getPricing
for backward compat with CostSection. Replace the ModelPricing interface
with a type re-export of DisplayPricing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Simplified the initialization of the readSet in the `useTeamMessagesRead` hook by consolidating the logic into a single useMemo call.
- Removed unnecessary useEffect for setting the readSet, improving performance and readability.
- Updated `dev:kill` script to use a dedicated Node.js script for improved process termination.
- Enhanced `TeamProvisioningService` to trigger team refresh events for live lead replies, improving message handling.
- Refactored message deduplication logic in `handleGetData` to prevent duplicate messages from lead sessions and lead processes.
- Introduced `validateOpenPathUserSelected` function to allow user-selected paths while enforcing security checks.
- Improved UI components in `TeamListView` and `ActivityItem` for better user experience and accessibility.
- Added progress bar for task completion in `DashboardView`, enhancing task tracking visibility.
- Introduced MoreMenu component to consolidate less-frequent actions (Search, Export, Analyze, Settings) behind a dropdown menu.
- Removed individual action buttons from TabBar for a cleaner interface.
- Implemented functionality to close the menu on outside clicks and Escape key press.
- Introduced `withInboxLock` function to manage concurrent access to inbox files, preventing race conditions during message processing.
- Refactored `TeamInboxWriter` and `TeamProvisioningService` to utilize the new locking mechanism, ensuring safe read/write operations on inbox files.
- Updated `TeamListView` and related components to improve user experience during team management and message handling.
- Added new dependencies for linting and formatting, enhancing code quality and maintainability.
- Added `stopTeam` method in `TeamProvisioningService` to terminate running processes for teams, improving resource management.
- Introduced IPC channel `TEAM_STOP` to handle stop requests from the renderer process.
- Enhanced message relaying for team leads by implementing `relayLeadInboxMessages`, ensuring timely communication of unread messages.
- Updated UI components to support stopping teams and display pending replies, enhancing user experience during team management.
- Updated `TeamMemberLogsFinder` to improve project directory resolution by falling back to `leadSessionId` if the encoded directory does not exist, enhancing reliability in locating project logs.
- Refactored `MemberLogsTab` to implement an initial loading state and auto-refresh functionality for ongoing tasks, improving user experience during log retrieval.
- Adjusted error handling and loading indicators to provide clearer feedback based on task status.
- Updated `TeamDetailView` to include `InboxMessage` type and refactored message visibility handling to use a dedicated callback.
- Simplified `ActivityTimeline` by removing unnecessary `useCallback` for message visibility, improving performance.
- Refactored `TaskCommentsSection` to enhance comment expansion logic and improve user interaction with a clearer UI for expanding and collapsing comments.
- Modified `markRead` function to accept an optional full set of messages for better state management and persistence.
- Added `useTeamMessagesRead` hook to manage read state of messages within a team, utilizing local storage for persistence.
- Introduced `toMessageKey` utility for generating stable keys for messages based on their properties.
- Enhanced `CollapsibleTeamSection` to display a secondary badge for unread message counts.
- Updated `TeamDetailView` to calculate and pass unread message counts to `CollapsibleTeamSection`.
- Implemented message visibility tracking in `ActivityTimeline` to mark messages as read when they enter the viewport.
- Updated the getLogsForTask function to accept optional parameters for owner and status, allowing for more granular log retrieval based on task state.
- Modified the TeamMemberLogsFinder to include owner's session logs when the task is in progress, improving visibility into ongoing activities.
- Introduced new UI components for better task tracking, including ActiveTasksBlock and ProvisioningProgressBlock, enhancing user experience during team provisioning.
- Refactored related components to support the new functionality, ensuring seamless integration across the application.
- Updated MemberCard to display task completion progress using a gradient progress bar for better visual feedback.
- Refined sorting logic in MessagesFilterPopover to ensure consistent ordering of sender and recipient options, enhancing usability.
- Added functionality to build task counts by owner, integrating it into TeamDetailView and MemberCard components for better task management visibility.
- Updated MemberList to pass task counts to MemberCard, allowing for detailed task status display per member.
- Improved UI elements in MemberCard for better interaction and visual feedback, including task completion progress.
- Translated various UI text elements from Russian to English for consistency and accessibility.
Previously resetFormState() was called on dialog close, wiping all
user input. Now only UI state (errors, loading) is reset on close.
Form data (team name, members, description, prompt) is preserved
and only cleared after successful team creation.
- Added functionality in TeamDataService to automatically create comments from task-related inbox messages, enhancing task management.
- Introduced syncLinkedComments method to process messages and link them to corresponding tasks, ensuring relevant discussions are captured.
- Updated TeamTaskWriter to support deduplication of comments based on ID, preventing duplicate entries.
- Enhanced ActivityItem and ActivityTimeline components to improve recipient color handling for better visual feedback.
These changes aim to streamline communication around tasks and improve overall user experience in task tracking.
- Added TooltipProvider and Tooltip components to enhance user experience with contextual information.
- Wrapped existing components such as TeamListView, TeamDetailView, and SendMessageDialog with tooltips for better interaction feedback.
- Implemented MessagesFilterPopover to allow filtering messages by sender and recipient, improving message management.
- Updated KanbanBoard and KanbanFilterPopover to include tooltips for view mode buttons, enhancing usability.
These changes aim to provide users with clearer guidance and improve overall interaction within the application.
- Updated padding classes in the Combobox component to enhance spacing and alignment.
- Adjusted the `CommandPrimitive.List` and option item styles for better visual consistency.
These changes aim to improve the overall user experience by refining the layout of the Combobox component.
- Introduced TEAM_GET_LOGS_FOR_TASK IPC channel to retrieve session logs related to specific tasks.
- Implemented handleGetLogsForTask function to validate inputs and fetch logs for a given task.
- Updated TeamMemberLogsFinder to include findLogsForTask method for session log retrieval based on task ID.
- Enhanced UI components to support displaying logs for tasks, improving task management and visibility.
- Updated related services and components to accommodate the new logging functionality.
These changes aim to enhance task tracking and improve collaboration within teams by providing access to relevant session logs.
- Extract SCROLL_THRESHOLD (300px) constant so auto-scroll hook and
scroll-button visibility logic stay in sync
- Extract CONTEXT_PANEL_WIDTH_PX (320px) constant to avoid layout drift
if the context panel width is ever adjusted
- Gate drag spacer on isElectronMode() && isLeftmostPane to match the
TabBar drag region logic and prevent unintended drag regions in
split-pane layouts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add toggle in settings to auto-expand AI response groups
- Auto-expand new AI groups on live session refresh
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Includes scroll improvements:
- Scroll to bottom on session open and live auto-scroll
- Make auto-scroll StrictMode-safe via needsInitialScrollRef
- Add floating scroll-to-bottom button in chat view
Window drag fix:
- Apply drag region to leftmost pane TabBar regardless of sidebar state
- Cap tab list at 75% so drag spacer always has room
- Add explicit flex-1 drag spacer between tabs and action buttons
- Set WebkitAppRegion: no-drag on tab items for reordering
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Added WINDOW_FULLSCREEN_CHANGED and WINDOW_IS_FULLSCREEN constants for fullscreen state management.
- Enhanced main window to notify the renderer when entering or leaving fullscreen mode.
- Implemented IPC handlers to check fullscreen status and notify changes to the renderer.
- Introduced useFullScreen hook in the renderer to manage fullscreen state and adjust UI accordingly.
These changes improve user experience by allowing dynamic adjustments to the UI based on fullscreen status.
Show "no commits" / "no lines changed" instead of "total cost ÷ 0"
when commitCount or linesChanged is zero.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Implemented line counting for NotebookEdit and Bash commands in MemberStatsComputer to improve task tracking accuracy.
- Updated TeamDataService to include kanban column information for tasks, enhancing task visibility.
- Refactored Sidebar and GlobalTaskList components to support task filtering by status and team, improving user interaction.
- Introduced TaskFiltersPopover for better task filtering options, allowing users to filter tasks by status and unread comments.
- Enhanced UI components for better responsiveness and user experience in task management.
These changes aim to improve task management efficiency and enhance collaboration within teams.
- Recompute totalInputTokens, totalOutputTokens, totalCacheCreation,
totalCacheRead, and grandTotal after injecting the "Subagents (combined)"
row so tokenUsage.totals stays consistent with byModel rows
- Fix CostSection import order: external packages before path aliases,
merge duplicate import type statements
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Compute subagent cost from token breakdown instead of relying on
unpopulated proc.metrics.costUsd; extract actual model from subagent
messages for accurate pricing and mismatch detection
- Add aggregated "Subagents (combined)" row to cost table with arrow
navigation to the Subagents report section (no misleading breakdown)
- Filter <synthetic> model from token/cost tracking to eliminate zero rows
- Fix parseTestSummary to treat missing pass/fail count as 0 so clean
all-passing test runs are not dropped from trajectory analysis
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Updated the TeamAgentToolsInstaller to version 5, introducing a new command for adding comments to tasks.
- Implemented the addTaskComment function to handle comment creation, including validation and notification to task owners.
- Enhanced the TeamDataService to support fetching tasks alongside tool installation.
- Updated UI components to display unread comment counts and improve user interaction with task comments.
- Refactored various components to integrate task comments seamlessly into the existing workflow.
These changes aim to improve collaboration and communication within teams by facilitating task-related discussions.
- Added a new Contributor License Agreement (CLA) document to clarify contribution terms.
- Updated the license from MIT to GNU Affero General Public License v3.0 (AGPL-3.0).
- Introduced task comments feature, allowing users to add comments to tasks with validation for input length and content.
- Enhanced the TeamDataService to handle adding comments and sending notifications to task owners.
- Updated UI components to display comments and allow users to submit comments via a text area.
- Integrated task comments into the task detail dialog for better user interaction.
These changes aim to improve task management and enhance collaboration within teams.
- teams.ts: add type validation in handleCreateConfig for displayName/description/color
- CreateTaskDialog: scope draft keys per team to prevent cross-team leakage
- agentBlocks.ts: replace stateful singleton regex with factory function
- teams.test.ts: add missing channel assertions and use os.tmpdir()
- SendMessageDialog: move setState out of useEffect to render phase
- TeamMemberLogsFinder: remove unused projectId destructuring
- MentionableTextarea: add eslint-disable description
- useMentionDetection: replace deprecated wordWrap with overflowWrap
- Added validation for team configuration updates to ensure name, description, and color are strings.
- Improved member detection logic to avoid false positives by ensuring only one known member name is matched.
- Refactored post-launch configuration updates to combine session history and project path updates, preventing race conditions.
- Updated UI components to streamline state management for collapsible sections.
These changes aim to improve data integrity and user experience in team management functionalities.
- Introduced TEAM_START_TASK IPC channel to facilitate starting tasks and notifying agents.
- Updated task creation to include an option for immediate start, enhancing user experience.
- Enhanced task notifications with detailed instructions for agents upon task assignment.
- Improved team member logs handling and metadata extraction for better task tracking.
These changes aim to streamline task management and improve team collaboration efficiency.
- Added member color assignment using a new utility function for better visual representation in the UI.
- Updated team member prompts to encourage brief introductions, aligning with project guidelines.
- Introduced a draft persistence mechanism for message and task creation dialogs to enhance user experience.
- Refactored team configuration handling to support new member structures and improve data integrity.
This update aims to streamline team interactions and improve the overall user experience in team management features.
Intercept Ctrl+R/Cmd+R in before-input-event to prevent Electron's default page reload. Replace hardcoded macOS shortcut symbols with platform-aware helpers that show Ctrl+ on Windows/Linux.
Skip indexing and lookup when tool call/result IDs are missing to
prevent collisions on the empty-string key in toolCallIndex.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- getPricing: use tokenized order-insensitive matching so Claude 3 era
models (e.g. "claude-3-opus-20240229") correctly match pricing key "opus-3"
- sessionAnalyzer: skip isSidechain messages in parentCost loop to prevent
double-counting with processSubagentCost
- CostSection: disable row expansion when token stats are missing
- tabSlice: guard against undefined sessionId/projectId in openSessionReport
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add AssessmentBadge component with hover tooltips explaining thresholds
- Add Key Takeaways summary section surfacing top actionable findings
- Add cost attribution stacked bar and per-token calculation breakdowns
- Add clickable navigation from takeaways and tool errors to detail sections
- Add theme-aware assessment colors via CSS variables for light/dark mode
- Collapse lower-priority sections by default for progressive disclosure
- Replace all hardcoded color hex values with CSS variable references
- Fix missing Fragment key in CostSection model table
- Add defensive division-by-zero guard in stacked bar calculation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add interpretive assessment layer to session reports. Every metric section
now shows color-coded severity badges (green/amber/red) computed from
configurable thresholds, replacing raw numbers with instant signal.
Includes centralized reportAssessments utility, model mismatch detection,
switch pattern recognition, and 44 new tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 7 missing sections and fix 4 incomplete ones that the Python
analyzer generates but the TypeScript port was missing:
New sections: skillsInvoked, bashCommands, lifecycleTasks,
userQuestions, outOfScopeFindings, agentTree, subagentsList
Fixed: compaction (was just count, now has summaryCount + note),
serviceTiers removed (not available in parsed types),
compactionCount replaced with compaction object
Adds InsightsSection UI component and 8 new tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Port all analysis logic from the Python script to TypeScript, running
entirely in the renderer process. Produces a typed SessionReport from
a SessionDetail with: token/cost analysis, friction signals, idle gaps,
conversation tree metrics, test progression, and thrashing detection.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When the sidebar is collapsed and the user clicks a project, the session
list was silently updated behind the hidden panel with no visual feedback,
leaving the user confused about why nothing appeared to change.
Fixed by setting sidebarCollapsed: false in both selectProject and
selectRepository at the moment of selection. Both entry points are covered:
- selectRepository: used by the dashboard project cards
- selectProject: used by the command palette and keyboard shortcuts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Two performance regressions introduced in recent PRs:
1. readAgentConfigs blocked transcript rendering (PR #50)
The agent config IPC call was awaited on the critical path of
fetchSessionDetail, preventing any transcript data from rendering
until the filesystem read completed. On macOS this was especially
noticeable due to security checks on first directory access.
Fixed by making the call fire-and-forget: the transcript renders
immediately and subagent color badges update asynchronously.
Also set the project cache key optimistically before the async call
to prevent duplicate in-flight requests on rapid navigation.
2. SessionSearcher stat()-called every session file on each search (PR #53)
LocalFileSystemProvider.readdir() did not populate the optional
mtimeMs field on FsDirent entries. The new SearchTextCache-based
SessionSearcher fell back to an individual fsProvider.stat() call
per session file when mtimeMs was missing, adding N extra filesystem
round-trips on every search in local mode.
Fixed by statting all entries concurrently inside readdir(), so
mtimeMs is always populated and the stat fallback is never triggered.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Subagent badges now show distinct colors instead of generic gray.
Colors are resolved from the project's .claude/agents/*.md frontmatter
(color field), with deterministic hash-based fallback for unconfigured types.
New AgentConfigReader service reads agent definitions via IPC, cached
per project root to avoid redundant disk reads on session refreshes.
Team member colors remain unaffected (team branch has priority).
Add an export button to the TabBar header that lets users export
the current session as Markdown, JSON, or Plain Text. The button
appears between Search and Notifications, only for session tabs.
- sessionExporter.ts: formatters for all three formats + download trigger
- ExportDropdown.tsx: dropdown UI component with format selection
- TabBar.tsx: integration with conditional rendering for session tabs
- 51 new tests covering all formatters, edge cases, and download
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Updated ContextBadge to display the total count of tool outputs and task coordination items based on their breakdowns.
- Introduced FlatInjectionList component for a denested view of injections, allowing users to toggle between grouped and flat views in SessionContextPanel.
- Added state management for flat view toggle and integrated FlatInjectionList into the existing layout.
- Introduced new options to copy Session ID and Resume Command in the SessionContextMenu component.
- Added visual feedback for copied actions with appropriate icons and labels.
- Updated menu height to accommodate new items and maintain layout consistency.
- Updated `markAllNotificationsRead` and `clearNotifications` functions to support optional filtering by trigger name, allowing for more granular control over notification management.
- Adjusted the `NotificationsView` component to reflect the new scoped functionality, including updates to button labels and unread count displays based on active filters.
- Added tests to verify the behavior of scoped actions for marking notifications as read and clearing notifications.
User messages in subagent JSONLs lack the isMeta field, defaulting to false.
An unconditional `continue` in the !isMeta branch skipped tool result
collection for these messages, causing all subagent tools to show
"No result received". Now we check for tool_result blocks before continuing,
allowing them to fall through to the result collection logic.
- Introduced TeamDataService for managing team-related data.
- Updated IPC handlers to include team management functionalities.
- Added new API channels for team listing and integrated them into the UI.
- Enhanced the renderer components to support team views and interactions.
- Implemented utility functions for team directory path management.
- Implemented new POST endpoints for hiding and unhiding individual and bulk sessions in the configuration.
- Added error handling and validation for project and session IDs in the new API routes.
- Enhanced the existing session management functionality in the ConfigManager to support these operations.
- Updated knip.json to exclude unused Remotion paths and dependencies.
- Cleaned up pnpm-lock.yaml by removing obsolete Remotion packages.
- Refactored TypeScript function signatures in main files for improved clarity.
- Enhanced various components for better code readability and maintainability.
- Introduced a new Docker setup for running claude-devtools in standalone mode without Electron.
- Added Dockerfile and docker-compose.yml for easy deployment.
- Implemented .dockerignore to exclude unnecessary files from the Docker context.
- Updated package.json with new scripts for building and running the standalone server.
- Enhanced README with Docker usage instructions and environment variable configurations.
- Modified HttpServer to support serving static files and API in standalone mode.
- Updated various components to ensure compatibility with standalone operation.
- Added support for rendering 'subagent_input' and 'compact_boundary' types in the chat display components.
- Introduced a new `MarkdownViewer` for displaying content in both item types.
- Enhanced the `MetricsPill` and `SubagentItem` components to include phase breakdowns and isolated usage metrics.
- Updated the `AIGroupDisplayItem` type to accommodate new item types and their properties.
- Implemented logic to compute and display token consumption across multiple phases for subagents.
- Added handlers for hiding and unhiding individual and multiple sessions in the configuration.
- Updated the ConfigManager to manage hidden sessions, including methods for bulk operations.
- Enhanced the IPC channels and preload scripts to support new session visibility features.
- Integrated UI components to allow users to toggle session visibility in the sidebar and context menus.
- Updated state management to reflect hidden sessions and support multi-select actions for bulk hiding/unhiding.
- Introduced context panel navigation for user message groups and specific tools within turns, improving user experience in navigating chat history.
- Added state management for context navigation tool use ID and effective highlight color, allowing distinct visual cues for context panel interactions.
- Updated `ChatHistory` and `SessionContextPanel` components to support new navigation handlers and integrate deep-linking functionality for tools.
- Enhanced `RankedInjectionList` to facilitate navigation to user groups and tools, providing a more interactive and user-friendly interface.
- Implemented functionality to select and manage the local Claude root folder, allowing users to specify a custom path.
- Added UI components for displaying and interacting with Claude root settings, including error handling for missing directories.
- Enhanced the settings view to support dynamic updates based on user selections and improved state management for pending settings.
- Refactored related components to integrate the new Claude root features seamlessly, including updates to the general settings section and connection handling.
- Added context consumption tracking, including total context consumed and compaction events, to the session metadata.
- Introduced a new `PhaseTokenBreakdown` interface for detailed per-phase token contributions.
- Updated the `SessionContextPanel` to support a ranked view of context injections, allowing users to toggle between category and ranked displays.
- Implemented a `ConsumptionBadge` in the `SessionItem` component to show context consumption with a hover popover for phase breakdown details.
- Enhanced session sorting options in the sidebar to allow sorting by context consumption.
- Implemented a new IPC handler to find Windows UNC paths for WSL Claude root candidates.
- Introduced utility functions to list WSL distributions and resolve their home paths.
- Updated the configuration handlers to include the new functionality for detecting WSL Claude roots.
- Enhanced the UI to allow users to select WSL Claude root paths, including handling cases where the projects directory is missing.
- Refactored related components to integrate the new WSL functionality seamlessly.
- Introduced functionality to select and manage the local Claude root folder, allowing users to specify a custom path.
- Added IPC handlers for selecting the Claude root folder and retrieving its information.
- Enhanced configuration validation to ensure the specified Claude root path is an absolute path.
- Updated the ServiceContext to reconfigure based on changes to the Claude root path, improving context management.
- Refactored related components to support the new Claude root path features, including updates to the UI and state management.
- Updated the ProjectScanner class to utilize a new asynchronous method for resolving file details, improving accuracy in file metadata retrieval.
- Introduced birthtimeMs to session file information, ensuring comprehensive metadata is available for session management.
- Adjusted session creation logic to account for the new birthtimeMs, enhancing the integrity of session timestamps.
- Improved the handling of auto-scroll behavior in ChatHistory and useAutoScrollBottom hook, allowing for smoother user experience during content updates.
This commit enhances the ProjectScanner's efficiency and improves user experience in chat history management.
- Updated the ProjectScanner class to use an asynchronous method for retrieving session filters, ensuring up-to-date session data.
- Introduced a new private method, getSessionFilterForProject, which refreshes composite IDs from disk in local mode to prevent stale entries.
- Enhanced notification listeners to clear existing timers for session and project refreshes, improving performance during rapid file changes.
- Implemented a mechanism to track refresh generations for sessions and projects, preventing stale overwrites during concurrent updates.
This commit improves the accuracy and efficiency of session and project data handling in the application.
- Added a WindowsTitleBar component to provide a conventional title bar experience when the native frame is hidden.
- Integrated window control functionalities (minimize, maximize, close) using IPC handlers for better user interaction.
- Updated the TabbedLayout to include the new WindowsTitleBar, ensuring a consistent UI across platforms.
- Enhanced the README with additional details about the new window controls feature.
This commit improves the user interface on Windows by providing familiar window management controls, enhancing usability and consistency.
- Revised the introductory text to better reflect the application's purpose.
- Added installation instructions for macOS and Windows, detailing download options and setup steps.
- Enhanced the visual presentation with additional badges and download buttons for improved user experience.
- Updated the development section to clarify prerequisites and build instructions.
This commit improves the README by providing clearer guidance for users and enhancing the overall presentation of the project.
- Updated the README to reflect new features in Claude Code, including the ability to spawn subagents via the Task tool and coordinate teams with improved visibility.
- Added details on the rendering of subagent sessions as expandable inline cards, including execution traces, metrics, and tool calls.
- Enhanced description of teammate messages, highlighting color-coded cards and team lifecycle visibility.
- Clarified session summary metrics to differentiate between teammate and subagent counts for better user insights.
This commit significantly improves the documentation of team and subagent visualization features, providing users with a clearer understanding of the capabilities and enhancements in the application.
- Added new scripts for rendering and previewing videos using Remotion, enhancing multimedia capabilities.
- Updated package.json to include Remotion dependencies and commands for rendering videos in different formats.
- Modified .gitignore to exclude Remotion output files, ensuring a cleaner repository.
- Enhanced README to reflect new features and usage instructions for video rendering.
This commit significantly improves the application's multimedia functionality by integrating Remotion, allowing users to create and preview videos seamlessly.
- Updated the session retrieval API to include an optional `SessionsByIdsOptions` parameter, allowing clients to specify the desired metadata depth (light or deep) when fetching sessions by IDs.
- Modified the `ProjectScanner` and related services to support this new option, improving flexibility in session data retrieval.
- Enhanced the HTTP client and renderer components to accommodate the new options, ensuring consistent behavior across the application.
This commit improves session management by providing users with more control over the metadata returned, optimizing performance for various use cases.
- Added a new `metadataLevel` option to the sessions pagination API, allowing clients to specify the depth of metadata returned (light or deep).
- Updated the `ProjectScanner` to handle session metadata based on the specified level, improving performance and flexibility in session data retrieval.
- Enhanced the HTTP client and session slice to support the new metadata level option, ensuring consistent behavior across the application.
This commit enhances session management by providing users with the ability to choose the level of detail in session metadata, optimizing performance for different use cases.
- Implemented a new HTTP endpoint and IPC handler for retrieving session metadata based on an array of session IDs, allowing for the loading of pinned sessions that may not be included in paginated results.
- Enhanced session management by validating session IDs and capping the number of IDs processed to improve performance and reliability.
- Updated the renderer and store to handle the new functionality, ensuring that pinned sessions are preserved and loaded correctly.
This commit enhances the application's session handling capabilities, providing users with better access to their pinned sessions.
- Added support for remote todos path in SSH handlers, improving project organization.
- Updated ProjectPathResolver to utilize the filesystem provider for extracting current working directory.
- Optimized ProjectScanner to handle session file processing in batches, enhancing performance over SSH.
- Implemented noise filtering logic in WorktreeGrouper and FileWatcher to improve session management.
- Enhanced SshFileSystemProvider with retry logic for file operations, increasing reliability during transient errors.
This commit significantly improves the handling of SSH projects and enhances overall performance and reliability in file operations.
- Introduced a new `CONTEXT_CHANGED` IPC channel for notifying renderer of context changes.
- Refactored context switching logic to separate re-wiring of file watcher events from renderer notifications.
- Updated IPC handler initialization to support both rewire-only and full context switch callbacks.
- Enhanced SSH handlers to utilize the new context rewire mechanism, improving clarity and maintainability.
- Adjusted renderer store to handle context change notifications more effectively.
This commit improves the structure and clarity of context management within the application, facilitating better handling of context switches and notifications.
- Introduced a reusable `ConfirmDialog` component to replace native `window.confirm()`, providing a styled modal that aligns with the app's theme.
- Integrated the `ConfirmDialog` into the `App` component for global access.
- Updated the `WorkspaceSection` to utilize the new confirmation dialog for profile deletion, enhancing user experience with a more consistent UI.
- Added state management for selected profiles in the `ConnectionSection`, improving user interaction when selecting saved profiles.
This commit enhances the application's UI by providing a more cohesive and user-friendly confirmation experience.
- Added SSH section validation to the configuration update process, including validation for SSH profiles.
- Implemented functions to validate SSH profiles and the overall SSH section structure.
- Integrated SSH profile management into the ConnectionSection, allowing users to select saved profiles for quick connection setup.
- Updated the WorkspaceSection to manage SSH profiles with full CRUD functionality, ensuring persistence through the ConfigManager.
- Refactored API calls to use a unified `api` module for better maintainability.
This commit significantly improves the SSH management experience by providing robust validation and user-friendly profile handling.
- Added a new `WorkspaceIndicator` component to display the active workspace and connection status.
- Integrated the `WorkspaceIndicator` into the `TabbedLayout` for improved workspace switching visibility.
- Removed the previous `ContextSwitcher` from `SidebarHeader` to streamline the UI.
- Updated `ServiceContext` and `ServiceContextRegistry` for better type handling and imports.
This commit enhances the user experience by providing a dedicated workspace indicator, facilitating easier context switching.
- Added `isElectronMode` function to determine if the app is running in Electron or a browser.
- Updated `SidebarHeader`, `TabBar`, and `TabbedLayout` components to conditionally render UI elements based on the Electron mode.
- Adjusted styles and settings gear icon visibility to enhance user experience in browser mode.
This commit improves the application's adaptability by ensuring that Electron-specific features are only available when appropriate.
- Introduced an HTTP server to facilitate communication with the application.
- Added route handlers for managing application configuration, including getting and updating settings.
- Implemented notification operations with routes for retrieving, marking, and deleting notifications.
- Created project and session management routes to list projects, sessions, and their details.
- Developed SSH connection management routes for connecting, disconnecting, and retrieving SSH state and configuration.
- Enhanced the application architecture to support real-time event streaming via Server-Sent Events (SSE).
This commit significantly expands the application's capabilities by integrating an HTTP server and various management routes, improving user interaction and functionality.
- Add WorkspaceSection to sections/index.ts barrel export
- Add 'workspace' to SettingsSection union type with HardDrive icon
- Position Workspaces tab between Connection and Notifications
- Render WorkspaceSection when workspace tab is active (no props needed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Full CRUD UI for SSH connection profiles (add, inline edit, delete with confirm)
- Profile changes persist via ConfigManager config.update('ssh', ...)
- After save/delete, calls fetchAvailableContexts() to refresh context switcher
- Follows ConnectionSection styling patterns (inputClass, inputStyle, SettingsSectionHeader)
- Empty state with server icon when no profiles saved
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add ContextSwitcher to SidebarHeader Row 1 with visual separator
- Add Cmd+Shift+K shortcut to cycle through available contexts
- Add SSH status listener in App.tsx to refresh context list on changes
- Shortcut guard: disabled during active context switch
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add ConnectionStatusBadge with 4 visual states (Monitor/Wifi/WifiOff/Spinner)
- Add ContextSwitcher dropdown listing Local + SSH contexts with status badges
- Add availableContexts state to contextSlice
- Add fetchAvailableContexts action called on system initialization
- ContextSwitcher follows SidebarHeader dropdown pattern (outside click, escape key)
- Switcher disabled during context switch to prevent race conditions
- Initialize context system on app mount before notification listeners
- Render ContextSwitchOverlay as first child in ErrorBoundary
- Add context:onChanged listener to sync renderer state on external context switches
- Snapshot validation already implemented in contextSlice (validateSnapshot function)
- Create ContextSwitchOverlay component with full-screen loading state
- Create useContextSwitch hook exposing switchContext/isContextSwitching/activeContextId
- Add ContextSlice to AppState type intersection
- Compose createContextSlice into store creation
- Install idb-keyval for IndexedDB persistence
- Create contextStorage service with TTL-based snapshot save/load
- Create contextSlice with switchContext and initializeContextSystem actions
- Implement snapshot validation to filter invalid tabs/selections
- Exclude transient state (loading, errors, Maps/Sets) from snapshots
- Added functionality to save and retrieve the last SSH connection configuration, allowing for auto-fill on subsequent launches.
- Introduced new IPC channels for saving and getting the last SSH connection details.
- Updated the connection state management to persist the last connection information upon successful connection.
- Enhanced the ConnectionSection component to load the last connection details on mount and pre-fill the form fields.
- Refactored relevant types and state management to accommodate the new SSH last connection features.
- Removed the 'toolName' and 'matchField' properties from the default trigger configuration.
- Updated the default match field options to include a new option for matching against the entire JSON-serialized input.
- Added SSH config host alias support, allowing users to fetch and resolve host entries from the SSH config file.
- Introduced SshConfigParser to handle parsing of ~/.ssh/config and retrieving host aliases.
- Updated ConnectionSection to include a combobox for selecting SSH config hosts with auto-fill capabilities.
- Enhanced SshConnectionManager to utilize the new SshConfigParser for resolving host configurations.
- Added IPC channels for fetching SSH config hosts and resolving host aliases.
- Updated relevant types and state management to accommodate new SSH config features.
- Updated the README to use a higher resolution icon for better visibility.
- Improved the UpdateDialog component by adding a backdrop button for dismissing the dialog and enhancing accessibility with ARIA attributes.
- Integrated electron-updater for automatic updates, including IPC handlers for checking, downloading, and installing updates.
- Updated electron-builder configuration to include entitlements and notarization scripts for macOS.
- Enhanced README with installation instructions and updated features.
- Added new components for update notifications and dialogs in the renderer.
- Improved CI workflow permissions for better release management.
- Introduced CI workflow for automated testing and validation on push and pull request events.
- Added Release workflow for packaging and distributing the application on version tag pushes.
- Enhanced loading skeletons in ChatHistory and ProjectsGrid components for improved visual feedback.
- Updated splash screen with new animations and styles for better user experience.
- Refined CSS variables for skeleton loading states to ensure consistency across themes.