2021年7月 (バージョン 1.59)
アップデート 1.59.1: このアップデートでは、これらの問題に対処しています。
このリリースでは、CVE-2021-26437にも対処しています。
ダウンロード: Windows: x64 Arm64 | Mac: ユニバーサル Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code 2021年7月リリースへようこそ。このバージョンには、皆さんに気に入っていただけるであろう多くの更新が含まれています。主なハイライトは次のとおりです。
- 拡張機能ビューの改善 - 豊富な拡張機能詳細ホバー、新しいランタイムステータスタブ。
- 設定エディターの検証 - オブジェクトベースの設定の編集エラーを素早く見つける。
- ターミナルのドラッグアンドドロップ - ターミナルを複数のウィンドウのエディター領域とパネル領域の両方に移動する。
- 拡張されたテーマのカスタマイズ - 複数のカラーテーマを一度にカスタマイズする。
- Jupyter Notebooksの組み込みサポート - .ipynbファイルをVS Codeで直接開く。
- ノートブックUIの改善 - 折りたたまれたセルの最初の行を表示、セルごとの元に戻す/やり直し。
- テストAPIが完成 - 組み込みのTest ExplorerでVS Codeでテストを実行するネイティブサポート。
- デバッグ逆アセンブリビューのプレビュー - VS Codeで逆アセンブルされたC++コードを表示する。
- Live Preview拡張機能 - JavaScriptデバッグサポート付きのVS Code内のライブHTMLプレビュー。
- Dev Containers devcontainer CLI - 開発コンテナーを操作するためのコマンドラインインターフェース。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
太平洋時間8月10日火曜日午前8時 (ロンドン時間午後4時) にVS Codeチームのライブストリームで、今回のリリースの新機能のデモンストレーションをご覧いただき、ライブで質問してください。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
Workbench
拡張機能
サイズ変更時の拡張機能ビューの改善。次の短いビデオでは、デフォルトの幅を持つ拡張機能ビューがすべての詳細を表示しています (以前はアイコン、評価、インストール数が表示されていませんでした)。ビューが縮小すると、より小さな拡張機能アイコンが表示され、さらに幅が縮小すると、アイコンと評価が非表示になります。

テーマ: GitHub Light Theme
拡張機能ビューは、拡張機能にカスタムホバーを表示するようになりました。この豊富なホバーには、拡張機能の完全な説明と、拡張機能が無効または推奨される理由などの他の有用な情報が含まれています。

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

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

テーマ: GitHub Light Theme
設定エディター
設定エディターは、オブジェクトの検証をサポートするようになりました。この検証は、JSONファイルを直接編集する際に発生する可能性のある型エラーをチェックします。

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

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

拡張テーマのカスタマイズ構文
以下のカラーカスタマイズ設定により、ユーザーは現在のテーマのカラーをカスタマイズできます。
- 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.undoRedoPerCellのデフォルト値が- trueに変更されました。

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

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

相対パスをコピーするためのパス区切り文字を設定する
新しい設定explorer.copyRelativePathSeparatorを使用すると、関連パスをコピーアクションを呼び出すときに、パス区切り文字を明示的に設定できます。
利用可能な区切り文字オプションは次のとおりです。
- auto(デフォルト) - オペレーティングシステム固有のパス区切り文字を使用します。
- /- スラッシュをパス区切り文字として使用します。
- \\- バックスラッシュをパス区切り文字として使用します。
エディターグループ間でビューの状態を共有する
エディターのビューの状態 (例: エディターのスクロール位置) がエディターグループ間でどのように共有されるかを構成するために、新しい設定workbench.editor.sharedViewStateが追加されました。
デフォルトでは、この設定は現在の動作を維持するために無効になっています。エディターを横に開き、後でそのエディターグループを閉じても、再度エディターを横に開くと、新しいエディターグループを開いているため、ビューの状態は復元されません。ただし、この設定を有効にすると、最新のエディターのビューの状態がすべてのエディターグループで保持され、エディターグループにより具体的なビューの状態が見つからない限り、それが使用されます。
以下では、package.jsonファイルを横に再度開いたときに選択状態が保持されます。

Editor
折りたたみ領域間のナビゲーション
対応する折りたたみにカーソル位置を設定するための新しいコマンドがあります。
- 次の折りたたみに移動 (editor.gotoNextFold)
- 前の折りたたみに移動 (editor.gotoPreviousFold)
- 親の折りたたみに移動 (editor.gotoParentFold)
これらのコマンドには現在デフォルトのキーバインドはありませんが、Preferences: Open Keyboard Shortcuts (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) を介して独自のキーボードショートカットを追加できます。
インポートを自動的に折りたたむ
設定editor.foldingImportsByDefaultを使用して、インポートステートメントを自動的に折りたたみます。折りたたみ状態は、ファイルが一度開かれると保存されます。この機能は、TypeScript、JavaScript、Java、C#、C++、およびインポートステートメントにFoldingRangeKind.Importsを注釈付けする折りたたみ範囲プロバイダーを持つすべての言語で機能します。
選択範囲から検索文字列をシードする
検索コントロール設定editor.find.seedSearchStringFromSelectionが拡張され、空でない選択範囲からのみ検索文字列をシードするのをサポートするようになりました。デフォルトでは、検索コントロールが表示されるとき、エディターは選択範囲または空の選択範囲の周りの単語を検索キーワードとして使用します。
インラインサジェストの改善
インラインサジェストのレンダリング方法を変更しました。これにより、多くのバグが修正されるだけでなく、単語の折り返しがインラインサジェストを認識するようになりました。
さらに、末尾以外の位置での複数行のインラインサジェストがサポートされるようになりました。
インレイヒントの改善
インレイヒントのレンダリング方法も変更しました。インラインサジェストと同じメカニズムを使用することで、インレイヒントも単語の折り返しで考慮されるようになりました。このメカニズムにより、インレイヒントの周りに個別のカーソル停止も可能になります。
ターミナル
ウィンドウ間でターミナルをドラッグアンドドロップする
あるウィンドウのタブリストまたはエディター領域から、別のウィンドウのタブリスト、エディター領域、またはパネルにターミナルをドラッグアンドドロップできます。

子プロセスの追跡と終了時の警告
既存のterminal.integrated.confirmOnExitと新しいterminal.integrated.confirmOnKill設定は、子プロセスの追跡を使用して、シェルプロセスの下に子プロセスがあるターミナルを閉じようとするときに警告を表示します。デフォルトでは、この追跡はエディター領域のターミナルのみに影響しますが、すべてのターミナルまたはパネル領域のターミナルに警告を表示するように設定できるようになりました。
貢献されたターミナルプロファイルをデフォルトとして設定する
拡張機能によって貢献されたターミナルプロファイルをデフォルトプロファイルとして設定できるようになりました。デフォルトのターミナルプロファイルは、ターミナルドロップダウンのDefaultサフィックスで示されます。

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

テーマ: 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を使用して、アクティブなターミナルタブを示す垂直線の色を設定できるようになりました。

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

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

ドロップダウンの動作
- 実行アクションまたはデバッグアクションが1つしかない場合、ドロップダウンメニューは省略されます。
- 実行アクションまたはデバッグアクションが複数ある場合、すべてのアクションがドロップダウンメニューに表示され、デフォルトアクションはドロップダウンメニューの最初のアクションに設定されます (記憶されているアクションがない場合)。
- デフォルトアクションは、VS Codeの再起動後も特定のワークスペースに対して保持されます。エディターごとに保持されるわけではありません。
拡張機能への貢献
ライブプレビュー
Live Preview拡張機能は、先月リリースされ、いくつかのエキサイティングな新機能が含まれています。これには以下が含まれます。
- 外部プレビュー用の組み込みJavaScriptデバッガーとの互換性。- Live Preview: Show Debug Previewを実行して試してみてください!
 
- "Find in Page"サポートやwebvivewDevToolsへのクイックアクセスなど、組み込みブラウザーの改善。
- 自動生成されたファイルのファイルシステム監視。
- その他多数! 🎉
今月の進捗状況の詳細については、拡張機能のリリースノートをご覧ください。


テーマ: GitHub Dark Theme
GitHub Pull Requests and Issues
プルリクエストとイシューの作成、管理、作業ができるGitHub Pull Requests and Issues拡張機能の開発は継続中です。今月のハイライトの1つは、イシューで作業を開始する機能が拡張され、現在のリポジトリ外のイシューでも作業できるようになったことです。
すべての新機能と更新については、拡張機能の0.29.0の完全な変更ログをご覧ください。
Jupyter
Jupyter拡張機能の開発は継続中です。すべての新機能と更新については、拡張機能の7月の完全な変更ログをご覧ください。
VS Codeがノートブックのネイティブサポートを可能にするまでの道のりについて詳しく知りたい場合は、最近のブログ記事Coming of Age of Notebooksをご覧ください。
インタラクティブウィンドウ
Jupyterインタラクティブウィンドウは、ノートブックインターフェースの代わりにテキストファイルを使用してJupyterノートブックを構築および操作する別の方法を提供します。先月、テーマ、カスタムキーバインド、スニペット、拡張機能との互換性など、より深いワークベンチ統合を特徴とするJupyterインタラクティブウィンドウのアップグレード版をプレビューしました。プレビューエクスペリエンスに関するGitHubイシューを通じてフィードバックを提供してくださったユーザーの皆様に感謝いたします。組み込みのインタラクティブウィンドウは、バージョン1.59でデフォルトのインターフェースになりました。以前のインターフェースは、設定"jupyter.enableNativeInteractiveWindow": falseの背後に引き続き利用できますが、今後のリリースで削除される予定です。皆様からのフィードバックをお待ちしております。

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

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

Dev Containers devcontainer CLI
VS Code内からDockerコンテナーを操作するためのDev Containers拡張機能に、devコンテナー内のフォルダーを開く (devcontainer open) またはdevコンテナーイメージをビルドする (devcontainer build) ためのdevcontainerコマンドラインインターフェースが追加されました。
新しいRemote Development拡張機能の機能とバグ修正については、Remote Developmentリリースノートをご覧ください。
プレビュー機能
無題ファイルの自動言語検出
機械学習を使用してコーディングしている言語を検出し、無題ファイルの言語モードを自動的に設定する、無題ファイルの自動言語検出の初期プレビューを発表できることを嬉しく思います。この機能は、オープンソースのMLライブラリTensorflow.jsと、GitHubユーザー@yoeoによるGuesslangのMLモデルを使用しています。
このリリースでは、この機能はデフォルトでオフになっていますが、次のイテレーションでデフォルトにする予定です。有効にするには、次の設定を適用してください。
"workbench.editor.untitled.experimentalLanguageDetection": true
この機能を実際に見てみるには、無題ファイル (ファイル > 新規ファイル) を開き、ソースコードをエディターに貼り付けます。
以下は、Pythonコードの自動検出の例です。

テーマ: Panda Theme
さらに、言語ピッカーを開くことで、どの言語が検出されているかを確認できます。

テーマ: 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でバグが発生した場合はお知らせください。
逆アセンブリビュー
Microsoft C++チームによる多大な貢献のおかげで、今回のマイルストーンでデバッグ逆アセンブリビューのプレビューを組み込むことができました。
逆アセンブリビューは、エディターのコンテキストメニューから開くことができ、アクティブなスタックフレームの逆アセンブルされたソースを表示し、アセンブリ命令のステップ実行や個々の命令へのブレークポイントの設定をサポートしています。
逆アセンブリビューは、アクティブなデバッグセッション中で、基となるデバッグ拡張機能がそれをサポートしている場合にのみ利用できます。現在、MicrosoftのC++およびMock Debug拡張機能のみが逆アセンブリビューにフィードできます。

技術的な観点から、VS Codeの逆アセンブリビューの実装は、Debug Adapter Protocolのさらに4つの機能をサポートするようになりました。
- メモリ位置の逆アセンブルされたソースを提供するdisassemblyリクエスト。
- スタックフレームのinstructionPointerReferenceプロパティ。
- ステップ実行リクエストのgranularityプロパティ。
- 命令ブレークポイントとsetInstructionBreakpointsリクエスト。
拡張機能作成
テストAPI
昨年秋、VS Codeでテストを実行するためのネイティブサポートの追加に取り組み始め、今月、テスト関連APIの最初のセットが完成しました。これらのAPIは、これまでの拡張機能で提供されていたものよりも、柔軟性、パフォーマンス、UXが向上しています。テスト拡張機能の作成ガイドをチェックして、詳細を確認してください。

テーマ: codesong
Test Explorer UI拡張機能の既存ユーザーは、testExplorer.useNativeTestingをtrueに設定することでネイティブエクスペリエンスを利用できます。ただし、変換はTest Explorer UI拡張機能の既存APIを反映しているため、リッチ差分サポートなどの一部の機能は含まれていません。
テストAPIを採用した最初の拡張機能の1つは、Extension Pack for Javaに含まれるMicrosoftのTest Runner for Javaでした。

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

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

- MarkdownString.supportThemeIconsがtrueの場合、- $(iconName)構文でアイコンを使用できます。
- MarkdownStringが信頼されている場合、コマンドリンクも追加できます。構文:- ([test](command:vscode.newWindow))。
ステータスバーの警告色
警告を表すステータスバー項目は、新しく追加された色statusBarItem.warningBackgroundとstatusBarItem.warningForegroundを使用できます。
additionalPropertiesのないオブジェクト設定
設定エディターでオブジェクトがサポートされるには、オブジェクト設定のadditionalPropertiesをfalseに設定する必要があります。そうでない場合、設定エディターは設定を任意の形状を取ることができる複雑な設定として解釈し、ユーザーを設定JSONファイルに誘導します。
複数行の文字列設定
設定エディターで複数行の文字列設定をサポートするには、文字列設定に"editPresentation": "multilineText"をキーと値のペアとして追加します。文字列設定を複数行に変更すると、設定エディターは設定値を単一行の入力ボックスではなく、複数行のテキストエリアでレンダリングします。
更新された codicon
当社のcodicon ライブラリに以下の新しいアイコンを追加しました。

- Azure
- コンパス - アクティブ
- コンパス - アクティブ
- コンパス - ドット
- コンパス
- すべてをデバッグ
- デバッグカバレッジ
- git-pull-request-closed
- git-pull-request-draft
- issue-draft
- レイヤー - アクティブ
- レイヤー - ドット
- レイヤー
テキストドキュメント変更理由
イベント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には、ユーザーにログインを要求する機能がありませんでした。GitHubのような認証サービスでは、SSOセッションの有効期限が切れるとリソースへのアクセスを失うアクセスSAML/シングルサインオン (SSO) を使用しているため、ログインプロンプトが必要です。この提案では、AuthenticationGetSessionOptionsにforceRecreateという別のプロパティを追加し、ユーザーに再度サインインを要求できるようにします。createIfNoneを指定した場合と同様のモーダルエクスペリエンスがユーザーに表示されます。
エンジニアリング
iframeベースのウェブビューがデスクトップでどこでも使用されるように
今月、Electronのwebviewタグ要素から通常の要素ベースのウェブビューへの移行を完了しました。これにより、VS Codeのデスクトップとウェブ全体でのウェブビューの実装がより密接に連携し、冗長になった多くのコードを削除することも可能になりました。
Electron 13への更新
このマイルストーンでは、Electron 13をVS Codeにバンドルするための調査を完了しました。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パッケージへの対応として問題 #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 (デスクトップとウェブの両方) を起動し、さまざまなUI要素を操作して適切な機能を確保します。このマイルストーンでは、リリースチェックリストから手動スモークテストを削除できるように、このインフラストラクチャに投資しました。
スモークテストは、すべてのプラットフォーム (macOS、Linux、Windows) で実行されるようになりました。さらに、VS Codeの最後の安定版と新しいリリース間の回帰を具体的にチェックする、より複雑なスモークテストスイートの1つが、各コミットで自動的に実行されるように自動化されました。
最後に、自動ウェブスモークテストに使用している素晴らしいPlaywrightライブラリのおかげで、そのトレース機能を有効にし、トレースビューアツールを使用して失敗したスモークテストをリプレイできるようにしました。
注目すべき修正点
- 26425: 変更がない場合は「変更を開く」ボタンを表示しない
- 100815: リモートWSLに接続されていると外部ターミナルが壊れる
- 106981: ウィンドウズームが-1に設定されている場合のターミナルカーソルのゴースト現象
- 127959: デバッガーが一時停止するとデバッグペインが開く
- 129059: 設定エディタのオブジェクトウィジェットが説明をレンダリングしない
- 129070: OKボタンを押すだけでドロップダウン設定値を修正できない
- 129415: ユーザータスクが単一ファイルモードで実行できない
ありがとうございます
最後に、今月 VS Code に貢献してくださった以下の皆様に、心からの感謝を申し上げます。
問題追跡への貢献者
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- @CodeCrazy-ywt
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
vscodeへの貢献者
- @71 (Grégoire Geis): platform/configuration: 設定パーサーで空のキーが無視されるのを修正 PR #128909
- @adaex (Aex): eslintrc.json seti-uiアイコンのサポートを追加 PR #123404
- @alanrenmsft (Alan Ren)
- 最大呼び出しスタックサイズに到達する問題を修正 PR #119929
- アクセシビリティ要件を満たすためにドロップダウン矢印を大きくする PR #127839
 
- @alielbashir (Ali Elbashir): GitHubスペースリンクのtypoを修正 PR #128120
- @andrewbranch (Andrew Branch): [typescript-language-features] suggest.allowIncompleteCompletionsを追加し、トリガーの種類をTSサーバーに渡す PR #127673
- @door-bell (Tim): エディターとターミナル以外のリストスクロール感度設定を追加 PR #110059
- @galexite (George White): .ixxをC++拡張子の候補として追加 PR #127962
- @headerjson: TaskGroup APIにisDefaultを追加 PR #128596
- @jeanp413 (Jean Pierre)
- 「Open Editors」および「Source Control」ビューでキーボードによる複数選択が機能しない問題を修正 PR #128284
- エクスプローラーツリーからターミナルへフォルダをドラッグしてもフォルダパスがコピーされなくなった問題を修正 PR #128419
- 「ターミナルでPythonファイルを実行」で、ターミナルエディタが使用されているのにパネルが開く問題を修正 PR #128866
 
- @joshspicer (Josh Spicer): welcomePage.contribution.ts のtypo PR #127893
- @karolz-ms (Karol Zadora-Przylecki): dockercompose言語のデフォルトを改善 PR #128550
- @kieranlblack (Kieran Black): コピーセパレータを変更する設定を追加 PR #101197
- @kilbouri (Isaac Kilbourne): コミットメッセージ PR #127849
- @Kingwl (Wenlu Wang)
- TSインラインヒントを追加 PR #113412
- モナコ用インレイヒントAPIを公開 PR #127391
- インレイヒントはデフォルトでeditor.fontFamilyを使用 PR #128181
- インポートスパンの自動折りたたみを追加 PR #128978
 
- @movermeyer (Michael Overmeyer)
- すべての時間ベースのスニペット変数を同じ時間を使用して解決する PR #128571
- コンストラクタからプライベートフィールドを削除する PR #128857
 
- @nickdelja (Nick Delja): 軽微なtypoを修正 PR #129439
- @NSExceptional (Tanner Bennett): macOSでより具体的なファイルタイプ説明を提供する PR #117713
- @shantaram3013 (Siddharth Singh): walkthrough: 非推奨のプロパティ名を更新 PR #129041
- @SNDST00M (SNDST00M: M.U.N.I.N): 拡張されたテーマカスタマイズ構文 PR #122969
- @ssigwart (Stephen Sigwart): 折りたたみジャンプ (親および同じレベルの次/前) を追加 PR #128450
- @suema0331: Fix#122454: 長いターミナルタイトルを切り詰める PR #122620
- @timfenney (Tim Fenney): コマンドラベルをキーボードショートカットに追加 PR #125563
- @usjpin (Utkarsh Singh): タイプ中にアクティビティバーホバーを非表示にする PR #128362
- @xisui-MSFT
- 逆アセンブリビュー PR #125737
- 逆アセンブリビューのフォーカス問題を修正 PR #129616
- 逆アセンブリビューの初期ビューサイズを大きくする PR #129651
- 逆アセンブリビューを開く は表示されるが使用不可にする PR #129726
 
vscode-extension-samplesへの貢献
- @gjsjohnmurray (John Murray): fix #400 tree-view-sample: package.json, package-lock.jsonを更新 PR #401
- @jabbera (Mike): launch.jsonに--enable-proposed-apiを追加 PR #346
- @james1293: 余分なparseTreeを削除 PR #406
vscode-languageserver-nodeへの貢献者
- @perrinjerome (Jérome Perrin): 「リクエストが失敗しました」ダイアログが閉じられない問題を修正 PR #787
vscode-pull-request-githubへの貢献者
- @binsee: フォークの詳細チェックを修正 PR #2806
- @iChenLei (ChenLei): chore: 非推奨のvscode-testを@vscode/test-electronに置き換え PR #2842
vscode-vsceへのコントリビューション
- @legomushroom (Oleg Solomka): azure-devops-node-apiバージョンを更新 PR #589
debug-adapter-protocolへの貢献者
- @NipunaRanasinghe (Nipuna Ransinghe ): Ballerinaデバッグアダプター情報を更新 PR #201
language-server-protocolへの貢献者
- @leegbestand: jsonrpcReservedErrorRangeEndのコメントを更新 PR #1315
monaco-editorへのコントリビューション
- @Surm4 (Marcin): Playgroundで公開された色サンプルを更新 PR #2561
monaco-languages への貢献
- @alefragnani (Alessandro Fragnani): Pascal言語にstrictキーワードを追加 PR #153
- @jonatanklosko (Jonatan Kłosko): GitHubスタイルのコードブロックでフェンス閉じを適切にトークン化する PR #149
- @lofcz (Matěj Štágl): ダッシュ記号を含むタグのrazor + liquidレンダリングを修正 PR #150