[Local|Updates] Update check fails with 404 on legacy-v0.0.41 — allowPrerelease picks the first Atom feed entry

クローズ
#2,348 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
75/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
electron, github, typescript
領域
desktop, devops

調査の方向性

Start with surfsense_local/electron/src/main/updater.ts and inspect attachUpdater around line 71, then trace how electron-updater chooses a GitHub release from the Atom feed. Add a regression test using a non-semver first feed entry and verify stable updates select the release with desktop manifests. The issue reports that v2.2.3 has both Linux manifests.

索引モデルが issue の本文から書いたものです。

説明

desktop
What happens

On a stable 2.2.3 desktop install (Linux, AppImage), Settings › About › "Check now" always fails:

Could not check for updates: Cannot find latest-linux.yml in the latest release artifacts
(https://github.com/MODSetter/SurfSense/releases/download/legacy-v0.0.41/latest-linux.yml): HttpError: 404
Why it happens
  1. surfsense_local/electron/src/main/updater.ts:71 sets updater.allowPrerelease = true for every build.
  2. app-update.yml ships channel: stable, but electron-updater's AppUpdater._channel starts as null (that key in app-update.yml is not copied into updater.channel), so GitHubProvider.getLatestVersion() takes the currentChannel === null branch while allowPrerelease === true: it uses the first entry of releases.atom, not the newest semver tag.
  3. releases.atom currently has legacy-v0.0.41 as its first entry (from the legacy-split work: #2339, #2340, #2341, updated 2026-10-24). That release ships no desktop artifacts — it is absent from GET /releases and GET /releases/tags/legacy-v0.0.41 returns 404 — so stable-linux.yml 404s and the latest-linux.yml fallback 404s too.
Verification
  • 2.2.3 is the latest release and both manifests exist:
    releases/download/v2.2.3/stable-linux.yml → 302, releases/download/v2.2.3/latest-linux.yml → 302.
  • curl https://github.com/MODSetter/SurfSense/releases.atom | head shows legacy-v0.0.41 first.
  • GET /repos/MODSetter/SurfSense/releases?per_page=100 → 42 releases, no legacy-* tag at all.
  • Because the check dies before any version comparison, the app never reports "up to date" — it always shows the 404. Affects every 2.2.3 install with update checks enabled (any platform on the GitHub provider).
Suggested fix

In attachUpdater, do not leave both "no explicit channel" and allowPrerelease in play:

  • for stable builds set updater.allowPrerelease = false and let getLatestTagName() resolve /releases/latest, or
  • set updater.channel = "latest" explicitly, and
  • skip Atom feed entries whose tag is not valid semver (legacy-v0.0.41 is not) before choosing one.

A regression test that stubs the Atom feed with a non-semver first entry would cover this.


Reported from Linux (Omarchy/Arch, Electron AppImage 2.2.3). Happy to re-test a build.

主要言語
Python
スター
16.3k
フォーク
1.6k
平均マージ
18時間 52分
マージ済み PR(30日)
218

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

MODSetter/SurfSense のほかの issue

MODSetter/SurfSense の issue をすべて見る

似ている issue

Python の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。