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/internals.md (or send Accept: text/markdown).
デスクトップシェルの内部
ブートページ、ナビゲーションゲート、プラグインスタック、設定リファレンス。
ブートページ
ウィンドウはまず apps/desktop/ui のバンドルページを読み込みます。注入された __SUPASTACK_APP_URL__ を読み、10 秒のタイムアウトでバックエンドをプローブし、到達できれば転送します。バックエンドに届かない場合は、ネットワーク回復時にも発火する Retry 付きの Can't reach host 状態を描画するため、コールドスタートで空白のウィンドウにはなりません。?target= クエリパラメーターで、通常のブラウザーでもこのページを試せます。
ネイティブ機能は IPC ではなくプラグイン
シェルはカスタムコマンドを登録しません — すべてのネイティブ機能は Tauri プラグイン経由で届きます。deep-link 機能付きの single-instance(Windows と Linux で 2 回目の起動引数をルーティング)、deep-link、window-state(ジオメトリのみ — ズームとチャネルは独自のサイドカーを保持)、opener、dialog、process(アップデート後の再起動)、updater、autostart、global-shortcut、そして tray-icon 機能です。シェルを拡張するには、webview の UI をフォークするのではなく、プラグインとパーミッションを追加します。
ナビゲーションゲート
ナビゲーションがシェル内に留まるのは、バンドルされたシェルページ、dev サーバーのオリジン、設定されたアプリの正確なオリジンだけです。資格情報のない HTTP(S)、mailto:、tel: のリンクは opener プラグイン経由でシステムブラウザーに出ます。それ以外のスキームはすべてキャンセルされます。ウィンドウが存在する前に届いたディープリンクは managed state にバッファされ、ウィンドウができた時点で適用されます。
設定とケイパビリティのリファレンス
tauri.conf.json は productName、version(リリース前にバンプ — ワークフローが上書きできます)、識別子(check:release-config は com.supastack.desktop からの変更を要求)、supastack のディープリンクスキーム、アップデーターのセンチネルブロック、バンドルターゲット、プレースホルダーアイコンを設定します。capabilities/default.json は core:default と opener:allow-open-url を付与します — 新しいプラグインが必要とする場合にのみ広げてください。
シェルのテスト方法
corepack pnpm --filter @supastack/desktop test はブートページを構文チェックし、URL 解決、ディープリンク、ズーム、チャネルロジックをカバーする Rust ユニットスイートを実行します。typecheck は cargo check を実行します。JavaScript のリリーススクリプトはリポジトリの vitest スイートでカバーされ、CI パイプラインはすべての変更で 3 つの OS 上の実際のインストーラーをビルドします。
corepack pnpm --filter @supastack/desktop typecheck
corepack pnpm --filter @supastack/desktop test
corepack pnpm --filter @supastack/desktop check:release-config検証とトラブルシューティング
src-tauri に触れた後はパッケージスイートを実行し、その後各対象 OS でネイティブの動作を手で確認してください — ユニットチェックが証明するのはルールであり、ウィンドウではありません。新しいシェルの動作はプラグインとメニュー項目の内側に収め、webview を素の Web アプリのままにしてください。