diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 201a3bc..aa7aba4 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -11,6 +11,9 @@ on:
permissions:
contents: write
+ # NuGet Trusted Publishing: the job exchanges a GitHub OIDC token for a
+ # short-lived nuget.org API key (NuGet/login@v1), so no long-lived secret.
+ id-token: write
env:
DOTNET_VERSION: "10.0.x"
@@ -129,6 +132,17 @@ jobs:
- name: Pack snipdeck-importer (.NET global tool)
run: dotnet pack tools/Snipdeck.Importer/Snipdeck.Importer.csproj --configuration Release --no-restore --output nuget
+ # Trusted Publishing: exchange the job's GitHub OIDC token for a temporary
+ # nuget.org API key (valid ~1h). Run immediately before the push so the key
+ # does not expire. Requires a trusted publishing policy on nuget.org for
+ # this repo + workflow file (release.yml), and the NUGET_USER secret set to
+ # the nuget.org profile username (not the account email).
+ - name: NuGet login (OIDC -> temporary API key)
+ uses: NuGet/login@v1
+ id: nuget-login
+ with:
+ user: ${{ secrets.NUGET_USER }}
+
- name: Push snipdeck-importer to NuGet.org
# Resolve the package explicitly — PowerShell does not glob-expand
# arguments to native commands, and `dotnet nuget push` treats the
@@ -137,4 +151,4 @@ jobs:
run: |
$pkg = Get-ChildItem nuget -Filter *.nupkg | Select-Object -First 1
if (-not $pkg) { Write-Error "No .nupkg found in nuget/"; exit 1 }
- dotnet nuget push $pkg.FullName --api-key "${{ secrets.NUGET_API_KEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate
+ dotnet nuget push $pkg.FullName --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" --source https://api.nuget.org/v3/index.json --skip-duplicate
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 893e40f..79ad7de 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
+## [1.0.4] - 2026-06-10
+
+### Changed
+- Refreshed bundled dependencies to their latest stable releases, including the
+ Windows App SDK (2.2.0) and the Velopack updater (1.2.0).
+
+### Security
+- The release pipeline now publishes the `snipdeck-importer` .NET tool to NuGet.org
+ using trusted publishing — short-lived OIDC credentials issued per run — in place
+ of a long-lived API key.
+
## [1.0.3] - 2026-06-08
### Fixed
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8a906de..e47f405 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -19,7 +19,7 @@
-
+
@@ -27,16 +27,18 @@
-
+
-
-
+
+
-
+
-
+
diff --git a/src/Snipdeck.App/Snipdeck.App.csproj b/src/Snipdeck.App/Snipdeck.App.csproj
index 96f9068..2e19e0a 100644
--- a/src/Snipdeck.App/Snipdeck.App.csproj
+++ b/src/Snipdeck.App/Snipdeck.App.csproj
@@ -6,7 +6,6 @@
Snipdeck.App
app.manifest
win-x86;win-x64;win-arm64
- win-$(Platform).pubxml
true
false
None
diff --git a/version.json b/version.json
index 94a8c90..bb497ce 100644
--- a/version.json
+++ b/version.json
@@ -1,6 +1,6 @@
{
"$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json",
- "version": "1.0.3",
+ "version": "1.0.4",
"publicReleaseRefSpec": [
"^refs/tags/v\\d+\\.\\d+\\.\\d+"
]