Conversation
- 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.
- 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 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.
- 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.
Feat/token consumption insights
- 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.
feat(sessions): implement session hiding and un-hiding functionality
- 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.
feat(chat): implement subagent input and compact boundary display items
- 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.
…er 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.
- Deleted obsolete Remotion packages from devDependencies in package.json to streamline the project and reduce unnecessary bloat.
Docker / Standalone deployment + Server mode improvements
- 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.
- 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.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fb66b14d62
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| tokenCount: estimateTokens(rawText), | ||
| }); | ||
| } | ||
| continue; |
There was a problem hiding this comment.
Keep parsing tool results for non-meta user messages
The unconditional continue here exits the loop for every non-meta user message, so messages that carry toolResults while isMeta is false (a known JSONL shape in older logs) never reach the tool-result extraction branch below. In those sessions, tool calls cannot be linked to their results, which drops execution output and skews tool/context displays in subagent rendering.
Useful? React with 👍 / 👎.
| const lastContribution = lastMainAssistantInputTokens - lastPhase.post; | ||
| total += lastContribution; |
There was a problem hiding this comment.
Guard last subagent phase when compaction has no follow-up
This calculation always adds a final phase even when the last compaction has no subsequent assistant usage, leaving lastPhase.post as 0. In that case lastMainAssistantInputTokens gets counted once in phase 1 and again in the final phase, inflating totalConsumption and phase breakdown values for subagent sessions that end right after compaction.
Useful? React with 👍 / 👎.
Summary
This release brings several major features and improvements to claude-devtools:
Docker & Standalone Mode (#13)
Dockerfileanddocker-compose.ymlfor containerized deploymentstandalone.ts) for running without ElectronConfigManagerfor runtime configuration managementSession Hiding (#11)
Token Consumption Insights (#10)
MetricsPillwith richer token breakdownSubagent Display Enhancements (#12)
DisplayItemListcomponent for structured renderingSubagentItemandExecutionTracepresentationOther Improvements
GeneralSectionsettings with reorganized controlsDateGroupedSessionswith better grouping and interactionSessionItemwith richer visual stateStats