> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# デスクトップシェルの内部

ブートページ、ナビゲーションゲート、プラグインスタック、設定リファレンス。

## ブートページ

ウィンドウはまず 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 アプリのままにしてください。


## 次へ

[モジュール概要](https://supastack.dev/ja/docs/modules.md)
