From f909e1437ecc1804e9bfff627d33692f9bd7e4db Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sat, 8 Nov 2025 22:29:49 +0100 Subject: [PATCH] fix: Project stuck in loading state --- src/Project.zig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Project.zig b/src/Project.zig index 06e5712..325e43c 100644 --- a/src/Project.zig +++ b/src/Project.zig @@ -49,6 +49,7 @@ state: struct { status: VcsStatus = .{}, status_request: ?tp.pid = null, +load_complete: bool = false, const Self = @This(); @@ -624,6 +625,9 @@ fn loaded(self: *Self, parent: tp.pid_ref) OutOfMemoryError!void { inline for (@typeInfo(@TypeOf(self.state)).@"struct".fields) |f| if (@field(self.state, f.name) == .running) return; + if (self.load_complete) return; + self.load_complete = true; + self.logger.print("project files: {d} restored, {d} {s}", .{ self.files.items.len, self.pending.items.len, @@ -2232,7 +2236,7 @@ pub fn process_git(self: *Self, parent: tp.pid_ref, m: tp.message) (OutOfMemoryE var path: []const u8 = undefined; var vcs_status: u8 = undefined; if (try m.match(.{ tp.any, tp.any, "status", tp.more })) { - return self.process_status(m); + return self.process_status(parent, m); } else if (try m.match(.{ tp.any, tp.any, "workspace_path", tp.null_ })) { self.state.workspace_path = .done; self.start_walker(); @@ -2287,7 +2291,7 @@ pub fn process_git(self: *Self, parent: tp.pid_ref, m: tp.message) (OutOfMemoryE } } -fn process_status(self: *Self, m: tp.message) (OutOfMemoryError || error{Exit})!void { +fn process_status(self: *Self, parent: tp.pid_ref, m: tp.message) (OutOfMemoryError || error{Exit})!void { const any = cbor.any; const extract = cbor.extract; const null_ = cbor.null_; @@ -2330,6 +2334,7 @@ fn process_status(self: *Self, m: tp.message) (OutOfMemoryError || error{Exit})! // ignored file: } else if (try m.match(.{ any, any, "status", null_ })) { self.state.status = .done; + try self.loaded(parent); if (self.status_request) |from| { from.send(.{ "vcs_status", self.status }) catch {}; from.deinit();