fix: load dashboard when only non-VS Code harness logs exist (Claude/Codex/OpenCode)#53
Open
bryantharpe wants to merge 2 commits into
Open
Conversation
findLogsDirs() scans only VS Code workspace storage and Copilot directories, so the dashboard's load gate aborts with "No Copilot chat log directories found" whenever those are absent. But the Claude Code / Codex / OpenCode collectors run in the parse worker independently of that list, so a host with only ~/.claude/projects (e.g. a headless Remote-SSH machine with no VS Code workspace storage) never loads despite having valid sessions. Add hasExternalHarnessSources() and gate on it so the panel only aborts when no source of any kind is present. Update the Copilot-specific empty-state message to reflect all supported sources.
Author
|
@microsoft-github-policy-service agree |
Contributor
There was a problem hiding this comment.
Pull request overview
Fixes the dashboard load gate so the webview can still load and parse sessions when only non–VS Code harness logs (Claude Code / Codex / OpenCode) exist on disk (e.g., headless Remote-SSH hosts), instead of aborting early with a Copilot-only “no dirs found” message.
Changes:
- Add
hasExternalHarnessSources()to detect external-harness log sources on disk. - Update the dashboard’s load gate to abort only when no supported source exists (VS Code/Xcode/Copilot paths and external harnesses).
- Add a new Vitest file to cover the external-harness source discovery used by the gate.
Show a summary per file
| File | Description |
|---|---|
src/webview/panel.ts |
Uses hasExternalHarnessSources() to avoid aborting when findLogsDirs() is empty but external harness logs exist; updates empty-state message. |
src/core/parser-harnesses.ts |
Adds hasExternalHarnessSources() helper to detect Claude/Codex/OpenCode sources on disk. |
src/core/parser-harnesses.test.ts |
Adds tests validating the external-harness source discovery used by the dashboard gate. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 3/3 changed files
- Comments generated: 3
- panel.ts: include Xcode Copilot in the empty-state message (findLogsDirs also scans findXcodeDirs), so it isn't misleading on Xcode-only hosts. - parser-harnesses.ts: guard hasExternalHarnessSources() to return false when neither HOME nor USERPROFILE is set, avoiding cwd-relative probing of paths like .claude/projects. - parser-harnesses.test.ts: restore HOME/USERPROFILE in withHome()'s own finally block (drop afterEach) and add a test for the no-home guard.
Author
|
Thanks for the review! Addressed all three points in 8651ff5:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The dashboard's load gate aborts with "No Copilot chat log directories found" when
findLogsDirs()is empty, but that only scans VS Code workspace storage and Copilot paths. The Claude Code / Codex / OpenCode collectors run in the parse worker independently of that list, so a host with only~/.claude/projects(e.g. a headless Remote-SSH machine, Claude Code used from the terminal, no VS Code workspace storage) never loads despite valid sessions.Adds
hasExternalHarnessSources(), gates on it so the panel aborts only when no source of any kind is present, and updates the Copilot-specific empty-state message to reflect all supported sources. Validated against 133 real Claude Code sessions discovered with zero VS Code directories present.Fixes #52
Checklist
npm run checkpasses (typecheck + lint + spellcheck + knip + tests)parser-harnesses.test.ts)