-
Notifications
You must be signed in to change notification settings - Fork 116
fix(screentracker): prevent Send() from blocking when ReadyForInitialPrompt stays false #215
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
99b9c11
761b7d5
e80b116
934e832
cb5b5ce
a5bbf3f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| 1 function greet() { | ||
| 2 - console.log("Hello, World!"); | ||
| 2 + console.log("Hello, Claude!"); | ||
| 3 } | ||
| ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ | ||
| > Try "what does this code do?" | ||
| ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ | ||
| Syntax theme: Monokai Extended (ctrl+t to disable) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| ╭────────────────────────────────────────────╮ | ||
| │ ✻ Welcome to Claude Code! │ | ||
| │ │ | ||
| │ /help for help │ | ||
| ╰────────────────────────────────────────────╯ | ||
| ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ | ||
| │ Type your message... | ||
| ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -571,6 +571,14 @@ func (c *PTYConversation) statusLocked() ConversationStatus { | |
| return ConversationStatusChanging | ||
| } | ||
|
|
||
| // The send loop gates stableSignal on initialPromptReady. | ||
| // Report "changing" until readiness is detected so that Send() | ||
| // rejects with ErrMessageValidationChanging instead of blocking | ||
| // indefinitely on a stableSignal that will never fire. | ||
| if !c.initialPromptReady { | ||
| return ConversationStatusChanging | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Obs
This is strictly better than the old behavior (status said "stable" but
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Note Adding to this thread: when readiness never fires, the system now reports "running" indefinitely with no log line or error explaining why. The user's only recourse is inspecting the terminal directly. This is strictly better than the old hang, and the dual-meaning limitation is acknowledged as out of scope here. Noting for awareness since there's no planned follow-up or tracking issue. (Mafuuu)
|
||
| } | ||
|
|
||
| // Handle initial prompt readiness: report "changing" until the queue is drained | ||
| // to avoid the status flipping "changing" -> "stable" -> "changing" | ||
| if len(c.outboundQueue) > 0 || c.sendingMessage { | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Obs
findGenericSlimMessageBoxaccepts mixed border styles — e.g.───on top and╌╌╌on bottom would match. (Edge Case Analyst, Contract Auditor)Agreed this is fine — more permissive detection reduces false negatives, and the narrow scan window (last 9 lines) plus the prompt-character requirement on the middle line make false positives unlikely. Worth knowing if a false-positive concern arises later.