feat: アップデート確認を設定に追加(GitHub Releases・無料配布路線の第一歩)#50
Merged
Conversation
設定 > 一般 に「アップデート」セクションを追加。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。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
無料配布路線(署名なし+Homebrew/Sparkle)の第一歩として、設定 > 一般 に「アップデート」セクションを追加。GitHub Releases を見て新しいバージョンの有無を知らせる(自動ダウンロード/インストールは伴わない。将来 Sparkle 導入時に「確認→自動更新」へ昇格できる形)。
追加した設定項目
@AppStorage・既定 ON)設計
ReleaseVersion(normalize/isNewer/compare)に集約し、swift testで 5 ケース検証(数値比較・セグメント数違い・v接頭辞・prerelease 無視など)。api.github.com/.../releases/latest(未認証・公開リポジトリ)。ultracode レビューの反映(4 次元×反証検証、Opus-4.8 エージェント 14 体)
10 件の非 refuted 指摘のうち、実効のある 7 点を修正:
lastNotifiedUpdateVersionを記録し version ごとに一度だけhtml_url欠落/不正で.upToDateに誤判定 PLAUSIBLEisNewerと URL 解析を分離。壊れていてもリリース一覧へフォールバック"0.0.0"フォールバックで全リリースを新扱い PLAUSIBLE.failedに潰れる+毎起動チェック CONFIRMEDGitHubRepoに一元化AgentNotifier.postUpdateAvailableに集約検証
swift test: 58 passed(ReleaseVersionTests5 件新規)。xcodebuild … build成功・警告0。