githubnext/chopinPublic

Let's compose rich plans together

Show where a research child came from

A research child now opens with a quiet provenance line naming its parent,
who started it and its source count, with the brief one click away. The
parent name returns to the research card that produced it. The child's
Chat starts in the parent's open or closed state and explains itself when
empty. The server exposes a read-only provenance route for a child.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
C5MAMaggie Appleton and Claude Opus 5.5 authored
52974acPatch
Parenta739401
25 files changed+356-44
StackedSplit
apps/server/src/research/routes.test.ts+5 −0
apps/server/src/research/routes.ts+20 −0
apps/server/src/research/service.test.ts+9 −0
apps/server/src/research/service.ts+21 −0
apps/server/src/storage/memory/research.ts+10 −0
apps/server/src/storage/port.ts+5 −0
apps/server/src/storage/postgres/research.ts+12 −0
apps/server/src/storage/research-publication-contract.ts+3 −0
apps/web/src/chat/chat.tsx+6 −0
apps/web/src/chat/transcript.tsx+7 −0
apps/web/src/child-provenance.tsx+83 −0
apps/web/src/document-workspace-host.tsx+12 −2
apps/web/src/hosted.tsx+8 −3
apps/web/src/navigation.css+39 −0
apps/web/src/research-requests.ts+17 −1
apps/web/src/room-workspace.tsx+7 −0
apps/web/src/workspace-model.test.ts+6 −2
apps/web/src/workspace-model.ts+11 −7
apps/web/src/workspace.tsx+2 −5
e2e/research-child-recovery.e2e.ts+21 −0
e2e/research-child-surface.e2e.ts+10 −23
packages/editor/src/plan-editor.tsx+16 −0
packages/editor/src/styles.css+15 −1
packages/editor/src/widgets/research.tsx+1 −0
packages/protocol/research.d.ts+10 −0