From f18b1adc04dad68e115bb70c42e26472733daf1d Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Wed, 30 Sep 2026 11:06:47 -0300 Subject: Column serials go on across a Restore as pane serials do: a restored column never takes a serial the old session handed out A Restore carried next_serial over for panes but started column serials at 1 again. So a restored column could take the serial a deleted column had, and a script holding col/ from before the Restore would find a different column there. The column counter is now carried over like the pane one, and restoredcol maps each old serial to a fresh one. Co-Authored-By: Claude Opus 5.5 --- src/dump.zig | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/dump.zig') diff --git a/src/dump.zig b/src/dump.zig index 2d3c2593..1cc115be 100644 --- a/src/dump.zig +++ b/src/dump.zig @@ -852,6 +852,9 @@ fn initDump(gpa: std.mem.Allocator, opts: Options, zon_bytes: []const u8, previo errdefer p.deinit(); if (previous) |old| { p.next_serial = old.next_serial; + // Columns as panes: a restored one takes a fresh serial, never one + // a column of the old session had, living or deleted. + p.next_column_serial = old.next_column_serial; p.lsp_seq = old.lsp_seq; p.pipe.seq = old.pipe.seq; p.cell_pixels = old.cell_pixels; -- cgit v1.3