Skip to content

Chat on Windows: Claude Code's session under the pane's shell - #113

Closed
puchedev wants to merge 10 commits into
makefunstuff:mainfrom
puchedev:windows-chat
Closed

puchedev wants to merge 10 commits into
makefunstuff:mainfrom
puchedev:windows-chat

Conversation

@puchedev

@puchedev puchedev commented Nov 8, 2026

Copy link
Copy Markdown
Contributor

The chat of a Claude Code agent in herdr-core now shows on a Windows PC (Git Bash under OpenSSH), and the chat search finds words in it. It said "No transcript for this agent".

Builds on #111 (search reading herdr-core's agents); its commits are the first ones here until that one is merged.

What changes

  • TranscriptFollower.FIND, the lookup the chat and the chat search share: herdr-core reports the pane's pid, which on Windows is the shell's (powershell.exe), with claude.exe under it. Git Bash has no pgrep and doesn't see Windows processes, so on Windows (uname -s MINGW, MSYS or CYGWIN) one powershell.exe call lists every process and its parent and awk walks down from the pid (children and grandchildren, each pid once, as Windows reuses pids). The table is read once per search command, not once per chat. Linux and macOS keep pgrep -P.
  • ChatSearch: Git Bash's grep (3.0) aborts on -i with -F, so when grep fails (status above 1) awk matches the lines instead.
  • ChatSearch.commands: Windows hands the command to Bash on a line cut at 8191 characters (each " counts twice), and a cut command fails whole. A machine with more agents than fit gets more than one command, run one after another; nothing is skipped on any machine.

Checks

  • New TranscriptWindowsTest (runs anywhere: it fakes uname and powershell.exe): a child and a grandchild, no session file, CRLF output, processes outside the pane, a stale parent id, the grep fallback, one process-table read for a search, and that a search of 300 chats is split into commands that each fit.
  • ./gradlew -p core test: 620 tests. I ran them on Windows, where 52 tests already fail on main (Java's quoting of sh -c, the Microsoft Store's python3); the same ones fail here and no others. Linux CI is the real check.
  • ./gradlew :app:testDebugUnitTest: 93 tests; the 13 that fail on main on Windows (file renames, RoutesTest) fail here too, no others.
  • By hand on Windows 11 with a phone: the agent's chat shows and follows; a search finds a word from it and opens the chat.

Codex's transcripts on Windows (found through open file handles on Linux and macOS) are out of scope.

🤖 Generated with Claude Code

puchedev and others added 10 commits November 7, 2026 21:09
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Search lists herdr-core's workspaces now, but only classic herdr opens a
terminal from the phone, so the button failed there. The Spaces screen
already left it out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…i with -F

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…once per chat

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Windows hands the command to Git's bash on a line cut at 8191 characters
(each double quote counting twice), and a cut command fails whole. A
machine with more agents than fit gets its search in more than one
command, run one after another, so no chat is skipped. The process table
is read once per command even when PowerShell gives nothing back.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
makefunstuff added a commit that referenced this pull request Nov 8, 2026
…118)

puchedev's #113, merged onto main after #111.

Co-authored-by: Manuel Puche <229537713+puchedev@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@makefunstuff

Copy link
Copy Markdown
Owner

Merged through #118, thank you @puchedev! A Claude Code agent's chat now shows on a Windows PC, and chat search finds words in it even where Git Bash's grep gives up. Its first commits were #111, already in, so I merged main into it on our side; you're co-author of the squash.

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.

2 participants