Skip to content

feat(updater): support custom GitHub release sources - #294

Open
WilliamWang1721 wants to merge 52 commits into
Kuddev:mainfrom
WilliamWang1721:feat/custom-update-source-minimal
Open

WilliamWang1721 wants to merge 52 commits into
Kuddev:mainfrom
WilliamWang1721:feat/custom-update-source-minimal

Conversation

@WilliamWang1721

@WilliamWang1721 WilliamWang1721 commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add one optional custom GitHub Releases source to Settings → Application while keeping the existing updater pipeline unchanged.

  • Leave the field empty to keep the official Kuddev/pebrel updater.
  • .../releases or .../releases/latest checks that repository's latest release.
  • .../releases/tag/<tag> checks that exact release, so fork builds and beta/preview releases can be selected.
  • Existing update checks, background download, SHA-256 verification, native asset selection and platform install handoff are reused.

Design

This intentionally changes only the release-source boundary.

  • Custom sources are restricted to HTTPS github.com/<owner>/<repo>/releases... URLs.
  • The existing official 403/429 fallback remains unchanged.
  • Custom sources do not add a second fallback path.
  • Package naming, size limits, SHA-256 requirements, streamed verification and platform installation checks remain unchanged.
  • Changing the source invalidates stale in-flight update checks and cancels the cached download session.

Scope

The implementation is intentionally small:

  • one persisted update_release_url setting;
  • one Settings input;
  • one small release-source parser/validator;
  • minimal wiring into the existing updater and download validation.

The existing fallback.rs and assets.rs remain identical to upstream main.

Validation

  • Invalid-source and source-mismatch feedback use typed English and Simplified Chinese catalog entries.
  • Current PR head: 4e47c5ca79a7627393daf1eb333b58a6a490fcdc (base 360613aa6eedfa4e441d658d98db502e8a81442b). Post-sync snapshot: architecture-contracts and lint pending; pr-size passed. Native Tests jobs were not reported. See live PR checks for current state.
  • No local tests or builds were run for this follow-up.

AI assistance for this review and follow-up: GPT-6 Luna (max reasoning effort). Earlier implementation model metadata is unavailable in this continuation.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Unresolved findings affect stale update state, reset behavior, release-link validation, and localized validation errors.

Review effort: Lite
Findings: 3 Medium severity

Open (3)
What changed in this PR

Adds a persisted custom GitHub Releases source while reusing the existing update and download pipeline.

Changes:

  • Adds update_release_url with reset support and Settings UI.
  • Implements GitHub release-source parsing and asset validation.
  • Updates checks, downloads, release links, and localization.
File Summary
nebula_settings/​src/​reset.rs Registers the setting for reset; reset does not invalidate stale checks or cancel downloads (moderate, 4 votes).
nebula_settings/​src/​lib.rs Adds persistence, defaults, and tests.
nebula_app/​src/​update_download.rs Applies source-aware download validation.
nebula_app/​src/​update_check/​source.rs Parses sources and validates assets; UI errors are hardcoded in Chinese (nit, 1 vote).
nebula_app/​src/​update_check.rs Uses configured release sources.
nebula_app/​src/​gpui_shell/​workspace/​update_dialog.rs Opens configured release pages.
nebula_app/​src/​gpui_shell/​settings_pane/​initialization.rs Initializes the source input.
nebula_app/​src/​gpui_shell/​settings_pane/​about.rs Adds source editing and links; background results can become stale after source changes (moderate, 4 votes), and links bypass source parsing (moderate, 2 votes).
nebula_app/​src/​gpui_shell/​settings_pane.rs Stores and localizes source input state.
nebula_app/​i18n/​zh-CN.json Adds Simplified Chinese strings.
nebula_app/​i18n/​en-US.json Adds English strings.
architecture/​notes/​nebula_app/​update_check/​2026-09-25-custom-release-source.md Documents the design decision.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread nebula_app/src/gpui_shell/settings_pane/about.rs
Comment thread nebula_app/src/gpui_shell/settings_pane/about.rs Outdated
Comment thread nebula_settings/src/reset.rs
WilliamWang1721 and others added 28 commits September 30, 2026 21:00
# Conflicts:
#	nebula_app/src/gpui_shell/workspace/windowing.rs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants