Repository navigation
Conversation
The error banner tells the user a turn failed, but working out why means reading logs. An Explain action on the banner now asks the configured text generation model what probably went wrong and what to try. The server builds the context itself from the thread and runs the operation in an empty temporary directory with tools off where the provider allows it. Squashed from four commits so it rebases onto main's provider packages as one change. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
saphid
force-pushed
the
feat/explain-known-issues
branch
2 times, most recently
from
October 12, 2026 00:03
c73ff79 to
101b1ef
Compare
The explain request needs the operate scope, so a read-only connection saw an Explain action the server always rejected. The banner now gets an explain target only when the connection can operate the thread. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Checks that each runs in an empty temporary directory that is removed afterwards, refuses tool requests, decodes and bounds the structured answer, rejects incomplete answers, and releases its host or session. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A refused explanation logged its raw cause, whose detail can carry provider CLI output. The warning now carries only the reason and the cause's tag and operation. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When Explain runs, the server also searches the upstream issues with a few words from the failure (ids, paths and URLs stripped) and lets the text model say which candidate, if any, describes the same failure. The banner links that issue, or offers a GitHub bug form pre-filled with the failure, explanation, provider, model and version for the user to review and submit. T3 posts nothing, and a failed search never blocks the explanation. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…text out of report links GitHub search is public, so the query is now built only from a fixed list of diagnostic words and a canonical driver name, never from the error's own text. The report link carries only those words, the provider, runtime mode, OS and version; the error and explanation are copied to the clipboard for the user to check and paste. Cut text on code points, never fail Explain over the link, and back off after GitHub rate limits. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…searches Words picked out of the error could still spell a private name, so the query is now the fixed terms of recognised failure categories plus the driver keyword. Identical concurrent searches share one request, and rate limit waits start when the response arrives. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…lanations Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
saphid
force-pushed
the
feat/explain-known-issues
branch
from
October 12, 2026 00:26
101b1ef to
90c79eb
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Model: Claude Opus 5.5 and Claude Sonnet 5.5. Rebased onto current main with Claude Opus 5.5 on 2026-10-12.
Problem
Explain (#16685) tells the user what probably went wrong, but not whether it is a problem other people already have. Someone hitting a known bug has no quick way to find its issue, and someone hitting a new one has to work out where and how to report it.
Change
When the user clicks Explain, the server also checks pingdotgg/t3code's issues for a match:
dev:mobileworkflow #123 <title> as a link.Before (#16685): the explanation, with no issue lookup.
After (this PR): Explain, then Report this issue, which copies the details and opens the form. Real-time recording, cropped to the banner.
How it works:
attachment read turn start claude repo:pingdotgg/t3code is:issue. Only which categories matched leaves the machine. No match means no search.Surfaces: web and desktop (desktop opens the link through its existing external-window handler). Mobile has no Explain action. The user guide's activity log page says exactly what the search and the link contain.
Scope and approval
A follow-up to #16685, which is itself a new feature without maintainer approval yet; the same applies here, and I'll follow maintainer direction on both. Kept separate so #16685 stays reviewable on its own.
Verification
vp test runonKnownIssueSearch.test.ts,ProviderFailureReportLink.test.ts,ProviderFailureExplanationService.test.ts,apps/server/src/textGenerationandapps/web/src/components/chat: all pass. They cover private names made of category words (Failed to read repo billing-migration: permission denied,Connection refused by auth.billing.internal) sending only fixed terms, a property test that every query word is a fixed term or provider keyword, 28 real failure strings mapping to their categories, out-of-list issue numbers ignored, a failed or rate-limited search still returning the explanation, backoff measured from response receipt, 20 concurrent identical searches making one request, emoji at every truncation point, and the report URL carrying none of the error text, explanation or model name.tsc --noEmit: 0 errors inapps/server,apps/web,packages/contracts,packages/client-runtime. Lint and format clean, no suppressions.8c9fbc8fb5fwith fix(server): provider failures say why a turn could not start #16303'sProviderFailure.tslaid over it so the failure names its reason): a real Claude attachment failure. The live search ran and the model matched no issue, so the report path is shown; clicking it opened a new tab with the pre-filled form and the clipboard held the three fields. The known-issue link state is covered by tests, not seen live, because no open upstream issue matches this failure.Built with Claude Sonnet 5.5 and Claude Opus 5.5 in Claude Code; cross-vendor review by GPT-6 Astra in T3 Code.
🤖 Generated with Claude Code