Skip to content

feat: アップデート確認を設定に追加(GitHub Releases・無料配布路線の第一歩)#50

Merged
sasagar merged 1 commit into
devfrom
feature/update-check-settings
Jul 4, 2026
Merged

feat: アップデート確認を設定に追加(GitHub Releases・無料配布路線の第一歩)#50
sasagar merged 1 commit into
devfrom
feature/update-check-settings

Conversation

@sasagar

@sasagar sasagar commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

概要

無料配布路線(署名なし+Homebrew/Sparkle)の第一歩として、設定 > 一般 に「アップデート」セクションを追加。GitHub Releases を見て新しいバージョンの有無を知らせる(自動ダウンロード/インストールは伴わない。将来 Sparkle 導入時に「確認→自動更新」へ昇格できる形)。

追加した設定項目

  • 現在のバージョン表示
  • 起動時にアップデートを確認するトグル(@AppStorage・既定 ON)
  • アップデートを確認ボタン+状態表示(最新/新版あり→「開く」でリリースページ)
  • 起動時チェックで新版発見時は macOS 通知

設計

  • バージョン比較はエンジン層 ReleaseVersionnormalize/isNewer/compare)に集約し、swift test で 5 ケース検証(数値比較・セグメント数違い・v 接頭辞・prerelease 無視など)。
  • 取得は api.github.com/.../releases/latest(未認証・公開リポジトリ)。

ultracode レビューの反映(4 次元×反証検証、Opus-4.8 エージェント 14 体)

10 件の非 refuted 指摘のうち、実効のある 7 点を修正:

指摘 対処
通知が起動ごとに再投函(dedup 無し)CONFIRMED lastNotifiedUpdateVersion を記録し version ごとに一度だけ
初回起動の許可レースで通知が黙って落ちる CONFIRMED 未許可なら投函せず記録もしない→許可後の次回起動で通知
html_url 欠落/不正で .upToDate に誤判定 PLAUSIBLE isNewer と URL 解析を分離。壊れていてもリリース一覧へフォールバック
"0.0.0" フォールバックで全リリースを新扱い PLAUSIBLE 版が読めなければ確認しない
全失敗が .failed に潰れる+毎起動チェック CONFIRMED 起動時チェックを 6h throttle
repo スラッグのハードコード重複(ChangelogView)CONFIRMED GitHubRepo に一元化
通知投函の重複(AgentNotifier と二重)PLAUSIBLE 投函を AgentNotifier.postUpdateAvailable に集約

検証

  • swift test: 58 passedReleaseVersionTests 5 件新規)。
  • app: xcodebuild … build 成功・警告0。

設定 > 一般 に「アップデート」セクションを追加。GitHub Releases を見て新版の有無を知らせる
(署名/自動インストールは伴わない。将来 Sparkle へ昇格可能な形)。

- 現在バージョン表示/「起動時に確認する」トグル(既定 ON)/「今すぐ確認」ボタン+状態表示。
- 新版発見時は macOS 通知。バージョン比較はエンジン層 ReleaseVersion に集約し swift test で検証。

ultracode の adversarial レビュー(4 次元×各所見を反証検証)の指摘を反映:
- 通知の重複投函を防止(version ごとに一度だけ・UserDefaults で記録)。
- 初回起動の許可レース対策(未許可なら投函せず記録もしない→許可後の次回起動で通知)。
- html_url が無い/壊れていても .upToDate に誤判定せずリリース一覧へフォールバック。
- version 未取得時("0.0.0" で全リリースを新扱いする誤判定)を回避(読めなければ確認しない)。
- 起動時チェックを 6h throttle(GitHub 未認証レート制限の連打を回避)。
- repo スラッグを GitHubRepo に一元化(ChangelogView との重複解消)。
- 通知投函を AgentNotifier に集約(UpdateChecker 直投函の重複解消)。

swift test 58 passed / app build 警告0。
@sasagar sasagar marked this pull request as ready for review July 4, 2026 06:22
@sasagar sasagar merged commit 1c83a8e into dev Jul 4, 2026
1 check passed
@sasagar sasagar deleted the feature/update-check-settings branch July 4, 2026 06:22
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