コンテンツへスキップ
supastack
ドキュメントを閲覧

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.json

stable と 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 に切り替えて、チャネルフィードの応答が変わることを確認します。

よくある質問

14 件の質問

supastack とは何ですか?

supastack は AI SaaS 製品を構築するためのモジュラー基盤です。共通インフラをまとめて提供するので、製品固有の機能に集中できます。

Web とモバイルに対応していますか?

はい。supastack には Web とモバイル体験の出発点として Next.js アプリと Expo アプリが含まれています。

どの認証が含まれていますか?

Better Auth がメール/パスワード、OTP、ソーシャルログインをカバーします。個人ワークスペースはアカウントと一緒にプロビジョニングされ、初日からレコードが境界内に収まります。

AI はどうサポートされていますか?

supastack には設定可能なマルチプロバイダー AI、使用量追跡、予算、暗号化された自前キー(BYOK)サポートが含まれています。

サブスクリプションはどう管理されますか?

このキット上に構築された製品では、Stripe 課金・サブスクリプション・権限が有料アクセスの基盤になります。プロバイダーの秘密はサーバー側に留まります。

製品固有のコードはどこに置きますか?

製品固有の機能は別のコードベースに置き、製品側が supastack の基本モジュールを設定・統合します。

supastack の価格は?

キットは生涯アップデート付きの一回払いです:シングルスタック 249 ドル(Next.js(Web)、Expo(iOS・Android)、Tauri(macOS・Windows デスクトップ)の各リポジトリから1つ選択)、デュアルスタック 398 ドル(任意の2リポジトリ)、またはフルバンドル 399 ドル(3つのリポジトリすべてと完全なモノレポ)、追加開発者シート 1 席 75 ドル。キットのサブスクリプションはありません。このサイトのチェックアウトはライセンスキーをメールで配信し、GitHub 招待でリポジトリアクセスを提供します。

ワークスペースはどうデータを囲いますか?

ユーザーレコードは workspaceId でスコープされます。認証、権限、AI 使用量、課金イベント、監査エントリは個人ワークスペースの境界内に留まります。

バックグラウンドジョブはどう機能しますか?

Trigger.dev が明示的なジョブランタイムです。JobRunner コントラクトは enqueue・status・cancel のみを約束し、ワークフロー意味論は Trigger.dev 固有で明示的です。

メールとアウトリーチの違いは?

トランザクションメールはタスク完了通知などの製品ワークフローをカバーします。コールドアウトリーチやキャンペーンは製品自身に属し、このキットのメールモジュールの外です。

モバイルの購入はどのように機能しますか?

モバイルでは RevenueCat によるネイティブ購入と復元に対応し、アクセス権をサーバーで検証します。公開前にストアアカウントを設定し、実機テストを完了してください。Web 課金は別に管理します。

AI プロバイダーのキーはどこにありますか?

BYOK 認証情報は暗号化され、サーバー側に留まります。キーはログでサニタイズされ、使用量と予算はワークスペースレベルで可視です。

チェックアウトで使える支払い方法は?

Stripe ホストのチェックアウトはカードを受け付け、Stripe アカウントでウォレットを有効にすれば Alipay と WeChat Pay も提供できます——中国の購入者に便利です。ウォレット認可は非同期で確定するため、決済完了と同時にライセンスページが更新されます。

返金を受けることはできますか?

リポジトリへのアクセス権を取得した後は、supastack は永久にあなたのものとなるため、返金はできません。ですがご安心ください。生涯アップデートを含む完全なソースコードを入手し、ご自身やクライアントのために無制限にプロダクトを構築・公開できます。コードの転売や、リポジトリをスターターキットやテンプレートとして再配布することのみ禁止されています。

JA
テーマ