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);