diff --git a/CHANGELOG.md b/CHANGELOG.md index 22372a4..52ed04c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ # Changelog # +## 1.0.4 ## +* \#27: Implement Bitbucket backup download location +* \#28: Fix Linux upgrade +* Additional Linux distribution support: + * Debian 10 + * OpenSUSE Leap 15.0 + * OpenSUSE Leap 15.1 + * OpenSUSE Tumbleweed + ## 1.0.3 ## * Linux distribution support * Arch Linux diff --git a/README.md b/README.md index 4e71876..2f82cdd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Repertory UI # -![alt text](https://i.ibb.co/jM2Q5Wf/repertory-1-0-0-beta.png) +![alt text](https://i.ibb.co/h8tssB4/Screen-Shot-2019-07-09-at-11-54-55-PM.png) ## GUI for [Repertory](https://bitbucket.org/blockstorage/repertory) ## Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows. @@ -9,10 +9,10 @@ Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions v * SiaPrime >=1.4.0 ## Downloads ## -* [Repertory UI v1.0.3 Linux 64-bit](https://pixeldrain.com/u/wjM4z9tn) +* **Repertory UI v1.0.4 Linux 64-bit** [](https://pixeldrain.com/u/jVeUr8Zq) [](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage) * NOTE: Linux distributions require `fuse` and `libfuse` to be installed. -* [Repertory UI v1.0.3 OS X 64-bit](https://pixeldrain.com/u/pQPh4q9d) -* [Repertory UI v1.0.3 Windows 64-bit](https://pixeldrain.com/u/WpBrXw0Z) +* **Repertory UI v1.0.4 OS X 64-bit** [](https://pixeldrain.com/u/uKrr0H5r) [](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_mac.dmg) +* **Repertory UI v1.0.4 Windows 64-bit** [](https://pixeldrain.com/u/PlUcsmJN) [](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_win.exe) ## Supported Platforms ## * OS X 64-bit @@ -22,12 +22,16 @@ Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions v * Bodhi 5.0.0 * CentOS 7 * Debian 9 + * Debian 10 * Elementary OS 5.0 * Fedora 28 * Fedora 29 * Fedora 30 * Linux Mint 19 * Linux Mint 19.1 + * OpenSUSE Leap 15.0 + * OpenSUSE Leap 15.1 + * OpenSUSE Tumbleweed * Solus * Ubuntu 18.04 * Ubuntu 18.10 diff --git a/create_dist.cmd b/create_dist.cmd index 229f931..0b5c6e4 100644 --- a/create_dist.cmd +++ b/create_dist.cmd @@ -2,6 +2,8 @@ setlocal EnableDelayedExpansion set ROOT=%~dp0% +set /a ENABLE_UPLOAD=%1 +set BITBUCKET_AUTH=%2 set OPENSSL_BIN="c:\OpenSSL-Win64\bin\openssl.exe" set PRIVATE_KEY="c:\src\cert\blockstorage_dev_private.pem" @@ -25,24 +27,33 @@ pushd "%ROOT%" pushd dist (certutil -hashfile "%OUT_FILE%" SHA256 | %SED_BIN% -e "1d" -e "$d" -e "s/\ //g") > "%OUT_FILE%.sha256" || (call :ERROR "Create sha-256 failed") "%OPENSSL_BIN%" dgst -sha256 -sign "%PRIVATE_KEY%" -out "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Create signature failed") + "%OPENSSL_BIN%" dgst -sha256 -verify "%PUBLIC_KEY%" -signature "%OUT_FILE%.sig" "%OUT_FILE%" || (call :ERROR "Verify signature failed") "%B64_BIN%" -e "%OUT_FILE%.sig" "%OUT_FILE%.sig.b64" || (call :ERROR "Create base64 failed") - for /f "delims=" %%i in ('type %OUT_FILE%.sig.b64') do set APP_SIG=!APP_SIG!%%i - for /f "delims=" %%i in ('type %OUT_FILE%.sha256') do set APP_SHA256=!APP_SHA256!%%i - del /q upload_response.json 1>NUL 2>&1 + if "%ENABLE_UPLOAD%"=="1" ( + for /f "delims=" %%i in ('type %OUT_FILE%.sig.b64') do set APP_SIG=!APP_SIG!%%i + for /f "delims=" %%i in ('type %OUT_FILE%.sha256') do set APP_SHA256=!APP_SHA256!%%i - ("%CURL_BIN%" -F name="%OUT_FILE%" -F anonymous=true -F file="@%OUT_FILE%" https://pixeldrain.com/api/file > upload_response.json) || ( - call :PIXEL_RESPONSE 0 + del /q upload_response.json 1>NUL 2>&1 + + ("%CURL_BIN%" -F name="%OUT_FILE%" -F anonymous=true -F file="@%OUT_FILE%" https://pixeldrain.com/api/file > upload_response.json) || ( + call :PIXEL_RESPONSE 0 + ) + call :PIXEL_RESPONSE 1 + set PIXEL_LOCATION=https://pixeldrain.com/api/file/!PIXEL_ID! + + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%" + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%.sha256" + call :UPLOAD_TO_BITBUCKET "%OUT_FILE%.sig" + set BITBUCKET_LOCATION=https://bitbucket.org/blockstorage/repertory-ui/downloads/%OUT_FILE% + + del /q releases.json 1>NUL 2>&1 + + ("%JQ_BIN%" ".Versions.win32|=(.+ ["""%APP_VER%"""]|unique)" ..\releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json Versions failed") + ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sig="""!APP_SIG!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sig failed") + ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sha256="""!APP_SHA256!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sha256 failed") + ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".urls=["""!PIXEL_LOCATION!""","""!BITBUCKET_LOCATION!"""]" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json URL failed") ) - call :PIXEL_RESPONSE 1 - set PIXEL_LOCATION=https://pixeldrain.com/api/file/!PIXEL_ID! - - del /q releases.json 1>NUL 2>&1 - - ("%JQ_BIN%" ".Versions.win32|=(.+ ["""%APP_VER%"""]|unique)" ..\releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json Versions failed") - ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sig="""!APP_SIG!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sig failed") - ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".sha256="""!APP_SHA256!"""" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json sha256 failed") - ("%JQ_BIN%" ".Locations.win32."""%APP_VER%""".urls=["""!PIXEL_LOCATION!"""]" releases.json>releases_temp.json && move /Y releases_temp.json releases.json 1>NUL 2>&1) || (call :ERROR "Update releases.json URL failed") popd ) || ( call :ERROR "Create dist failed" @@ -78,6 +89,14 @@ goto :EOF ) goto :EOF +:UPLOAD_TO_BITBUCKET + set SOURCE_FILE=%1 + call :NO_QUOTES SOURCE_FILE + call :NO_QUOTES BITBUCKET_AUTH + echo "Uploading !SOURCE_FILE! to Bitbucket" + (curl --fail -u "!BITBUCKET_AUTH!" -X POST https://api.bitbucket.org/2.0/repositories/blockstorage/repertory-ui/downloads -F files="@!SOURCE_FILE!" > upload_response.json) || (call :ERROR "Upload to Bitbucket failed: %SOURCE_FILE%") +goto :EOF + :ERROR echo %1 set ERROR_EXIT=1 diff --git a/create_dist.sh b/create_dist.sh index 687dfcb..8986829 100755 --- a/create_dist.sh +++ b/create_dist.sh @@ -1,49 +1,79 @@ #!/bin/sh +beginsWith() { case $2 in "$1"*) true;; *) false;; esac; } + PATH=$(pwd)/bin:$PATH export PATH -DISTRO_LIST="arch centos7 debian9 fedora28 fedora29 fedora30 solus ubuntu18.04 ubuntu18.10 ubuntu19.04" +ENABLE_UPLOAD=$1 +BITBUCKET_AUTH=$2 PRIVATE_KEY=../../blockstorage_dev_private.pem -PUBLIC_KEY=./blockstorage_dev_public.pem - +PUBLIC_KEY=../blockstorage_dev_public.pem APP_VER=$(grep -m1 -a version package.json|sed -e "s/\"//g" -e "s/version: //g" -e "s/,//g" -e "s/ //g") -OUT_FILE=repertory-ui_${APP_VER}_linux_x86_64.AppImage + +if beginsWith darwin "$OSTYPE"; then + DISTRO_LIST="darwin" + OUT_FILE=repertory-ui_${APP_VER}_mac.dmg + BASE64_EXEC=base64 + JQ_EXEC=jq-osx-amd64 + SHA256_EXEC="shasum -a 256 -b" +else + DISTRO_LIST="arch centos7 debian9 debian10 fedora28 fedora29 fedora30 opensuse15 opensuse15.1 solus tumbleweed ubuntu18.04 ubuntu18.10 ubuntu19.04" + OUT_FILE=repertory-ui_${APP_VER}_linux_x86_64.AppImage + BASE64_EXEC="base64 -w0" + JQ_EXEC=jq-linux64 + SHA256_EXEC="sha256sum -b" +fi exit_script() { echo $1 exit 1 } +upload_to_bitbucket() { + SOURCE_FILE=$1 + curl --fail -u "${BITBUCKET_AUTH}" -X POST https://api.bitbucket.org/2.0/repositories/blockstorage/repertory-ui/downloads -F files=@${SOURCE_FILE} > upload_response.json || exit_script "Upload to Bitbucket failed: ${SOURCE_FILE}" +} + +chmod +x "bin/${JQ_EXEC}" || exit_script "chmod +x ${JQ_EXEC} failed" + if npm run dist; then cd dist - sha256sum -b ${OUT_FILE} > ${OUT_FILE}.sha256 || exit_script "Create sha256 failed" + ${SHA256_EXEC} ${OUT_FILE} > ${OUT_FILE}.sha256 || exit_script "Create sha256 failed" openssl dgst -sha256 -sign "${PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_script "Create signature failed" - base64 -w0 "${OUT_FILE}.sig" > "${OUT_FILE}.sig.b64" || exit_script "Create base64 failed" - - rm -f upload_response.json 1>/dev/null 2>&1 - curl -F name="${OUT_FILE}" -F anonymous=true -F file="@${OUT_FILE}" https://pixeldrain.com/api/file > upload_response.json || exit_script "Upload to Pixeldrain failed" - - PIXEL_SUCCESS=$(jq-linux64 .success upload_response.json) - if [ "${PIXEL_SUCCESS}" = "false" ]; then - PIXEL_MESSAGE=$(jq-linux64 .message upload_response.json) - exit_script "${PIXEL_MESSAGE}" - else - PIXEL_ID=$(jq-linux64 .id upload_response.json|sed s/\"//g) - PIXEL_LOCATION=https://pixeldrain.com/api/file/${PIXEL_ID} + openssl dgst -sha256 -verify "${PUBLIC_KEY}" -signature "${OUT_FILE}.sig" "${OUT_FILE}" || exit_script "Verify signature failed" + ${BASE64_EXEC} "${OUT_FILE}.sig" > "${OUT_FILE}.sig.b64" || exit_script "Create base64 failed" + if [ "$ENABLE_UPLOAD" = "1" ]; then APP_SIG=$(cat ${OUT_FILE}.sig.b64) APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') - cp -f ../releases.json ./releases.json - for DISTRONAME in ${DISTRO_LIST}; do - jq-linux64 ".Versions[\"${DISTRONAME}\"]|=(.+ [\"${APP_VER}\"]|unique)" releases.json > releases_temp.json || exit_script "Update releases.json Versions failed" - jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sig=\"${APP_SIG}\"" releases_temp.json > releases.json || exit_script "Update releases.json sig failed" - jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sha256=\"${APP_SHA256}\"" releases.json > releases_temp.json || exit_script "Update releases.json sha256 failed" - jq-linux64 ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".urls=[\"${PIXEL_LOCATION}\"]" releases_temp.json > releases.json || exit_script "Update releases.json URL failed" - done - rm -f releases_temp.json + rm -f upload_response.json 1>/dev/null 2>&1 + curl --fail -F name="${OUT_FILE}" -F anonymous=true -F file="@${OUT_FILE}" https://pixeldrain.com/api/file > upload_response.json || exit_script "Upload to Pixeldrain failed" + + PIXEL_SUCCESS=$(${JQ_EXEC} .success upload_response.json) + if [ "${PIXEL_SUCCESS}" = "false" ]; then + PIXEL_MESSAGE=$(${JQ_EXEC} .message upload_response.json) + exit_script "${PIXEL_MESSAGE}" + else + PIXEL_ID=$(${JQ_EXEC} .id upload_response.json|sed s/\"//g) + PIXEL_LOCATION=https://pixeldrain.com/api/file/${PIXEL_ID} + + upload_to_bitbucket "${OUT_FILE}" + upload_to_bitbucket "${OUT_FILE}.sha256" + upload_to_bitbucket "${OUT_FILE}.sig" + BITBUCKET_LOCATION=https://bitbucket.org/blockstorage/repertory-ui/downloads/${OUT_FILE} + + cp -f ../releases.json ./releases.json + for DISTRONAME in ${DISTRO_LIST}; do + ${JQ_EXEC} ".Versions[\"${DISTRONAME}\"]|=(.+ [\"${APP_VER}\"]|unique)" releases.json > releases_temp.json || exit_script "Update releases.json Versions failed" + ${JQ_EXEC} ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sig=\"${APP_SIG}\"" releases_temp.json > releases.json || exit_script "Update releases.json sig failed" + ${JQ_EXEC} ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".sha256=\"${APP_SHA256}\"" releases.json > releases_temp.json || exit_script "Update releases.json sha256 failed" + ${JQ_EXEC} ".Locations[\"${DISTRONAME}\"].\"${APP_VER}\".urls=[\"${PIXEL_LOCATION}\",\"${BITBUCKET_LOCATION}\"]" releases_temp.json > releases.json || exit_script "Update releases.json URL failed" + done + rm -f releases_temp.json + fi fi cd - else diff --git a/create_dist_mac.sh b/create_dist_mac.sh deleted file mode 100755 index 2801bc2..0000000 --- a/create_dist_mac.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh - -PATH=$(pwd)/bin:$PATH -export PATH - -PRIVATE_KEY=../../blockstorage_dev_private.pem -PUBLIC_KEY=./blockstorage_dev_public.pem - -APP_VER=$(grep -m1 -a version package.json|sed -e "s/\"//g" -e "s/version: //g" -e "s/,//g" -e "s/ //g") -OUT_FILE=repertory-ui_${APP_VER}_mac.dmg - -exit_script() { - echo $1 - exit 1 -} - -if npm run dist; then - cd dist - shasum -a 256 -b ${OUT_FILE} > ${OUT_FILE}.sha256 || exit_script "Create sha256 failed" - openssl dgst -sha256 -sign "${PRIVATE_KEY}" -out "${OUT_FILE}.sig" "${OUT_FILE}" || exit_script "Create signature failed" - base64 "${OUT_FILE}.sig" > "${OUT_FILE}.sig.b64" || exit_script "Create base64 failed" - - rm -f upload_response.json 1>/dev/null 2>&1 - curl -F name="${OUT_FILE}" -F anonymous=true -F file="@${OUT_FILE}" https://pixeldrain.com/api/file > upload_response.json || exit_script "Upload to Pixeldrain failed" - - PIXEL_SUCCESS=$(jq-osx-amd64 .success upload_response.json) - if [ "${PIXEL_SUCCESS}" = "false" ]; then - PIXEL_MESSAGE=$(jq-osx-amd64 .message upload_response.json) - exit_script "${PIXEL_MESSAGE}" - else - PIXEL_ID=$(jq-osx-amd64 .id upload_response.json|sed s/\"//g) - PIXEL_LOCATION=https://pixeldrain.com/api/file/${PIXEL_ID} - - APP_SIG=$(cat ${OUT_FILE}.sig.b64) - APP_SHA256=$(cat ${OUT_FILE}.sha256 | awk '{print $1;}') - - cp -f ../releases.json ./releases.json - jq-osx-amd64 ".Versions[\"darwin\"]|=(.+ [\"${APP_VER}\"]|unique)" releases.json > releases_temp.json || exit_script "Update releases.json Versions failed" - jq-osx-amd64 ".Locations[\"darwin\"].\"${APP_VER}\".sig=\"${APP_SIG}\"" releases_temp.json > releases.json || exit_script "Update releases.json sig failed" - jq-osx-amd64 ".Locations[\"darwin\"].\"${APP_VER}\".sha256=\"${APP_SHA256}\"" releases.json > releases_temp.json || exit_script "Update releases.json sha256 failed" - jq-osx-amd64 ".Locations[\"darwin\"].\"${APP_VER}\".urls=[\"${PIXEL_LOCATION}\"]" releases_temp.json > releases.json || exit_script "Update releases.json URL failed" - - rm -f releases_temp.json - fi - cd - -else - exit_script "Create dist failed" -fi diff --git a/package.json b/package.json index 57803aa..253b182 100644 --- a/package.json +++ b/package.json @@ -1,37 +1,37 @@ { "name": "repertory-ui", - "version": "1.0.3", + "version": "1.0.4", "private": true, "author": "scott.e.graves@gmail.com", "description": "GUI for Repertory - Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows.", "dependencies": { - "@fortawesome/fontawesome-svg-core": "^1.2.17", - "@fortawesome/free-solid-svg-icons": "^5.8.1", + "@fortawesome/fontawesome-svg-core": "^1.2.19", + "@fortawesome/free-solid-svg-icons": "^5.9.0", "@fortawesome/react-fontawesome": "^0.1.4", "auto-launch": "^5.0.5", - "axios": "^0.18.0", + "axios": "^0.18.1", "electron-debug": "^2.2.0", "font-awesome": "^4.7.0", - "randomstring": "^1.1.5", "node-schedule": "^1.3.2", + "randomstring": "^1.1.5", "react": "^16.8.6", "react-dom": "^16.8.6", "react-loader-spinner": "^2.3.0", - "react-redux": "^7.0.3", + "react-redux": "^7.1.0", "react-scripts": "2.1.8", "react-tooltip": "^3.10.0", "redux": "^4.0.1", "redux-starter-kit": "^0.5.1", "redux-thunk": "^2.3.0", - "unzipper": "^0.9.11", + "unzipper": "^0.9.15", "winreg": "^1.2.4" }, "devDependencies": { "cross-env": "^5.2.0", - "electron": "^4.1.4", - "electron-builder": "^20.40.2", + "electron": "^4.2.6", + "electron-builder": "^20.44.4", "extract-text-webpack-plugin": "^3.0.2", - "typescript": "^3.4.3", + "typescript": "^3.5.2", "webpack-browser-plugin": "^1.0.20" }, "scripts": { diff --git a/public/detect_linux.sh b/public/detect_linux.sh index c20dcf0..5d79d9b 100644 --- a/public/detect_linux.sh +++ b/public/detect_linux.sh @@ -59,12 +59,27 @@ elif [ -f /etc/debian_version ]; then DISTNAME=debian DISTVER=$(head -1 /etc/debian_version|awk -F. '{print $1}') if [ "$DISTVER" != "9" ]; then - resetDistVer + if [ "$DISTVER" != "10" ]; then + resetDistVer + fi fi elif [ -f /etc/os-release ]; then . /etc/os-release if [ "$ID" == "arch" ]; then DISTNAME=arch + elif [ "$ID" == "opensuse-leap" ]; then + if [ "$VERSION_ID" == "15.0" ]; then + DISTNAME=opensuse + DISTVER=15 + elif [ "$VERSION_ID" == "15.1" ]; then + DISTNAME=opensuse + DISTVER=15.1 + else + resetDistVer + fi + elif [ "$ID" == "opensuse-tumbleweed" ]; then + DISTNAME=tumbleweed + DISTVER= else resetDistVer fi diff --git a/public/electron.js b/public/electron.js index 8cde87a..f431e9c 100644 --- a/public/electron.js +++ b/public/electron.js @@ -16,7 +16,6 @@ require.extensions['.sh'] = function (module, filename) { module.exports = fs.readFileSync(filename, 'utf8'); }; const detectScript = require('./detect_linux.sh'); -const installScript = require('./update_linux.sh'); // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -30,14 +29,22 @@ let launchHidden = false; let firstMountCheck = true; let manualMountDetection = {}; +let isShutdown = false; let isQuiting = false; +let isInstalling = false; app.on('before-quit', function () { isQuiting = true; }); function closeApplication() { - app.quit(); + if (!isShutdown) { + isShutdown = true; + if (mainWindowTray) { + mainWindowTray.destroy(); + } + app.quit(); + } } function setWindowVisibility(show) { @@ -188,12 +195,10 @@ function createWindow() { mainWindow.loadURL(startUrl); } -const instanceLock = app.requestSingleInstanceLock(); -if (!instanceLock) { - closeApplication(); -} else { +let instanceLock = app.requestSingleInstanceLock(); +const configurePrimaryApp = () => { app.on('second-instance', () => { - if (mainWindow) { + if (!isInstalling && mainWindow) { setWindowVisibility(true); } }); @@ -203,6 +208,17 @@ if (!instanceLock) { app.on('window-all-closed', () => { closeApplication(); }); +}; +if (!instanceLock) { + setTimeout(() => { + if ((instanceLock = app.requestSingleInstanceLock())) { + configurePrimaryApp(); + } else { + closeApplication(); + } + }, 3000); +} else { + configurePrimaryApp(); } const clearManualMountDetection = (provider) => { @@ -747,11 +763,8 @@ ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => { args = ['-a', 'Finder', data.Source]; } else if (platform === 'linux') { try { - const execPath = path.join(os.tmpdir(), 'install_linux.sh'); - fs.writeFileSync(execPath, installScript); - fs.chmodSync(execPath, '750'); - command = execPath; - args = [data.Source]; + command = data.Source; + fs.chmodSync(command, '750'); } catch (e) { errorHandler(e); } @@ -761,6 +774,7 @@ ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => { if (command) { const executeInstall = () => { + isInstalling = true; helpers .executeAsync(command, args) .then(() => { @@ -768,6 +782,7 @@ ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => { standardIPCReply(event, Constants.IPC_Install_Upgrade_Reply) }) .catch(error => { + isInstalling = false; errorHandler(error); }); }; diff --git a/public/update_linux.sh b/public/update_linux.sh deleted file mode 100644 index dcd771d..0000000 --- a/public/update_linux.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -sleep 5 -chmod +x "$1" -"$1"& - -sleep 1 -rm -f "$0" \ No newline at end of file diff --git a/releases.json b/releases.json index 04e8231..6f1f2ed 100644 --- a/releases.json +++ b/releases.json @@ -1,156 +1,220 @@ { "Locations": { "arch": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "centos7": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "darwin": { - "1.0.3": { - "sha256": "04dee91df608f010227a54929c05129f1ecef1458b240fbe4726f604c0331074", - "sig": "Bu2iLCfVY/5gj3SHCALHY/6j7PR2KsLuD0pvUC6CU9IPh1QCxn5Yy5jh9VsXE0OGbqhySt2C2lyIu11u/BWGPaiiXebEqtsIBlEytiZ5RHRGPJaoLK8BqHRp6+bSGUVvoVF2Mc3xi3Cni/hglpF24LyBT3y9oadPZmX+BX/quB5aE4D/KU2SxBOrzhF50z3AzOg4h9gcwAFHOz+BxbDL05d/OG4fRc4480oo3byCFA5tWmNT3uXqqFnyZTj5O+DbOzM01IUAqee3LYO+/PZAjZmdyrpASxFWtb+i2X0NTmvg4UdVgTYnnYwEtsJzzkplHzUqPlvCHmnh8eqrSHCRYWIGp5mCQR0XLGHGJxlRliuJrmIHxSdQgVfhnXAYU1tXkYQHSu3qbGIWsp/QXndR/MYeywxaH84M0d30/UGyqRFdr7QN1WRF1DJb9HClytaIk010gKvE5A1isBFUZLiJANqonhRKcRTbAJrC76XSP7+8j/k3vwP5q4EMkLErQJGarLj6uuvg8WdqsO+h53Rksx8pV22R5JBg+64JB4y6PP9d/hKI1+zTc/Osk+FvX6T25OiSpEWMX3OpZn9OGZ1OQ4pneNwUC3siv3SzUAbZk/KdrKi5ImZP5uV3/Gz9A/nrUgMR0BDXyZdkmtHebcTjqzYXG5lKY5+OR2dPveOV6gF4hDwiYkZrg4i4GLwxEDSoQaeegpgpUQuM7LOJQVk4O9PLJ7dWm1ZQUudBP5cCg6Doy1SO0kRfh17XzegaoZX5oeBqgKIO+OUtmJg9NZW8+gChmIgZTpUErMRH+Wvm1D9VrZfnlxG0qUC0qgoHJPZmuUW3zB/Wi0JI5Gj2r0EjXq3I5YO7480bjhOQkDQ6O6vU4/1hjRzgCNAhOEgStuscQfInpGRHCvbMutLCcZhUJP8R4e07HojTVt1acYSUo//Ck7Ak+C4/VOh9T/p9F8lroDX4z0Qf08fB3P0JzhHH1Rgzo5IavCmQ4+8MDgRlngvPVMUQPnHfTGH12MJFJcFVq/xEiAflC9Rw/dYR2RBu06COSFcZBss8u04vskvcCJk/S0L9pXkMnP4batQASIzS3zKAlTKjW2Wmt2KWPtkDrYn6+4CIsKvqcw3QjED9naEMN+1JkAJ3q62zTVqcdxjvmhdyN3zv7aMWy55YxwbOydeeKWWZUcgTA0ktvNJZIaYjHm6PPgq2EjeSNl9/TPLCxvwV/YGTr97Tr1za93YGiZZSoTYgRrl0rRp0DIs0Fn6shsvWdqjRdQ/ttnCGGT5ekSvHts6C5IkRUsjlzzNU/AjFoweqCZGwBWE2ULxwPKpIDGQYfDthaOlksuinKxWaRKEX28cRIxQeSFEcD6VVBBs=", + "1.0.4": { + "sha256": "4c33ba2a0dae3604e10e0078bdca27abc1dad7dec5132746f47e151c9d1c9f75", + "sig": "BX3momrq4XzMZEIv+U2qllLiQ1HOzDOeosly/BqjGfsCQKBsoORXAfUDqJakTXgEE1R5BrqAIx83KY8bIDDQ7L+9IqJNZWu7H3KkBEPaC5OBtxNSOPNJ8/Xe8CJDyTnp4acAgIfXK3WTYLp5RAKzPJ4QZneJzqIbx+bTLQcE+BukkWL1nLlZifvbVjz3PC1G2ZZ2B3WKR3Z4th1oQnYS4xgMQdEpbtxjXCPMy1fd1Ipnp14p9s2GWfrQaVLQIvJcEeBkRdLlI6dwvsmRlRPy13dBdPqd6buLjBA+RCgvKygqUiFAUXRaePCmx3DY5KvPYJF75JvhhvTrjf9/AYh336Llmofl8WJM6N5KByzOL2XFOLgUG3xgThRmAi4p39ec/pO1XYbGzGUneTDKAMyv5TZk+gDIQDMqoY0ssRLxMl0eEd9lkJYIKhUXB9gltkBsuPjVmU/fKyXprEXedUTWzu3ip6/9NRIF31XQPROFUne67csIh2GjYOnElDnSfoPVAoy2U6drVgL/wnooyJzNRSxokgxoiLRt7Y13xrN3GoLZrOtM3lAH1aVD6C+aYacSrGLpTzRroRfzAm2Xehs5E0Y9UI7O77zqEAJUeLJ1SSiGCIrQeSL3abjfWwo3i6ma2fy8TpgpiMn74l9KHT3sUYgUFkISjOgeyqX6cH2PdFO3zhL5AndSGUOKf21TrGPlqNfANuNP+rZ3e4WkXE4yiD1kw+BEC5muW7CxYW4ocxDL9P947FET5RQT8t/YaL5nJNMJ/K7jq8TMeQ9WrsMZUYa5Tr8U8IxhXOHm9tsYFFF004eU0nd8duWljc+YG1PdwTxD+eAby0qPxQe1HirBXKB5ltvXFwjVXc+HiPxmzam241fupt3KlwW6FSTFrk+D2a0yK3RCw3Rihub3J2mvoPEAos/GTdC9M4IKTWz8iYUNcBE+XkI6S0o+/xVWobdQ5slGnQFMacEzoTaALQYtXFguiaIe5u2UI5PFm1EtTJqQq9qiYQB84NOMGdu6SPLPuifuGmBkAJpQadVXQ9HTFO1npTPF7jO2xqxGAc22xbV/oLKJCXViJSK1DHRYg+BFCAqxXqWrjEQaBmdrw2+fUmcQTc+DatpsDaFY6eTY+ee6FYosQdNCMmwnTju35AzFK77F338ZIePulu7cfgzdLn7TMsiX9QrRn9tAtfRnrcyehVxRpHWIxa70rKvBNuri/w9HZFG64Z3cdWOZk/kXn4RPdvUxb+RpZKtMQ6QaHhqpPbTCLLZmv7bFbexPEjJZFUbCbMDRwHrimI5zXXFc8Jr+iaHVKolbEOosdnFprD4+26R7HMCk24jFOkIovTzg6Q9NAlduScUbXXJ9HV7SOLc=", "urls": [ - "https://pixeldrain.com/api/file/pQPh4q9d" + "https://pixeldrain.com/api/file/uKrr0H5r", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_mac.dmg" ] } }, "debian9": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" + ] + } + }, + "debian10": { + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", + "urls": [ + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "fedora28": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "fedora29": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "fedora30": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" + ] + } + }, + "opensuse15": { + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", + "urls": [ + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" + ] + } + }, + "opensuse15.1": { + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", + "urls": [ + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "solus": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" + ] + } + }, + "tumbleweed": { + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", + "urls": [ + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "ubuntu18.04": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "ubuntu18.10": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "ubuntu19.04": { - "1.0.3": { - "sha256": "b62714f87e94a4d809c2079627bb0472fa8b0c47752a6a8896bc7146e0ed73a1", - "sig": "BN1670c6GAvC5SOzKNcptslE92TRHoec2CKFNuhgz/Mq/KuAXA4Pr1+dwDxgOMcp5JMA/0BPzJEc7TWtCvozYQcAiS8FQ75aYCajuu6Bm1HZowgHqSIsYn7M9M9CDNDflNGyxXQPAnKrnOa77mQXQiS8RpYWtdVHM6UwY91JXlCIas7nPHDBFClzgXfaayuFdmD6inqIK+j/GeuVITVwEWMI1rKBmtT+3uLODDRF7XNyAH2vrZs74F7bjdTU0XwvH6RWh6bYHeXG4I8H5gFItVIW8UItaUuoRHgpQJtiQOZcwZnmkqPraRItkeKWfun3PEW2XdzI4cOt39lJ9H7Fj2lFYgk7dpsG9xezFemJZisGOH9miNrtec0UBxyWsF7AsN/99mPCDi0ffwoNbZ0pJGzQqRQZChvvNShPmY26I0Uxf4Iiy3t/5sZSo6rkxuyYmsFY3eUBlfnCxBpSAEZRNVcFnB9e+iBJtMpoJ2DG9w9BCWzsPc8ZMdWdrVsu5OC5+mubsCyaZEwbS9t9Oi5/dsQBePckFSnuISXfA+2e0fxmdtrgl/QW66NGrbahXDdf9ooxN3BJWNpLkUi+PxjzcGz4lng1NjQq2ADuTFXrtZGVTDWGyHqIdaAkQTujzXT1NRN87SIOyBRopmHVO4xEx6CbsMq3Jn2yTCndZTDrJqwC3skCDW/2BRI3lozGdp7FxOR+W6SRb8puYGkQjsV9Hk9cA1UbsPGbl6hvNAReTMEcgUrp5DOVuUVaWw2w5sVlVPOmbbKBdmURjsW9r5NFN4bKJIOuY4BUakZxQADTMBOah0W1nvSXuxMtLQgNgmOIHz5CT9S1n1QYIfvFszuAjLVXrhWNMnvHdo2hg8ohuVaNtHLMYLMoTCzeNgIb0E8JghXzbmBNtCqx1F8xIKveTMEW1QWv9x/KgUqQBpVwr4PqSCD3Zds9Uwoj/M8g2SH6x8Xabc7hPq3MkTexqkVZtCqldA98s7cj2aiLDQHwF0XjwSYf549FMlicPN8chFZb2EAnBLYPCjkEtHv1PiO0nACf4qRrsX6YGJv/nAF9tglrUNnEES3RWlL0mLU4PBsjPv2NgdLTTRQTkC7nxHJv4gcm4rKfkkPu/hH1laaxYq6IQPnsMNnFnrVmDlPESvABfWIsMUOb/TgZVHVWGHb2LeEghF6T5AXKZBPuNqISPPo4xpXhVjjgLdbtzwSi6BUyBPZeTNgpWR0ogSqw5Tb+nCfFZIgUGLDRaG61kfRpWABqtUHH/P+Ja77xgpNiGZV2C1gFv21BZmiYzmYgzIAeDtYOpFI0ycvf76Mn9RF3b9B9A41eORLrwXiFj8na2IpbaPHMRib+i1IQ9cFklX1UPO8=", + "1.0.4": { + "sha256": "09b9faaba24a8c199a2b104a9be3395c2ef8c6e25a934c34b1c617529d252ae0", + "sig": "B8p6M1ks8Z48QGJPQzhqNWK4uU8LyCM381/HJUz663f0LBe9YPqDSDRZUmake0QmYK5/97K7lEwq7w3h/NBKF7YzbGbiSddJN7oqBsJ3cmHo/8YtXXVgHVaxiQdcyv0w7KTNK9FTaz2TZfGGodIWX6fb6FyV1md97pSKnRp5IAk6FhWtXh1sKP1kb62VkRG0Dh4lC5mIgPTdCZb4i0PD9bNwNQKlLqkSzNrfECydwE5QLVIp5QKY2A2U0N1kccVQPXFvlLi6vKJWHruXEt+kn9+gsJVA43lLKwcKIQrgCIKQLzaXUsruglGMxSIOZt018T06vHuqdjISXSYHPEKB1lgNS42W0B9Cy2NSS8lDO4KaWKA+n3A1H5HB4A8KPxRMVgSYhyYgnInhJtLrgEypm6mfLWyoDENsxEFRNaDgQ5EoY1gtXrdEqlPpMA3/RVzs5KWGePQuZ8UGhUmGHd5g0m+bgleRhhI8AoYcoRt3aQ/dBAFyb/co5Y0deyz6HrDtxr61IVmKagIZviVtr7xATT9+ZtkeqQ9TcYkXnIHZdqzV4C61UMPBD8XhRY6D+z5+PNXoLde+FE9WiHMQD+t+Sm4aJla/P+YrZUlrgVqPeA1CE1vfJg1GQauU5rAdoM44wYJ/GN6SEqG4LrrGY0UADvG2X76ob4mda3l9dQO8OBRMg0ZPXb+i7PSRn50wEnvqFzlyna6Z0hZ4U3euMZ9A7HY2AoKZ3wLRpn2j6bxV83m4D7tqFkVzbB/jUpUDNpVxGM/IoF4lbEyr55CdZKynBvR7XbeZeYfViU18ga99eoBsqlHOIUA9BVWU+snVg/V7QCv+uBszAlCJnFnkUe9pEJS1UlbpgNhSWLnkPkT8mY3Du/cPY2R2t6fBKjyb1VP8Gk9YrZATQLNsCRBk/VcegWRo5WtJwGAgQcMdNan8SqYfhQA6nMk7Dzlg155AE1uKioY8Wj+kWp51vd+MvhSIwQ+iOwl+LNMl2jsKjVNpiIV+UqrH9wqM5nlPwyYBzIXSBN+uY1NOCw/HtYniZ/4vjiVQGIuSGzNR9yOv/YIknr91R3Sa/twlO3/wD4WDtf+VNIz/R/9x8FuenRVcc+6kc9wF/baNAYJDV3eMci+9mBqjetl91faSmCdh1qx1+f3R82VEmnMwuJr1PPddWCfeg1mSl4sULDmRYtfD5iQbwBf2MT/8MOgSwJts2s5ZAF/kxZNdpEvXu1EcWHIxQdJUG29KJd7g/GPTC7eK9W/hzNJ4aNwEdTL0mjFQA174OiqXz2+4uDoIaEYDdQmgB3xuZv+HfoVLGFpngp/Lr057pDquweEzJ0fDGks5VZHa7XSiheRhO531tQjF0bXC/G9LlYI=", "urls": [ - "https://pixeldrain.com/api/file/wjM4z9tn" + "https://pixeldrain.com/api/file/jVeUr8Zq", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage" ] } }, "win32": { - "1.0.3": { - "sha256": "052ff80d1d59295eef105ca631daf65edc78f8f74f8948a47ab2ecfad2b30cef", - "sig": "CO2v767kd7VA+g7o+xxYg9qEWP3mVZ9Hbj/6mhK/4xDNhYMOR8XOEEIwmZ/4OsHZArSLmlAvcISrbZnlWAWzxr0DT2zy6oKAydjC2Uq4ET1eWKjEfRi/5ZVAoJqK9DBQ2llwsXG4uP2Cu7eYCwWAZUub+L1kg7JwO8/BhNBDXBh4XMzN0WhqdP1Kdvkuj0EJEpCij0bp2KYH+/Mr7HL1quYfAfFy1rGRWkJsiw940wzDq+tsdUp7NGTmVwz+E4viOpz+BcuVrYw8JrxuV9cCw4//5btKo3JaWQ9qRvP4lvmq+fhUGdYt2FXUNtO/AE3QOP9n5iUz6WLQEYBXs7+a15MKyfjLf+Klv5O0akVwAYYkRQ/C/lFaDqO3nH12v/ul71wb8jEOYdTmKCSjnMOVUAiZhqZhoBnSHChCT9k3GmFaDzW/Es6SkobQ70+zJGY04mpey+EflAdY77Etv8LxNpSFHr6wv1HjUq0aZQRoel/eWUWd+ftn7fECAUQQ8JcOdYb/thYJMcKm4lUjxEPcL58KZP5XPhWWiv76rGi4hRBeCWAndbmz9NehNp703J6F9Vcp202fYjlGBb9SG7UwODbw0rSQ/H79KoaQiY3O5JV0fU1BZdVPTV3nXFB0fA/SSGCKKTYI91g5Yp5wtYHdqYkyBdd58BBZbk45ty7axAIJJdW3CY4lQycinKFbpbLjEu49fr6Bid0Mm25jsKJFp2B8wMdVQKv/WB4Lj8OokcXeNav7Lb90hlxdrrdkN7KcNIBavGn4FOXNx2NdSeERiXXga5ZRZBwQcXW+LlCJF2+gAnHDU4GFHijEjnql8Dt4EF17EA9tOHA/W4P3omKxI5FDi7YRtIsmcAb5NyiX1k3/uCsUBVnroGCTnc72oBgVKbji9LDKJ/wMeXB2zRuyXi7jHlx/0FyKyoJIuz9BwCwbLQbMZrvA/XIKNN0F8YmSTY6PQUNA7vubjmghBwdzsd+GLGzbsULi05PSmNRP2deDqOm0o6XPtY7Ii0ouibU52YlIN3A0yrbVIura6OOeOWY3lSTnqrcIxobV5/1CQVh9kzQsm1jBUd7S63RxyA4wUVOR6yDhqEAz3RZudGao/HHUXyr6AyYezZ+QERw6tXWMpj9fuu2aRVEgOsKe87DmUb7uX0kSilPeUMYSrztmHGxn9Ha/8n9MiFvsIXZxbUfCxxU88ELc04EhVreiD6C4Si7TaGhSPOE+FQ2g4OB69E2cPDvy6ieaLLOjj+oGsSY30pYhV8r752AfOuK5VaVHGafVDhctEHLInkF4tmfeCwnp9HIj5pyWNqS16GJw1glTGVEYC5beU8XPZUWw+56rhnOlowQmLjl1NoPu8q1jOM0=", + "1.0.4": { + "sha256": "e669f54fb80ef84cba36dc031904ae76e4dcd93ef760fa432670c6ffcb597886", + "sig": "BuPXPWPoiQLbs5pznIRaAp8fnSw02EUeN1Az0J5K6YE+IRUq93GR1e7q5FktL6qLgWbvkVRx4GAz1hC1OcDuG+0dGeqQMlGwxxVmlv/q9T+Q1wMScLlfYDTPbZxTiexhiuSx8dMqWbUuXTQMJM7XHp3rPl8UFo95aa2JWApP++pL73pYVrN4ovyCgyZ/mlPT8Dpukenz5dmo3ZxBcBJbzkHbbgn0yira3gs+Qgm2VZDF4UOQuMnM8N3kBnw8KWY/X4/WZnOe5ejQ5R37kKq4K9+LUElbZSCOZSLnj/RqniO7aQ8Hc4vGIyxak9haKk80i4siwHpHOivdKAr+RBU83XeZ3J7KEfEPq884MIoCS9umYSdCcTGd+p+1OBALyfAEv79BVAR/w/GeNoQUmY0QqKlrSMODiLtw8dolU+K3VJ1+W0Xybl0ETMh83hCoi5hIVfRvIV48FF7/zR3mwmcFrkk6FFBU3yx8vx4qvZDFNItTNoeLp0xJXl4tFBrKlLj/wWP01pHuFCe/ZLgaCcACuz9pR1/r4DjE0MmG6IZ36J7RMICnD3sO0lTg8LJ6qJKIsOfIdkLlOK81HFAHcd7loN+qN9Kv3yPAWgZINL+K2XgJ6+Z+lmOIrGUy7F6jCSz9NUS2FTLZMGG00jJe2CsPJ8z+viRF5KBe4KUjrLbhaIwIMUTTW4je82jt6jfSNFjaJ5l9yMC4LkgJQiJTqGTJfH4dXM3MwA76vo6VmmXRZBTCMQbnYAP1paH/VshzNxEAON3hwbcRmKz8jJZ2mFaLEt4WGJ3Vrcn4W+2Z9jkcYWc1lC9auSGocxHszzCavkVFtjXxDhbtRI2h9g+iykU/5CvKNzhQld1ehQob+xVLpL0f5DlT8rZamIMnpYVOBHVeSz0dhsK7WQlRQi5e7VAiZD7yZIcQVTk2v6TVxZmm8felLy/WNV77ILju6leJ7r7SlRbFORfiAydKjSR+lsZDwliEn1rTqwARwo9zwrIwwUuajmoHrUD+ikDT0v92JSad+3yFHB3pU5qDshA3uH9BjFwcZMVRV1M/ETZNp5/guDvLri8IZHvCb5q5VtsHHJZtvcFngW9IKY4zTGJ3xURyapu3NbnLrvHkotgtppnjR/LaOf+yDkRNPQVObtdJG1qcFYIz/g5OaABijzQVRImkieqw9ge/aNvWmvmPVZrN5w7LfnKisZ0LBfzwIa6ApVnbahFVY/AICybthySyvr+MKtheb38WNGBVmxeAqRTeDwn8jUMjYaD/Jcfz7MWyZlDiTqsX5P3dZot/WdG/p5FwR6s5c5hHrPvU24tVgTrHc4MIY/KBZhbk9wm/QMLxvwzgEJ3iKPq1JKNvVK/vbHdr0yk=", "urls": [ - "https://pixeldrain.com/api/file/WpBrXw0Z" + "https://pixeldrain.com/api/file/PlUcsmJN", + "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_win.exe" ] } } }, "Versions": { "arch": [ - "1.0.3" + "1.0.4" ], "centos7": [ - "1.0.3" + "1.0.4" ], "darwin": [ - "1.0.3" + "1.0.4" ], "debian9": [ - "1.0.3" + "1.0.4" + ], + "debian10": [ + "1.0.4" ], "fedora28": [ - "1.0.3" + "1.0.4" ], "fedora29": [ - "1.0.3" + "1.0.4" ], "fedora30": [ - "1.0.3" + "1.0.4" ], "linux": [ "unavailable" ], + "opensuse15": [ + "1.0.4" + ], + "opensuse15.1": [ + "1.0.4" + ], "solus": [ - "1.0.3" + "1.0.4" + ], + "tumbleweed": [ + "1.0.4" ], "ubuntu18.04": [ - "1.0.3" + "1.0.4" ], "ubuntu18.10": [ - "1.0.3" + "1.0.4" ], "ubuntu19.04": [ - "1.0.3" - ], - "win32": [ - "1.0.3" + "1.0.4" ], "unknown": [ "unavailable" + ], + "win32": [ + "1.0.4" ] } } diff --git a/src/App.js b/src/App.js index a4c5dd4..3e5b75f 100644 --- a/src/App.js +++ b/src/App.js @@ -109,13 +109,16 @@ class App extends IPCContainer { handleDownloadRelease = () => { const selectedVersion = this.getSelectedVersion(); const fileName = selectedVersion + '.zip'; - this.props.downloadItem(fileName, Constants.INSTALL_TYPES.Release, this.props.LocationsLookup[selectedVersion].urls[0], this.onDownloadFileComplete); + this.props.downloadItem(fileName, Constants.INSTALL_TYPES.Release, this.props.LocationsLookup[selectedVersion].urls, this.onDownloadFileComplete); }; handleDownloadUpgrade = () => { - const url = this.props.UpgradeData.urls[0]; - const name = this.props.Platform === 'win32' ? 'upgrade.exe' : this.props.Platform === 'darwin' ? 'upgrade.dmg' : extractFileNameFromURL(url); - this.props.downloadItem(name, Constants.INSTALL_TYPES.Upgrade, url, this.onDownloadFileComplete); + const name = (this.props.Platform === 'win32') ? + 'upgrade.exe' : + (this.props.Platform === 'darwin') ? + 'upgrade.dmg' : + 'repertory-ui_' + this.props.UpgradeVersion + '_linux_x86_64.AppImage'; + this.props.downloadItem(name, Constants.INSTALL_TYPES.Upgrade, this.props.UpgradeData.urls, this.onDownloadFileComplete); }; installDependency = result => { @@ -338,6 +341,7 @@ const mapStateToProps = state => { UpgradeAvailable: state.relver.UpgradeAvailable, UpgradeData: state.relver.UpgradeData, UpgradeDismissed: state.relver.UpgradeDismissed, + UpgradeVersion: state.relver.UpgradeVersion, Version: state.common.Version, VersionLookup: state.relver.VersionLookup, }; diff --git a/src/components/DownloadProgress/DownloadProgress.js b/src/components/DownloadProgress/DownloadProgress.js index 7efed3f..e1a0d35 100644 --- a/src/components/DownloadProgress/DownloadProgress.js +++ b/src/components/DownloadProgress/DownloadProgress.js @@ -7,12 +7,14 @@ const mapStateToProps = state => { return { DownloadName: state.download.DownloadName, DownloadProgress: state.download.DownloadProgress, + Platform: state.common.Platform, }; }; export default connect(mapStateToProps)(props => { + const width = props.Platform === 'linux' ? '480px' : '380px'; return ( - +

{'Downloading ' + props.DownloadName}

diff --git a/src/constants.js b/src/constants.js index 81c972c..dc6a373 100644 --- a/src/constants.js +++ b/src/constants.js @@ -34,11 +34,15 @@ exports.DATA_LOCATIONS = { arch: '~/.local/repertory/ui', centos7: '~/.local/repertory/ui', debian9: '~/.local/repertory/ui', + debian10: '~/.local/repertory/ui', fedora28: '~/.local/repertory/ui', fedora29: '~/.local/repertory/ui', fedora30: '~/.local/repertory/ui', linux: '~/.local/repertory/ui', + opensuse15: '~/.local/repertory/ui', + 'opensuse15.1': '~/.local/repertory/ui', solus: '~/.local/repertory/ui', + tumbleweed: '~/.local/repertory/ui', 'ubuntu18.04': '~/.local/repertory/ui', 'ubuntu18.10': '~/.local/repertory/ui', 'ubuntu19.04': '~/.local/repertory/ui', diff --git a/src/redux/actions/download_actions.js b/src/redux/actions/download_actions.js index 204b1d8..2649740 100644 --- a/src/redux/actions/download_actions.js +++ b/src/redux/actions/download_actions.js @@ -19,33 +19,44 @@ export const setDownloadBegin = (name, type, url) => { export const setDownloadEnd = createAction('download/setDownloadEnd'); export const setDownloadProgress = createAction('download/setDownloadProgress'); -export const downloadItem = (name, type, url, completedCallback) => { +export const downloadItem = (name, type, urls, completedCallback) => { return (dispatch, getState) => { - const state = getState(); - if (!state.download.DownloadActive && state.download.AllowDownload) { - const ipcRenderer = getIPCRenderer(); - if (ipcRenderer) { - dispatch(setDownloadBegin(name, type, url)); - - const downloadFileProgress = (_, arg) => { - dispatch(setDownloadProgress(arg.data.Progress)); - }; - - const downloadFileComplete = (_, arg) => { - ipcRenderer.removeListener(Constants.IPC_Download_File_Progress, downloadFileProgress); - ipcRenderer.removeListener(Constants.IPC_Download_File_Complete, downloadFileComplete); - completedCallback(name, type, url, arg.data); - dispatch(setDownloadEnd(arg.data)); - }; - - ipcRenderer.on(Constants.IPC_Download_File_Progress, downloadFileProgress); - ipcRenderer.on(Constants.IPC_Download_File_Complete, downloadFileComplete); - - ipcRenderer.send(Constants.IPC_Download_File, { - Filename: name, - URL: url, - }); - } + if (!Array.isArray(urls)) { + urls = [urls]; } + + const downloadAtIndex = index => { + const url = urls[index]; + const state = getState(); + if ((index > 0) || (!state.download.DownloadActive && state.download.AllowDownload)) { + const ipcRenderer = getIPCRenderer(); + if (ipcRenderer) { + dispatch(setDownloadBegin(name, type, url)); + + const downloadFileProgress = (_, arg) => { + dispatch(setDownloadProgress(arg.data.Progress)); + }; + + const downloadFileComplete = (_, arg) => { + ipcRenderer.removeListener(Constants.IPC_Download_File_Progress, downloadFileProgress); + if (!arg.data.Success && (++index < urls.length)) { + downloadAtIndex(index); + } else { + completedCallback(name, type, url, arg.data); + dispatch(setDownloadEnd(arg.data)); + } + }; + + ipcRenderer.on(Constants.IPC_Download_File_Progress, downloadFileProgress); + ipcRenderer.once(Constants.IPC_Download_File_Complete, downloadFileComplete); + + ipcRenderer.send(Constants.IPC_Download_File, { + Filename: name, + URL: url, + }); + } + } + }; + downloadAtIndex(0); }; }; \ No newline at end of file diff --git a/src/redux/actions/install_actions.js b/src/redux/actions/install_actions.js index 16c8384..ed3d53a 100644 --- a/src/redux/actions/install_actions.js +++ b/src/redux/actions/install_actions.js @@ -18,7 +18,6 @@ const ipcRenderer = getIPCRenderer(); export const checkInstalled = (dependencies, version) => { return (dispatch, getState) => { const checkInstalledComplete = (event, arg) => { - ipcRenderer.removeListener(Constants.IPC_Check_Installed_Reply, checkInstalledComplete); const result = arg.data; const updateState = () => { const installedVersion = result.Success && result.Exists ? result.Version : 'none'; @@ -48,7 +47,7 @@ export const checkInstalled = (dependencies, version) => { } }; - ipcRenderer.on(Constants.IPC_Check_Installed_Reply, checkInstalledComplete); + ipcRenderer.once(Constants.IPC_Check_Installed_Reply, checkInstalledComplete); ipcRenderer.send(Constants.IPC_Check_Installed, { Dependencies: dependencies, Version: version, @@ -62,8 +61,6 @@ export const installDependency = (source, url, completedCallback) => { dispatch(setInstallActive(Constants.INSTALL_TYPES.Dependency)); const installDependencyComplete = (event, arg) => { - ipcRenderer.removeListener(Constants.IPC_Install_Dependency_Reply, installDependencyComplete); - const result = arg.data; const handleCompleted = ()=> { ipcRenderer.send(Constants.IPC_Delete_File, { @@ -94,7 +91,7 @@ export const installDependency = (source, url, completedCallback) => { } }; - ipcRenderer.on(Constants.IPC_Install_Dependency_Reply, installDependencyComplete); + ipcRenderer.once(Constants.IPC_Install_Dependency_Reply, installDependencyComplete); ipcRenderer.send(Constants.IPC_Install_Dependency, { Source: source, URL: url, @@ -109,7 +106,6 @@ export const installRelease = (source, version, completedCallback) => { dispatch(setInstallActive(Constants.INSTALL_TYPES.Release)); const extractReleaseComplete = (event, arg) => { - ipcRenderer.removeListener(Constants.IPC_Extract_Release_Complete, extractReleaseComplete); ipcRenderer.send(Constants.IPC_Delete_File, { FilePath: source, }); @@ -118,7 +114,7 @@ export const installRelease = (source, version, completedCallback) => { completedCallback(source, version, arg.data); }; - ipcRenderer.on(Constants.IPC_Extract_Release_Complete, extractReleaseComplete); + ipcRenderer.once(Constants.IPC_Extract_Release_Complete, extractReleaseComplete); ipcRenderer.send(Constants.IPC_Extract_Release, { Source: source, Version: version, @@ -134,7 +130,6 @@ export const installUpgrade = (source, sha256, signature, skipVerification, comp dispatch(setApplicationReady(false)); const installUpgradeComplete = (event, arg) => { - ipcRenderer.removeListener(Constants.IPC_Install_Upgrade_Reply, installUpgradeComplete); if (arg.data.Success) { dispatch(shutdownApplication()); } else { @@ -144,7 +139,7 @@ export const installUpgrade = (source, sha256, signature, skipVerification, comp } }; - ipcRenderer.on(Constants.IPC_Install_Upgrade_Reply, installUpgradeComplete); + ipcRenderer.once(Constants.IPC_Install_Upgrade_Reply, installUpgradeComplete); ipcRenderer.send(Constants.IPC_Install_Upgrade, { Sha256: sha256, Signature: signature, diff --git a/src/redux/actions/release_version_actions.js b/src/redux/actions/release_version_actions.js index 3856cec..0a131de 100644 --- a/src/redux/actions/release_version_actions.js +++ b/src/redux/actions/release_version_actions.js @@ -26,7 +26,7 @@ export const detectUIUpgrade = () => { data.Versions[appPlatform] && (data.Versions[appPlatform].length > 0) && (data.Versions[appPlatform][0] !== version)) { - dispatch(setUIUpgradeData(data.Locations[appPlatform][data.Versions[appPlatform][0]])); + dispatch(setUIUpgradeData(data.Locations[appPlatform][data.Versions[appPlatform][0]], data.Versions[appPlatform][0])); } else { dispatch(clearUIUpgrade()); } @@ -115,4 +115,14 @@ export const setReleaseData = (locationsLookup, versionLookup)=> { }; export const setReleaseUpgradeAvailable = createAction('relver/setReleaseUpgradeAvailable'); -export const setUIUpgradeData = createAction('relver/setUIUpgradeData'); \ No newline at end of file + +export const SET_UI_UPGRADE_DATA = 'relver/setUIUpgradeData'; +export const setUIUpgradeData = (upgradeData, version) => { + return { + type: SET_UI_UPGRADE_DATA, + payload: { + upgrade_data: upgradeData, + version: version, + } + } +}; \ No newline at end of file diff --git a/src/redux/reducers/release_version_reducer.js b/src/redux/reducers/release_version_reducer.js index 1a681be..a41d231 100644 --- a/src/redux/reducers/release_version_reducer.js +++ b/src/redux/reducers/release_version_reducer.js @@ -16,10 +16,11 @@ const versionLookup = Constants.RELEASE_TYPES.map(k=> { export const releaseVersionReducer = createReducer({ InstalledVersion: 'none', LocationsLookup: {}, - Release: 2, + Release: 1, ReleaseUpgradeAvailable: false, UpgradeAvailable: false, UpgradeData: null, + UpgradeVersion: null, UpgradeDismissed: false, Version: -1, VersionLookup: versionLookup, @@ -30,6 +31,7 @@ export const releaseVersionReducer = createReducer({ UpgradeAvailable: false, UpgradeDismissed: false, UpgradeData: null, + UpgradeVersion: null, }; }, [Actions.SET_ACTIVE_RELEASE]: (state, action) => { @@ -64,11 +66,12 @@ export const releaseVersionReducer = createReducer({ ReleaseUpgradeAvailable: action.payload, }; }, - [Actions.setUIUpgradeData]: (state, action) => { + [Actions.SET_UI_UPGRADE_DATA]: (state, action) => { return { ...state, UpgradeAvailable: true, - UpgradeData: action.payload, + UpgradeData: action.payload.upgrade_data, + UpgradeVersion: action.payload.version, UpgradeDismissed: false, }; }