apache / apache/maka

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

Open
#4,494 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
5.4k
Forks
502
Avg merge
1d 2h
Merged PRs (30d)
715

Description

## 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.

Contributor guide

Open the contributing guide

Research direction

Start with the Desktop controller logic that removes panels whose sourceSessionId differs from the active Session, then read the Side Conversation lifecycle documentation and the related work in #4331. Verify the linked parent/child navigation cases: drafts, transcripts, running Turns, and tabs survive while unrelated navigation, explicit closure, and source removal retain their cleanup behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, typescript
Domain
desktop
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
57/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.