From cb63786b1cf611af6e73fa40a30e81f16351232e Mon Sep 17 00:00:00 2001 From: Yeon Vinzenz Varapragasam Date: Thu, 7 May 2026 16:12:07 +0200 Subject: [PATCH] fix(config): ignore unknown fields when parsing config.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Config parsing currently fails with error.UnknownField if config.json contains any key not in the Config struct. This causes a hard crash on startup whenever a newer tool (e.g. nullhub's integration API) has written additional fields — such as the 'tracker' key — that an older binary does not yet recognise. Fix: pass ignore_unknown_fields = true, consistent with the existing behaviour in ConcurrencyConfig parsing (line 316). This allows forward-compatible config files and prevents crashes on upgrade/downgrade paths between component versions. --- src/config.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.zig b/src/config.zig index 26826dd..c7df78d 100644 --- a/src/config.zig +++ b/src/config.zig @@ -122,7 +122,7 @@ pub fn loadFromFile(allocator: std.mem.Allocator, path: []const u8) !Config { // Do NOT free `contents` or deinit `parsed` here. // `Config` fields may point into these allocations. // The caller should provide an arena allocator and clean it up once on shutdown. - const parsed = try std.json.parseFromSlice(Config, allocator, contents, .{}); + const parsed = try std.json.parseFromSlice(Config, allocator, contents, .{ .ignore_unknown_fields = true }); return parsed.value; }