Skip to content

feat: give each Claude Code session its own progress bar - #9

Merged
rogadev merged 3 commits into
mainfrom
dev
Oct 6, 2026
Merged

rogadev merged 3 commits into
mainfrom
dev

Conversation

@rogadev

@rogadev rogadev commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Summary

  • Each Claude Code window now shows its own progress bar. A new window no longer shows a run that an earlier session left unfinished, and agents in several windows on the same repository no longer overwrite each other's bar.
  • paceline-mcp writes .git/paceline/progress-<session>.json, keyed by the CLAUDE_CODE_SESSION_ID that Claude Code sets for processes it starts. Starting a run removes other sessions' files not written for a day.
  • The status line shows the run matching the session_id in its payload. It falls back to the shared progress.json for writers outside Claude Code.
  • A running or halted run whose writer quit without finishing now hides after 4 hours with no update, and shows (paused) after 1 hour instead of 6.
  • README documents the per-session files and the new timings.

Test plan

  • Run go test ./...
  • Open two Claude Code windows on one repo, start a run in each, and confirm each status line shows only its own bar
  • Open a new window after a run was left unfinished and confirm no stale bar appears
  • Write .git/paceline/progress.json by hand and confirm a window with no run of its own shows it, and that it hides after 4 hours of silence
  • Confirm Claude Code passes CLAUDE_CODE_SESSION_ID to MCP servers (verified for Bash, not yet for MCP). If it does not, writes fall back to the shared file.

A running or halted run whose writer quit without finishing stayed on
the status line forever, so a new session showed work it had no context
for. Such a run now hides after 4 hours with no update, and shows
(paused) after 1 hour instead of 6.
paceline kept one run per repository, so a new window showed whatever an
earlier session left behind, and agents in several windows on the same
repo overwrote each other's bar.

- paceline-mcp writes .git/paceline/progress-<session>.json, using the
  CLAUDE_CODE_SESSION_ID that Claude Code sets for the processes it starts
- the status line shows the run matching its payload's session_id, and
  falls back to the shared progress.json for writers outside Claude Code
- starting a run removes other sessions' files not written for a day
The invalid-session case meant to try "a\b" with a backslash, but the
file held a raw U+0008 control character, which staticcheck rejects.
@rogadev
rogadev merged commit 0249c0e into main Oct 6, 2026
21 checks passed
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 1.4.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant