Skip to content

Docker support, session management, context insights, and subagent display improvements#15

Merged
matt1398 merged 15 commits intomainfrom
dev
Feb 16, 2026
Merged

Docker support, session management, context insights, and subagent display improvements#15
matt1398 merged 15 commits intomainfrom
dev

Conversation

@matt1398
Copy link
Owner

Summary

This release brings several major features and improvements to claude-devtools:

Docker & Standalone Mode (#13)

  • Add Docker support with Dockerfile and docker-compose.yml for containerized deployment
  • Implement standalone HTTP server mode (standalone.ts) for running without Electron
  • Add ConfigManager for runtime configuration management
  • Remove unused Remotion dependencies, reducing bundle size

Session Hiding (#11)

  • Implement session hide/un-hide functionality in the sidebar
  • Add context menu option and bulk management for hidden sessions
  • Persist hidden session state across app restarts

Token Consumption Insights (#10)

  • Enhance session context tracking with ranked injection list and improved display
  • Add navigation and tool highlighting in chat history
  • Improve MetricsPill with richer token breakdown
  • Enhance Claude root management UI in settings

Subagent Display Enhancements (#12)

  • Implement subagent input and compact boundary display items
  • New DisplayItemList component for structured rendering
  • Improve SubagentItem and ExecutionTrace presentation

Other Improvements

  • Enhanced GeneralSection settings with reorganized controls
  • Improved sidebar DateGroupedSessions with better grouping and interaction
  • Updated SessionItem with richer visual state
  • Better AIGroup message counting logic

Stats

- 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.
- 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.
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Comment on lines +195 to +196
const lastContribution = lastMainAssistantInputTokens - lastPhase.post;
total += lastContribution;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@matt1398 matt1398 merged commit eda80b9 into main Feb 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant