diff --git a/Earthfile b/Earthfile
index ced85ed98..0ec31fee6 100644
--- a/Earthfile
+++ b/Earthfile
@@ -62,9 +62,9 @@ build:
# TODO:
# BUILD +tauri-build --target="x86_64-pc-windows-gnu"
- # Bild Tauri release bundle for Windows:
+ # Bild Tauri bundle for Windows:
# ./dist/windows_amd64/portmaster-app_vX-X-X.zip
- BUILD +tauri-windows-release-bundle
+ BUILD +tauri-build-windows-bundle
# Build UI assets:
# ./dist/all/assets.zip
@@ -82,7 +82,7 @@ angular-ci:
tauri-ci:
BUILD +tauri-build --target="x86_64-unknown-linux-gnu"
- BUILD +tauri-windows-release-bundle
+ BUILD +tauri-build-windows-bundle
kext-ci:
BUILD +kext-build
@@ -183,19 +183,29 @@ go-build:
CACHE --sharing shared "$GOMODCACHE"
RUN mkdir /tmp/build
- ENV CGO_ENABLED = "0"
+ # Fall back to build all binaries when none is specified.
IF [ "${CMDS}" = "" ]
LET CMDS=$(ls -1 "./cmds/")
END
# Build all go binaries from the specified in CMDS
FOR bin IN $CMDS
- RUN --no-cache go build -ldflags="-X github.com/safing/portbase/info.version=${VERSION} -X github.com/safing/portbase/info.buildSource=${SOURCE} -X github.com/safing/portbase/info.buildTime=${BUILD_TIME}" -o "/tmp/build/" ./cmds/${bin}
+ # Add special build options.
+ IF [ "${GOOS}" = "windows" ] && [ "${bin}" = "portmaster-start" ]
+ # Windows, portmaster-start
+ ENV CGO_ENABLED = "1"
+ ENV EXTRA_LD_FLAGS = "-H windowsgui"
+ ELSE
+ # Defaults
+ ENV CGO_ENABLED = "0"
+ ENV EXTRA_LD_FLAGS = ""
+ END
+
+ RUN --no-cache go build -ldflags="-X github.com/safing/portbase/info.version=${VERSION} -X github.com/safing/portbase/info.buildSource=${SOURCE} -X github.com/safing/portbase/info.buildTime=${BUILD_TIME} ${EXTRA_LD_FLAGS}" -o "/tmp/build/" ./cmds/${bin}
END
DO +GO_ARCH_STRING --goos="${GOOS}" --goarch="${GOARCH}" --goarm="${GOARM}"
-
FOR bin IN $(ls -1 "/tmp/build/")
SAVE ARTIFACT --keep-ts "/tmp/build/${bin}" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/${bin}"
END
@@ -494,22 +504,17 @@ tauri-build:
# DO rust+CROSS --target="${target}"
RUN echo output: $(ls -R "target/${target}/release")
- LET outbin="error"
- FOR bin IN "portmaster Portmaster.exe WebView2Loader.dll"
- # Modify output binary.
- SET outbin="${bin}"
- IF [ "${bin}" = "portmaster" ]
- SET outbin="portmaster-app"
- ELSE IF [ "${bin}" = "Portmaster.exe" ]
- SET outbin="portmaster-app.exe"
- END
- # Save output binary as local artifact.
- SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/${bin}" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/${outbin}"
- END
+
+ # Binaries
+ SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/app" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/portmaster-app"
+ SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/app.exe" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/portmaster-app.exe"
+ SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/WebView2Loader.dll" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/WebView2Loader.dll"
+
+ # Installers
SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/bundle/deb/*.deb" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/"
SAVE ARTIFACT --if-exists --keep-ts "target/${target}/release/bundle/rpm/*.rpm" AS LOCAL "${outputDir}/${GO_ARCH_STRING}/"
-tauri-windows-release-bundle:
+tauri-build-windows-bundle:
FROM +tauri-src
ARG target="x86_64-pc-windows-gnu"
diff --git a/assets/data/favicons/android-icon-144x144.png b/assets/data/favicons/android-icon-144x144.png
new file mode 100644
index 000000000..14025fcc5
Binary files /dev/null and b/assets/data/favicons/android-icon-144x144.png differ
diff --git a/assets/data/favicons/android-icon-192x192.png b/assets/data/favicons/android-icon-192x192.png
new file mode 100644
index 000000000..6a6e9223d
Binary files /dev/null and b/assets/data/favicons/android-icon-192x192.png differ
diff --git a/assets/data/favicons/android-icon-36x36.png b/assets/data/favicons/android-icon-36x36.png
new file mode 100644
index 000000000..97cb26c6d
Binary files /dev/null and b/assets/data/favicons/android-icon-36x36.png differ
diff --git a/assets/data/favicons/android-icon-48x48.png b/assets/data/favicons/android-icon-48x48.png
new file mode 100644
index 000000000..0a41b5dcd
Binary files /dev/null and b/assets/data/favicons/android-icon-48x48.png differ
diff --git a/assets/data/favicons/android-icon-72x72.png b/assets/data/favicons/android-icon-72x72.png
new file mode 100644
index 000000000..5ffd561b3
Binary files /dev/null and b/assets/data/favicons/android-icon-72x72.png differ
diff --git a/assets/data/favicons/android-icon-96x96.png b/assets/data/favicons/android-icon-96x96.png
new file mode 100644
index 000000000..cfc92abf5
Binary files /dev/null and b/assets/data/favicons/android-icon-96x96.png differ
diff --git a/assets/data/favicons/apple-icon-114x114.png b/assets/data/favicons/apple-icon-114x114.png
new file mode 100644
index 000000000..68fa0ee57
Binary files /dev/null and b/assets/data/favicons/apple-icon-114x114.png differ
diff --git a/assets/data/favicons/apple-icon-120x120.png b/assets/data/favicons/apple-icon-120x120.png
new file mode 100644
index 000000000..d2c8eb6ac
Binary files /dev/null and b/assets/data/favicons/apple-icon-120x120.png differ
diff --git a/assets/data/favicons/apple-icon-144x144.png b/assets/data/favicons/apple-icon-144x144.png
new file mode 100644
index 000000000..14025fcc5
Binary files /dev/null and b/assets/data/favicons/apple-icon-144x144.png differ
diff --git a/assets/data/favicons/apple-icon-152x152.png b/assets/data/favicons/apple-icon-152x152.png
new file mode 100644
index 000000000..9e23739e5
Binary files /dev/null and b/assets/data/favicons/apple-icon-152x152.png differ
diff --git a/assets/data/favicons/apple-icon-180x180.png b/assets/data/favicons/apple-icon-180x180.png
new file mode 100644
index 000000000..c08a6587f
Binary files /dev/null and b/assets/data/favicons/apple-icon-180x180.png differ
diff --git a/assets/data/favicons/apple-icon-57x57.png b/assets/data/favicons/apple-icon-57x57.png
new file mode 100644
index 000000000..ffa06ca71
Binary files /dev/null and b/assets/data/favicons/apple-icon-57x57.png differ
diff --git a/assets/data/favicons/apple-icon-60x60.png b/assets/data/favicons/apple-icon-60x60.png
new file mode 100644
index 000000000..31dd80166
Binary files /dev/null and b/assets/data/favicons/apple-icon-60x60.png differ
diff --git a/assets/data/favicons/apple-icon-72x72.png b/assets/data/favicons/apple-icon-72x72.png
new file mode 100644
index 000000000..5ffd561b3
Binary files /dev/null and b/assets/data/favicons/apple-icon-72x72.png differ
diff --git a/assets/data/favicons/apple-icon-76x76.png b/assets/data/favicons/apple-icon-76x76.png
new file mode 100644
index 000000000..f9c5e2ded
Binary files /dev/null and b/assets/data/favicons/apple-icon-76x76.png differ
diff --git a/assets/data/favicons/apple-icon-precomposed.png b/assets/data/favicons/apple-icon-precomposed.png
new file mode 100644
index 000000000..33a16bae4
Binary files /dev/null and b/assets/data/favicons/apple-icon-precomposed.png differ
diff --git a/assets/data/favicons/apple-icon.png b/assets/data/favicons/apple-icon.png
new file mode 100644
index 000000000..33a16bae4
Binary files /dev/null and b/assets/data/favicons/apple-icon.png differ
diff --git a/assets/data/favicons/browserconfig.xml b/assets/data/favicons/browserconfig.xml
new file mode 100644
index 000000000..79cbf5491
--- /dev/null
+++ b/assets/data/favicons/browserconfig.xml
@@ -0,0 +1,2 @@
+
+#121213
diff --git a/assets/data/favicons/favicon-16x16.png b/assets/data/favicons/favicon-16x16.png
new file mode 100644
index 000000000..bbc1455d0
Binary files /dev/null and b/assets/data/favicons/favicon-16x16.png differ
diff --git a/assets/data/favicons/favicon-32x32.png b/assets/data/favicons/favicon-32x32.png
new file mode 100644
index 000000000..6c611b635
Binary files /dev/null and b/assets/data/favicons/favicon-32x32.png differ
diff --git a/assets/data/favicons/favicon-96x96.png b/assets/data/favicons/favicon-96x96.png
new file mode 100644
index 000000000..cfc92abf5
Binary files /dev/null and b/assets/data/favicons/favicon-96x96.png differ
diff --git a/assets/data/favicons/favicon.ico b/assets/data/favicons/favicon.ico
new file mode 100644
index 000000000..1344c5c64
Binary files /dev/null and b/assets/data/favicons/favicon.ico differ
diff --git a/assets/data/favicons/head.html b/assets/data/favicons/head.html
new file mode 100644
index 000000000..9cb476c93
--- /dev/null
+++ b/assets/data/favicons/head.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/data/favicons/manifest.json b/assets/data/favicons/manifest.json
new file mode 100644
index 000000000..c01e2a1de
--- /dev/null
+++ b/assets/data/favicons/manifest.json
@@ -0,0 +1,41 @@
+{
+ "name": "App",
+ "icons": [
+ {
+ "src": "\/assets\/favicons\/android-icon-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "\/assets\/favicons\/android-icon-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "\/assets\/favicons\/android-icon-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "\/assets\/favicons\/android-icon-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "\/assets\/favicons\/android-icon-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "\/assets\/favicons\/android-icon-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ]
+}
diff --git a/assets/data/favicons/ms-icon-144x144.png b/assets/data/favicons/ms-icon-144x144.png
new file mode 100644
index 000000000..14025fcc5
Binary files /dev/null and b/assets/data/favicons/ms-icon-144x144.png differ
diff --git a/assets/data/favicons/ms-icon-150x150.png b/assets/data/favicons/ms-icon-150x150.png
new file mode 100644
index 000000000..0287bbac1
Binary files /dev/null and b/assets/data/favicons/ms-icon-150x150.png differ
diff --git a/assets/data/favicons/ms-icon-310x310.png b/assets/data/favicons/ms-icon-310x310.png
new file mode 100644
index 000000000..391084472
Binary files /dev/null and b/assets/data/favicons/ms-icon-310x310.png differ
diff --git a/assets/data/favicons/ms-icon-70x70.png b/assets/data/favicons/ms-icon-70x70.png
new file mode 100644
index 000000000..9fec1b391
Binary files /dev/null and b/assets/data/favicons/ms-icon-70x70.png differ
diff --git a/assets/data/fonts/roboto-slimfix.css b/assets/data/fonts/roboto-slimfix.css
index d2dd8a11e..61be5b6a2 100644
--- a/assets/data/fonts/roboto-slimfix.css
+++ b/assets/data/fonts/roboto-slimfix.css
@@ -2,110 +2,110 @@
font-family: 'Roboto';
font-weight: 400;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-300/Roboto-300.eot');
- src: url('/assets/vendor/fonts/Roboto-300/Roboto-300.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-300/Roboto-300.eot');
+ src: url('/assets/fonts/Roboto-300/Roboto-300.eot?#iefix') format('embedded-opentype'),
local('Roboto Light'),
local('Roboto-300'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-300/Roboto-300.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-300/Roboto-300.woff') format('woff'),
+ url('/assets/fonts/Roboto-300/Roboto-300.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-300/Roboto-300.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 500;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.eot');
- src: url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-regular/Roboto-regular.eot');
+ src: url('/assets/fonts/Roboto-regular/Roboto-regular.eot?#iefix') format('embedded-opentype'),
local('Roboto'),
local('Roboto-regular'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-regular/Roboto-regular.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.woff') format('woff'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 700;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-500/Roboto-500.eot');
- src: url('/assets/vendor/fonts/Roboto-500/Roboto-500.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-500/Roboto-500.eot');
+ src: url('/assets/fonts/Roboto-500/Roboto-500.eot?#iefix') format('embedded-opentype'),
local('Roboto Medium'),
local('Roboto-500'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-500/Roboto-500.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-500/Roboto-500.woff') format('woff'),
+ url('/assets/fonts/Roboto-500/Roboto-500.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-500/Roboto-500.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 900;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-700/Roboto-700.eot');
- src: url('/assets/vendor/fonts/Roboto-700/Roboto-700.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-700/Roboto-700.eot');
+ src: url('/assets/fonts/Roboto-700/Roboto-700.eot?#iefix') format('embedded-opentype'),
local('Roboto Bold'),
local('Roboto-700'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-700/Roboto-700.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-700/Roboto-700.woff') format('woff'),
+ url('/assets/fonts/Roboto-700/Roboto-700.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-700/Roboto-700.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 400;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot');
- src: url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-300italic/Roboto-300italic.eot');
+ src: url('/assets/fonts/Roboto-300italic/Roboto-300italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Light Italic'),
local('Roboto-300italic'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 500;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.eot');
- src: url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-italic/Roboto-italic.eot');
+ src: url('/assets/fonts/Roboto-italic/Roboto-italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Italic'),
local('Roboto-italic'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-italic/Roboto-italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 700;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot');
- src: url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-500italic/Roboto-500italic.eot');
+ src: url('/assets/fonts/Roboto-500italic/Roboto-500italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Medium Italic'),
local('Roboto-500italic'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 900;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot');
- src: url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-700italic/Roboto-700italic.eot');
+ src: url('/assets/fonts/Roboto-700italic/Roboto-700italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Bold Italic'),
local('Roboto-700italic'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.svg#Roboto') format('svg');
}
diff --git a/assets/data/fonts/roboto.css b/assets/data/fonts/roboto.css
index cae1c9044..ab36f23ca 100644
--- a/assets/data/fonts/roboto.css
+++ b/assets/data/fonts/roboto.css
@@ -2,110 +2,110 @@
font-family: 'Roboto';
font-weight: 300;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-300/Roboto-300.eot');
- src: url('/assets/vendor/fonts/Roboto-300/Roboto-300.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-300/Roboto-300.eot');
+ src: url('/assets/fonts/Roboto-300/Roboto-300.eot?#iefix') format('embedded-opentype'),
local('Roboto Light'),
local('Roboto-300'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-300/Roboto-300.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-300/Roboto-300.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-300/Roboto-300.woff') format('woff'),
+ url('/assets/fonts/Roboto-300/Roboto-300.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-300/Roboto-300.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 400;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.eot');
- src: url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-regular/Roboto-regular.eot');
+ src: url('/assets/fonts/Roboto-regular/Roboto-regular.eot?#iefix') format('embedded-opentype'),
local('Roboto'),
local('Roboto-regular'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-regular/Roboto-regular.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-regular/Roboto-regular.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.woff') format('woff'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-regular/Roboto-regular.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 500;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-500/Roboto-500.eot');
- src: url('/assets/vendor/fonts/Roboto-500/Roboto-500.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-500/Roboto-500.eot');
+ src: url('/assets/fonts/Roboto-500/Roboto-500.eot?#iefix') format('embedded-opentype'),
local('Roboto Medium'),
local('Roboto-500'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-500/Roboto-500.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-500/Roboto-500.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-500/Roboto-500.woff') format('woff'),
+ url('/assets/fonts/Roboto-500/Roboto-500.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-500/Roboto-500.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 700;
font-style: normal;
- src: url('/assets/vendor/fonts/Roboto-700/Roboto-700.eot');
- src: url('/assets/vendor/fonts/Roboto-700/Roboto-700.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-700/Roboto-700.eot');
+ src: url('/assets/fonts/Roboto-700/Roboto-700.eot?#iefix') format('embedded-opentype'),
local('Roboto Bold'),
local('Roboto-700'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-700/Roboto-700.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-700/Roboto-700.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-700/Roboto-700.woff') format('woff'),
+ url('/assets/fonts/Roboto-700/Roboto-700.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-700/Roboto-700.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 300;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot');
- src: url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-300italic/Roboto-300italic.eot');
+ src: url('/assets/fonts/Roboto-300italic/Roboto-300italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Light Italic'),
local('Roboto-300italic'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-300italic/Roboto-300italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-300italic/Roboto-300italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 400;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.eot');
- src: url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-italic/Roboto-italic.eot');
+ src: url('/assets/fonts/Roboto-italic/Roboto-italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Italic'),
local('Roboto-italic'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-italic/Roboto-italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-italic/Roboto-italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-italic/Roboto-italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 500;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot');
- src: url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-500italic/Roboto-500italic.eot');
+ src: url('/assets/fonts/Roboto-500italic/Roboto-500italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Medium Italic'),
local('Roboto-500italic'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-500italic/Roboto-500italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-500italic/Roboto-500italic.svg#Roboto') format('svg');
}
@font-face {
font-family: 'Roboto';
font-weight: 700;
font-style: italic;
- src: url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot');
- src: url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.eot?#iefix') format('embedded-opentype'),
+ src: url('/assets/fonts/Roboto-700italic/Roboto-700italic.eot');
+ src: url('/assets/fonts/Roboto-700italic/Roboto-700italic.eot?#iefix') format('embedded-opentype'),
local('Roboto Bold Italic'),
local('Roboto-700italic'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff2') format('woff2'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.woff') format('woff'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.ttf') format('truetype'),
- url('/assets/vendor/fonts/Roboto-700italic/Roboto-700italic.svg#Roboto') format('svg');
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.woff2') format('woff2'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.woff') format('woff'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.ttf') format('truetype'),
+ url('/assets/fonts/Roboto-700italic/Roboto-700italic.svg#Roboto') format('svg');
}
diff --git a/cmds/portmaster-start/run.go b/cmds/portmaster-start/run.go
index 42c2b532b..8cbea78e9 100644
--- a/cmds/portmaster-start/run.go
+++ b/cmds/portmaster-start/run.go
@@ -109,27 +109,8 @@ func init() {
PIDFile: true,
RestartOnFail: true,
},
+ app2Options,
})
-
- if onWindows {
- registerComponent([]Options{
- {
- Name: "Portmaster App2",
- Identifier: "app2/portmaster-app.zip",
- AllowDownload: false,
- AllowHidingWindow: false,
- },
- })
- } else {
- registerComponent([]Options{
- {
- Name: "Portmaster App2",
- Identifier: "app2/portmaster-app",
- AllowDownload: false,
- AllowHidingWindow: false,
- },
- })
- }
}
func registerComponent(opts []Options) {
@@ -352,12 +333,13 @@ func persistOutputStreams(opts *Options, version string, cmd *exec.Cmd) (chan st
}
func execute(opts *Options, args []string) (cont bool, err error) {
- if !forceOldUI && registry.UsePreReleases && opts.ShortIdentifier == "app" {
- // Check if new ui was already tried.
- if !fallBackToOldUI {
- opts = &app2Options
- log.Println("Using new UI")
- }
+ // Auto-upgrade to new UI if in beta and new UI is not disabled or failed.
+ if opts.ShortIdentifier == "app" &&
+ registry.UsePreReleases &&
+ !forceOldUI &&
+ !fallBackToOldUI {
+ log.Println("auto-upgraded to new UI")
+ opts = &app2Options
}
file, err := registry.GetFile(
diff --git a/desktop/angular/src/app/pages/dashboard/dashboard.component.html b/desktop/angular/src/app/pages/dashboard/dashboard.component.html
index aaf3077c0..23fa62ff2 100644
--- a/desktop/angular/src/app/pages/dashboard/dashboard.component.html
+++ b/desktop/angular/src/app/pages/dashboard/dashboard.component.html
@@ -16,14 +16,6 @@
Welcome back!
-
-
- New: Click shield to open dashboard
-
diff --git a/desktop/angular/src/main.ts b/desktop/angular/src/main.ts
index 2b10a238c..1d83337d5 100644
--- a/desktop/angular/src/main.ts
+++ b/desktop/angular/src/main.ts
@@ -60,9 +60,9 @@ if (document.addEventListener) {
let linkTag = document.createElement("link");
linkTag.rel = "stylesheet";
- linkTag.href = "/assets/vendor/fonts/roboto.css";
+ linkTag.href = "/assets/fonts/roboto.css";
if (navigator.platform.startsWith("Win")) {
- linkTag.href = "/assets/vendor/fonts/roboto-slimfix.css"
+ linkTag.href = "/assets/fonts/roboto-slimfix.css"
}
document.head.appendChild(linkTag);