KAN-65: Fix update menu and rebuild failed macOS releases #162

Merged
Twyco merged 3 commits from feature/KAN-65-remove-release-resume into main 2026-09-28 06:04:04 +00:00
Owner

The native Install Update menu stayed disabled because its refresh searched only the top-level menu, while the item lives inside the KanbanGit submenu. Give that submenu a stable ID and resolve the install item through it. The menu enables for available updates and retryable installation failures, and disables during checks, downloads and installation. Remove the Update badge from the Dock icon.

A failed macOS upload must not consume an app version. Remove the separate Resume mode and make both tag pushes and manual dispatch run the full build, signing, notarization and publication pipeline. A rebuilt release can replace partial files at the same version until that version reaches latest.json. Each replacement checks the authenticated feed and uses the existing object's ETag. Files at or below the published feed version remain protected, identical retries stay valid, and the feed is promoted only after every public download is verified. Release downloads now require cache revalidation.

Publication stays serialized by the existing macos-release concurrency group. A failed tag can be moved to a corrected commit on main and pushed again using the exact lowercase macos-vMAJOR.MINOR.PATCH name. Once the feed has been promoted, even a later job failure requires a new version for changed binaries. Ambiguous S3 errors fail closed; if a first-release feed lookup has the AWS CLI empty-error bug, an authenticated empty listing is required to prove it is missing.

Validation:

  • 94 publisher/workflow tests, covering rebuilt partial uploads, protected published versions, feed failures, ETag conflicts, removal of Resume and moved tags.
  • 18 Rust unit tests and 4 updater JavaScript tests passed. The signed upgrade test remains opt-in and was not rerun.
  • Native macOS updater smoke test passed, including actual install-menu enable/disable transitions and the existing WebView checks. It required macOS GUI access outside the sandbox.
  • Cargo Clippy with all targets/features and warnings denied, Rust formatting, ESLint, workflow YAML parsing and diff checks passed.

No production release objects or tags were changed, and a new signed release was not published. These native UI changes take effect in the next app release.

Base and PR target: main, pulled before branch creation at 3d5ee223e8.

The native Install Update menu stayed disabled because its refresh searched only the top-level menu, while the item lives inside the KanbanGit submenu. Give that submenu a stable ID and resolve the install item through it. The menu enables for available updates and retryable installation failures, and disables during checks, downloads and installation. Remove the Update badge from the Dock icon. A failed macOS upload must not consume an app version. Remove the separate Resume mode and make both tag pushes and manual dispatch run the full build, signing, notarization and publication pipeline. A rebuilt release can replace partial files at the same version until that version reaches latest.json. Each replacement checks the authenticated feed and uses the existing object's ETag. Files at or below the published feed version remain protected, identical retries stay valid, and the feed is promoted only after every public download is verified. Release downloads now require cache revalidation. Publication stays serialized by the existing macos-release concurrency group. A failed tag can be moved to a corrected commit on main and pushed again using the exact lowercase macos-vMAJOR.MINOR.PATCH name. Once the feed has been promoted, even a later job failure requires a new version for changed binaries. Ambiguous S3 errors fail closed; if a first-release feed lookup has the AWS CLI empty-error bug, an authenticated empty listing is required to prove it is missing. Validation: - 94 publisher/workflow tests, covering rebuilt partial uploads, protected published versions, feed failures, ETag conflicts, removal of Resume and moved tags. - 18 Rust unit tests and 4 updater JavaScript tests passed. The signed upgrade test remains opt-in and was not rerun. - Native macOS updater smoke test passed, including actual install-menu enable/disable transitions and the existing WebView checks. It required macOS GUI access outside the sandbox. - Cargo Clippy with all targets/features and warnings denied, Rust formatting, ESLint, workflow YAML parsing and diff checks passed. No production release objects or tags were changed, and a new signed release was not published. These native UI changes take effect in the next app release. Base and PR target: main, pulled before branch creation at 3d5ee223e8d33ff0284572cfc1acdbd1910bbd73.
Twyco added 2 commits 2026-09-28 05:52:24 +00:00
fix(KAN-65): allow rebuilding unpublished macOS releases
CI/CD / test_and_check_app (pull_request) Successful in 6m53s
CI/CD / Publish immutable image (pull_request) Skipped
CI/CD / preconditions (pull_request) Successful in 2s
macOS checks / Native Rust tests and unsigned build (pull_request) Successful in 1m32s
Native JavaScript checks / Native launcher and release tests (pull_request) Successful in 1m5s
4ee047311f
Twyco added 1 commit 2026-09-28 06:01:39 +00:00
fix(KAN-65): synchronize update menu and remove dock badge
macOS checks / Native Rust tests and unsigned build (pull_request) Successful in 1m37s
CI/CD / preconditions (pull_request) Successful in 2s
Native JavaScript checks / Native launcher and release tests (pull_request) Successful in 1m4s
CI/CD / Publish immutable image (pull_request) Canceled after 0s
CI/CD / test_and_check_app (pull_request) Canceled after 1m38s
4f9bf2dec4
Twyco changed title from KAN-65: Rebuild failed macOS releases without Resume to KAN-65: Fix update menu and rebuild failed macOS releases 2026-09-28 06:02:07 +00:00
Twyco merged commit d0c5d65f0e into main 2026-09-28 06:04:04 +00:00
Twyco deleted branch feature/KAN-65-remove-release-resume 2026-09-28 06:04:04 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: PetschStudios/KanbanGit#162