From e3050eb1281cd2fc316d0f3c9d17e4040fe1e81a Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Mon, 15 Dec 2025 10:10:25 -0800 Subject: [PATCH 1/8] chore(preprod): Use zstd for zip compression --- Cargo.lock | 108 ++++++++++++++++++----------------- Cargo.toml | 2 +- src/commands/build/upload.rs | 2 +- src/utils/build/normalize.rs | 4 +- src/utils/source_bundle.rs | 2 +- 5 files changed, 61 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 92f3b7c653..6b0d6ffbaa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,12 +324,6 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "bytes" version = "1.10.1" @@ -338,21 +332,11 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bzip2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" -dependencies = [ - "bzip2-sys", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" dependencies = [ - "cc", - "pkg-config", + "libbz2-rs-sys", ] [[package]] @@ -882,6 +866,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", + "libz-rs-sys", "miniz_oxide", ] @@ -1035,11 +1020,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi", "wasi 0.14.7+wasi-0.2.4", - "wasm-bindgen", ] [[package]] @@ -1615,6 +1598,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" + [[package]] name = "libc" version = "0.2.176" @@ -1644,6 +1633,15 @@ dependencies = [ "redox_syscall", ] +[[package]] +name = "libz-rs-sys" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c" +dependencies = [ + "zlib-rs", +] + [[package]] name = "libz-sys" version = "1.1.22" @@ -1700,24 +1698,13 @@ dependencies = [ ] [[package]] -name = "lzma-rs" -version = "0.3.0" +name = "lzma-rust2" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" +checksum = "c60a23ffb90d527e23192f1246b14746e2f7f071cb84476dd879071696c18a4a" dependencies = [ - "byteorder", "crc", -] - -[[package]] -name = "lzma-sys" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" -dependencies = [ - "cc", - "libc", - "pkg-config", + "sha2", ] [[package]] @@ -2179,6 +2166,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "ppmd-rust" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d558c559f0450f16f2a27a1f017ef38468c1090c9ce63c8e51366232d53717b4" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2739,7 +2732,7 @@ dependencies = [ "which", "whoami", "windows-sys 0.59.0", - "zip", + "zip 6.0.0", ] [[package]] @@ -3086,7 +3079,7 @@ dependencies = [ "symbolic-ppdb", "thiserror 1.0.69", "wasmparser", - "zip", + "zip 2.4.2", "zstd", ] @@ -4074,15 +4067,6 @@ dependencies = [ "tap", ] -[[package]] -name = "xz2" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" -dependencies = [ - "lzma-sys", -] - [[package]] name = "yoke" version = "0.8.0" @@ -4206,31 +4190,51 @@ name = "zip" version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" +dependencies = [ + "arbitrary", + "crc32fast", + "crossbeam-utils", + "displaydoc", + "flate2", + "indexmap", + "memchr", + "thiserror 2.0.17", + "zopfli", +] + +[[package]] +name = "zip" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b" dependencies = [ "aes", "arbitrary", "bzip2", "constant_time_eq", "crc32fast", - "crossbeam-utils", "deflate64", - "displaydoc", "flate2", "getrandom 0.3.3", "hmac", "indexmap", - "lzma-rs", + "lzma-rust2", "memchr", "pbkdf2", + "ppmd-rust", "sha1", - "thiserror 2.0.17", "time", - "xz2", "zeroize", "zopfli", "zstd", ] +[[package]] +name = "zlib-rs" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235" + [[package]] name = "zopfli" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 189837ad44..47d73abd4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ uuid = { version = "1.3.0", features = ["v4", "serde"] } walkdir = "2.3.2" which = "4.4.0" whoami = "1.5.2" -zip = "2.4.2" +zip = { version = "6.0.0", features = ["zstd"] } data-encoding = "2.3.3" magic_string = "0.3.4" chrono-tz = "0.8.4" diff --git a/src/commands/build/upload.rs b/src/commands/build/upload.rs index c1aa1bf0d6..11fe9b438a 100644 --- a/src/commands/build/upload.rs +++ b/src/commands/build/upload.rs @@ -563,7 +563,7 @@ fn normalize_file( // This is important as an optimization to avoid re-uploading the same chunks if they're already on the server // but the last modified time being different will cause checksums to be different. let options = SimpleFileOptions::default() - .compression_method(zip::CompressionMethod::Stored) + .compression_method(zip::CompressionMethod::Zstd) .last_modified_time(DateTime::default()); zip.start_file(file_name, options)?; diff --git a/src/utils/build/normalize.rs b/src/utils/build/normalize.rs index 110fcdea16..80e5f573a1 100644 --- a/src/utils/build/normalize.rs +++ b/src/utils/build/normalize.rs @@ -55,7 +55,7 @@ fn add_entries_to_zip( // This is important as an optimization to avoid re-uploading the same chunks if they're already on the server // but the last modified time being different will cause checksums to be different. let options = SimpleFileOptions::default() - .compression_method(zip::CompressionMethod::Deflated) + .compression_method(zip::CompressionMethod::Zstd) .last_modified_time(DateTime::default()); for (entry_path, relative_path) in entries { @@ -88,7 +88,7 @@ fn add_entries_to_zip( fn metadata_file_options() -> SimpleFileOptions { SimpleFileOptions::default() - .compression_method(zip::CompressionMethod::Deflated) + .compression_method(zip::CompressionMethod::Zstd) .last_modified_time(DateTime::default()) } diff --git a/src/utils/source_bundle.rs b/src/utils/source_bundle.rs index 5378df0ef0..eb0a7d9c75 100644 --- a/src/utils/source_bundle.rs +++ b/src/utils/source_bundle.rs @@ -259,7 +259,7 @@ mod tests { let hash = Sha1::from(buf); assert_eq!( hash.digest().to_string(), - "f0e25ae149b711c510148e022ebc883ad62c7c4c" + "d203cc8e827ff26ef176bf2035b4f806facad0fd" ); } } From 175d337444fa3a7094ece338c55f4d5dc2c3a148 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Mon, 15 Dec 2025 11:14:10 -0800 Subject: [PATCH 2/8] dont bump lib version --- Cargo.lock | 108 ++++++++++++++++++------------------- Cargo.toml | 2 +- src/utils/source_bundle.rs | 2 +- 3 files changed, 54 insertions(+), 58 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b0d6ffbaa..92f3b7c653 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -324,6 +324,12 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" version = "1.10.1" @@ -332,11 +338,21 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "bzip2" -version = "0.6.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" +checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" dependencies = [ - "libbz2-rs-sys", + "bzip2-sys", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.13+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" +dependencies = [ + "cc", + "pkg-config", ] [[package]] @@ -866,7 +882,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" dependencies = [ "crc32fast", - "libz-rs-sys", "miniz_oxide", ] @@ -1020,9 +1035,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi", "wasi 0.14.7+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -1598,12 +1615,6 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" -[[package]] -name = "libbz2-rs-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" - [[package]] name = "libc" version = "0.2.176" @@ -1633,15 +1644,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15413ef615ad868d4d65dce091cb233b229419c7c0c4bcaa746c0901c49ff39c" -dependencies = [ - "zlib-rs", -] - [[package]] name = "libz-sys" version = "1.1.22" @@ -1698,13 +1700,24 @@ dependencies = [ ] [[package]] -name = "lzma-rust2" -version = "0.13.0" +name = "lzma-rs" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c60a23ffb90d527e23192f1246b14746e2f7f071cb84476dd879071696c18a4a" +checksum = "297e814c836ae64db86b36cf2a557ba54368d03f6afcd7d947c266692f71115e" dependencies = [ + "byteorder", "crc", - "sha2", +] + +[[package]] +name = "lzma-sys" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fda04ab3764e6cde78b9974eec4f779acaba7c4e84b36eca3cf77c581b85d27" +dependencies = [ + "cc", + "libc", + "pkg-config", ] [[package]] @@ -2166,12 +2179,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "ppmd-rust" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d558c559f0450f16f2a27a1f017ef38468c1090c9ce63c8e51366232d53717b4" - [[package]] name = "ppv-lite86" version = "0.2.21" @@ -2732,7 +2739,7 @@ dependencies = [ "which", "whoami", "windows-sys 0.59.0", - "zip 6.0.0", + "zip", ] [[package]] @@ -3079,7 +3086,7 @@ dependencies = [ "symbolic-ppdb", "thiserror 1.0.69", "wasmparser", - "zip 2.4.2", + "zip", "zstd", ] @@ -4067,6 +4074,15 @@ dependencies = [ "tap", ] +[[package]] +name = "xz2" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388c44dc09d76f1536602ead6d325eb532f5c122f17782bd57fb47baeeb767e2" +dependencies = [ + "lzma-sys", +] + [[package]] name = "yoke" version = "0.8.0" @@ -4190,51 +4206,31 @@ name = "zip" version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fabe6324e908f85a1c52063ce7aa26b68dcb7eb6dbc83a2d148403c9bc3eba50" -dependencies = [ - "arbitrary", - "crc32fast", - "crossbeam-utils", - "displaydoc", - "flate2", - "indexmap", - "memchr", - "thiserror 2.0.17", - "zopfli", -] - -[[package]] -name = "zip" -version = "6.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b" dependencies = [ "aes", "arbitrary", "bzip2", "constant_time_eq", "crc32fast", + "crossbeam-utils", "deflate64", + "displaydoc", "flate2", "getrandom 0.3.3", "hmac", "indexmap", - "lzma-rust2", + "lzma-rs", "memchr", "pbkdf2", - "ppmd-rust", "sha1", + "thiserror 2.0.17", "time", + "xz2", "zeroize", "zopfli", "zstd", ] -[[package]] -name = "zlib-rs" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51f936044d677be1a1168fae1d03b583a285a5dd9d8cbf7b24c23aa1fc775235" - [[package]] name = "zopfli" version = "0.8.2" diff --git a/Cargo.toml b/Cargo.toml index 47d73abd4e..f373becc51 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ uuid = { version = "1.3.0", features = ["v4", "serde"] } walkdir = "2.3.2" which = "4.4.0" whoami = "1.5.2" -zip = { version = "6.0.0", features = ["zstd"] } +zip = { version = "2.4.2", features = ["zstd"] } data-encoding = "2.3.3" magic_string = "0.3.4" chrono-tz = "0.8.4" diff --git a/src/utils/source_bundle.rs b/src/utils/source_bundle.rs index eb0a7d9c75..5378df0ef0 100644 --- a/src/utils/source_bundle.rs +++ b/src/utils/source_bundle.rs @@ -259,7 +259,7 @@ mod tests { let hash = Sha1::from(buf); assert_eq!( hash.digest().to_string(), - "d203cc8e827ff26ef176bf2035b4f806facad0fd" + "f0e25ae149b711c510148e022ebc883ad62c7c4c" ); } } From aa54c68143c703e6f6e88017a8800102e91edb3b Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Mon, 15 Dec 2025 11:23:18 -0800 Subject: [PATCH 3/8] fix tests --- tests/integration/_cases/build/build-upload-apk.trycmd | 3 +-- tests/integration/build/upload.rs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/integration/_cases/build/build-upload-apk.trycmd b/tests/integration/_cases/build/build-upload-apk.trycmd index 71ca23fbb3..75a028f545 100644 --- a/tests/integration/_cases/build/build-upload-apk.trycmd +++ b/tests/integration/_cases/build/build-upload-apk.trycmd @@ -2,8 +2,7 @@ $ sentry-cli build upload tests/integration/_fixtures/build/apk.apk --head-sha 12345678deadbeef78900987feebdaed87654321 ? success > Preparing for upload completed in [..] -> Uploading completed in [..] Successfully uploaded 1 file to Sentry - - tests/integration/_fixtures/build/apk.apk (http[..]/wat-org/preprod/wat-project/42) + - tests/integration/_fixtures/build/apk.apk (http://sentry.io/wat-org/preprod/wat-project/42) ``` diff --git a/tests/integration/build/upload.rs b/tests/integration/build/upload.rs index dd4159393c..7b6daf0a56 100644 --- a/tests/integration/build/upload.rs +++ b/tests/integration/build/upload.rs @@ -167,7 +167,7 @@ fn command_build_upload_apk_chunked() { if is_first_assemble_call.swap(false, Ordering::Relaxed) { r#"{ "state": "created", - "missingChunks": ["60863d91bb673a1b1b92dbbe91b1de5cc0dde146"] + "missingChunks": ["1d1c9567a6453d0d8029b699bb588ebb946af50d"] }"# } else { r#"{ From 3ce94da08687add75e43d15b3a2c5f745f85af49 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Mon, 15 Dec 2025 13:15:51 -0800 Subject: [PATCH 4/8] address cursor comment about ipa chunks --- tests/integration/_cases/build/build-upload-ipa.trycmd | 3 ++- tests/integration/build/upload.rs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/integration/_cases/build/build-upload-ipa.trycmd b/tests/integration/_cases/build/build-upload-ipa.trycmd index f47481bf67..6c543b59d2 100644 --- a/tests/integration/_cases/build/build-upload-ipa.trycmd +++ b/tests/integration/_cases/build/build-upload-ipa.trycmd @@ -2,7 +2,8 @@ $ sentry-cli build upload tests/integration/_fixtures/build/ipa.ipa --head-sha deadbeef12345678deadbeef12345678deadbeef ? success > Preparing for upload completed in [..] +> Uploading completed in [..] Successfully uploaded 1 file to Sentry - - tests/integration/_fixtures/build/ipa.ipa (http[..]/wat-org/preprod/wat-project/some-text-id) + - tests/integration/_fixtures/build/ipa.ipa (http://sentry.io/wat-org/preprod/wat-project/some-text-id) ``` diff --git a/tests/integration/build/upload.rs b/tests/integration/build/upload.rs index 7b6daf0a56..eaa70b91f5 100644 --- a/tests/integration/build/upload.rs +++ b/tests/integration/build/upload.rs @@ -224,7 +224,7 @@ fn command_build_upload_ipa_chunked() { if is_first_assemble_call.swap(false, Ordering::Relaxed) { r#"{ "state": "created", - "missingChunks": ["ed9da71e3688261875db21b266da84ffe004a8a4"] + "missingChunks": ["1f168f404b360494fd1adbafaf920a303d1b3691"] }"# } else { r#"{ From afa70af076db64554f6278c8d73524d24b8490b6 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Tue, 16 Dec 2025 09:54:59 -0800 Subject: [PATCH 5/8] feedback --- Cargo.toml | 2 +- .../_cases/build/build-upload-apk.trycmd | 3 ++- .../_expected_requests/build/apk_chunk.bin | Bin 4498 -> 4504 bytes tests/integration/build/upload.rs | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index f373becc51..189837ad44 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,7 +70,7 @@ uuid = { version = "1.3.0", features = ["v4", "serde"] } walkdir = "2.3.2" which = "4.4.0" whoami = "1.5.2" -zip = { version = "2.4.2", features = ["zstd"] } +zip = "2.4.2" data-encoding = "2.3.3" magic_string = "0.3.4" chrono-tz = "0.8.4" diff --git a/tests/integration/_cases/build/build-upload-apk.trycmd b/tests/integration/_cases/build/build-upload-apk.trycmd index 75a028f545..71ca23fbb3 100644 --- a/tests/integration/_cases/build/build-upload-apk.trycmd +++ b/tests/integration/_cases/build/build-upload-apk.trycmd @@ -2,7 +2,8 @@ $ sentry-cli build upload tests/integration/_fixtures/build/apk.apk --head-sha 12345678deadbeef78900987feebdaed87654321 ? success > Preparing for upload completed in [..] +> Uploading completed in [..] Successfully uploaded 1 file to Sentry - - tests/integration/_fixtures/build/apk.apk (http://sentry.io/wat-org/preprod/wat-project/42) + - tests/integration/_fixtures/build/apk.apk (http[..]/wat-org/preprod/wat-project/42) ``` diff --git a/tests/integration/_expected_requests/build/apk_chunk.bin b/tests/integration/_expected_requests/build/apk_chunk.bin index 7e2b6016839c66d624c645be9e0b071b5310d32d..2a35b07da035391bbb5794fef5170ced4d1de47a 100644 GIT binary patch delta 4402 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 z zW^JpLYSiK?7#iRmpa?Z92Y-v8$IgzYlC0p~&tldqm~1&KXbZ!D^9t8g4PMqqgq912 zTp3(oQsn3Eiam*O{Si5g(|3)*%dU<8`NXXYtss5 zd?5A32S@DXNV8`;0e_atwk_cuLj%U)*dhz^N!XoZl+RJ#(zv+k6o{?W#1H2r)y?{o zZGH!nac$1W?C#nqaLs??xl(&BSA=C@kSuGyw_8vZ?FNaXVz6y%mDxKGV2{H6Pz-9x zn;T&Kg8dMb%d0#yNP1pg*a|WwCO<>qrjQNaD2fQ%IiG#2g@3I98r4QnED_5!9SLX> zPps{v&I0u2OjnjUCUT%plKs+67fcujUFV+$%7-eo+kzr61wrD!m(``+2#a@c@Xvu}1~A^se#2Gp-pBvdxAGj=-h0@dsC_`oq;gBi>%axl zf`a1Kd1h1_Nf86WG_>!CcP@UrFRpoVLbC`pZ~|cXtOd#)S{VG(zPEO z(uVhCGj0KoDePYnX#wXOHC`&iAFZ2D*&|s)#qi^NUn&hZcQfZUDwCZo0o{R}So_%a zZt2u18juo)_dPCF{yzELvpy>(O%Gh;pNowgdiK`k(tp*VMbXf>M#F$m);O38h=ET2 zQ(|_2{N#xnNHq%rVwnXRrM{5V^YSFU|uY^5tb~Wh3R(Q6TfIwy1rBUMST!oplyykvb<`Po@IB6@icR zwTqt%I+J(}9)C7HC|%8f^1s2=Cs%xqJ@_jsJQjyBf+@LV86R=Gpvb6ziC5H(F_b?D z(Vg`)YGOIvr(p2ek;D3`;6qP0^f6ez-+y-TSom=whToKEk%|dtdtA@J zYtN5>LZ^={nAe41dmnIl;_X<}e1o~1_`~u8^X@B%k>}91A+W{Q?Dk%WRe&iOv{=At zsY{VV;IQTBZ!O9R%g-F2!&fN2W}ymYio3F<4bI8ooKh#7JHaQEFst$w{5*s!`%3!Os37wg?9+0*ToC( z9?HAu3>b@!R&W};re2L>X@GYz4t08yMh>N3O{0YF2m8-Ji%8GE*#&_Jz= z!%)7s?N#RW9Y7P76Rm>Wrk?cfN5No37IEe*p?_YVf<3in>e(!4N+D|Q-_UJaoM5lup&{Ua?c4JIrTJcnFMqC;>+;Q63bx>>O zHGer#@7%dvQj_rm3#KKlB50rr1!24p+$mzeoN3t1SirB;Z%M7?%SI=xy%o#1OTA1X z<&GH164A`}zs?Xy_z1gI%hp|`%EQ2tJq7)BV#lr!XTnDFv7Vdv%o|l%qorn*Zn^8m zuj%AkmY|I!BB-%6b;@d&*pjyt3Z|yT8-EH{9c;Q)W|-namJWFhh06>!?FZIBi@8q5 zoes*yHud|Ehl^BYGr#pkLKa-+JS#0@!im+LCMkmR)@9=S18YN^~|m7)zkLqv9L3KcfBN|^ke$CeLF8-FgL z5t1RJ*($6^>cOX;xSzmTUHu5j#vj>J|EJ=Z?OOmmTr+vN=1cvgjU2u%*~5CS@s<=y z2C&M#JBrEx$2FP<)GAUh{L=B>_xk!TLtD_0uOpI{Ex%}tbZKb$=>CZ+00RD9s$ZNw z|0{7o|1aX;Z=`{dF8$e47aD4{rhE1x7XZJt|H)!(cg!>XL6!Ka?Q|&#KNl~5U#Pg# zQx9=Z7k>w52Y&|%{~-T=(Hay0;6KI#U3~pKyuB0!Zc0$AxIY!n`O{#;>He7|`FAP$ s9nAl7CVzMOJE;G6>bmgH5dR%6EwzSFd!dV`Z~p^Oxj`4T5dZ)U3iQvNSpWb4 delta 4411 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 B$#Vbz diff --git a/tests/integration/build/upload.rs b/tests/integration/build/upload.rs index eaa70b91f5..4c14abe271 100644 --- a/tests/integration/build/upload.rs +++ b/tests/integration/build/upload.rs @@ -167,7 +167,7 @@ fn command_build_upload_apk_chunked() { if is_first_assemble_call.swap(false, Ordering::Relaxed) { r#"{ "state": "created", - "missingChunks": ["1d1c9567a6453d0d8029b699bb588ebb946af50d"] + "missingChunks": ["7138c09b474a5c84ac60e1b145855bf6dcc88913"] }"# } else { r#"{ From 58408e9e8b3326f60dd8e3bd98feb71aa7f68c34 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Tue, 16 Dec 2025 13:22:06 -0800 Subject: [PATCH 6/8] add entry to changelog --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf70c6e28f..e0a90917e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 3.0.1 + +### Performance Improvements + +- We switch to a faster compression algorithm (zstd) for uploading size analysis builds (`sentry build upload`) in preparation for this week's beta release! ([#3038](https://github.com/getsentry/sentry-cli/pull/3038)) + + + ## 3.0.0 ### New Sentry Support Policy From 00f19e6c5ed6d9e58985fa33d539f928e819ce56 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Tue, 16 Dec 2025 13:22:47 -0800 Subject: [PATCH 7/8] changelog indentation --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e0a90917e5..a44be7f80a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,8 +6,6 @@ - We switch to a faster compression algorithm (zstd) for uploading size analysis builds (`sentry build upload`) in preparation for this week's beta release! ([#3038](https://github.com/getsentry/sentry-cli/pull/3038)) - - ## 3.0.0 ### New Sentry Support Policy From 989546e78e185b6d82e9030a73264862c20c99d8 Mon Sep 17 00:00:00 2001 From: Nico Hinderling Date: Tue, 16 Dec 2025 13:23:52 -0800 Subject: [PATCH 8/8] unreleased --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a44be7f80a..e81f59b788 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## 3.0.1 +## Unreleased ### Performance Improvements