Skip to content

fix: preserve async subagent session state - #369

Open
sleepinginsummer wants to merge 14 commits into
agegr:mainfrom
sleepinginsummer:fix/subagent-async-session-state
Open

fix: preserve async subagent session state#369
sleepinginsummer wants to merge 14 commits into
agegr:mainfrom
sleepinginsummer:fix/subagent-async-session-state

Conversation

@sleepinginsummer

Copy link
Copy Markdown
Contributor

Summary

  • keep the session active while detached subagents are still running
  • preserve user draft text when a send is not accepted during an async state transition
  • cover async settlement and rejected-send paths

Verification

  • node_modules/.bin/tsc --noEmit
  • npm run lint
  • node --test components/ChatInput.test.mjs hooks/useAgentSession.test.mjs

The fullscreen trash panel's z-index (1000) was trapped inside the
sidebar container's stacking context (z-index 200), so the fixed
file-panel toggle button (z-index 300) covered the close button in the
top-right corner on desktop. Rendering through createPortal to body
(consistent with DirectoryPicker) lets the overlay win the stacking
order.
Sidebar list refresh depended entirely on SSE events (message_end etc.).
If the stream dropped or events were lost, a newly created session never
appeared until a manual refresh: it was excluded from completedInBackground
because it is the selected session, and running-poll updates only touched
unread markers. Detect newly running session ids in the 2.5s poll and
trigger loadSessions as a fallback.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant