チェンジログ

VelaTermのすべての重要な変更点を、最新のものから順に掲載しています。

v0.1.91が最初の公開バージョンです。それ以前のバージョン番号は内部での試作版であり、ここでは対象外です。

v0.1.108

最新情報
  • Claude、Codex、OpenCode に実験的な会話ビューを追加。ストリーミング応答、思考過程、ツール詳細、権限承認、質問フォームに対応します。初期設定では引き続きターミナルビューを使用します。

  • 各エンジンの機能に応じて、モデル設定、メッセージのキュー登録、割り込み、ファイル補完、画像添付を利用できます。

  • 会話内検索、ファイルリンク、画像操作、会話専用フォントで長い会話を読みやすくしました。リモート履歴は段階的に読み込み、ツール詳細は必要時に取得します。

  • メッセージ送信の受領記録で切断後の結果を照合します。結果が不明な送信は確認待ちのまま保持し、自動で再送しません。

  • 他のセッションを読む vrefer と検索する vsearch を追加。vrefer --ask は読み取りをエージェントに委任します。vorchvstat で複数エージェントの調整と状態確認ができます。

  • メモリエントリでタグ、本文の直接編集、未保存変更の保護、整理設定に対応。履歴インポートの絞り込みと選択、グラフのナビゲーションも改善しました。

  • 公開共有クライアントがアカウントとデバイスの関連付け、範囲を限定した AI 会話へのアクセス、暗号化リレー接続に対応。ゲストの画像アップロードと複雑な MCP フォームは未対応です。

  • Codex の再開 ID を保存済み履歴と照合します。履歴の欠落が確認された場合は空の会話を開始せず、明示的にエラーを表示します。実行中のターミナルには再接続できます。

  • ロールバックはエンジンの機能に従います。Codex は会話のみを戻し、ファイルは復元しません。OpenCode の対象範囲処理とディレクトリ事前確認には既知の制限があります。

  • リリースのバージョン更新時に依存関係の固定バージョンを維持します。各プラットフォームのインストール・更新と実際の AI 連携の受け入れ確認は未実施で、自動テストでは代替できません。

v0.1.107

最新情報
  • 🧠 グローバルメモリ(実験的機能):Claude または Codex が会話をトピック別の共有ウィキにまとめます
  • 🕸️ コードグラフ(実験的機能):作業ディレクトリをインデックス化し、シンボルの関係をたどり、メモリと相互にリンクできます
  • 🔎 セッション中に vknowledge でコードとメモリを検索できます
  • 🖥️ SSH でリモートのデスクトップ版をミラーリングできます。タブ、分割、アクティブなセッションが両方の端末で一致します
  • 🪟 SSH リモート接続先に Windows を指定できるようになりました
  • 📥 プロジェクトフォルダー内の既存の Codex、Claude、OpenCode セッションをインポートできます
  • 🤖 エージェントに OMP を追加
  • 🎚️ vspawn で子セッションのモデルと推論強度を指定できます
  • 🌿 vspawn-tree がコレクション内でも使えるようになり、実行中のワークツリーセッションにブランチアイコンが表示されます
  • 🔤 検索は単語単位の一致を優先し、実際に一致した文字列をハイライトします
  • 🖱️ タブを中クリックすると閉じます
  • ⌨️ macOS のブラウザーで ⌘D と ⌘⇧D による分割ができます
  • 💬 IME の変換中に表示がずれなくなり、変換文字列内にカーソルが表示されます
  • 🪓 メニューからの分割はフォーカス中のウィンドウだけに適用され、分割はすべて logs/split.log に記録されます
  • 📁 リモートのフォルダー選択ダイアログが入力したパスを保持します
  • ℹ️ 情報パネル:開始時刻と稼働時間を同じ行に表示し、macOS ではロードアベレージも表示します
  • 🔑 パスワード入力欄にブラウザー標準の表示ボタンが出なくなりました

v0.1.106

最新情報

ワークスペース

  • サイドバーに「コレクション」を追加:ディスク上のフォルダーに紐づかない最上位コンテナ。 リモートセッションやブラウザページ、一時的なコマンド実行用のターミナルなど、特定のリポジトリに属さないセッションがあります。これまではそうしたセッションもプロジェクト内に置くしかなく、管理しづらい状態でした。コレクションは、ディスク上の実フォルダーを持たない、名前付きの独立した項目です。プロジェクトルートが存在しないため、無関係な操作はクリック後にエラーになるのではなく、最初から非表示になります。「New Worktree Session」や「Move to Worktree…」、新規セッションダイアログのワークツリー選択機能などは、コレクション内では非表示になります。その代わり、新規セッションダイアログにはホームディレクトリをデフォルトとする作業ディレクトリ(Working directory)入力欄が用意され、デスクトップ版ではネイティブのフォルダー選択ダイアログも利用できます。また、ディレクトリを指定せずに開始したセッションは、アプリの起動パス(macOS では /)を引き継ぐのではなく、ホームディレクトリから開始するようになりました。

  • リソースパネルに対象セッションだけでなくマシン全体の状況を表示。 以前はセッション自身のプロセスツリーの CPU とメモリしか表示されず、そのセッションがリソースを消費し尽くしているのか、マシン自体がすでに過負荷なのかを判別できませんでした。今回の更新で、パネルが「THIS SESSION」と「SYSTEM」に分割されました。「SYSTEM」セクションには CPU、メモリ、スワップのプログレスバーが表示され(70% を超えると黄色、90% を超えると赤色に変化)、プラットフォーム固有の情報も 1 行表示されます。macOS ではメモリプレッシャー、Linux ではコア数で正規化されたロードアベレージが表示され、同等の指標がない Windows では何も表示されません。現在のセッション情報のみを確認したい場合は、パネルヘッダーの「system」のチェックを外すことでシステム行を非表示にし、バックグラウンドでのサンプリング処理も完全に停止できます。この設定は保存され、すべてのセッションのパネルに適用されます。

  • Windows と Linux に Alt キーでアクセスできるメニューバーを追加。 macOS にはネイティブのシステムメニューがありますが、Windows と Linux では、設定、アップデート確認、ペイン分割などの操作はタイトルバーのアイコンからしか利用できませんでした。今回、Alt キーを単体で押して離すことで、メニューバーの表示/非表示を切り替えられるようになりました。Alt キーを組み合わせた通常のショートカットはそのまま動作します。ターミナル内では Alt キーが Meta プレフィックスとして機能するため、Alt+B や Alt+F などのショートカットは引き続きシェルへ直接送信され、ターミナルに何も送信しない単体の Alt キー入力のみがメニューバーを起動します。メニューバーには「File」(設定、アップデート確認)、「Terminal」(新規ターミナル、右に分割、下に分割)、「Help」(ウェブサイト、フィードバック、共有)が含まれ、カスタムキーバインドに応じたショートカットのヒントも表示されます。マウスとキーボードの両方の操作に対応しており、Esc キーを押すと開いているメニューが閉じてメニューバーが非表示になり、ターミナルにフォーカスが戻ります。

  • メニューの「Clear notification badges」により、消せなくなっていたバッジを消去可能に。 Dock バッジは、未読セッション数と未応答のプロセス起動確認カードの合計をカウントします。しかし、サイドバーの消去ボタンは未読セッションがある場合にしか表示されず、消去対象もそれらのセッションのみでした。そのため、ウィンドウを閉じたりセッションを削除したりして確認カードが描画できなくなり、未応答のプロンプトカードが取り残された場合、Dock バッジに「1」が表示されたまま消せなくなっていました。新設されたメニュー項目を実行すると、すべてのセッションを既読にし、保留中のすべての起動リクエストを拒否として処理した上で、OS のバッジカウントを直接ゼロにリセットします。これは、アプリを再起動しても Dock バッジのカウントが保持される macOS において特に役立ちます。

  • ファイルの読み込みやシステムの待機中にウィンドウがフリーズしなくなりました。 同期的な Tauri コマンドがメインスレッドで実行されていたため、処理中は UI 全体がフリーズしていました。全 43 個のコマンドを精査したところ、13 個でメインスレッド上の I/O が発生していることが判明しました。具体的には、macOS の通知権限リクエストによる確認待ち(最大 1 分間ブロックされる可能性あり)、長時間実行セッションの録画読み込み(数十 MB を 64 KB 単位で読み取り)、スクリーンショット貼り付け時の直接ディスク書き込み、セッションの作業ディレクトリ取得時の lsof 実行などです。これら 13 個の処理はすべてメインスレッド外で実行されるようになりました。なお、キー入力の処理は高速パスのまま維持されており、影響はありません。

リモートアクセス

  • ホスト側で接続中のリモートクライアントを表示。 セッションミラーリングは双方向で行われるため、リモートクライアント側からホスト側のレイアウトを変更できます。しかし以前は、誰が接続しているかはおろか、接続があるかどうかすらホスト側では把握できませんでした。今回からタイトルバーに「Mirrored by N」バッジが表示されるようになり、クリックすると接続中のクライアント名、IP アドレス、接続日時のリストを確認できます。クライアント名は暗号化ハンドシェイク時に通知されます(指定がない場合は「Unnamed」と表示されます)。

AI エージェント

  • アカウントの使用状況をセッション単位ではなくマシン単位で取得するように改善。 利用制限はアカウント単位で管理されるものですが、以前は各セッションの情報パネルが個別に制限情報を取得していました。そのため、セッションを 10 個開いていると同一のデータに対して 10 回の重複リクエストが発生し、Claude の厳格なレート制限に引っかかってパネルが空白になることがよくありました。今回の変更で、バックエンドの中央ポーラーが単一のスナップショットを保持し、全セッションがそれを参照するとともに、データ変更時に更新を配信する仕組みに刷新しました。また、不要な権限プロンプトを避けるためシステムキーチェーンにはアクセスせず、~/.claude~/.codex~/.grok/auth.json の存在を確認して実際に使用しているプロバイダーのみをポーリングします。スナップショットはディスクに保存されるため、再起動時にも初回ポーリングを待たずにキャッシュされた数値が即座にパネルへ表示されます。また、ノート PC のスリープ復帰時にも次の定期実行を待たずに直ちにデータが更新されます。ポーリングが連続して失敗した場合、バックオフ間隔は最大 8 倍まで自動で延長されます。あわせて設定画面では、分かりにくかった「0 秒」設定を廃止し、更新間隔の入力欄の横に明示的な有効/無効切り替えスイッチを追加しました。

  • 使用状況の更新に失敗した際、最新に見せかけるのではなく「stale」と明示。 以前は更新リクエストが失敗した場合でも、クライアントはキャッシュされたデータを暗黙的に返しつつ、成功したかのように記録していました(タイムスタンプを更新し、エラーをクリアし、バックオフタイマーをリセットしていました)。そのため、実際にはレート制限に達していても、5 分ごとのポーリングを続けながらパネル上は正常に見えてしまっていました。今回の変更により、リクエスト失敗時もキャッシュ値は保持されますが、プロバイダー名の横に黄色の stale バッジが表示されるようになりました。バッジにカーソルを合わせると、失敗時刻、エラーの理由、表示中のデータの取得からの経過時間を示すツールチップが表示されます。「Updated」のタイムスタンプは直近で成功した同期時刻を反映し、レート制限されたサーバーからの retry-after 要求にも従うようになりました(手動更新は引き続き即座に実行できます)。

  • 使用状況パネルにモデル別の週間クォータを表示。 使用状況エンドポイントは、アカウント全体での 5 時間および 7 日間の制限に加え、モデル固有の週間クォータも返します。これまではこの情報が活用されておらず、Fable などのモデルを使用しているユーザーは、モデル固有の残り枠ではなくアカウント全体の総使用量しか確認できませんでした。今回の更新により、これらの内訳行が合計値の下にモデルファミリーごとに分類されて表示されるようになりました。

  • OpenCode セッションを再度開いたときにチャット履歴を復元。 以前はセッションが存在するかどうかを opencode session list で確認していましたが、このコマンドは現在の作業ディレクトリ配下のセッションしか取得しませんでした。デスクトップアプリは起動ディレクトリ(macOS では /)から実行されるため、既存のセッション ID が見つからず、再開しようとしてもエラーが表示されないまま空白のセッションが開いてしまっていました。今回の修正により、特定のセッション ID を直接問い合わせるようになり、コマンドによって明示的に削除が確認された場合にのみ削除済みとして扱うようになりました。その他のエラー時は判定不能としてセッションの再開処理を進めるため、セッション履歴が誤って失われるのを防ぎます。

インターフェース

  • IME(入力方式エディタ)での入力中に入力途中のテキストが表示されるようになりました。 これまで、全 3 つのプラットフォームにおいて、IME(かな漢字変換やピンインなど)で入力中のテキストが Enter キーで確定するまで画面に表示されませんでした。これはカスタム CSS ルールが原因でした。xterm は未確定テキストを制約のないオーバーレイコンテナ内に描画しますが、長いターミナル行を折り返すために追加していた right 制約によって幅が 0 に計算され、さらに overflow: hidden によってテキストが完全に切り取られていました。このルールは削除され、どのテーマとも合わなかったオーバーレイのデフォルト配色(白地に黒)の上書きのみが残されています。また、これに関連する問題も同時に修正されました。xterm は IME 変換候補の位置を合わせるために非表示の textarea をオーバーレイのサイズまで拡張したあと元のサイズに戻さなかったため、その行でマウスクリックやテキスト選択を妨げる不可視のオーバーレイが残ってしまっていました。

  • macOS において、Ctrl ショートカットが Command キーのキーバインドを誤ってトリガーしないように修正。 以前は macOS 上での修飾キーの判定において Cmd と Ctrl が同一視されていました。その結果、標準的なターミナルショートカットがアプリのキーバインドと衝突し、Ctrl+D(EOF)でペインが分割され、Ctrl+W(単語削除)でペインが閉じられ、Ctrl+F、Ctrl+T、Ctrl+O などのショートカットがアプリに横取りされていました。新しいペインは何の通知もなく起動するため、まるでペインが勝手に出現したように見えていました。今回の修正により、macOS のデスクトップアプリではショートカットに Cmd のみを使用するようになり、他のプラットフォーム(および Mac に接続された Web ブラウザ)では Ctrl のみを使用するようになりました。

  • ドロップダウンメニューで項目を選択した直後に再び開いてしまう問題を修正。 親の <label> 要素が行全体のクリックイベントをトリガーボタンへ伝播させていたため、項目を選択した瞬間にドロップダウンメニューが再度開いてしまっていた問題を修正しました。

修正

  • Linux:AppImage が再び起動するようになりました。 0.1.105 の AppImage は、WebKit のヘルパープロセスを起動できず、Ubuntu 22.04 でウィンドウが表示される前にクラッシュしていました。AppImage のパッケージングツールはバイナリ内のリテラル /usr パスを ././ に書き換えるため(インプレースパッチのために文字列の長さを維持する目的)、これらのパスを解決するにはランチャースクリプトで作業ディレクトリを $APPDIR/usr に変更する必要があります。0.1.105 では、子シェルへの環境変数の漏洩を防ぐために導入したカスタムランチャースクリプトが環境変数を転送したものの、このディレクトリ変更処理が抜けていました。ランチャーが正しくディレクトリを変更するよう修正し、再発を防ぐためのビルド時アサーションも追加しました。なお、バージョン 0.1.104 以前はこの問題の影響を受けません。

  • Windows:通知音が再び鳴るようになり、通知をクリックして該当セッションへジャンプできるようになりました。 Windows の通知において、macOS 向けのサウンド識別子が通知プラグインに送信されていました。プラグイン側でその識別子名を解析できなかったため無音になっており、設定に関わらず Windows の通知音が一向に鳴らない状態でした。Windows の通知は 2 回前のリリースで生じた問題への回避策としてプラグインを経由させていましたが、その問題は同じリリース内で既に解決されていました。今回の更新でこの迂回処理を取り消し、通知をネイティブチャンネル経由に戻したことで、通知音とクリック時のセッションジャンプ機能の両方が復元されました。

  • Windows:罫線素片とブロック要素のズレを解消。 ターミナルの枠線がプロポーショナルなフォールバックフォントでレンダリングされ、表示の乱れが生じていました。これに対処した後も、フォールバックフォントがメインのターミナルフォントよりもわずかに狭かったため、ブロック要素(プログレスバーや Claude Code のマスコットなどで使用)の各セルの右端に極細の垂直方向の隙間ができていました。今回の修正により、両方の文字範囲を同梱された JetBrains Mono のサブセットから描画することで、グリフの幅が完全に一致するようになりました。

  • Windows:完全版 Git Bash 環境で git が正常に動作するよう修正。 完全版の Git Bash を正常にインストールしていても、ターミナルで git を実行すると「command not found」と表示され、完全版 Git Bash のインストールを促すプロンプトが繰り返し表示されていました。Git Bash はどのディレクトリツリーで実行されているかを指定された場合にのみ mingw64/binPATH に追加します。シェルランチャーでこのパラメータの指定が欠落していたため、そのディレクトリにのみ存在するバイナリ(gitcurl など)が見つかりませんでした。あわせて、ダウンロードプロンプトでデフォルトの 64-bit を決め打ちするのではなく、ホストシステムのアーキテクチャに適合したインストーラーを選択するようになりました。

  • Windows:ワークツリーの削除が正常に動作し、Kiro フックの再インストール時に重複登録されないよう修正。 ワークツリーの削除コマンドが、削除対象のワークツリーディレクトリ内から実行されていました。Windows では実行中のプロセスのカレントワーキングディレクトリを削除できないため、この操作は常に権限エラーで失敗していました。今回の修正で Git コマンドをメインリポジトリのルートから実行するようになりました。さらに、フック検出ロジックがスラッシュ区切りのパスと Windows のバックスラッシュ区切りのパスをそのまま比較していたため、判定に失敗して再インストールするたびに重複したフックエントリが追加されていた問題も修正しました。

v0.1.105

最新情報

ワークスペース

  • セッションの状態、未読の印、そしてセッションがまだ動いているかどうかを、バックエンドが判断するようになりました。すべてのクライアントが同じ答えを見ます。 これまでは各クライアントが、自分がたまたま観測したものからこれらを組み立てていたため、「未読」は実質「このウィンドウで読んでいない」という意味でしかありませんでした。ブラウザでセッションを読んでもデスクトップ側は未読のままで、しかも動的なステータスフィルターがその行を共有の一覧へ押し戻し続けるので、「ステータスを更新」を押しても消せませんでした。ステータスのイベントも、そのクライアント自身がセッションを起動して初めて登録されていたため、つないだばかりのブラウザは自分が開いたセッションにだけ点を表示し、残りには何も表示しませんでした。バックエンドが、セッションごとに正となる記録を 1 つ持つようになりました――エージェント、その状態、プロセスが生きているかどうか、そして未読フラグです。クライアントが接続または再接続したときにはまとめて問い合わせに答え、変化があればそのつど全員に配信します。クライアントは自分が観測したことを報告し、結論はバックエンドが出します。スマートフォンでセッションを読めばデスクトップの印も消え、つないだばかりのブラウザは一度も開いていないセッションについても正しい点を表示します。これまでフロントエンドにあった調停のルールは、その理由とテストごと移りました――一度でも報告のあったフックは、生の出力から推測した結果を締め出します。出力が続いていることをビジーの根拠にできるのは、エージェントを持ち、Codex ではなく、まだ正となる報告が届いていないセッションだけです。そして 1200ms の保持時間が、始まったばかりのタスクを、すぐ後ろから届く終了イベントに打ち消されないよう守ります。例外は画面の読み取りです。これには描画済みのグリッドが要り、それはクライアントにしか存在しません。ターミナルのサイズを持っているクライアントが読み取った内容を報告し、それを受け入れるかどうかをバックエンドが決めます――ほかのクライアントからの報告は拒否されます。もしこのあたりで不具合が出た場合は、localStorage の vlx-arbitrationfrontend を設定すると、調停が従来のフロントエンド側の仕組みに戻ります。

  • セッションを再起動しても、もう一方のクライアントでタブが閉じられなくなりました。 pty://killed には付随する情報が何もなかったため、受け取った側は再起動と終了を区別できませんでした。すべて終了として扱ってペインを取り除き、そのレイアウトをそのまま相手にも反映していたのです。このイベントは、どのクライアントがなぜプロセスを終わらせたのかを伝えるようになり、再起動であればペインを残したまま新しいプロセスの到着を待ちます。理由が無い、あるいは知らない理由だった場合は、これまでどおり終了として扱います――二度と戻ってこないセッションのペインを開いたままにすると、死んだターミナルが画面に居座ることになり、再起動しようとしていたペインを閉じてしまうより厄介だからです。

  • ワークスペースを復元したばかりのデスクトップにブラウザがつないでも、すべてのセッションが本当に起動されることはなくなりました。 ワークスペースの復元は、プロセスを起動する代わりにプレースホルダーのカードを描きますが、その判断はデスクトップ側にしかありませんでした。ブラウザは相手から届いたレイアウトに従うだけで、「動いていない」と「動いているが、ここでは一度も開いていない」を区別できず、ターミナルをマウントしてしまいます――そしてマウントするとは、起動することです。他人のレイアウトに乗って現れた葉ノードは、その裏にプロセスが無いとバックエンドが答えた場合、プレースホルダーを描くようになりました。自分でセッションを開く操作は、これまでどおり起動する意思とみなします。また、いま見ているターミナルは、プロセスが終了してもカードに置き換わることはありません――そこに出力されたものを、まだ読みたいかもしれないからです。

  • 設定の変更が、ほかのクライアントにすぐ届きます。 正となる設定はもともとバックエンドが持っていましたが、変更しても誰にも知らせていなかったため、もう一方のクライアントが気づくのは次の起動時でした。リモート接続では、これは表示のずれでは済みません。片方のクライアントで「ステータスフィルターを動的に広げる」を切っても、別のクライアントが共有の一覧に行を足し続ければ何の意味もなく、ライブタブの上限が小さいクライアントが、ほかの全員の背後でバックグラウンドのタブを追い出してしまいます。設定を書き込むと、どのキーが変わったかを配信するようになり、各クライアントは起動時と同じ経路でそれを読み直します。したがって、保護された値をリモートの呼び出し元から隠すルールもそのまま働きます――配信されるのはキーの名前だけで、値は決して含まれません。これまで設定を送りも受け取りもしなかったスマートフォンも、この仕組みに加わりました。

  • ブラウザは、自分のレイアウトを復元する前にミラーされたレイアウトを待ちます。 リモートのウィンドウにはレイアウトの出どころが 2 つあります――自分の localStorage にあるものと、ミラーモードでホストから届くものです。そして先に着いた方が、後から来た方に上書きされていました。手元のものを先に描くと、ちらつき以上の代償があります。ターミナルの葉ノードをマウントすることは実際のプロセスを起動することなので、プロセスがすでに無いセッションについては、誰も見ることのない shell を起こしてしまいます。しかもそれは残り続けます。ブラウザはターミナルを終了させず、切り離すだけだからです。ブラウザは、最初の同期が落ち着くまで――最大 2 秒――何も復元せずに待つようになりました。バックエンドが遅い、あるいは届かない場合は、空のウィンドウのまま座り込むのではなく手元のレイアウトに戻ります。スマートフォンと、ミラーを切っているクライアントは、待たずにそのまま進みます。

リモートアクセス

  • SSH 接続で、自分が起動するサービスのミラーモードを有効にできます。 この切り替えはリモートアクセスパネルにありますが、SSH は向こう側のマシンで GUI なしのサービスを起動するため、そこにはクリックするパネルがありません。Option を押しながら "Connect remote" をクリックすると、SSH のフォームに "Mirror UI across clients" のチェックボックスが現れます(既定はオフです)。この値は接続とともに運ばれ、向こう側のマシンのデータベースには書かず、サービスのメモリ上に保持されます。リモートのデスクトップが持つデータベースをそのまま使う場合に、SSH 接続 1 回で誰かのパネルのスイッチが黙って切り替わるべきではないからです。選んだ内容はホストごとに記憶されるので、履歴から同じマシンを選べばそのまま復元されます。すでに動いているサービスを再利用する条件に、バージョンとデータの扱いに加えてミラーモードも一致することが必要になりました――3 つのうちどれかが違えば古いサービスは置き換えられ、その上で動いていたセッションは終わります。そのため、この項目はデータベースの切り替えと並んで Option の下に置いています。

  • ミラーされている側のクライアントは、そうと分かるようになりました。 追従している側では、タブや分割が勝手に並び替わるのに、その変化がどこから来たのかを説明するものが画面に何もありませんでした。タイトルバーに Mirrored のバッジが出るようになり、カーソルを乗せると説明が表示されます。ホスト側には出ません――スイッチを持っているのはそちらだからです。

  • 手元のマシンとターミナルが動いているマシンとの間でファイルをやり取りできるようになりました。 リモートアクセスでは相手側のファイルを見ることはできても、持ち帰る手段も置いてくる手段もなく、ターミナルでコマンドを打つしかありませんでした。ファイルパネルのコンテキストメニューにダウンロード、ヘッダーにアップロードが加わり、デスクトップからフォルダーの行へファイルをドラッグしても送れます。どちらの方向も他の機能と同じ認証済み接続を通るため、ローカルネットワークのブラウザーからでも、スマートフォンからでも、リモート接続ウィンドウからでも同じように使えます。転送は分割して進み、ツリーの下の一覧に進捗が出ます。別のパネルを見ている間も転送は続きます。ダウンロードはごく普通のダウンロードリンクで、処理はブラウザー自身のダウンロードマネージャーが行います。ディスクへ流し込みながら保存し、速度と残り時間を表示し、一時停止と再開もできます。ファイルの大きさを問わず、どのブラウザーでも、スマートフォンでも同じです。リンクにはそのファイル 1 つのために発行され数分で失効するチケットが載っています。このサーバーは資格情報をヘッダーで扱いますが、リンクをたどるブラウザーはヘッダーを送らないためです。アップロードはまず一時的な名前で書き込み、すべて転送し終えてから正式な名前に変更するので、途中で中断しても中途半端なファイルが残ることはありません。同名のファイルがすでにある場合は、転送を始める前に拒否します。アップロードは速度と残り時間を表示し、接続が切れても終わりにはなりません。失敗したブロックは間隔を空けながら約 1 分間再試行し、そのつど「一時ファイルが実際どこまで届いているか」をサーバーに尋ねます。すでに書き込まれたかもしれないブロックを送り直したりはしません。あきらめた場合もそのバイト列は残ります。同じファイルを同じフォルダーにもう一度ドラッグすれば続きから再開し、再読み込み後でも同じです。途中のファイルを捨てるのはキャンセルしたときだけです。

AI エージェント

  • Antigravity と Copilot のセッションが、最初のメッセージから名前を付けられるようになりました。 どちらも自動の名前付けから漏れていたため、サイドバーに「Antigravity 1, 2, 3」という行が並んでいました。Antigravity のフックイベントにはユーザーの文章がまったく含まれず、会話 ID とトランスクリプトのパスだけが入っているので、最初のメッセージはトランスクリプトから読み取るようにしました。その後ろに続くメタデータのかたまりは、タイトルには入れません。Copilot のイベントにはイベント名すら無く、形で見分けるしかないため、プロンプトがあってツール名が無い本文を送信とみなすようにしました。これで、セッションの起動時に渡すプロンプトやツールの呼び出しは、正しくタイトルから外れます。

  • Antigravity のセッションを開き直すと、履歴も一緒に戻ります。 再開には会話 ID が要りますが、起動引数からセッション ID を取り出すパーサーが Antigravity の書き方を認識していませんでした。そのため --conversation=<id> は指し示す先を持てず、開き直したセッションはすべて空の状態で立ち上がっていました。

  • vspawn --yes は、確認カードを出さずにセッションを起動します。 「起動前に確認する」を有効にしている人は、1 回の実行で生まれる子セッションのたびにカードをクリックして進める必要がありました。このフラグ――-y--no-confirm とも書けます――は、その呼び出しに限ってカードを飛ばし、既定の設定でセッションを開始します。設定そのものは変えないので、次にフラグ無しで起動すればまた確認されます。

  • 子タスクのカードのモデル欄に、好きな文字列を入力できます。 これまでは普通のドロップダウンだったため、一覧にあるモデルしか選べませんでした。しかしエージェントが理解できる識別子はそれよりずっと多く、claude-opus-4-6 のような日付入りの名前、ベンダー名を前に付けた名前、手元で設定したエイリアスなどがあります。この欄はテキスト入力になり、既知のモデルは隣のドロップダウンにショートカットとしてぶら下がる形になりました。一覧はあくまで候補であって、許可リストではありません。入力した文字列がそのまま渡され、空欄なら --model 自体を付けず、一覧は入力に応じて絞り込まれ、独自の識別子でどれにも当たらなくなると畳まれます。

インターフェース

  • ドロップダウンを 1 つにまとめ、どこでもそれを使うようにしました。 アプリのあちこちにあるドロップダウンは、同じコードから十数回コピーされたあと、少しずつ食い違っていきました――パネルの背景が 3 種類、影が 4 種類、ホバーの色が 3 種類、トリガーの高さが 26・28・32 ピクセル、そして複数選択の一覧にしか要らないチェックが、選択中の行に付いていました。1 つのコンポーネントが、マージ時のブランチ選択、設定の言語・既定の shell・フォントの選択、エージェントの選択、worktree のダイアログ、新規セッションと復元したセッションのエージェント種別、そしてフォームのモーダルに最後まで残っていたネイティブの select を、まとめて支えるようになりました。あわせて、どれにも無かったキーボード操作も付きます――矢印キーで移動、Enter で決定、Escape で背後のダイアログを閉じずにドロップダウンだけを閉じ、Home と End で端まで飛べます。ステータスバーにある 2 つのメニューは従来どおりで、サイドバーのステータスフィルターはチェックを残しています。あちらは本当に複数選択だからです。

  • リモートアクセスパネルのパスワード欄を表示できます。 ただのパスワード入力欄だったため、入力した内容を目で確かめられませんでした。目のボタンは存在していましたが、接続パネル自身のファイルの中にしかありませんでした。どちらも 1 つのコンポーネントを共有するようになり、表示するかどうかはパネルを閉じるとリセットされます。

  • IP の選択欄が、システムのコントロールに見えなくなりました。 ネイティブの select だったため、WKWebView がシステム標準の見た目をかぶせ、暗いパネルの上では浮いていました――上で置き換えたドロップダウンとまったく同じ問題です。共有のコンポーネントを使うようになり、ラベルも "IP" だけに短くしました。隣の文章がすでに用途を説明しているからです。

修正

  • 更新の確認が、毎回きちんとサーバーに問い合わせるようになりました。 起動したままのクライアントは、最初に見つけたバージョンに固定されていました。0.1.101 を見つけたクライアントは、0.1.104 が出た後も 0.1.101 を案内し続け、「更新を確認」を押しても同じダイアログが開き直すだけでした。以前のコードが、通知がすでに出ている場合はそこで処理を打ち切っていたためです。確認のたびに本当のリクエストを送るようになりました。新しいバージョンが見つかれば画面の通知を差し替え、同じバージョンやダウンロード中の場合はそのままにし、サーバーが更新は無いと答えた場合は古くなった通知を取り下げます――そのバージョンが取り下げられたか、その間に自分で入れたか、どちらかだからです。「手動でダウンロード」のボタンは、ウェブサイトのダウンロードページを開くようになりました。これまではアップデーター自身のパッケージを渡していましたが、あれはその場で展開される形式で、手でインストールすることはできません。

  • ターミナルを素早く破棄したときに、全画面のエラー表示が出なくなりました。 xterm のビューポートは、生成されたときとリセットされたときにスクロール領域の同期を予約しますが、破棄の際にそのどちらも取り消しません。そのため、同じタスクの中で開いて閉じたターミナル――リモート接続の最中にセッションのツリーを組み直すと、まさにこれが起きます――でもそれらのコールバックが走り、すでに片付けられたレンダラーを見つけて例外を投げていました。この例外はタイマーの中から飛んでくるので、try/catch もエラーバウンダリーも届きません。そこで全体で捕まえたうえで、条件を狭く絞っています――スタックかメッセージにその同期処理の名前があり、あわせてレンダラーかその寸法への言及があるものだけを、無害なものとして飲み込み、リクエストのログに書き出します。本物のクラッシュは、これまでどおり全画面の表示を出します。

v0.1.104

最新情報

AI エージェント

  • 子タスクのカードに、各エージェントの実際のモデルと、そのエージェントが理解できる強度フラグが並ぶようになりました。 カードはどのエージェントに対しても --model--effort で起動引数を組み立てていましたが、推論強度をその書き方で表すのは Claude・Kiro・Antigravity だけです――Grok と Zoo は --reasoning-effort、Cline は --thinking と呼びます。それ以外のエージェントで強度を選ぶと、CLI が見たこともないフラグを渡すことになり、セッションは起動に失敗していました。フラグ名も値も、各エージェントが自分で持ち寄るようになりました。モデルの選択欄は、各 CLI が答えられる範囲に従います。一覧を出せるもの(OpenCode、Grok、Crush、Antigravity、Cursor、pi、Kiro)には問い合わせて実際の一覧を並べ、決まった組を持つもの(Claude、Codex、Kimi Code)はその組を並べ、残りは期待される書き方の例を添えたテキスト入力欄になります。インストールされていない、あるいはサインインしていないエージェントは、いつまでも回り続けるのではなくその旨を表示します。「デフォルト」を選ぶと、古い値が残ったままになるのではなく、引き継いだ上書きが解除されるようになりました。強度を選んでも、親セッションから引き継いだモデルが外れることはありません。

  • Kimi Code のセッションから起動した子タスクは Kimi Code のままです。 親のエージェントを引き継ぐ際に参照する一覧から Kimi Code が漏れていたため、その子セッションは黙って既定のエージェントとして戻ってきていました。

ワークスペース

  • グループを作った後からでも worktree に移せます。 worktree はグループの作成時に選ぶきりで、それ以降は固定でした。考えを変えるには、グループを消して作り直すしかありませんでした。グループを右クリックして "Move to Worktree…" を選ぶと、新しい worktree を作る、既存のものを結びつける、すでに結びついているグループの向き先を変える、のいずれもできます。変わるのはグループ自身だけです。すでに中にあるセッションは作成時のディレクトリのままで――動作中のセッションを、その足元にある別のディレクトリへ移すことはできません――その後に作ったセッションが worktree で始まります。

  • ミラーモードがサイドバーのツリー全体を対象にするようになりました。 これまで共有していたのは選択状態と折りたたんだパネルだけで、検索ボックスとステータス・マーカーのフィルターは各クライアントの手元に留めていました。同期すると調べ物をしている人の邪魔になる、という考えからです。この理屈は逆でした。ミラーとは、両方のウィンドウが同じ状態を持つことであって、片方がもう片方のキー入力を再生することではありません――こちらで有効なフィルターは、あちらでも有効です。実際に人の邪魔をするのは、両側が違うツリーを表示していることの方です。サイドバーの表示は丸ごと相手に伝わるようになりました。分割レイアウト、それぞれの表示の名前、検索文字列、ステータスとマーカーのフィルター、そして各自の折りたたみ状態です。スナップショットの形式はバージョン 2 に上がり、古いバージョンのクライアントは 1 フレームの半分だけを適用するのではなくミラーを停止します。アップグレードをまたいで開いたままのウィンドウがあれば、再読み込みしてください。

インターフェース

  • macOS でウィンドウを閉じたときも、終了と同じ確認が出ます。 ⌘Q とメニュー項目はアプリ自身の確認を通っていましたが、赤い閉じるボタンはウィンドウをそのまま破棄していました――そのウィンドウこそ、確認ダイアログが載っている WebView です。そのため、確認がまったく出ないか、「ワークスペースを保存」のチェックボックスもなく文言も未翻訳の、簡素なネイティブの代替が出るかのどちらかでした。3 つのプラットフォームすべてで、答えるまでウィンドウを保持するようになりました。

  • 「ワークスペースを保存」が既定でオンになり、変えた設定はそのまま残ります。 レイアウトを失う方が、要らないスナップショットが 1 つ残るより高くつくので、チェックを入れた状態から始めます。この設定は忘れられることもありました。データベースへの書き込みが 400ms のデバウンスを挟んでいたため、終了がその間にプロセスを終わらせてしまい、次の起動で古い値と突き合わせて変更が元に戻っていたのです。書き込みは終了前に必ず流し込むようになりました。バックエンドが詰まっても確認ボタンが回り続けないよう、600ms の上限を設けています。(FarhadGSRX さんによる貢献です。)

  • リモート接続パネルのパスワードを表示できます。 URL のパスワードと SSH のパスワードのどちらにも目のボタンが付き、伏せ字と平文を切り替えられます。表示するかどうかはその入力欄だけの状態で、パネルを閉じるとリセットされるため、パスワードが画面に出たまま残ることはありません。

  • サイドバーのフィルターバッジが、有効なフィルターをすべて数えるようになりました。 マーカーのフィルターはボタンを光らせるだけで数に入っていなかったため、2 つ有効でもバッジが 1 と表示されることがありました。ステータスとマーカーを合わせて数え、ドロップダウンのチェックと一致するようになりました。ステータスのフィルターが 1 つだけのときは、これまでどおり色付きの点が出ます。

修正

  • macOS の自動更新がまた動くようになりました。 v0.1.103 のパッケージには AppleDouble の随伴エントリ(._VelaTerm.app)が入っていました。アップデーターはパスの先頭要素を取り除くため、これが空のパスになり、アーカイブの展開そのものを拒否していました。両方のアーキテクチャが影響を受けたので、v0.1.103 の macOS ユーザーは全員そこで足止めされていました。パッケージングがこれらのエントリを書き込まないようにしました。

  • アプリのテーマがシステムと違うときも、ネイティブのコントロールがアプリに合わせます。 テーマを適用してもアプリ自身の色が変わるだけで、color-scheme は更新されていませんでした。この値は起動時にシステムの設定から一度読まれるきりで、その後は変わらなかったため、ダークなシステムでライトなアプリを使うと、チェックボックス・ドロップダウン・スクロールバーがダークのままでした。(FarhadGSRX さんによる貢献です。)

  • クローンしたばかりのリポジトリがまたビルドできます。 Rust のクレートはコンパイル時に ../dist を埋め込みますが、dev コマンドはそれを生成しないため、クローンしたてのリポジトリは実行にたどり着く前にコンパイルで失敗していました。ビルドスクリプトが、無ければそのディレクトリを作るようにしました。(FarhadGSRX さんによる貢献です。)

v0.1.103

最新情報

修正

  • Windows で Codex セッションが起動拒否しなくなりました。 Codex セッションを開くたびに unexpected argument '--codex-hook' と表示されて即座に失敗していました。原因はライフサイクルフックの TOML テーブルがコマンドラインで渡される際にスペースとダブルクォートを含んでおり、npm でインストールされた codex.cmd が cmd.exe を通して再解析する過程でクォートが除去され、値がスペースで複数の引数に分割されるためです。Windows ではフック注入をスキップし、状態検出は既存の notify / screen / busy ヒューリスティックにフォールバックします。アイドル・ビジー状態は引き続き報告されますが、フックほど正確ではありません。macOS と Linux は影響を受けず、引き続きフックを使用します。

  • v0.1.102 の Windows IME プリエディット修正をロールバックしました。 中国語・日本語・韓国語入力のプリエディットオーバーレイを復元した修正が、同時に背景色、1px の枠線、角丸を追加していたため、入力中にターミナル内にプリエディットテキストを囲む小さなボックスが表示されるようになっていました——ターミナル内にこのようなボックスは表示されるべきではありません。オーバーレイのサイズ調整、ヘルパーコンテナのジオメトリ、textarea のクリーンアップが相互依存しているため、変更全体をロールバックする必要がありました。Windows で CJK をブラインド入力する問題は未解決のまま issue #6 で追跡中です。

v0.1.102

最新情報

AI エージェント

  • エージェントプリセット――互換性のある CLI を並べて使えます。 これまでエージェントの種類は 1 つの実行ファイルに固定されていたため、フォーク版やナイトリービルド、同じプロトコルを話す別の CLI を追加する手立てがありませんでした。既存の種類の起動引数を書き換えるしかなく、そうすると元の設定は失われます。プリセットは実行ファイル・アイコン・起動引数を自分で持つようになり、新規セッションのメニューに組み込みの種類と並んで表示されます。セッションはどのプリセットから作られたかを記録するため、フォークしても同じ実行ファイルが使われます。デスクトップで作ったプリセットは、ペアリング済みのブラウザやリモートクライアントにもアイコンごと現れます。アイコンは 1 台のマシン上のパスではなくデータとして送られるからです。既存のセッションには手を触れません。以前のバージョンのデータベースも、これまでとまったく同じように起動します。

  • 子タスクの確認カードでモデルと推論強度を選べるようになり、どれか 1 つで答えれば全体に反映されます。 エージェントが子タスクの起動を求めてきたとき、確認カードにモデルの選択と――エージェントが対応していれば――推論強度の選択が並ぶようになりました。どちらも親セッション自身の起動引数から埋まっているので、ふだんはクリック 1 回で済みます。カードのエージェントを切り替えると両方を導出し直すため、ある CLI のモデル名が別の CLI のコマンドラインに紛れ込むことはなくなりました。カードは接続中のすべてのクライアントに表示され、どれか 1 つで答えると残りからは消えます。最初の回答がサーバー側でそのタスクを確保するため、スマートフォンとデスクトップで同じ 1 秒のうちに確認しても、worktree と子セッションは 2 つではなく 1 つだけ作られます。

ワークスペース

  • ミラーモード――すべてのクライアントで同じレイアウトを共有します。 ターミナルの出力はもともと共有されていました(PTY は 1 つ、バイトストリームも 1 本です)。しかしその周りの配置は各クライアントのブラウザストレージにしかなく、LAN 経由で開いたブラウザは自分だけのタブと分割を表示し、片方の画面を並べ替えても、もう片方は何も変わりませんでした。ミラーモードを有効にすると、タブ、分割、アクティブなセッション、サイドバーの選択、折りたたんだパネルがすべてのクライアントに配信され、全員がそれに追従します。切り替えはホスト側のリモートアクセスパネルで操作します。どちら側で並べ替えても相手に反映されます。このウィンドウのレイアウトから外れたセッションは、終了ではなく切り離されるため、相手に追従したせいで誰かのプロセスが止まることはありません。相手のレイアウトを適用しても、手元で入力している人からキーボードを奪うことはありません。スマートフォンはこの対象外です。スマートフォンの 2 階層ナビゲーションはそもそも形の違う UI で、デスクトップの分割ツリーをそのまま持ち込んでも誰の役にも立ちません。

  • 右サイドバーの Git タブが、実用的な Git クライアントになりました。 これまでは変更されたファイルを一覧するだけでした。今はファイル単位でもグループ単位でもステージング・ステージ解除ができ、変更の破棄、コミットの作成(amend にも対応)、コミット履歴と各コミットのファイル・差分の表示までこなします。一覧はステージ済み・変更あり・未追跡・コミット済みのセクションに分かれ、それぞれ折りたためます。パスはリポジトリのルートを基準に扱うようになったため、サブディレクトリで開いたセッションでも表示どおりのファイルが対象になり、detached HEAD の状態は HEAD という名前のブランチとしてではなく、そのまま detached HEAD と表示されます。

インターフェース

  • ⌘Q でも、ウィンドウを閉じたときと同じ確認が出ます。 アプリケーションメニューの終了項目はシステム標準のもので、プロセスをそのまま終了させていました。そのため ⌘Q を押すと、閉じるボタンでは表示される「ワークスペースを保存しますか」の確認が飛ばされ、同じつもりの操作が、やり方によって違う結果になっていました。どちらの経路も 1 つの確認を通るようになりました。確認を表示するウィンドウがその間に再読み込みされたりクラッシュしたりしていた場合は、もう一度 ⌘Q を押すと確認をやり直し、それでも駄目ならネイティブのダイアログに切り替えます。アプリが終了できなくなることはありません。

  • ショートカットの表示が、実際に効くキーと一致するようになりました。 既定のキーはプラットフォームごとに違い、ブラウザは ⌘/Ctrl と文字の組み合わせを自分のために予約しています――⌘D はブックマーク、⌘T は新しいタブ。そのため macOS では、VelaTerm を URL で開くとアプリ自身の ⌘ ショートカットがページまで届きませんでした。通常のブラウザタブでは、どの OS でも Ctrl+Alt の割り当てを使うようになり、デスクトップアプリとリモート接続ウィンドウは ⌘ のままです。ツールチップと空のタブに出るヒントは、ハードコードされた ⌘ の組み合わせではなく、実際に有効な割り当て――自分で変更したものも含めて――を表示します。ターミナルが遮るのはアプリが実際に使っている組み合わせだけなので、操作の割り当てを変えれば、そのキーの扱いも一緒に移ります。

  • フォントのプリセットが Nerd Font と CJK に対応し、インストールされていないフォントを指定するとその旨が表示されます。 プリセット一覧に、よく使われる Nerd Font と CJK のフォントファミリーが加わりました。手で入力したフォント名はそのまま表示したうえで確認され、システムに存在しない場合は、指定とは似ても似つかない既定のフォントに黙って戻すのではなく、設定ページにその旨が表示されます。

  • macOS のテキスト入力欄が、入力した文字を勝手に大文字化・修正しなくなりました。 システムの自動大文字化・自動修正・スペルチェックがアプリ内のすべての入力欄に効いていて、セッション名やコマンドの入力欄でも「npm」が「Npm」になっていました。すべての入力欄でこれらを無効にしました。

Windows

  • 中国語・日本語・韓国語の入力で、変換中の文字と候補ウィンドウがまた表示されるようになりました。 どちらも見えない状態で、手探りで入力して Enter を押すまで結果が分かりませんでした。原因は自分たちの CSS 2 か所です。変換中の文字を載せるオーバーレイの入れ物が幅ゼロに潰れており、オーバーレイの right はその中でどこも指さない値になっていました。候補ウィンドウは OS がオーバーレイの矩形を基準に位置を決めるため、これに巻き込まれていました。オーバーレイはふたたび描画され、アプリのテーマの色が付くようになりました。その土台になっている見えない入力要素も、変換が終わると領域を手放すため、その部分をクリックしたりドラッグしたりしても、これまでのように空の要素に覆われることなく、ターミナルまで届きます。

  • ネイティブのタイトルバーがライト/ダークの設定に追従します。 このアプリはシステムのタイトルバーをそのまま使いますが、Windows は指示がない限りタイトルバーをライトで描くため、ダークの画面の上に白い帯が乗っていました。タイトルバーがアプリの見た目に合うようになり、SSH やリモート接続のウィンドウなど、後から開くウィンドウにも適用されます。「システムに合わせる」を選んだ場合は、値を固定せず OS に制御を戻します。

  • 起動直後に現れる小さな四角が出なくなりました。 多重起動を防ぐプラグインが隠しメッセージウィンドウを作りますが、そのスタイルが約束している透明化を実際には行っていませんでした。そのため Windows がサイズゼロのウィンドウを最小サイズまで広げ、起動中に小さな四角を描くことがありました。これを正しく透明にしました。多重起動の防止そのものの動作は変わりません。

パフォーマンス

  • リモートアクセスの初回表示までの読み込みが大幅に減りました。 静的アセットは必要に応じて圧縮して配信し、キャッシュ検証用の情報を付けるようになったため、2 回目以降のアクセスは再ダウンロードではなく再検証で済みます。言語パックとターミナルのオプション扱いのレンダラーも、最初の転送に含めるのをやめ、必要になったときだけ読み込むようにしました。あわせて、初回の転送量はおよそ 5 分の 1 になりました。

修正

  • 起動された子セッションが、依頼元のセッションと同じ条件で始まるようになりました。 子セッションは親の権限モードも起動引数も引き継いでいなかったため、確認をスキップして動いているセッションの子が確認を求めてきたり、親で指定していたモデルが外れたりしていました。どちらも引き継ぐようになり、指定がなければそのエージェント種別の全体設定――「新しいエージェントセッション」のメニューが使うのと同じもの――にフォールバックします。

  • リモートウィンドウの再接続で「認証に失敗しました」と誤って表示されなくなりました。 ウィンドウが再接続する際、新しい WebSocket と置き換えられる側の WebSocket が競合し、負けた方の後始末が認証の失敗として報告されていました。その結果、まったく正常なペアリングが拒否されたかのようなバナーが出ていました。

  • グループを自分自身の配下へドラッグできなくなりました。 グループを自分の子孫の 1 つにドロップすると、その枝がまるごとツリーから外れ、中のセッションがサイドバーから消えて、データベースを手で修復するまで戻りませんでした。この移動は拒否されるようになりました。

  • 他のツールから起動しても、エージェントの出力の色が保たれます。 ターミナルは自分を起動したプロセスの環境を引き継ぐため、NO_COLORCIFORCE_COLOR=0 を export する IDE やエージェントの実行環境から起動すると、ターミナル自身はフルカラーを名乗っているのに、VelaTerm の中のエージェント TUI がすべて白黒で表示されていました。セッションの開始時に、引き継いだこれらの値を取り除くようにしました。自分の shell の設定ファイルで export した同じ変数はこれまでどおり効きます。その設定ファイルはセッションの中で実行されるからです。

v0.1.101

最新情報

リモートアクセス

  • 共有リンクが使うアドレスを選択できるようになりました――Tailscale アドレスも表示されます。 アドレスリストは従来のプライベート IPv4 レンジのみを受け入れていたため、キャリアグレード NAT レンジ(100.64.0.0/10)からアドレスを割り当てる Tailscale のような VPN メッシュは、サーバーがすでにそれらを通じて到達可能であったにもかかわらず、リモートアクセスパネルとペアリングリンクから黙って除外されていました。これらのアドレスが表示されるようになり、VPN トンネルはデフォルトにならないよう最後にランクされます。パネルの新しい IP セレクター(開始前と実行中の両方で表示)は、各候補をインターフェース名とともにリストし、VPN トンネルをマークします。1 つを選ぶとその URL が先頭に移動し、正確にそのホストでペアリングリンクが再生成されるため、コピーしたリンクは VPN 経由でしかこのマシンに到達できないデバイスでも、URL を手動で編集することなく動作します。ペアリングリンクの下の QR コードはスマートフォンで直接スキャンできます。選択は記憶されます。選択したインターフェースが消えた場合、パネルは選択を忘れずに自動にフォールバックします。サーバー自体は変更されず、すべてのインターフェースでリッスンを続けます。サーバー起動後に現れたアドレス(後から接続した VPN など)を選択すると、次の再起動までペアリングリンクだけが追従するのではなく、コピーされる URL と QR コードも即座に更新されるようになりました。VPN トンネルはすべてのプラットフォームで LAN アドレスの後にランクされ、サーバーが停止中に選んだアドレスは開始後の最初のペアリングリンクに使用され、重複するリンク再生成が新しいリンクを古いリンクで上書きすることもなくなりました。

  • 共有が再起動後も持続します。 ペアリングトークンはサーバーの起動ごとに再生成されていたため、VelaTerm を閉じて再度開くと共有リンクがすべて無効になり、すべてのスマートフォンを再ペアリングする必要がありました。トークン、ペアリング済みデバイス、デバイスブロックリストがデータディレクトリのオーナー専用ファイルに保存されるようになりました。以前にペアリングしたデバイスは再起動後も保存された URL で再接続でき(アクセスパスワードは必要な第 2 要素のまま)、取り消されたデバイスは取り消されたままです。VelaTerm は共有がオンであったことも記憶します。サーバー実行中に終了すると、次回起動時に同じポートで再開されます(デスクトップアプリでも --serve のヘッドレスサーバーでも同様)。自分で停止した場合は何も自動的に開始されません。ポートが使用中などで自動開始が失敗しても、アプリは正常に起動し、リモートアクセスパネルに理由が表示されます。ポートフィールドはデフォルトにリセットされるのではなく、実際に使用したポートを記憶するようになりました。「リンクを再生成」は明示的なキルスイッチのままです。即座に新しいトークンを発行し、すべての古いリンクを無効化し、保存された状態を上書きします。アクセスパスワード自体はディスクに書き込まれません。保存されるのはメモリハードハッシュ(Argon2id)のみです。

セキュリティ

  • ペアリングされたデバイスが共有自体を管理できなくなりました。 ペアリングされたブラウザはデスクトップアプリと同じ管理コマンドを呼び出せました――新しいペアリングリンクの作成(デバイスブロックリストもクリア)、他のデバイスのリストと取り消し、サーバーの停止と再設定。設定ストアはアクセスパスワードのメモリハードハッシュや次回起動時に読み込まれる自動開始設定を含む完全な設定マップをすべてのクライアントに渡していました。管理コマンドはデスクトップアプリと Electron シェル専用になりました。設定 API はペアリングされたデバイスからの読み取りでリモートアクセスキーと Gitea トークンをフィルタリングし、書き込みを拒否します。ペアリングされたデバイスはペアリングの目的――ターミナルセッションとフルシェルアクセス――を維持しますが、パスワード検証値の読み取り、他のデバイスの招待・追放、次回起動で使用するポートのリダイレクトはできなくなりました。保存されたシークレットの読み取り・書き込み・削除コマンド――Gitea トークンと記憶されたホストパスワード――もペアリングされたデバイスでは拒否されます。パスを受け取るコマンド――読み取り、プレビュー、書き込み、作成、名前変更、削除、ファイルの git diff の表示、リポジトリのクローン先フォルダの選択――はシンボリックリンクを先に解決し、ペアリング状態とキーが格納されている VelaTerm 自身のデータディレクトリ内のパスを拒否します。他のすべてのパスは機能し続けるため、リモートのファイルブラウジングと編集は維持されます。テストがパスを受け取るすべてのリモートコマンドを列挙するため、新しいコマンドがこのチェックを気づかれずにすり抜けることはできません。これらの保護がリクエストを拒否した場合、ブラウザは生の英語エラーではなく適切に翻訳されたメッセージを表示するようになりました。

  • デバイスの取り消しやリンクの再生成がデュアルインスタンス構成でも持続するようになりました。 自動開始が有効なヘッドレス --serve サーバーでは、2 つのサーバーインスタンスがそれぞれ保存されたペアリング状態のコピーを保持し、全体を書き戻していました。一方で行われた取り消しや新しいペアリングリンクが、もう一方によって黙って元に戻される可能性がありました。1 つのプロセス内のすべてのインスタンスがデータディレクトリごとに 1 つのペアリング状態を共有するようになりました。取り消しとローテーションはすべての場所で即座に有効になり、ファイルへの書き込みは 1 か所だけが行います。ファイルは実際の再起動をまたいでも真のソースであり続けます。

  • 繰り返しの失敗ログインがスロットルされます。 アクセスパスワードのチェックには意図的に高コストな Argon2id を使用しており、ポートに到達できる誰もが試行できます。1 つのアドレスから 5 回失敗すると、それ以降の試行はハッシュ作業が始まる前に 1 分間拒否されます。ハッシュ計算自体もサーバーのイベントループの外で実行されるようになり、同時検証数にハードキャップがあります。誤ったパスワードの洪水がメモリハードハッシュでサーバーを飽和させたり、接続済みデバイスを遅くしたりすることはできなくなりました。スロットルはメモリ内に存在し、サーバーの再起動でリセットされます。ペアリングトークンとパスワードが実際のバリアのままです。この制限は同じデータディレクトリを使用するすべてのサーバーインスタンスで共有されるようになったため、--serve デュアルインスタンス構成で試行回数が倍になることはなくなりました。パスワードチェックが始まる前に試行が予約されるため、1 つのアドレスからの並行リクエストが制限をすり抜けることもできません。スロットルされたブラウザには、パスワードが間違っているというメッセージではなく、ログイン画面に専用のレート制限メッセージが表示されるようになりました。スロットルはもはや間違ったパスワードのようには記憶されません。一時停止が終われば、ページをリロードせずに次の試行が再び処理されます。途中で中断された試行――パスワードチェック中にタブが閉じられた場合――は、残りの 1 分間アドレスにカウントされ続けるのではなく、予約されたスロットを即座に解放するようになりました。ログイン成功はアドレスの全記録をクリアするのではなく、自分の予約のみを解放します。共有ネットワークアドレスの背後では、1 人が正しくサインインしても攻撃者の試行予算はリセットされず、記録された失敗はその 1 分とともにのみ期限切れになります。

  • ディスクとログのシークレットがより慎重に扱われるようになりました。 ペアリング状態のファイルとエンドツーエンド暗号化キーは、最初の書き込み後に制限するのではなく、最初からオーナーのみ読み取り可能で作成されるようになりました。パスワードハッシュを保持するセッションデータベースもオーナーに制限されます。ヘッドレス --serve はペアリングリンクの長期間有効なシークレットをログに出力しなくなりました。出力がターミナルでない場合、リンクは隠され、代わりにヒントが表示されます。--print-pairing で明示的にオプトバックできます。デバイスレジストリは名前の長さが制限された 32 エントリに上限が設定され、ペアリングされたクライアントが保存ファイルを際限なく成長させることはできなくなりました。取り消しや新しいペアリングリンクの保存が失敗した場合、エラーはログ行ではなく呼び出し元に届くようになりました。自動開始は手動で開始されたサーバーを置き換えなくなり、古い自動開始エラーは自分でサーバーを停止すると消えます。

修正

  • Electron シェルからペアリングを管理できるようになりました。 ペアリングリンクの作成、ペアリング済みデバイスの一覧表示、デバイスの取り消しはデスクトップ(Tauri)コマンドとしてのみ存在していました。Electron シェルとブラウザクライアントが使用する WebSocket ディスパッチャーは「Unknown command」と応答し、リモートアクセスパネルがそこでは動作しませんでした。3 つのコマンドすべてが両方のトランスポートで同じコア関数を通るようになったため、2 つが乖離することはなくなりました。リグレッションテストが新しいディスパッチルートをカバーしています――実行中のローカルサーバーに対する実際のペアリングリンク作成を含みます。

v0.1.100

最新情報

AI エージェント

  • Kiro CLI がファーストクラスのセッションタイプになりました。 Kiro セッションはツリー内に独自のノードを持ち、Kiro 自身のライフサイクルフックによって駆動される正確な Working/Waiting ステータスドット、ターンが終了したときの通知、ノードを再度開いたときの同じ会話の自動再開、起動引数と確認スキップトグル、vspawn を通じたスポーンを得ました――他のエージェントが既に持っていたすべてです。VelaTerm はデフォルトの Kiro エージェントを独自の vlx-term エージェントにクローンし、コピーに observe-only のライフサイクルフックを追加してそれを起動します。ユーザー自身のエージェントファイルは編集されず、プロンプト・ツール・MCP サーバーはそのまま引き継がれます。Kiro にはパーミッションリクエストフックがないため、承認を待っている間もドットは Working のまま表示されます。

修正

  • ターミナルから起動したプログラムが AppImage 自身の環境を引き継がなくなりました(Linux)。 AppImage ランチャーは PYTHONHOMEPYTHONPATHPERLLIBQT_PLUGIN_PATH、GStreamer プラグインパスをバンドルの一時マウントディレクトリに向け、PATHLD_LIBRARY_PATH の先頭にバンドルディレクトリを置いていました。ターミナルは環境全体を起動するシェルに渡すため、システムの python3 がバンドル内で標準ライブラリを探して実行を拒否し、他の動的リンクされたプログラムもシステムのものよりバンドルのライブラリコピーを優先して読み込んでいました。VelaTerm はシェルや外部ツールを起動する前にこれらのバンドルパスを除去するようになり、ユーザーが自分で設定した値はそのまま残ります。APPDIRAPPIMAGE は引き続き見えるため、AppImage から実行されているかどうかをチェックするプログラムは引き続き答えを得られます。AppImage ビルドのみが影響を受けました。deb パッケージ、macOS、Windows は以前と同じ動作です。

v0.1.99

最新情報

ターミナル

  • Shift+Enter が送信ではなく改行を入力するようになりました。 ターミナルには修飾キー付き Enter のエンコーディングがないため、Claude Code や Codex のようなエージェント CLI はプレーンなキャリッジリターンを受信し、まだ書いている途中でプロンプトが送信されていました。VelaTerm は ESC+CR を発行するようになりました。これらのツールが iTerm2 のキーマッピングから期待するのと同じシーケンスであるため、複数行のプロンプトが機能するようになりました――カスタムキーハンドラーが以前はまったくインストールされていなかった macOS を含みます。入力メソッドでのコンポジション中はそのまま残されるため、Enter は引き続き候補ワードを確定します。

プロジェクトと整理

  • 単一セッションのステータスを更新できます。 ステータスフィルタリングされたペインのセッションに Refresh status アクションが追加され、そのペイン自身の条件に対してそのセッションのみを再評価し、追加または削除しながら他のすべてのセッションはそのまま維持します。アクションはメニューが開かれたペインに属するため、再帰的な分割が別のペインのフィルターを借用することはなく、結果はペインごとに保存され、再起動後に復元されます。
  • マークのクリアが 1 クリックで済みます。 既に適用されている絵文字を選択すると削除されるようになったため、マークをクリアするための別のエントリとそのディバイダーがなくなりました。フィルターボタンも絵文字バッジをドロップしました:ハイライトがマークフィルターがアクティブであることを既に示しており、メニューがどのマークかを示します。

修正

  • Linux AppImage のデスクトップ統合がどのマシンでもインストールできるようになりました。 バンドルされたアイコンがビルドマシン上の絶対パスへのシンボリックリンクだったため、アプリケーション自体は正常に実行されるのに、Gear Lever や AppImageLauncher などのツールがアイコンの抽出に失敗していました。リンクは相対パスになりました。公開された glibc 要件も、実行ファイルだけでなくバンドルされたライブラリを測定した結果 2.35 に修正され、デスクトップアプリケーションでサポートされる最も古いリリースは Ubuntu 22.04 になりました。

v0.1.98

最新情報

AI エージェント

  • Grok Build が VelaTerm の第一級エージェントになりました。 Grok 4.5 のインストール、起動、再開に対応しました。安定したセッション ID、公式 lifecycle hooks、正確な作業・権限状態、統合されたトランスクリプト、使用量の詳細、テーマに追従する公式アイコンが、デスクトップ、ブラウザ、モバイルの各画面で一貫して機能します。

プロジェクトと整理

  • プロジェクトサイドバーを独立した作業ビューに分割。 どのツリーペインもさらに下方向へ分割でき、ペインごとの検索、状態・絵文字フィルター、折りたたみ状態、分割比率が再起動後も復元されます。すべてのペインはバックエンドが管理する同じプロジェクトツリーの投影なので、データを重複させずに編集内容が同期されます。
  • コンテキストを保ったままノードをマークして絞り込み。 プロジェクト、グループ、セッションに絵文字マーカーを付けられます。マークされたコンテナはサブツリー全体を表示し、作業中も状態メンバーは安定して維持されます。動的追加と手動更新の両方に対応し、状態と絵文字の条件は和集合として結合されます。
  • 空のプロジェクトをその場で作成。 親ディレクトリを選び、名前を検証して、フォルダーの作成とインポートを一つの流れで完了できます。途中でインポートに失敗しても、重複したディレクトリを作らずインポートだけを再試行します。

インターフェース

  • コミュニティが集まる場所へ VelaTerm を共有。 共有ダイアログは WeChat Moments、Weibo、Xiaohongshu、X、Reddit、Hacker News、LinkedIn、Facebook、Telegram、WhatsApp に対応しました。WeChat には QR コードの手順を用意し、更新ダイアログにも共有案内を追加しました。
  • 細かな操作をより快適に。 一時ターミナルのタブは保存済みセッションにする前でも名前を変更できます。通常の入力欄ではモバイルキーボードの自動大文字化を無効にしつつ、ターミナル入力の動作は変えません。

v0.1.97

最新情報

AI エージェント

  • セッションが「作業中」のまま止まらなくなりました。 Codex はツールの動作とターンの終了をそれぞれ独立した短命プロセスから通知するため、コールバックの到着順が入れ替わり、終了済みのターンが作業中のまま表示されることがありました。自分のターンが終わった後に届いた途中経過の通知を破棄し、さらにセッション終了 hook を追加して、完了イベントを出さずに終了したセッションにも対応します。
  • 中断されたターンが数秒で正常化。 Esc を押した場合やストリームのエラーが発生した場合、Claude と Codex のターンは完了コールバックをまったく送りません。ターミナルの無出力が 6 秒続くと、そうしたセッションを静かに待機中へ修正し、「返信あり」の通知は出しません。

インターフェース

  • macOS で分割ショートカットが確実に動作。 右に分割(Cmd+D)と下に分割(Cmd+Shift+D)をネイティブの Terminal メニューコマンドとしても登録したため、macOS が VelaTerm より先にキー入力を横取りすることはなくなりました。
  • 1 回のキー操作で保存は 1 回だけ。 Cmd+S はグローバルショートカットとフォーカス中のエディタの両方で処理されており、1 回の押下で同じファイルに 2 回書き込むことがありました。

v0.1.96

最新情報

AI エージェント

  • Codex の状態はターミナルの推測ではなく lifecycle hooks を信頼。 新しい Codex セッションでは、公式 lifecycle hooks だけをアクティビティ状態の情報源として使用します。SessionStart ハンドシェイクで連携を確認し、コールバックがない場合は「ステータス取得不可」と表示します。ターミナルの文字列や出力アクティビティが、作業中・要確認・完了の状態を上書きすることもありません。
  • 各ターン後の Codex 使用量をより迅速に更新。 Info パネルはローカルの rollout スナップショットをすぐに表示し、ライブのレート制限と照合します。Codex が最終 token スナップショットを書き込んだ後にも再取得し、以前のセッションから遅れて届いた応答は無視します。

インターフェース

  • macOS でプロジェクトツリーを正確に操作。 仮想行でコンポジタの transform を使わないようにし、スクロールやツリー更新後に WKWebView の古いヒットテスト座標によって、ホバー・クリック・ドラッグが別の行へ送られる問題を防ぎました。

v0.1.95

最新情報

AI エージェント

  • Kimi Code と Zoo Code がセッションツリーに追加。 両エージェントの起動、再開、インストール、設定に対応しました。Kimi は公式 lifecycle hooks で作業中・権限確認・待機状態を正確に報告し、Zoo Code は安定したタスク ID とターミナル検出を利用します。
  • Codex 使用量をリアルタイム更新。 Info パネルから Codex app server に現在のレート制限を問い合わせ、失敗時はローカル rollout スナップショットへフォールバックします。

プロジェクトとターミナル

  • vela <path> でプロジェクトを開く。 パッケージ版で VS Code 風のシェルコマンドをインストールできます。2 回目の起動は重複ウィンドウを作らず、既存の VelaTerm にプロジェクトを渡します。
  • 進捗表示とキャンセルに対応した Git clone。 Git の段階、進捗率、経過時間を表示し、停滞を警告します。キャンセル時は Git のプロセスツリー全体と未完成ディレクトリを安全に片付け、エラーや監査ログから認証情報と query token を除去します。
  • Windows の WSL ターミナル。 インストール済みの WSL ディストリビューションを検出し、PowerShell、cmd、Git Bash と並べて通常のターミナルで選択できます。エージェントは hooks と実行パスの信頼性を保つため Windows ホスト shell を使います。

インターフェースと信頼性

  • バックグラウンドセッションをより明確に管理。 メニューに各セッションの状態を表示し、上限超過ダイアログでは複数タブをまとめて終了できます。
  • 安全な終了と多言語更新ノート。 実行中セッションを停止する前に終了確認を表示し、Codex lifecycle の正確な ID を優先します。自動更新ノートは全組み込み言語に対応しました。

v0.1.94

最新情報

ローカライゼーション

  • ベトナム語インターフェース. 言語選択肢に「Tiếng Việt」が追加され、ベトナム語のシステムロケールでは自動的に選択されるようになりました。

ブラウザ

  • 内蔵ブラウザの起動が高速化. すべてのブラウザタブに、ChatGPT、Claude、Gemini、Googleへのワンクリックショートカットが用意されています。プロジェクトやグループのコンテキストメニューからも、セッションツリーの該当部分に直接永続的なブラウザページを作成できます。

画像と文書

  • macOSでの信頼性の高い画像パスの貼り付け. WebKitがコピーされた画像をファイルとして提供しない場合でも、VelaTermはネイティブクリップボードから画像を読み取り、エージェントのネイティブ画像プレースホルダーに自動的に渡されることなく、引き続きファイルパスとしてアップロードします。リモートウィンドウでは常に画像貼り付け設定が表示され、ファイルパスモードが必要な理由が説明され、利用できないネイティブオプションは無効化されます。

  • ソース文書に画像を貼り付ける. ソースエディターがクリップボードの画像を受け付けるようになりました。保存されたMarkdown文書はassets/の下にその画像を文書と一緒に保存し、移植可能なMarkdown画像構文を挿入します。未保存のドラフトでは画像データが埋め込まれるため、一時ファイルが削除されても画像が失われることはありません。

インターフェース

  • コンテキストメニューが常に表示され、適切な項目がターゲットになる. 右端付近で開かれるメニューは正しく位置合わせされます。ツリーノードを右クリックすると、既存の選択内容を変更せずにメニューターゲットのみがハイライトされ、グループメニューにはそのグループ専用のターミナルが含まれます。

  • よりクリーンな編集機能とステータスラベル. ソーステキストではHTMLコメントなどのシーケンスに対してもう矢印のようなフォントリガチャが表示されなくなり、使用率は明示的に「used」とラベル付けされます。また、ホストのWebViewの関係のないネイティブコンテキストメニューがVelaTerm自身のメニューの後ろに表示されることもなくなりました。

修正事項

  • Codexが通常のターミナル履歴に残る. VelaTermによって起動されるCodexセッションではインラインターミナルモードが使用されるため、Escキーで中断や一時停止を行ってもターミナル画面のバッファが切り替わったり、スクロールバックビューポートが上に移動したりすることはありません。ユーザーのCodex設定はそのまま保持されます。

v0.1.93

最新情報

アップデート

  • インストールする前に変更点を確認できる. 新しいバージョンが利用可能になると、ステータスバーのチップと専用ダイアログでそのバージョンのリリースノートが表示されます。今すぐアップデートする、このバージョンをスキップする、バックグラウンドで引き続きダウンロードする、またはインストーラーダウンロードを手動で開くこともできます。進行状況はリアルタイムで表示され、アプリは終了まで再起動します。複数のバージョンをスキップした場合、最新版のみでなく、その間のすべてのバージョンのノートが一緒に表示されます。

AIエージェント

  • Codexのセッション名はユーザーが自分で設定します. Codexセッションは、最初のメッセージを送信した瞬間から名前が変更されます。これは既存のClaudeセッションと同じ仕組みで、そのためツリーに「Codex 1」や「Codex 2」といった名前が増え続けることはありません。手動で設定した名前は決して上書きされません。

  • vspawnおよびvopenは現在Codexでも動作します. 標準搭載のvspawnvspawn-treevopenスキルは、Claudeのスキルディレクトリに加えてCodexのスキルディレクトリにもインストールされるため、$vspawn <task>$vopen <file>もCodexセッションから利用できます。

  • より信頼性の高いCodexの再開機能. 後で再開するためにCodex会話を保存する際、もはや固定のタイマーに縛られることはなく、最初のメッセージを入力する前に一時停止しても問題なく動作します。また、同じフォルダ内で起動された2つのCodexセッションが互いの会話に結びつくこともなくなります。

  • Codexでのモデルおよびコンテキストの使用状況. Infoパネルでは、Claudeと同様に、Codexセッションにおける現在のモデル、コンテキストウィンドウの使用状況、および実行中のツールが、セッションの実行状況からリアルタイムで表示されます。

リモートおよびターミナル

  • 再設計されたリモートファイルブラウザ. リモートセッション用のディレクトリ選択機能には、入力中の検索、~を使ったパスへのジャンプ、Up / Home / Recentによるナビゲーション、およびインラインの新規フォルダ作成機能が追加されています。

  • リンクはユーザーのマシンで開きます. ターミナル内のリンク——エージェントのログインリンクを含む——をクリックすると、リモートウィンドウからでもユーザーのローカルブラウザで開きます。

  • **「リモートデータベースの再利用」オプションは隠れた場所にあります.**このオプションは「リモートに接続」をOption/Altキーを押しながらクリックしたときにのみ表示され、通常のクリックでは常に独立したデータベースに接続されます。

修正済み

  • **Dockから起動するとツールが見つかります.**DockやFinderからVelaTermを起動しても、もはや簡略化されたPATHの状態にはならず、エージェントが依存するgitやその他のHomebrewでインストールされたツールも正しく配置されます。

  • **新しいターミナルは正しいフォルダ内で開きます.**サイドバーのプロジェクトやグループからターミナルを作成すると、以前は最後に使用していたセッションのフォルダが再利用されていましたが、今ではそのノードのディレクトリ内で開かれます。

v0.1.92

最新情報

修正済み

  • **偽の「SSHリンクが失われました」という警告が出なくなりました.**以前は、ポートフォワーディングの子プロセスが終了すると、トンネルモニターがそれをリンクの切断とみなし、赤いバナーを表示してトンネルを再構築していました。しかし実際にはフォワーディングリスナーはControlMasterプロセス内に存在するため、子プロセスが終了してもフォワーディングは引き続き動作します。UIがリンクが切断されたと表示している間もターミナルは正常に使用可能であり、再構築を行うと不要に正常な接続が破壊されてしまいます。

現在ではリンクのチェックは2段階で行われます。子プロセスが終了したときに、まずVelaTermローカルのフォワーディングポートにまだリスナーがいるかどうかを確認します。リスナーが存在する場合は何も起こりません。ポートもなくなった場合のみ、リンクが切断されたとみなして再構築が行われます。また赤いバナーの表示も遅延処理が施され、最初の再構築試行が失敗した後にのみ表示されるようになったため、数秒以内に回復する一時的な不具合でも警告が表示されなくなりました。

真の切断でも自動的に復旧します。ControlMasterプロセスが終了したり、ネットワークが長時間途切れたりしても、トンネルは自動的に再構築されます。再試行回数が尽きるとバナーが「SSH link is down」に切り替わり、Reconnect nowでセッションが復元され、リモートプロセスは引き続き実行されていて中断したところから再開されます。

v0.1.91

最新情報

**最初の公開リリース.**このバージョンには以下のすべてが含まれています。

AIエージェントを第一級の存在として扱う

  • 9種類のエージェントに対する組み込みサポート — Claude Code、Codex、OpenCode、Copilot CLI、Cursor CLI、Cline、Pi、Antigravity(Gemini CLI)およびcrush。セッションを作成する際にタイプを選択すると、すぐに使用可能な状態で起動します。

  • エージェントのステータスは推測されるのではなく、正確に報告されます。VelaTermは起動時に各ベンダーの公式なコールバックメカニズム(Claude用のhooks、Codex用のnotify、OpenCode用のプラグインなど)を注入するため、あらゆるステータス変更が即座に送信されます。セッションツリーには、作業中、待機中、完了済みだが未確認のステータスを示すドットが表示され、サイドバーではステータス別にフィルタリングでき、ステータスバーではリアルタイムのカウントが表示されます。

  • エージェントが権限決定を必要としたりタスクを完了したりするとシステム通知が発行され、それをクリックするとそのセッションに直接移動できます。コールバックがない場合は画面検出機能が代替として機能します。

  • 会話はあらゆる状況を乗り越えます。各エージェント固有のセッションIDが取得・保存されるため、セッションを閉じたりアプリを再起動したり、アーカイブされたセッションを復元したりしても、存在していることを確認した上で元の会話が再開されます。Claude Code、Codex、Piでは現在の会話を並行セッションに分岐させることもできます。

  • セッションはさらにセッションを生成します。サブタスクは子セッションとなり、エージェント自身またはユーザーによって生成され、必要に応じて隔離されたgitワークツリー内で複数のエージェントが同じリポジトリで同時に作業できます。処理が完了すると、グラフィカルなマージダイアログによってブランチが再び統合されます。

  • インストールされていないエージェントには、推奨コマンドとワンクリックインストールが記載されたインストールカードが表示され、その後自動的にパスが検出されます。サイドパネルにはClaudeとCodexの使用量のクォータが表示され、任意の会話はその場で閲覧したり、完全なMarkdownトランスクリプトとしてエクスポートしたりできます。

セッションの整理

  • プロジェクト、グループ、セッションの3層構造のツリーで、グループのネスト数に制限はなく、セッションの下に子セッションが存在します。ノードは自由にドラッグでき、折りたたみ状態は再起動後も保持されます。

  • 任意のサブツリーをアーカイブできます。データを削除することなくアーカイブパネルに隠し、いつでも復元可能で、会話の続行も可能です。

  • グローバルなコンテンツ検索(⌘⇧F)はSQLite FTS5インデックスによってサポートされ、エージェントのトランスクリプトとターミナル出力の両方を対象としています。左側に結果ツリー、右側にリンク付きプレビューが表示され、セッション間をステップバイステップでナビゲートできます。

まずは本格的なターミナル

  • 実際のPTYs(portable-pty、weztermから)が使用されるため、vim、htop、エージェント自体のTUIもすべて本来通りに動作します。

  • 任意の分割が可能な複数のタブ — 各タブには独自の分割ツリーがあり、水平または垂直に自由に分割できます。

  • ブラウザ風のタブライフサイクル:バックグラウンドのタブは維持され、そのプロセスも継続して実行されます。ライブタブの使用量は設定可能で、その制限を超えると最も古い非アクティブなセッションが終了します。タブを閉じることでプロセスが終了します。

  • 入力優先スケジューリングと出力フレームの結合処理により、負荷がかかっても入力応答性が維持されます。画面を埋め尽くすようなエージェントの動作でも、キーストロークのロスはありません。

  • ターミナル内検索(⌘F)、セッションの録画・再生、画像をエージェントに直接ペーストまたはドラッグで送信でき、Windows上でcmd、PowerShell、Git Bashを自由に切り替えられます。

ターミナルを超えて

  • 任意のセッション内でvopen <file>を実行すると、ターミナルと並んでドキュメントタブがその場で開きます。MarkdownはWYSIWYGエディタとして開き、ベクター形式のPDFにエクスポートされ、画像は組み込みビューアで開かれ、ソースファイルには構文ハイライトが適用されます。

  • 組み込みのブラウザタブはスクラッチタブとして使用したり、プロジェクトツリーに恒久的なノードとしてピン留めしたりできます。

リモートおよびマルチデバイス対応

  • デスクトップアプリはウェブ経由で同じインターフェースを提供し、1セットのライブセッションを共有します。出力ストリームはすべてのクライアントにリアルタイムで送信され、どのクライアントでも入力可能で、デスクトップとブラウザは同じターミナルを見て操作できます。

  • フレーム単位のNaClボックスを用いたエンドツーエンド暗号化、QRコードまたはリンクによるペアリング、個別の無効化を含むデバイス単位の管理が実現されています。

  • ヘッドレスモード:--serveはGUIのないサーバー上で同じサービスを実行し、ブラウザが接続できる状態になります。

  • SSHリモート接続により、リモートマシンもツリーに含まれます。VelaTermはデスクトップから直接接続し、遠隔側に軽量なvela-serverをデプロイし、リモートセッションはローカルセッションと同様に動作します。トンネルは自動的に修復され、再接続されます。

  • モバイル:このサービスにはモバイルウェブビューが含まれ、ネイティブアプリシェル(ネイティブ入力とアクセサリキーバーを備えたxtermレンダリング)も利用可能です。

プラットフォームとUIの完成度

  • macOS、Linux、Windowsに対応しています。

  • 自動更新が実施され、認証済みのmacOSビルドが提供されます。

  • システムのテーマに合わせた明るいテーマと暗いテーマが用意され、実行中のエージェントセッションには標準のターミナル通知(DEC 2031)を通じてテーマ切り替えが通知されます。TUIの色は即座に変更され、再起動は不要です。

  • デフォルトは英語で、システムのロケールに従った10言語が同梱されています。

すべてのリリースには自動更新機能が付属しており、VelaTermは自動的に最新バージョンを提供します。ご自身で入手するには ダウンロードページ.