Commit graph

299 commits

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

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 14:15:25 -05:00
iliya
25b740c134 refactor: unify read state handling in ActivityTimeline and TeamDetailView
- Consolidated the handling of read messages by introducing a `readState` prop in `ActivityTimeline`, which combines `readSet` and `getMessageKey`.
- Updated `TeamDetailView` to pass the new `readState` structure, improving clarity and reducing prop drilling.
- Enhanced unread message logic in `ActivityTimeline` to derive unread status from the new `readState` prop.
2026-02-23 20:06:08 +02:00
iliya
c3e4521cc8 refactor: update IPC channel constants and improve markdown plugin usage
- Replaced local IPC channel constants in `index.ts` with imports from `@preload/constants/ipcChannels` for better consistency.
- Simplified the `leadRelayCapture` assignment in `TeamProvisioningService`.
- Updated markdown plugin imports across multiple components to use the new `REHYPE_PLUGINS` constant.
- Enhanced task status display logic in `TaskRow` for improved clarity.
- Adjusted CSS for better syntax highlighting in the editor.
2026-02-23 20:06:08 +02:00
iliya
361828f21a refactor: clean up GlobalTaskList and enhance TaskDetailDialog
- Removed unnecessary border styling in `GlobalTaskList` for a cleaner layout.
- Added logic in `ActivityTimeline` to identify and set team lead information based on member roles.
- Improved `TaskDetailDialog` to display owner information with enhanced styling and avatar support, utilizing team colors for better visual distinction.
- Streamlined dependency display in `TaskDetailDialog` for improved readability and user interaction.
2026-02-23 20:06:08 +02:00
iliya
1b6f7be767 feat: alot, code highlight, related tasks, group by project and other 2026-02-23 20:06:08 +02:00
Paul Holstein
419913543c fix(review): treat 0 tiered rate as valid, warn on cache-only unknown models
- calculateTieredCost: use `== null` instead of `!` so a 0 tiered rate
  is not treated as missing
- calculateMessageCost: include cacheReadTokens and cacheCreationTokens
  in the unknown-model warning condition

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:56:38 -05:00
Paul Holstein
5ca3fc9008 fix(review): address CodeRabbit and Gemini review comments
- Design doc: update "No UI changes" to reflect cost disclaimer
- Plan doc: fix MD001 heading level jump (### after #)
- pricing.ts: rename to PRICING_MAP, add isLiteLLMPricing type guard,
  pre-compute LOWERCASE_KEY_MAP for O(1) case-insensitive lookups
- SessionContextHeader: simplify cost disclaimer JSX into single span
- Tests: fix no-empty-function lint (() => {} → () => undefined)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:49:05 -05:00
Paul Holstein
c507a4f9d5 fix: warn on unknown model pricing lookups
Add console.warn when calculateMessageCost encounters an unknown model,
so pricing.json gaps are visible rather than silently returning $0.
Update tests to expect the warning.

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:25:45 -05:00
Paul Holstein
33b63b46a5 fix: suppress eslint no-restricted-imports for resources/ path
resources/ lives outside src/ with no path alias available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:13:21 -05:00
Paul Holstein
ec9b3412fa refactor: wire session analyzer and CostSection to shared pricing
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>
2026-02-23 12:10:42 -05:00
Paul Holstein
3e6d02f317 refactor: wire jsonl.ts to shared pricing module
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 12:00:15 -05:00
Paul Holstein
9dd41b3345 feat: add shared pricing module with LiteLLM data
Create a unified pricing module in src/shared/utils/ that wraps
resources/pricing.json with typed lookup, tiered cost calculation,
and display pricing helpers. This is the foundation for consolidating
the dual cost calculation systems (main jsonl.ts + renderer sessionAnalyzer).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:51:18 -05:00
iliya
bdb1f5ccd1 refactor: streamline readSet initialization in useTeamMessagesRead hook
- 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.
2026-02-23 17:31:55 +02:00
iliya
dbb418ad64 Merge branch 'improvements' of https://github.com/777genius/claude_agent_teams_ui into improvements 2026-02-23 17:29:47 +02:00
iliya
4a85647433 feat: enhance team message handling and UI components
- 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.
2026-02-23 17:29:31 +02:00
Илия
b2b5b5e3a8
Merge branch 'main' into improvements 2026-02-23 16:52:38 +02:00
iliya
368f175db0 Fix readSet type on empty team 2026-02-23 16:49:12 +02:00
iliya
fe43676c32 Fix CI lint errors 2026-02-23 16:49:12 +02:00
iliya
42e5a2431c Fix Claude CLI resolution on Windows 2026-02-23 16:49:12 +02:00
matt
1535a69ca5 feat: add MoreMenu component for toolbar actions
- 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.
2026-02-23 22:44:42 +08:00
iliya
1e33e82ce1 feat: implement inbox locking mechanism and enhance team message handling
- 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.
2026-02-23 16:17:48 +02:00
matt
02940ce216 merge: resolve conflict in TabBar.tsx — keep both Activity icon and formatShortcut import
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 22:14:01 +08:00
matt
58c979fa98
Merge pull request #65 from KaustubhPatange/main
feat: add cost calculation metric
2026-02-23 22:09:41 +08:00
iliya
54bd589209 feat: implement team stop functionality and enhance message relaying
- 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.
2026-02-23 16:05:46 +02:00
matt
9629c0a530
Merge pull request #69 from proxikal/fix/window-drag-region
fix: reliable window drag region in tab bar
2026-02-23 21:59:46 +08:00
matt
a95f10757f
Merge pull request #67 from Psypeal/fix/notification-crash
fix: guard Notification.isSupported for standalone/Docker (#42)
2026-02-23 21:58:55 +08:00
matt
c4975f1874
Merge pull request #66 from Psypeal/fix/ctrl-r-shortcut
fix: prevent Ctrl+R page reload and show platform-aware shortcuts (#58)
2026-02-23 21:58:34 +08:00
iliya
d60ac09925 feat: enhance project directory resolution and auto-refresh in MemberLogsTab
- 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.
2026-02-23 15:12:39 +02:00
iliya
c024f5bc78 refactor: enhance message handling and UI components
- 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.
2026-02-23 15:08:11 +02:00
iliya
40beaf20d9 feat: implement message read tracking and enhance UI components
- 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.
2026-02-23 15:02:33 +02:00
iliya
0e85c1f31a feat: enhance task log retrieval with optional parameters
- 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.
2026-02-23 14:56:31 +02:00
iliya
b7b29898fc Add --dangerously-skip-permissions for headless team provisioning
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-23 14:18:21 +02:00
iliya
895fe2c0de refactor: improve task progress visualization in MemberCard and enhance message filtering
- 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.
2026-02-23 12:42:51 +02:00
iliya
4a48f312c6 feat: enhance team member task tracking and UI improvements
- 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.
2026-02-23 12:33:01 +02:00
iliya
56368f73f6 fix: add description to eslint-enable comment in tooltip.tsx 2026-02-23 12:27:54 +02:00
iliya
cb1bce2656 fix: preserve form data when closing Create Team dialog
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.
2026-02-23 12:21:07 +02:00
iliya
7cf1789c6a feat: implement auto-sync for task-related comments from inbox messages
- 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.
2026-02-23 12:18:34 +02:00
iliya
a5e9da278c feat: integrate tooltip functionality across various components
- 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.
2026-02-23 12:09:23 +02:00
iliya
f1df2be208 fix: address CodeRabbit review feedback
- MemberCard: add hover overlay to fix inline backgroundColor killing
  Tailwind hover effect (UX regression for role="button" element)
- MemberLogsTab: guard against missing taskId and memberName to prevent
  unnecessary IPC call with empty string
- MemberList: use hash-based getMemberColorByName() for stable fallback
  colors independent of array position
- TeamAgentToolsInstaller: remove redundant `from || undefined`
- TeamDataService test: assert createdBy: 'user' field
2026-02-23 12:04:13 +02:00
iliya
dc2464a128 fix: add missing TEAM_GET_LOGS_FOR_TASK to test mock and remove unused variable
- Add TEAM_GET_LOGS_FOR_TASK to ipcChannels mock in teams.test.ts
- Add handler registration/removal assertions for the new channel
- Remove unused knownMembers destructuring in TeamMemberLogsFinder
2026-02-23 11:44:41 +02:00
iliya
1fde2f805a style: adjust padding in Combobox component for improved UI consistency
- 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.
2026-02-23 11:38:53 +02:00
iliya
55f7611b14 feat: add task logging functionality and enhance team management
- 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.
2026-02-23 11:37:31 +02:00
proxy
dbdfc27526 refactor: address code review findings from Gemini Code Assist
- 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>
2026-02-22 19:47:17 -05:00
proxy
93b515af40 feat: add auto-expand AI response groups setting
- 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>
2026-02-22 19:13:28 -05:00
proxy
890d2d8e84 fix: reliable window drag region in tab bar
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>
2026-02-22 19:13:14 -05:00
iliya
cd68023819 fix: resolve boundaries/element-types lint error in window.ts
Inline WINDOW_IS_FULLSCREEN constant instead of importing from
@preload to avoid cross-boundary import violation.
2026-02-22 23:33:39 +02:00
iliya
dc4fc99407 feat: implement fullscreen functionality and related IPC communication
- 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.
2026-02-22 23:13:13 +02:00
iliya
7f5b909fb5 fix: resolve pre-existing lint errors blocking CI
- MemberStatsComputer: replace TODO comment, use optional chain, suppress slow-regex
- TaskFiltersPopover: suppress label-has-associated-control for custom Checkbox
- KanbanTaskCard: prefix unused kanbanTaskState with underscore
2026-02-22 23:05:57 +02:00
Paul Holstein
819d553dd0 fix(report): avoid ÷ 0 phrasing when no commits or lines changed
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>
2026-02-22 15:47:17 -05:00
iliya
adbacc90fd feat: enhance task management and UI with new filters and line counting
- 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.
2026-02-22 22:15:48 +02:00
Paul Holstein
6cd2845edb fix(report): recompute token totals after subagent row, fix import order
- 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>
2026-02-22 15:13:53 -05:00
Paul Holstein
bbd6441b9e fix(report): compute subagent costs, filter synthetic model, fix test parsing
- 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>
2026-02-22 14:56:57 -05:00
iliya
396ca49106 feat: add task commenting functionality and enhance UI interactions
- 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.
2026-02-22 21:29:09 +02:00
iliya
c6ddfb9e78 feat: implement task comments functionality
- 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.
2026-02-22 20:05:03 +02:00
iliya
7e94bc7603 fix: resolve review bugs and lint errors
- 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
2026-02-22 18:58:35 +02:00
iliya
e662c58d32 feat: enhance team configuration and member detection
- 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.
2026-02-22 18:41:08 +02:00
iliya
49cf6405a2 feat: add task management enhancements with start task functionality
- 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.
2026-02-22 18:32:30 +02:00
iliya
0867966d17 feat: enhance team member management with color coding and improved prompts
- 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.
2026-02-22 16:41:16 +02:00
Psypeal Gwai
258dc6d82f fix: prevent Ctrl+R page reload and show platform-aware shortcuts (#58)
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.
2026-02-22 06:05:44 -08:00
Paul Holstein
114ea36df9 fix(report): guard against empty tool call IDs in session analyzer
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>
2026-02-22 08:49:19 -05:00
iliya
9b64576377 Merge remote-tracking branch 'upstream/main' into agent_teams_features 2026-02-22 15:46:58 +02:00
Paul Holstein
586cb00174 fix(report): address CodeRabbit review — pricing match, sidechain filter, UX guards
- 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>
2026-02-22 08:43:33 -05:00
iliya
8b5e1db527 feat: use agent teams 2026-02-22 15:41:18 +02:00
Psypeal Gwai
a7d7bacf3b fix: guard Notification.isSupported for standalone/Docker (#42)
Add typeof checks before calling Notification.isSupported() to prevent crashes in environments where the Notification API is unavailable.
2026-02-22 05:40:39 -08:00
Paul Holstein
4fda90bc3e feat(report): address PR feedback — threshold tooltips, cost clarity, progressive disclosure
- 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>
2026-02-22 08:29:08 -05:00
matt
9c04e90fdd
Merge pull request #57 from proxikal/fix/settings-http-server-status-ipc
fix: wrap HTTP_SERVER_GET_STATUS response in IpcResult envelope
2026-02-22 19:50:05 +09:00
KaustubhPatange
5932009c3b fix: lint issues 2026-02-22 16:14:05 +05:30
matt
94a6599acc
Merge pull request #55 from proxikal/fix/perf-regression-agent-configs-and-search-stat
fix: resolve performance regression in transcript loading and session search
2026-02-22 19:32:13 +09:00
KaustubhPatange
723760938e feat: add session cost in session header 2026-02-22 15:44:04 +05:30
KaustubhPatange
2bb95db596 feat: add tests for cost calculation 2026-02-22 14:49:30 +05:30
KaustubhPatange
a039fdd573 feat: add cost calculation metric 2026-02-22 14:39:20 +05:30
Paul Holstein
1ad2eca8f0 fix: safe stringification of skill args to satisfy no-base-to-string lint rule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 18:05:35 -05:00
Paul Holstein
820bb124d5 feat(report): add threshold-based assessment badges to all report sections
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>
2026-02-21 18:01:43 -05:00
Paul Holstein
ab1ad071fe feat: add missing analysis sections to session report
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>
2026-02-21 17:10:20 -05:00
Paul Holstein
644d66eae1 feat(report): wire up toolbar button and report tab routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:55:04 -05:00
Paul Holstein
d54e36f6fa feat(report): add session report tab and all section components
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:53:01 -05:00
Paul Holstein
0e3e20c990 feat(report): add 'report' tab type and openSessionReport store action
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:46:32 -05:00
Paul Holstein
465115ee5c feat(report): add session analyzer engine (TS port of analyze-session.py)
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>
2026-02-21 16:43:18 -05:00
Paul Holstein
e371ae793f feat(report): add session analysis report type definitions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:29:49 -05:00
proxy
8d652c4d2e fix: wrap HTTP_SERVER_GET_STATUS response in IpcResult envelope
The HTTP_SERVER_GET_STATUS handler returned a raw { running, port } object
while all other HTTP server handlers (start, stop) return { success, data }.
invokeIpcWithResult() in the preload expects the IpcResult<T> envelope and
treats a missing success field as failure, throwing 'Unknown error'.

This caused an unhandled promise rejection every time the Settings page
opened, because GeneralSection calls api.httpServer.getStatus() on mount.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-21 16:01:14 -05:00
proxy
c69d2414d6 fix: auto-expand sidebar when a project is selected
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>
2026-02-21 15:56:40 -05:00
proxy
9e7d3b58a1 fix: resolve perf regression in transcript loading and session search
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>
2026-02-21 15:46:25 -05:00
matt
39d88e22a4
Merge pull request #50 from cesarafonseca/feat/subagent-type-color-badges
feat: color badges for subagent types with .claude/agents/ config support
2026-02-22 02:07:42 +09:00
matt
75dfcf2d50 feat: implement SearchTextCache and SearchTextExtractor for efficient text extraction and caching
- Added SearchTextCache for LRU caching of extracted search text with mtime invalidation.
- Introduced SearchTextExtractor for lightweight extraction of searchable text from session messages.
- Updated SessionSearcher to utilize the new extractor and cache for improved search performance.
- Added tests for SearchTextCache and SearchTextExtractor to ensure functionality and correctness.
2026-02-22 02:03:22 +09:00
Cesar Augusto Fonseca
f05bf9fac4 feat: color badges for subagent types with .claude/agents/ config support
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).
2026-02-21 13:52:59 -03:00
matt
05b7888c17
Merge pull request #51 from holstein13/feat/session-export
feat: add session export (Markdown, JSON, Plain Text)
2026-02-22 01:33:15 +09:00
Paul Holstein
d3b7d9dfeb feat: add session export (Markdown, JSON, Plain Text)
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>
2026-02-21 11:18:52 -05:00
matt
f85c308672
Merge pull request #44 from KaustubhPatange/main
feat: search session globally across projects
2026-02-22 01:10:05 +09:00
matt
60b0364ab9
Merge pull request #45 from Psypeal/main
fix: correct context badge count to sum actual items instead of injection objects (#2)
2026-02-22 01:06:52 +09:00
Cesar Augusto Fonseca
b883e411f2 fix: increase macOS traffic light content gap for better title spacing 2026-02-21 12:11:55 -03:00
Psypeal
5a860d083b
Merge branch 'main' into main 2026-02-21 02:10:36 -08:00
Psypeal Gwai
6e9c6219b2 fix: correct context badge count to sum actual items instead of injection objects (#2) 2026-02-21 01:15:55 -08:00
KaustubhPatange
51294da034 feat: search session globally across projects 2026-02-21 14:34:25 +05:30
iliya
ae7a183112 Merge upstream/main 2026-02-21 10:39:25 +02:00
iliya
753ab14917 feat(team-managment): stable MVP 2026-02-21 09:47:24 +02:00
matt
ffa94f5e0f
Merge pull request #40 from cesarafonseca/fix/cwd-split-no-sessions
fix: prevent false cwd split that hides all sessions
2026-02-21 15:52:36 +09:00
matt
c5db4e3303 feat: disable default notification triggers for better control
- Updated the default notification triggers to set 'enabled' to false for the .env File Access Alert, Tool Result Error, and High Token Usage triggers, allowing for more controlled notification management.
2026-02-21 15:50:59 +09:00
Cesar Augusto Fonseca
6c20a4d404 fix: prevent false cwd split that hides all sessions
Sessions without the cwd field (older JSONL format) were creating a
separate subproject group, even when all sessions with cwd shared the
same value. The orphan subproject got a relative fallback path that
failed git identity resolution, causing zero sessions to load on select.

Now only counts distinct real cwds when deciding whether to split,
treating cwd-less sessions as belonging to the same project.
2026-02-20 11:28:15 -03:00
matt
2fcf111f77 feat: enhance ContextBadge and SessionContextPanel with new FlatInjectionList view
- 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.
2026-02-20 13:27:34 +09:00
matt
1590f04dc2 feat: add copy functionality to session context menu
- 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.
2026-02-20 12:53:08 +09:00
matt
0cd75a4f1a feat: enhance notification handling with scoped actions
- 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.
2026-02-20 12:46:40 +09:00
Cesar Augusto Fonseca
a00c7a459b feat: improve MCP tool input/output rendering
Closes matt1398/claude-devtools#32
2026-02-19 19:09:53 -03:00
Cesar Augusto Fonseca
4ec272758c
fix: collect tool results from subagent messages with absent isMeta field (#23)
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.
2026-02-19 14:07:30 +09:00
Sanath Samarasinghe
94f722d993
feat: add markdown preview toggle for Write tool (#21) 2026-02-19 14:03:16 +09:00
iliya
70915a152a feat(team-management): iteration 1, enhance Team Management feature with IPC integration and UI components
- 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.
2026-02-17 21:30:37 +02:00
matt
fb66b14d62 feat(sessions): add API endpoints for hiding and unhiding sessions
- 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.
2026-02-16 23:33:56 +09:00
matt
da1a8998fc chore: clean up project configuration and remove unused dependencies
- 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.
2026-02-16 23:27:43 +09:00
matt
ea66c34ce3 refactor(package): remove unused Remotion scripts and update HttpServer for improved static file serving
- Removed obsolete Remotion preview and render scripts from package.json.
- Updated HttpServer to enhance static file serving logic, ensuring proper handling of renderer paths in both development and production modes.
- Added support for asarUnpack in package.json to facilitate unpacking of renderer files.
2026-02-16 23:12:28 +09:00
matt
ce4116dd85 feat(docker): add standalone mode and Docker support
- 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.
2026-02-16 22:57:48 +09:00
matt
056351b8a6 feat(chat): implement subagent input and compact boundary display items
- 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.
2026-02-16 22:13:24 +09:00
matt
12a5bf46a8 feat(sessions): implement session hiding and un-hiding functionality
- 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.
2026-02-16 21:22:42 +09:00
matt
fb2d56e23f feat(chat): enhance navigation and tool highlighting in chat history
- 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.
2026-02-16 20:36:18 +09:00
matt
9915cf5a03 feat(settings): enhance Claude root management and UI updates
- 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.
2026-02-16 20:06:09 +09:00
matt
8b2dbf3bcb feat(context): enhance session context tracking and display
- 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.
2026-02-15 14:49:29 +09:00
matt
44a499e62c feat(jsonl): enhance message counting logic for AIGroup interactions
- Added logic to await the first main-thread assistant message after a UserGroup to accurately count AIGroup messages.
- Updated tests to reflect the new message counting behavior, ensuring correct results in session file analysis.
2026-02-15 14:32:32 +09:00
matt
0a987b8aea feat(wsl): improve WSL path handling and output decoding
- Refactored `toWslUncPath` to remove the prefix parameter for consistency.
- Added `looksLikeUtf16Le` and `decodeWslOutput` functions to enhance output decoding from WSL commands.
- Updated `listWslDistros` to utilize a command array for better command execution handling.
- Simplified home path resolution in `handleFindWslClaudeRoots` to avoid duplicates and improve clarity.
2026-02-14 14:17:42 +09:00
matt
5c563f40ec feat(wsl): enhance WSL integration with improved path resolution and error handling
- Refactored the `toWslUncPath` function to accept a prefix for better flexibility.
- Introduced `getWslExecutableCandidates` to dynamically find WSL executables.
- Implemented `runWsl` to handle WSL command execution with error management.
- Updated `listWslDistros` to include a fallback mechanism for inconsistent `-q` behavior.
- Enhanced `resolveWslHome` and `handleFindWslClaudeRoots` to improve home path resolution and avoid duplicates in candidate paths.
2026-02-14 14:05:35 +09:00
matt
07b3839d3f feat(wsl): add support for finding WSL Claude root candidates
- 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.
2026-02-14 13:53:13 +09:00
matt
ff0c8cc978 Implement Claude root path configuration and management
- 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.
2026-02-14 13:43:56 +09:00
matt
b5c057d550 Update package.json to include author email and enhance error handling in SshConnectionManager
- Modified the author field in package.json to include an email address for better attribution.
- Improved error handling in SshConnectionManager by providing a clearer exit code message when remote command execution fails.
2026-02-14 12:17:04 +09:00