2021年7月 (バージョン 1.59)

アップデート 1.59.1: このアップデートでは、これらのissue (英語)に対処しています。

このリリースでは、CVE-2021-26437 (英語)にも対応しています。

ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap


Visual Studio Code 2021 年 7 月リリースへようこそ。このバージョンには、皆様に気に入っていただける多くのアップデートが含まれています。主なハイライトをいくつかご紹介します。

これらのリリース ノートをオンラインで読むには、Updates (code.visualstudio.com) を参照してください。

ライブ配信にご参加ください。8 月 10 日 (火) 午前 8 時 (太平洋時間) / 午後 4 時 (ロンドン) に VS Code チームのライブストリームで、このリリースの新機能のデモをご覧いただき、ライブで質問してください。

Insiders: 最新機能をいち早く試したいですか?Insiders ビルドのナイトリー バージョンをダウンロードして、最新のアップデートをいち早くお試しください。

ワークベンチ

拡張機能

サイズ変更時の拡張機能ビューの改善。次の短いビデオでは、デフォルト幅の拡張機能ビューにすべての詳細が表示されています (以前はアイコン、評価、インストール数が表示されていませんでした)。ビューが縮小すると、小さい拡張機能アイコンが表示され、幅がさらに小さくなると、アイコンと評価が非表示になります。

Dynamic Extensions view

テーマ: GitHub Light Theme (英語)

拡張機能ビューに、拡張機能のカスタム ホバーが表示されるようになりました。このリッチ ホバーには、拡張機能の完全な説明と、拡張機能が無効または推奨されている理由などのその他の役立つ情報が含まれています (上記の画像を参照)。

Custom Extension hover

テーマ: GitHub Light Theme (英語)

拡張機能ペインの [詳細] タブに新しい [ランタイム ステータス] タブが追加され、拡張機能のランタイム ステータスを確認できるようになりました。ステータス情報には、アクティベーション時間、起動時にアクティブ化されるかどうか、警告やエラーがあるかどうかが含まれます。これらの情報の一部は、拡張機能ビューとそのホバー (上の画像を参照) に表示されます。

Extension Runtime Status

テーマ: GitHub Light Theme (英語)

拡張機能ペインの [詳細] タブに、カテゴリ、リソース リンク、および拡張機能のリリース日や更新日などのその他の情報が表示されるようになりました。カテゴリを選択すると、拡張機能ビューにそのカテゴリの他の拡張機能が表示されます。

Extension Details

テーマ: GitHub Light Theme (英語)

設定エディター

設定エディターでオブジェクトの検証がサポートされるようになりました。検証では、JSON ファイルを直接編集するときに発生する可能性のある型エラーをチェックします。

Object setting showing validation errors

配列設定で、編集モードでないときにドラッグ アンド ドロップがサポートされるようになりました。さらに、プロパティ uniqueItemstrue に設定された列挙型配列設定では、ドロップダウンにすべてのオプションではなく、残りのオプションのみが表示されるようになりました。

Drag and drop for array settings

設定エディターは、複数行文字列設定もサポートするようになりました。値は、1 行の入力ボックスではなく、複数行のテキスト領域にレンダリングされます。

An example of a multiline string setting

拡張されたテーマのカスタマイズ構文

以下に示す色のカスタマイズ設定を使用すると、ユーザーは現在のテーマの色をカスタマイズできます。

  • workbench.colorCustomizations
  • editor.tokenColorCustomizations
  • editor.semanticTokenColorCustomizations

複数のテーマを一度にカスタマイズするための新しい構文があります。

    "workbench.colorCustomizations": {
        "[Abyss][Red]": {
            "activityBar.background": "#ff0000"
        },
        "[Monokai*]": {
            "activityBar.background": "#ff0000"
        }
    },

複数のテーマをリストしたり、名前の先頭と末尾に * ワイルドカード文字を使用したりできます。

Jupyter Notebook のサポート

今月、*.ipynb ファイルの読み取りを処理するコードを、Jupyter Notebook (英語) 拡張機能から新しい組み込み拡張機能に移動しました。これにより、Jupyter 拡張機能をフル インストールしなくても、VS Code のクリーン インストールで Jupyter Notebook を開くことができるようになりました。ただし、セルを実行したり、ipywidgets やその他の複雑なレンダラー タイプを使用する出力を表示したりする場合は、Jupyter 拡張機能をインストールする必要があります。

Notebook レイアウトの改善

今回のイテレーションでは、Notebook レイアウトにいくつかの改善を加えました。

  • セルが折りたたまれているときに、セル入力の最初の行がレンダリングされるようになりました。
  • ウィンドウの幅が狭く、すべてのアクションを表示するのに十分でない場合、Notebook エディター ツールバーのアクションはオーバーフロー メニュー ([...]) に移動されます。
  • notebook.undoRedoPerCell のデフォルト値が true に変更されました。

notebook layout improvements

また、コード セルのデフォルト スタイルを更新し、セルを区別しやすくするために背景色を表示するようになりました。テーマは、notebook.cellEditorBackground を使用してこの色をカスタマイズできます。

Example of updated notebook code cells

最後に、設定 notebook.globalToolbarShowLabel を使用して、Notebook ツールバーのテキスト ラベルを切り替えることができるようになりました。

Example of notebook toolbar text

[相対パスをコピー] のパス区切り文字を設定

新しい設定 explorer.copyRelativePathSeparator を使用すると、[相対パスをコピー] アクションを呼び出すときに、パス区切り文字を明示的に設定できます。

使用可能な区切り文字オプションは次のとおりです。

  • auto (デフォルト) - オペレーティング システム固有のパス区切り文字を使用します。
  • / - パス区切り文字としてスラッシュを使用します。
  • \\ - パス区切り文字としてバックスラッシュを使用します。

エディター グループ間でビューの状態を共有

新しい設定 workbench.editor.sharedViewState が追加され、エディター ビューの状態 (エディターのスクロール位置など) がエディター グループ間でどのように共有されるかを構成できるようになりました。

デフォルトでは、この設定は無効になっており、現在の動作が維持されます。エディターをサイドに開き、後でそのエディター グループを閉じてから、再度エディターをサイドに開いた場合、新しいエディター グループを開いているため、ビューの状態は復元されません。ただし、この設定を有効にすると、最新のエディター ビューの状態がすべてのエディター グループ間で保持され、より特定なビューの状態がエディター グループに見つからない限り、使用されます。

以下は、package.json ファイルをサイドで再度開いたときに選択状態が保持される例です。

Shared editor group view state

エディター

折りたたみリージョン間の移動

カーソルの位置を対応する折り畳みに設定する新しいコマンドがあります。

  • 次の折りたたみへ移動 (editor.gotoNextFold)
  • 前の折りたたみへ移動 (editor.gotoPreviousFold)
  • 親の折りたたみへ移動 (editor.gotoParentFold)

コマンドには現在デフォルトのキーバインドがありませんが、[基本設定: キーボード ショートカットを開く] (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) から独自のキーボード ショートカットを追加できます。

インポートを自動的に折りたたむ

設定 editor.foldingImportsByDefault を使用して、インポート ステートメントを自動的に折りたたむようにします。折りたたみ状態は、ファイルが一度開かれると保存されます。この機能は、TypeScript、JavaScript、Java、C#、C++、およびインポート ステートメントに FoldingRangeKind.Imports を注釈する折りたたみ範囲プロバイダーを持つすべての言語で動作します。

選択範囲から検索文字列をシードする

[検索] コントロール設定 editor.find.seedSearchStringFromSelection が拡張され、空でない選択範囲からのみ検索文字列をシードできるようになりました。デフォルトでは、[検索] コントロールが表示されると、エディターは選択範囲または空の選択範囲の周囲の単語を検索キーボードとして使用します。

インライン サジェストの改善

インライン サジェストのレンダリング方法を変更しました。これにより、多くのバグが修正されただけでなく、インライン サジェストを認識したワード ラップも可能になりました。

さらに、非末尾位置での複数行のインライン サジェストがサポートされるようになりました。

インレイ ヒントの改善

インレイ ヒントのレンダリング方法も変更しました。インライン サジェストと同じメカニズムを使用することで、インレイ ヒントもワード ラップで考慮されるようになりました。このメカニズムにより、インレイ ヒントの周りのカーソル ストップも個別に有効になります。

ターミナル

ウィンドウを跨いだターミナルのドラッグ アンド ドロップ

タブ リストまたは 1 つのウィンドウのエディター領域から、別のウィンドウのタブ リスト、エディター領域、またはパネルにターミナルをドラッグ アンド ドロップします。

Drag and drop terminal across windows

子プロセス追跡と終了警告

既存の terminal.integrated.confirmOnExit 設定と新しい terminal.integrated.confirmOnKill 設定は、シェル プロセスの子プロセスを持つターミナルを閉じようとすると、子プロセス追跡を使用して警告を表示します。デフォルトでは、この追跡はエディター領域のターミナルにのみ影響しますが、すべてのターミナルまたはパネル領域のターミナルに警告を表示するように構成できるようになりました。

拡張機能が提供するターミナル プロファイルをデフォルトとして設定

拡張機能によって提供されるターミナル プロファイルをデフォルト プロファイルとして設定できるようになりました。デフォルトのターミナル プロファイルは、ターミナル ドロップダウンの [既定] サフィックスで示されます。

The terminal profile dropdown displays indicates the extension terminal profile is set as the default

下線と取り消し線サポート

統合ターミナルが下線と取り消し線属性をサポートするようになりました。たとえば、Git を構成して (英語)、これらの新しい属性を使用できます。

Git output in terminal with underline and strikethrough text

テーマ: Sapphire Theme (英語)

上記の例では、.gitconfig で次の設定を使用しています。

[color "status"]
  added = green bold
  changed = red bold strike
  untracked = cyan
  branch = yellow black bold ul

サイドのエディター領域にターミナルを作成

アクティブなエディターのサイドのエディター領域にターミナルを作成する新しいコマンド workbench.action.createTerminalEditorSide があります。

アクティブなターミナル タブ インジケーター

テーマは、テーマ キー terminal.tab.activeBorder を使用して、アクティブなターミナル タブを示す垂直線の色を設定できるようになりました。

Highlighted active terminal

terminal.tab.activeBorder が設定されていない場合、色は tab.activeBorder にフォールバックします。

ターミナル タブ アイコンのアニメーションを無効にする

新しい設定 terminal.integrated.tabs.enableAnimation は、ターミナル タブ アイコンのアニメーションを無効にします。タスクの場合、スピナー アニメーションの代わりに再生ボタンが使用されます。

Terminal tab without animation and play button displayed

デバッグ

エディター タイトルの [実行/デバッグ] ボタンの改善

2 月のリリースでは、エディターのタイトル領域の中央 (およびコンパクトな) 場所に [実行] および [デバッグ] コマンドをグループ化するドロップダウン ボタンを導入しました (1.54 リリース ノート (英語)を参照)。ユーザーからのフィードバックに基づいて、最後に実行されたアクションを記憶することで、ドロップダウン ボタンを改善しようとしました。ドロップダウン ボタンには、デフォルト アクション (左) 用とドロップダウン (右) 用の 2 つのクリック ゾーンがあり、選択するとアクションが実行され、新しいデフォルトとして記憶されます。

Debug/run split button shown for Java

ドロップダウンの動作

  • [実行] または [デバッグ] アクションが 1 つしかない場合、ドロップダウン メニューは省略されます。
  • 複数の [実行] または [デバッグ] アクションがある場合、すべてのアクションがドロップダウン メニューに表示され、デフォルトのアクションはドロップダウン メニューの最初のアクションに設定されます (記憶されたアクションがない限り)。
  • デフォルトのアクションは、VS Code の再起動を跨いで特定のワークスペースに対して保持されます。エディターごとに保持されるわけではありません

拡張機能への貢献

Live Preview

Live Preview (英語) 拡張機能 (先月のリリース (英語)) には、いくつかの刺激的な新機能があります。これらには以下が含まれます。

  • 外部プレビュー用の組み込み JavaScript デバッガーとの互換性。
    • [Live Preview: デバッグ プレビューを表示] を実行して試してみてください。
  • 埋め込みブラウザーの改善 (ページ内検索のサポートや、webview DevTools へのクイック アクセスなど)。
  • 自動生成されたファイルのファイルシステム監視。
  • その他多数! 🎉

今月の進捗状況の詳細については、拡張機能のリリース ノート (英語)を参照してください。

Live Preview Debugging

Live Preview new browser features

テーマ: GitHub Dark Theme (英語)

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues (英語) 拡張機能の作業が継続されています。この拡張機能を使用すると、プル リクエストと issue の作業、作成、管理を行うことができます。今月のハイライトの 1 つは、issue での [作業開始] が拡張され、現在のリポジトリ外の issue で作業できるようになったことです。

すべての新機能とアップデートの詳細については、拡張機能のリリース 0.29.0 の変更履歴 (英語)をご覧ください。

Jupyter

Jupyter (英語) 拡張機能の作業が継続されています。すべての新機能とアップデートの詳細については、拡張機能の 7 月リリース の変更履歴 (英語)をご覧ください。

Notebook のネイティブ サポートを可能にするための VS Code のパスの詳細については、最近の Notebook の成熟 (英語) ブログ記事をご覧ください。

インタラクティブ ウィンドウ

Jupyter インタラクティブ ウィンドウは、Notebook インターフェースではなくテキスト ファイルを使用して、Jupyter Notebook を構築および操作するための代替手段を提供します。先月、テーマ、カスタム キーバインド、スニペット、拡張機能との互換性など、より深いワークベンチ統合を特徴とする、アップグレードされたバージョンの Jupyter インタラクティブ ウィンドウをプレビューしました。プレビュー エクスペリエンスに関する GitHub issue を通じてフィードバックを提供してくださったユーザーの皆様に感謝申し上げます。組み込みのインタラクティブ ウィンドウが 1.59 でデフォルトのインターフェースになりました。以前のインターフェースは、設定 "jupyter.enableNativeInteractiveWindow": false の背後で引き続き利用可能であり、今後のリリースで削除される予定です。皆様からのフィードバック (英語)をお待ちしております。

Shift+Enter to run code in the Interactive window

行単位実行

Jupyter Notebook で「行単位実行」機能のサポートに取り組んでいます。この機能は、基本的に、複雑なデバッグ UI なしでセルのコードを 1 行ずつステップ実行できる簡略化されたデバッグ モードです。これはまだ実験段階ですが、"jupyter.experimental.debugging": true を設定し、選択したカーネルに ipykernel のバージョン 6 をインストールしてから、セル ツールバーの [行単位実行] ボタンを選択して試すことができます。

Run by line

Python

Python (英語) 拡張機能では、Python インタープリターのリストの並べ替えを改善しました。以前は、仮想環境がリストの下部に表示されていたため、多くのスクロールや検索が必要でした。プロジェクト ルートにある仮想環境が最初に表示され、その後にグローバルにインストールされた環境が表示されるようになりました。

List of Python interpreters

Dev Containers devcontainer CLI

VS Code 内から Docker コンテナーを操作するための Dev Containers (英語) 拡張機能に、devcontainer コマンド ライン インターフェースが含まれるようになりました。これにより、開発コンテナー内のフォルダーを開いたり (devcontainer open)、開発コンテナー イメージをビルドしたり (devcontainer build) できます。

Remote Development 拡張機能の新機能とバグ修正については、Remote Development リリース ノート (英語)をご覧ください。

プレビュー機能

無題ファイルの自動言語検出

機械学習を使用してコーディングしている言語を検出し、無題ファイルの言語モードを自動的に設定する、無題ファイルの自動言語検出の初期プレビューを発表できることを嬉しく思います。この機能は、オープンソース ML ライブラリである Tensorflow.js (英語) と、GitHub ユーザー @yoeo (英語) による Guesslang (英語) の ML モデルを使用します。

このリリースでは、この機能はデフォルトでオフになっていますが、次のイテレーションでデフォルトにすることを計画しています。有効にするには、次の設定を適用します。

"workbench.editor.untitled.experimentalLanguageDetection": true

機能の動作を確認するには、無題ファイル ([ファイル] > [新しいファイル]) を開き、ソース コードをエディターに貼り付けます。

以下は、Python コードの自動検出の例です。

paste a code snippet right into VS Code and it will detect the language

テーマ: Panda Theme (英語)

さらに、言語ピッカーを開いて、検出されている言語を確認できます。

the language picker also shows the detected languages if there are any

テーマ: Panda Theme (英語)

: 言語検出の信頼性が十分に高くない場合、現在の言語モードのままになり、言語検出の信頼性が高まるまで言語ピッカーに結果は表示されません。

この設定では、自動的に切り替えたくない言語モードを指定するための言語オーバーライドも提供できます。

以下は、Markdown ファイルを自動検出しない例です。

"workbench.editor.untitled.experimentalLanguageDetection": true
"[markdown]": { "workbench.editor.untitled.experimentalLanguageDetection": false }

上記の設定では、無題の Markdown ファイルを編集している間は自動言語検出は実行されません。ただし、他の種類の無題ファイルを変更すると、自動言語検出が実行され、それらのファイルの内容が使用されます。

ML モデルと対話するコードを独自のライブラリに分離し、npm パッケージとして vscode-languagedetection リポジトリ (英語) でリリースしました。

無題ファイルの自動言語検出がどのように動作するかをお知らせください。

TypeScript 4.4

このリリースには、今後の TypeScript 4.4 リリースのサポートが含まれています。TypeScript 4.4 の新機能と改善点の詳細については、TypeScript ブログ (英語)をご覧ください。ツール関連のハイライトをいくつか紹介します。

  • JavaScript ファイルと TypeScript ファイルの両方で、パラメーター名と型のインレイ ヒント。
  • プレーン JavaScript ファイルでの基本的なスペル候補。これらは、TypeScript 言語サービスがエラーと修正に自信を持っている場合にのみ表示されます。

TypeScript 4.4 ナイトリー ビルドの使用を開始するには、TypeScript Nightly (英語) 拡張機能をインストールします。

フィードバックを共有し、TypeScript 4.4 でバグが発生した場合はお知らせください。

Disassembly ビュー

Microsoft C++ チームによる大規模な貢献 (英語)のおかげで、このマイルストーンにデバッグ Disassembly ビューのプレビューを含めることができてうれしく思います。

Disassembly ビューは、エディターのコンテキスト メニューから開いて、アクティブなスタック フレームの逆アセンブルされたソースを表示できます。また、アセンブリ命令のステップ実行と、個々の命令へのブレークポイントの設定をサポートしています。

Disassembly ビューは、アクティブなデバッグ セッション中であり、基盤となるデバッグ拡張機能がそれをサポートしている場合にのみ使用できます。本日現在、Microsoft C++ (英語) および Mock Debug (英語) 拡張機能のみが Disassembly ビューを提供できます。

Disassembly view in Mock Debug extension

技術的な観点から見ると、VS Code の Disassembly ビューの実装は、Debug Adapter Protocol のさらに 4 つの機能をサポートするようになりました。

  • メモリ ロケーションの逆アセンブルされたソースを提供する disassembly リクエスト。
  • スタック フレームの instructionPointerReference プロパティ。
  • ステップ実行リクエストの granularity プロパティ。
  • 命令ブレークポイントと setInstructionBreakpoints リクエスト。

拡張機能の作成

Testing API

昨秋、VS Code でのテスト実行のネイティブ サポートを追加する作業を開始し、今月、テスト関連の API の最初のセットが最終決定されました。これらの API は、以前拡張機能で見られたものよりも、優れた柔軟性、パフォーマンス、および豊富な UX を提供します。詳細については、テスト拡張機能の作成に関するガイド (英語)をご覧ください。

Image showing the test explorer and rich diff view experience

テーマ: codesong (英語)

Test Explorer UI (英語) 拡張機能の既存のユーザーは、testExplorer.useNativeTestingtrue に設定することで、ネイティブ エクスペリエンスを得ることができます。ただし、変換は Test Explorer UI 拡張機能の既存の API の反映であるため、リッチ diff サポートなどの一部の機能は含まれていません。

Testing API を最初に採用した拡張機能の 1 つは、Test Runner for Java (英語) ( Extension Pack for Java (英語) に含まれています) でした。

Java extension using the native test API in VS Code

[新しいファイル] メニューの貢献ポイント

Notebook やカスタム エディターなど、新しいファイル エディターを作成する方法を提供する拡張機能は、新しい file/newFile メニュー貢献ポイントにコマンドを貢献できるようになりました。このメニューには、ようこそページの [新しいファイル...] 項目または [ファイル] メニューからアクセスできます。

New File menu in use via Welcome page

リッチ ステータス バー ホバー

リンクとアイコンを含むリッチ ホバーが、ステータス バー項目 StatusBarItem.tooltip: string | IMarkdownString でサポートされるようになりました。

Rich Status bar hover

  • MarkdownString.supportThemeIcons が true の場合、$(iconName) 構文でアイコンを使用できます。
  • MarkdownString が信頼されている場合は、コマンド リンクを追加することもできます。構文: ([test](command:vscode.newWindow))

ステータス バーの警告色

警告を表すステータス バー項目は、新しく追加された色 statusBarItem.warningBackgroundstatusBarItem.warningForeground を使用できます。

additionalProperties なしのオブジェクト設定

オブジェクト設定が設定エディターでサポートされるためには、オブジェクト設定に additionalPropertiesfalse に設定されている必要があります。そうでない場合、設定エディターは設定を任意の形状にできる複雑な設定として解釈し、ユーザーを設定 JSON ファイルに誘導します。

複数行文字列設定

設定エディターで複数行文字列設定のサポートを追加するには、文字列設定にキーと値のペアとして "editPresentation": "multilineText" を追加します。文字列設定を複数行に変更すると、設定エディターは設定値を 1 行の入力ボックスではなく、複数行のテキスト領域にレンダリングします。

更新された codicon

次の新しいアイコンを codicon ライブラリ (英語)に追加しました。

List of updated icons

  • azure
  • compass-active
  • compass-active
  • compass-dot
  • compass
  • debug-all
  • debug-coverage
  • git-pull-request-closed
  • git-pull-request-draft
  • issue-draft
  • layers-active
  • layers-dot
  • layers

テキスト ドキュメントの変更理由

イベント workspace.onDidChangeTextDocument が発生すると、イベント オブジェクトの新しいプロパティ reason は、テキストの変更がアンドゥ操作またはリドゥ操作によって引き起こされたかどうかを示します。

Language Server Protocol

Language Server Protocol (英語) の新しい次期バージョンが、対応する npm モジュールとともに公開されました。バージョン 3.17 (英語) には、VS Code 自体の最新の変更に沿った、補完項目ラベルの詳細の提案が含まれています。

Debug Adapter Protocol

最終決定された「writeMemory」リクエストと「memory」イベントの提案

writeMemory リクエストが最終決定され、Debug Adapter Protocol (英語) のバージョン 1.48 および対応する npm モジュールで利用できるようになりました。デバッグ アダプターに supportsWriteMemoryRequest 機能がある場合、クライアントは writeMemory リクエストを使用して、指定された場所のメモリにバイトを書き込むことができます。

memory イベントには、次のマイルストーンで DAP に追加される提案 (英語)があります。

提案された拡張機能 API

すべてのマイルストーンには、新しい提案された API が付属しており、拡張機能の作成者はそれらを試すことができます。いつものように、フィードバックをお待ちしています。提案された API を試すには、次の手順を実行する必要があります。

  • 提案された API は頻繁に変更されるため、Insiders ビルドを使用する必要があります。
  • 拡張機能の package.json ファイルに次の行を含める必要があります: "enableProposedApi": true
  • vscode.proposed.d.ts ファイル (英語)の最新バージョンをプロジェクトのソース ロケーションにコピーします。

提案された API を使用する拡張機能を公開することはできません。次のリリースで互換性を損なう変更が行われる可能性があり、既存の拡張機能の互換性を損なうことは決して望ましくありません。

TaskGroup の isDefault

tasks.json ファイルで定義されたタスクには group プロパティが存在し、タスク API を介しても公開されます。group プロパティには isDefault プロパティがありますが、これまで API では利用できませんでした。この提案では、isDefault プロパティを TaskGroup で読み取り専用として公開し、拡張機能がグループのデフォルトであるタスクを読み取ることができるようにしますが、グループのデフォルトを設定することでユーザーの構成をオーバーライドすることはできません。

AuthenticationGetSessionOptions の forceRecreate

これまで、認証セッション オブジェクトを取得するために使用される getSession API には、ユーザーにログインを求める機能がありませんでした。SAML/Single Sign On (SSO) を使用する GitHub などの認証サービスでは、SSO セッションの有効期限が切れるとリソースへのアクセスを失うアクセストークンを使用するため、ログインを求めることが必要です。この提案では、AuthenticationGetSessionOptionsforceRecreate という別のプロパティを追加します。これにより、ユーザーに再度サインインするように求めることができます。createIfNone を指定した場合と同様のモーダル エクスペリエンスがユーザーに表示されます。

エンジニアリング

iframe ベースの WebView がデスクトップのすべての場所で使用されるようになりました

今月、Electron の webview タグ (英語) 要素から通常の <iframe> 要素ベースの WebView への移行を完了しました。これにより、デスクトップと Web での VS Code の WebView の実装がより整合性が取れるようになり、不要になった多くのコードを削除することもできます。

Electron 13 のアップデート

このマイルストーンでは、VS Code に Electron 13 をバンドルするための調査を完了しました。Insiders ビルドでのテストとセルフホスティングにご協力いただいた皆様に感謝申し上げます。これは Electron のメジャー リリースであり、Chromium 91.0.4472.124 が付属しています。このリリースでは Node.js バージョンに変更はなく、v14.16.0 のままです。

Electron サンドボックス サポートの進捗状況

VS Code ワークベンチを Electron のサンドボックス (英語)を有効にする準備を進める中で、Linux で混合サンドボックス モードを有効にし、配布パッケージ deb、rpm、snap、tar アーカイブで CLI 引数 --no-sandbox をバンドルしないようにしました。Chromium には、Linux の多層サンドボックス モデル (英語)があります。Chromium がレイヤー 1 の名前空間サンドボックスを使用できない場合、アプリケーション バイナリとともに配布されるヘルパー バイナリ chrome-sandbox を介して、setuid サンドボックス (英語)を使用しようとします。setuid バイナリが機能するためには、次の条件を満たす必要があります。

  • サンドボックス バイナリは、Chromium プロセスから実行可能である必要があります。
  • SUID であり、他のユーザーから実行可能である必要があります。

deb および rpm パッケージについては、これらの条件を維持することができました。snap については、現在これらの権限を実現することができず、今後の snap パッケージへの対応については、issue #127140 で追跡しています。

tar アーカイブの使用に関してですが、アプリケーションが名前空間サンドボックスを使用できない場合(コンテナ内で実行している場合など)、以下のエラーで失敗します。

FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that chrome-sandbox is owned by root and has mode 4755.

その場合は、以下の2つのオプションのいずれかを使用して動作させることができます。

  • setuid ヘルパーの権限を修正する

    sudo chown root <path-to-vscode>/chrome-sandbox
    sudo chmod 4755 <path-to-vscode>/chrome-sandbox
    
  • --no-sandbox フラグを付けて実行する

スモークテストの改善

各ビルドでトリガーされるスモークテストのスイートを実行しており、VS Code(デスクトップと Web の両方)を起動し、さまざまな UI 要素を検証して、適切な機能を確認しています。今回のマイルストーンでは、このインフラストラクチャに投資し、リリースチェックリストから手動スモークテストを削除できるようにしました。

スモークテストは、すべてのプラットフォーム(macOS、Linux、および Windows)で実行されるようになりました。さらに、VS Code の最新の安定バージョンと新しいリリースの間の回帰を具体的にチェックする、より複雑なスモークテストスイートの 1 つが、各コミットで実行されるように自動化されました。

最後に、自動化された Web スモークテストに使用している素晴らしい Playwright ライブラリのおかげで、トレース機能を有効にし、トレースビューアツールを使用して失敗したスモークテストをリプレイできるようにしました。

注目すべき修正

  • 26425: 変更がない場合、「変更を開く」ボタンは表示されないようにする
  • 100815: リモート WSL に接続すると外部ターミナルが壊れる
  • 106981: ウィンドウズームを -1 に設定するとターミナルカーソルがゴースト化する
  • 127959: デバッガーが一時停止するとデバッグペインが開く
  • 129059: 設定エディターのオブジェクトウィジェットが説明をレンダリングしない
  • 129070: OK ボタンを押すだけではドロップダウン設定値を修正できない
  • 129415: ユーザータスクをシングルファイルモードで実行できない

謝辞

最後になりましたが、今月 VS Code に貢献してくださった以下の皆様に心から感謝申し上げます。

issue tracking への貢献

vscode への貢献

vscode-extension-samples への貢献

vscode-languageserver-node への貢献

vscode-pull-request-github への貢献

vscode-vsce への貢献

debug-adapter-protocol への貢献

language-server-protocol への貢献

monaco-editor への貢献

monaco-languages への貢献