diff --git a/src/ClaudeDo.Installer/Core/ReleaseClient.cs b/src/ClaudeDo.Installer/Core/ReleaseClient.cs index 4489ea5..78550dd 100644 --- a/src/ClaudeDo.Installer/Core/ReleaseClient.cs +++ b/src/ClaudeDo.Installer/Core/ReleaseClient.cs @@ -27,7 +27,7 @@ public sealed class ReleaseClient : IReleaseClient return ParseRelease(json); } catch (HttpRequestException) { return null; } - catch (TaskCanceledException) { return null; } + catch (TaskCanceledException) when (!ct.IsCancellationRequested) { return null; } } public async Task DownloadAsync(string url, string destPath, IProgress progress, CancellationToken ct) @@ -65,8 +65,11 @@ public sealed class ReleaseClient : IReleaseClient { foreach (var item in arr.EnumerateArray()) { - var aName = item.GetProperty("name").GetString() ?? ""; - var aUrl = item.GetProperty("browser_download_url").GetString() ?? ""; + if (!item.TryGetProperty("name", out var nameField)) continue; + if (!item.TryGetProperty("browser_download_url", out var urlField)) continue; + + var aName = nameField.GetString() ?? ""; + var aUrl = urlField.GetString() ?? ""; var aSize = item.TryGetProperty("size", out var s) ? s.GetInt64() : 0L; assets.Add(new ReleaseAsset(aName, aUrl, aSize)); }