From 2d24ae98621f24c869ced4dbc06146086ff14887 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Mon, 28 Sep 2026 15:57:07 -0300 Subject: A restored terminal's tag names neither the REPL it was nor the shell it had A dump keeps a terminal's whole tag, and restoring read its tail from it after the directory: the REPL id and Tty+fish, which were live facts and not the tag's text, came back as a custom tail, so the tags said python-a over a fresh shell bound to nothing. Restoring now sees through the id and the shell in the Tty word, a default tail stays the default, and the new shell names itself when it starts. Co-Authored-By: Claude Opus 5.5 --- src/pardes.zig | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/pardes.zig') diff --git a/src/pardes.zig b/src/pardes.zig index f8328289..43d8e94d 100644 --- a/src/pardes.zig +++ b/src/pardes.zig @@ -1544,6 +1544,25 @@ test "a REPL bound for a language takes the exec made on a body in it; tags, Exe try std.testing.expect(doc.repl == null); } +test "a restored terminal's tag names neither the REPL it was nor the shell it had" { + const gpa = std.testing.allocator; + const p = try Pardes.init(gpa, .{ .tty_only = true }); + defer p.deinit(); + while (p.nextEffect()) |_| {} + p.acknowledgeShell(0, "/usr/bin/fish", true); + var host: FakeTtyQuery = .{}; + host.install(p); + try std.testing.expect(p.executeBuiltinLine(0, "Repl python")); + try dump.dumpState(p); + const restored = try dump.restore(p, p.dump_out.?, "test"); + defer restored.deinit(); + const pane = restored.panes[0].?; + try std.testing.expect(pane.repl == null and pane.tag.own == null); + const shown = try tagline.tagText(restored, restored.scratch.allocator(), pane); + try std.testing.expect(std.mem.indexOf(u8, shown, "python-a") == null); + try std.testing.expect(std.mem.indexOf(u8, shown, "Tty+fish") == null); +} + test "Tty+fish, one word a tag can hold, opens a terminal on that shell" { const p = try Pardes.init(std.testing.allocator, .{ .tty_only = true }); defer p.deinit(); -- cgit v1.3