diff --git a/.github/workflows/WindowsInstall.yml b/.github/workflows/WindowsInstall.yml index 8e589fee..d4dfa288 100644 --- a/.github/workflows/WindowsInstall.yml +++ b/.github/workflows/WindowsInstall.yml @@ -317,7 +317,6 @@ jobs: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SENTRY_ORG: berry-studios - SENTRY_PROJECT: loop-pdf SENTRY_URL: https://de.sentry.io run: | .\scripts\ci\upload_sentry_debug_files.ps1 -BuildDir "${env:GITHUB_WORKSPACE}\loop\build" diff --git a/.github/workflows/reusable-windows.yml b/.github/workflows/reusable-windows.yml index a15c3ac6..ed28a289 100644 --- a/.github/workflows/reusable-windows.yml +++ b/.github/workflows/reusable-windows.yml @@ -406,7 +406,6 @@ jobs: SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SENTRY_ORG: berry-studios - SENTRY_PROJECT: loop-pdf SENTRY_URL: https://de.sentry.io run: | .\scripts\ci\upload_sentry_debug_files.ps1 -BuildDir "${env:GITHUB_WORKSPACE}\loop\build" diff --git a/Desktop/io.github.mberrys.Loop-pdf.appdata.xml b/Desktop/io.github.mberrys.Loop-pdf.appdata.xml index f753da24..e8746b31 100644 --- a/Desktop/io.github.mberrys.Loop-pdf.appdata.xml +++ b/Desktop/io.github.mberrys.Loop-pdf.appdata.xml @@ -16,9 +16,9 @@ Utility Michael Berry - https://github.com/mberrys/Loop-pdf - https://github.com/mberrys/Loop-pdf/issues - https://github.com/mberrys/Loop-pdf + https://github.com/studio-berry/loop + https://github.com/studio-berry/loop/issues + https://github.com/studio-berry/loop io.github.mberrys.Loop-pdf.desktop diff --git a/changes/cursor-fix-appstream-urls-8f37.md b/changes/cursor-fix-appstream-urls-8f37.md new file mode 100644 index 00000000..6580e274 --- /dev/null +++ b/changes/cursor-fix-appstream-urls-8f37.md @@ -0,0 +1,4 @@ +Category: fixed +Audience: developers +Breaking-Change: no +Summary: Point AppStream metainfo URLs at studio-berry/loop for Linux AppImage packaging, and resolve Windows Sentry debug-file upload from LOOP_SENTRY_DSN in CMakeLists.txt so MSI packaging is not blocked by a stale project slug. diff --git a/docs/CI.md b/docs/CI.md index c4972b24..8da773f9 100644 --- a/docs/CI.md +++ b/docs/CI.md @@ -111,7 +111,7 @@ the signing step refuses to run against an unpinned toolchain. Windows Release builds with `LOOP_ENABLE_SENTRY` emit PDBs (`/Zi` + `/DEBUG:FULL`) so crashpad minidumps can be symbolicated. After the Windows CI and MSI packaging jobs, `scripts/ci/upload_sentry_debug_files.ps1` -uploads Loop PDBs to `berry-studios/loop-pdf` on the EU region +uploads Loop PDBs to the `berry-studios` EU project id encoded in `LOOP_SENTRY_DSN` (`https://de.sentry.io`) using the pinned `sentryCli` binary. GitHub Actions cannot reference `secrets` in `if:` conditionals, so the workflow always runs the step; `upload_sentry_debug_files.ps1` no-ops when diff --git a/docs/PRODUCTION_RUNBOOK.md b/docs/PRODUCTION_RUNBOOK.md index 35b7c8b2..7cc4d52a 100644 --- a/docs/PRODUCTION_RUNBOOK.md +++ b/docs/PRODUCTION_RUNBOOK.md @@ -111,7 +111,7 @@ Debug Files — they are not Issues or traces. **Privacy:** Desktop sentry-native 0.15.x does not send default PII (`send_default_pii` is NX-only in that pin). Crashes may still include OS-level paths and PDF bytes in minidumps — set `SENTRY_DSN=off` in high-classification environments. CI sets `SENTRY_DSN=off` so test runs do not flood the project. -**Debug files:** Windows CI uploads Loop PDBs to `berry-studios/loop-pdf` (EU) when `SENTRY_AUTH_TOKEN` is set. Without those files, crash stacks stay unsymbolicated. Store the token as a GitHub Actions secret with `project:releases` (or broader) scope; do not commit it. +**Debug files:** Windows CI uploads Loop PDBs to the `berry-studios` EU project id encoded in `LOOP_SENTRY_DSN` when `SENTRY_AUTH_TOKEN` is set. Without those files, crash stacks stay unsymbolicated. Store the token as a GitHub Actions secret with `project:releases` (or broader) scope; do not commit it. **Verify (Windows, Sentry-enabled build):** diff --git a/scripts/ci/upload_sentry_debug_files.ps1 b/scripts/ci/upload_sentry_debug_files.ps1 index 6f4ae1c2..bff0e017 100644 --- a/scripts/ci/upload_sentry_debug_files.ps1 +++ b/scripts/ci/upload_sentry_debug_files.ps1 @@ -34,9 +34,28 @@ if (-not $cli -or -not $cli.assetId -or -not $cli.sha256 -or -not $cli.upstream) } $org = if ($env:SENTRY_ORG) { $env:SENTRY_ORG } else { "berry-studios" } -$project = if ($env:SENTRY_PROJECT) { $env:SENTRY_PROJECT } else { "loop-pdf" } $url = if ($env:SENTRY_URL) { $env:SENTRY_URL } else { "https://de.sentry.io" } +function Resolve-SentryProject([string]$Root) { + if ($env:SENTRY_PROJECT) { + return [string]$env:SENTRY_PROJECT + } + $cmakePath = Join-Path $Root "CMakeLists.txt" + if (-not (Test-Path -LiteralPath $cmakePath)) { + throw "upload_sentry_debug_files.ps1: CMakeLists.txt not found; cannot resolve Sentry project id." + } + $dsnMatch = [regex]::Match( + (Get-Content -LiteralPath $cmakePath -Raw), + 'ingest\.de\.sentry\.io/(\d+)' + ) + if (-not $dsnMatch.Success) { + throw "upload_sentry_debug_files.ps1: LOOP_SENTRY_DSN in CMakeLists.txt has no ingest project id." + } + return $dsnMatch.Groups[1].Value +} + +$project = Resolve-SentryProject $repoRoot + $cliPath = Join-Path $env:RUNNER_TEMP "sentry-cli-Windows-x86_64.exe" if ([string]::IsNullOrWhiteSpace($env:RUNNER_TEMP)) { $cliPath = Join-Path ([System.IO.Path]::GetTempPath()) "sentry-cli-Windows-x86_64.exe"