From 65d32137c9b54cd3ee47ce0d7f913f728408e5f2 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Wed, 4 Nov 2026 19:56:52 +0500 Subject: [PATCH 1/2] chore(release): 0.9.0 Unity Mono portable pdb -> BMF upload (#86, #99), Windows self-update leftover sweep (#103), panic exit codes (#98), self-replace 1.5.1 (#97). Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01WeiJxQWhjhQvvURAjiDkti --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a6c352..be32c0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,28 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [0.9.0] - 2026-11-04 + +### Added +- **Unity Mono Release builds now symbolicate: `debug-files upload --type portable-pdb` and + `convert --to bmf` ([#86], [#99]).** A Unity Mono Release build ships no pdb, so the runtime + prints a managed frame as `at Ns.Class.Method (args) [0x0000b] in :0`. The CLI pairs + each assembly the compiler produced with its portable pdb, converts them to a BMF mapping keyed + by method signature and IL offset, and uploads it under the module id (MVID) the app actually + ships. `--shipped-dir` covers the builds whose linker rewrites the assemblies (managed stripping + Low or higher): the BMF is keyed by the shipped MVID. A pdb that does not belong to its assembly + exits 11 and uploads nothing, and a failed run leaves no partial set of results. The worker + side (bugsee/bugsee-background-worker#143) is deployed to staging. See + `docs/unity-mono-portable-pdb.md`. **New capability: an integrator must raise its minimum CLI + version to 0.9.0 before using it.** + ### Fixed +- **`bugsee-cli update` on Windows no longer accumulates leftover binaries ([#103]).** + `self-replace`'s helper makes one attempt to delete the old binary after the updater exits and + never retries, so a file scanner holding it at that moment left an 8 MB copy in `%TEMP%` for + good, once per update. `update` now removes such leftovers from earlier runs before replacing + itself (only the crate's own names for this binary, in any case, with the exact 32-letter random + part; errors ignored). Windows only; nothing changes on macOS or Linux. - **A Rust panic no longer exits 101.** 101 is outside the exit-code contract, so every integrator read it as a substantive failure: the Gradle plugin (bugsee/bugsee-android-gradle-plugin#96) did not fall back to its Kotlin uploader, and the iOS `BugseeAgent` did not either. A panic is now @@ -18,6 +39,11 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). it treated 101. A panic inside a `spawn_blocking` task (sourcemap strip/pack) is re-raised so it is classified the same way. The message and location still go to stderr. No other exit code changes. +### Changed +- `self-replace` 1.5.0 -> 1.5.1 ([#97]): widens its `windows-sys` range to avoid duplicate versions in the + tree. The Windows `update` path is now exercised for real in CI, on x64 and ARM64, in a dedicated + `self-update` check ([#100], [#102], [#103]). + ## [0.8.2] - 2026-10-30 ### Security @@ -537,6 +563,12 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). [#19]: https://github.com/bugsee/bugsee-cli/issues/19 [#20]: https://github.com/bugsee/bugsee-cli/issues/20 +[#86]: https://github.com/bugsee/bugsee-cli/issues/86 +[#97]: https://github.com/bugsee/bugsee-cli/pull/97 +[#99]: https://github.com/bugsee/bugsee-cli/pull/99 +[#100]: https://github.com/bugsee/bugsee-cli/pull/100 +[#102]: https://github.com/bugsee/bugsee-cli/pull/102 +[#103]: https://github.com/bugsee/bugsee-cli/pull/103 [#28]: https://github.com/bugsee/bugsee-cli/issues/28 [#29]: https://github.com/bugsee/bugsee-cli/issues/29 diff --git a/Cargo.lock b/Cargo.lock index d45ef46..ddf3a33 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -204,7 +204,7 @@ dependencies = [ [[package]] name = "bugsee-cli" -version = "0.8.2" +version = "0.9.0" dependencies = [ "anyhow", "assert_cmd", diff --git a/Cargo.toml b/Cargo.toml index a5b738f..36aef91 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bugsee-cli" -version = "0.8.2" +version = "0.9.0" edition = "2021" # Real floor, not an aspiration: the locked tree requires 1.89 (`uuid`, # plus `gimli`, `globset`, `plist`, `time` at 1.88). Verify a bump with `cargo + check From db5a3cd5cb75d600e40e9cba01aeee1c1647eba8 Mon Sep 17 00:00:00 2001 From: Alexey Karimov Date: Wed, 4 Nov 2026 20:17:12 +0500 Subject: [PATCH 2/2] docs(changelog): put the 0.9.0 link definitions under 0.9.0 cargo-dist copies only the version's own section into the GitHub Release, so definitions left under 0.7.7 would render as unresolved references there. Also link the panic-exit fix (#98). Co-Authored-By: Claude Sonnet 5.5 Claude-Session: https://claude.ai/code/session_01WeiJxQWhjhQvvURAjiDkti --- CHANGELOG.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be32c0c..088a28c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,7 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). good, once per update. `update` now removes such leftovers from earlier runs before replacing itself (only the crate's own names for this binary, in any case, with the exact 32-letter random part; errors ignored). Windows only; nothing changes on macOS or Linux. -- **A Rust panic no longer exits 101.** 101 is outside the exit-code contract, so every integrator +- **A Rust panic no longer exits 101 ([#98]).** 101 is outside the exit-code contract, so every integrator read it as a substantive failure: the Gradle plugin (bugsee/bugsee-android-gradle-plugin#96) did not fall back to its Kotlin uploader, and the iOS `BugseeAgent` did not either. A panic is now caught in `main` and mapped by phase. Before any network request was sent (a read-only GET counts too, so @@ -44,6 +44,14 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). tree. The Windows `update` path is now exercised for real in CI, on x64 and ARM64, in a dedicated `self-update` check ([#100], [#102], [#103]). +[#86]: https://github.com/bugsee/bugsee-cli/issues/86 +[#97]: https://github.com/bugsee/bugsee-cli/pull/97 +[#98]: https://github.com/bugsee/bugsee-cli/pull/98 +[#99]: https://github.com/bugsee/bugsee-cli/pull/99 +[#100]: https://github.com/bugsee/bugsee-cli/pull/100 +[#102]: https://github.com/bugsee/bugsee-cli/pull/102 +[#103]: https://github.com/bugsee/bugsee-cli/pull/103 + ## [0.8.2] - 2026-10-30 ### Security @@ -563,12 +571,6 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). [#19]: https://github.com/bugsee/bugsee-cli/issues/19 [#20]: https://github.com/bugsee/bugsee-cli/issues/20 -[#86]: https://github.com/bugsee/bugsee-cli/issues/86 -[#97]: https://github.com/bugsee/bugsee-cli/pull/97 -[#99]: https://github.com/bugsee/bugsee-cli/pull/99 -[#100]: https://github.com/bugsee/bugsee-cli/pull/100 -[#102]: https://github.com/bugsee/bugsee-cli/pull/102 -[#103]: https://github.com/bugsee/bugsee-cli/pull/103 [#28]: https://github.com/bugsee/bugsee-cli/issues/28 [#29]: https://github.com/bugsee/bugsee-cli/issues/29