Conversation
…le worktreePath overwrites Two fixes for commits not appearing after project-from-PR creation: 1. Dispatch 'timeline-invalidated' CustomEvent from invalidateBranchTimeline and invalidateProjectBranchTimelines, and listen for it in BranchCard to trigger a re-fetch — previously the loadedTimelineKey guard prevented re-loading after cache invalidation. 2. Merge branches in the project-setup-progress handler to preserve worktreePath when a stale async response would overwrite it with null. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… them Previously, get_commits_since_base errors were silently caught and replaced with an empty vec, which the frontend then cached as a valid empty timeline. This caused commits to appear missing when transient git errors (e.g., ref-lock races during concurrent worktree setup) occurred during the initial timeline load. By propagating the error, the frontend's cache-on-success logic ensures failed loads aren't cached and will be retried. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0cff4a38aa
ℹ️ About Codex in GitHub
Codex has been enabled to automatically 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 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if (branchIds.includes(branch.id) && (branch.worktreePath || isRemote)) { | ||
| void loadTimeline(); |
There was a problem hiding this comment.
Gate invalidation reload on remote workspace readiness
The new timeline-invalidated listener reloads whenever isRemote is true, even if the remote workspace is not running. In this repo, invalidateProjectBranchTimelines(...) is fired during project setup refreshes, so stopped/starting remote branch cards will now call loadTimeline() and hit get_branch_timeline while the workspace is unavailable, producing avoidable backend errors and noisy/flickering UI error state. This should use the same readiness guard as the main timeline-load effect (remote status must be running) before triggering a reload.
Useful? React with 👍 / 👎.
Summary
build_branch_timelineinstead of silently swallowing them, so callers can react to failurestimeline-invalidatedcustom events when branch timeline caches are cleared, and listen for them inBranchCardto trigger a re-fetchProjectHomefrom overwritingworktreePathwith null when it's already setTest plan
🤖 Generated with Claude Code