Skip to content

fix(chat): keep interruption forms within the conversation and subagents - #847

Merged
pascalandr merged 1 commit into
devfrom
fix/conversation-interruption-scope
Oct 4, 2026
Merged

pascalandr merged 1 commit into
devfrom
fix/conversation-interruption-scope

Conversation

@pascalandr

Copy link
Copy Markdown
Contributor

User-requested behavior

The user reported that seeing a question from an unrelated conversation was problematic and explicitly selected conversation and subagents. This change scopes the visible dock to the open conversation and recursive descendants, excluding parents, siblings and unrelated roots.

Implementation

  • Shared hierarchy scope for dock and project badge; visible counts/navigation/composer compaction use only that scope.
  • Keep off-scope editors mounted, hidden and inert so answer and permission drafts survive navigation; remember selection per conversation.
  • Explicit project-badge navigation opens the actual owner. Sessionless global Forms use the no-session surface and remain reachable through the badge.
  • No unrelated fallback for stale focus intents; preserve native reply identity.

Validation

  • 37 interruption dock/selection/mobile browser tests pass.
  • Real-shell badge regression passes; 2 additional desktop/mobile permission draft and owner-identity checks pass.
  • UI TypeScript, production UI build and diff check pass.
  • Independent gatekeeper in progress; full CI will be awaited before merge.

Scope

This implements the user's explicit conversation-scope preference. It does not claim to resolve the separately observed Android form disappearance after reconnect. No installed application was rebuilt/replaced.

Maintenance

Existing oversized component touched: packages/ui/src/components/instance/instance-shell2.tsx (~1344 lines).

Show pending questions and permissions only for the open session and its recursive descendants, as requested. Exclude parents, siblings and unrelated conversations from panel navigation and composer compaction. Keep off-scope editors mounted, hidden and inert so partial answers and rejection reasons survive navigation, and remember the selected request per conversation.

Make the project badge explicitly navigate to a pending request's owner when none is in scope. Sessionless global Forms remain reachable on the no-session surface through that badge. Share hierarchy projection, retain native reply identities, and reject stale or out-of-scope focus intents without falling back to another request.

Extend real-shell desktop and Android-touch coverage for family scope, late ancestry, stable selection, retained form and permission drafts, explicit badge navigation and global requests. Interruption, selection and mobile regressions plus the shell badge check and UI TypeScript pass. Document the new scope contract.

@pascalandr pascalandr left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent gatekeeper: ZERO FINDINGS on 4e4abc0 (reviewed 5c523e3..4e4abc0).

Reviewed all production and test changes: active conversation/recursive descendant scope, hidden inert editor draft preservation, focus fences, explicit project/global navigation and native reply authority. Independently ran 37 browser tests; all passed, with one initial fixture-load timeout passing its targeted rerun. Read-only review; no code or daemon mutations.

Full CI is still being awaited before merge. This change implements the user-selected conversation scope; it does not claim to fix the separate Android reconnect disappearance.

@pascalandr
pascalandr merged commit 74e6a02 into dev Oct 4, 2026
12 of 13 checks passed
@pascalandr
pascalandr deleted the fix/conversation-interruption-scope branch October 4, 2026 19:44
pascalandr added a commit that referenced this pull request Oct 4, 2026
…848)

## Approved UX
The user found cross-conversation authorization useful after trying it,
but could not clearly identify the source. They explicitly approved
revising #847: keep in-place replies with compact external previews and
prominent persistent provenance.

## Behavior
- External conversations and sessionless project requests start compact;
deliberate expansion opens their form without changing conversations.
- Source name becomes the primary heading. Subagents show their parent
context; View conversation explicitly navigates to the source.
- One bounded external preview remains discoverable alongside a local
request. Arrival does not replace the current draft; settlement leaves
foreign fallbacks compact.
- The red badge expands the selected request in place, including from
the project Info view. Native reply identity, hidden drafts and
short-keyboard footer access remain preserved.
- Labels translated in all ten locales.

## Validation
- 71 affected browser checks pass; six targeted Info-badge checks pass
after reproducing/fixing the Info entry regression.
- UI TypeScript, production UI build and diff checks pass.
- Desktop/Android-touch compact, expanded, alongside-local and
short-keyboard captures inspected.
- Independent gatekeeper will be published and corrected until zero
findings; user requested admin merge without waiting for CI.

## Scope and maintenance
This implements the revised interaction preference, not a claimed fix
for the separate Android reconnect disappearance. Installation remains
separate. Existing oversized component touched:
packages/ui/src/components/instance/instance-shell2.tsx (~1335 lines).
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