diff --git a/.gitignore b/.gitignore index b306f0d6a..21c8361bc 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ .DS_Store .idea .vscode +.sonarlint .yarn /*.diff /*.patch @@ -38,6 +39,7 @@ runtime/pgAdmin4.app/ runtime/pgAdmin4.pro.user* runtime/pgAdmin4_resource.rc runtime/release/ +runtime/dev_config.json runtime/ui_BrowserWindow.h web/config_local.py web/pgadmin/misc/themes/pgadmin.themes.json diff --git a/Make.bat b/Make.bat index ba1f616cf..83844559b 100644 --- a/Make.bat +++ b/Make.bat @@ -260,45 +260,32 @@ REM Main build sequence Ends RD /Q /S "%BUILDROOT%\docs\en_US\html\_sources" 1> nul 2>&1 ECHO Staging runtime components... - XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\assets" > nul || EXIT /B 1 - XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\src" > nul || EXIT /B 1 + MKDIR "%BUILDROOT%\runtime\resources\app" + XCOPY /S /I /E /H /Y "%WD%\runtime\assets" "%BUILDROOT%\runtime\resources\app\assets" > nul || EXIT /B 1 + XCOPY /S /I /E /H /Y "%WD%\runtime\src" "%BUILDROOT%\runtime\resources\app\src" > nul || EXIT /B 1 - COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\" > nul || EXIT /B 1 - CD "%BUILDROOT%\runtime\" + COPY "%WD%\runtime\package.json" "%BUILDROOT%\runtime\resources\app\" > nul || EXIT /B 1 + CD "%BUILDROOT%\runtime\resources\app\" CALL yarn install --production=true || EXIT /B 1 - ECHO Downloading NWjs to %TMPDIR%... - REM Get a fresh copy of nwjs. - REM NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget which retries - - REM YARN - REM CALL yarn --cwd "%TMPDIR%" add nw || EXIT /B - REM YARN END + ECHO Downloading Electron to %TMPDIR%... + REM Get a fresh copy of electron. REM WGET - REM Comment out the below line as the latest version having some - REM problem https://github.com/nwjs/nw.js/issues/7964, so for the time being - REM hardcoded the version to 0.77.0 - REM FOR /f "tokens=2 delims='" %%i IN ('yarn info nw ^| findstr "latest: "') DO SET "NW_VERSION=%%i" - REM :GET_NW - REM wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" - REM IF %ERRORLEVEL% NEQ 0 GOTO GET_NW + FOR /f "tokens=2 delims='" %%i IN ('yarn info electron ^| findstr "latest: "') DO SET "ELECTRON_VERSION=%%i" + :GET_NW + wget https://github.com/electron/electron/releases/download/v%ELECTRON_VERSION%/electron-v%ELECTRON_VERSION%-win32-x64.zip -O "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip" + IF %ERRORLEVEL% NEQ 0 GOTO GET_NW - SET "NW_VERSION=0.77.0" - wget https://dl.nwjs.io/v%NW_VERSION%/nwjs-v%NW_VERSION%-win-x64.zip -O "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" - - tar -C "%TMPDIR%" -xvf "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64.zip" || EXIT /B 1 + MKDIR "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" || EXIT /B 1 + tar -C "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64" -xvf "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64.zip" || EXIT /B 1 REM WGET END - REM YARN - REM XCOPY /S /I /E /H /Y "%TMPDIR%\node_modules\nw\nwjs\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1 - REM YARN END + REM XCOPY + XCOPY /S /I /E /H /Y "%TMPDIR%\electron-v%ELECTRON_VERSION%-win32-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1 + REM XCOPY END - REM WGET - XCOPY /S /I /E /H /Y "%TMPDIR%\nwjs-v%NW_VERSION%-win-x64\*" "%BUILDROOT%\runtime" > nul || EXIT /B 1 - REM WGET END - - MOVE "%BUILDROOT%\runtime\nw.exe" "%BUILDROOT%\runtime\pgAdmin4.exe" + MOVE "%BUILDROOT%\runtime\electron.exe" "%BUILDROOT%\runtime\pgAdmin4.exe" ECHO Attempting to sign the pgAdmin4.exe... CALL "%PGADMIN_SIGNTOOL_DIR%\signtool.exe" sign /tr http://timestamp.digicert.com "%BUILDROOT%\runtime\pgAdmin4.exe" IF %ERRORLEVEL% NEQ 0 ( @@ -310,8 +297,13 @@ REM Main build sequence Ends ) ECHO Replacing executable icon... - CALL yarn --cwd "%TMPDIR%" add winresourcer || EXIT /B - "%TMPDIR%\node_modules\winresourcer\bin\Resourcer.exe" -op:upd -src:"%BUILDROOT%\runtime\pgAdmin4.exe" -type:Icongroup -name:IDR_MAINFRAME -file:"%WD%\pkg\win32\Resources\pgAdmin4.ico" + + ECHO Downloading rcedit.exe... + wget https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe -O "%TMPDIR%\rcedit-x64.exe" + %TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-icon "%WD%\pkg\win32\Resources\pgAdmin4.ico" + %TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "FileDescription" "%APP_NAME%" + %TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-version-string "ProductName" "%APP_NAME%" + %TMPDIR%\rcedit-x64.exe "%BUILDROOT%\runtime\pgAdmin4.exe" --set-product-version "%APP_VERSION%"" ECHO Staging PostgreSQL components... COPY "%PGADMIN_POSTGRES_DIR%\bin\libpq.dll" "%BUILDROOT%\runtime" > nul || EXIT /B 1 diff --git a/pkg/linux/build-functions.sh b/pkg/linux/build-functions.sh index 7ee403088..151fa529a 100644 --- a/pkg/linux/build-functions.sh +++ b/pkg/linux/build-functions.sh @@ -133,55 +133,47 @@ _create_python_virtualenv() { _build_runtime() { echo "Assembling the desktop runtime..." - # Get a fresh copy of nwjs. - # NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget - # in a retry loop as Yarn/Npm don't seem to like that. + # Get a fresh copy of electron. - # YARN: - # yarn add --cwd "${BUILDROOT}" nw - # YARN END + ELECTRON_ARCH="x64" + if [ "$(uname -m)" == "arm64" ]; then + ELECTRON_ARCH="arm64" + fi - # WGET: - # Comment out the below line as the latest version having some - # problem https://github.com/nwjs/nw.js/issues/7964, so for the time being - # hardcoded the version to 0.77.0 - # NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}') - NW_VERSION="0.77.0" + ELECTRON_VERSION=$(yarn info electron | grep latest | awk -F "'" '{ print $2}') pushd "${BUILDROOT}" > /dev/null || exit while true;do - wget "https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-linux-x64.tar.gz" && break - rm "nwjs-v${NW_VERSION}-linux-x64.tar.gz" + wget "https://github.com/electron/electron/releases/download/v${ELECTRON_VERSION}/electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}.zip" && break + rm "electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}.zip" done - tar -zxvf "nwjs-v${NW_VERSION}-linux-x64.tar.gz" + unzip "electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}.zip" -d "electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}" popd > /dev/null || exit - # WGET END - # Copy nwjs into the staging directory + # Copy electron into the staging directory mkdir -p "${DESKTOPROOT}/usr/${APP_NAME}/bin" # The chmod command below is needed to fix the permission issue of # the NWjs binaries and files. # Change the permission for others and group the same as the owner - chmod -R og=u "${BUILDROOT}/nwjs-v${NW_VERSION}-linux-x64"/* + chmod -R og=u "${BUILDROOT}/electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}"/* # Explicitly remove write permissions for others and group - chmod -R og-w "${BUILDROOT}/nwjs-v${NW_VERSION}-linux-x64"/* + chmod -R og-w "${BUILDROOT}/electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}"/* - # YARN: - # cp -r "${BUILDROOT}/node_modules/nw/nwjs"/* "${DESKTOPROOT}/usr/${APP_NAME}/bin" - # YARN END + BUNDLEDIR="${DESKTOPROOT}/usr/${APP_NAME}/bin" # WGET: - cp -r "${BUILDROOT}/nwjs-v${NW_VERSION}-linux-x64"/* "${DESKTOPROOT}/usr/${APP_NAME}/bin" + cp -r "${BUILDROOT}/electron-v${ELECTRON_VERSION}-linux-${ELECTRON_ARCH}"/* "${BUNDLEDIR}" # WGET END - mv "${DESKTOPROOT}/usr/${APP_NAME}/bin/nw" "${DESKTOPROOT}/usr/${APP_NAME}/bin/${APP_NAME}" + mv "${BUNDLEDIR}/electron" "${BUNDLEDIR}/${APP_NAME}" - cp -r "${SOURCEDIR}/runtime/assets" "${DESKTOPROOT}/usr/${APP_NAME}/bin/assets" - cp -r "${SOURCEDIR}/runtime/src" "${DESKTOPROOT}/usr/${APP_NAME}/bin/src" + mkdir -p "${BUNDLEDIR}/resources/app" + cp -r "${SOURCEDIR}/runtime/assets" "${BUNDLEDIR}/resources/app/assets" + cp -r "${SOURCEDIR}/runtime/src" "${BUNDLEDIR}/resources/app/src" - cp "${SOURCEDIR}/runtime/package.json" "${DESKTOPROOT}/usr/${APP_NAME}/bin/" - yarn --cwd "${DESKTOPROOT}/usr/${APP_NAME}/bin" install --production=true + cp "${SOURCEDIR}/runtime/package.json" "${BUNDLEDIR}/resources/app" + yarn --cwd "${BUNDLEDIR}/resources/app" install --production=true # Create the icon mkdir -p "${DESKTOPROOT}/usr/share/icons/hicolor/128x128/apps/" diff --git a/pkg/mac/Info.plist-helper.in b/pkg/mac/Info.plist-helper.in new file mode 100644 index 000000000..e95ab0713 --- /dev/null +++ b/pkg/mac/Info.plist-helper.in @@ -0,0 +1,37 @@ + + + + + CFBundleIdentifier + %APPID% + CFBundleName + %APPNAME% + CFBundlePackageType + APPL + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTSDKBuild + 23A334 + DTSDKName + macosx14.0 + DTXcode + 1501 + DTXcodeBuild + 15A507 + LSEnvironment + + MallocNanoZone + 0 + + LSUIElement + + NSSupportsAutomaticGraphicsSwitching + + CFBundleDisplayName + %APPNAME% + CFBundleExecutable + %APPNAME% + CFBundleShortVersionString + %APPVER% + + diff --git a/pkg/mac/build-functions.sh b/pkg/mac/build-functions.sh index 9f57a32cb..63b753c91 100644 --- a/pkg/mac/build-functions.sh +++ b/pkg/mac/build-functions.sh @@ -26,56 +26,37 @@ _build_runtime() { echo "Assembling the runtime environment..." test -d "${BUILD_ROOT}" || mkdir "${BUILD_ROOT}" - - # Get a fresh copy of nwjs. - # NOTE: The nw download servers seem to be very unreliable, so at the moment we're using wget - # in a retry loop as Yarn/Npm don't seem to like that. - + # Get a fresh copy of electron # uname -m returns "x86_64" on Intel, but we need "x64" - NW_ARCH="x64" + ELECTRON_ARCH="x64" if [ "$(uname -m)" == "arm64" ]; then - NW_ARCH="arm64" + ELECTRON_ARCH="arm64" fi - # YARN: - # yarn add --cwd "${BUILDROOT}" nw - # YARN END - - # WGET: - # Comment out the below line as the latest version having some - # problem https://github.com/nwjs/nw.js/issues/7964, so for the time being - # hardcoded the version to 0.77.0 - # NW_VERSION=$(yarn info nw | grep latest | awk -F "'" '{ print $2}') - NW_VERSION="0.77.0" + ELECTRON_VERSION=$(yarn info electron | grep latest | awk -F "'" '{ print $2}') pushd "${BUILD_ROOT}" > /dev/null || exit while true;do - wget "https://dl.nwjs.io/v${NW_VERSION}/nwjs-v${NW_VERSION}-osx-${NW_ARCH}.zip" && break - rm "nwjs-v${NW_VERSION}-osx-${NW_ARCH}.zip" + wget "https://github.com/electron/electron/releases/download/v${ELECTRON_VERSION}/electron-v${ELECTRON_VERSION}-darwin-${ELECTRON_ARCH}.zip" && break + rm "electron-v${ELECTRON_VERSION}-darwin-${ELECTRON_ARCH}.zip" done - unzip "nwjs-v${NW_VERSION}-osx-${NW_ARCH}.zip" + unzip "electron-v${ELECTRON_VERSION}-darwin-${ELECTRON_ARCH}.zip" popd > /dev/null || exit # WGET END - # YARN: - # cp -R "${BUILD_ROOT}/node_modules/nw/nwjs/nwjs.app" "${BUILD_ROOT}/" - # YARN END - # WGET: - cp -R "${BUILD_ROOT}/nwjs-v${NW_VERSION}-osx-${NW_ARCH}"/nwjs.app "${BUILD_ROOT}/" - # WGET END - - mv "${BUILD_ROOT}/nwjs.app" "${BUNDLE_DIR}" + mv "${BUILD_ROOT}/Electron.app" "${BUNDLE_DIR}" + find "${BUNDLE_DIR}" -exec touch {} \; # Copy in the runtime code - mkdir "${BUNDLE_DIR}/Contents/Resources/app.nw/" - cp -R "${SOURCE_DIR}/runtime/assets" "${BUNDLE_DIR}/Contents/Resources/app.nw/" - cp -R "${SOURCE_DIR}/runtime/src" "${BUNDLE_DIR}/Contents/Resources/app.nw/" - cp "${SOURCE_DIR}/runtime/package.json" "${BUNDLE_DIR}/Contents/Resources/app.nw/" - cp "${SOURCE_DIR}/runtime/.yarnrc.yml" "${BUNDLE_DIR}/Contents/Resources/app.nw/" + mkdir "${BUNDLE_DIR}/Contents/Resources/app/" + cp -R "${SOURCE_DIR}/runtime/assets" "${BUNDLE_DIR}/Contents/Resources/app/" + cp -R "${SOURCE_DIR}/runtime/src" "${BUNDLE_DIR}/Contents/Resources/app/" + cp "${SOURCE_DIR}/runtime/package.json" "${BUNDLE_DIR}/Contents/Resources/app/" + cp "${SOURCE_DIR}/runtime/.yarnrc.yml" "${BUNDLE_DIR}/Contents/Resources/app/" # Install the runtime node_modules, then replace the package.json - pushd "${BUNDLE_DIR}/Contents/Resources/app.nw/" > /dev/null || exit + pushd "${BUNDLE_DIR}/Contents/Resources/app/" > /dev/null || exit yarn set version berry yarn set version 3 yarn plugin import workspace-tools @@ -178,7 +159,6 @@ _fixup_imports() { # Find all the files that may need tweaks TODO=$(find . -perm +0111 -type f -exec file "{}" \; | \ grep -v "Frameworks/Python.framework" | \ - grep -v "Frameworks/nwjs" | \ grep -E "Mach-O 64-bit" | \ awk -F ':| ' '{ORS=" "; print $1}' | \ uniq) @@ -273,10 +253,19 @@ _complete_bundle() { sed -i '' "s/%APPNAME%/${APP_NAME}/g" "${BUNDLE_DIR}/Contents/Info.plist" sed -i '' "s/%APPVER%/${APP_LONG_VERSION}/g" "${BUNDLE_DIR}/Contents/Info.plist" sed -i '' "s/%APPID%/org.pgadmin.pgadmin4/g" "${BUNDLE_DIR}/Contents/Info.plist" - for FILE in "${BUNDLE_DIR}"/Contents/Resources/*.lproj/InfoPlist.strings; do - sed -i '' 's/CFBundleGetInfoString =.*/CFBundleGetInfoString = "Copyright (C) 2013 - 2024, The pgAdmin Development Team";/g' "${FILE}" - sed -i '' 's/NSHumanReadableCopyright =.*/NSHumanReadableCopyright = "Copyright (C) 2013 - 2024, The pgAdmin Development Team";/g' "${FILE}" - echo CFBundleDisplayName = \""${APP_NAME}"\"\; >> "${FILE}" + + # Rename helper execs and Update the plist + for helper_exec in "Electron Helper" "Electron Helper (Renderer)" "Electron Helper (Plugin)" "Electron Helper (GPU)" + do + pgadmin_exec=${helper_exec//Electron/pgAdmin 4} + mv "${BUNDLE_DIR}/Contents/Frameworks/${helper_exec}.app/Contents/MacOS/${helper_exec}" "${BUNDLE_DIR}/Contents/Frameworks/${helper_exec}.app/Contents/MacOS/${pgadmin_exec}" + mv "${BUNDLE_DIR}/Contents/Frameworks/${helper_exec}.app" "${BUNDLE_DIR}/Contents/Frameworks/${pgadmin_exec}.app" + + info_plist="${BUNDLE_DIR}/Contents/Frameworks/${pgadmin_exec}.app/Contents/Info.plist" + cp Info.plist-helper.in "${info_plist}" + sed -i '' "s/%APPNAME%/${pgadmin_exec}/g" "${info_plist}" + sed -i '' "s/%APPVER%/${APP_LONG_VERSION}/g" "${info_plist}" + sed -i '' "s/%APPID%/org.pgadmin.pgadmin4.helper/g" "${info_plist}" done # PkgInfo @@ -286,10 +275,10 @@ _complete_bundle() { cp pgAdmin4.icns "${BUNDLE_DIR}/Contents/Resources/app.icns" # Rename the executable - mv "${BUNDLE_DIR}/Contents/MacOS/nwjs" "${BUNDLE_DIR}/Contents/MacOS/${APP_NAME}" + mv "${BUNDLE_DIR}/Contents/MacOS/Electron" "${BUNDLE_DIR}/Contents/MacOS/${APP_NAME}" # Rename the app in package.json so the menu looks as it should - sed -i '' "s/\"name\": \"pgadmin4\"/\"name\": \"${APP_NAME}\"/g" "${BUNDLE_DIR}/Contents/Resources/app.nw/package.json" + sed -i '' "s/\"name\": \"pgadmin4\"/\"name\": \"${APP_NAME}\"/g" "${BUNDLE_DIR}/Contents/Resources/app/package.json" # Import the dependencies, and rewrite any library references _fixup_imports "${BUNDLE_DIR}" diff --git a/requirements.txt b/requirements.txt index 3667fc5de..f8d1df18a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -41,7 +41,6 @@ sshtunnel==0.* ldap3==2.* gssapi==1.8.* eventlet==0.36.1 -httpagentparser==1.9.* user-agents==2.2.0 pywinpty==2.0.*; sys_platform=="win32" Authlib==1.3.*; python_version > '3.7' diff --git a/runtime/.eslintignore b/runtime/.eslintignore deleted file mode 100644 index 676a4f03f..000000000 --- a/runtime/.eslintignore +++ /dev/null @@ -1,6 +0,0 @@ -generated -node_modules -vendor -templates/ -templates\ -ycache diff --git a/runtime/.eslintrc.js b/runtime/.eslintrc.js index f778838fa..aaa51eb4f 100644 --- a/runtime/.eslintrc.js +++ b/runtime/.eslintrc.js @@ -6,47 +6,55 @@ // This software is released under the PostgreSQL Licence // ////////////////////////////////////////////////////////////// +import globals from 'globals'; +import js from '@eslint/js'; -module.exports = { - 'env': { - 'browser': true, - 'es6': true, - 'amd': true, - }, - 'extends': [ - 'eslint:recommended', - ], - 'parserOptions': { - 'ecmaVersion': 2018, - "sourceType": "module", - }, - 'globals': { - '_': true, - 'module': true, - 'process': true, - 'nw': true, - 'platform': true - }, - 'rules': { - 'indent': [ - 'error', - 2 +export default [ + js.configs.recommended, + { + files: ['**/*.js'], + ignores: [ + 'generated', + 'node_modules', + 'vendor', + 'templates/', + 'templates\\', + 'ycache', ], - 'linebreak-style': 0, - 'quotes': [ - 'error', - 'single' - ], - 'semi': [ - 'error', - 'always' - ], - 'comma-dangle': [ - 'error', - 'always-multiline' - ], - 'no-console': ["error", { allow: ["warn", "error"] }], - // We need to exclude below for RegEx case - "no-useless-escape": 0, + languageOptions: { + ecmaVersion: 2022, + sourceType: 'module', + globals: { + ...globals.browser, + ...globals.es2017, + ...globals.amd, + '_': 'readonly', + 'module': 'readonly', + 'process': 'readonly', + 'platform': 'readonly', + }, + }, + 'rules': { + 'indent': [ + 'error', + 2, + ], + 'linebreak-style': 0, + 'quotes': [ + 'error', + 'single', + ], + 'semi': [ + 'error', + 'always', + ], + 'comma-dangle': [ + 'error', + 'always-multiline', + ], + 'no-console': ['error', { allow: ['warn', 'error'] }], + // We need to exclude below for RegEx case + 'no-useless-escape': 0, + }, }, -}; +]; diff --git a/runtime/package.json b/runtime/package.json index 4f3d717f1..074f87931 100644 --- a/runtime/package.json +++ b/runtime/package.json @@ -1,37 +1,24 @@ { "name": "pgadmin4", "description": "pgAdmin is the most popular and feature rich Open Source administration and development platform for PostgreSQL, the most advanced Open Source database in the world.", - "main": "src/html/pgadmin.html", "repository": "https://github.com/postgres/pgadmin4.git", "author": "pgAdmin Development Team (https://www.pgadmin.org/)", "license": "PostgreSQL", - "chromium-args": "--disable-popup-blocking --disable-gpu --disable-devtools", - "user-agent": "Nwjs:%nwver-%osinfo-%chromium_ver", - "nodejs": true, - "window": { - "width": 750, - "height": 600, - "toolbar": false, - "fullscreen": false, - "frame": false, - "show": true, - "position": "center", - "always-on-top": true, - "icon": "assets/pgAdmin4.png" + "type": "module", + "main": "src/js/pgadmin.js", + "scripts": { + "start": "electron .", + "linter": "yarn run eslint -c .eslintrc.js ." }, - "icons": { - "256": "assets/pgAdmin4.png" + "packageManager": "yarn@3.8.2", + "devDependencies": { + "@eslint/js": "^9.5.0", + "electron": "^30.0.5", + "eslint": "^9.5.0" }, "dependencies": { "axios": "^1.7.2", - "bootstrap": "^4.5.3" - }, - "devDependencies": { - "eslint": "^9.5.0", - "nw": "0.77.0" - }, - "scripts": { - "linter": "yarn eslint --no-eslintrc -c .eslintrc.js --ext .js ." - }, - "packageManager": "yarn@3.8.2" + "bootstrap": "^4.5.3", + "electron-store": "^9.0.0" + } } diff --git a/runtime/src/html/configure.html b/runtime/src/html/configure.html index 4a272ba46..880c25363 100644 --- a/runtime/src/html/configure.html +++ b/runtime/src/html/configure.html @@ -4,7 +4,7 @@ - pgAdmin 4 Configuration + pgAdmin 4 Runtime Configuration