2021年7月 (バージョン 1.59)
Update 1.59.1: このアップデートは、これらのイシューに対応しています。
このリリースはCVE-2021-26437にも対応しています。
ダウンロード: Windows: x64 Arm64 | Mac: Universal Intel シリコン | Linux: deb rpm tarball Arm snap
Visual Studio Code の2021年7月リリースへようこそ。このバージョンには、皆さんが気に入っていただけるであろう多くのアップデートが含まれており、主なハイライトは以下の通りです。
- 拡張機能ビューの改善 - 豊富な拡張機能詳細ホバー、新しいランタイムステータスタブ。
- 設定エディターの検証 - オブジェクトベースの設定に対する編集エラーを素早く見つけます。
- ターミナルのドラッグ&ドロップ - ターミナルをウィンドウ間でエディター領域とパネル領域の両方に移動します。
- テーマカスタマイズ構文の拡張 - 複数のカラーテーマを一度にカスタマイズします。
- Jupyter Notebook の組み込みサポート -
.ipynb
ファイルを VS Code で直接開きます。 - Notebook UI の改善 - 折りたたまれたセルの最初の行を表示、セルごとの元に戻す/やり直し。
- テスト API の完成 - 組み込みのテストエクスプローラーを使用して VS Code でテストを実行するためのネイティブサポート。
- デバッグ逆アセンブリビューのプレビュー - 逆アセンブルされた C++ コードを VS Code で表示します。
- Live Preview 拡張機能 - JavaScript デバッグサポート付きの VS Code 内でのライブ HTML プレビュー。
- Dev Containers devcontainer CLI - 開発コンテナーを操作するためのコマンドラインインターフェース。
これらのリリースノートをオンラインで読みたい場合は、code.visualstudio.com の 更新 にアクセスしてください。
太平洋時間8月10日(火)午前8時(ロンドン時間午後4時)にVS Code チームのライブストリームにご参加ください。このリリースの新機能のデモをご覧いただき、ライブで質問できます。
Insiders: 新機能をいち早く試したいですか?夜間ビルドのInsidersをダウンロードして、利用可能になり次第、最新の更新を試すことができます。
ワークベンチ
拡張機能
リサイズ時の拡張機能ビューの改善。以下の短いビデオでは、デフォルトの幅の拡張機能ビューですべての詳細が表示されます(以前はアイコン、評価、インストール数が表示されませんでした)。ビューが縮小すると、より小さな拡張機能アイコンが表示され、幅がさらに縮小すると、アイコンと評価が非表示になります。
テーマ: GitHub Light Theme
拡張機能ビューで、拡張機能にカスタムホバーが表示されるようになりました。このリッチホバーには、拡張機能の完全な説明と、拡張機能が無効または推奨される理由などの有用な情報が含まれます。
テーマ: GitHub Light Theme
拡張機能ペインの新しいランタイムステータスタブで、拡張機能のランタイムステータスを確認できるようになりました。ステータス情報には、アクティベーション時間、起動時にアクティベートされるかどうか、警告やエラーがあるかどうかが含まれます。この情報の一部は、拡張機能ビューとそのホバー(上の画像に表示)に表示されます。
テーマ: GitHub Light Theme
拡張機能ペインの詳細タブに、カテゴリ、リソースリンク、および拡張機能のリリース日と更新日などのその他の情報が表示されるようになりました。カテゴリを選択すると、そのカテゴリの他の拡張機能が拡張機能ビューに表示されます。
テーマ: GitHub Light Theme
設定エディター
設定エディターがオブジェクトの検証をサポートするようになりました。この検証は、JSON ファイルを直接編集するときに発生する可能性のある型エラーをチェックします。
配列設定が非編集モードでドラッグ&ドロップをサポートするようになりました。さらに、uniqueItems
プロパティが true
に設定された enum 配列設定では、ドロップダウンにすべてのオプションではなく、残りのオプションのみが表示されるようになりました。
設定エディターは、複数行の文字列設定もサポートするようになり、値が単一行の入力ボックスではなく、複数行のテキストエリアでレンダリングされます。
拡張されたテーマカスタマイズ構文
以下のカラーカスタマイズ設定により、ユーザーは現在のテーマの色をカスタマイズできます。
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.undoRedoPerCell
のデフォルト値がtrue
に変更されました。
また、コードセルのデフォルトスタイルも更新し、セルを区別しやすくするために背景色を表示するようになりました。テーマは notebook.cellEditorBackground
を使用してこの色をカスタマイズできます。
最後に、設定 notebook.globalToolbarShowLabel
を使用して、ノートブックツールバーのテキストラベルを切り替えられるようになりました。
相対パスのコピーのパス区切り文字を設定する
新しい設定 explorer.copyRelativePathSeparator
を使用すると、相対パスをコピーアクションを呼び出すときに、パス区切り文字を明示的に設定できます。
利用可能な区切り文字オプションは次のとおりです。
auto
(デフォルト) - オペレーティングシステム固有のパス区切り文字を使用します。/
- スラッシュをパス区切り文字として使用します。\\
- バックスラッシュをパス区切り文字として使用します。
エディターグループ間でビューの状態を共有する
エディターのビューの状態 (たとえば、エディターのスクロール位置) をエディターグループ間でどのように共有するかを設定するために、新しい設定 workbench.editor.sharedViewState
が追加されました。
デフォルトでは、この設定は現在の動作を維持するために無効になっています。エディターをサイドで開き、後でそのエディターグループを閉じて、再びエディターをサイドで開いても、新しいエディターグループを開いているため、ビューの状態は復元されません。しかし、この設定を有効にすると、最も新しいエディターのビューの状態がすべてのエディターグループ間で保持され、より具体的なビューの状態がエディターグループで見つからない限り、それが使用されます。
以下では、package.json
ファイルをサイドで再度開いたときに選択状態が保持されます。
エディター
折りたたみ領域間の移動
カーソルの位置を対応する折りたたみに設定するための新しいコマンドがあります。
- 次の折りたたみへ移動 (
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
は、空でない選択範囲からのみ検索文字列をシードするように拡張されました。デフォルトでは、検索コントロールが表示されるとき、エディターは選択範囲または空の選択範囲の周囲の単語を検索キーワードとして使用します。
インライン候補の改善
インライン候補のレンダリング方法を変更しました。これにより、多くのバグが修正されただけでなく、単語の折り返しがインライン候補を認識するようになりました。
さらに、末尾以外の位置での複数行のインライン候補もサポートされるようになりました。
インレイヒントの改善
インレイヒントのレンダリング方法も変更しました。インライン候補と同じメカニズムを使用することで、インレイヒントも単語の折り返しで考慮されるようになりました。このメカニズムにより、インレイヒントの周囲で個別のカーソル停止も可能になります。
ターミナル
ウィンドウ間でのターミナルのドラッグ&ドロップ
あるウィンドウのタブリストまたはエディター領域から、別のウィンドウのタブリスト、エディター領域、またはパネルにターミナルをドラッグ&ドロップできます。
子プロセスの追跡と終了警告
既存の terminal.integrated.confirmOnExit
および新しい terminal.integrated.confirmOnKill
設定は、シェルプロセスの子プロセスを持つターミナルを閉じようとするときに警告を表示するために、子プロセスの追跡を使用します。デフォルトでは、この追跡はエディター領域のターミナルにのみ影響しますが、すべてのターミナルまたはパネル領域のターミナルに警告を表示するように設定できるようになりました。
貢献されたターミナルプロファイルをデフォルトとして設定する
拡張機能によって提供されたターミナルプロファイルをデフォルトプロファイルとして設定できるようになりました。デフォルトのターミナルプロファイルは、ターミナルドロップダウンのデフォルトサフィックスで示されます。
下線と取り消し線のサポート
統合ターミナルが下線と取り消し線属性をサポートするようになりました。たとえば、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: デバッグプレビューを表示を実行してください!
- 埋め込みブラウザーの改善(「ページ内検索」サポート、
webvivew
DevTools へのクイックアクセスなど)。 - 自動生成されたファイルのファイルシステム監視。
- その他多数!🎉
今月の進捗の詳細については、拡張機能のリリースノートを参照してください。
テーマ: 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 repoにリリースされました。
無題ファイルの自動言語検出がどのように機能するか、ぜひお知らせください!
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 を提供します。テスト拡張機能の作成ガイドをチェックして、詳細に diving in してください。
テーマ: 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
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
が、テキスト変更が元に戻す (Undo) またはやり直す (Redo) 操作によって引き起こされたかどうかを示します。
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 ベースの webview がデスクトップのどこでも使用されるようになりました
今月、Electron の webview タグ要素から通常の 要素ベースの webview への移行を完了しました。これにより、VS Code の webview の実装がデスクトップとウェブ全体でより適切に連携し、今では冗長になった多くのコードを削除することもできました。
Electron 13 の更新
このマイルストーンで、Electron 13 を VS Code にバンドルする探索を完了しました。Insiders でのテストとセルフホスティングにご協力いただいたすべての方々に感謝いたします。これは主要な Electron リリースであり、Chromium 91.0.4472.124 を伴います。このリリースでは Node.js バージョンに変更はなく、v14.16.0 のままです。
Electron サンドボックスサポートの進捗
Electron のサンドボックスを有効にする準備をVS Codeワークベンチで続ける中で、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: fix empty keys being ignored by configuration parser PR #128909
- @adaex (Aex): Add support for eslintrc.json seti-ui icon PR #123404
- @alanrenmsft (Alan Ren)
- fix maximum call stack size reached issue PR #119929
- make dropdown arrow larger to meet accessibility requirement PR #127839
- @alielbashir (Ali Elbashir): Fix typo in github spaces link PR #128120
- @andrewbranch (Andrew Branch): [typescript-language-features] Add suggest.allowIncompleteCompletions and pass trigger kind to TS Server PR #127673
- @door-bell (Tim): Add settings for list scroll sensitivity outside of the editor and terminal PR #110059
- @galexite (George White): Add
.ixx
as a possible C++ extension PR #127962 - @headerjson: Add isDefault to TaskGroup API PR #128596
- @jeanp413 (Jean Pierre)
- Fixes keyboard multi-select not working in 'Open Editors' and 'Source Control' views PR #128284
- Fix dragging a folder from the explorer tree to terminal no longer copies folder path PR #128419
- Fixes "Run python file in terminal" opens panel although a terminal editor is used PR #128866
- @joshspicer (Josh Spicer): typo in welcomePage.contribution.ts PR #127893
- @karolz-ms (Karol Zadora-Przylecki): Improve defaults for dockercompose language PR #128550
- @kieranlblack (Kieran Black): Add setting to modify copy separator PR #101197
- @kilbouri (Isaac Kilbourne): Commit message PR #127849
- @Kingwl (Wenlu Wang)
- Add ts inline hints PR #113412
- Expose inlay hints api for monaco PR #127391
- Inlay hints uses editor.fontFamily by defaults PR #128181
- Add auto folding for imports spans PR #128978
- @movermeyer (Michael Overmeyer)
- Resolve all time-based snippet variables using the same time PR #128571
- Remove private field from constructor PR #128857
- @nickdelja (Nick Delja): Fixed minor typos PR #129439
- @NSExceptional (Tanner Bennett): Provide more specific file type descriptions on macOS PR #117713
- @shantaram3013 (Siddharth Singh): walkthrough: Update deprecated property name PR #129041
- @SNDST00M (SNDST00M: M.U.N.I.N): Extended theme customisation syntax PR #122969
- @ssigwart (Stephen Sigwart): Add Fold Jumping (Parent and Next/Previous at Same Level) PR #128450
- @suema0331: Fix#122454: Truncate the long terminal title PR #122620
- @timfenney (Tim Fenney): Add Copy Command Label to Keyboard Shortcuts. PR #125563
- @usjpin (Utkarsh Singh): Hide activity bar hover while typing PR #128362
- @xisui-MSFT
- Disassembly view PR #125737
- Fix focus issues in disassembly view PR #129616
- Larger initial view size in disassembly view PR #129651
- Open Disassembly View should be present but disabled PR #129726
vscode-extension-samples
への貢献
- @gjsjohnmurray (John Murray): fix #400 tree-view-sample: update package.json, package-lock.json PR #401
- @jabbera (Mike): Add --enable-proposed-api to launch.json PR #346
- @james1293: Remove extra parseTree PR #406
vscode-languageserver-node
への貢献者
- @perrinjerome (Jérome Perrin): Fix "A request has failed" dialog that can not be dismissed PR #787
vscode-pull-request-github
への貢献者
- @binsee: Fix check fork details PR #2806
- @iChenLei (ChenLei): chore: replace deprecated vscode-test with @vscode/test-electron PR #2842
vscode-vsce
へのコントリビューション
- @legomushroom (Oleg Solomka): Update
azure-devops-node-api
version PR #589
debug-adapter-protocol
への貢献者
- @NipunaRanasinghe (Nipuna Ransinghe ): Update Ballerina debug adapter information PR #201
language-server-protocol
への貢献者
- @leegbestand: Update comment for jsonrpcReservedErrorRangeEnd PR #1315
monaco-editor
へのコントリビューション
- @Surm4 (Marcin): Exposed colors sample update in the playground. PR #2561
monaco-languages
への貢献
- @alefragnani (Alessandro Fragnani): Adds
strict
keyword to Pascal language PR #153 - @jonatanklosko (Jonatan Kłosko): Properly tokenize fence closing in GitHub style code blocks PR #149
- @lofcz (Matěj Štágl): Fix razor + liquid render of tags with a dash symbol PR #150