Skip to content

Restore legacy macOS update manifest generation - #834

Draft
qayshp wants to merge 1 commit into
BlueBubblesApp:developmentfrom
qayshp:agent/restore-update-manifest
Draft

Restore legacy macOS update manifest generation#834
qayshp wants to merge 1 commit into
BlueBubblesApp:developmentfrom
qayshp:agent/restore-update-manifest

Conversation

@qayshp

@qayshp qayshp commented Jul 23, 2026

Copy link
Copy Markdown

Summary

  • re-enable electron-builder update metadata for macOS DMG releases
  • restore generation and publication eligibility of latest-mac.yml without changing the current updater implementation

Root cause

Commit a72ef646 disabled dmg.writeUpdateInfo, so release packaging stopped producing the legacy manifest that older BlueBubbles servers still check.

User impact

Older installations can discover that a newer release exists. Their legacy updater may still be unable to complete the upgrade, but the manifest restores the update notification path requested in the issue.

Validation

Passed:

  • loaded electron-builder-config.js under Node 20 and asserted:
    • dmg.writeUpdateInfo === true
    • the release target still includes x64 and arm64 DMGs
    • the configured publisher remains the BlueBubbles GitHub draft release
  • a non-publishing electron-builder 24.13.3 fixture using this configuration produced both architecture DMGs plus latest-mac.yml
  • the generated manifest listed both DMGs, and each recorded size and SHA-512 matched its artifact
  • inspected the locked electron-builder 24.13.3 path:
    • a DMG with update info queues an update-info task
    • writeUpdateInfoFiles() combines both architecture entries
    • the resulting latest-mac.yml is dispatched as a publish artifact with the same GitHub publish configuration
  • confirmed the repository release workflow calls electron-builder with --publish always and GH_TOKEN
  • git diff --check

Release verification

No GitHub release was created or modified for this PR. Exercising the final upload would require the upstream release credentials and would create or alter the configured BlueBubbles draft release. Because the generated manifest enters electron-builder's existing artifact publisher—the same release mechanism already responsible for the DMGs—that external upload is an operational check for the next maintainer release, not a code-level merge blocker.

After merge, the release maintainer should still confirm that latest-mac.yml appears beside both DMGs in the next macOS draft release.

Fixes #817

@qayshp qayshp left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review: the configuration restores the legacy manifest switch, but the release artifact still needs end-to-end confirmation.

Comment thread packages/server/scripts/electron-builder-config.js
@qayshp

qayshp commented Jul 23, 2026

Copy link
Copy Markdown
Author

Validation update

Validated on the current SIP-enabled Tahoe host:

  • Passed: loading electron-builder-config.js and asserting dmg.writeUpdateInfo === true.
  • Passed: a non-publishing local electron-builder 24.13.3 fixture using this PR's config produced both x64 and arm64 DMGs plus latest-mac.yml.
  • The manifest listed both DMG files, and every recorded size and SHA-512 matched the corresponding artifact.

The fixture used --publish never, so nothing was uploaded and no GitHub release was created or changed. The repository's normal full build remains blocked by the unrelated pre-existing ScheduledService.ts:39 NodeJS.Timer / clearInterval type error; release-upload validation still belongs on an actual maintainer release.

@qayshp

qayshp commented Jul 28, 2026

Copy link
Copy Markdown
Author

Merge-readiness validation:

  • Node 20 config assertions confirm update metadata is enabled, both DMG architectures remain targeted, and GitHub draft publishing remains configured.
  • The recorded non-publishing electron-builder 24.13.3 fixture produced both DMGs plus a two-entry latest-mac.yml whose sizes and SHA-512 values matched.
  • Inspection of the locked builder shows that DMG update metadata is combined and dispatched with the same GitHub publish configuration; the repository release workflow invokes that publisher with --publish always and GH_TOKEN.
  • git diff --check passes, and a sequential merge simulation against current origin/development with Server Fix headless startup window minimization #831Add typed, privacy-safe Google contact sync logging #833 completed without conflicts.

No release was created or modified. The next maintainer release should confirm the uploaded asset, but that credentialed operational check is not a blocker for this one-line configuration change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant