The 0.1.4 release uploaded all immutable artifacts but failed to replace latest.json. A real Hetzner test confirmed that GetObject returns a quoted ETag while conditional PutObject requires its bare value: passing the quotes returns PreconditionFailed, which AWS CLI hides behind a NoneType formatting error.
Normalize and validate the ETag before the conditional write. Wildcards, weak/malformed tags and missing values remain rejected; stale writers still fail. Add an opt-in integration test that creates a unique object in a configured test bucket, reproduces the quoted failure, verifies a successful replacement through the production normalization function, rejects a stale replacement, and removes the test object.
Add the manual workflow mode resume and node native/publish-macos.mjs resume to finish a release using its already uploaded artifacts. The resume job uses current publishing tools from the workflow commit, metadata from the validated release tag, and the existing CI release credentials. It skips rebuilding and importing Apple signing credentials. It downloads the exact version's DMG, updater, checksums and signature, then reuses the existing signature, checksum, immutable-content and feed-concurrency checks. RELEASE_TAG and storage/signing identity settings must match the configured version as for upload. No new build or version bump is required for the existing 0.1.4 artifacts.
Validation: 157 JavaScript tests initially passed; after adding the workflow mode, all 79 affected publisher/workflow tests passed; the opt-in Hetzner integration test passed separately against the existing development bucket. ESLint and diff checks passed. Public 0.1.4 DMG checksum and updater checksum/signature verified before attempting recovery.
Recovery status: public 0.1.4 artifacts are complete and verified. A local recovery attempt stopped at GetBucketVersioning before any writes because the local application credentials lack the required release-bucket permissions. After merge, manually dispatch macOS release to Hetzner on main, tag macos-v0.1.4, mode resume. The production feed has not yet been changed by this fix.
Base and PR target: main, pulled before branch creation at dc9f400f34ba41f208acf7588a52487264aa6599.
The 0.1.4 release uploaded all immutable artifacts but failed to replace latest.json. A real Hetzner test confirmed that GetObject returns a quoted ETag while conditional PutObject requires its bare value: passing the quotes returns PreconditionFailed, which AWS CLI hides behind a NoneType formatting error.
Normalize and validate the ETag before the conditional write. Wildcards, weak/malformed tags and missing values remain rejected; stale writers still fail. Add an opt-in integration test that creates a unique object in a configured test bucket, reproduces the quoted failure, verifies a successful replacement through the production normalization function, rejects a stale replacement, and removes the test object.
Add the manual workflow mode **resume** and `node native/publish-macos.mjs resume` to finish a release using its already uploaded artifacts. The resume job uses current publishing tools from the workflow commit, metadata from the validated release tag, and the existing CI release credentials. It skips rebuilding and importing Apple signing credentials. It downloads the exact version's DMG, updater, checksums and signature, then reuses the existing signature, checksum, immutable-content and feed-concurrency checks. RELEASE_TAG and storage/signing identity settings must match the configured version as for upload. No new build or version bump is required for the existing 0.1.4 artifacts.
Validation: 157 JavaScript tests initially passed; after adding the workflow mode, all 79 affected publisher/workflow tests passed; the opt-in Hetzner integration test passed separately against the existing development bucket. ESLint and diff checks passed. Public 0.1.4 DMG checksum and updater checksum/signature verified before attempting recovery.
Recovery status: public 0.1.4 artifacts are complete and verified. A local recovery attempt stopped at GetBucketVersioning before any writes because the local application credentials lack the required release-bucket permissions. After merge, manually dispatch **macOS release to Hetzner** on **main**, tag **macos-v0.1.4**, mode **resume**. The production feed has not yet been changed by this fix.
Base and PR target: main, pulled before branch creation at `dc9f400f34ba41f208acf7588a52487264aa6599`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The 0.1.4 release uploaded all immutable artifacts but failed to replace latest.json. A real Hetzner test confirmed that GetObject returns a quoted ETag while conditional PutObject requires its bare value: passing the quotes returns PreconditionFailed, which AWS CLI hides behind a NoneType formatting error.
Normalize and validate the ETag before the conditional write. Wildcards, weak/malformed tags and missing values remain rejected; stale writers still fail. Add an opt-in integration test that creates a unique object in a configured test bucket, reproduces the quoted failure, verifies a successful replacement through the production normalization function, rejects a stale replacement, and removes the test object.
Add the manual workflow mode resume and
node native/publish-macos.mjs resumeto finish a release using its already uploaded artifacts. The resume job uses current publishing tools from the workflow commit, metadata from the validated release tag, and the existing CI release credentials. It skips rebuilding and importing Apple signing credentials. It downloads the exact version's DMG, updater, checksums and signature, then reuses the existing signature, checksum, immutable-content and feed-concurrency checks. RELEASE_TAG and storage/signing identity settings must match the configured version as for upload. No new build or version bump is required for the existing 0.1.4 artifacts.Validation: 157 JavaScript tests initially passed; after adding the workflow mode, all 79 affected publisher/workflow tests passed; the opt-in Hetzner integration test passed separately against the existing development bucket. ESLint and diff checks passed. Public 0.1.4 DMG checksum and updater checksum/signature verified before attempting recovery.
Recovery status: public 0.1.4 artifacts are complete and verified. A local recovery attempt stopped at GetBucketVersioning before any writes because the local application credentials lack the required release-bucket permissions. After merge, manually dispatch macOS release to Hetzner on main, tag macos-v0.1.4, mode resume. The production feed has not yet been changed by this fix.
Base and PR target: main, pulled before branch creation at
dc9f400f34ba41f208acf7588a52487264aa6599.