diff --git a/.github/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
similarity index 100%
rename from .github/pull_request_template.md
rename to .github/PULL_REQUEST_TEMPLATE/pull_request_template.md
diff --git a/.github/PULL_REQUEST_TEMPLATE/release_template.md b/.github/PULL_REQUEST_TEMPLATE/release_template.md
new file mode 100644
index 000000000000..3d0f13ba611f
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE/release_template.md
@@ -0,0 +1,15 @@
+This PR is to generate a new release of `code-server` at `0.0.0`
+
+## Screenshot
+
+TODO
+
+## TODOs
+
+- [ ] update the AUR package
+- [ ] upload assets to draft release
+- [ ] test locally
+- [ ] double-check github release tag is the commit with artifacts
+- [ ] publish release
+- [ ] merge PR
+- [ ] update the homebrew package
diff --git a/README.md b/README.md
index 344079787fdb..8ea356cb7aec 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 # code-server · [!["GitHub Discussions"](https://img.shields.io/badge/%20GitHub-%20Discussions-gray.svg?longCache=true&logo=github&colorB=purple)](https://github.com/cdr/code-server/discussions) [!["Join us on Slack"](https://img.shields.io/badge/join-us%20on%20slack-gray.svg?longCache=true&logo=slack&colorB=brightgreen)](https://cdr.co/join-community) [![Twitter Follow](https://img.shields.io/twitter/follow/CoderHQ?label=%40CoderHQ&style=social)](https://twitter.com/coderhq)
 
-![Lines](https://img.shields.io/badge/Coverage-50.08%25-green.svg)
-[![See latest docs](https://img.shields.io/static/v1?label=Docs&message=see%20latest%20&color=blue)](https://github.com/cdr/code-server/tree/v3.9.0/docs)
+![Lines](https://img.shields.io/badge/Coverage-51.67%25-green.svg)
+[![See latest docs](https://img.shields.io/static/v1?label=Docs&message=see%20latest%20&color=blue)](https://github.com/cdr/code-server/tree/v3.9.1/docs)
 
 Run [VS Code](https://github.com/Microsoft/vscode) on any machine anywhere and access it in the browser.
 
diff --git a/ci/build/release-github-draft.sh b/ci/build/release-github-draft.sh
index e68ec515f758..28bbb3015cb4 100755
--- a/ci/build/release-github-draft.sh
+++ b/ci/build/release-github-draft.sh
@@ -23,6 +23,9 @@ installations.
 
   - ⭐ Summarize new features here with references to issues
 
+## VS Code
+  - ⭐ Summarize VS Code version update here with references to issues
+
 ## Bug Fixes
   - ⭐ Summarize bug fixes here with references to issues
 
diff --git a/ci/helm-chart/Chart.yaml b/ci/helm-chart/Chart.yaml
index af389f7af910..333e11182a32 100644
--- a/ci/helm-chart/Chart.yaml
+++ b/ci/helm-chart/Chart.yaml
@@ -20,4 +20,4 @@ version: 1.0.3
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: 3.9.0
+appVersion: 3.9.1
diff --git a/ci/helm-chart/README.md b/ci/helm-chart/README.md
index 1c087606dbf5..333060ad6482 100644
--- a/ci/helm-chart/README.md
+++ b/ci/helm-chart/README.md
@@ -1,6 +1,6 @@
 # code-server
 
-![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.9.0](https://img.shields.io/badge/AppVersion-3.9.0-informational?style=flat-square)
+![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.9.1](https://img.shields.io/badge/AppVersion-3.9.1-informational?style=flat-square)
 
 [code-server](https://github.com/cdr/code-server) code-server is VS Code running
 on a remote server, accessible through the browser.
@@ -72,7 +72,7 @@ and their default values.
 | hostnameOverride | string | `""` |  |
 | image.pullPolicy | string | `"Always"` |  |
 | image.repository | string | `"codercom/code-server"` |  |
-| image.tag | string | `"3.9.0"` |  |
+| image.tag | string | `"3.9.1"` |  |
 | imagePullSecrets | list | `[]` |  |
 | ingress.enabled | bool | `false` |  |
 | nameOverride | string | `""` |  |
diff --git a/ci/helm-chart/values.yaml b/ci/helm-chart/values.yaml
index ffb2f4fd72fe..f45387d2fdff 100644
--- a/ci/helm-chart/values.yaml
+++ b/ci/helm-chart/values.yaml
@@ -6,7 +6,7 @@ replicaCount: 1
 
 image:
   repository: codercom/code-server
-  tag: '3.9.0'
+  tag: '3.9.1'
   pullPolicy: Always
 
 imagePullSecrets: []
diff --git a/docs/install.md b/docs/install.md
index e37389d2e88c..85ee04ec3b65 100644
--- a/docs/install.md
+++ b/docs/install.md
@@ -88,8 +88,8 @@ commands presented in the rest of this document.
 ## Debian, Ubuntu
 
 ```bash
-curl -fOL https://github.com/cdr/code-server/releases/download/v3.9.0/code-server_3.9.0_amd64.deb
-sudo dpkg -i code-server_3.9.0_amd64.deb
+curl -fOL https://github.com/cdr/code-server/releases/download/v3.9.1/code-server_3.9.1_amd64.deb
+sudo dpkg -i code-server_3.9.1_amd64.deb
 sudo systemctl enable --now code-server@$USER
 # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
 ```
@@ -97,8 +97,8 @@ sudo systemctl enable --now code-server@$USER
 ## Fedora, CentOS, RHEL, SUSE
 
 ```bash
-curl -fOL https://github.com/cdr/code-server/releases/download/v3.9.0/code-server-3.9.0-amd64.rpm
-sudo rpm -i code-server-3.9.0-amd64.rpm
+curl -fOL https://github.com/cdr/code-server/releases/download/v3.9.1/code-server-3.9.1-amd64.rpm
+sudo rpm -i code-server-3.9.1-amd64.rpm
 sudo systemctl enable --now code-server@$USER
 # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
 ```
@@ -168,10 +168,10 @@ Here is an example script for installing and using a standalone `code-server` re
 
 ```bash
 mkdir -p ~/.local/lib ~/.local/bin
-curl -fL https://github.com/cdr/code-server/releases/download/v3.9.0/code-server-3.9.0-linux-amd64.tar.gz \
+curl -fL https://github.com/cdr/code-server/releases/download/v3.9.1/code-server-3.9.1-linux-amd64.tar.gz \
   | tar -C ~/.local/lib -xz
-mv ~/.local/lib/code-server-3.9.0-linux-amd64 ~/.local/lib/code-server-3.9.0
-ln -s ~/.local/lib/code-server-3.9.0/bin/code-server ~/.local/bin/code-server
+mv ~/.local/lib/code-server-3.9.1-linux-amd64 ~/.local/lib/code-server-3.9.1
+ln -s ~/.local/lib/code-server-3.9.1/bin/code-server ~/.local/bin/code-server
 PATH="~/.local/bin:$PATH"
 code-server
 # Now visit http://127.0.0.1:8080. Your password is in ~/.config/code-server/config.yaml
diff --git a/install.sh b/install.sh
index 5cb85a651d70..0b37747c41bf 100755
--- a/install.sh
+++ b/install.sh
@@ -2,7 +2,7 @@
 set -eu
 
 # code-server's automatic install script.
-# See https://github.com/cdr/code-server/blob/v3.9.0/docs/install.md
+# See https://github.com/cdr/code-server/blob/v3.9.1/docs/install.md
 
 usage() {
   arg0="$0"
@@ -67,7 +67,7 @@ Usage:
 
 It will cache all downloaded assets into ~/.cache/code-server
 
-More installation docs are at https://github.com/cdr/code-server/blob/v3.9.0/docs/install.md
+More installation docs are at https://github.com/cdr/code-server/blob/v3.9.1/docs/install.md
 EOF
 }
 
@@ -419,7 +419,7 @@ install_npm() {
   echoh
   echoerr "Please install npm or yarn to install code-server!"
   echoerr "You will need at least node v12 and a few C dependencies."
-  echoerr "See the docs https://github.com/cdr/code-server/blob/v3.9.0/docs/install.md#yarn-npm"
+  echoerr "See the docs https://github.com/cdr/code-server/blob/v3.9.1/docs/install.md#yarn-npm"
   exit 1
 }
 
diff --git a/package.json b/package.json
index 6989d2c3adc2..490583a0503f 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "code-server",
   "license": "MIT",
-  "version": "3.9.0",
+  "version": "3.9.1",
   "description": "Run VS Code on a remote server.",
   "homepage": "https://github.com/cdr/code-server",
   "bugs": {