diff --git a/.agents/skills/lib_py/herdr_restore.py b/.agents/skills/lib_py/herdr_restore.py index c1a5f23..679732b 100644 --- a/.agents/skills/lib_py/herdr_restore.py +++ b/.agents/skills/lib_py/herdr_restore.py @@ -1,8 +1,10 @@ """Issue #45 (B): close the restored empty shells of the session being resumed. With restore-on-restart off (lib_py/herdr_config.py) a restarted MAM server -still brings every saved pane back - as an empty shell in its old cwd, or in -$HOME when that directory is gone. A pane keeps the `agent_session` its agent +still brings every saved pane back - as an empty shell in its old cwd. When +that directory is gone, herdr 0.9.1 opens the shell in $HOME and herdr 0.9.3 +keeps the old path; nothing below looks at the cwd. A pane keeps the +`agent_session` its agent reported before the server died. resume_session.sh calls this once, right before it spawns, with the id it is about to resume; a pane is closed only when all of these hold: diff --git a/tests/test_issue45_restore.py b/tests/test_issue45_restore.py index 188e722..a50ca07 100644 --- a/tests/test_issue45_restore.py +++ b/tests/test_issue45_restore.py @@ -264,7 +264,7 @@ def test_b_only_the_resumed_sessions_restored_shell_is_closed(rig): rig.run_agent(rig.new_pane(rig.root / f"ws{k}", k), ids[k]) rig.new_pane(rig.root / "wsU", "U") # a user's plain shell: no agent_session rig.crash(*ids.values()) - shutil.rmtree(rig.root / "wsY") # a removed worktree: restored into $HOME + shutil.rmtree(rig.root / "wsY") # a removed worktree: still restored (cwd below) before = rig.restores() rig.start_via_shim() @@ -272,7 +272,9 @@ def test_b_only_the_resumed_sessions_restored_shell_is_closed(rig): rig.run_agent(_pane_with(rig, ids["Z"])["pane_id"], ids["Z"]) # running again rig.hd("pane", "run", _pane_with(rig, ids["X2"])["pane_id"], "sleep 60") # busy shell time.sleep(1) - assert _pane_with(rig, ids["Y"])["cwd"] == str(rig.root) + # Y's directory is gone: herdr 0.9.1 restores the pane into $HOME (rig.root), + # 0.9.3 keeps the old path. Closing does not look at the cwd either way. + assert _pane_with(rig, ids["Y"])["cwd"] in (str(rig.root), str(rig.root / "wsY")) n = len(rig.panes()) for k in ("Z", "X2"):