# プロジェクトとワークツリー プロジェクトタブは、CodeNomad をバックエンドコンピューター上のフォルダーに接続します。タブを開くこと、チェックアウトを閲覧すること、会話ファミリーを移動することは、それぞれ異なる操作です。 ## プロジェクトを開く {#open-project} 1. **新しいインスタンス**(`+`)をクリックしてホームページを開きます。 2. **フォルダを参照** を選び、バックエンドのフォルダーを選択して開きます。または、**最近使ったフォルダ** の項目を選びます。 3. リポジトリをコピーするには、**Git リポジトリをクローン** を選び、**リポジトリ URL** と **保存先フォルダ** を入力して **クローン** を選びます。**保存先フォルダ** には、前回のクローンがあるフォルダー(なければ最近のプロジェクトと同じ場所)にリポジトリ名のフォルダーが入力されます。**参照** ではクローンを置くフォルダーを選びます。クローンのフォルダー名を含め、パスは直接編集することもできます。 リモートサーバーの参照とは、そのサーバーのファイルシステムの参照であり、スマートフォンやノートパソコンの参照ではありません。プロジェクトを開いても、タブごとに別の OpenCode デーモンは作成されません。会話は OpenCode ネイティブのセッションであり、その寿命はタブの寿命と同じではありません。 クローンは保存先にリポジトリを書き込みます。**保存先フォルダが既に存在する場合は先に削除します。** は破壊的な操作です。そこに既にあるすべての内容を削除してよい場合にのみ有効にしてください。不確かな場合は、新しい保存先を使用します。クローンの失敗を理由に既存のプロジェクトを削除しないでください。再試行する前に、表示された保存先とエラーを確認します。 最近使った項目はショートカットです。**ワークスペース名を変更** は表示名を変更し、**履歴から削除** はショートカットを削除しますが、ファイルや会話は削除しません。既に開いている最近のプロジェクトをクリックすると新しいタブで開きます。その **開いています** ボタン(**開いているプロジェクトに切り替え**)は、代わりに既存のタブを選択します。 ## 新しいインスタンスのランチャーを使う {#new-instance-launcher} 1. `+` を長押しまたは右クリックします。キーボードフォーカスがある場合は、**Alt+Down**、**Shift+F10**、または Menu キーを使用します。 2. 最近のプロジェクトを検索するか、**参照…**、**一時**、**クローン…** を選びます。 通常のクリックでは、引き続きホームページ全体が開きます。ランチャーはショートカットであり、管理画面ではありません。最近のプロジェクトの名前変更/削除やサーバーブックマークの管理は、ホームページで行います。Escape でランチャーを閉じ、フォーカスを `+` に戻せます。 ## タブを閉じてプロジェクトを閉じる {#close-stop} 1. タブの閉じるボタン、またはコマンドパレットの **タブを閉じる**(レンダラーでは `Ctrl/Cmd+W`)を使用します。 2. タブを閉じると、CodeNomad 内でそのプロジェクトが閉じられ、そのイベントとリクエストの追跡をやめます。セッションは OpenCode で実行を続けます。 3. フォルダーの参照、または最近使った項目からフォルダーを開き直すと、それらの会話を再び確認できます。 | 操作 | 範囲と効果 | 行わないこと | | --- | --- | --- | | タブを閉じる | そのタブの CodeNomad プロジェクト接続を削除します。同じフォルダーを別に開いたタブには影響しません | プロジェクトファイルやネイティブ履歴の削除、セッションの停止、OpenCode の Location の解放はしません | | セッションを停止 | 選択した会話の実行 | プロジェクトを閉じたり、その履歴を削除したりしません | 同じプロジェクト接続を別のウィンドウでも表示している場合は、そちらのタブも閉じ、そのウィンドウに通知が表示されます。操作したウィンドウには表示されません。閉じる操作は直ちに行われます。バックエンドがプロジェクトを閉じられない場合はエラーが表示され、ホームページの **開いているプロジェクトに切り替え** から引き続きアクセスできます。自動的な再試行はありません。閉じたタブの未送信の下書きは、起動時の復元で保持されません。 ウィンドウ全体を閉じる、終了する、再読み込みする操作では、プロジェクト接続は閉じられず、通常の起動時復元が適用されます。実行の終了を確認する必要がある場合は、該当する実行を明示的に停止してください。CodeNomad がネイティブの Location を解放することはありません。共有サービスの保守は、[OpenCode のセットアップ](opencode.md)で説明しています。 ## 一時ワークスペース {#temporary-workspaces} 1. ランチャーの **一時**、またはホームページの **新しい一時インスタンス** を選びます。 2. CodeNomad が管理する空のフォルダーで作業します。Git は自動初期化されません。 3. タブを閉じるときに、**保持**、**破棄**、**キャンセル** を選びます。タブメニューには **プロジェクトとして保持** もあります。 | 選択 | 効果 | 復旧 | | --- | --- | --- | | 保持 | CodeNomad 内でプロジェクトを閉じ、フォルダーと会話を保持し、一時状態を解除して最近のプロジェクトに追加 | 最近使った項目から再度開きます。フォルダーは移動しません | | 破棄 | 一時ワークスペースの会話とファイルを削除 | 元に戻せません。必要なものは先に別の場所へ保存してください | | キャンセル | 一時ワークスペースを開いたままにする | 作業を続けるか、後で決めます | 会話、ファイル、未送信の下書きがなく、手を加えていない一時タブは、閉じるときに確認なしで破棄されます。開いている一時タブは通常の起動時復元の対象ですが、ホームページには閉じた一時フォルダーを再開する専用リストはありません。 会話が実行中、または別のタブ/ウィンドウでフォルダーが開いている場合、破棄は拒否されます。先に実行を停止し、ほかの表示を閉じてください。破棄に失敗しても一時状態は保持されます。親ディレクトリを手動で削除するのではなく、表示された問題を解決して再試行してください。 ## ワークツリーを選択・作成する {#select-create-worktree} 1. 親会話を開き、入力欄のワークツリーセレクターを使用します。狭いレイアウトでは矢印だけのコントロールです。 2. 検出された既存のワークツリーを選ぶか、**+ worktree を作成** を選びます。 3. 作成する場合は、**名前** を入力して **worktree を作成して使用** を選びます。 CodeNomad は OpenCode を通じてワークツリーを検出し、開いているリポジトリに属することを確認します。新しいブランチ名は選択したチェックアウトの HEAD から始まります。既存のブランチ名は、そのブランチの現在のリビジョンを使用します。別の場所で既にチェックアウトされているブランチは Git に拒否されることがあります。ワークツリーは、既定の `.codenomad/worktrees` を使用します。未コミットの変更は元のチェックアウトに残り、新しいワークツリーにはコピーされません。 入力欄のセレクターは、親会話とその配下の再帰的な子孫を、確認済みのファミリーとして移動します。サブセッションが独立してこのセレクターを変更することはできません。アクティブなセッションがあると操作はブロックされます。ファミリーの完了を待つか、先に実行を停止してください。移動が確定するまで次の移動を要求しないでください。エラー時は、更新された会話/ワークツリーの状態を確認してから再試行します。 一方、[ファイル](files.md)の **参照するワークツリー** は、パネルが読み取るチェックアウトだけを変更します。会話の移動、ブランチの切り替え、次のシェルコマンドの実行場所の変更は行いません。 ## ワークツリーを削除する {#remove-worktree} 1. 入力欄のワークツリー一覧で、削除可能なブランチワークツリーの **worktree を削除** を使用します。 2. 対象フォルダーを確認します。ローカルの変更を失ってよい場合を除き、**強制削除(ローカルの変更を破棄)** はオフのままにしてください。 3. 削除を確認し、処理後の一覧を確認します。 削除すると、ワークツリーのローカルフォルダーがなくなります。Git のメインチェックアウトは削除対象にできません。CodeNomad は、影響する会話ファミリーをルートのチェックアウトに戻し、配置を確認してからワークツリーを削除します。アクティブなセッションがあると削除がブロックされる場合があります。削除は未コミットファイルのアーカイブやバックアップではありません。 変更済み/未追跡ファイルのため Git が拒否する場合は、それらを保存または整理してから再試行します。強制削除は、明示的にそれらを破棄します。ディレクトリがロックされている場合は、それを使用中のターミナル、エディター、監視ツール、バックグラウンドプロセスを閉じます。記録が見つからない場合は、ワークツリーを更新し、パスを確認してから再試行してください。診断の共有用に、エラーダイアログには **サニタイズ済みをコピー** があります。サニタイズ済みのテキストも、先に内容を確認してください。 ## Git を初期化する/Git なしで作業する {#initialize-git} 1. Git が利用できる通常のフォルダーで、**ファイル → 変更** または **コミット** を開きます。 2. **Git を初期化** を選びます。追加確認なしで直ちに実行されます。 3. プロジェクトのメタデータと会話が更新されるまで待ちます。CodeNomad の外で Git を初期化した場合は、**更新** を使用します。 初期化では、親ではなく、明示的に開いたフォルダーにリポジトリを作成します。コミットは行いません。失敗した場合は、メッセージを確認し、更新してから再試行してください。応答が不確かな操作は自動的に再実行されません。 バックエンドが Git を実行できなくても、明示的に開いたフォルダーでは、ディレクトリ専用モードで会話と範囲を限定したファイル閲覧を利用できます。ワークツリー操作と Git 初期化には、そのバックエンド上の Git が必要です。[インストール](install.md)と[ファイル](files.md)を参照してください。