For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ja/docs/desktop/updates.md (or send Accept: text/markdown).
自動アップデートとリリースチャネル
署名済みアップデートフィード、stable/beta チャネル、同梱のリリースワークフロー。
アップデーターのキーペアを一度だけ生成
アップデーターはダウンロードしたアーティファクトの minisign 署名を検証します。Tauri の署名ツールでキーペアを生成し、秘密鍵は TAURI_SIGNING_PRIVATE_KEY に、パスワードは TAURI_SIGNING_PRIVATE_KEY_PASSWORD に入れて、両方ともシークレットストアに保管してください — リポジトリには入れません。アップデーターアーティファクトを作るビルドは各インストーラーの隣に .sig サイドカーを出力します。公開鍵はクライアントに渡し、秘密鍵は CI に残します。
corepack pnpm --filter @supastack/desktop exec tauri signer generate -w ~/.tauri/product.keyビルド時にアップデーターを設定
tauri.conf.json には空の endpoints と pubkey を持つセンチネルのアップデーターブロックが同梱されています — キーがなければアップデータープラグインを初期化できないため、そのまま残してください。実際の値はビルド時に --config JSON オーバーレイまたは TAURI_CONFIG 環境変数でディープマージされます。SUPASTACK_UPDATER_ENDPOINT と SUPASTACK_UPDATER_PUBKEY を設定すると、check:release-config が貼り付けるべき正確なオーバーレイを出力します。
両方設定するか、両方とも設定しないでください。endpoints だけのオーバーレイでは pubkey が空のままになり、チェックは動いているように見えてすべてのインストールが署名検証に失敗します。エンドポイント URL は {{target}}、{{arch}}、{{current_version}} のプレースホルダーを持ち — バージョンのスロットは必須です — さらにリリースチャネルを有効にする任意の {{channel}} パスセグメントを含められます。
# check:release-config prints this overlay for tauri build --config:
# {"plugins":{"updater":{"endpoints":["https://releases.example.com/{{channel}}/{{target}}/{{arch}}/{{current_version}}"],"pubkey":"<base64 public key>"}}}
# SUPASTACK_UPDATER_ENDPOINT=
# SUPASTACK_UPDATER_PUBKEY=latest.json フィードを公開
各エンドポイントは latest.json マニフェストを返します — version、notes、pub_date、そして darwin-aarch64、darwin-x86_64、windows-x86_64、windows-aarch64、linux-x86_64、linux-aarch64 をカバーする platforms マップで、各エントリーはインストーラー URL とその署名をペアにします。
release:manifest スクリプトで作成します。バンドルディレクトリを走査して .app.tar.gz、-setup.exe(.msi より優先)、.AppImage のアーティファクトを探し — それぞれに .sig が隣接している必要があります — マニフェストを書き出すかマージします。フラグは --version、--base-url、--platform と組み合わせる --bundle-dir、実行をまたいでプラットフォームを蓄積する --merge、--notes、--pub-date、--out をカバーします。
corepack pnpm --filter @supastack/desktop release:manifest -- \
--version 1.2.0 \
--base-url https://releases.example.com/stable \
--bundle-dir src-tauri/target/release/bundle \
--platform windows-x86_64 \
--merge latest.jsonstable と beta チャネル
エンドポイントに {{channel}} プレースホルダーが含まれる場合、アプリメニューで Beta Updates チェックボックスが有効になり、フィードを stable と beta で切り替えられます。選択はアプリ設定の隣の update-channel ファイルに永続化され、SUPASTACK_UPDATE_CHANNEL が実行ごとに上書きします — 認識できない値は警告付きで無視されます — デフォルトは stable です。プレースホルダーがなければトグルは無効のままで、stable フィードのみがチェックされます。
アップデートがチェックされるタイミング
起動時に 1 回、静かなバックグラウンドチェックが実行され、アップデートがある場合のみダイアログを表示します。Check for Updates… メニュー項目はすべての結果を報告します。チェックは直列化され、同時に来た 2 件目のリクエストは捨てられます。利用可能なアップデートは Install and Restart を提示し、ダウンロード、インストール、アプリの再起動を行います。未設定のビルドはアップデートが設定されていないと応答し、失敗はリトライではなくダイアログとして表面化します。
同梱のリリースワークフロー
.github/workflows/desktop-release.yml は、desktop-v* タグ、またはバージョンとチャネルを指定した手動ディスパッチで、マトリクス — 両アーキテクチャの macOS、Windows、Ubuntu — をビルドします。タグからマニフェストのバージョンを刻印し(これを省略したリリースは永遠に自分自身をアップデートとして提示します)、プラットフォームごとのマニフェストをマージし、latest.json とすべてのインストーラーおよび署名を載せたドラフトの GitHub リリースを作成します — beta チャネルでは prerelease としてマークされます。
リポジトリ変数として SUPASTACK_APP_URL と SUPASTACK_UPDATER_ENDPOINT、シークレットとして SUPASTACK_UPDATER_PUBKEY と署名用秘密鍵およびそのパスワードが必要です。Apple の署名資格情報は任意の追加項目です。完全なランブックはリポジトリ内の docs/desktop-updates.md にあります。
検証とトラブルシューティング
ビルドをインストールし、新しいマニフェストをテストフィードに公開して、次のチェックでアップデートダイアログが届き、アプリが新しいバージョンに再起動することを確認してください。その後 beta に切り替えて、チャネルフィードの応答が変わることを確認します。