|
Closing a tab whose visible subagent group is non-empty now asks ONE
daisyUI modal (CloseSubagentsConfirm): 'Yes, close all N' closes the tab
plus every transitive descendant tab (sub-sub-agents included, no further
prompts), 'No, keep them open' closes only the tab, and Cancel/Escape/
backdrop closes nothing. Plain tabs close directly as before.
- cascadeCloseIds (pure, tab-groups.ts): the tab + its transitive visible
group descendants in tab order — one decision covers the whole subtree
- TabList intercepts tab-close and opens the dialog only when the
subtree has >1 tab; ids are snapshotted at open time
- each closed conversation goes through the existing onClose port, so
every close still POSTs /conversations/:id/close (backend doesn't
cascade; it is idempotent)
|