async fn redock_as_tab(
state: &AppState,
target_tab_id: &str,
block_id: &str,
target_block_id: &str,
) -> Result<(), String>Expand description
Place a just-redocked block as a TAB of the pane holding
target_block_id, active: the reducer’s own tree first
(LayoutStackPush, which also checks the block now lives in this tab),
then a queued stackpush so the window showing that tab adds the pill.
Same backend-then-frontend shape as pane.moveTab.