diff --git a/.devcontainer/README.md b/.devcontainer/README.md index 37ebbafb..8262d411 100644 --- a/.devcontainer/README.md +++ b/.devcontainer/README.md @@ -32,17 +32,17 @@ Next: **[Try it out!](#try-it)** ## Quick start - GitHub Codespaces -> **IMPORTANT:** The current free user beta for GitHub Codespaces uses a "Basic" sized codespace which does not have enough RAM to run a full build of VS Code and will be considerably slower during codespace start and running VS Code. You'll soon be able to use a "Standard" sized codespace (4-core, 8GB) that will be better suited for this purpose (along with even larger sizes should you need it). +> **IMPORTANT:** You need to use a "Standard" sized codespace or larger (4-core, 8GB) since VS Code needs 6GB of RAM to compile. This is now the default for GitHub Codespaces, but do not downgrade to "Basic" unless you do not intend to compile. 1. From the [microsoft/vscode GitHub repository](https://github.com/microsoft/vscode), click on the **Code** dropdown, select **Open with Codespaces**, and the **New codespace** > Note that you will not see these options if you are not in the beta yet. -2. After the codespace is up and running in your browser, press Ctrl/Cmd + Shift + P and select **View: Show Remote Explorer**. +2. After the codespace is up and running in your browser, press F1 and select **Ports: Focus on Ports View**. 3. You should see port `6080` under **Forwarded Ports**. Select the line and click on the globe icon to open it in a browser tab. - > If you do not see port `6080`, press Ctrl/Cmd + Shift + P, select **Forward a Port** and enter port `6080`. + > If you do not see port `6080`, press F1, select **Forward a Port** and enter port `6080`. 4. In the new tab, you should see noVNC. Click **Connect** and enter `vscode` as the password. @@ -58,7 +58,7 @@ You will likely see better performance when accessing the codespace you created 2. Set up [VS Code for use with GitHub Codespaces](https://docs.github.com/github/developing-online-with-codespaces/using-codespaces-in-visual-studio-code) -3. After the VS Code is up and running, press Ctrl/Cmd + Shift + P, choose **Codespaces: Connect to Codespace**, and select the codespace you created. +3. After the VS Code is up and running, press F1, choose **Codespaces: Connect to Codespace**, and select the codespace you created. 4. After you've connected to the codespace, use a [VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/) to connect to `localhost:5901` and enter `vscode` as the password. diff --git a/.eslintrc.json b/.eslintrc.json index 1085686e..47731490 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -982,10 +982,12 @@ "allowed": [ "FileSystemProvider", "TreeDataProvider", + "TestProvider", "CustomEditorProvider", "CustomReadonlyEditorProvider", "TerminalLinkProvider", - "AuthenticationProvider" + "AuthenticationProvider", + "NotebookContentProvider" ] } ], @@ -1014,6 +1016,7 @@ "override", "receive", "register", + "remove", "rename", "save", "send", diff --git a/.github/workflows/deep-classifier-scraper.yml b/.github/workflows/deep-classifier-scraper.yml index 78a9b7f9..270e9ceb 100644 --- a/.github/workflows/deep-classifier-scraper.yml +++ b/.github/workflows/deep-classifier-scraper.yml @@ -1,5 +1,7 @@ name: "Deep Classifier: Scraper" on: + schedule: + - cron: 0 0 15 * * # 15th of the month repository_dispatch: types: [trigger-deep-classifier-scraper] @@ -23,5 +25,5 @@ jobs: with: blobContainerName: vscode-issue-classifier blobStorageKey: ${{secrets.AZURE_BLOB_STORAGE_CONNECTION_STRING}} - token: ${{secrets.ISSUE_SCRAPER_TOKEN}} + token: ${{secrets.VSCODE_ISSUE_TRIAGE_BOT_PAT}} appInsightsKey: ${{secrets.TRIAGE_ACTIONS_APP_INSIGHTS}} diff --git a/.github/workflows/devcontainer-cache.yml b/.github/workflows/devcontainer-cache.yml index 4670186b..87041953 100644 --- a/.github/workflows/devcontainer-cache.yml +++ b/.github/workflows/devcontainer-cache.yml @@ -22,7 +22,7 @@ jobs: - name: Azure CLI login id: az_login - uses: azure/login@v1 + uses: azure/login@77f1b2e3fb80c0e8645114159d17008b8a2e475a with: creds: ${{ secrets.AZ_ACR_CREDS }} diff --git a/.github/workflows/no-yarn-lock-changes.yml b/.github/workflows/no-yarn-lock-changes.yml index 7bceb299..ac37eaa6 100644 --- a/.github/workflows/no-yarn-lock-changes.yml +++ b/.github/workflows/no-yarn-lock-changes.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest steps: - id: file_changes - uses: trilom/file-changes-action@v1.2.4 + uses: trilom/file-changes-action@ce38c8ce2459ca3c303415eec8cb0409857b4272 - name: Check for yarn.lock changes run: | cat $HOME/files.json | jq -e '.[] | test("yarn\\.lock$") | not' \ diff --git a/.vscode/notebooks/api.github-issues b/.vscode/notebooks/api.github-issues index c0154336..95ae0023 100644 --- a/.vscode/notebooks/api.github-issues +++ b/.vscode/notebooks/api.github-issues @@ -9,7 +9,7 @@ { "kind": 2, "language": "github-issues", - "value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"February 2021\"", + "value": "$repo=repo:microsoft/vscode\n$milestone=milestone:\"March 2021\"", "editable": true, "outputs": [] }, @@ -26,41 +26,37 @@ "value": "$repo $milestone label:api-finalization", "editable": true, "outputs": [ - { - "mime": "text/markdown", - "value": "- [#88309](https://github.com/microsoft/vscode/issues/88309 \"Authentication Provider API\") Authentication Provider API [api-finalization, authentication, feature-request, settings-sync]- [@RMacfarlane](https://github.com/RMacfarlane \"Issue 88309 is assigned to RMacfarlane\")\n\n" - }, { "mime": "x-application/github-issues", "value": [ { - "url": "https://api.github.com/repos/microsoft/vscode/issues/88309", + "url": "https://api.github.com/repos/microsoft/vscode/issues/117058", "repository_url": "https://api.github.com/repos/microsoft/vscode", - "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/88309/labels{/name}", - "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/88309/comments", - "events_url": "https://api.github.com/repos/microsoft/vscode/issues/88309/events", - "html_url": "https://github.com/microsoft/vscode/issues/88309", - "id": 547141160, - "node_id": "MDU6SXNzdWU1NDcxNDExNjA=", - "number": 88309, - "title": "Authentication Provider API", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/117058/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/117058/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/117058/events", + "html_url": "https://github.com/microsoft/vscode/issues/117058", + "id": 812164158, + "node_id": "MDU6SXNzdWU4MTIxNjQxNTg=", + "number": 117058, + "title": "add property to extension api for new install", "user": { - "login": "RMacfarlane", - "id": 3672607, - "node_id": "MDQ6VXNlcjM2NzI2MDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/3672607?v=4", + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/RMacfarlane", - "html_url": "https://github.com/RMacfarlane", - "followers_url": "https://api.github.com/users/RMacfarlane/followers", - "following_url": "https://api.github.com/users/RMacfarlane/following{/other_user}", - "gists_url": "https://api.github.com/users/RMacfarlane/gists{/gist_id}", - "starred_url": "https://api.github.com/users/RMacfarlane/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/RMacfarlane/subscriptions", - "organizations_url": "https://api.github.com/users/RMacfarlane/orgs", - "repos_url": "https://api.github.com/users/RMacfarlane/repos", - "events_url": "https://api.github.com/users/RMacfarlane/events{/privacy}", - "received_events_url": "https://api.github.com/users/RMacfarlane/received_events", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", "type": "User", "site_admin": false }, @@ -73,15 +69,157 @@ "color": "c5def5", "default": false, "description": "" + } + ], + "state": "closed", + "locked": false, + "assignee": { + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 249, + "closed_issues": 280, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T15:51:00Z", + "due_on": null, + "closed_at": null + }, + "comments": 1, + "created_at": "2021-02-19T16:33:09Z", + "updated_at": "2021-03-09T18:24:07Z", + "closed_at": "2021-03-09T18:24:07Z", + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "```ts\r\nexport interface ExtensionContext {\r\n\r\n/**\r\n * Indicates that this is a fresh install of VS Code.\r\n */\r\nreadonly isNewInstall: boolean;\r\n}\r\n```", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/116906", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/116906/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/116906/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/116906/events", + "html_url": "https://github.com/microsoft/vscode/issues/116906", + "id": 810668744, + "node_id": "MDU6SXNzdWU4MTA2Njg3NDQ=", + "number": 116906, + "title": "Add extension ID and version to ExtensionContext", + "user": { + "login": "eamodio", + "id": 641685, + "node_id": "MDQ6VXNlcjY0MTY4NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/641685?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eamodio", + "html_url": "https://github.com/eamodio", + "followers_url": "https://api.github.com/users/eamodio/followers", + "following_url": "https://api.github.com/users/eamodio/following{/other_user}", + "gists_url": "https://api.github.com/users/eamodio/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eamodio/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eamodio/subscriptions", + "organizations_url": "https://api.github.com/users/eamodio/orgs", + "repos_url": "https://api.github.com/users/eamodio/repos", + "events_url": "https://api.github.com/users/eamodio/events{/privacy}", + "received_events_url": "https://api.github.com/users/eamodio/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" }, { - "id": 1702048079, - "node_id": "MDU6TGFiZWwxNzAyMDQ4MDc5", - "url": "https://api.github.com/repos/microsoft/vscode/labels/authentication", - "name": "authentication", + "id": 974714207, + "node_id": "MDU6TGFiZWw5NzQ3MTQyMDc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-finalization", + "name": "api-finalization", "color": "c5def5", "default": false, - "description": "Authentication issues" + "description": "" + }, + { + "id": 869332220, + "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-proposal", + "name": "api-proposal", + "color": "c5def5", + "default": false, + "description": "" }, { "id": 272689392, @@ -91,132 +229,99 @@ "color": "dcdcdc", "default": false, "description": "Request for new features or functionality" - }, - { - "id": 1684021718, - "node_id": "MDU6TGFiZWwxNjg0MDIxNzE4", - "url": "https://api.github.com/repos/microsoft/vscode/labels/settings-sync", - "name": "settings-sync", - "color": "1d76db", - "default": false, - "description": "" } ], "state": "open", "locked": false, "assignee": { - "login": "RMacfarlane", - "id": 3672607, - "node_id": "MDQ6VXNlcjM2NzI2MDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/3672607?v=4", + "login": "eamodio", + "id": 641685, + "node_id": "MDQ6VXNlcjY0MTY4NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/641685?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/RMacfarlane", - "html_url": "https://github.com/RMacfarlane", - "followers_url": "https://api.github.com/users/RMacfarlane/followers", - "following_url": "https://api.github.com/users/RMacfarlane/following{/other_user}", - "gists_url": "https://api.github.com/users/RMacfarlane/gists{/gist_id}", - "starred_url": "https://api.github.com/users/RMacfarlane/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/RMacfarlane/subscriptions", - "organizations_url": "https://api.github.com/users/RMacfarlane/orgs", - "repos_url": "https://api.github.com/users/RMacfarlane/repos", - "events_url": "https://api.github.com/users/RMacfarlane/events{/privacy}", - "received_events_url": "https://api.github.com/users/RMacfarlane/received_events", + "url": "https://api.github.com/users/eamodio", + "html_url": "https://github.com/eamodio", + "followers_url": "https://api.github.com/users/eamodio/followers", + "following_url": "https://api.github.com/users/eamodio/following{/other_user}", + "gists_url": "https://api.github.com/users/eamodio/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eamodio/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eamodio/subscriptions", + "organizations_url": "https://api.github.com/users/eamodio/orgs", + "repos_url": "https://api.github.com/users/eamodio/repos", + "events_url": "https://api.github.com/users/eamodio/events{/privacy}", + "received_events_url": "https://api.github.com/users/eamodio/received_events", "type": "User", "site_admin": false }, "assignees": [ { - "login": "RMacfarlane", - "id": 3672607, - "node_id": "MDQ6VXNlcjM2NzI2MDc=", - "avatar_url": "https://avatars.githubusercontent.com/u/3672607?v=4", + "login": "eamodio", + "id": 641685, + "node_id": "MDQ6VXNlcjY0MTY4NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/641685?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/RMacfarlane", - "html_url": "https://github.com/RMacfarlane", - "followers_url": "https://api.github.com/users/RMacfarlane/followers", - "following_url": "https://api.github.com/users/RMacfarlane/following{/other_user}", - "gists_url": "https://api.github.com/users/RMacfarlane/gists{/gist_id}", - "starred_url": "https://api.github.com/users/RMacfarlane/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/RMacfarlane/subscriptions", - "organizations_url": "https://api.github.com/users/RMacfarlane/orgs", - "repos_url": "https://api.github.com/users/RMacfarlane/repos", - "events_url": "https://api.github.com/users/RMacfarlane/events{/privacy}", - "received_events_url": "https://api.github.com/users/RMacfarlane/received_events", + "url": "https://api.github.com/users/eamodio", + "html_url": "https://github.com/eamodio", + "followers_url": "https://api.github.com/users/eamodio/followers", + "following_url": "https://api.github.com/users/eamodio/following{/other_user}", + "gists_url": "https://api.github.com/users/eamodio/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eamodio/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eamodio/subscriptions", + "organizations_url": "https://api.github.com/users/eamodio/orgs", + "repos_url": "https://api.github.com/users/eamodio/repos", + "events_url": "https://api.github.com/users/eamodio/events{/privacy}", + "received_events_url": "https://api.github.com/users/eamodio/received_events", "type": "User", "site_admin": false } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 249, + "closed_issues": 280, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T15:51:00Z", "due_on": null, "closed_at": null }, - "comments": 23, - "created_at": "2020-01-08T22:31:35Z", - "updated_at": "2021-02-10T20:41:11Z", + "comments": 11, + "created_at": "2021-02-18T01:20:24Z", + "updated_at": "2021-03-15T15:26:39Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, - "body": "### Problem\r\n\r\nThere are currently some extensions that attempt to provide authentication abilities that can be reused by other extensions. (An example being the Azure Account extension). Now that we've begun working on login for settings sync, it's worth revisiting if authentication should be a first-class concept in VS Code. By exposing an API to contribute an authentication flow\r\n\r\n- the core of VSCode can potentially leverage authentication\r\n- other extensions can leverage authentication\r\n- UI for account management could be centralized\r\n\r\n### Proposal\r\n\r\nI propose introducing a concept of an \"AuthenticationProvider\". Such a provider implements methods for logging in and logging out of a specified account, and exposes a list of accounts that are currently available with an event listener for changes to these. This abstracts away refreshing tokens from consumers - the AuthenticationProvider extension can manage refreshing in the background and fire an event when the accessToken has been changed.\r\n\r\n```ts\r\nexport interface Account {\r\n\treadonly id: string;\r\n\treadonly accessToken: string;\r\n\treadonly displayName: string;\r\n}\r\n\r\nexport interface AuthenticationProvider {\r\n\treadonly id: string; // perhaps \"type\"? Would be something like \"GitHub\", \"MSA\", etc.\r\n\treadonly displayName: string;\r\n\r\n\taccounts: ReadonlyArray;\r\n\tonDidChangeAccounts: Event>;\r\n\r\n\tlogin(): Promise;\r\n\tlogout(accountId: string): Promise;\r\n}\r\n\r\nexport namespace authentication {\r\n\texport function registerAuthenticationProvider(provider: AuthenticationProvider): Disposable;\r\n\texport const authenticationProviders: ReadonlyArray;\r\n}\r\n```\r\n\r\nConsumers would need to know the id of the provider they're looking for. For example, the settings sync code would look for an \"MSA\" provider since this is what the setting sync backend currently needs.\r\n\r\nSince the authentication provider extension would be activated in each VS Code window, the extension would be responsible for synchronizing state across instances. By default, such extensions would have [\"ui\", \"workspace\"] extensionKind, so that they can store and read credentials on the local machine in both the desktop and web case.", + "body": "It would be great to expose both `extensionId` and `extensionVersion` on our `ExtensionContext`. I've seen extensions (too many times) actually `require('./package.json)' to get at either the extension id or version. We were (still are until a PR lands) even doing this in our GHPR extension. In the best case, this wastes cycles, causes I/O contention, slows activations, and in the worse (e.g. bundling) actually bundles the `package.json` into your JS bundle.\r\n\r\nBy at least providing access to the `id` (and the mostly commonly accessed `package.json` property `version`), extensions can then use the `extensions.getExtension()` api to get at the other `package.json` properties that we already cache.\r\n\r\n```ts\r\n\texport interface ExtensionContext {\r\n\t\treadonly extensionId: string;\r\n\t\treadonly extensionVersion: string;\r\n\t}\r\n```\r\n\r\n/cc @jrieken @sandy081 ", "performed_via_github_app": null, "score": 1 - } - ] - } - ] - }, - { - "kind": 1, - "language": "markdown", - "value": "### Proposals", - "editable": true, - "outputs": [] - }, - { - "kind": 2, - "language": "github-issues", - "value": "$repo $milestone is:open label:api-proposal ", - "editable": true, - "outputs": [ - { - "mime": "text/markdown", - "value": "- [#115631](https://github.com/microsoft/vscode/issues/115631 \"Provide a way for custom editors to process untitled files without relying on textDocument\") Provide a way for custom editors to process untitled files without relying on textDocument [api-proposal, custom-editors, notebook]- [@lramos15](https://github.com/lramos15 \"Issue 115631 is assigned to lramos15\")\n\n- [#115626](https://github.com/microsoft/vscode/issues/115626 \"Microsoft Auth Provider should support overriding client id and tenant id\") Microsoft Auth Provider should support overriding client id and tenant id [api-proposal, authentication]- [@TylerLeonhardt](https://github.com/TylerLeonhardt \"Issue 115626 is assigned to TylerLeonhardt\")\n\n- [#115616](https://github.com/microsoft/vscode/issues/115616 \"Provide extension API to exclude ports from forwarding\") Provide extension API to exclude ports from forwarding [api, api-proposal, feature-request, remote-explorer]\n- [#114123](https://github.com/microsoft/vscode/issues/114123 \"Resolve the conflict run button in editor context menu\") Resolve the conflict run button in editor context menu [api-proposal, feature-request, menus]- [@jrieken](https://github.com/jrieken \"Issue 114123 is assigned to jrieken\")\n\n- [#109277](https://github.com/microsoft/vscode/issues/109277 \"Let extensions hook into url opening\") Let extensions hook into url opening [api, api-proposal, under-discussion]- [@mjbvz](https://github.com/mjbvz \"Issue 109277 is assigned to mjbvz\")\n\n- [#107467](https://github.com/microsoft/vscode/issues/107467 \"Testing in VS Code\") Testing in VS Code [api-proposal, plan-item, under-discussion]- [@connor4312](https://github.com/connor4312 \"Issue 107467 is assigned to connor4312\")\n\n- [#105690](https://github.com/microsoft/vscode/issues/105690 \"Extension API for Inline Values\") Extension API for Inline Values [api, api-proposal, debug, feature-request]- [@weinand](https://github.com/weinand \"Issue 105690 is assigned to weinand\")\n\n" - }, - { - "mime": "x-application/github-issues", - "value": [ + }, { "url": "https://api.github.com/repos/microsoft/vscode/issues/115631", "repository_url": "https://api.github.com/repos/microsoft/vscode", @@ -249,6 +354,15 @@ "site_admin": false }, "labels": [ + { + "id": 974714207, + "node_id": "MDU6TGFiZWw5NzQ3MTQyMDc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-finalization", + "name": "api-finalization", + "color": "c5def5", + "default": false, + "description": "" + }, { "id": 869332220, "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", @@ -267,6 +381,15 @@ "default": false, "description": "Custom editor API (webview based editors)" }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + }, { "id": 1839857516, "node_id": "MDU6TGFiZWwxODM5ODU3NTE2", @@ -342,45 +465,880 @@ } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 249, + "closed_issues": 280, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T15:51:00Z", "due_on": null, "closed_at": null }, "comments": 1, "created_at": "2021-02-02T19:29:05Z", - "updated_at": "2021-02-02T21:58:36Z", + "updated_at": "2021-03-09T16:12:17Z", + "closed_at": null, + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "Currently the \"Reopen with\" experience for untitled files and custom binary editors needs better support. See #114711. After discussion in the API call the best proposal seems to be placing the untitled file data in the OpenEditor / OpenNotebook context. There interface would be modified as shown:\r\n```ts\r\n\t/**\r\n\t * Additional information about the opening custom document.\r\n\t */\r\n\tinterface CustomDocumentOpenContext {\r\n\t\t/**\r\n\t\t * The id of the backup to restore the document from or `undefined` if there is no backup.\r\n\t\t *\r\n\t\t * If this is provided, your extension should restore the editor from the backup instead of reading the file\r\n\t\t * from the user's workspace.\r\n\t\t */\r\n\t\treadonly backupId?: string;\r\n\t\t/**\r\n\t\t * If the URI is an untitled file, this will be populated with the byte data of that file\r\n\t\t *\r\n\t\t * If this is provided, your extension should utilize this byte data rather than executing fs APIs on the URI passed in\r\n\t\t */\r\n\t\treadonly untitledDocumentData?: Uint8Array;\r\n\t}\r\n\r\n\tinterface NotebookDocumentOpenContext {\r\n\t\treadonly backupId?: string;\r\n\t\treadonly untitledDocumentData?: Uint8Array;\r\n\t}\r\n```\r\nThe extension other would then not be required to resolve the URI to a text document (which would have been disposed of). ", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/110267", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/110267/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/110267/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/110267/events", + "html_url": "https://github.com/microsoft/vscode/issues/110267", + "id": 739391278, + "node_id": "MDU6SXNzdWU3MzkzOTEyNzg=", + "number": 110267, + "title": "Pass telemetry enablement to extensions", + "user": { + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 974714207, + "node_id": "MDU6TGFiZWw5NzQ3MTQyMDc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-finalization", + "name": "api-finalization", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + }, + { + "id": 414580097, + "node_id": "MDU6TGFiZWw0MTQ1ODAwOTc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/telemetry", + "name": "telemetry", + "color": "c5def5", + "default": false, + "description": "Telemetry system issues" + } + ], + "state": "closed", + "locked": false, + "assignee": { + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "sbatten", + "id": 6561887, + "node_id": "MDQ6VXNlcjY1NjE4ODc=", + "avatar_url": "https://avatars.githubusercontent.com/u/6561887?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sbatten", + "html_url": "https://github.com/sbatten", + "followers_url": "https://api.github.com/users/sbatten/followers", + "following_url": "https://api.github.com/users/sbatten/following{/other_user}", + "gists_url": "https://api.github.com/users/sbatten/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sbatten/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sbatten/subscriptions", + "organizations_url": "https://api.github.com/users/sbatten/orgs", + "repos_url": "https://api.github.com/users/sbatten/repos", + "events_url": "https://api.github.com/users/sbatten/events{/privacy}", + "received_events_url": "https://api.github.com/users/sbatten/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 249, + "closed_issues": 280, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T15:51:00Z", + "due_on": null, + "closed_at": null + }, + "comments": 2, + "created_at": "2020-11-09T21:56:01Z", + "updated_at": "2021-03-09T18:26:17Z", + "closed_at": "2021-03-09T18:26:17Z", + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "Right now extensions use the configuration to determine if they should send telemetry; however, the cli flag is not passed to the extension host.\r\n\r\n```ts\r\nexport namespace env {\r\n export const enableTelemetry: boolean;\r\n\r\n export const onDidChangeEnableTelemetry: Event;\r\n}\r\n```\r\n", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/105690", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/events", + "html_url": "https://github.com/microsoft/vscode/issues/105690", + "id": 688793797, + "node_id": "MDU6SXNzdWU2ODg3OTM3OTc=", + "number": 105690, + "title": "Extension API for Inline Values", + "user": { + "login": "weinand", + "id": 1898161, + "node_id": "MDQ6VXNlcjE4OTgxNjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/weinand", + "html_url": "https://github.com/weinand", + "followers_url": "https://api.github.com/users/weinand/followers", + "following_url": "https://api.github.com/users/weinand/following{/other_user}", + "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", + "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", + "organizations_url": "https://api.github.com/users/weinand/orgs", + "repos_url": "https://api.github.com/users/weinand/repos", + "events_url": "https://api.github.com/users/weinand/events{/privacy}", + "received_events_url": "https://api.github.com/users/weinand/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" + }, + { + "id": 974714207, + "node_id": "MDU6TGFiZWw5NzQ3MTQyMDc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-finalization", + "name": "api-finalization", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 291054922, + "node_id": "MDU6TGFiZWwyOTEwNTQ5MjI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/debug", + "name": "debug", + "color": "1d76db", + "default": false, + "description": "Debug viewlet, configurations, breakpoints, adapter issues" + }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "weinand", + "id": 1898161, + "node_id": "MDQ6VXNlcjE4OTgxNjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/weinand", + "html_url": "https://github.com/weinand", + "followers_url": "https://api.github.com/users/weinand/followers", + "following_url": "https://api.github.com/users/weinand/following{/other_user}", + "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", + "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", + "organizations_url": "https://api.github.com/users/weinand/orgs", + "repos_url": "https://api.github.com/users/weinand/repos", + "events_url": "https://api.github.com/users/weinand/events{/privacy}", + "received_events_url": "https://api.github.com/users/weinand/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "weinand", + "id": 1898161, + "node_id": "MDQ6VXNlcjE4OTgxNjE=", + "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/weinand", + "html_url": "https://github.com/weinand", + "followers_url": "https://api.github.com/users/weinand/followers", + "following_url": "https://api.github.com/users/weinand/following{/other_user}", + "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", + "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", + "organizations_url": "https://api.github.com/users/weinand/orgs", + "repos_url": "https://api.github.com/users/weinand/repos", + "events_url": "https://api.github.com/users/weinand/events{/privacy}", + "received_events_url": "https://api.github.com/users/weinand/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 249, + "closed_issues": 280, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T15:51:00Z", + "due_on": null, + "closed_at": null + }, + "comments": 22, + "created_at": "2020-08-30T21:21:23Z", + "updated_at": "2021-03-16T15:47:54Z", + "closed_at": null, + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "Today the \"Show Inline Values\" feature of VS Code's debugger is based on a generic implementation in the VS Code core and provides neither customisability through settings, nor extensibility via extensions.\r\n\r\nAs a consequence, it is not a perfect fit for all languages (e.g. #101797) and sometimes even shows incorrect values because it doesn't understand the scope regions of the underlying language. \r\n\r\nThis features asks for an extension API that either replaces the built-in implementation completely or allows to replace parts of the implementation with custom code.\r\n", + "performed_via_github_app": null, + "score": 1 + } + ] + }, + { + "mime": "text/markdown", + "value": "- [#117058](https://github.com/microsoft/vscode/issues/117058 \"add property to extension api for new install\") add property to extension api for new install [api-finalization]- [@sbatten](https://github.com/sbatten \"Issue 117058 is assigned to sbatten\")\n\n- [#116906](https://github.com/microsoft/vscode/issues/116906 \"Add extension ID and version to ExtensionContext\") Add extension ID and version to ExtensionContext [api, api-finalization, api-proposal, feature-request]- [@eamodio](https://github.com/eamodio \"Issue 116906 is assigned to eamodio\")\n\n- [#115631](https://github.com/microsoft/vscode/issues/115631 \"Provide a way for custom editors to process untitled files without relying on textDocument\") Provide a way for custom editors to process untitled files without relying on textDocument [api-finalization, api-proposal, custom-editors, feature-request, notebook]- [@lramos15](https://github.com/lramos15 \"Issue 115631 is assigned to lramos15\")\n\n- [#110267](https://github.com/microsoft/vscode/issues/110267 \"Pass telemetry enablement to extensions\") Pass telemetry enablement to extensions [api-finalization, feature-request, telemetry]- [@sbatten](https://github.com/sbatten \"Issue 110267 is assigned to sbatten\")\n\n- [#105690](https://github.com/microsoft/vscode/issues/105690 \"Extension API for Inline Values\") Extension API for Inline Values [api, api-finalization, debug, feature-request]- [@weinand](https://github.com/weinand \"Issue 105690 is assigned to weinand\")\n\n" + } + ] + }, + { + "kind": 1, + "language": "markdown", + "value": "### Proposals", + "editable": true, + "outputs": [] + }, + { + "kind": 2, + "language": "github-issues", + "value": "$repo $milestone is:open label:api-proposal ", + "editable": true, + "outputs": [ + { + "mime": "x-application/github-issues", + "value": [ + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/119097", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/119097/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/119097/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/119097/events", + "html_url": "https://github.com/microsoft/vscode/issues/119097", + "id": 832954890, + "node_id": "MDU6SXNzdWU4MzI5NTQ4OTA=", + "number": 119097, + "title": "Allow extensions to contribute getting started content", + "user": { + "login": "JacksonKearl", + "id": 8586769, + "node_id": "MDQ6VXNlcjg1ODY3Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/8586769?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JacksonKearl", + "html_url": "https://github.com/JacksonKearl", + "followers_url": "https://api.github.com/users/JacksonKearl/followers", + "following_url": "https://api.github.com/users/JacksonKearl/following{/other_user}", + "gists_url": "https://api.github.com/users/JacksonKearl/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JacksonKearl/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JacksonKearl/subscriptions", + "organizations_url": "https://api.github.com/users/JacksonKearl/orgs", + "repos_url": "https://api.github.com/users/JacksonKearl/repos", + "events_url": "https://api.github.com/users/JacksonKearl/events{/privacy}", + "received_events_url": "https://api.github.com/users/JacksonKearl/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" + }, + { + "id": 869332220, + "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-proposal", + "name": "api-proposal", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + }, + { + "id": 2552283302, + "node_id": "MDU6TGFiZWwyNTUyMjgzMzAy", + "url": "https://api.github.com/repos/microsoft/vscode/labels/getting-started", + "name": "getting-started", + "color": "c5def5", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "JacksonKearl", + "id": 8586769, + "node_id": "MDQ6VXNlcjg1ODY3Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/8586769?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JacksonKearl", + "html_url": "https://github.com/JacksonKearl", + "followers_url": "https://api.github.com/users/JacksonKearl/followers", + "following_url": "https://api.github.com/users/JacksonKearl/following{/other_user}", + "gists_url": "https://api.github.com/users/JacksonKearl/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JacksonKearl/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JacksonKearl/subscriptions", + "organizations_url": "https://api.github.com/users/JacksonKearl/orgs", + "repos_url": "https://api.github.com/users/JacksonKearl/repos", + "events_url": "https://api.github.com/users/JacksonKearl/events{/privacy}", + "received_events_url": "https://api.github.com/users/JacksonKearl/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "JacksonKearl", + "id": 8586769, + "node_id": "MDQ6VXNlcjg1ODY3Njk=", + "avatar_url": "https://avatars.githubusercontent.com/u/8586769?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/JacksonKearl", + "html_url": "https://github.com/JacksonKearl", + "followers_url": "https://api.github.com/users/JacksonKearl/followers", + "following_url": "https://api.github.com/users/JacksonKearl/following{/other_user}", + "gists_url": "https://api.github.com/users/JacksonKearl/gists{/gist_id}", + "starred_url": "https://api.github.com/users/JacksonKearl/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/JacksonKearl/subscriptions", + "organizations_url": "https://api.github.com/users/JacksonKearl/orgs", + "repos_url": "https://api.github.com/users/JacksonKearl/repos", + "events_url": "https://api.github.com/users/JacksonKearl/events{/privacy}", + "received_events_url": "https://api.github.com/users/JacksonKearl/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 250, + "closed_issues": 281, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", + "due_on": null, + "closed_at": null + }, + "comments": 0, + "created_at": "2021-03-16T16:02:03Z", + "updated_at": "2021-03-16T16:09:09Z", + "closed_at": null, + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "We want to allow extensions to contribute items to the welcome page's getting started section:\r\n![image](https://user-images.githubusercontent.com/8586769/111341118-74bf9280-8636-11eb-9589-56e6c5ce926d.png)\r\n![image](https://user-images.githubusercontent.com/8586769/111341319-a33d6d80-8636-11eb-97d2-35bb563b7c9e.png)\r\n\r\nUsing a package.json like this:\r\n```json\r\n\t\t\"welcomeCategories\": [\r\n\t\t\t{\r\n\t\t\t\t\"id\": \"exampleProject\",\r\n\t\t\t\t\"title\": \"Turn Markdown into HTML\",\r\n\t\t\t\t\"description\": \"Use this sample project to learn how to convert Markdown to HTML!\"\r\n\t\t\t}\r\n\t\t],\r\n\t\t\"welcomeItems\": {\r\n\t\t\t\"exampleProject\": [\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"md-to-html.openExample\",\r\n\t\t\t\t\t\"title\": \"Open an example folder\",\r\n\t\t\t\t\t\"description\": \"To start, try opening an example folder that has been preconfigured for this tutorial. This is optional, but helps for following along!\",\r\n\t\t\t\t\t\"button\": {\r\n\t\t\t\t\t\t\"title\": \"Open Example\",\r\n\t\t\t\t\t\t\"command\": \"md-to-html.openExample\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"media\": {\r\n\t\t\t\t\t\t\"path\": \"media/example-project.png\",\r\n\t\t\t\t\t\t\"altText\": \"example project\"\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"md-to-html.showPreview\",\r\n\t\t\t\t\t\"title\": \"Preview your Markdown\",\r\n\t\t\t\t\t\"description\": \"Open a markdown file and click the \\\"Open Preview\\\" button at the top of the screen to see a preview of your file. This is technically optional, but it updates live and is helpful to check when creating your content!\",\r\n\t\t\t\t\t\"button\": {\r\n\t\t\t\t\t\t\"title\": \"Open Markdown File\",\r\n\t\t\t\t\t\t\"command\": \"md-to-html.openMarkdown\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"media\": {\r\n\t\t\t\t\t\t\"path\": \"media/preview.png\",\r\n\t\t\t\t\t\t\"altText\": \"preview\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"doneOn\": {\"command\": \"markdown.showPreviewToSide\" } \r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"md-to-html.convertToHTML\",\r\n\t\t\t\t\t\"title\": \"Create your .html file\",\r\n\t\t\t\t\t\"description\": \"To create the html file, run \\\"Convert Document to HTML\\\" from the editor actions context menu, behind the three dots top of the screen. This will create an .html file along side the markdown file.\",\r\n\t\t\t\t\t\"button\": {\r\n\t\t\t\t\t\t\"title\": \"Open Markdown File\",\r\n\t\t\t\t\t\t\"command\": \"md-to-html.openMarkdown\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"media\": {\r\n\t\t\t\t\t\t\"path\": \"media/convert-option.png\",\r\n\t\t\t\t\t\t\"altText\": \"showing editor actions context menu\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"doneOn\": {\"command\": \"md-to-html.convertToHTML\" }\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"md-to-html.openInBrowser\",\r\n\t\t\t\t\t\"title\": \"Open your .html file in the browser\",\r\n\t\t\t\t\t\"description\": \"Test that everything worked by opening the .html file in your browser. First open the html file in vscode, then right click in the editor and choose \\\"Open in Default Browser\\\".\",\r\n\t\t\t\t\t\"button\": {\r\n\t\t\t\t\t\t\"title\": \"Open HTML File\",\r\n\t\t\t\t\t\t\"command\": \"md-to-html.openHTML\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"media\": {\r\n\t\t\t\t\t\t\"path\": \"media/open-in-browser.png\",\r\n\t\t\t\t\t\t\"altText\": \"use editor context menu to open an .html file in your browser\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"doneOn\": {\"command\": \"extension.openInDefaultBrowser\" }\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\t\"id\": \"md-to-html.addKeybinding\",\r\n\t\t\t\t\t\"title\": \"Create a keyboard shortcut\",\r\n\t\t\t\t\t\"description\": \"That's all! You can share that single .html file with anyone without needing to bundle the images. To make this even easier in the future, consider adding a keybinding for the \\\"Convert Document to HTML\\\" command.\",\r\n\t\t\t\t\t\"button\": {\r\n\t\t\t\t\t\t\"title\": \"Add a keybinding\",\r\n\t\t\t\t\t\t\"command\": \"md-to-html.addKeybinding\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\t\"media\": {\r\n\t\t\t\t\t\t\"path\": \"media/add-keybinding.png\",\r\n\t\t\t\t\t\t\"altText\": \"use the keybindings editor to add a keybinding for this command\"\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n```\r\n\r\nThis is the change to the extension contributions interface:\r\n```ts\r\nexport interface IExtensionContributions {\r\n .....\r\n\twelcomeItems?: { [category: string]: IWelcomeItem[] };\r\n\twelcomeCategories?: IWelcomeCategory[];\r\n .....\r\n}\r\n```\r\n\r\n```ts\r\nexport interface IWelcomeItem {\r\n\treadonly id: string;\r\n\treadonly title: string;\r\n\treadonly description: string;\r\n\treadonly button: { title: string } & ({ command?: never, link: string } | { command: string, link?: never }),\r\n\treadonly media: { path: string | { hc: string, light: string, dark: string }, altText: string },\r\n\treadonly doneOn?:\r\n\t| { event: string; command?: never }\r\n\t| { event?: never; command: string };\r\n\treadonly when?: string;\r\n}\r\n\r\nexport interface IWelcomeCategory {\r\n\treadonly id: string,\r\n\treadonly title: string;\r\n\treadonly description: string;\r\n\treadonly when?: string;\r\n}\r\n```\r\n\r\n\r\n\r\n", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/118084", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/118084/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/118084/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/118084/events", + "html_url": "https://github.com/microsoft/vscode/issues/118084", + "id": 821570132, + "node_id": "MDU6SXNzdWU4MjE1NzAxMzI=", + "number": 118084, + "title": "Add trigger reason to code actions", + "user": { + "login": "mjbvz", + "id": 12821956, + "node_id": "MDQ6VXNlcjEyODIxOTU2", + "avatar_url": "https://avatars.githubusercontent.com/u/12821956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mjbvz", + "html_url": "https://github.com/mjbvz", + "followers_url": "https://api.github.com/users/mjbvz/followers", + "following_url": "https://api.github.com/users/mjbvz/following{/other_user}", + "gists_url": "https://api.github.com/users/mjbvz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mjbvz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mjbvz/subscriptions", + "organizations_url": "https://api.github.com/users/mjbvz/orgs", + "repos_url": "https://api.github.com/users/mjbvz/repos", + "events_url": "https://api.github.com/users/mjbvz/events{/privacy}", + "received_events_url": "https://api.github.com/users/mjbvz/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" + }, + { + "id": 869332220, + "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-proposal", + "name": "api-proposal", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 431507554, + "node_id": "MDU6TGFiZWw0MzE1MDc1NTQ=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/editor-code-actions", + "name": "editor-code-actions", + "color": "c5def5", + "default": false, + "description": "Editor inplace actions (Ctrl + .)" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "mjbvz", + "id": 12821956, + "node_id": "MDQ6VXNlcjEyODIxOTU2", + "avatar_url": "https://avatars.githubusercontent.com/u/12821956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mjbvz", + "html_url": "https://github.com/mjbvz", + "followers_url": "https://api.github.com/users/mjbvz/followers", + "following_url": "https://api.github.com/users/mjbvz/following{/other_user}", + "gists_url": "https://api.github.com/users/mjbvz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mjbvz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mjbvz/subscriptions", + "organizations_url": "https://api.github.com/users/mjbvz/orgs", + "repos_url": "https://api.github.com/users/mjbvz/repos", + "events_url": "https://api.github.com/users/mjbvz/events{/privacy}", + "received_events_url": "https://api.github.com/users/mjbvz/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "mjbvz", + "id": 12821956, + "node_id": "MDQ6VXNlcjEyODIxOTU2", + "avatar_url": "https://avatars.githubusercontent.com/u/12821956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mjbvz", + "html_url": "https://github.com/mjbvz", + "followers_url": "https://api.github.com/users/mjbvz/followers", + "following_url": "https://api.github.com/users/mjbvz/following{/other_user}", + "gists_url": "https://api.github.com/users/mjbvz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mjbvz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mjbvz/subscriptions", + "organizations_url": "https://api.github.com/users/mjbvz/orgs", + "repos_url": "https://api.github.com/users/mjbvz/repos", + "events_url": "https://api.github.com/users/mjbvz/events{/privacy}", + "received_events_url": "https://api.github.com/users/mjbvz/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 250, + "closed_issues": 281, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", + "due_on": null, + "closed_at": null + }, + "comments": 4, + "created_at": "2021-03-03T23:04:03Z", + "updated_at": "2021-03-16T16:08:22Z", + "closed_at": null, + "author_association": "MEMBER", + "active_lock_reason": null, + "body": "## Problem\r\n\r\nFor JS/TS, if user makes a imprecise selection (such as only selecting part of an identifier name) and then manually requests code actions, we'd like to return refactorings as if the selection were expanded. However we don't want to do this automatically for implicitly requested code actions (which cause the light bulb to show up)\r\n\r\n## Proposal\r\nAdd a trigger reason to the code action context. This would let you know if the code actions have been manually requested or were triggered automatically", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/115631", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/115631/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/115631/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/115631/events", + "html_url": "https://github.com/microsoft/vscode/issues/115631", + "id": 799606785, + "node_id": "MDU6SXNzdWU3OTk2MDY3ODU=", + "number": 115631, + "title": "Provide a way for custom editors to process untitled files without relying on textDocument", + "user": { + "login": "lramos15", + "id": 4544166, + "node_id": "MDQ6VXNlcjQ1NDQxNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/4544166?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lramos15", + "html_url": "https://github.com/lramos15", + "followers_url": "https://api.github.com/users/lramos15/followers", + "following_url": "https://api.github.com/users/lramos15/following{/other_user}", + "gists_url": "https://api.github.com/users/lramos15/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lramos15/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lramos15/subscriptions", + "organizations_url": "https://api.github.com/users/lramos15/orgs", + "repos_url": "https://api.github.com/users/lramos15/repos", + "events_url": "https://api.github.com/users/lramos15/events{/privacy}", + "received_events_url": "https://api.github.com/users/lramos15/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 974714207, + "node_id": "MDU6TGFiZWw5NzQ3MTQyMDc=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-finalization", + "name": "api-finalization", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 869332220, + "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-proposal", + "name": "api-proposal", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 1713330180, + "node_id": "MDU6TGFiZWwxNzEzMzMwMTgw", + "url": "https://api.github.com/repos/microsoft/vscode/labels/custom-editors", + "name": "custom-editors", + "color": "c5def5", + "default": false, + "description": "Custom editor API (webview based editors)" + }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + }, + { + "id": 1839857516, + "node_id": "MDU6TGFiZWwxODM5ODU3NTE2", + "url": "https://api.github.com/repos/microsoft/vscode/labels/notebook", + "name": "notebook", + "color": "c5def5", + "default": false, + "description": "" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "lramos15", + "id": 4544166, + "node_id": "MDQ6VXNlcjQ1NDQxNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/4544166?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lramos15", + "html_url": "https://github.com/lramos15", + "followers_url": "https://api.github.com/users/lramos15/followers", + "following_url": "https://api.github.com/users/lramos15/following{/other_user}", + "gists_url": "https://api.github.com/users/lramos15/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lramos15/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lramos15/subscriptions", + "organizations_url": "https://api.github.com/users/lramos15/orgs", + "repos_url": "https://api.github.com/users/lramos15/repos", + "events_url": "https://api.github.com/users/lramos15/events{/privacy}", + "received_events_url": "https://api.github.com/users/lramos15/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "lramos15", + "id": 4544166, + "node_id": "MDQ6VXNlcjQ1NDQxNjY=", + "avatar_url": "https://avatars.githubusercontent.com/u/4544166?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/lramos15", + "html_url": "https://github.com/lramos15", + "followers_url": "https://api.github.com/users/lramos15/followers", + "following_url": "https://api.github.com/users/lramos15/following{/other_user}", + "gists_url": "https://api.github.com/users/lramos15/gists{/gist_id}", + "starred_url": "https://api.github.com/users/lramos15/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/lramos15/subscriptions", + "organizations_url": "https://api.github.com/users/lramos15/orgs", + "repos_url": "https://api.github.com/users/lramos15/repos", + "events_url": "https://api.github.com/users/lramos15/events{/privacy}", + "received_events_url": "https://api.github.com/users/lramos15/received_events", + "type": "User", + "site_admin": false + }, + { + "login": "mjbvz", + "id": 12821956, + "node_id": "MDQ6VXNlcjEyODIxOTU2", + "avatar_url": "https://avatars.githubusercontent.com/u/12821956?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/mjbvz", + "html_url": "https://github.com/mjbvz", + "followers_url": "https://api.github.com/users/mjbvz/followers", + "following_url": "https://api.github.com/users/mjbvz/following{/other_user}", + "gists_url": "https://api.github.com/users/mjbvz/gists{/gist_id}", + "starred_url": "https://api.github.com/users/mjbvz/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/mjbvz/subscriptions", + "organizations_url": "https://api.github.com/users/mjbvz/orgs", + "repos_url": "https://api.github.com/users/mjbvz/repos", + "events_url": "https://api.github.com/users/mjbvz/events{/privacy}", + "received_events_url": "https://api.github.com/users/mjbvz/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 250, + "closed_issues": 281, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", + "due_on": null, + "closed_at": null + }, + "comments": 1, + "created_at": "2021-02-02T19:29:05Z", + "updated_at": "2021-03-09T16:12:17Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, @@ -504,45 +1462,45 @@ } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, "comments": 0, "created_at": "2021-02-02T18:42:12Z", - "updated_at": "2021-02-02T18:58:50Z", + "updated_at": "2021-02-22T23:20:49Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, @@ -609,12 +1567,21 @@ "default": false, "description": "Request for new features or functionality" }, + { + "id": 2426856573, + "node_id": "MDU6TGFiZWwyNDI2ODU2NTcz", + "url": "https://api.github.com/repos/microsoft/vscode/labels/ghcs-in-progress", + "name": "ghcs-in-progress", + "color": "000000", + "default": false, + "description": "" + }, { "id": 1772775110, "node_id": "MDU6TGFiZWwxNzcyNzc1MTEw", "url": "https://api.github.com/repos/microsoft/vscode/labels/remote-explorer", "name": "remote-explorer", - "color": "1d76db", + "color": "c5def5", "default": false, "description": "Remote explorer view" } @@ -645,45 +1612,45 @@ } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, - "comments": 15, + "comments": 17, "created_at": "2021-02-02T15:37:45Z", - "updated_at": "2021-02-12T16:08:10Z", + "updated_at": "2021-03-16T00:33:17Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, @@ -692,37 +1659,46 @@ "score": 1 }, { - "url": "https://api.github.com/repos/microsoft/vscode/issues/114123", + "url": "https://api.github.com/repos/microsoft/vscode/issues/114898", "repository_url": "https://api.github.com/repos/microsoft/vscode", - "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/114123/labels{/name}", - "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/114123/comments", - "events_url": "https://api.github.com/repos/microsoft/vscode/issues/114123/events", - "html_url": "https://github.com/microsoft/vscode/issues/114123", - "id": 783094648, - "node_id": "MDU6SXNzdWU3ODMwOTQ2NDg=", - "number": 114123, - "title": "Resolve the conflict run button in editor context menu", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/114898/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/114898/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/114898/events", + "html_url": "https://github.com/microsoft/vscode/issues/114898", + "id": 793246594, + "node_id": "MDU6SXNzdWU3OTMyNDY1OTQ=", + "number": 114898, + "title": "[ext-api] provide Pseudoterminal.onDidChangeName event", "user": { - "login": "jdneo", - "id": 6193897, - "node_id": "MDQ6VXNlcjYxOTM4OTc=", - "avatar_url": "https://avatars.githubusercontent.com/u/6193897?v=4", + "login": "akosyakov", + "id": 3082655, + "node_id": "MDQ6VXNlcjMwODI2NTU=", + "avatar_url": "https://avatars.githubusercontent.com/u/3082655?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/jdneo", - "html_url": "https://github.com/jdneo", - "followers_url": "https://api.github.com/users/jdneo/followers", - "following_url": "https://api.github.com/users/jdneo/following{/other_user}", - "gists_url": "https://api.github.com/users/jdneo/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jdneo/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jdneo/subscriptions", - "organizations_url": "https://api.github.com/users/jdneo/orgs", - "repos_url": "https://api.github.com/users/jdneo/repos", - "events_url": "https://api.github.com/users/jdneo/events{/privacy}", - "received_events_url": "https://api.github.com/users/jdneo/received_events", + "url": "https://api.github.com/users/akosyakov", + "html_url": "https://github.com/akosyakov", + "followers_url": "https://api.github.com/users/akosyakov/followers", + "following_url": "https://api.github.com/users/akosyakov/following{/other_user}", + "gists_url": "https://api.github.com/users/akosyakov/gists{/gist_id}", + "starred_url": "https://api.github.com/users/akosyakov/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/akosyakov/subscriptions", + "organizations_url": "https://api.github.com/users/akosyakov/orgs", + "repos_url": "https://api.github.com/users/akosyakov/repos", + "events_url": "https://api.github.com/users/akosyakov/events{/privacy}", + "received_events_url": "https://api.github.com/users/akosyakov/received_events", "type": "User", "site_admin": false }, "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" + }, { "id": 869332220, "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", @@ -742,69 +1718,39 @@ "description": "Request for new features or functionality" }, { - "id": 795791582, - "node_id": "MDU6TGFiZWw3OTU3OTE1ODI=", - "url": "https://api.github.com/repos/microsoft/vscode/labels/menus", - "name": "menus", - "color": "1d76db", - "default": false, - "description": "Menu items and widget issues" + "id": 256129996, + "node_id": "MDU6TGFiZWwyNTYxMjk5OTY=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/help%20wanted", + "name": "help wanted", + "color": "fef2c0", + "default": true, + "description": "Issues identified as good community contribution opportunities" } ], "state": "open", "locked": false, "assignee": { - "login": "jrieken", - "id": 1794099, - "node_id": "MDQ6VXNlcjE3OTQwOTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/1794099?v=4", + "login": "Tyriar", + "id": 2193314, + "node_id": "MDQ6VXNlcjIxOTMzMTQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/jrieken", - "html_url": "https://github.com/jrieken", - "followers_url": "https://api.github.com/users/jrieken/followers", - "following_url": "https://api.github.com/users/jrieken/following{/other_user}", - "gists_url": "https://api.github.com/users/jrieken/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jrieken/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jrieken/subscriptions", - "organizations_url": "https://api.github.com/users/jrieken/orgs", - "repos_url": "https://api.github.com/users/jrieken/repos", - "events_url": "https://api.github.com/users/jrieken/events{/privacy}", - "received_events_url": "https://api.github.com/users/jrieken/received_events", + "url": "https://api.github.com/users/Tyriar", + "html_url": "https://github.com/Tyriar", + "followers_url": "https://api.github.com/users/Tyriar/followers", + "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", + "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", + "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", + "organizations_url": "https://api.github.com/users/Tyriar/orgs", + "repos_url": "https://api.github.com/users/Tyriar/repos", + "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", + "received_events_url": "https://api.github.com/users/Tyriar/received_events", "type": "User", "site_admin": false }, "assignees": [ { - "login": "jrieken", - "id": 1794099, - "node_id": "MDQ6VXNlcjE3OTQwOTk=", - "avatar_url": "https://avatars.githubusercontent.com/u/1794099?v=4", - "gravatar_id": "", - "url": "https://api.github.com/users/jrieken", - "html_url": "https://github.com/jrieken", - "followers_url": "https://api.github.com/users/jrieken/followers", - "following_url": "https://api.github.com/users/jrieken/following{/other_user}", - "gists_url": "https://api.github.com/users/jrieken/gists{/gist_id}", - "starred_url": "https://api.github.com/users/jrieken/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/jrieken/subscriptions", - "organizations_url": "https://api.github.com/users/jrieken/orgs", - "repos_url": "https://api.github.com/users/jrieken/repos", - "events_url": "https://api.github.com/users/jrieken/events{/privacy}", - "received_events_url": "https://api.github.com/users/jrieken/received_events", - "type": "User", - "site_admin": false - } - ], - "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", - "description": "", - "creator": { "login": "Tyriar", "id": 2193314, "node_id": "MDQ6VXNlcjIxOTMzMTQ=", @@ -823,22 +1769,230 @@ "received_events_url": "https://api.github.com/users/Tyriar/received_events", "type": "User", "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, - "comments": 15, - "created_at": "2021-01-11T06:09:50Z", - "updated_at": "2021-02-09T13:40:28Z", + "comments": 5, + "created_at": "2021-01-25T10:18:54Z", + "updated_at": "2021-02-16T16:25:13Z", + "closed_at": null, + "author_association": "NONE", + "active_lock_reason": null, + "body": "Current it is not possible to change the name of the pseudo terminal implemented by the extension.", + "performed_via_github_app": null, + "score": 1 + }, + { + "url": "https://api.github.com/repos/microsoft/vscode/issues/111521", + "repository_url": "https://api.github.com/repos/microsoft/vscode", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/111521/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/111521/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/111521/events", + "html_url": "https://github.com/microsoft/vscode/issues/111521", + "id": 753621208, + "node_id": "MDU6SXNzdWU3NTM2MjEyMDg=", + "number": 111521, + "title": "Support a way to have nightly/insiders versions of extensions not activate if \"main\" extension is installed/enabled", + "user": { + "login": "eamodio", + "id": 641685, + "node_id": "MDQ6VXNlcjY0MTY4NQ==", + "avatar_url": "https://avatars.githubusercontent.com/u/641685?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/eamodio", + "html_url": "https://github.com/eamodio", + "followers_url": "https://api.github.com/users/eamodio/followers", + "following_url": "https://api.github.com/users/eamodio/following{/other_user}", + "gists_url": "https://api.github.com/users/eamodio/gists{/gist_id}", + "starred_url": "https://api.github.com/users/eamodio/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/eamodio/subscriptions", + "organizations_url": "https://api.github.com/users/eamodio/orgs", + "repos_url": "https://api.github.com/users/eamodio/repos", + "events_url": "https://api.github.com/users/eamodio/events{/privacy}", + "received_events_url": "https://api.github.com/users/eamodio/received_events", + "type": "User", + "site_admin": false + }, + "labels": [ + { + "id": 290465400, + "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api", + "name": "api", + "color": "1d76db", + "default": false, + "description": "" + }, + { + "id": 869332220, + "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/api-proposal", + "name": "api-proposal", + "color": "c5def5", + "default": false, + "description": "" + }, + { + "id": 343063018, + "node_id": "MDU6TGFiZWwzNDMwNjMwMTg=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/extensions", + "name": "extensions", + "color": "1d76db", + "default": false, + "description": "Issues concerning extensions" + }, + { + "id": 1634275230, + "node_id": "MDU6TGFiZWwxNjM0Mjc1MjMw", + "url": "https://api.github.com/repos/microsoft/vscode/labels/extensions-development", + "name": "extensions-development", + "color": "1d76db", + "default": false, + "description": "Issues for developing extensions" + }, + { + "id": 272689392, + "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/feature-request", + "name": "feature-request", + "color": "dcdcdc", + "default": false, + "description": "Request for new features or functionality" + }, + { + "id": 798222351, + "node_id": "MDU6TGFiZWw3OTgyMjIzNTE=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/marketplace", + "name": "marketplace", + "color": "c5def5", + "default": false, + "description": "Microsoft VS Code Marketplace issues" + } + ], + "state": "open", + "locked": false, + "assignee": { + "login": "sandy081", + "id": 10746682, + "node_id": "MDQ6VXNlcjEwNzQ2Njgy", + "avatar_url": "https://avatars.githubusercontent.com/u/10746682?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sandy081", + "html_url": "https://github.com/sandy081", + "followers_url": "https://api.github.com/users/sandy081/followers", + "following_url": "https://api.github.com/users/sandy081/following{/other_user}", + "gists_url": "https://api.github.com/users/sandy081/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sandy081/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sandy081/subscriptions", + "organizations_url": "https://api.github.com/users/sandy081/orgs", + "repos_url": "https://api.github.com/users/sandy081/repos", + "events_url": "https://api.github.com/users/sandy081/events{/privacy}", + "received_events_url": "https://api.github.com/users/sandy081/received_events", + "type": "User", + "site_admin": false + }, + "assignees": [ + { + "login": "sandy081", + "id": 10746682, + "node_id": "MDQ6VXNlcjEwNzQ2Njgy", + "avatar_url": "https://avatars.githubusercontent.com/u/10746682?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/sandy081", + "html_url": "https://github.com/sandy081", + "followers_url": "https://api.github.com/users/sandy081/followers", + "following_url": "https://api.github.com/users/sandy081/following{/other_user}", + "gists_url": "https://api.github.com/users/sandy081/gists{/gist_id}", + "starred_url": "https://api.github.com/users/sandy081/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/sandy081/subscriptions", + "organizations_url": "https://api.github.com/users/sandy081/orgs", + "repos_url": "https://api.github.com/users/sandy081/repos", + "events_url": "https://api.github.com/users/sandy081/events{/privacy}", + "received_events_url": "https://api.github.com/users/sandy081/received_events", + "type": "User", + "site_admin": false + } + ], + "milestone": { + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", + "description": "", + "creator": { + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", + "type": "User", + "site_admin": false + }, + "open_issues": 250, + "closed_issues": 281, + "state": "open", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", + "due_on": null, + "closed_at": null + }, + "comments": 3, + "created_at": "2020-11-30T16:28:19Z", + "updated_at": "2021-03-05T14:35:33Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, - "body": "\r\n\r\n\r\n\r\n\r\n\r\n### Problem\r\nSince the contribution point: `editor/title` is open for all the extensions, sometimes different extensions may have conflicts at this area. For example, in Java, such conflicts affect the run experience when the user installs both the Java extensions and the Code Runner extension:\r\n\r\n![image](https://user-images.githubusercontent.com/6193897/104149682-30373100-5412-11eb-84be-8f05bfa9c042.png)\r\n\r\nThis is a very open and big topic, as a author of VS Code extensions, it will be great if VS Code as a platform, can provide solutions for this issue.\r\n\r\n### Potential Solutions\r\nBelow are just rough ideas on this, it's open for discussion!\r\n\r\n#### Editor Metadata\r\nExtensions can register context value per document/editor, and register command on the editor title area according to the context value. For example. the Java Debugger can use this to mark if the current Java file is executable or not. And register the run/debug command into the editor context area if it's executable.\r\n\r\n> This can somehow achieved by using the `in` expression of the when clause, something like `resource in hasMainMethodFiles`. But we also need to [get the context value dynamically from the code](https://github.com/microsoft/vscode/issues/10471#issuecomment-718548790) to handle with the corporation between multiple extensions. \r\n\r\nMeanwhile the Java feature team can contribute changes to the Code Runner extension to align the UX (for example, hide the run button from Code Runner if the current Java file contains an executable Main class).\r\n\r\n#### Official Support for the run experience in the editor title area.\r\nThis also may have some opportunity since I believe it's somehow related with #85759, if VS Code team will consider provide official `run/debug` functionality area in the editor title.\r\n\r\n", + "body": "More an more, extension authors are providing a nightly/insiders version of their extensions. Which can cause issues for end-users if they have both versions installed. And today, extension authors can't properly deal with this because of the static contributions -- which can cause a bad end-user experience.\r\n\r\nSince we have a `preview` flag in `package.json`, I would propose that we add a new `previewOf` option that could be set to an extension id, that this preview is a preview of. So for example, GitLens Insiders (eamodio.gitlens-insiders) would set `\"previewOf\": \"eamodio.gitlens\"`.\r\n\r\nWhen VS Code sees this flag, it would determine if the `previewOf` extension is installed and enabled, and if so, then would auto-disable this extension so it wouldn't be activated at all.\r\n\r\nThis would avoid a bad end-user experience, especially if we show a reason in the extension view to why this extension is now disabled. It would also avoid issues with Codespaces issues with built-in extensions and nightlies.\r\n\r\n/cc @jrieken @sandy081 @connor4312 @RMacfarlane @JacksonKearl ", "performed_via_github_app": null, "score": 1 }, @@ -947,45 +2101,45 @@ } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, "comments": 10, "created_at": "2020-10-24T02:27:26Z", - "updated_at": "2021-02-11T23:51:08Z", + "updated_at": "2021-02-23T00:04:01Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, @@ -1043,6 +2197,15 @@ "default": false, "description": "VS Code - planned item for upcoming" }, + { + "id": 2676991487, + "node_id": "MDU6TGFiZWwyNjc2OTkxNDg3", + "url": "https://api.github.com/repos/microsoft/vscode/labels/testing", + "name": "testing", + "color": "c5def5", + "default": false, + "description": "Built-in testing support" + }, { "id": 578047123, "node_id": "MDU6TGFiZWw1NzgwNDcxMjM=", @@ -1118,93 +2281,84 @@ } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, - "comments": 53, + "comments": 62, "created_at": "2020-09-25T17:19:53Z", - "updated_at": "2021-02-16T21:11:36Z", + "updated_at": "2021-03-16T08:33:01Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, - "body": "## State of the World\r\n\r\nTesting support in VS Code has been a feature request for [a long time](https://github.com/microsoft/vscode/issues/9505). The VS Code community has build excellent extensions around testing, for example:\r\n\r\n- The [Test Explorer UI](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer) from @hbenl\r\n- [Wallaby.js](https://wallabyjs.com/) from the Wallaby team\r\n- [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) from @orta\r\n- ...and many more\r\n\r\nEach implementation of testing presents a different set of features, UI, and idiomaticity. Because there is no sanctioned approach to tests in VS Code, extension developers tend to make bespoke implementations, as we've seen in the Python and Java language extensions. Ideally, like in debugging, a VS Code user would have just about the same experience as they work between projects and languages.\r\n\r\n## VS Code's Approach\r\n\r\n> Investigate how VS Code can improve the testing support. Several extensions are already providing testing support, explore what APIs/UIs could be added to improve these testing extensions and the test running experience. -- [2020 Roadmap](https://github.com/microsoft/vscode/wiki/Roadmap#testing)\r\n\r\nThe Test Explorer UI presents the best point of inspiration for us, as there are many existing extensions built on its API: it's capable and proven. Regardless of the direction we take in VS Code, we should have a way for its Test Adapters to be upgraded to the new world.\r\n\r\nWallaby is an excellent extension, but it's tailored and purpose-built to JavaScript, and includes functionality which is not readily portable to other languages. While it is a good source for inspiration, we're not aiming to encompass Wallaby's feature set in the extension points we provide, at least not yet.\r\n\r\nWe're prototyping an API in the extension host, but there are a number of approaches we can take:\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n
Extension Host ('traditional' VS Code API)'Test Protocol' (like DAP/LSP)Extension (like existing test explorer)
\r\n\t\t\t+ Simple to adopt for extension authors
\r\n\t\t\t+ Easier to manage state
\r\n\t\t\t+ Clear way to build 'official' test extensions
\r\n\t\t
\r\n\t\t\t+ Encourages keeping expensive work in child processes
\r\n\t\t\t+ Could be theoretically shared with VS and other editors
\r\n\t\t
\r\n\t\t\t+ Keep VS Code core slim
\r\n\t\t\t+ Unclear whether there's significant functionality we'd want that's not already possible in exthost api
\r\n\t\t
\r\n\t\t\t- The 'obvious path' is doing heavy lifting in the extension host process, which is undesirable
\r\n\t\t
\r\n\t\t\t- Additional implementation and maintainence complexity for VS Code
\r\n\t\t\t- Less friendly, additional complexity than TS APIs for extension authors
\r\n\t\t
\r\n\t\t\t- Additional extension and set of libraries to maintain+version for types and implementation
\r\n\t\t\t- Less clear there's an official pathway for test extensions
\r\n\t\t
\r\n\r\n## API Design\r\n\r\nThe following is a working draft of an API design. It should not be considered final, or anything close to final. This post will be edited as it evolves.\r\n\r\n#### Changes versus the [Test Adapter API](https://github.com/hbenl/vscode-test-adapter-api)\r\n\r\nAs mentioned, the test adapter API and this one provide a similar end user experience. Here are the notable changes we made:\r\n\r\n- The test adapter API does not distinguish between watching a workspace and watching a file. In some cases, there is an existing process that reads workspace tests (such as a language server in Java) or it's not much more expensive to get workspace tests than file tests (such as mocha, perhaps). However, some cases, like Go, providing tests for a single file can be done very cheaply and efficiently without needing to involve the workspace.\r\n\r\n\tIn this API we expect the `TestProvider` to, after activation, always provide tests for the visible text editors, and we only request tests for the entire workspace when required (i.e. when the UI needs to enumerate them).\r\n\r\n- We have modeled the test state more closely after the existing `DiagnosticCollection`, where the Test Adapter API uses only events to enumerate tests and does not have a central collection.\r\n\r\n- The Test Adapter API makes the distinction between suites and tests, we do not. They have almost identical capabilities, and in [at least one scenario](https://blog.golang.org/subtests) the 'suites' are more like tests and the leaf 'tests' cannot be run individually.\r\n\r\n- We use object identity rather than ID for referencing tests. This is in line with other items in the VS Code API, including Diagnostics.\r\n\r\n#### Ideas and Open Questions\r\n\r\n- We do not (yet) have a concept of test invalidation and auto-run, which in the test adapter API via the \"retire\" event. We are still looking into how this can best be implemented.\r\n\t\r\n\tIn a golden scenario, invalidation of tests would be done by a language server which can intelligently determine specific tests that should be invalidated when a file or a file dependency changes. Maybe this is still handled by an event on the TestProvider, but if we take a \"Test Protocol\" approach then coordination will be harder.\r\n- As marked in the `todo`, we will expose APIs for other extensions to read test state and build UI, but this is not yet included in the API design.\r\n- How should errors loading tests be handled? Emit diagnostics or have some test-specific code?\r\n\r\n- We would like to support code coverage in testing as well, but that is further down the line.\r\n\r\n- How can we let users learn about/onboard to testing from within VS Code?\r\n\r\n### API\r\n\r\nSee the current working proposal in https://github.com/microsoft/vscode/blob/master/src/vs/vscode.proposed.d.ts (ctrl+f for 107467)", + "body": "## State of the World\r\n\r\nTesting support in VS Code has been a feature request for [a long time](https://github.com/microsoft/vscode/issues/9505). The VS Code community has build excellent extensions around testing, for example:\r\n\r\n- The [Test Explorer UI](https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer) from @hbenl\r\n- [Wallaby.js](https://wallabyjs.com/) from the Wallaby team\r\n- [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) from @orta\r\n- ...and many more\r\n\r\nEach implementation of testing presents a different set of features, UI, and idiomaticity. Because there is no sanctioned approach to tests in VS Code, extension developers tend to make bespoke implementations, as we've seen in the Python and Java language extensions. Ideally, like in debugging, a VS Code user would have just about the same experience as they work between projects and languages.\r\n\r\n## VS Code's Approach\r\n\r\n> Investigate how VS Code can improve the testing support. Several extensions are already providing testing support, explore what APIs/UIs could be added to improve these testing extensions and the test running experience. -- [2020 Roadmap](https://github.com/microsoft/vscode/wiki/Roadmap#testing)\r\n\r\nThe Test Explorer UI presents the best point of inspiration for us, as there are many existing extensions built on its API: it's capable and proven. Regardless of the direction we take in VS Code, we should have a way for its Test Adapters to be upgraded to the new world.\r\n\r\nWallaby is an excellent extension, but it's tailored and purpose-built to JavaScript, and includes functionality which is not readily portable to other languages. While it is a good source for inspiration, we're not aiming to encompass Wallaby's feature set in the extension points we provide, at least not yet.\r\n\r\nWe're prototyping an API in the extension host, but there are a number of approaches we can take:\r\n\r\n\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\r\n
Extension Host ('traditional' VS Code API)'Test Protocol' (like DAP/LSP)Extension (like existing test explorer)
\r\n\t\t\t+ Simple to adopt for extension authors
\r\n\t\t\t+ Easier to manage state
\r\n\t\t\t+ Clear way to build 'official' test extensions
\r\n\t\t
\r\n\t\t\t+ Encourages keeping expensive work in child processes
\r\n\t\t\t+ Could be theoretically shared with VS and other editors
\r\n\t\t
\r\n\t\t\t+ Keep VS Code core slim
\r\n\t\t\t+ Unclear whether there's significant functionality we'd want that's not already possible in exthost api
\r\n\t\t
\r\n\t\t\t- The 'obvious path' is doing heavy lifting in the extension host process, which is undesirable
\r\n\t\t
\r\n\t\t\t- Additional implementation and maintainence complexity for VS Code
\r\n\t\t\t- Less friendly, additional complexity than TS APIs for extension authors
\r\n\t\t
\r\n\t\t\t- Additional extension and set of libraries to maintain+version for types and implementation
\r\n\t\t\t- Less clear there's an official pathway for test extensions
\r\n\t\t
\r\n\r\n## API Design\r\n\r\nThe following is a working draft of an API design. It should not be considered final, or anything close to final. This post will be edited as it evolves.\r\n\r\n#### Changes versus the [Test Adapter API](https://github.com/hbenl/vscode-test-adapter-api)\r\n\r\nAs mentioned, the test adapter API and this one provide a similar end user experience. Here are the notable changes we made:\r\n\r\n- The test adapter API does not distinguish between watching a workspace and watching a file. In some cases, there is an existing process that reads workspace tests (such as a language server in Java) or it's not much more expensive to get workspace tests than file tests (such as mocha, perhaps). However, some cases, like Go, providing tests for a single file can be done very cheaply and efficiently without needing to involve the workspace.\r\n\r\n\tIn this API we expect the `TestProvider` to, after activation, always provide tests for the visible text editors, and we only request tests for the entire workspace when required (i.e. when the UI needs to enumerate them).\r\n\r\n- We have modeled the test state more closely after the existing `DiagnosticCollection`, where the Test Adapter API uses only events to enumerate tests and does not have a central collection.\r\n\r\n- The Test Adapter API makes the distinction between suites and tests, we do not. They have almost identical capabilities, and in [at least one scenario](https://blog.golang.org/subtests) the 'suites' are more like tests and the leaf 'tests' cannot be run individually.\r\n\r\n- We use object identity rather than ID for referencing tests. This is in line with other items in the VS Code API, including Diagnostics.\r\n\r\n#### Ideas and Open Questions\r\n\r\nSee the [`testing`](https://github.com/microsoft/vscode/labels/testing) label for current work, questions, and problems.\r\n\r\n### API\r\n\r\nSee the current working proposal in https://github.com/microsoft/vscode/blob/master/src/vs/vscode.proposed.d.ts (ctrl+f for 107467)", "performed_via_github_app": null, "score": 1 }, { - "url": "https://api.github.com/repos/microsoft/vscode/issues/105690", + "url": "https://api.github.com/repos/microsoft/vscode/issues/77423", "repository_url": "https://api.github.com/repos/microsoft/vscode", - "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/labels{/name}", - "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/comments", - "events_url": "https://api.github.com/repos/microsoft/vscode/issues/105690/events", - "html_url": "https://github.com/microsoft/vscode/issues/105690", - "id": 688793797, - "node_id": "MDU6SXNzdWU2ODg3OTM3OTc=", - "number": 105690, - "title": "Extension API for Inline Values", + "labels_url": "https://api.github.com/repos/microsoft/vscode/issues/77423/labels{/name}", + "comments_url": "https://api.github.com/repos/microsoft/vscode/issues/77423/comments", + "events_url": "https://api.github.com/repos/microsoft/vscode/issues/77423/events", + "html_url": "https://github.com/microsoft/vscode/issues/77423", + "id": 468297758, + "node_id": "MDU6SXNzdWU0NjgyOTc3NTg=", + "number": 77423, + "title": "Add title property to QuickPickOptions (showQuickPick)", "user": { - "login": "weinand", - "id": 1898161, - "node_id": "MDQ6VXNlcjE4OTgxNjE=", - "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "login": "letmaik", + "id": 530988, + "node_id": "MDQ6VXNlcjUzMDk4OA==", + "avatar_url": "https://avatars.githubusercontent.com/u/530988?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/weinand", - "html_url": "https://github.com/weinand", - "followers_url": "https://api.github.com/users/weinand/followers", - "following_url": "https://api.github.com/users/weinand/following{/other_user}", - "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", - "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", - "organizations_url": "https://api.github.com/users/weinand/orgs", - "repos_url": "https://api.github.com/users/weinand/repos", - "events_url": "https://api.github.com/users/weinand/events{/privacy}", - "received_events_url": "https://api.github.com/users/weinand/received_events", + "url": "https://api.github.com/users/letmaik", + "html_url": "https://github.com/letmaik", + "followers_url": "https://api.github.com/users/letmaik/followers", + "following_url": "https://api.github.com/users/letmaik/following{/other_user}", + "gists_url": "https://api.github.com/users/letmaik/gists{/gist_id}", + "starred_url": "https://api.github.com/users/letmaik/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/letmaik/subscriptions", + "organizations_url": "https://api.github.com/users/letmaik/orgs", + "repos_url": "https://api.github.com/users/letmaik/repos", + "events_url": "https://api.github.com/users/letmaik/events{/privacy}", + "received_events_url": "https://api.github.com/users/letmaik/received_events", "type": "User", "site_admin": false }, "labels": [ - { - "id": 290465400, - "node_id": "MDU6TGFiZWwyOTA0NjU0MDA=", - "url": "https://api.github.com/repos/microsoft/vscode/labels/api", - "name": "api", - "color": "1d76db", - "default": false, - "description": "" - }, { "id": 869332220, "node_id": "MDU6TGFiZWw4NjkzMzIyMjA=", @@ -1214,15 +2368,6 @@ "default": false, "description": "" }, - { - "id": 291054922, - "node_id": "MDU6TGFiZWwyOTEwNTQ5MjI=", - "url": "https://api.github.com/repos/microsoft/vscode/labels/debug", - "name": "debug", - "color": "1d76db", - "default": false, - "description": "Debug viewlet, configurations, breakpoints, adapter issues" - }, { "id": 272689392, "node_id": "MDU6TGFiZWwyNzI2ODkzOTI=", @@ -1231,100 +2376,133 @@ "color": "dcdcdc", "default": false, "description": "Request for new features or functionality" + }, + { + "id": 527005453, + "node_id": "MDU6TGFiZWw1MjcwMDU0NTM=", + "url": "https://api.github.com/repos/microsoft/vscode/labels/quick-pick", + "name": "quick-pick", + "color": "c5def5", + "default": false, + "description": "Quick-pick widget issues" } ], "state": "open", "locked": false, "assignee": { - "login": "weinand", - "id": 1898161, - "node_id": "MDQ6VXNlcjE4OTgxNjE=", - "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "login": "TylerLeonhardt", + "id": 2644648, + "node_id": "MDQ6VXNlcjI2NDQ2NDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2644648?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/weinand", - "html_url": "https://github.com/weinand", - "followers_url": "https://api.github.com/users/weinand/followers", - "following_url": "https://api.github.com/users/weinand/following{/other_user}", - "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", - "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", - "organizations_url": "https://api.github.com/users/weinand/orgs", - "repos_url": "https://api.github.com/users/weinand/repos", - "events_url": "https://api.github.com/users/weinand/events{/privacy}", - "received_events_url": "https://api.github.com/users/weinand/received_events", + "url": "https://api.github.com/users/TylerLeonhardt", + "html_url": "https://github.com/TylerLeonhardt", + "followers_url": "https://api.github.com/users/TylerLeonhardt/followers", + "following_url": "https://api.github.com/users/TylerLeonhardt/following{/other_user}", + "gists_url": "https://api.github.com/users/TylerLeonhardt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TylerLeonhardt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TylerLeonhardt/subscriptions", + "organizations_url": "https://api.github.com/users/TylerLeonhardt/orgs", + "repos_url": "https://api.github.com/users/TylerLeonhardt/repos", + "events_url": "https://api.github.com/users/TylerLeonhardt/events{/privacy}", + "received_events_url": "https://api.github.com/users/TylerLeonhardt/received_events", "type": "User", "site_admin": false }, "assignees": [ { - "login": "weinand", - "id": 1898161, - "node_id": "MDQ6VXNlcjE4OTgxNjE=", - "avatar_url": "https://avatars.githubusercontent.com/u/1898161?v=4", + "login": "TylerLeonhardt", + "id": 2644648, + "node_id": "MDQ6VXNlcjI2NDQ2NDg=", + "avatar_url": "https://avatars.githubusercontent.com/u/2644648?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/weinand", - "html_url": "https://github.com/weinand", - "followers_url": "https://api.github.com/users/weinand/followers", - "following_url": "https://api.github.com/users/weinand/following{/other_user}", - "gists_url": "https://api.github.com/users/weinand/gists{/gist_id}", - "starred_url": "https://api.github.com/users/weinand/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/weinand/subscriptions", - "organizations_url": "https://api.github.com/users/weinand/orgs", - "repos_url": "https://api.github.com/users/weinand/repos", - "events_url": "https://api.github.com/users/weinand/events{/privacy}", - "received_events_url": "https://api.github.com/users/weinand/received_events", + "url": "https://api.github.com/users/TylerLeonhardt", + "html_url": "https://github.com/TylerLeonhardt", + "followers_url": "https://api.github.com/users/TylerLeonhardt/followers", + "following_url": "https://api.github.com/users/TylerLeonhardt/following{/other_user}", + "gists_url": "https://api.github.com/users/TylerLeonhardt/gists{/gist_id}", + "starred_url": "https://api.github.com/users/TylerLeonhardt/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/TylerLeonhardt/subscriptions", + "organizations_url": "https://api.github.com/users/TylerLeonhardt/orgs", + "repos_url": "https://api.github.com/users/TylerLeonhardt/repos", + "events_url": "https://api.github.com/users/TylerLeonhardt/events{/privacy}", + "received_events_url": "https://api.github.com/users/TylerLeonhardt/received_events", + "type": "User", + "site_admin": false + }, + { + "login": "chrmarti", + "id": 9205389, + "node_id": "MDQ6VXNlcjkyMDUzODk=", + "avatar_url": "https://avatars.githubusercontent.com/u/9205389?v=4", + "gravatar_id": "", + "url": "https://api.github.com/users/chrmarti", + "html_url": "https://github.com/chrmarti", + "followers_url": "https://api.github.com/users/chrmarti/followers", + "following_url": "https://api.github.com/users/chrmarti/following{/other_user}", + "gists_url": "https://api.github.com/users/chrmarti/gists{/gist_id}", + "starred_url": "https://api.github.com/users/chrmarti/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/chrmarti/subscriptions", + "organizations_url": "https://api.github.com/users/chrmarti/orgs", + "repos_url": "https://api.github.com/users/chrmarti/repos", + "events_url": "https://api.github.com/users/chrmarti/events{/privacy}", + "received_events_url": "https://api.github.com/users/chrmarti/received_events", "type": "User", "site_admin": false } ], "milestone": { - "url": "https://api.github.com/repos/microsoft/vscode/milestones/142", - "html_url": "https://github.com/microsoft/vscode/milestone/142", - "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/142/labels", - "id": 6286096, - "node_id": "MDk6TWlsZXN0b25lNjI4NjA5Ng==", - "number": 142, - "title": "February 2021", + "url": "https://api.github.com/repos/microsoft/vscode/milestones/144", + "html_url": "https://github.com/microsoft/vscode/milestone/144", + "labels_url": "https://api.github.com/repos/microsoft/vscode/milestones/144/labels", + "id": 6407294, + "node_id": "MDk6TWlsZXN0b25lNjQwNzI5NA==", + "number": 144, + "title": "March 2021", "description": "", "creator": { - "login": "Tyriar", - "id": 2193314, - "node_id": "MDQ6VXNlcjIxOTMzMTQ=", - "avatar_url": "https://avatars.githubusercontent.com/u/2193314?v=4", + "login": "isidorn", + "id": 1926584, + "node_id": "MDQ6VXNlcjE5MjY1ODQ=", + "avatar_url": "https://avatars.githubusercontent.com/u/1926584?v=4", "gravatar_id": "", - "url": "https://api.github.com/users/Tyriar", - "html_url": "https://github.com/Tyriar", - "followers_url": "https://api.github.com/users/Tyriar/followers", - "following_url": "https://api.github.com/users/Tyriar/following{/other_user}", - "gists_url": "https://api.github.com/users/Tyriar/gists{/gist_id}", - "starred_url": "https://api.github.com/users/Tyriar/starred{/owner}{/repo}", - "subscriptions_url": "https://api.github.com/users/Tyriar/subscriptions", - "organizations_url": "https://api.github.com/users/Tyriar/orgs", - "repos_url": "https://api.github.com/users/Tyriar/repos", - "events_url": "https://api.github.com/users/Tyriar/events{/privacy}", - "received_events_url": "https://api.github.com/users/Tyriar/received_events", + "url": "https://api.github.com/users/isidorn", + "html_url": "https://github.com/isidorn", + "followers_url": "https://api.github.com/users/isidorn/followers", + "following_url": "https://api.github.com/users/isidorn/following{/other_user}", + "gists_url": "https://api.github.com/users/isidorn/gists{/gist_id}", + "starred_url": "https://api.github.com/users/isidorn/starred{/owner}{/repo}", + "subscriptions_url": "https://api.github.com/users/isidorn/subscriptions", + "organizations_url": "https://api.github.com/users/isidorn/orgs", + "repos_url": "https://api.github.com/users/isidorn/repos", + "events_url": "https://api.github.com/users/isidorn/events{/privacy}", + "received_events_url": "https://api.github.com/users/isidorn/received_events", "type": "User", "site_admin": false }, - "open_issues": 232, - "closed_issues": 300, + "open_issues": 250, + "closed_issues": 281, "state": "open", - "created_at": "2021-01-07T18:23:10Z", - "updated_at": "2021-02-17T10:48:47Z", + "created_at": "2021-02-08T17:30:20Z", + "updated_at": "2021-03-16T16:43:27Z", "due_on": null, "closed_at": null }, - "comments": 7, - "created_at": "2020-08-30T21:21:23Z", - "updated_at": "2021-02-08T05:21:59Z", + "comments": 2, + "created_at": "2019-07-15T19:31:48Z", + "updated_at": "2021-03-16T16:43:27Z", "closed_at": null, "author_association": "MEMBER", "active_lock_reason": null, - "body": "Today the \"Show Inline Values\" feature of VS Code's debugger is based on a generic implementation in the VS Code core and provides neither customisability through settings, nor extensibility via extensions.\r\n\r\nAs a consequence, it is not a perfect fit for all languages (e.g. #101797) and sometimes even shows incorrect values because it doesn't understand the scope regions of the underlying language. \r\n\r\nThis features asks for an extension API that either replaces the built-in implementation completely or allows to replace parts of the implementation with custom code.\r\n", + "body": "Currently, `title` can only be set when going through the more complex `createQuickPick` API. It would be great if the title could be set via `QuickPickOptions` when using the simpler `showQuickPick`.", "performed_via_github_app": null, "score": 1 } ] + }, + { + "mime": "text/markdown", + "value": "- [#119097](https://github.com/microsoft/vscode/issues/119097 \"Allow extensions to contribute getting started content\") Allow extensions to contribute getting started content [api, api-proposal, feature-request, getting-started]- [@JacksonKearl](https://github.com/JacksonKearl \"Issue 119097 is assigned to JacksonKearl\")\n\n- [#118084](https://github.com/microsoft/vscode/issues/118084 \"Add trigger reason to code actions\") Add trigger reason to code actions [api, api-proposal, editor-code-actions]- [@mjbvz](https://github.com/mjbvz \"Issue 118084 is assigned to mjbvz\")\n\n- [#115631](https://github.com/microsoft/vscode/issues/115631 \"Provide a way for custom editors to process untitled files without relying on textDocument\") Provide a way for custom editors to process untitled files without relying on textDocument [api-finalization, api-proposal, custom-editors, feature-request, notebook]- [@lramos15](https://github.com/lramos15 \"Issue 115631 is assigned to lramos15\")\n\n- [#115626](https://github.com/microsoft/vscode/issues/115626 \"Microsoft Auth Provider should support overriding client id and tenant id\") Microsoft Auth Provider should support overriding client id and tenant id [api-proposal, authentication]- [@TylerLeonhardt](https://github.com/TylerLeonhardt \"Issue 115626 is assigned to TylerLeonhardt\")\n\n- [#115616](https://github.com/microsoft/vscode/issues/115616 \"Provide extension API to exclude ports from forwarding\") Provide extension API to exclude ports from forwarding [api, api-proposal, feature-request, ghcs-in-progress, remote-explorer]\n- [#114898](https://github.com/microsoft/vscode/issues/114898 \"[ext-api] provide Pseudoterminal.onDidChangeName event\") [ext-api] provide Pseudoterminal.onDidChangeName event [api, api-proposal, feature-request, help wanted]- [@Tyriar](https://github.com/Tyriar \"Issue 114898 is assigned to Tyriar\")\n\n- [#111521](https://github.com/microsoft/vscode/issues/111521 \"Support a way to have nightly/insiders versions of extensions not activate if \"main\" extension is installed/enabled\") Support a way to have nightly/insiders versions of extensions not activate if \"main\" extension is installed/enabled [api, api-proposal, extensions, extensions-development, feature-request, marketplace]- [@sandy081](https://github.com/sandy081 \"Issue 111521 is assigned to sandy081\")\n\n- [#109277](https://github.com/microsoft/vscode/issues/109277 \"Let extensions hook into url opening\") Let extensions hook into url opening [api, api-proposal, under-discussion]- [@mjbvz](https://github.com/mjbvz \"Issue 109277 is assigned to mjbvz\")\n\n- [#107467](https://github.com/microsoft/vscode/issues/107467 \"Testing in VS Code\") Testing in VS Code [api-proposal, plan-item, testing, under-discussion]- [@connor4312](https://github.com/connor4312 \"Issue 107467 is assigned to connor4312\")\n\n- [#77423](https://github.com/microsoft/vscode/issues/77423 \"Add title property to QuickPickOptions (showQuickPick)\") Add title property to QuickPickOptions (showQuickPick) [api-proposal, feature-request, quick-pick]- [@TylerLeonhardt](https://github.com/TylerLeonhardt \"Issue 77423 is assigned to TylerLeonhardt\")\n\n" } ] } diff --git a/.vscode/notebooks/endgame.github-issues b/.vscode/notebooks/endgame.github-issues index b39519d8..c0a624c6 100644 --- a/.vscode/notebooks/endgame.github-issues +++ b/.vscode/notebooks/endgame.github-issues @@ -3,147 +3,126 @@ "kind": 1, "language": "markdown", "value": "#### Macros", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", - "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper\n\n$MILESTONE=milestone:\"February 2021\"", - "editable": true, - "outputs": [] + "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server repo:microsoft/vscode-emmet-helper\n\n$MILESTONE=milestone:\"March 2021\"", + "editable": true }, { "kind": 1, "language": "markdown", "value": "# Preparation", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Open Pull Requests on the Milestone", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:pr is:open", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Open Issues on the Milestone", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:open -label:iteration-plan -label:endgame-plan -label:testplan-item", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Feature Requests Missing Labels", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request -label:verification-needed -label:on-testplan -label:verified -label:*duplicate", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "# Testing", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Test Plan Items", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:open label:testplan-item", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Verification Needed", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:closed label:feature-request label:verification-needed -label:verified", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "# Verification", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Verifiable Fixes", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:closed sort:updated-asc label:bug -label:verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -label:z-author-verified -label:unreleased", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "## Unreleased Fixes", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:issue is:closed sort:updated-asc label:bug -label:verified -label:on-testplan -label:*duplicate -label:duplicate -label:invalid -label:*as-designed -label:error-telemetry -label:verification-steps-needed -label:verification-found -label:z-author-verified label:unreleased", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "# Candidates", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$REPOS $MILESTONE is:open label:candidate", - "editable": true, - "outputs": [] + "editable": true } ] \ No newline at end of file diff --git a/.vscode/notebooks/my-endgame.github-issues b/.vscode/notebooks/my-endgame.github-issues index a384d1a1..16a30c9f 100644 --- a/.vscode/notebooks/my-endgame.github-issues +++ b/.vscode/notebooks/my-endgame.github-issues @@ -9,7 +9,7 @@ { "kind": 2, "language": "github-issues", - "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server\n\n$MILESTONE=milestone:\"February 2021\"\n\n$MINE=assignee:@me", + "value": "$REPOS=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-js-debug repo:microsoft/vscode-remote-release repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-settings-sync-server\n\n$MILESTONE=milestone:\"March 2021\"\n\n$MINE=assignee:@me", "editable": true, "outputs": [] }, diff --git a/.vscode/notebooks/my-work.github-issues b/.vscode/notebooks/my-work.github-issues index 4cb58bad..278ab639 100644 --- a/.vscode/notebooks/my-work.github-issues +++ b/.vscode/notebooks/my-work.github-issues @@ -3,133 +3,114 @@ "kind": 1, "language": "markdown", "value": "##### `Config`: This should be changed every month/milestone", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", - "value": "// list of repos we work in\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-internalbacklog\n\n// current milestone name\n$milestone=milestone:\"February 2021\"", - "editable": true, - "outputs": [] + "value": "// list of repos we work in\n$repos=repo:microsoft/vscode repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks repo:microsoft/vscode-internalbacklog\n\n// current milestone name\n$milestone=milestone:\"March 2021\"", + "editable": true }, { "kind": 1, "language": "github-issues", "value": "## Milestone Work", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos $milestone assignee:@me is:open", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "github-issues", "value": "## Bugs, Debt, Features...", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### My Bugs", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open label:bug", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### Debt & Engineering", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open label:debt OR $repos assignee:@me is:open label:engineering", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### Performance 🐌 🔜 🏎", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open label:perf OR $repos assignee:@me is:open label:perf-startup OR $repos assignee:@me is:open label:perf-bloat OR $repos assignee:@me is:open label:freeze-slow-crash-leak", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### Feature Requests", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open label:feature-request milestone:Backlog sort:reactions-+1-desc", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open milestone:\"Backlog Candidates\"", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "### Personal Inbox\n", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "\n#### Missing Type label", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open type:issue -label:bug -label:\"needs more info\" -label:feature-request -label:under-discussion -label:debt -label:plan-item -label:upstream", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### Not Actionable", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos assignee:@me is:open label:\"needs more info\"", - "editable": true, - "outputs": [] + "editable": true } ] \ No newline at end of file diff --git a/.vscode/notebooks/verification.github-issues b/.vscode/notebooks/verification.github-issues index 5724e73c..5c94b133 100644 --- a/.vscode/notebooks/verification.github-issues +++ b/.vscode/notebooks/verification.github-issues @@ -3,63 +3,54 @@ "kind": 1, "language": "markdown", "value": "### Bug Verification Queries\n\nBefore shipping we want to verify _all_ bugs. That means when a bug is fixed we check that the fix actually works. It's always best to start with bugs that you have filed and the proceed with bugs that have been filed from users outside the development team. ", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 1, "language": "markdown", "value": "#### Config: update list of `repos` and the `milestone`", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", - "value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks \n$milestone=milestone:\"February 2021\"", - "editable": true, - "outputs": [] + "value": "$repos=repo:microsoft/vscode repo:microsoft/vscode-internalbacklog repo:microsoft/vscode-remote-release repo:microsoft/vscode-js-debug repo:microsoft/vscode-pull-request-github repo:microsoft/vscode-github-issue-notebooks \n$milestone=milestone:\"March 2021\"", + "editable": true }, { "kind": 1, "language": "markdown", "value": "### Bugs You Filed", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate author:@me", - "editable": false, - "outputs": [] + "editable": false }, { "kind": 1, "language": "markdown", "value": "### Bugs From Outside", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", - "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate -author:@me -assignee:@me label:bug -label:verified -author:@me -author:aeschli -author:alexdima -author:alexr00 -author:bpasero -author:chrisdias -author:chrmarti -author:connor4312 -author:dbaeumer -author:deepak1556 -author:eamodio -author:egamma -author:gregvanl -author:isidorn -author:JacksonKearl -author:joaomoreno -author:jrieken -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:RMacfarlane -author:roblourens -author:sana-ajani -author:sandy081 -author:sbatten -author:Tyriar -author:weinand", - "editable": false, - "outputs": [] + "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate -author:@me -assignee:@me label:bug -label:verified -author:@me -author:aeschli -author:alexdima -author:alexr00 -author:bpasero -author:chrisdias -author:chrmarti -author:connor4312 -author:dbaeumer -author:deepak1556 -author:eamodio -author:egamma -author:gregvanl -author:isidorn -author:JacksonKearl -author:joaomoreno -author:jrieken -author:lramos15 -author:lszomoru -author:meganrogge -author:misolori -author:mjbvz -author:rebornix -author:RMacfarlane -author:roblourens -author:sana-ajani -author:sandy081 -author:sbatten -author:Tyriar -author:weinand -author:rzhao271 -author:kieferrm -author:TylerLeonhardt -author:bamurtaugh", + "editable": false }, { "kind": 1, "language": "markdown", "value": "### All", - "editable": true, - "outputs": [] + "editable": true }, { "kind": 2, "language": "github-issues", "value": "$repos $milestone is:closed -assignee:@me label:bug -label:verified -label:*duplicate", - "editable": false, - "outputs": [] + "editable": false } ] \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index eabef169..caea9547 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -85,5 +85,6 @@ "editor.formatOnSave": true, }, "typescript.tsc.autoDetect": "off", - "notebook.experimental.useMarkdownRenderer": true, + // "notebook.experimental.useMarkdownRenderer": true, + "testing.autoRun.mode": "onlyPreviouslyRun", } diff --git a/README.md b/README.md index eb792510..0a9a62d9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## The Repository -This repository ("`Code - OSS`") is where we (Microsoft) develop the [Visual Studio Code](https://code.visualstudio.com) product. Not only do we work on code and issues here, we also publish our [roadmap](https://github.com/microsoft/vscode/wiki/Roadmap), [monthly iteration plans](https://github.com/microsoft/vscode/wiki/Iteration-Plans), and our [endgame plans](https://github.com/microsoft/vscode/wiki/Running-the-Endgame). This source code is available to everyone under the standard [MIT license](https://github.com/microsoft/vscode/blob/main/LICENSE.txt). +This repository ("`Code - OSS`") is where we (Microsoft) develop the [Visual Studio Code](https://code.visualstudio.com) product together with the community. Not only do we work on code and issues here, we also publish our [roadmap](https://github.com/microsoft/vscode/wiki/Roadmap), [monthly iteration plans](https://github.com/microsoft/vscode/wiki/Iteration-Plans), and our [endgame plans](https://github.com/microsoft/vscode/wiki/Running-the-Endgame). This source code is available to everyone under the standard [MIT license](https://github.com/microsoft/vscode/blob/main/LICENSE.txt). ## Visual Studio Code diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..a050f362 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd). + + diff --git a/ThirdPartyNotices.txt b/ThirdPartyNotices.txt index 4d290f90..a4434f21 100644 --- a/ThirdPartyNotices.txt +++ b/ThirdPartyNotices.txt @@ -8,42 +8,42 @@ This project incorporates components from the projects listed below. The origina 1. JuliaEditorSupport/atom-language-julia version 0.21.0 (https://github.com/JuliaEditorSupport/atom-language-julia) 2. atom/language-clojure version 0.22.7 (https://github.com/atom/language-clojure) 3. atom/language-coffee-script version 0.49.3 (https://github.com/atom/language-coffee-script) -4. atom/language-java version 0.32.1 (https://github.com/atom/language-java) -5. atom/language-sass version 0.62.1 (https://github.com/atom/language-sass) -6. atom/language-shellscript version 0.26.0 (https://github.com/atom/language-shellscript) -7. atom/language-xml version 0.35.2 (https://github.com/atom/language-xml) -8. better-go-syntax version 1.0.0 (https://github.com/jeff-hykin/better-go-syntax/ ) -9. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes) -10. daaain/Handlebars version 1.8.0 (https://github.com/daaain/Handlebars) -11. davidrios/pug-tmbundle (https://github.com/davidrios/pug-tmbundle) -12. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped) -13. demyte/language-cshtml version 0.3.0 (https://github.com/demyte/language-cshtml) -14. Document Object Model version 4.0.0 (https://www.w3.org/DOM/) -15. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage) -16. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation) -17. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle) -18. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift) -19. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/) -20. Ikuyadeu/vscode-R version 1.3.0 (https://github.com/Ikuyadeu/vscode-R) -21. insane version 2.6.2 (https://github.com/bevacqua/insane) -22. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site) -23. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) -24. jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar) -25. jeff-hykin/cpp-textmate-grammar version 1.15.5 (https://github.com/jeff-hykin/cpp-textmate-grammar) -26. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify) -27. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) -28. language-docker (https://github.com/moby/moby) -29. language-less version 0.34.2 (https://github.com/atom/language-less) -30. language-php version 0.46.0 (https://github.com/atom/language-php) -31. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython) -32. marked version 1.1.0 (https://github.com/markedjs/marked) -33. mdn-data version 1.1.12 (https://github.com/mdn/data) -34. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage) -35. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage) -36. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar) -37. microsoft/vscode-mssql version 1.9.0 (https://github.com/microsoft/vscode-mssql) -38. mmims/language-batchfile version 0.7.5 (https://github.com/mmims/language-batchfile) -39. octref/language-css version 0.42.11 (https://github.com/octref/language-css) +4. atom/language-css version 0.44.4 (https://github.com/atom/language-css) +5. atom/language-java version 0.32.1 (https://github.com/atom/language-java) +6. atom/language-sass version 0.62.1 (https://github.com/atom/language-sass) +7. atom/language-shellscript version 0.26.0 (https://github.com/atom/language-shellscript) +8. atom/language-xml version 0.35.2 (https://github.com/atom/language-xml) +9. better-go-syntax version 1.0.0 (https://github.com/jeff-hykin/better-go-syntax/ ) +10. Colorsublime-Themes version 0.1.0 (https://github.com/Colorsublime/Colorsublime-Themes) +11. daaain/Handlebars version 1.8.0 (https://github.com/daaain/Handlebars) +12. davidrios/pug-tmbundle (https://github.com/davidrios/pug-tmbundle) +13. definitelytyped (https://github.com/DefinitelyTyped/DefinitelyTyped) +14. demyte/language-cshtml version 0.3.0 (https://github.com/demyte/language-cshtml) +15. Document Object Model version 4.0.0 (https://www.w3.org/DOM/) +16. dotnet/csharp-tmLanguage version 0.1.0 (https://github.com/dotnet/csharp-tmLanguage) +17. expand-abbreviation version 0.5.8 (https://github.com/emmetio/expand-abbreviation) +18. fadeevab/make.tmbundle (https://github.com/fadeevab/make.tmbundle) +19. freebroccolo/atom-language-swift (https://github.com/freebroccolo/atom-language-swift) +20. HTML 5.1 W3C Working Draft version 08 October 2015 (http://www.w3.org/TR/2015/WD-html51-20151008/) +21. Ikuyadeu/vscode-R version 1.3.0 (https://github.com/Ikuyadeu/vscode-R) +22. insane version 2.6.2 (https://github.com/bevacqua/insane) +23. Ionic documentation version 1.2.4 (https://github.com/ionic-team/ionic-site) +24. ionide/ionide-fsgrammar (https://github.com/ionide/ionide-fsgrammar) +25. jeff-hykin/cpp-textmate-grammar version 1.12.11 (https://github.com/jeff-hykin/cpp-textmate-grammar) +26. jeff-hykin/cpp-textmate-grammar version 1.15.5 (https://github.com/jeff-hykin/cpp-textmate-grammar) +27. js-beautify version 1.6.8 (https://github.com/beautify-web/js-beautify) +28. Jxck/assert version 1.0.0 (https://github.com/Jxck/assert) +29. language-docker (https://github.com/moby/moby) +30. language-less version 0.34.2 (https://github.com/atom/language-less) +31. language-php version 0.46.0 (https://github.com/atom/language-php) +32. MagicStack/MagicPython version 1.1.1 (https://github.com/MagicStack/MagicPython) +33. marked version 1.1.0 (https://github.com/markedjs/marked) +34. mdn-data version 1.1.12 (https://github.com/mdn/data) +35. microsoft/TypeScript-TmLanguage version 0.0.1 (https://github.com/microsoft/TypeScript-TmLanguage) +36. microsoft/vscode-JSON.tmLanguage (https://github.com/microsoft/vscode-JSON.tmLanguage) +37. microsoft/vscode-markdown-tm-grammar version 1.0.0 (https://github.com/microsoft/vscode-markdown-tm-grammar) +38. microsoft/vscode-mssql version 1.9.0 (https://github.com/microsoft/vscode-mssql) +39. mmims/language-batchfile version 0.7.5 (https://github.com/mmims/language-batchfile) 40. PowerShell/EditorSyntax version 1.0.0 (https://github.com/PowerShell/EditorSyntax) 41. rust-syntax version 0.4.3 (https://github.com/dustypomerleau/rust-syntax) 42. seti-ui version 0.1.0 (https://github.com/jesseweed/seti-ui) @@ -204,6 +204,42 @@ OTHER DEALINGS IN THE SOFTWARE. ========================================= END OF atom/language-coffee-script NOTICES AND INFORMATION +%% atom/language-css NOTICES AND INFORMATION BEGIN HERE +========================================= +Copyright (c) 2014 GitHub Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------------------------------------------------------- + +This package was derived from a TextMate bundle located at +https://github.com/textmate/css.tmbundle and distributed under the following +license, located in `README.mdown`: + +Permission to copy, use, modify, sell and distribute this +software is granted. This software is provided "as is" without +express or implied warranty, and with no claim as to its +suitability for any purpose. +========================================= +END OF atom/language-css NOTICES AND INFORMATION + %% atom/language-java NOTICES AND INFORMATION BEGIN HERE ========================================= The MIT License (MIT) @@ -1704,43 +1740,6 @@ THE SOFTWARE. ========================================= END OF mmims/language-batchfile NOTICES AND INFORMATION -%% octref/language-css NOTICES AND INFORMATION BEGIN HERE -========================================= -The MIT License (MIT) - -Copyright (c) 2014 GitHub Inc. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -This package was derived from a TextMate bundle located at -https://github.com/textmate/css.tmbundle and distributed under the following -license, located in `README.mdown`: - -Permission to copy, use, modify, sell and distribute this -software is granted. This software is provided "as is" without -express or implied warranty, and with no claim as to its -suitability for any purpose. -========================================= -END OF octref/language-css NOTICES AND INFORMATION - %% PowerShell/EditorSyntax NOTICES AND INFORMATION BEGIN HERE ========================================= Copyright (c) Microsoft Corporation diff --git a/build/.moduleignore b/build/.moduleignore index d1f9194b..98bca26e 100644 --- a/build/.moduleignore +++ b/build/.moduleignore @@ -80,13 +80,11 @@ node-pty/scripts/** !node-pty/build/Release/*.dll !node-pty/build/Release/*.node -vscode-nsfw/binding.gyp -vscode-nsfw/build/** -vscode-nsfw/src/** -vscode-nsfw/openpa/** -vscode-nsfw/includes/** -!vscode-nsfw/build/Release/*.node -!vscode-nsfw/**/*.a +nsfw/binding.gyp +nsfw/build/** +nsfw/src/** +nsfw/includes/** +!nsfw/build/Release/*.node vsda/build/** vsda/ci/** diff --git a/build/azure-pipelines/darwin/product-build-darwin-sign.yml b/build/azure-pipelines/darwin/product-build-darwin-sign.yml new file mode 100644 index 00000000..b978cf57 --- /dev/null +++ b/build/azure-pipelines/darwin/product-build-darwin-sign.yml @@ -0,0 +1,129 @@ +steps: + - task: NodeTool@0 + inputs: + versionSpec: "12.18.3" + + - task: AzureKeyVault@1 + displayName: "Azure Key Vault: Get Secrets" + inputs: + azureSubscription: "vscode-builds-subscription" + KeyVaultName: vscode + + - script: | + set -e + cat << EOF > ~/.netrc + machine github.com + login vscode + password $(github-distro-mixin-password) + EOF + + git config user.email "vscode@microsoft.com" + git config user.name "VSCode" + displayName: Prepare tooling + + - script: | + set -e + git pull --no-rebase https://github.com/$(VSCODE_MIXIN_REPO).git $(node -p "require('./package.json').distro") + displayName: Merge distro + + - script: | + pushd build \ + && yarn \ + && npm install -g typescript \ + && tsc azure-pipelines/common/createAsset.ts \ + && popd + displayName: Restore modules for just build folder and compile it + + - download: current + artifact: vscode-darwin-$(VSCODE_ARCH) + displayName: Download $(VSCODE_ARCH) artifact + + - script: | + set -e + unzip $(Pipeline.Workspace)/vscode-darwin-$(VSCODE_ARCH)/VSCode-darwin-$(VSCODE_ARCH).zip -d $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) + mv $(Pipeline.Workspace)/vscode-darwin-$(VSCODE_ARCH)/VSCode-darwin-$(VSCODE_ARCH).zip $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip + displayName: Unzip & move + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 + inputs: + ConnectedServiceName: "ESRP CodeSign" + FolderPath: "$(agent.builddirectory)" + Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip" + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "keyCode": "CP-401337-Apple", + "operationSetCode": "MacAppDeveloperSign", + "parameters": [ + { + "parameterName": "Hardening", + "parameterValue": "--options=runtime" + } + ], + "toolName": "sign", + "toolVersion": "1.0" + } + ] + SessionTimeout: 60 + displayName: Codesign + + - script: | + APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) + APP_NAME="`ls $APP_ROOT | head -n 1`" + BUNDLE_IDENTIFIER=$(node -p "require(\"$APP_ROOT/$APP_NAME/Contents/Resources/app/product.json\").darwinBundleIdentifier") + echo "##vso[task.setvariable variable=BundleIdentifier]$BUNDLE_IDENTIFIER" + displayName: Export bundle identifier + + - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 + inputs: + ConnectedServiceName: "ESRP CodeSign" + FolderPath: "$(agent.builddirectory)" + Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip" + signConfigType: inlineSignParams + inlineOperation: | + [ + { + "keyCode": "CP-401337-Apple", + "operationSetCode": "MacAppNotarize", + "parameters": [ + { + "parameterName": "BundleId", + "parameterValue": "$(BundleIdentifier)" + } + ], + "toolName": "sign", + "toolVersion": "1.0" + } + ] + SessionTimeout: 60 + displayName: Notarization + + - script: | + set -e + APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) + APP_NAME="`ls $APP_ROOT | head -n 1`" + "$APP_ROOT/$APP_NAME/Contents/Resources/app/bin/code" --export-default-configuration=.build + displayName: Verify start after signing (export configuration) + condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64')) + + - script: | + set -e + + # For legacy purposes, arch for x64 is just 'darwin' + case $VSCODE_ARCH in + x64) ASSET_ID="darwin" ;; + arm64) ASSET_ID="darwin-arm64" ;; + universal) ASSET_ID="darwin-universal" ;; + esac + + VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ + AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \ + AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \ + AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \ + node build/azure-pipelines/common/createAsset.js \ + "$ASSET_ID" \ + archive \ + "VSCode-$ASSET_ID.zip" \ + ../VSCode-darwin-$(VSCODE_ARCH).zip + displayName: Publish Clients diff --git a/build/azure-pipelines/darwin/product-build-darwin.yml b/build/azure-pipelines/darwin/product-build-darwin.yml index 2c6cf3dd..d3346552 100644 --- a/build/azure-pipelines/darwin/product-build-darwin.yml +++ b/build/azure-pipelines/darwin/product-build-darwin.yml @@ -22,6 +22,8 @@ steps: displayName: Extract compilation output condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal')) + # Set up the credentials to retrieve distro repo and setup git persona + # to create a merge commit for when we merge distro into oss - script: | set -e cat << EOF > ~/.netrc @@ -119,16 +121,7 @@ steps: displayName: Rebuild native modules for ARM64 condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'arm64')) - - download: current - artifact: vscode-darwin-x64 - displayName: Download x64 artifact - condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) - - - download: current - artifact: vscode-darwin-arm64 - displayName: Download arm64 artifact - condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) - + # This script brings in the right resources (images, icons, etc) based on the quality (insiders, stable, exploration) - script: | set -e node build/azure-pipelines/mixin @@ -138,7 +131,7 @@ steps: set -e VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ yarn gulp vscode-darwin-$(VSCODE_ARCH)-min-ci - displayName: Build + displayName: Build client condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal')) - script: | @@ -150,14 +143,6 @@ steps: displayName: Build Server condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64')) - - script: | - set -e - unzip $(Pipeline.Workspace)/vscode-darwin-x64/VSCode-darwin-x64.zip -d $(agent.builddirectory)/vscode-x64 - unzip $(Pipeline.Workspace)/vscode-darwin-arm64/VSCode-darwin-arm64.zip -d $(agent.builddirectory)/vscode-arm64 - DEBUG=* node build/darwin/create-universal-app.js - displayName: Create Universal App - condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) - - script: | set -e VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ @@ -165,6 +150,29 @@ steps: displayName: Download Electron and Playwright condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'universal'), eq(variables['VSCODE_STEP_ON_IT'], 'false')) + - download: current + artifact: vscode-darwin-x64 + displayName: Download x64 artifact + condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) + + - download: current + artifact: vscode-darwin-arm64 + displayName: Download arm64 artifact + condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) + + - script: | + set -e + cp $(Pipeline.Workspace)/vscode-darwin-x64/VSCode-darwin-x64.zip $(agent.builddirectory)/VSCode-darwin-x64.zip + cp $(Pipeline.Workspace)/vscode-darwin-arm64/VSCode-darwin-arm64.zip $(agent.builddirectory)/VSCode-darwin-arm64.zip + unzip $(agent.builddirectory)/VSCode-darwin-x64.zip -d $(agent.builddirectory)/VSCode-darwin-x64 + unzip $(agent.builddirectory)/VSCode-darwin-arm64.zip -d $(agent.builddirectory)/VSCode-darwin-arm64 + DEBUG=* node build/darwin/create-universal-app.js + displayName: Create Universal App + condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'universal')) + + # Setting hardened entitlements is a requirement for: + # * Apple notarization + # * Running tests on Big Sur (because Big Sur has additional security precautions) - script: | set -e security create-keychain -p pwd $(agent.tempdirectory)/buildagent.keychain @@ -173,9 +181,8 @@ steps: echo "$(macos-developer-certificate)" | base64 -D > $(agent.tempdirectory)/cert.p12 security import $(agent.tempdirectory)/cert.p12 -k $(agent.tempdirectory)/buildagent.keychain -P "$(macos-developer-certificate-key)" -T /usr/bin/codesign security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k pwd $(agent.tempdirectory)/buildagent.keychain - VSCODE_ARCH="$(VSCODE_ARCH)" DEBUG=electron-osx-sign* node build/darwin/sign.js + VSCODE_ARCH=$(VSCODE_ARCH) DEBUG=electron-osx-sign* node build/darwin/sign.js displayName: Set Hardened Entitlements - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - script: | set -e @@ -284,91 +291,19 @@ steps: displayName: Archive build condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 - inputs: - ConnectedServiceName: "ESRP CodeSign" - FolderPath: "$(agent.builddirectory)" - Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip" - signConfigType: inlineSignParams - inlineOperation: | - [ - { - "keyCode": "CP-401337-Apple", - "operationSetCode": "MacAppDeveloperSign", - "parameters": [ - { - "parameterName": "Hardening", - "parameterValue": "--options=runtime" - } - ], - "toolName": "sign", - "toolVersion": "1.0" - } - ] - SessionTimeout: 60 - displayName: Codesign - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - - - script: | - zip -d $(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH).zip "*.pkg" - displayName: Clean - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - - - script: | - APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) - APP_NAME="`ls $APP_ROOT | head -n 1`" - BUNDLE_IDENTIFIER=$(node -p "require(\"$APP_ROOT/$APP_NAME/Contents/Resources/app/product.json\").darwinBundleIdentifier") - echo "##vso[task.setvariable variable=BundleIdentifier]$BUNDLE_IDENTIFIER" - displayName: Export bundle identifier - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - - - task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@1 - inputs: - ConnectedServiceName: "ESRP CodeSign" - FolderPath: "$(agent.builddirectory)" - Pattern: "VSCode-darwin-$(VSCODE_ARCH).zip" - signConfigType: inlineSignParams - inlineOperation: | - [ - { - "keyCode": "CP-401337-Apple", - "operationSetCode": "MacAppNotarize", - "parameters": [ - { - "parameterName": "BundleId", - "parameterValue": "$(BundleIdentifier)" - } - ], - "toolName": "sign", - "toolVersion": "1.0" - } - ] - SessionTimeout: 60 - displayName: Notarization - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - - - script: | - set -e - APP_ROOT=$(agent.builddirectory)/VSCode-darwin-$(VSCODE_ARCH) - APP_NAME="`ls $APP_ROOT | head -n 1`" - "$APP_ROOT/$APP_NAME/Contents/Resources/app/bin/code" --export-default-configuration=.build - displayName: Verify start after signing (export configuration) - condition: and(succeeded(), ne(variables['VSCODE_ARCH'], 'arm64'), ne(variables['VSCODE_PUBLISH'], 'false')) - - script: | set -e VSCODE_MIXIN_PASSWORD="$(github-distro-mixin-password)" \ AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \ AZURE_STORAGE_ACCESS_KEY="$(ticino-storage-key)" \ AZURE_STORAGE_ACCESS_KEY_2="$(vscode-storage-key)" \ - VSCODE_ARCH="$(VSCODE_ARCH)" \ - ./build/azure-pipelines/darwin/publish.sh - displayName: Publish - condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) + VSCODE_ARCH="$(VSCODE_ARCH)" ./build/azure-pipelines/darwin/publish-server.sh + displayName: Publish Servers + condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false')) - publish: $(Agent.BuildDirectory)/VSCode-darwin-$(VSCODE_ARCH).zip artifact: vscode-darwin-$(VSCODE_ARCH) - displayName: Publish archive + displayName: Publish client archive condition: and(succeeded(), ne(variables['VSCODE_PUBLISH'], 'false')) - publish: $(Agent.BuildDirectory)/vscode-server-darwin.zip @@ -386,5 +321,5 @@ steps: VSCODE_ARCH="$(VSCODE_ARCH)" \ yarn gulp upload-vscode-configuration displayName: Upload configuration (for Bing settings search) - condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64'), ne(variables['VSCODE_PUBLISH'], 'false')) + condition: and(succeeded(), eq(variables['VSCODE_ARCH'], 'x64')) continueOnError: true diff --git a/build/azure-pipelines/darwin/publish.sh b/build/azure-pipelines/darwin/publish-server.sh similarity index 57% rename from build/azure-pipelines/darwin/publish.sh rename to build/azure-pipelines/darwin/publish-server.sh index df5b9770..72a85942 100755 --- a/build/azure-pipelines/darwin/publish.sh +++ b/build/azure-pipelines/darwin/publish-server.sh @@ -1,20 +1,6 @@ #!/usr/bin/env bash set -e -# Publish DEB -case $VSCODE_ARCH in - x64) ASSET_ID="darwin" ;; - arm64) ASSET_ID="darwin-arm64" ;; - universal) ASSET_ID="darwin-universal" ;; -esac - -# publish the build -node build/azure-pipelines/common/createAsset.js \ - "$ASSET_ID" \ - archive \ - "VSCode-$ASSET_ID.zip" \ - ../VSCode-darwin-$VSCODE_ARCH.zip - if [ "$VSCODE_ARCH" == "x64" ]; then # package Remote Extension Host pushd .. && mv vscode-reh-darwin vscode-server-darwin && zip -Xry vscode-server-darwin.zip vscode-server-darwin && popd diff --git a/build/azure-pipelines/linux/product-build-linux.yml b/build/azure-pipelines/linux/product-build-linux.yml index 28f509cb..60b5ea9f 100644 --- a/build/azure-pipelines/linux/product-build-linux.yml +++ b/build/azure-pipelines/linux/product-build-linux.yml @@ -97,10 +97,6 @@ steps: fi echo "Yarn failed $i, trying again..." done - - # remove once https://github.com/prebuild/prebuild-install/pull/140 is merged and found in keytar - cd ./node_modules/keytar - npx node-gyp rebuild env: ELECTRON_SKIP_BINARY_DOWNLOAD: 1 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: 1 diff --git a/build/azure-pipelines/linux/snap-build-linux.yml b/build/azure-pipelines/linux/snap-build-linux.yml index 09c5488f..c2f82083 100644 --- a/build/azure-pipelines/linux/snap-build-linux.yml +++ b/build/azure-pipelines/linux/snap-build-linux.yml @@ -48,7 +48,7 @@ steps: x64) SNAPCRAFT_TARGET_ARGS="" ;; *) SNAPCRAFT_TARGET_ARGS="--target-arch $(VSCODE_ARCH)" ;; esac - (cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft snap $SNAPCRAFT_TARGET_ARGS --output "$SNAP_PATH") + (cd $SNAP_ROOT/code-* && sudo --preserve-env snapcraft prime $SNAPCRAFT_TARGET_ARGS && snap pack prime --compression=lzo --filename="$SNAP_PATH") # Publish snap package AZURE_DOCUMENTDB_MASTERKEY="$(builds-docdb-key-readwrite)" \ diff --git a/build/azure-pipelines/product-build.yml b/build/azure-pipelines/product-build.yml index 011f8d4f..df60d23e 100644 --- a/build/azure-pipelines/product-build.yml +++ b/build/azure-pipelines/product-build.yml @@ -254,6 +254,15 @@ stages: VSCODE_ARCH: x64 steps: - template: darwin/product-build-darwin.yml + - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}: + - job: macOSSign + dependsOn: + - macOS + timeoutInMinutes: 90 + variables: + VSCODE_ARCH: x64 + steps: + - template: darwin/product-build-darwin-sign.yml - ${{ if and(eq(variables['VSCODE_CIBUILD'], false), eq(parameters.VSCODE_BUILD_MACOS_ARM64, true)) }}: - job: macOSARM64 @@ -262,6 +271,15 @@ stages: VSCODE_ARCH: arm64 steps: - template: darwin/product-build-darwin.yml + - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}: + - job: macOSARM64Sign + dependsOn: + - macOSARM64 + timeoutInMinutes: 90 + variables: + VSCODE_ARCH: arm64 + steps: + - template: darwin/product-build-darwin-sign.yml - ${{ if eq(variables['VSCODE_BUILD_MACOS_UNIVERSAL'], true) }}: - job: macOSUniversal @@ -273,6 +291,15 @@ stages: VSCODE_ARCH: universal steps: - template: darwin/product-build-darwin.yml + - ${{ if ne(variables['VSCODE_PUBLISH'], 'false') }}: + - job: macOSUniversalSign + dependsOn: + - macOSUniversal + timeoutInMinutes: 90 + variables: + VSCODE_ARCH: universal + steps: + - template: darwin/product-build-darwin-sign.yml - ${{ if and(eq(variables['VSCODE_PUBLISH'], true), eq(parameters.VSCODE_COMPILE_ONLY, false)) }}: - stage: Mooncake diff --git a/build/azure-pipelines/publish-types/update-types.js b/build/azure-pipelines/publish-types/update-types.js index 0957c5a8..3ceb35bd 100644 --- a/build/azure-pipelines/publish-types/update-types.js +++ b/build/azure-pipelines/publish-types/update-types.js @@ -60,7 +60,7 @@ function getNewFileHeader(tag) { `/*---------------------------------------------------------------------------------------------`, ` * Copyright (c) Microsoft Corporation. All rights reserved.`, ` * Licensed under the MIT License.`, - ` * See https://github.com/microsoft/vscode/blob/master/LICENSE.txt for license information.`, + ` * See https://github.com/microsoft/vscode/blob/main/LICENSE.txt for license information.`, ` *--------------------------------------------------------------------------------------------*/`, ``, `/**`, diff --git a/build/darwin/create-universal-app.js b/build/darwin/create-universal-app.js index bcd51d37..6e4acb28 100644 --- a/build/darwin/create-universal-app.js +++ b/build/darwin/create-universal-app.js @@ -16,8 +16,8 @@ async function main() { throw new Error('$AGENT_BUILDDIRECTORY not set'); } const appName = product.nameLong + '.app'; - const x64AppPath = path.join(buildDir, 'vscode-x64', appName); - const arm64AppPath = path.join(buildDir, 'vscode-arm64', appName); + const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName); + const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName); const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar'); const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar'); const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName); diff --git a/build/darwin/create-universal-app.ts b/build/darwin/create-universal-app.ts index c42d43c7..0ec9e2a5 100644 --- a/build/darwin/create-universal-app.ts +++ b/build/darwin/create-universal-app.ts @@ -20,8 +20,8 @@ async function main() { } const appName = product.nameLong + '.app'; - const x64AppPath = path.join(buildDir, 'vscode-x64', appName); - const arm64AppPath = path.join(buildDir, 'vscode-arm64', appName); + const x64AppPath = path.join(buildDir, 'VSCode-darwin-x64', appName); + const arm64AppPath = path.join(buildDir, 'VSCode-darwin-arm64', appName); const x64AsarPath = path.join(x64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar'); const arm64AsarPath = path.join(arm64AppPath, 'Contents', 'Resources', 'app', 'node_modules.asar'); const outAppPath = path.join(buildDir, `VSCode-darwin-${arch}`, appName); diff --git a/build/filters.js b/build/filters.js index 07bdfcbc..8c0b94dc 100644 --- a/build/filters.js +++ b/build/filters.js @@ -51,8 +51,10 @@ module.exports.indentationFilter = [ '!test/monaco/out/**', '!test/smoke/out/**', '!extensions/typescript-language-features/test-workspace/**', + '!extensions/notebook-markdown-extensions/notebook-out/**', '!extensions/vscode-api-tests/testWorkspace/**', '!extensions/vscode-api-tests/testWorkspace2/**', + '!extensions/vscode-custom-editor-tests/test-workspace/**', '!build/monaco/**', '!build/win32/**', @@ -117,6 +119,7 @@ module.exports.copyrightFilter = [ '!resources/completions/**', '!extensions/configuration-editing/build/inline-allOf.ts', '!extensions/markdown-language-features/media/highlight.css', + '!extensions/notebook-markdown-extensions/notebook-out/**', '!extensions/html-language-features/server/src/modes/typescript/*', '!extensions/*/server/bin/*', '!src/vs/editor/test/node/classification/typescript-test.ts', diff --git a/build/gulpfile.extensions.js b/build/gulpfile.extensions.js index 60d6a79c..e7df9718 100644 --- a/build/gulpfile.extensions.js +++ b/build/gulpfile.extensions.js @@ -199,7 +199,39 @@ exports.watchExtensionsTask = watchExtensionsTask; const compileExtensionsBuildLegacyTask = task.define('compile-extensions-build-legacy', task.parallel(...tasks.map(t => t.compileBuildTask))); gulp.task(compileExtensionsBuildLegacyTask); -// Azure Pipelines +//#region Extension media + +// Additional projects to webpack. These typically build code for webviews +const mediaCompilations = [ + 'markdown-language-features/webpack.config.js', + 'markdown-language-features/webpack.notebook.js', + 'notebook-markdown-extensions/webpack.notebook.js', + 'simple-browser/webpack.config.js', +]; + +const compileExtensionMediaTask = task.define('compile-extension-media', () => buildExtensionMedia(false)); +gulp.task(compileExtensionMediaTask); +exports.compileExtensionMediaTask = compileExtensionMediaTask; + +const watchExtensionMedia = task.define('watch-extension-media', () => buildExtensionMedia(true)); +gulp.task(watchExtensionMedia); +exports.watchExtensionMedia = watchExtensionMedia; + +function buildExtensionMedia(isWatch, outputRoot) { + const webpackConfigLocations = mediaCompilations.map(p => { + return { + configPath: path.join(extensionsPath, p), + outputRoot: outputRoot ? path.join(root, outputRoot, path.dirname(p)) : undefined + }; + }); + return webpackExtensions('packaging extension media', isWatch, webpackConfigLocations); +} +const compileExtensionMediaBuildTask = task.define('compile-extension-media-build', () => buildExtensionMedia(false, '.build/extensions')); +gulp.task(compileExtensionMediaBuildTask); + +//#endregion + +//#region Azure Pipelines const cleanExtensionsBuildTask = task.define('clean-extensions-build', util.rimraf('.build/extensions')); const compileExtensionsBuildTask = task.define('compile-extensions-build', task.series( @@ -209,10 +241,12 @@ const compileExtensionsBuildTask = task.define('compile-extensions-build', task. )); gulp.task(compileExtensionsBuildTask); -gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask))); +gulp.task(task.define('extensions-ci', task.series(compileExtensionsBuildTask, compileExtensionMediaBuildTask))); exports.compileExtensionsBuildTask = compileExtensionsBuildTask; +//#endregion + const compileWebExtensionsTask = task.define('compile-web', () => buildWebExtensions(false)); gulp.task(compileWebExtensionsTask); exports.compileWebExtensionsTask = compileWebExtensionsTask; @@ -222,23 +256,39 @@ gulp.task(watchWebExtensionsTask); exports.watchWebExtensionsTask = watchWebExtensionsTask; async function buildWebExtensions(isWatch) { - const webpack = require('webpack'); - const webpackConfigLocations = await nodeUtil.promisify(glob)( path.join(extensionsPath, '**', 'extension-browser.webpack.config.js'), { ignore: ['**/node_modules'] } ); + return webpackExtensions('packaging web extension', isWatch, webpackConfigLocations.map(configPath => ({ configPath }))); +} + +/** + * @param {string} taskName + * @param {boolean} isWatch + * @param {{ configPath: string, outputRoot?: boolean}} webpackConfigLocations + */ +async function webpackExtensions(taskName, isWatch, webpackConfigLocations) { + const webpack = require('webpack'); const webpackConfigs = []; - for (const webpackConfigPath of webpackConfigLocations) { - const configOrFnOrArray = require(webpackConfigPath); + for (const { configPath, outputRoot } of webpackConfigLocations) { + const configOrFnOrArray = require(configPath); function addConfig(configOrFn) { + let config; if (typeof configOrFn === 'function') { - webpackConfigs.push(configOrFn({}, {})); + config = configOrFn({}, {}); + webpackConfigs.push(config); } else { - webpackConfigs.push(configOrFn); + config = configOrFn; } + + if (outputRoot) { + config.output.path = path.join(outputRoot, path.relative(path.dirname(configPath), config.output.path)); + } + + webpackConfigs.push(configOrFn); } addConfig(configOrFnOrArray); } @@ -249,7 +299,7 @@ async function buildWebExtensions(isWatch) { if (outputPath) { const relativePath = path.relative(extensionsPath, outputPath).replace(/\\/g, '/'); const match = relativePath.match(/[^\/]+(\/server|\/client)?/); - fancyLog(`Finished ${ansiColors.green('packaging web extension')} ${ansiColors.cyan(match[0])} with ${stats.errors.length} errors.`); + fancyLog(`Finished ${ansiColors.green(taskName)} ${ansiColors.cyan(match[0])} with ${stats.errors.length} errors.`); } if (Array.isArray(stats.errors)) { stats.errors.forEach(error => { diff --git a/build/gulpfile.js b/build/gulpfile.js index 69b37c7c..8b991e27 100644 --- a/build/gulpfile.js +++ b/build/gulpfile.js @@ -13,7 +13,7 @@ const util = require('./lib/util'); const task = require('./lib/task'); const compilation = require('./lib/compilation'); const { monacoTypecheckTask/* , monacoTypecheckWatchTask */ } = require('./gulpfile.editor'); -const { compileExtensionsTask, watchExtensionsTask } = require('./gulpfile.extensions'); +const { compileExtensionsTask, watchExtensionsTask, compileExtensionMediaTask } = require('./gulpfile.extensions'); // Fast compile for development time const compileClientTask = task.define('compile-client', task.series(util.rimraf('out'), compilation.compileTask('src', 'out', false))); @@ -23,7 +23,7 @@ const watchClientTask = task.define('watch-client', task.series(util.rimraf('out gulp.task(watchClientTask); // All -const compileTask = task.define('compile', task.parallel(monacoTypecheckTask, compileClientTask, compileExtensionsTask)); +const compileTask = task.define('compile', task.parallel(monacoTypecheckTask, compileClientTask, compileExtensionsTask, compileExtensionMediaTask)); gulp.task(compileTask); gulp.task(task.define('watch', task.parallel(/* monacoTypecheckWatchTask, */ watchClientTask, watchExtensionsTask))); diff --git a/build/gulpfile.vscode.js b/build/gulpfile.vscode.js index e3ca3514..a06f3f63 100644 --- a/build/gulpfile.vscode.js +++ b/build/gulpfile.vscode.js @@ -58,9 +58,9 @@ const vscodeResources = [ 'out-build/vs/base/common/performance.js', 'out-build/vs/base/node/languagePacks.js', 'out-build/vs/base/node/{stdForkStart.js,terminateProcess.sh,cpuUsage.sh,ps.sh}', - 'out-build/vs/base/node/userDataPath.js', 'out-build/vs/base/browser/ui/codicons/codicon/**', 'out-build/vs/base/parts/sandbox/electron-browser/preload.js', + 'out-build/vs/platform/environment/node/userDataPath.js', 'out-build/vs/workbench/browser/media/*-theme.css', 'out-build/vs/workbench/contrib/debug/**/*.json', 'out-build/vs/workbench/contrib/externalTerminal/**/*.scpt', diff --git a/build/lib/electron.js b/build/lib/electron.js index 42b7c2f8..a7e397e7 100644 --- a/build/lib/electron.js +++ b/build/lib/electron.js @@ -28,7 +28,7 @@ exports.config = { version: util.getElectronVersion(), productAppName: product.nameLong, companyName: 'Microsoft Corporation', - copyright: 'Copyright (C) 2019 Microsoft. All rights reserved', + copyright: 'Copyright (C) 2021 Microsoft. All rights reserved', darwinIcon: 'resources/darwin/code.icns', darwinBundleIdentifier: product.darwinBundleIdentifier, darwinApplicationCategoryType: 'public.app-category.developer-tools', diff --git a/build/lib/i18n.js b/build/lib/i18n.js index 7a529824..50ec3f3f 100644 --- a/build/lib/i18n.js +++ b/build/lib/i18n.js @@ -237,14 +237,14 @@ XLF.parse = function (xlfString) { } let val = unit.target[0]; if (typeof val !== 'string') { - val = val._; + // We allow empty source values so support them for translations as well. + val = val._ ? val._ : ''; } - if (key && val) { - messages[key] = decodeEntities(val); - } - else { - reject(new Error(`XLF parsing error: XLIFF file ${originalFilePath} does not contain full localization data. ID or target translation for one of the trans-unit nodes is not present.`)); + if (!key) { + reject(new Error(`XLF parsing error: trans-unit ${JSON.stringify(unit, undefined, 0)} defined in file ${originalFilePath} is missing the ID attribute.`)); + return; } + messages[key] = decodeEntities(val); }); files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() }); } diff --git a/build/lib/i18n.ts b/build/lib/i18n.ts index a23b58cc..746c481b 100644 --- a/build/lib/i18n.ts +++ b/build/lib/i18n.ts @@ -339,13 +339,14 @@ export class XLF { let val = unit.target[0]; if (typeof val !== 'string') { - val = val._; + // We allow empty source values so support them for translations as well. + val = val._ ? val._ : ''; } - if (key && val) { - messages[key] = decodeEntities(val); - } else { - reject(new Error(`XLF parsing error: XLIFF file ${originalFilePath} does not contain full localization data. ID or target translation for one of the trans-unit nodes is not present.`)); + if (!key) { + reject(new Error(`XLF parsing error: trans-unit ${JSON.stringify(unit, undefined, 0)} defined in file ${originalFilePath} is missing the ID attribute.`)); + return; } + messages[key] = decodeEntities(val); }); files.push({ messages: messages, originalFilePath: originalFilePath, language: language.toLowerCase() }); } diff --git a/build/lib/layersChecker.js b/build/lib/layersChecker.js index 9ef9dc59..147d038f 100644 --- a/build/lib/layersChecker.js +++ b/build/lib/layersChecker.js @@ -56,6 +56,7 @@ const CORE_TYPES = [ const NATIVE_TYPES = [ 'NativeParsedArgs', 'INativeEnvironmentService', + 'AbstractNativeEnvironmentService', 'INativeWindowConfiguration', 'ICommonNativeHostService' ]; @@ -80,19 +81,9 @@ const RULES = [ '@types/node' // no node.js ] }, - // Common: vs/platform/environment/common/argv.ts + // Common: vs/platform/environment/common/* { - target: '**/vs/platform/environment/common/argv.ts', - disallowedTypes: [ /* Ignore native types that are defined from here */], - allowedTypes: CORE_TYPES, - disallowedDefinitions: [ - 'lib.dom.d.ts', - '@types/node' // no node.js - ] - }, - // Common: vs/platform/environment/common/environment.ts - { - target: '**/vs/platform/environment/common/environment.ts', + target: '**/vs/platform/environment/common/*.ts', disallowedTypes: [ /* Ignore native types that are defined from here */], allowedTypes: CORE_TYPES, disallowedDefinitions: [ diff --git a/build/lib/layersChecker.ts b/build/lib/layersChecker.ts index c0d67db6..5b8e7fc6 100644 --- a/build/lib/layersChecker.ts +++ b/build/lib/layersChecker.ts @@ -58,6 +58,7 @@ const CORE_TYPES = [ const NATIVE_TYPES = [ 'NativeParsedArgs', 'INativeEnvironmentService', + 'AbstractNativeEnvironmentService', 'INativeWindowConfiguration', 'ICommonNativeHostService' ]; @@ -87,20 +88,9 @@ const RULES = [ ] }, - // Common: vs/platform/environment/common/argv.ts + // Common: vs/platform/environment/common/* { - target: '**/vs/platform/environment/common/argv.ts', - disallowedTypes: [/* Ignore native types that are defined from here */], - allowedTypes: CORE_TYPES, - disallowedDefinitions: [ - 'lib.dom.d.ts', // no DOM - '@types/node' // no node.js - ] - }, - - // Common: vs/platform/environment/common/environment.ts - { - target: '**/vs/platform/environment/common/environment.ts', + target: '**/vs/platform/environment/common/*.ts', disallowedTypes: [/* Ignore native types that are defined from here */], allowedTypes: CORE_TYPES, disallowedDefinitions: [ diff --git a/build/monaco/package.json b/build/monaco/package.json index e26efaa5..9a6e05c1 100644 --- a/build/monaco/package.json +++ b/build/monaco/package.json @@ -1,7 +1,7 @@ { "name": "monaco-editor-core", "private": true, - "version": "0.22.0", + "version": "0.23.0", "description": "A browser based code editor", "author": "Microsoft Corporation", "license": "MIT", diff --git a/build/package.json b/build/package.json index cb70e429..b0e1e837 100644 --- a/build/package.json +++ b/build/package.json @@ -52,7 +52,7 @@ "p-limit": "^3.1.0", "plist": "^3.0.1", "source-map": "0.6.1", - "typescript": "^4.3.0-dev.20210216", + "typescript": "^4.3.0-dev.20210305", "vsce": "1.48.0", "vscode-universal": "deepak1556/universal#61454d96223b774c53cda10f72c2098c0ce02d58" }, diff --git a/build/yarn.lock b/build/yarn.lock index 67dd26a7..870750b9 100644 --- a/build/yarn.lock +++ b/build/yarn.lock @@ -1884,10 +1884,10 @@ typescript@^4.1.3: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.3.tgz#519d582bd94cba0cf8934c7d8e8467e473f53bb7" integrity sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg== -typescript@^4.3.0-dev.20210216: - version "4.3.0-dev.20210216" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.0-dev.20210216.tgz#233327e6094008c02265ba140f8d9ece9133421e" - integrity sha512-pJLcC/kqnE+0rftTRc2/gYBkz9nl+kJfaU8sSOLYnzUvD8p+LOZMzXfaLoKPdGFJ6U9+Ox/sYV9HBTJVEjSTYg== +typescript@^4.3.0-dev.20210305: + version "4.3.0-dev.20210305" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.0-dev.20210305.tgz#5e354b303c435f84a25fa82f45e9c412bfd5bd8f" + integrity sha512-OTALeeen7kl6FU1tcXRk3h+WY1NnE5lwyTGAZUCt9hw6tdaifgLXqEkfw9NHJc0xKV6PnU8GgnYFFVVyHLPSHg== uc.micro@^1.0.1, uc.micro@^1.0.5: version "1.0.5" diff --git a/extensions/configuration-editing/schemas/attachContainer.schema.json b/extensions/configuration-editing/schemas/attachContainer.schema.json index d7846aad..ec765b8f 100644 --- a/extensions/configuration-editing/schemas/attachContainer.schema.json +++ b/extensions/configuration-editing/schemas/attachContainer.schema.json @@ -22,9 +22,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -53,27 +53,57 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" } } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": ["notify", "openBrowser", "openPreview", "silent", "ignore"], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [{ "body": { "onAutoForward": "ignore" } }], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "settings": { diff --git a/extensions/configuration-editing/schemas/devContainer.schema.generated.json b/extensions/configuration-editing/schemas/devContainer.schema.generated.json index 91f9249a..90e70c01 100644 --- a/extensions/configuration-editing/schemas/devContainer.schema.generated.json +++ b/extensions/configuration-editing/schemas/devContainer.schema.generated.json @@ -130,9 +130,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -161,28 +161,70 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" }, "additionalProperties": false } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { @@ -387,9 +429,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -418,28 +460,70 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" }, "additionalProperties": false } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { @@ -620,9 +704,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -651,28 +735,70 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" }, "additionalProperties": false } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { @@ -819,9 +945,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -850,28 +976,70 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" }, "additionalProperties": false } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { @@ -987,9 +1155,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -1018,28 +1186,70 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" }, "additionalProperties": false } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { diff --git a/extensions/configuration-editing/schemas/devContainer.schema.src.json b/extensions/configuration-editing/schemas/devContainer.schema.src.json index bac86dc8..2987aad1 100644 --- a/extensions/configuration-editing/schemas/devContainer.schema.src.json +++ b/extensions/configuration-editing/schemas/devContainer.schema.src.json @@ -36,9 +36,9 @@ "portsAttributes": { "type": "object", "patternProperties": { - "^\\d+(\\-\\d+)?$": { + "(^\\d+(\\-\\d+)?$)|(.+)": { "type": "object", - "description": "A port, or range of ports (ex. \"40000-55000\") that the attributes should apply to", + "description": "A port, range of ports (ex. \"40000-55000\"), or regular expression (ex. \".+\\\\/server.js\"). For a port number or range, the attributes will apply to that port number or range of port numbers. Attributes which use a regular expression will apply to ports whose associated process command line matches the expression.", "properties": { "onAutoForward": { "type": "string", @@ -67,27 +67,69 @@ "label": { "type": "string", "description": "Label that will be shown in the UI for this port.", - "default": "Labeled Port" + "default": "Application" } }, "default": { - "label": "Labeled Port", + "label": "Application", "onAutoForward": "notify" } } }, - "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Labeled Port\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n}\n```", + "markdownDescription": "Set default properties that are applied when a specific port number is forwarded. For example:\n\n```\n\"3000\": {\n \"label\": \"Application\"\n},\n\"40000-55000\": {\n \"onAutoForward\": \"ignore\"\n},\n\".+\\\\/server.js\": {\n \"onAutoForward\": \"openPreview\"\n}\n```", "defaultSnippets": [ { "body": { "${1:3000}": { - "label": "${2:My Port}", + "label": "${2:Application}", "onAutoForward": "notify" } } } ], - "errorMessage": "Must be a port number or a range of port numbers", + "additionalProperties": false + }, + "otherPortsAttributes": { + "type": "object", + "properties": { + "onAutoForward": { + "type": "string", + "enum": [ + "notify", + "openBrowser", + "openPreview", + "silent", + "ignore" + ], + "enumDescriptions": [ + "Shows a notification when a port is automatically forwarded.", + "Opens the browser when the port is automatically forwarded. Depending on your settings, this could open an embedded browser.", + "Opens a preview in the same window when the port is automatically forwarded.", + "Shows no notification and takes no action when this port is automatically forwarded.", + "This port will not be automatically forwarded." + ], + "description": "Defines the action that occurs when the port is discovered for automatic forwarding", + "default": "notify" + }, + "elevateIfNeeded": { + "type": "boolean", + "description": "Automatically prompt for elevation (if needed) when this port is forwarded. Elevate is required if the local port is a privileged port.", + "default": false + }, + "label": { + "type": "string", + "description": "Label that will be shown in the UI for this port.", + "default": "Application" + } + }, + "defaultSnippets": [ + { + "body": { + "onAutoForward": "ignore" + } + } + ], + "markdownDescription": "Set default properties that are applied to all ports that don't get properties from the setting `remote.portsAttributes`. For example:\n\n```\n{\n \"onAutoForward\": \"ignore\"\n}\n```", "additionalProperties": false }, "remoteEnv": { diff --git a/extensions/css-language-features/package.nls.json b/extensions/css-language-features/package.nls.json index b27b4163..727ba718 100644 --- a/extensions/css-language-features/package.nls.json +++ b/extensions/css-language-features/package.nls.json @@ -4,7 +4,7 @@ "css.title": "CSS", "css.customData.desc": "A list of relative file paths pointing to JSON files following the [custom data format](https://github.com/microsoft/vscode-css-languageservice/blob/master/docs/customData.md).\n\nVS Code loads custom data on startup to enhance its CSS support for the custom CSS properties, at directives, pseudo classes and pseudo elements you specify in the JSON files.\n\nThe file paths are relative to workspace and only workspace folder settings are considered.", "css.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.", - "css.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties", + "css.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties.", "css.lint.argumentsInColorFunction.desc": "Invalid number of parameters.", "css.lint.boxModel.desc": "Do not use `width` or `height` when using `padding` or `border`.", "css.lint.compatibleVendorPrefixes.desc": "When using a vendor-specific prefix make sure to also include all other vendor-specific properties.", @@ -32,7 +32,7 @@ "css.hover.references": "Show references to MDN in CSS hovers.", "less.title": "LESS", "less.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.", - "less.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties", + "less.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties.", "less.lint.argumentsInColorFunction.desc": "Invalid number of parameters.", "less.lint.boxModel.desc": "Do not use `width` or `height` when using `padding` or `border`.", "less.lint.compatibleVendorPrefixes.desc": "When using a vendor-specific prefix make sure to also include all other vendor-specific properties.", @@ -59,7 +59,7 @@ "less.hover.references": "Show references to MDN in LESS hovers.", "scss.title": "SCSS (Sass)", "scss.completion.triggerPropertyValueCompletion.desc": "By default, VS Code triggers property value completion after selecting a CSS property. Use this setting to disable this behavior.", - "scss.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties", + "scss.completion.completePropertyWithSemicolon.desc": "Insert semicolon at end of line when completing CSS properties.", "scss.lint.argumentsInColorFunction.desc": "Invalid number of parameters.", "scss.lint.boxModel.desc": "Do not use `width` or `height` when using `padding` or `border`.", "scss.lint.compatibleVendorPrefixes.desc": "When using a vendor-specific prefix make sure to also include all other vendor-specific properties.", diff --git a/extensions/css/cgmanifest.json b/extensions/css/cgmanifest.json index 32e5d2fc..d17931c3 100644 --- a/extensions/css/cgmanifest.json +++ b/extensions/css/cgmanifest.json @@ -4,14 +4,47 @@ "component": { "type": "git", "git": { - "name": "octref/language-css", - "repositoryUrl": "https://github.com/octref/language-css", - "commitHash": "dcdc1cb4403266f4ebdb1a4f526f8b6d09fd39d6" + "name": "atom/language-css", + "repositoryUrl": "https://github.com/atom/language-css", + "commitHash": "339e9600ce4e024fa97a711d6330e3b5344fcbdc" } }, - "license": "MIT", - "description": "The file syntaxes/css.tmLanguage.json was derived from https://github.com/octref/language-css which was derived from the Atom package https://github.com/atom/language-css which was originally converted from the TextMate bundle https://github.com/textmate/css.tmbundle.", - "version": "0.42.11" + "licenseDetail": [ + "Copyright (c) 2014 GitHub Inc.", + "", + "Permission is hereby granted, free of charge, to any person obtaining", + "a copy of this software and associated documentation files (the", + "\"Software\"), to deal in the Software without restriction, including", + "without limitation the rights to use, copy, modify, merge, publish,", + "distribute, sublicense, and/or sell copies of the Software, and to", + "permit persons to whom the Software is furnished to do so, subject to", + "the following conditions:", + "", + "The above copyright notice and this permission notice shall be", + "included in all copies or substantial portions of the Software.", + "", + "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,", + "EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF", + "MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND", + "NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE", + "LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION", + "OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION", + "WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.", + "", + "--------------------------------------------------------------------", + "", + "This package was derived from a TextMate bundle located at", + "https://github.com/textmate/css.tmbundle and distributed under the following", + "license, located in `README.mdown`:", + "", + "Permission to copy, use, modify, sell and distribute this", + "software is granted. This software is provided \"as is\" without", + "express or implied warranty, and with no claim as to its", + "suitability for any purpose." + ], + "license": "GitHub License", + "description": "The file syntaxes/css.tmLanguage.json was derived from https://github.com/atom/language-css which was originally converted from the TextMate bundle https://github.com/textmate/css.tmbundle.", + "version": "0.44.4" } ], "version": 1 diff --git a/extensions/css/package.json b/extensions/css/package.json index 6b3d8aeb..1d299374 100644 --- a/extensions/css/package.json +++ b/extensions/css/package.json @@ -9,7 +9,7 @@ "vscode": "0.10.x" }, "scripts": { - "update-grammar": "node ../node_modules/vscode-grammar-updater/bin octref/language-css grammars/css.cson ./syntaxes/css.tmLanguage.json" + "update-grammar": "node ../node_modules/vscode-grammar-updater/bin atom/language-css grammars/css.cson ./syntaxes/css.tmLanguage.json" }, "contributes": { "languages": [ diff --git a/extensions/css/syntaxes/css.tmLanguage.json b/extensions/css/syntaxes/css.tmLanguage.json index 9a7188cd..27c0eeae 100644 --- a/extensions/css/syntaxes/css.tmLanguage.json +++ b/extensions/css/syntaxes/css.tmLanguage.json @@ -1,10 +1,10 @@ { "information_for_contributors": [ - "This file has been converted from https://github.com/octref/language-css/blob/master/grammars/css.cson", + "This file has been converted from https://github.com/atom/language-css/blob/master/grammars/css.cson", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], - "version": "https://github.com/octref/language-css/commit/dcdc1cb4403266f4ebdb1a4f526f8b6d09fd39d6", + "version": "https://github.com/atom/language-css/commit/339e9600ce4e024fa97a711d6330e3b5344fcbdc", "name": "CSS", "scopeName": "source.css", "patterns": [ @@ -508,7 +508,7 @@ ] }, { - "begin": "(?i)((@)(-ms-|-o-)?viewport)(?=[\\s'\"{;]|/\\*|$)", + "begin": "(?i)((@)viewport)(?=[\\s'\"{;]|/\\*|$)", "beginCaptures": { "1": { "name": "keyword.control.at-rule.viewport.css" @@ -1266,10 +1266,10 @@ "name": "support.type.vendored.property-name.media.css" } }, - "match": "(?xi)\n(?<=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[><:=]|\\)|/\\*) # Terminates cleanly" + "match": "(?xi)\n(?<=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n | hover\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[><:=]|\\)|/\\*) # Terminates cleanly" }, "media-feature-keywords": { - "match": "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n)\n(?=\\s|\\)|$)", + "match": "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n | hover\n)\n(?=\\s|\\)|$)", "name": "support.constant.property-value.css" }, "media-query": { @@ -1354,7 +1354,7 @@ ] }, "media-query-list": { - "begin": "\\s*", + "begin": "(?=\\s*[^{;])", "end": "(?=\\s*[{;])", "patterns": [ { @@ -1401,7 +1401,7 @@ "property-keywords": { "patterns": [ { - "match": "(?xi) (?\\s,.\\#|){:\\[]|/\\*|$)", + "match": "(?xi) (?\\s,.\\#|){\\[]|/\\*|:[^\\s]|$)", "name": "entity.name.tag.css" }, "unicode-range": { diff --git a/extensions/emmet/package.json b/extensions/emmet/package.json index 4d26781c..119dd6fd 100644 --- a/extensions/emmet/package.json +++ b/extensions/emmet/package.json @@ -84,12 +84,11 @@ "description": "%emmetExclude%" }, "emmet.extensionsPath": { - "type": [ - "string", - "array", - "null" - ], - "default": null, + "type": "array", + "items": { + "type": "string" + }, + "default": [], "description": "%emmetExtensionsPath%" }, "emmet.triggerExpansionOnTab": { diff --git a/extensions/emmet/package.nls.json b/extensions/emmet/package.nls.json index 3ee2d4a0..f8bbbc36 100644 --- a/extensions/emmet/package.nls.json +++ b/extensions/emmet/package.nls.json @@ -28,7 +28,7 @@ "emmetExtensionsPath": "Path to a folder containing Emmet profiles and snippets.", "emmetShowExpandedAbbreviation": "Shows expanded Emmet abbreviations as suggestions.\nThe option `\"inMarkupAndStylesheetFilesOnly\"` applies to html, haml, jade, slim, xml, xsl, css, scss, sass, less and stylus.\nThe option `\"always\"` applies to all parts of the file regardless of markup/css.", "emmetShowAbbreviationSuggestions": "Shows possible Emmet abbreviations as suggestions. Not applicable in stylesheets or when emmet.showExpandedAbbreviation is set to `\"never\"`.", - "emmetIncludeLanguages": "Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and emmet supported language.\n E.g.: `{\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}`", + "emmetIncludeLanguages": "Enable Emmet abbreviations in languages that are not supported by default. Add a mapping here between the language and Emmet supported language.\n For example: `{\"vue-html\": \"html\", \"javascript\": \"javascriptreact\"}`", "emmetVariables": "Variables to be used in Emmet snippets", "emmetTriggerExpansionOnTab": "When enabled, Emmet abbreviations are expanded when pressing TAB.", "emmetPreferences": "Preferences used to modify behavior of some actions and resolvers of Emmet.", @@ -54,7 +54,7 @@ "emmetPreferencesCssOProperties": "Comma separated CSS properties that get the 'o' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'o' prefix.", "emmetPreferencesCssMsProperties": "Comma separated CSS properties that get the 'ms' vendor prefix when used in Emmet abbreviation that starts with `-`. Set to empty string to always avoid the 'ms' prefix.", "emmetPreferencesCssFuzzySearchMinScore": "The minimum score (from 0 to 1) that fuzzy-matched abbreviation should achieve. Lower values may produce many false-positive matches, higher values may reduce possible matches.", - "emmetOptimizeStylesheetParsing": "When set to `false`, the whole file is parsed to determine if current position is valid for expanding Emmet abbreviations. When set to `true`, only the content around the current position in css/scss/less files is parsed.", + "emmetOptimizeStylesheetParsing": "When set to `false`, the whole file is parsed to determine if current position is valid for expanding Emmet abbreviations. When set to `true`, only the content around the current position in CSS/SCSS/Less files is parsed.", "emmetPreferencesOutputReverseAttributes": "If `true`, reverses attribute merging directions when resolving snippets.", "emmetPreferencesCssColorShort": "If `true`, color values like #f will be expanded to #fff instead of #ffffff." } diff --git a/extensions/emmet/src/abbreviationActions.ts b/extensions/emmet/src/abbreviationActions.ts index 97ba3ac7..98ad70dd 100644 --- a/extensions/emmet/src/abbreviationActions.ts +++ b/extensions/emmet/src/abbreviationActions.ts @@ -377,6 +377,11 @@ export function expandEmmetAbbreviation(args: any): ThenablecurrentNode; if (propertyNode.terminatorToken && propertyNode.separator diff --git a/extensions/emmet/src/defaultCompletionProvider.ts b/extensions/emmet/src/defaultCompletionProvider.ts index bb9226c5..a8c7f464 100644 --- a/extensions/emmet/src/defaultCompletionProvider.ts +++ b/extensions/emmet/src/defaultCompletionProvider.ts @@ -6,7 +6,7 @@ import * as vscode from 'vscode'; import { Node, Stylesheet } from 'EmmetFlatNode'; import { isValidLocationForEmmetAbbreviation, getSyntaxFromArgs } from './abbreviationActions'; -import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, getFlatNode, allowedMimeTypesInScriptTag, toLSTextDocument, getHtmlFlatNode } from './util'; +import { getEmmetHelper, getMappingForIncludedLanguages, parsePartialStylesheet, getEmmetConfiguration, getEmmetMode, isStyleSheet, getFlatNode, allowedMimeTypesInScriptTag, toLSTextDocument, getHtmlFlatNode, getEmbeddedCssNodeIfAny } from './util'; import { Range as LSRange } from 'vscode-languageserver-textdocument'; import { getRootNode } from './parseDocument'; @@ -67,7 +67,7 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi const lsDoc = toLSTextDocument(document); position = document.validatePosition(position); - if (document.languageId === 'html') { + if (syntax === 'html') { if (context.triggerKind === vscode.CompletionTriggerKind.TriggerForIncompleteCompletions) { switch (this.lastCompletionType) { case 'html': @@ -137,6 +137,20 @@ export class DefaultCompletionItemProvider implements vscode.CompletionItemProvi currentNode = getFlatNode(rootNode, offset, true); } + // Fix for https://github.com/microsoft/vscode/issues/107578 + // Validate location if syntax is of styleSheet type to ensure that location is valid for emmet abbreviation. + // For an html document containing a