Skip to content

[Feature] Switch auto-update back to GitHub with canary pre-releases #1202

@zerob13

Description

@zerob13

What do you need? / 你需要什么?

Summary

Switch the DeepChat auto-update mechanism back to using GitHub Releases as the update provider, and introduce a simple channel model where canary builds come from pre-releases and stable builds only track published releases.

Motivation

Desired behavior

  • When the app is in "canary" mode, the auto-updater should detect and offer updates from GitHub pre-releases (e.g. tagged canary builds or "Pre-release" marked versions).
  • When the app is in "stable" mode, the auto-updater should ignore pre-releases and only detect updates from normal GitHub releases.
  • Existing versioning stays semver-based (e.g. x.y.z, x.y.z-canary.n), and update checks use electron-updater's standard latest.yml / GitHub metadata flow without custom feed URLs.

Implementation notes

  • Use electron-updater with the GitHub provider configuration so that release metadata and assets are published as GitHub Releases artifacts in CI.
  • Configure CI to upload the built artifacts and metadata (latest.yml, platform-specific files) to the correct GitHub release or pre-release, instead of a custom/generic update server.
  • Add an internal "update channel" setting (e.g. updateChannel = "stable" | "canary") that controls whether the app considers GitHub pre-releases or only full releases when calling autoUpdater.checkForUpdatesAndNotify().

Acceptance criteria

  • Stable users only see updates when a new GitHub Release (not marked as pre-release) is published with valid update assets for their platform.
  • Canary users can receive updates from GitHub pre-releases, and the app correctly differentiates between canary and stable versions when checking for updates.
  • No manual feed URL management is required in the app code; configuration is driven via electron-builder / electron-updater publish settings and GitHub Releases.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions