Release notes
Release history for the Bugsee CLI (bugsee-cli). To install or upgrade, see
Installation and Updating the CLI. The
Android Gradle plugin and the iOS build scripts keep the CLI they manage up to
date for you.
0.7.x
0.7.8 (September 17 2026)
Re-uploading a symbol the server already has no longer fails, including in an Xcode build phase, and source-map uploads handle stylesheet maps and rebuilt bundles correctly.
-
Symbols the server already has are skipped instead of failing. A re-upload of a symbol already on the server failed with exit code
30. It is now reported as already existing and exits0, as the exit-code contract describes. When you uploaded a directory, that failure also stopped the run, so the files that had changed were never uploaded — for example, on the second production build of a web app with one unchanged chunk. This applies to dSYM, PDB, Rust, IL2CPP line map, source map, ProGuard and ELF uploads. -
xcode upload-dsymsno longer fails your Xcode build on rebuilds. A rebuild whose dSYMs were unchanged failed the build because of the issue above. Similarly,xcode post-actionnow reportsdsym_uploaded: truein its JSON result when every dSYM was already on the server, instead offalse. -
Stylesheet and type-declaration source maps are skipped. When
debug-files upload --type sourcemapsscans a directory, maps named.css.map,.d.ts.map,.d.mts.mapor.d.cts.mapare skipped without being read. Previously they made the whole upload fail with exit code11. Any other map without a debug ID still fails the run, but now before anything is uploaded, so it no longer leaves a partial upload behind (a network or server error part-way through still can). A map you name explicitly on the command line, and a scan that leaves nothing to upload, also still fail. -
sourcemaps injectderives a bundle's debug ID from its source map as well as the bundle itself. The server keeps one source map per debug ID, and a minifier often produces identical JavaScript for a source edit that only moves lines — so an ID based on the bundle alone kept the stale map on the server. This includes webpack 5 rebuilds with[contenthash]filenames, which leave the already-injected bundle on disk and write only a new map:injectnow gives such a bundle a new ID when its map comes back without a debug ID and with different content. A//# debugId=comment written by another tool is never changed, and a bundle without a source map keeps its bundle-only ID. When a newly injected bundle sits beside a map that already carries a different ID, the map is updated to the bundle's ID with a warning. See Source maps.noteAfter you upgrade, every bundle that has a source map gets a new debug ID once, so its map is uploaded again. Nothing else needs to change.
-
--forcenow applies to source maps.debug-files upload --type sourcemaps --forceasks the server to replace a map it already has, as--forcealready did for dSYM, PDB, Rust and IL2CPP line map uploads.
0.7.7 (September 16 2026)
Adds a dSYM upload command for Xcode build phases and prebuilt binaries for Windows on ARM64.
-
New command:
xcode upload-dsyms. Uploads dSYMs from an Xcode Run Script build phase. It does not register a build or upload build info, and none of theBUGSEE_BUILD_INFO_*gating applies, so it is safe to run on every build. It is designed for setups such as React Native and Flutter, where a config plugin can add a build phase rather than a scheme post-action.- A real failure fails the build: a missing, empty or rejected app token
(
20/21), a server or network error (30/31), or a dSYM folder or bundle that could not be read (10/11). Finding nothing to upload — no dSYM folder, or no.dSYMbundles in it — is a success; finding bundles and uploading none is not. - Failing the build and running in the background are controlled
independently:
--fail/--no-fail(environment variableBUGSEE_DSYM_UPLOAD_NO_FAIL) and--background/--no-background(BUGSEE_DSYM_UPLOAD_BACKGROUND). A flag overrides its environment variable. - The default is to fail on error and upload synchronously.
--no-failon its own also moves the upload to the background unless you pass--no-background.--no-fail --no-backgroundis usually what CI wants: the build never breaks, but it still waits, so a runner tearing down its processes cannot kill the upload mid-flight. - Asking to fail the build and run in the background is refused, because a
background process's exit code reaches nobody: exit
2when set with flags,20when set through environment variables. xcode post-actionis unchanged:BUGSEE_BUILD_INFO_ENABLED=0still disables its dSYM upload.
- A real failure fails the build: a missing, empty or rejected app token
(
-
Windows on ARM64. Prebuilt binaries are now published for
aarch64-pc-windows-msvc, with the matching npm package@bugsee/cli-win32-arm64. The PowerShell install script detects ARM64 hosts, including when run from 32-bit PowerShell, andbugsee-cli updateworks on Windows ARM64. -
Fixes a crash caused by a non-UTF-8 environment variable.
vcs-metadata,build-env machine-labelandxcode post-actioncrashed with exit code101— outside the documented exit codes — when any variable in the environment had a name or value that was not valid UTF-8, even one the CLI does not read.
0.7.6 (September 16 2026)
A packaging and security release. Commands, exit codes, JSON output and the upload format are unchanged from 0.7.5.
-
New npm package:
@bugsee/cli. The binary ships in per-platform packages (@bugsee/cli-darwin-arm64,@bugsee/cli-darwin-x64,@bugsee/cli-linux-arm64,@bugsee/cli-linux-x64,@bugsee/cli-win32-x64), declared as optional dependencies pinned to the same version. npm installs only the one for your platform, and nothing runs at install time, so it works with--ignore-scripts. If no platform package resolves, apostinstallstep downloads the binary from the GitHub release instead, and never fails the install.@bugsee/bugsee-cliis unchanged and keeps working. A Windows ARM64 package followed in 0.7.7. -
Releases now reach
download.bugsee.comautomatically. The install scripts andbugsee-cli updatedownload from there. 0.7.4 had not been published there, so neither offered that version. -
Security: updates the TLS library used for every upload (
rustls0.23.45) to fix RUSTSEC-2026-0285, where TLS 1.3 handshake messages were accepted across encryption level boundaries. -
Fixes a crash in
build-env read-pliston binary plist files containing out-of-range dates.
0.7.5 (August 24 2026)
A security maintenance release with no functional changes: commands, exit codes, JSON output and the upload format are identical to 0.7.4.
-
Security: fixes two denial-of-service issues in XML parsing, RUSTSEC-2026-0194 and RUSTSEC-2026-0195, which were reachable when
build-env read-plistparses an XMLInfo.plist. -
Other dependency updates, with no change in behaviour.
0.7.4 (August 11 2026)
Adds symbol uploads for Unity IL2CPP line-number mappings and for Rust projects.
-
New upload type:
debug-files upload --type il2cpp-linemap. Uploads Unity IL2CPPLineNumberMappings.jsontogether with its siblingMethodMap.tsvandil2cppFileRoot.txt, keyed by thelibil2cpp/UnityFrameworkmodule UUIDs. Pass the UUIDs with--uuid(repeat it or comma-separate the values), or append more with--il2cpp-uuid. -
New upload type:
debug-files upload --type rust. One command for a Cargo project, whatever target it built for. It finds whichever debug format is present — a.dSYM(Apple), a.pdb(Windows MSVC targets), or the ELF binary itself, keyed by its GNU build ID (Linux and Android) — and uploads each one.- Formats are detected from file contents rather than the host OS, so a
cross-compiled
target/<triple>/releaseuploads correctly from any machine. - Cargo intermediates (
deps/,build/,incremental/,.fingerprint/) are skipped. --uuidis rejected: every Rust debug format carries its own identity.
- Formats are detected from file contents rather than the host OS, so a
cross-compiled
-
Build-configuration checks for Rust. Some Cargo settings produce an upload that is accepted but then symbolicates nothing: no debug info (
debug = 0), no.dSYM(split-debuginfonot set to"packed"), or no build ID (missing-Wl,--build-id). The CLI warns about these with the exact setting that fixes them, and when it finds nothing uploadable it fails with the full recipe instead of a bare "not found".
See Uploading debug information files.
0.7.3 (July 16 2026)
A security fix for credentials appearing in logs, plus hardening of update and
sourcemaps inject.
-
Security: the app token and upload signatures no longer appear in logs. A network error message included the full request URL at the default log level, exposing the app token and the signature of the storage upload URL — including in the
xcode post-actionbackground log file. URLs are now removed from error messages and redacted in debug logs. -
bugsee-cli updateis stricter about what it downloads. It refuses a non-HTTPS download base (BUGSEE_CLI_UPDATE_BASE_URL) other than a loopback address, limits download sizes (512 MiB for the release archive, 1 MiB for metadata) before the SHA-256 check, and rejects archives containing absolute or..paths. See Updating the CLI. -
sourcemaps injectonly follows a//# sourceMappingURL=inside the bundle's directory. A URL with a..component or an absolute path is no longer followed; a<bundle>.mapfile next to the bundle is still used. -
Fixes a possible file collision during native symbol uploads when two libraries uploaded at the same time share a build ID.
0.7.2 (July 11 2026)
- A maintenance update to the library the CLI uses to read debug files. The identifiers it reads from ELF and Mach-O files are unchanged.
0.7.1 (July 6 2026)
- A maintenance update to the library the CLI uses to read debug files. The identifiers it reads from ELF and Mach-O files are unchanged.
0.7.0 (June 25 2026)
Adds self-hosted install scripts and uploads native symbols per library.
-
New install scripts on
download.bugsee.com.install.sh(macOS and Linux) andinstall.ps1(Windows PowerShell) resolve the latest version, download the binary for your host fromdownload.bugsee.comwith no GitHub dependency, verify its SHA-256 checksum, and install it. Override the version, install directory and download location withBUGSEE_CLI_VERSION,BUGSEE_CLI_INSTALL_DIRandBUGSEE_CLI_BASE_URL. See Installation. -
Native symbols are uploaded per library.
debug-files upload --type elfnow uploads each.soas its own symbol, keyed by the library's GNU build ID instead of the build-level--uuid. Native symbols therefore no longer collide with the ProGuard mapping for the same build, and an unchanged library is skipped before its bytes are transferred. A.sobuilt without-Wl,--build-idcannot be matched at crash time, so it is skipped with a warning. See Native (ELF). -
Fixes
upload build-infofailing with HTTP 403. The storage upload was rejected withSignatureDoesNotMatch. Seeupload build-info.