From b196f602a6bbb53e0025140c7a3f9cbb9f23bcd2 Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Wed, 30 Sep 2026 17:40:41 -0300 Subject: Save path logs a save record naming the path it wrote Save of a pane's own file logged `save `, and so did a scratch's `Save path` (the pane takes that name). A `Save path` that writes a copy of a file pane, or a terminal's scrollback, elsewhere logged nothing, so a follower could not tell the file was written. It now logs `save ` with the path written, once the host has written it (events.noteLogAs). fs.md's log table says so. Co-Authored-By: Claude Opus 5.5 --- src/ninep/events.zig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/ninep/events.zig') diff --git a/src/ninep/events.zig b/src/ninep/events.zig index fa90fe71..a09f7278 100644 --- a/src/ninep/events.zig +++ b/src/ninep/events.zig @@ -160,10 +160,16 @@ pub fn noteLog(p: *Pardes, kind: LogKind, pane: *Pane) void { if (kind == .rename) return; announce(p); } + noteLogAs(p, kind, pane, pane_files.nameOf(p, pane)); +} + +/// noteLog naming `path` rather than the pane's name: a `Save path` that +/// writes a copy elsewhere is `save `. +pub fn noteLogAs(p: *Pardes, kind: LogKind, pane: *Pane, path: []const u8) void { var buf: [4 * 4096 + 64]u8 = undefined; var name_buf: [4 * 4096]u8 = undefined; // As /index shows it: a newline in the name is `\n`. - const name = shown(pane_files.nameOf(p, pane), &name_buf); + const name = shown(path, &name_buf); pushLog(p, std.fmt.bufPrint(&buf, "{s} {d} {s}\n", .{ @tagName(kind), pane.serial, name }) catch return); } -- cgit v1.3