Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

"Open question" banner opens an empty new thread when the child thread runs on a linked environment

Ouverte Adaptée aux débutants
#27,005 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
74/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
typescript
Domaine
frontend

Piste de recherche

Commence par apps/web/src/components/chat/ThreadActivityBanners.tsx et apps/web/src/components/chat/useThreadLifecycle.tsx, puis lis la définition de EnvironmentThreadShell dans packages/client-runtime/src/state/models.ts. Suis la transmission de l’environnement du fil enfant lors de son ouverture, y compris la bannière de travail en arrière-plan. Le travail est terminé lorsque cliquer sur la bannière d’un fil enfant dans un autre environnement ouvre ce fil dans son propre environnement ; vérifie les tests pertinents dans les zones correspondant à ces fichiers.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

What happened

Feature: Linked environments, a beta behind Settings → Labs.

A thread on machine A (macOS desktop) had a child thread running on linked machine B (Linux server), and that child was waiting on a question. The parent's timeline showed the child-input banner, with the child's title and an "Open question" button. Clicking it (or the child's title) opened an empty new-thread view, not the child thread. Opening the child's own t3-thread:// link showed the thread and its question correctly.

Diagnosis

The banner sends only the child's thread id. The click handler then pairs that id with the parent's environment:

  • childInputNowItem (apps/web/src/components/chat/ThreadActivityBanners.tsx:52 and :60) calls onOpenThread(child.id) / onOpenThread(first.id). Each child is an EnvironmentThreadShell, which already carries environmentId (packages/client-runtime/src/state/models.ts:138), but that id is dropped here.
  • onOpenRelatedThread (apps/web/src/components/chat/useThreadLifecycle.tsx:400–429) builds scopeThreadRef(environmentId, threadId) from the current thread's environment, then navigates to /$environmentId/$threadId.
  • childThreadInputsAtom (packages/client-runtime/src/state/threadShell.ts:383–420) deliberately includes children on other environments: tasks whose delegatedFrom points at this thread. For those, the route becomes /<A>/<B's thread id>, a thread A doesn't have.
  • Because the server sends shellThreadFamilies: true (apps/server/src/ws.ts:1788), the guard that would show "This thread is no longer available" is skipped. The app navigates anyway and lands on a blank thread/draft view.

Local subagents share the parent's environment, so this only goes wrong for cross-machine children. The banner was the only in-app way to reach this child's question: the child was also hidden from the sidebar and the Lineage panel (#27004). So the user had no working path to answer it.

Steps to reproduce
  1. Turn on Settings → Labs → Linked environments on machines A and B, and link A → B.
  2. From a thread on A, start a task on B that becomes a child of that thread: delegate_task with target.environmentId: <B>, or t3_thread_launch with environmentId: <B> plus delegatedFrom.
  3. Make the child ask a question or request an approval. For example, use a mode that prompts for tool approval, or have it call AskUserQuestion.
  4. In the desktop app, open the parent thread on A. The banner "Subagent needs input · · Open question" appears.
  5. Click Open question. Expected: B's child thread opens. Actual: an empty new-thread view for environment A opens.
Version

0.1.5-nightly.20261029.3877 (desktop app and both servers). The same code is on main as of 2026-10-29.

Environment

A: macOS (Darwin 27.0.0, arm64), desktop app 0.1.5-nightly.20261029.3877, Node 24.22.1. B: Linux x64 server 0.1.5-nightly.20261029.3877. Provider claudeAgent (claude-opus-5-5).

Evidence
# apps/web/src/components/chat/ThreadActivityBanners.tsx
<InlineButton tone="muted" onClick={() => onOpenThread(child.id)}>   # environmentId dropped
<InlineButton onClick={() => onOpenThread(first.id)}>

# apps/web/src/components/chat/useThreadLifecycle.tsx
const onOpenRelatedThread = async (threadId: ThreadId) => {
  const threadRef = scopeThreadRef(environmentId, threadId);         # parent's environment
Related issues
  • #19165 (closed as duplicate): "Open question" opens the child but no question shows. Different symptom: there the right thread opened.
  • #26766: a stale parent link on a remote child, in the opposite direction (child → parent).
  • #27004: t3_thread_launch threads with delegatedFrom are hidden, which is how this reporter's child had no other entry point.
Fix applied or workaround

None applied. Workaround: open the child through its t3-thread:// link (it includes B's environment id).

Suggested fix: change onOpenThread to take a ScopedThreadRef (or { environmentId, threadId }), and pass child.environmentId from childInputNowItem. The background-work banner's Open button (ThreadActivityBanners.tsx around line 174, onOpenThread(onlyThreadId)) uses the same id-only callback, so check it for the same assumption.

Filed by

Claude Code (claude-opus-5-5) via T3 Code triage

Langage dominant
TypeScript
Étoiles
24.8k
Forks
6.4k
Merge moyen
14 h 40 min
PR mergées (30 j)
193

Préparer son environnement

Ouvrir dans Codespaces

Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de pingdotgg/t3code

Toutes les issues de pingdotgg/t3code

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.