[release] prepare v0.28.0 release (2)

d66e68e CHANGELOG.md: for v0.28.0
3bde93e docs/features: add screenshot of testing UI
20812b7 all: add setting to disable test explorer
8b3398f github/workflows: update go versions
c71634c goLanguageServer: track language server's restart history
d5bd4eb src/debugAdapter/goDebug: do not log env vars additionally
23a2db0 src/goMain: remove tools version check hack
97265e8 src/goDebugConfiguration: do not merge toolExecutionEnvironment to 'env'

Change-Id: Ib52c34ed720da98c4a9371dd554aeacb8556aa48
diff --git a/.github/workflows/release-nightly.yml b/.github/workflows/release-nightly.yml
index f026a2b..cc6d298 100644
--- a/.github/workflows/release-nightly.yml
+++ b/.github/workflows/release-nightly.yml
@@ -29,7 +29,7 @@
       - name: Setup Go
         uses: actions/setup-go@v2
         with:
-         go-version: '1.16'
+         go-version: '1.17'
 
       - name: Install dependencies
         run: npm ci
diff --git a/.github/workflows/test-long-all.yml b/.github/workflows/test-long-all.yml
index 4da59bc..acc82c0 100644
--- a/.github/workflows/test-long-all.yml
+++ b/.github/workflows/test-long-all.yml
@@ -17,7 +17,7 @@
       matrix:
         os: [ubuntu-latest, windows-latest, macos-latest]
         version: ['stable', 'insiders']
-        go: ['1.15', '1.16', '1.17.0-rc1']
+        go: ['1.15', '1.16', '1.17']
 
     steps:
       - name: Clone repository
diff --git a/.github/workflows/test-long.yml b/.github/workflows/test-long.yml
index 0ef3361..67711f1 100644
--- a/.github/workflows/test-long.yml
+++ b/.github/workflows/test-long.yml
@@ -16,7 +16,7 @@
       matrix:
         os: [ubuntu-latest, windows-latest] # TODO: reenable macos-latest
         version: ['stable']
-        go: ['1.15', '1.16', '1.17.0-rc1']
+        go: ['1.15', '1.16', '1.17']
 
     steps:
       - name: Clone repository
diff --git a/.github/workflows/test-smoke.yml b/.github/workflows/test-smoke.yml
index 93db2c9..270954f 100644
--- a/.github/workflows/test-smoke.yml
+++ b/.github/workflows/test-smoke.yml
@@ -29,7 +29,7 @@
       - name: Setup Go
         uses: actions/setup-go@v2
         with:
-         go-version: '1.16'
+         go-version: '1.17'
 
       - name: Install dependencies
         run: npm ci
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3f0134b..cd51e00 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,8 +1,37 @@
-๐Ÿ“ฃ Delve's native DAP implementation ([`dlv-dap`](https://github.com/go-delve/delve/blob/master/Documentation/usage/dlv_dap.md))
-is enabled by default for local debugging. We updated the [Documentation for Debugging](https://github.com/golang/vscode-go/blob/master/docs/debugging.md)
-to show the new features available with dlv-dap. This change does not apply to remote debugging yet.
-For remote debugging, keep following the instruction in the
-[legacy debug adapter documentation](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md).
+## v0.28.0 - 16 Sep, 2021
+
+This version requires VS Code 1.59 or newer.
+
+๐ŸŽ‰๐Ÿงช The extension implements [the Testing API of VS Code](https://code.visualstudio.com/api/extension-guides/testing). You can navigate and run/profile tests using the test explorer UI! Further work for better profiling and debugging support through the test explorer is underway. Please give it a try and provide feedback.
+
+A list of all issues and changes can be found in the [v0.28.0 milestone](https://github.com/golang/vscode-go/milestone/34) and [commit history](https://github.com/golang/vscode-go/compare/v0.27.2...v0.28.0).
+
+### Changes
+
+- Require VS Code engine 1.59+.
+- Implement the Testing API [Issue 1579](github.com/golang/vscode-go/issues/1579)). <!-- CL 330809 -->
+The test provider discovers all Go tests and benchmarks including `stretchr` test suits ([Issue 1641](github.com/golang/vscode-go/issues/1641)) <!-- CL 343489 --> and sub-tests ([Issue 47800](github.com/golang/go/issues/47800), [1641](github.com/golang/vscode-go/issues/1641)) <!-- CL 343433 -->.
+- Offer basic profiling support through the testing API. ([Issue 1685](github.com/golang/vscode-go/issues/1685)) <!-- CL 344149 -->
+- Debugging
+	- Allow to connect to a Delve DAP server running on a different host using `host` and `port` launch properties. ([Issue 1729](github.com/golang/vscode-go/issues/1729)) <!-- CL 346269 -->
+	- Disabled check for active debug session ([Issue 1710](github.com/golang/vscode-go/issues/1710)). <!-- CL 349596 --> This will allow to run multiple debug sessions simultaneously.
+	- Disabled the go version check by supplying the `--check-go-version=false` delve flag ([Issue 1716](github.com/golang/vscode-go/issues/1716)). <!-- CL 347562 --> This is to allow users of older versions of Go to debug using Delve DAP which requires Delve 1.6.1 or newer. If you need to use Delve 1.6.0 or older, please use [the legacy debug adapter](https://github.com/golang/vscode-go/blob/master/docs/debugging-legacy.md).
+	- Fixed a legacy debug adapter's bug that broke remote debugging when breakpoints were set in irrelevant files. ([Issue 1762](github.com/golang/vscode-go/issues/1762)) <!-- CL 348972 -->
+	- Added [the new FAQs section](https://github.com/golang/vscode-go/blob/master/docs/debugging.md#faqs).
+- Removed tools version check hack that triggerred unnecessary warnings about go and tools version mismatch issues ([Issue 1698](github.com/golang/vscode-go/issues/1698)). <!-- CL 349752 --> 
+- Export an API with which other extensions can query the location of go tools. ([Issue 233](github.com/golang/vscode-go/issues/233)) <!-- CL 336509 -->
+- Fixed regexps for test function names ([CL 344130](https://go-review.googlesource.com/c/vscode-go/+/344130)).
+- Track the language server's restart history and include it in the automated gopls crash report ([CL 344130](https://go-review.googlesource.com/c/vscode-go/+/344130)).
+- Code Health
+	- Use `esbuild` instead of `webpack` ([Issue 1705](github.com/golang/vscode-go/issues/1705)). <!-- CL 343791 -->
+	- Removed the temporary security workaround in favor of [VS Code's Workspace Trust concept](https://code.visualstudio.com/docs/editor/workspace-trust). <!-- CL 347690 -->
+	- Updated the gopls settings documentation to reflect gopls/v0.7.2 settings.
+- docs: change blog.golang.org to go.dev/blog <!-- CL 348269 -->
+- package.json: update gopls settings (v0.7.2) <!-- CL 348909 -->
+
+### Thanks
+
+Thank you for your contribution, Nicolas Lepage, 180909, Polina Sokolova, Rebecca Stambler, and Suzy Mueller! Special thanks to Ethan Reesor for the Test Explorer work!
 
 ## v0.27.2 - 1st Sep, 2021
 
diff --git a/README.md b/README.md
index 72167e1..84335c3 100644
--- a/README.md
+++ b/README.md
@@ -9,8 +9,6 @@
 [Go programming language](https://golang.org/).
 
 
-> ๐Ÿ“ฃ Debugging using [`Delve`'s native DAP implementation](https://github.com/golang/vscode-go/blob/master/docs/debugging.md) is enabled by default in v0.27.0.<br>
-
 ## Quick Start
 
 Welcome! ๐Ÿ‘‹๐Ÿป<br/>
diff --git a/docs/commands.md b/docs/commands.md
index 5103246..316235e 100644
--- a/docs/commands.md
+++ b/docs/commands.md
@@ -238,7 +238,3 @@
 ### `Go: Reset Global State`
 
 Reset keys in global state to undefined.
-
-### `Go: Toggle Workspace Trust Flag`
-
-Toggle the workspace trust flag. Workspace settings that determine tool locations are disabled by default in untrusted workspaces.
diff --git a/docs/features.md b/docs/features.md
index 0bf09cf..1598ad4 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -203,7 +203,9 @@
 
 ### Test and benchmark
 
-[Code lenses](https://code.visualstudio.com/blogs/2017/02/12/code-lens-roundup) allow users to easily run tests and benchmarks for a given function, file, package, or workspace. Alternatively, the same functionality is available through a set of commands: [`Go: Test Function At Cursor`](commands.md#go-test-function-at-cursor), [`Go: Test File`](commands.md#go-test-file), [`Go: Test Package`](commands.md#go-test-package), and [`Go: Test All Packages in Workspace`](commands.md#go-test-all-packages-in-workspace).
+[Test UI](https://code.visualstudio.com/api/extension-guides/testing) and [Code lenses](https://code.visualstudio.com/blogs/2017/02/12/code-lens-roundup) allow users to easily run tests and benchmarks for a given function, file, package, or workspace. Alternatively, the same functionality is available through a set of commands: [`Go: Test Function At Cursor`](commands.md#go-test-function-at-cursor), [`Go: Test File`](commands.md#go-test-file), [`Go: Test Package`](commands.md#go-test-package), and [`Go: Test All Packages in Workspace`](commands.md#go-test-all-packages-in-workspace).
+
+<div style="text-align: center;"><img src="images/testexplorer.gif" alt="Testing UI" style="width: 75%"> </div>
 
 ### Code Coverage
 
diff --git a/docs/images/testexplorer.gif b/docs/images/testexplorer.gif
new file mode 100644
index 0000000..276e4c8
--- /dev/null
+++ b/docs/images/testexplorer.gif
Binary files differ
diff --git a/docs/settings.md b/docs/settings.md
index 62dafd1..5f34fdc 100644
--- a/docs/settings.md
+++ b/docs/settings.md
@@ -403,6 +403,11 @@
 Concatenate all test log messages for a given location into a single message.
 
 Default: `true`
+### `go.testExplorer.enable`
+
+Enable the Go test explorer
+
+Default: `true`
 ### `go.testExplorer.packageDisplayMode`
 
 Present packages in the test explorer flat or nested.<br/>
diff --git a/package.json b/package.json
index 2f52ca9..0f406cb 100644
--- a/package.json
+++ b/package.json
@@ -460,11 +460,6 @@
         "command": "go.global.resetState",
         "title": "Go: Reset Global State",
         "description": "Reset keys in global state to undefined."
-      },
-      {
-        "command": "go.workspace.isTrusted.toggle",
-        "title": "Go: Toggle Workspace Trust Flag",
-        "description": "Toggle the workspace trust flag. Workspace settings that determine tool locations are disabled by default in untrusted workspaces."
       }
     ],
     "breakpoints": [
@@ -1301,6 +1296,12 @@
           "description": "Flags to pass to `go test`. If null, then buildFlags will be used. This is not propagated to the language server.",
           "scope": "resource"
         },
+        "go.testExplorer.enable": {
+          "type": "boolean",
+          "default": true,
+          "scope": "window",
+          "description": "Enable the Go test explorer"
+        },
         "go.testExplorer.packageDisplayMode": {
           "type": "string",
           "enum": [
diff --git a/src/goMain.ts b/src/goMain.ts
index eddba07..30fd73a 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -336,7 +336,7 @@
 		})
 	);
 
-	if (isVscodeTestingAPIAvailable) {
+	if (isVscodeTestingAPIAvailable && cfg.get<boolean>('testExplorer.enable')) {
 		GoTestExplorer.setup(ctx);
 	}
 
@@ -531,6 +531,15 @@
 					// TODO: actively maintain our own disposables instead of keeping pushing to ctx.subscription.
 				}
 			}
+			if (e.affectsConfiguration('go.testExplorer.enable')) {
+				const msg =
+					'Go test explorer has been enabled or disabled. For this change to take effect, the window must be reloaded.';
+				vscode.window.showInformationMessage(msg, 'Reload').then((selected) => {
+					if (selected === 'Reload') {
+						vscode.commands.executeCommand('workbench.action.reloadWindow');
+					}
+				});
+			}
 		})
 	);