リポジトリのパスは、それを所有するマシンと組み合わせて初めて意味を持ちます。ノート PC とサーバーの両方に demo フォルダーがあっても、一方を開く操作で別のものが選ばれては困ります。2026年11月9日に Genesis main にマージされた変更は、Projects ページの最近使ったプロジェクト管理をデータベース型の登録簿に置き換え、選択中のノードを通してプロジェクトを開くようにしました。Projects 統合のコミット

再び開いても維持されるパスの識別情報
Virtual Context Tree(VCT、仮想コンテキストツリー)は OS の絶対パスを vct:///projects/demo のような正規のポイントに対応させます。マウントとはその対応で、ポイント、パス、表示名、最終オープン時刻を記録します。リポジトリを移動したりファイルシステムをマウントしたりせず、移動先に安定した識別情報を与えます。登録簿の実装
同じ正規化済みパスを再登録すると、ポイントを保ったまま時刻を更新します。別のパスで末尾名が同じ場合は、必要に応じて接尾辞を付けます。以前のパスが存在せず、新しいパスの表示名とポイントの末尾名が一致する場合は、そのポイントを再利用できます。単に似た名前を同一プロジェクトと推測するのではなく、条件を限定した移転ルールです。識別規則
永続化はタスクストアの SQLite vct_mounts テーブルが担います。VCT プロセスは読み取りキャッシュを持ち、変更時は先にテーブル全体をアトミックに書き込み、その後キャッシュを更新します。保存に失敗すればエラーを返し、以前の状態を維持します。成功時にはノード情報付き通知を送り、保存された識別情報と画面更新をつなぎます。
登録簿には上限があります。既定では新しいマウントを100件保持し、追加で超過すると古いものを除きます。日々の移動先を記録する仕組みであり、過去のすべてのリポジトリを無期限に保存する一覧ではありません。保存と容量
検索とオープンで同じ記録を使う
Projects ページとプロジェクトパレットは登録済みマウントを参照します。プロジェクトの作成・オープン時にはノード対応の mount_project を呼び、一覧を再読み込みします。パス候補はまず登録済みパスを大文字小文字を区別せず検索し、次にファイルシステムの前方一致候補を加えて重複を除きます。覚えているパスの一部から、親ディレクトリをたどり直さず登録済みプロジェクトを探せます。移動操作の変更
現在のプロジェクトの VCT ポイント表示は、読み込み済みマウントから求めます。ラベルを表示するためだけに新しい登録は行いません。「忘れる」操作は登録を消すもので、リポジトリのファイルを削除しません。移動操作と作業内容の変更を区別しています。
選択したホストを処理経路に含める
ローカルと SSH サーバーにそれぞれ demo がある開発者を考えてみます。リモートホストを選ぶと、そのホストの一覧を読み込みます。接続待ちの間はローカル項目をリモート候補として表示せず、一覧を空に保ちます。接続準備が整うまでオープン操作も制限し、サーバー向けの要求がまだローカルのノードで実行されることを防ぎます。リモート優先の読み込みと起動
リモートパスは選択ホストの規則で解釈し、対応する POSIX と Windows の絶対パスを扱います。リモートのオープンは非同期で行い、ディレクトリ確認や登録で LiveView を止めません。後続の修正ではリモートのマウント戻り値を正しく展開し、プロジェクトに VCT ポイントを渡すようにしました。リモートマウントの修正
この例での確認は具体的です。サーバーに再接続し、登録パスを検索して開き、選択ホストと表示ポイントを確認します。ローカルのチェックアウトでも繰り返します。似たフォルダー名があっても、接続待ちのリモート画面にローカルの登録簿が表示されないことを確認できます。
以前のプロジェクト記録を慎重に引き継ぐ
この変更を含む開発ビルドでは、データベース移行が利用可能な旧 projects 行から VCT マウントを生成し、空でない表示名を保ち、末尾名の衝突を処理します。保持するのは最新100件です。空のパスと相対パスは記録して除外します。旧テーブルを読めない場合は移行を中止してロールバックし、読み取り失敗を空一覧と解釈せず、元のテーブルと行を残します。移行保護と上流のテスト範囲
既存環境でこの種のビルドを試す前に、各ホストのアプリケーションデータをバックアップしてください。起動後は、既知のプロジェクトが正しいホストに出ること、開き直しても同じポイントであること、再起動後も一覧が残ることを確認します。移行エラーで起動できない場合は、ストアを消して空一覧にするのではなく、データベースと診断出力を保管して調査します。
この変更は、作業場所を選ぶ時点でプロジェクトの境界を見えるようにします。リポジトリごとのコード履歴を分ける仕組みは、Genesis の複数リポジトリ作業:一つの目標、それぞれの履歴 をご覧ください。