From 2c0bdb51f260ba0d6ad73f46d8516933b9775e6d Mon Sep 17 00:00:00 2001 From: Stuart Meeks Date: Sun, 3 May 2026 05:16:16 +0000 Subject: [PATCH] v0.1.2: portable DebugType so snupkg actually ships symbols MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous combination — IncludeSymbols=true + SymbolPackageFormat= snupkg + DebugType=embedded — produces an empty .snupkg (no .pdb files because debug info lives inside the .dll), which nuget.org rejects with HTTP 400. The .nupkg pushed fine on v0.1.1 but the symbol upload failed. Switching to DebugType=portable produces a real .pdb alongside the .dll; the .snupkg now contains it, and nuget.org accepts the symbol upload. The .nupkg is also marginally smaller as a side effect (debug info no longer embedded in the dll). Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 3 +++ .../NextIteration.SpectreConsole.SelfUpdate.csproj | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2bf243..26dbddf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Symbol packaging (planned 0.1.2) +- **`portable`** instead of `embedded`. The previous combination produced an empty `.snupkg` (no `.pdb` files because debug info was inside the `.dll`), which nuget.org rejects with HTTP 400. The published `.nupkg` is now slightly smaller, and the `.snupkg` actually contains symbols so consumers debugging into the library get sources via nuget.org's symbol server. + ### Security & correctness fixes (planned 0.1.1) - **Lock before staging mutation.** `UpdateInstaller.InstallAsync` now acquires `.update.lock` before any change to `.update//`. Previously a second installer could wipe a first installer's in-flight staging directory on its way to losing the lock race. - **Rollback on swap failure.** A copy failure mid-swap now restores the install directory from `.old/` instead of leaving it half-populated. New `UpdateInstaller.RestoreFromOld` helper. diff --git a/src/NextIteration.SpectreConsole.SelfUpdate/NextIteration.SpectreConsole.SelfUpdate.csproj b/src/NextIteration.SpectreConsole.SelfUpdate/NextIteration.SpectreConsole.SelfUpdate.csproj index 5f7c229..a8fd752 100644 --- a/src/NextIteration.SpectreConsole.SelfUpdate/NextIteration.SpectreConsole.SelfUpdate.csproj +++ b/src/NextIteration.SpectreConsole.SelfUpdate/NextIteration.SpectreConsole.SelfUpdate.csproj @@ -11,7 +11,7 @@ NextIteration.SpectreConsole.SelfUpdate - 0.1.1 + 0.1.2 Stuart Meeks Self-update for Spectre.Console CLIs: pluggable update sources (GitHub Releases over HTTP, GitHub Releases via gh CLI for private repos, generic HTTPS manifest, custom), SHA-256 verification, atomic file swap, and a drop-in `update` command. true @@ -30,7 +30,7 @@ true true snupkg - embedded + portable true