diff --git a/build/build.sh b/build/build.sh
index ba82710..b86c1df 100755
--- a/build/build.sh
+++ b/build/build.sh
@@ -7,8 +7,9 @@
 export APP_NAME="VSCodium"
 export CI_BUILD="no"
 export SHOULD_BUILD="yes"
-export SKIP_BUILD="no"
 export SKIP_ASSETS="yes"
+export SKIP_BUILD="no"
+export SKIP_SOURCE="no"
 export VSCODE_LATEST="no"
 export VSCODE_QUALITY="stable"
 
@@ -26,6 +27,9 @@ while getopts ":ilop" opt; do
     p)
       export SKIP_ASSETS="no"
       ;;
+    s)
+      export SKIP_SOURCE="yes"
+      ;;
   esac
 done
 
@@ -50,13 +54,14 @@ else
 fi
 
 echo "OS_NAME=\"${OS_NAME}\""
+echo "SKIP_SOURCE=\"${SKIP_SOURCE}\""
 echo "SKIP_BUILD=\"${SKIP_BUILD}\""
 echo "SKIP_ASSETS=\"${SKIP_ASSETS}\""
 echo "VSCODE_ARCH=\"${VSCODE_ARCH}\""
 echo "VSCODE_LATEST=\"${VSCODE_LATEST}\""
 echo "VSCODE_QUALITY=\"${VSCODE_QUALITY}\""
 
-if [[ "${SKIP_BUILD}" == "no" ]]; then
+if [[ "${SKIP_SOURCE}" == "no" ]]; then
   rm -rf vscode* VSCode*
 
   . get_repo.sh
@@ -67,13 +72,11 @@ if [[ "${SKIP_BUILD}" == "no" ]]; then
   echo "MS_COMMIT=\"${MS_COMMIT}\"" >> build.env
   echo "RELEASE_VERSION=\"${RELEASE_VERSION}\"" >> build.env
   echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\"" >> build.env
-
-  . build.sh
-
-  if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then
-    echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json"
-  fi
 else
+  if [[ "${SKIP_ASSETS}" != "no" ]]; then
+    rm -rf VSCode*
+  fi
+
   . build.env
 
   echo "MS_TAG=\"${MS_TAG}\""
@@ -82,6 +85,23 @@ else
   echo "BUILD_SOURCEVERSION=\"${BUILD_SOURCEVERSION}\""
 fi
 
+if [[ "${SKIP_BUILD}" == "no" ]]; then
+  if [[ "${SKIP_SOURCE}" != "no" ]]; then
+    cd vscode || { echo "'vscode' dir not found"; exit 1; }
+
+    git add .
+    git reset -q --hard HEAD
+
+    cd ..
+  fi
+
+  . build.sh
+
+  if [[ "${VSCODE_QUALITY}" == "insider" && "${VSCODE_LATEST}" == "yes" ]]; then
+    echo "$( cat "insider.json" | jq --arg 'tag' "${MS_TAG/\-insider/}" --arg 'commit' "${MS_COMMIT}" '. | .tag=$tag | .commit=$commit' )" > "insider.json"
+  fi
+fi
+
 if [[ "${SKIP_ASSETS}" == "no" ]]; then
   if [[ "${OS_NAME}" == "windows" ]]; then
     rm -rf build/windows/msi/releasedir
diff --git a/patches/fix-mangle-windows.patch b/patches/fix-mangle-windows.patch
deleted file mode 100644
index 853ed05..0000000
--- a/patches/fix-mangle-windows.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/build/lib/compilation.js b/build/lib/compilation.js
-index d101f6e..cf50b50 100644
---- a/build/lib/compilation.js
-+++ b/build/lib/compilation.js
-@@ -109,3 +109,3 @@ function compileTask(src, out, build) {
-             mangleStream = es.through(function write(data) {
--                const newContents = newContentsByFileName.get(data.path);
-+                const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/'));
-                 if (newContents !== undefined) {
-diff --git a/build/lib/compilation.ts b/build/lib/compilation.ts
-index 54fa32d..4c8fd1c 100644
---- a/build/lib/compilation.ts
-+++ b/build/lib/compilation.ts
-@@ -129,3 +129,3 @@ export function compileTask(src: string, out: string, build: boolean): () => Nod
- 			mangleStream = es.through(function write(data: File & { sourceMap?: RawSourceMap }) {
--				const newContents = newContentsByFileName.get(data.path);
-+				const newContents = newContentsByFileName.get(data.path.replace(/\\/g, '/'));
- 				if (newContents !== undefined) {