Commit graph

330 commits

Author SHA1 Message Date
matt
68f16bb717
Merge pull request #73 from holstein13/feat/unify-cost-calculation
Unify cost calculation with shared pricing module
2026-02-24 11:29:50 +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
Paul Holstein
da81aaa26a docs: add implementation plan for unified cost calculation
5 tasks: shared pricing module, wire jsonl.ts, wire sessionAnalyzer,
verify, and clean up. TDD approach with tests first.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:45:53 -05:00
Paul Holstein
ec42e92bb3 docs: add design doc for unified cost calculation
Shared pricing module replacing dual cost calculation systems
(jsonl.ts hardcoded + sessionAnalyzer.ts LiteLLM) with a single
src/shared/utils/pricing.ts used by both main and renderer processes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 11:43:35 -05:00
Илия
e97fa7635f
Merge pull request #4 from 777genius/improvements
improvements
2026-02-23 17:38:53 +02:00
iliya
c63a310f93 Merge branch 'improvements' of https://github.com/777genius/claude_agent_teams_ui into improvements 2026-02-23 17:35:07 +02:00
iliya
a6eabc840c 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:34:30 +02:00
iliya
4fdfabd5f1 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 17:33:37 +02:00
iliya
75a354abcd 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 17:32:42 +02: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
matt
3749d7e41a
Merge pull request #71 from matt1398/feat/tabbar-more-menu
feat: add MoreMenu component for toolbar actions
2026-02-23 22:52:18 +08: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
matt
6264ec52bf
Merge pull request #60 from holstein13/feat/session-analysis-report
feat: session analysis report with assessment badges
2026-02-23 22:28:03 +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
matt
dc38c79c23
Merge pull request #59 from proxikal/feat/auto-expand-ai-groups-setting
feat: add auto-expand AI response groups setting
2026-02-23 21:56:59 +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
41717c5c7e Merge branch agent_teams_features into main 2026-02-23 14:57:10 +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
6553a21258 Merge branch 'main' of https://github.com/777genius/claude_agent_teams_ui 2026-02-23 14:18:40 +02:00
iliya
3be090add3 Merge agent_teams_features: skip permissions in headless mode 2026-02-23 14:18: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
803cf061e2 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:45:12 +02:00
iliya
22b948df60 fix: add missing @radix-ui/react-tooltip dependency
CI typecheck was failing because the tooltip component imports
@radix-ui/react-tooltip which was not listed in package.json.
2026-02-23 12:45:12 +02:00
iliya
c03ff54f50 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:45:12 +02:00