Skip to content

feat(web): child threads show their parent in the header again - #202

Merged
lukemaj merged 2 commits into
mainfrom
feat/201-thread-parent-crumbs
Oct 9, 2026
Merged

lukemaj merged 2 commits into
mainfrom
feat/201-thread-parent-crumbs

Conversation

@lukemaj

@lukemaj lukemaj commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

What: A child thread's header reads project / parent title / thread title again; the parent title opens the parent, and a small menu switches between sibling threads.
Why: The V2 port dropped v1's header crumbs (#18); V2 only shows "Subagent of" at the top of the conversation, which scrolls away.
So what: The user approved merging this; it ships in the next Chromeria build.

Closes #201.

How

Ported v1's ThreadParentCrumbs onto V2's thread lineage (lineage.parentThreadId, relationship subagent; forks excluded). Pure helpers in threadParentCrumbs.logic.ts; one 3-line hook in upstream ChatHeader.tsx (already carried by fork features). Only child threads subscribe to the full thread-shell list, so top-level threads pay nothing.

Proof

  • vp test run apps/web/src/components/chat/threadParentCrumbs.logic.test.ts: 3 passed.
  • tsc --noEmit for apps/web: passed. vp lint/vp fmt on changed files: no errors.
  • No screenshots: no browser started without permission; the user verifies in the next build.

Elon record

Requirements and who asked: User asked to bring back the stacked parent title for child threads.
Deleted: Grandparent chains, mobile, the v1 Agents panel tree.
Bottleneck: None; V2 thread shells already carry lineage.
Checked myself: v1 source at ffcdae87ca, V2 lineage writers (SubagentProjection, lineageBackfill, ThreadForkService), test and typecheck output.

Model: Claude Opus 5.5 in Claude Code (Chromeria thread).

🤖 Generated with Claude Code

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L labels Oct 9, 2026
@lukemaj

lukemaj commented Oct 9, 2026

Copy link
Copy Markdown
Contributor Author

Independent review (GPT-6 Luna, source only) on a64fdeff: no blocking findings. Child threads from childThreads, Prism delegate_task, Spectrum and provider subagents carry subagent lineage on EnvironmentThreadShell; forks excluded; hook order stable; shell-list subscription gated on a resolved parent; long titles truncate.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ The exact PR base did not have a successful artifact. Baseline uses the latest successful main measurement shown below.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.9 KiB 20.9 KiB 0 B (0.0%) 29.3 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB −7 B (−0.1%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB −7 B (−0.6%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 31aa793 · PR result: 98be8cd · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lukemaj
lukemaj force-pushed the feat/201-thread-parent-crumbs branch from a64fdef to dc0e913 Compare October 9, 2026 14:11
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lukemaj
lukemaj force-pushed the feat/201-thread-parent-crumbs branch from dc0e913 to 98be8cd Compare October 9, 2026 14:12
@lukemaj
lukemaj merged commit ef1f915 into main Oct 9, 2026
26 checks passed
@lukemaj
lukemaj deleted the feat/201-thread-parent-crumbs branch October 9, 2026 14:21
lukemaj added a commit that referenced this pull request Oct 14, 2026
* feat(web): child threads show their parent in the header again

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(fork): map child thread header crumbs

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Child threads show their parent in the header again

1 participant