Commit graph

155 commits

Author SHA1 Message Date
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
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
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
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
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
3f479dcf07 test(report): add session analyzer tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:56:26 -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
Paul Holstein
feb0b66df8 docs: add session analysis report implementation plan
7 tasks with acceptance criteria covering types, analyzer engine,
tests, tab integration, UI components, routing, and polish.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:24:33 -05:00
Paul Holstein
29401916a8 docs: add session analysis report design document
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-21 16:20:03 -05: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
matt
5f41cc95e9
Merge pull request #48 from cesarafonseca/fix/macos-traffic-light-title-spacing
fix: increase macOS traffic light content gap for better title spacing
2026-02-22 01:05:00 +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
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
c9f67588b7
Merge pull request #43 from matt1398/chore/disable-builtin-triggers
feat: disable default notification triggers for better control
2026-02-21 15:51:18 +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
matt
d775581118 feat: add Homebrew installation instructions and badge to README
- Included a new badge for Homebrew installation in the README.
- Added Homebrew installation instructions for macOS users to enhance accessibility.
2026-02-21 14:13:29 +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
44da078b3b
Merge pull request #38 from matt1398/fix/context-badge
feat: enhance ContextBadge and SessionContextPanel with new FlatInjec…
2026-02-20 13:39:26 +09: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
7a264a882c
Merge pull request #37 from matt1398/feat/session-id
feat: add copy functionality to session context menu
2026-02-20 12:53:39 +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
12df279225
Merge pull request #36 from matt1398/feat/noti-tab-scope
feat: enhance notification handling with scoped actions
2026-02-20 12:48:30 +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
matt
51e053a5b3
Merge pull request #33 from cesarafonseca/fix/mcp-tool-output-pretty-json
feat: improve MCP tool input/output rendering
2026-02-20 12:34:18 +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
matt
4f1e4012cf
Merge pull request #30 from matt1398/dev
Dev
2026-02-20 01:38:56 +09:00
matt
4be6578d96
Merge branch 'main' into dev 2026-02-20 01:38:45 +09:00
matt
7574d0defc
Fix/linux sandbox permissions (#29)
* feat(package): add afterInstall script for chrome-sandbox permissions

- Updated package.json to include an afterInstall script that adjusts permissions for the chrome-sandbox on Linux.
- Added new afterInstall.sh script to ensure proper ownership and permissions for the sandbox file, enhancing security and functionality.

* chore(package): add deb configuration section in package.json

- Introduced a new "deb" section in package.json to specify post-installation scripts for Debian packages.
- Enhanced the package configuration for better support of Linux distributions.
2026-02-20 01:37:43 +09:00
matt
e570bbebde
feat(package): add afterInstall script for chrome-sandbox permissions (#27) (#28)
- Updated package.json to include an afterInstall script that adjusts permissions for the chrome-sandbox on Linux.
- Added new afterInstall.sh script to ensure proper ownership and permissions for the sandbox file, enhancing security and functionality.
2026-02-20 01:27:10 +09:00
matt
eeec1e7178
feat(package): add afterInstall script for chrome-sandbox permissions (#27)
- Updated package.json to include an afterInstall script that adjusts permissions for the chrome-sandbox on Linux.
- Added new afterInstall.sh script to ensure proper ownership and permissions for the sandbox file, enhancing security and functionality.
2026-02-20 01:26:27 +09: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
matt
bd088ec71c
Update README.md 2026-02-17 20:31:06 +09:00
matt
1f6abf8df6
Merge pull request #19 from matt1398/dev
docs: add Product Hunt badge to README
2026-02-17 17:06:34 +09:00
matt
12a87b8b90 docs: add Product Hunt badge to README
- Included a Product Hunt badge in the README to promote claude-devtools and enhance visibility.
- Updated the README layout for better presentation and user engagement.
2026-02-17 17:06:17 +09:00
matt
4b8c65e2a2
Merge pull request #18 from matt1398/dev
docs: add Docker deployment instructions to README
2026-02-17 14:09:22 +09:00
matt
f5183c4978 docs: add Docker deployment instructions to README
- Included a section for Docker deployment in the README, detailing how to run the application using Docker.
- Updated the instructions to enhance user accessibility for Docker users.
2026-02-17 14:09:03 +09:00
matt
6874fd9980
Merge pull request #17 from matt1398/dev
docs: update README to include Docker deployment badge and clarify pr…
2026-02-17 14:00:10 +09:00