Skip to content

feat(desktop): preserve Side Conversations across linked-session navigation #4494

Description

@1625567290

Problem

Desktop Side Conversations are removed whenever navigation changes the active Session away from their source Session. This also happens when the destination is a linked child/Sub Agent Session belonging to the same unit of work.

For example:

  1. Open a Side Conversation from a parent Session.
  2. Keep a draft or start a Turn in the Side Conversation.
  3. Open one of the parent Session's linked child/Sub Agent Sessions.
  4. Return to the parent Session.

The Side Conversation has been closed and its temporary fork removed. A running answer, draft, and conversation history can no longer be resumed from the parent.

This is consistent with the current temporary lifecycle rather than an implementation regression: the Desktop controller removes panels whose sourceSessionId differs from the active Session, and the Side Conversation documentation specifies cleanup when the owning Session changes. However, a linked child is still part of the same work, so treating that navigation like switching to an unrelated Session makes inspection of delegated work unnecessarily destructive.

Desired outcome

Preserve a source Session's Side Conversations while the user navigates between that source and its linked descendant Sessions.

  • The Side Conversation remains owned by its original source Session; it is not reparented to the child.
  • Its draft, transcript, and running Turn remain intact while a linked child is open.
  • Returning to the source restores the same Side Conversation tabs.
  • Explicitly closing the tab keeps the current cleanup behavior.
  • Navigating to an unrelated Session may keep the current temporary cleanup behavior.
  • Removing the source Session still cleans up its temporary Side Conversations.
  • This does not make Side Conversations durable across restart, widen their permissions, synchronize their model with later parent changes, or promote them into ordinary Sessions.

This should be tracked as a focused lifecycle slice under #4331.

Alternatives or workarounds

  • Return to the parent before opening or continuing a Side Conversation. This prevents simultaneous inspection of linked child work.
  • Promote the Side Conversation to a durable ordinary Session. That is a broader product decision and is unnecessary for navigation within one linked Session family.
  • Retain every Side Conversation globally. That would change the temporary lifecycle for unrelated work and is broader than needed.
  • Reparent the Side Conversation to the active child. That would change lineage and cleanup ownership and should be avoided.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions