fix(browser): wait for durable ChatGPT conversation URLs - #334
Conversation
|
Validated this against my real Linux manual-login remote-browser route, rather than direct CDP. Before this patch, released Oracle 0.16.0 could submit a one-line prompt and save the completed ChatGPT answer in the local transcript, but then kept polling until it marked the session zombie/error. With commit 2157ab7 on the same persistent signed-in profile and the same oracle serve -> remote-client route:
Local validation:
This fixes the transient-conversation-URL capture failure I was seeing. I will keep the local hotfix until a release contains this commit. |
kesslerio
left a comment
There was a problem hiding this comment.
P2 — src/browser/reattachability.ts:24 remains outside this PR's shared stable-URL contract.
The broad /(?:^|\/)c\/[^/]+/ check still accepts transient /c/WEB:<request-id> routes as recoverable. As a result, hasRecoverableChatGptConversation() can still approve stale metadata for automatic reopening, even though the new parser rejects that route in response capture and other reattachment helpers.
Please route this gate through isStableConversationUrl() / extractStableConversationIdFromUrl() and add a regression test proving a WEB: URL is not recoverable without a durable conversation id.
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: fix(browser): wait for durable ChatGPT conversation URLs This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Summary
/c/WEB:<request-id>route until the durable conversation URL appearsRoot cause
ChatGPT can briefly navigate to
/c/WEB:<request-id>after submission before replacing it with/c/<conversation-uuid>. Oracle's loose conversation URL matcher accepted the transient route and persistedWEBas the expected conversation ID. The completed assistant turn belonged to the durable UUID, so response capture rejected it as out of scope and continued polling until timeout even though the answer was visible and terminal.The shared extractor now requires the conversation path segment to end before
/,?, or#, which rejects the colon-delimited transient route. Monitoring continues until the durable URL is available, and reattach/live-tab helpers use the same rule.This runtime fix is separate from #318, which corrects display and provenance for the bare
Propicker label.Validation
pnpm checkNo live test clicked ChatGPT's Answer now control.
Fixes #333.