Merged 1.0.5_branch into master
This commit is contained in:
@@ -1,4 +1,11 @@
|
||||
# Changelog #
|
||||
## 1.0.5 ##
|
||||
* \#29: Mounts aren't being detected properly when switching releases
|
||||
* Display window when dependencies are missing
|
||||
* Display window when UI upgrade is available
|
||||
* Display window and unmount all drives if release is no longer available
|
||||
* Will primarily affect pre-release versions (Alpha, Beta, and RC)
|
||||
|
||||
## 1.0.4 ##
|
||||
* \#27: Implement Bitbucket backup download location
|
||||
* \#28: Fix Linux upgrade
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Repertory UI MIT License #
|
||||
### Copyright <2018-2019> <scott.e.graves@gmail.com> ###
|
||||
### Copyright <2018-2019> <scott.e.graves@protonmail.com> ###
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Repertory UI #
|
||||

|
||||

|
||||
|
||||
## 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.4 Linux 64-bit** [<Primary\>](https://pixeldrain.com/u/jVeUr8Zq) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage)
|
||||
* **Repertory UI v1.0.5 Linux 64-bit** [<Primary\>](https://pixeldrain.com/u/ZqKqdZq7) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage)
|
||||
* NOTE: Linux distributions require `fuse` and `libfuse` to be installed.
|
||||
* **Repertory UI v1.0.4 OS X 64-bit** [<Primary\>](https://pixeldrain.com/u/uKrr0H5r) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_mac.dmg)
|
||||
* **Repertory UI v1.0.4 Windows 64-bit** [<Primary\>](https://pixeldrain.com/u/PlUcsmJN) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_win.exe)
|
||||
* **Repertory UI v1.0.5 OS X 64-bit** [<Primary\>](https://pixeldrain.com/u/h5vrCdcf) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_mac.dmg)
|
||||
* **Repertory UI v1.0.5 Windows 64-bit** [<Primary\>](https://pixeldrain.com/u/q0yXuEPl) [<Alternate\>](https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_win.exe)
|
||||
|
||||
## Supported Platforms ##
|
||||
* OS X 64-bit
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "repertory-ui",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.5",
|
||||
"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.",
|
||||
|
||||
@@ -71,6 +71,23 @@ function setWindowVisibility(show) {
|
||||
}
|
||||
}
|
||||
|
||||
const unmountAllDrives = () => {
|
||||
// Reset mount states
|
||||
for (const provider of Constants.PROVIDER_LIST) {
|
||||
clearManualMountDetection(provider);
|
||||
expectedUnmount[provider] = true;
|
||||
}
|
||||
|
||||
// Unmount all items
|
||||
for (const i in mountedLocations) {
|
||||
const data = mountedData[mountedLocations[i]];
|
||||
helpers.stopMountProcessSync(data.Version, data.Provider);
|
||||
}
|
||||
|
||||
mountedLocations = [];
|
||||
mountedData = {};
|
||||
};
|
||||
|
||||
function createWindow() {
|
||||
loadUiSettings();
|
||||
|
||||
@@ -123,14 +140,7 @@ function createWindow() {
|
||||
// when you should delete the corresponding element.
|
||||
mainWindow = null;
|
||||
|
||||
// Unmount all items
|
||||
for (const i in mountedLocations) {
|
||||
const data = mountedData[mountedLocations[i]];
|
||||
helpers.stopMountProcessSync(data.Version, data.Provider);
|
||||
}
|
||||
|
||||
mountedLocations = [];
|
||||
mountedData = {};
|
||||
unmountAllDrives();
|
||||
});
|
||||
|
||||
const appPath = (os.platform() === 'win32') ? path.resolve(path.join(app.getAppPath(), '..\\..\\repertory-ui.exe')) :
|
||||
@@ -717,6 +727,8 @@ ipcMain.on(Constants.IPC_Install_Dependency, (event, data) => {
|
||||
ipcMain.on(Constants.IPC_Install_Upgrade, (event, data) => {
|
||||
let allowSkipVerification = true;
|
||||
|
||||
unmountAllDrives();
|
||||
|
||||
let tempSig;
|
||||
let tempPub;
|
||||
const cleanupFiles = () => {
|
||||
@@ -892,16 +904,21 @@ ipcMain.on(Constants.IPC_Show_Window + '_sync', event => {
|
||||
event.returnValue = true;
|
||||
});
|
||||
|
||||
ipcMain.on(Constants.IPC_Unmount_All_Drives, (event, data) => {
|
||||
unmountAllDrives();
|
||||
standardIPCReply(event, Constants.IPC_Unmount_All_Drives_Reply);
|
||||
});
|
||||
|
||||
ipcMain.on(Constants.IPC_Unmount_Drive, (event, data) => {
|
||||
clearManualMountDetection(data.Provider);
|
||||
|
||||
expectedUnmount[data.Provider] = true;
|
||||
helpers
|
||||
.stopMountProcess(data.Version, data.Provider)
|
||||
.then((result)=> {
|
||||
.then(result => {
|
||||
console.log(result);
|
||||
})
|
||||
.catch((e) => {
|
||||
.catch(e => {
|
||||
console.log(e);
|
||||
});
|
||||
});
|
||||
|
||||
192
releases.json
192
releases.json
@@ -1,220 +1,220 @@
|
||||
{
|
||||
"Locations": {
|
||||
"arch": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"centos7": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "c76e1c9113a0b4ad3d8dabf18ab2330539847747c841dc1b67646f2a40092ef4",
|
||||
"sig": "BAhgbIIWdyNLrkw5rFOKFKW107Hnz4BFfKuheW+upT41nZvxf2IH4+NFgX6OHR19Wvat+UxWkVKZGOuqv+1Ffrc8Mc8ZV1zfg3kVfDH8LOkKR8jUGJOX0Z3AnCOZOrmphrCwHWyY7OMETLkQ5x9QLF80QXuhgmx6sUHPUxPNNV3D5xH0Tfz4qMN65nAWLyQTQj+wBJCzEHL2NPhInCmkohZZPdeXtupyy1TvDEQ6Y45ujqFdJm+2Glzz27Cy8j6WZcrvZZJ5z4ZC7Ks1dCDMZP0ry0smL5uLPC5R/Lc+y3dG8ZpEwfXE8fcqdINfD17eM8gYDY8ayi76192xki0dJJ6RBHgcxwZJ5sv4KpxGzRXXhiyB0j3F2HS/4w1hg8DZOfEK4lx5v3z0LG7tKFdLoDKtRcfbqAfAqH4NQw1hu1On3ZjOtyt8TXseueMMyUkokLtEbdRuN4mN/kGKGr/MGR44PC5O45woxf1iqhCBplzgi+HMb/povEKijqbYStx1/OYnQ5uCQvmEi72RqyYTh7xqu4LCl8W/GV987mTVUC946SrvfzVVKlwTmwouUudk7bW8lT5RCSYoUNGejKpdh+Od2flABaBgJHXLOsVNeT3H8x+QJmWT2tFvXILb/EJdKmqjpDPty0EhKA4pmkd72gliQnqt8y5dZ9UNPufTvBdROKmXtaMQAKQ8Z87CSylEKz2K4PAD0VPpMlZjDEGOedNDBCtGpXEFjldyk0KIjWU3HzhJAWtX6JRnwblo38aYs1o98lopYQid494fUSJcM+OIkOirhq1wp2oEP8AkgHxJKzV/fBzMVubL9tmLFxQVyG2jQ/M/cl4MBFO7PgADq541lwOJRkjBn/+iUe1dzZtxl9hI1NBxdjb6Hjb/919dNPx0bMn3UbOpji2vZpnbX+Gz4yfEb/Yn7f4DPRkkIVLTY1vliBYya5Nex3upk16jUVYfZnzKMDPK2cNN6UNExVJtbhcjC75YZH/UtccgtVyZNYQvkDtSGR8EbafL4q46MKT8leTEiD0rj8w2nZ+GozwIh5/LYB3mgegI0uJZGZU3R8vY0LvRH+63zTCqBzFg4F1odm0Q2WgW2ATP614qK9nK870kBrQypKQ/NpkxEke6QNQes8pUZYfz4NpQTNg3K7o9kuaPbM0AR521BZpII0hlRTpBO1kXvI3+lHGBAZRomWa9L8NOYK34XPOYtsu1ziC3T2J8JQ8jfe9STdlzT2eMhxndxLhfud7PaMuRyz7zegPyTl9sDmN8T1Z6oomw4D9gRnxh2+WhOmxkpipJBHzyAWYsKeYvHPeHg0LHaOi8zZZFRZpaPPZFYWzzSTmLu8eX4ZMt+EARpTrhy27TKIY=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/uKrr0H5r",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_mac.dmg"
|
||||
"https://pixeldrain.com/api/file/h5vrCdcf",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_mac.dmg"
|
||||
]
|
||||
}
|
||||
},
|
||||
"debian9": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fedora28": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fedora29": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"fedora30": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"solus": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ubuntu18.04": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ubuntu18.10": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"ubuntu19.04": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "a4f43919c08ed5636a36032f59a4406084177279f0dcca10a71b3f6a67bfc0d2",
|
||||
"sig": "CPGGGcJB7W7kLI5TYeidvrzh/rD9W9LE1vZ0Hu4cKTuVLcoMFCHyPE3IOwIw0kDRb+kuiyUjoWiD4QC4sAn1QFCb0f944BVjCGgcOTvx6Qk/H9hD5MSlsI0DOWLDmf5VN6tP+Tm/zGu3bw1JAxPtKjVG/L5CLoxi/LsFTSnr2yjrKsw/MvxCVhjicjeHk+e0zIrW8EZSDLlM+awd+81Z0YfVOom4jxGNlWq/RB7Fjl2x9p5RqaphRSijE+BAQhXnFOrxGYCURzJH0BTh7c/rkj+CZm1pyMtzfVivw7WcEvux3tpA+g2BpokCRRrvY+ZuurShUUguI7qCXJt01Rpblotp1NqOxOsYyZhkFDgx+Y33/JVHS93GxuXxFLtPd9M0PsKL/5CZoYl0oRZMjRt06ultBeOhrmPSljsIuUKBZIvzpOkCvh4kSAEzIblZLAD7dmhAcfuW6MMAjsXH52GJECOyd8OB46SFRWR0iJe+X9piC1Wwx0zSW0UzcSJGj7pBYQ9/w2PYP3EZQajzRsW/YrQoFJ3zWnhRVLkailzSGmLOtyO20JjvFekc1mT8YoIAtHv1Gr2aKYsK/LONNQJ6HGPy4IM8JiAyU9rXIcDij+QevDju4E791RdocT+FV/m66qBLfRGe4trg5E4VBj7onVyoqjpHl6WTLmeN6Nd4czS54vOYUD4ifLKolT4DsB7VzkhzeBlcke23wVPPw2qdUpKMQg24CFOlCZB61pxUHR5r4gS475qnWr7fLWWjkFJTw2UtEvxNg6xnslr89WWucQ75Io3vKo83lJnwthQEpczZryfhDKnJyupJ1xqWHo7b1QU/lq3ZLMqPWjYUlYDEvq6EVUkmEI7DtixuMSpgwD46lQZgzV4XtsRPoG+BdFgdNyRZgIuQ0S9TwATn5WDtt2iyamZGNGMEGWPogG20T76jRpFJqjB8lzasUNyRavfcLyPqOAdeH2OhXTYGKxV3rfLS3DF/f7sXF8/Aud6kjIyM8zcmVqohhfZYwT5mv0PXF2UsIpli9GtSjPVOSI3hJ5M5RCb3mCBIi4/3ba/D+8u3+g1obM87WVlnrIAH32yjPMQ99pJjX9M3LMIYM6/OYadXI6yXMMU0gn7rquQfqmpflzukRVqoRVwA2eonUjNmGWFqTHTwM8himhOhJwcBeyHYZGyl63N73a4gFox/sKuaM2bvcQPoelo7M3AkjjMnbfoQhFFQ4rdIVDFkfCU+sJaXDUBW2iTy7nJ8HuJCICji1ND4sjDVe8FhYVobZ+DYfby0xRmSswToMPy+gwmqwGF8oDjK88utcHa6vDMdA8IWT4Xuja8hgGOgxDU3gXRL45KFSFtWRJQDynGaWs6jFVQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/jVeUr8Zq",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_linux_x86_64.AppImage"
|
||||
"https://pixeldrain.com/api/file/ZqKqdZq7",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_linux_x86_64.AppImage"
|
||||
]
|
||||
}
|
||||
},
|
||||
"win32": {
|
||||
"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=",
|
||||
"1.0.5": {
|
||||
"sha256": "284bfd6d8251309b53b1e4cc4abee53b489a31f84b2d98b96049e6b454e8a18f",
|
||||
"sig": "AtlwQ5lQamHyvPdg5ZTUVr8YKrLq+vz5GpCm68FXjg2g0c90cVwPWEUKaWepawYq3T8weTFCPwyxenJhuqwouE+Y28W8H/keRwH5al2uRXpDhP+B2o1B72HLJDEah5dLuVKBOjaMWuJ0vymwp5DGUBuQqQGJzdp4BVzH2Gy5GGAdR4RHhfuKNRfzjeLTm5VL7iKpJFBJ4tbttKt46R8xTfzocBqwI+k30wmQOkEDhbhste910c1TgZA3UwOuZbxa24BlmD7ovGhJbmYFpqYnHtxaGLgW4MCdsp8nFHGulDANTQWaeCwIMyFY/1v0qWXXE/lTt6y1q2flAnv+1Og2595SDOj86AzDR2I4KMV0HgW9DwNJAqac8DIsLxDomyLZ1CZsTNuc18/FPNY3kektEtdkJQ30d+dls4ZTAOM0CmGm6zS03b7/YK74FkJ0+VETFQ6KW5y9NJi8NsVMvDx8mva5SzJcVM1kH2lDaVXAQbZMInAqn5pHGRYbroxFvzirQetiy/i1qC5VTxzK8jvMrp9cN3PeJ+xyv/W3txadfLf8tBZBJ3lYlmmhF7JNq7I6+UHUY5HzvRmCaf09vAfqZZ+JLmCOLQZMBur5Zy0JX4yNlUerBvCzIjE4veS35zR4A9Cu6YNtXWKs6PdBRLQ2Vf3P73y1ItItqSdtvZeWeb7OVss0RqI9HGeYTFFkb71V+Hjqx4Ou5xOSBVKhDTxS6YW0j7k0gh85vibMNq0dOS4tWm6sYgA/CJ3aB6cZisYv+ka/mcB9pYIZMjKeDWY7KWYUQsmWynz4hcCwzAkYG5XxV7QK5Bhwrtk6yKgBLmX1s4tAOZkwma1VV1iZ/qptaC0oqiCQASCvyLkZ3AgU+oz+RHWX2RTd1/MWB6/qkLFjdVy4GwM8w8eUY5r6SYOblvSPAJ5UukdQ9fJqd+4+xdPfOcPNMeHPt4tlvp5RneGgpyqyPAq3vyzmn0me0bpa36Lz80cqRwyws4405onmimYOuB+RD8CvfTJSog86N661hYmCLuKIqALA6b63t5/cRQ4M/11dXBuJAk/tsRVaz0135tq801jK2+nzkHpyMSqC9HOmAQnbdBW44s0YhwjkvRSheRmajqOLsiQUqnmOoCF2CDBqHf1jXi1tS7Ujj7/c5EqoCjP2r59nXktZhT8R/jr2lkmf2oNAYX7+p7khRC0P1etcP1h6Q0ysNrwH1w/d/+3MZ8WnKSPQRF4FyHa/YyDEx0EMn3hkT4F90ALGNBmGns5upYEvTqGu4TSgU9IsidPImimHWMjNwfZKiNjPDI0iLHDWTAmiye5C1QpCe4Mdtr58At+2yKvIzg1CxmNxPyNVRG+V202r9UA/8W1amoQ=",
|
||||
"urls": [
|
||||
"https://pixeldrain.com/api/file/PlUcsmJN",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.4_win.exe"
|
||||
"https://pixeldrain.com/api/file/q0yXuEPl",
|
||||
"https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.5_win.exe"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"Versions": {
|
||||
"arch": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"centos7": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"darwin": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"debian9": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"debian10": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"fedora28": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"fedora29": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"fedora30": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"linux": [
|
||||
"unavailable"
|
||||
],
|
||||
"opensuse15": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"opensuse15.1": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"solus": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"tumbleweed": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"ubuntu18.04": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"ubuntu18.10": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"ubuntu19.04": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
],
|
||||
"unknown": [
|
||||
"unavailable"
|
||||
],
|
||||
"win32": [
|
||||
"1.0.4"
|
||||
"1.0.5"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
198
src/App.js
198
src/App.js
@@ -5,81 +5,51 @@ import Configuration from './containers/Configuration/Configuration';
|
||||
import {connect} from 'react-redux';
|
||||
import DependencyList from './components/DependencyList/DependencyList';
|
||||
import DownloadProgress from './components/DownloadProgress/DownloadProgress';
|
||||
import {extractFileNameFromURL} from './utils';
|
||||
import ErrorDetails from './components/ErrorDetails/ErrorDetails';
|
||||
import Grid from './components/UI/Grid/Grid';
|
||||
import IPCContainer from './containers/IPCContainer/IPCContainer';
|
||||
import Loading from './components/UI/Loading/Loading';
|
||||
import Modal from './components/UI/Modal/Modal';
|
||||
import MountItems from './containers/MountItems/MountItems';
|
||||
import {notifyError} from './redux/actions/error_actions';
|
||||
import ReleaseVersionDisplay from './components/ReleaseVersionDisplay/ReleaseVersionDisplay';
|
||||
import {setProviderState} from './redux/actions/mount_actions';
|
||||
import Text from './components/UI/Text/Text';
|
||||
import UpgradeIcon from './components/UpgradeIcon/UpgradeIcon';
|
||||
import UpgradeUI from './components/UpgradeUI/UpgradeUI';
|
||||
import {checkVersionInstalled} from './redux/actions/install_actions';
|
||||
import {
|
||||
downloadItem,
|
||||
setAllowDownload
|
||||
} from './redux/actions/download_actions';
|
||||
import {
|
||||
checkInstalled,
|
||||
installDependency,
|
||||
installRelease,
|
||||
installUpgrade
|
||||
} from './redux/actions/install_actions';
|
||||
import {
|
||||
detectUIUpgrade,
|
||||
loadReleases,
|
||||
setActiveRelease,
|
||||
setDismissUIUpgrade,
|
||||
setInstalledVersion,
|
||||
setReleaseUpgradeAvailable
|
||||
setDismissUIUpgrade
|
||||
} from './redux/actions/release_version_actions';
|
||||
import {saveState} from './redux/actions/common_actions';
|
||||
|
||||
const Constants = require('./constants');
|
||||
const Scheduler = require('node-schedule');
|
||||
|
||||
class App extends IPCContainer {
|
||||
checkVersionInstalled = () => {
|
||||
this.props.setAllowDownload(false);
|
||||
const selectedVersion = this.getSelectedVersion();
|
||||
if (selectedVersion !== 'unavailable') {
|
||||
let dependencies = [];
|
||||
if (this.props.LocationsLookup[selectedVersion] && this.props.LocationsLookup[selectedVersion].dependencies) {
|
||||
dependencies = this.props.LocationsLookup[selectedVersion].dependencies;
|
||||
}
|
||||
|
||||
this.props.checkInstalled(dependencies, selectedVersion);
|
||||
} else {
|
||||
this.props.setInstalledVersion('none');
|
||||
this.props.setAllowDownload(true);
|
||||
componentDidMount() {
|
||||
const detectUpgrades = () => {
|
||||
if (this.props.AppPlatform !== 'unknown') {
|
||||
this.props.loadReleases();
|
||||
}
|
||||
};
|
||||
|
||||
_isMounted = false;
|
||||
|
||||
componentDidMount() {
|
||||
this._isMounted = true;
|
||||
this.scheduledUpdateJob = Scheduler.scheduleJob('23 11 * * *', this.updateCheckScheduledJob);
|
||||
this.detectUpgrades();
|
||||
this.scheduledUpdateJob = Scheduler.scheduleJob('23 11 * * *', detectUpgrades);
|
||||
detectUpgrades();
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
if ((prevProps.Release !== this.props.Release) ||
|
||||
(prevProps.ReleaseVersion !== this.props.ReleaseVersion) ||
|
||||
(prevProps.VersionLookup !== this.props.VersionLookup)) {
|
||||
this.saveState();
|
||||
this.checkVersionInstalled();
|
||||
this.props.saveState();
|
||||
this.props.checkVersionInstalled();
|
||||
} else if (Object.keys(this.props.ProviderState).filter(k=> {
|
||||
return this.props.ProviderState[k] !== prevProps.ProviderState[k];
|
||||
}).length > 0) {
|
||||
this.saveState();
|
||||
this.props.saveState();
|
||||
}
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this._isMounted = false;
|
||||
Scheduler.cancelJob(this.scheduledUpdateJob);
|
||||
super.componentWillUnmount();
|
||||
}
|
||||
@@ -89,129 +59,12 @@ class App extends IPCContainer {
|
||||
return condition ? (<Modal {...modalProps}>{jsx}</Modal>) : null;
|
||||
};
|
||||
|
||||
detectUpgrades = () => {
|
||||
if (this.props.AppPlatform !== 'unknown') {
|
||||
this.props.loadReleases();
|
||||
this.props.detectUIUpgrade();
|
||||
}
|
||||
};
|
||||
|
||||
getSelectedVersion = () => {
|
||||
return (this.props.ReleaseVersion === -1) ?
|
||||
'unavailable' :
|
||||
this.props.VersionLookup[Constants.RELEASE_TYPES[this.props.Release]][this.props.ReleaseVersion];
|
||||
};
|
||||
|
||||
handleDownloadDependency = url => {
|
||||
this.props.downloadItem(extractFileNameFromURL(url), Constants.INSTALL_TYPES.Dependency, url, this.onDownloadFileComplete);
|
||||
};
|
||||
|
||||
handleDownloadRelease = () => {
|
||||
const selectedVersion = this.getSelectedVersion();
|
||||
const fileName = selectedVersion + '.zip';
|
||||
this.props.downloadItem(fileName, Constants.INSTALL_TYPES.Release, this.props.LocationsLookup[selectedVersion].urls, this.onDownloadFileComplete);
|
||||
};
|
||||
|
||||
handleDownloadUpgrade = () => {
|
||||
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 => {
|
||||
if (result.Success) {
|
||||
this.props.installDependency(result.Destination, result.URL, this.onInstallDependencyComplete);
|
||||
}
|
||||
};
|
||||
|
||||
installRelease = result => {
|
||||
if (result.Success) {
|
||||
const selectedVersion = this.getSelectedVersion();
|
||||
this.props.installRelease(result.Destination, selectedVersion, () => {
|
||||
if (this._isMounted) {
|
||||
this.checkVersionInstalled();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
installUpgrade = result => {
|
||||
if (result.Success) {
|
||||
//const info = this.props.LocationsLookup[this.props.AppPlatform][this.props.VersionLookup[this.props.AppPlatform][0]];
|
||||
const sha256 = null;//info.sha256;
|
||||
const signature = null;//info.sig;
|
||||
this.props.installUpgrade(result.Destination, sha256, signature, !!result.SkipVerification, this.onInstallUpgradeComplete);
|
||||
}
|
||||
};
|
||||
|
||||
onDownloadFileComplete = (name, type, url, result) => {
|
||||
if (this._isMounted) {
|
||||
switch (type) {
|
||||
case Constants.INSTALL_TYPES.Dependency:
|
||||
this.installDependency(result);
|
||||
break;
|
||||
case Constants.INSTALL_TYPES.Release:
|
||||
this.installRelease(result);
|
||||
break;
|
||||
case Constants.INSTALL_TYPES.Upgrade:
|
||||
this.installUpgrade(result);
|
||||
break;
|
||||
default:
|
||||
this.props.notifyError('Unknown download type: ' + type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
onInstallDependencyComplete = () => {
|
||||
if (this._isMounted) {
|
||||
this.checkVersionInstalled();
|
||||
}
|
||||
};
|
||||
|
||||
onInstallUpgradeComplete = (source, result) => {
|
||||
if (this._isMounted && !result.Success) {
|
||||
this.props.notifyError(result.Error, false,() => {
|
||||
if (this._isMounted) {
|
||||
// TODO Prompt to verify
|
||||
if (result.AllowSkipVerification) {
|
||||
this.installUpgrade({
|
||||
SkipVerification: true,
|
||||
Source: source,
|
||||
Success: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
};
|
||||
|
||||
saveState = () => {
|
||||
if (this.props.AppReady) {
|
||||
let state = {
|
||||
Release: this.props.Release,
|
||||
Version: this.props.ReleaseVersion,
|
||||
};
|
||||
|
||||
for (const provider of Constants.PROVIDER_LIST) {
|
||||
state[provider] = this.props.ProviderState[provider];
|
||||
}
|
||||
|
||||
this.sendRequest(Constants.IPC_Save_State, {
|
||||
State: state
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
updateCheckScheduledJob = () => {
|
||||
if (this.props.AppPlatform !== 'unknown') {
|
||||
this.detectUpgrades();
|
||||
}
|
||||
};
|
||||
|
||||
render() {
|
||||
const selectedVersion = this.getSelectedVersion();
|
||||
|
||||
@@ -251,10 +104,10 @@ class App extends IPCContainer {
|
||||
!this.props.DownloadActive;
|
||||
|
||||
const configDisplay = this.createModalConditionally(showConfig, <Configuration version={selectedVersion} />);
|
||||
const dependencyDisplay = this.createModalConditionally(showDependencies, <DependencyList onDownload={this.handleDownloadDependency}/>);
|
||||
const dependencyDisplay = this.createModalConditionally(showDependencies, <DependencyList/>);
|
||||
const downloadDisplay = this.createModalConditionally(this.props.DownloadActive, <DownloadProgress/>);
|
||||
const errorDisplay = this.createModalConditionally(this.props.DisplayError, <ErrorDetails/>, true);
|
||||
const upgradeDisplay = this.createModalConditionally(showUpgrade, <UpgradeUI upgrade={this.handleDownloadUpgrade}/>);
|
||||
const upgradeDisplay = this.createModalConditionally(showUpgrade, <UpgradeUI/>);
|
||||
|
||||
let mainContent = [];
|
||||
if (this.props.AppReady) {
|
||||
@@ -262,8 +115,8 @@ class App extends IPCContainer {
|
||||
mainContent.push((
|
||||
<div key={'rvd_' + key++}
|
||||
style={{height: '32%'}}>
|
||||
<ReleaseVersionDisplay downloadClicked={this.handleDownloadRelease}
|
||||
downloadDisabled={!downloadEnabled}/>
|
||||
<ReleaseVersionDisplay downloadDisabled={!downloadEnabled}
|
||||
version={selectedVersion}/>
|
||||
</div>
|
||||
));
|
||||
|
||||
@@ -327,21 +180,16 @@ const mapStateToProps = state => {
|
||||
DisplayConfiguration: state.mounts.DisplayConfiguration,
|
||||
DisplayError: state.error.DisplayError,
|
||||
DownloadActive: state.download.DownloadActive,
|
||||
DownloadType: state.download.DownloadType,
|
||||
InstallActive: state.install.InstallActive,
|
||||
InstallType: state.install.InstallType,
|
||||
InstalledVersion: state.relver.InstalledVersion,
|
||||
LocationsLookup: state.relver.LocationsLookup,
|
||||
MissingDependencies: state.install.MissingDependencies,
|
||||
MountsBusy: state.mounts.MountsBusy,
|
||||
Platform: state.common.Platform,
|
||||
ProviderState: state.mounts.ProviderState,
|
||||
Release: state.relver.Release,
|
||||
ReleaseVersion: state.relver.Version,
|
||||
UpgradeAvailable: state.relver.UpgradeAvailable,
|
||||
UpgradeData: state.relver.UpgradeData,
|
||||
UpgradeDismissed: state.relver.UpgradeDismissed,
|
||||
UpgradeVersion: state.relver.UpgradeVersion,
|
||||
Version: state.common.Version,
|
||||
VersionLookup: state.relver.VersionLookup,
|
||||
};
|
||||
@@ -349,20 +197,10 @@ const mapStateToProps = state => {
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
checkInstalled: (dependencies, version) => dispatch(checkInstalled(dependencies, version)),
|
||||
detectUIUpgrade: () => dispatch(detectUIUpgrade()),
|
||||
downloadItem: (name, type, url, completedCallback) => dispatch(downloadItem(name, type, url, completedCallback)),
|
||||
installDependency: (source, url, completedCallback) => dispatch(installDependency(source, url, completedCallback)),
|
||||
installRelease: (source, version, completedCallback) => dispatch(installRelease(source, version, completedCallback)),
|
||||
installUpgrade: (source, sha256, signature, skipVerification, completedCallback) => dispatch(installUpgrade(source, sha256, signature, skipVerification, completedCallback)),
|
||||
checkVersionInstalled: () => dispatch(checkVersionInstalled()),
|
||||
loadReleases: ()=> dispatch(loadReleases()),
|
||||
notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)),
|
||||
setActiveRelease: (release, version) => dispatch(setActiveRelease(release, version)),
|
||||
setAllowDownload: allow => dispatch(setAllowDownload(allow)),
|
||||
saveState: () => dispatch(saveState()),
|
||||
setDismissUIUpgrade: dismiss => dispatch(setDismissUIUpgrade(dismiss)),
|
||||
setInstalledVersion: version => dispatch(setInstalledVersion(version)),
|
||||
setProviderState: (provider, state) => dispatch(setProviderState(provider, state)),
|
||||
setReleaseUpgradeAvailable: available => dispatch(setReleaseUpgradeAvailable(available)),
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ export default connect(mapStateToProps)(props => {
|
||||
<a
|
||||
href={void(0)}
|
||||
className={'DependencyLink'}
|
||||
onClick={()=>{props.onDownload(props.download); return false;}}><u>Install</u></a> :
|
||||
onClick={()=>{props.onDownload(); return false;}}><u>Install</u></a> :
|
||||
'Installing...'}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import React from 'react';
|
||||
import './DependencyList.css';
|
||||
import {connect} from 'react-redux';
|
||||
import * as Constants from '../../constants';
|
||||
import Dependency from './Dependency/Dependency';
|
||||
import Box from '../UI/Box/Box';
|
||||
import {downloadItem} from '../../redux/actions/download_actions';
|
||||
import {extractFileNameFromURL} from '../../utils';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
@@ -10,20 +13,25 @@ const mapStateToProps = state => {
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps)(props => {
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
downloadItem: (name, type, url) => dispatch(downloadItem(name, type, url))
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(props => {
|
||||
const items = props.MissingDependencies.map((k, i)=> {
|
||||
return (
|
||||
<Dependency download={k.download}
|
||||
key={i}
|
||||
<Dependency key={i}
|
||||
name={k.display}
|
||||
onDownload={props.onDownload}/>
|
||||
onDownload={()=>props.downloadItem(extractFileNameFromURL(k.download), Constants.INSTALL_TYPES.Dependency, k.download)}/>
|
||||
);
|
||||
});
|
||||
|
||||
return (
|
||||
<Box dxStyle={{width: '300px', height: 'auto', padding: '5px'}}>
|
||||
<div style={{width: '100%', height: 'auto', paddingBottom: '5px', boxSizing: 'border-box'}}>
|
||||
<h1 style={{width: '100%', textAlign: 'center'}}>Missing Dependencies</h1>
|
||||
<h1 style={{width: '100%', textAlign: 'center', color: 'var(--text_color_error)'}}>Missing Dependencies</h1>
|
||||
</div>
|
||||
{items}
|
||||
</Box>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
input.MountItemInput {
|
||||
margin: 0;
|
||||
padding: 3px;
|
||||
padding: 4px;
|
||||
border-radius: var(--border_radius);
|
||||
background: rgba(160, 160, 160, 0.1);
|
||||
background: var(--control_background);
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
outline: none;
|
||||
|
||||
@@ -8,6 +8,7 @@ import Text from '../UI/Text/Text';
|
||||
import Button from '../UI/Button/Button';
|
||||
import UpgradeIcon from '../UpgradeIcon/UpgradeIcon';
|
||||
import {setActiveRelease} from "../../redux/actions/release_version_actions";
|
||||
import {downloadItem} from '../../redux/actions/download_actions';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
@@ -16,6 +17,7 @@ const mapStateToProps = state => {
|
||||
InstallActive: state.install.InstallActive,
|
||||
InstallType: state.install.InstallType,
|
||||
InstalledVersion: state.relver.InstalledVersion,
|
||||
LocationsLookup: state.relver.LocationsLookup,
|
||||
MountsBusy: state.mounts.MountsBusy,
|
||||
Release: state.relver.Release,
|
||||
ReleaseUpgradeAvailable: state.relver.ReleaseUpgradeAvailable,
|
||||
@@ -26,11 +28,17 @@ const mapStateToProps = state => {
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
downloadItem: (name, type, urls) => dispatch(downloadItem(name, type, urls)),
|
||||
setActiveRelease: (release, version) => dispatch(setActiveRelease(release, version)),
|
||||
}
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(props => {
|
||||
const handleDownloadRelease = () => {
|
||||
const fileName = props.version + '.zip';
|
||||
props.downloadItem(fileName, Constants.INSTALL_TYPES.Release, props.LocationsLookup[props.version].urls);
|
||||
};
|
||||
|
||||
const handleReleaseChanged = e => {
|
||||
const release = parseInt(e.target.value, 10);
|
||||
const releaseVersion = props.VersionLookup[Constants.RELEASE_TYPES[release]].length - 1;
|
||||
@@ -88,7 +96,7 @@ export default connect(mapStateToProps, mapDispatchToProps)(props => {
|
||||
));
|
||||
} else {
|
||||
optionsDisplay.push((
|
||||
<Button clicked={props.downloadClicked}
|
||||
<Button clicked={handleDownloadRelease}
|
||||
col={dimensions => (dimensions.columns / 3) * 2}
|
||||
colSpan={20}
|
||||
key={key++}
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
margin: 0;
|
||||
padding: 2px;
|
||||
border-radius: var(--border_radius);
|
||||
background: rgba(10, 10, 20, 0.3);
|
||||
background: rgba(10, 10, 20, 0.75);
|
||||
border-color: rgba(10, 10, 20, 0.9);
|
||||
color: var(--text_color);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.DropDownOption {
|
||||
background: rgba(10, 10, 15, 0.8);
|
||||
background: rgba(10, 10, 15, 0.9);
|
||||
border-color: rgba(10, 10, 20, 0.9);
|
||||
color: var(--text_color);
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
top: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
background-color: rgba(0, 0, 0, 0.65);
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,17 +1,37 @@
|
||||
import {connect} from 'react-redux';
|
||||
import Button from '../UI/Button/Button';
|
||||
import Box from '../UI/Box/Box';
|
||||
import * as Constants from '../../constants';
|
||||
import React from 'react';
|
||||
import './UpgradeUI.css';
|
||||
import {setDismissUIUpgrade} from '../../redux/actions/release_version_actions';
|
||||
import {downloadItem} from '../../redux/actions/download_actions';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
Platform: state.common.Platform,
|
||||
UpgradeData: state.relver.UpgradeData,
|
||||
UpgradeVersion: state.relver.UpgradeVersion,
|
||||
}
|
||||
};
|
||||
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
downloadItem: (name, type, urls) => dispatch(downloadItem(name, type, urls)),
|
||||
setDismissUIUpgrade: dismiss => dispatch(setDismissUIUpgrade(dismiss)),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(null, mapDispatchToProps)(props => {
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(props => {
|
||||
const handleDownload = () => {
|
||||
const name = (props.Platform === 'win32') ?
|
||||
'upgrade.exe' :
|
||||
(props.Platform === 'darwin') ?
|
||||
'upgrade.dmg' :
|
||||
'repertory-ui_' + props.UpgradeVersion + '_linux_x86_64.AppImage';
|
||||
props.downloadItem(name, Constants.INSTALL_TYPES.Upgrade, props.UpgradeData.urls);
|
||||
};
|
||||
|
||||
return (
|
||||
<Box dxStyle={{width: '180px', height: 'auto', padding: '5px'}}>
|
||||
<div style={{width: '100%', height: 'auto'}}>
|
||||
@@ -22,7 +42,7 @@ export default connect(null, mapDispatchToProps)(props => {
|
||||
<tr>
|
||||
<td width="50%">
|
||||
<Button buttonStyles={{width: '100%'}}
|
||||
clicked={props.upgrade}>Install</Button>
|
||||
clicked={handleDownload}>Install</Button>
|
||||
</td>
|
||||
<td width="50%">
|
||||
<Button buttonStyles={{width: '100%'}}
|
||||
|
||||
@@ -31,33 +31,17 @@ exports.RELEASES_URL = 'https://bitbucket.org/blockstorage/repertory/raw/master/
|
||||
exports.UI_RELEASES_URL = 'https://bitbucket.org/blockstorage/repertory-ui/raw/master/releases.json';
|
||||
|
||||
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',
|
||||
darwin: '~/Library/Application Support/repertory/ui',
|
||||
win32: '%LOCALAPPDATA%\\repertory\\ui'
|
||||
};
|
||||
|
||||
exports.PROVIDER_LIST = [
|
||||
//'Hyperspace',
|
||||
'Sia',
|
||||
'SiaPrime'
|
||||
];
|
||||
|
||||
exports.PROVIDER_ARG = {
|
||||
//hyperspace: '-hs',
|
||||
sia: '',
|
||||
siaprime: '-sp'
|
||||
};
|
||||
@@ -130,5 +114,8 @@ exports.IPC_Set_Config_Values_Reply = 'set_config_values_reply';
|
||||
|
||||
exports.IPC_Shutdown = 'shutdown';
|
||||
|
||||
exports.IPC_Unmount_All_Drives = 'unmount_all';
|
||||
exports.IPC_Unmount_All_Drives_Reply = 'unmount_all_reply';
|
||||
|
||||
exports.IPC_Unmount_Drive = 'unmount_drive';
|
||||
exports.IPC_Unmount_Drive_Reply = 'unmount_drive_reply';
|
||||
@@ -12,14 +12,6 @@ import {notifyError} from '../../redux/actions/error_actions';
|
||||
const Constants = require('../../constants');
|
||||
|
||||
class Configuration extends IPCContainer {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.setRequestHandler(Constants.IPC_Get_Config_Template_Reply, this.onGetConfigTemplateReply);
|
||||
this.setRequestHandler(Constants.IPC_Get_Config_Reply, this.onGetConfigReply);
|
||||
this.setRequestHandler(Constants.IPC_Set_Config_Values_Reply, this.onSetConfigValuesReply);
|
||||
}
|
||||
|
||||
_isMounted = false;
|
||||
|
||||
state = {
|
||||
@@ -73,6 +65,9 @@ class Configuration extends IPCContainer {
|
||||
|
||||
componentDidMount() {
|
||||
this._isMounted = true;
|
||||
this.setRequestHandler(Constants.IPC_Get_Config_Template_Reply, this.onGetConfigTemplateReply);
|
||||
this.setRequestHandler(Constants.IPC_Get_Config_Reply, this.onGetConfigReply);
|
||||
this.setRequestHandler(Constants.IPC_Set_Config_Values_Reply, this.onSetConfigValuesReply);
|
||||
this.sendRequest(Constants.IPC_Get_Config_Template, {
|
||||
Provider: this.props.DisplayConfiguration,
|
||||
Version: this.props.version,
|
||||
|
||||
@@ -7,6 +7,7 @@ import Modal from '../../components/UI/Modal/Modal';
|
||||
import MountItem from '../../components/MountItem/MountItem';
|
||||
import IPCContainer from '../IPCContainer/IPCContainer';
|
||||
import {
|
||||
resetMountsState,
|
||||
setAllowMount,
|
||||
setAutoMountProcessed,
|
||||
setBusy,
|
||||
@@ -19,14 +20,6 @@ import {notifyError} from '../../redux/actions/error_actions';
|
||||
const Constants = require('../../constants');
|
||||
|
||||
class MountItems extends IPCContainer {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.setRequestHandler(Constants.IPC_Detect_Mounts_Reply, this.onDetectMountsReply);
|
||||
this.setRequestHandler(Constants.IPC_Mount_Drive_Reply, this.onMountDriveReply);
|
||||
this.setRequestHandler(Constants.IPC_Unmount_Drive_Reply, this.onUnmountDriveReply);
|
||||
}
|
||||
|
||||
retryIntervals = {};
|
||||
|
||||
state = {
|
||||
@@ -56,6 +49,10 @@ class MountItems extends IPCContainer {
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
this.setRequestHandler(Constants.IPC_Detect_Mounts_Reply, this.onDetectMountsReply);
|
||||
this.setRequestHandler(Constants.IPC_Mount_Drive_Reply, this.onMountDriveReply);
|
||||
this.setRequestHandler(Constants.IPC_Unmount_Drive_Reply, this.onUnmountDriveReply);
|
||||
this.props.resetMountsState();
|
||||
this.detectMounts();
|
||||
}
|
||||
|
||||
@@ -66,6 +63,7 @@ class MountItems extends IPCContainer {
|
||||
}
|
||||
}
|
||||
|
||||
this.props.resetMountsState();
|
||||
super.componentWillUnmount();
|
||||
};
|
||||
|
||||
@@ -318,6 +316,7 @@ const mapStateToProps = state => {
|
||||
AutoMountProcessed: state.mounts.AutoMountProcessed,
|
||||
InstalledVersion: state.relver.InstalledVersion,
|
||||
MountState: state.mounts.MountState,
|
||||
MountsBusy: state.mounts.MountsBusy,
|
||||
Platform: state.common.Platform,
|
||||
ProviderState: state.mounts.ProviderState,
|
||||
}
|
||||
@@ -326,6 +325,7 @@ const mapStateToProps = state => {
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
notifyError: (msg, critical, callback) => dispatch(notifyError(msg, critical, callback)),
|
||||
resetMountsState: () => dispatch(resetMountsState()),
|
||||
setAllowMount: (provider, allow) => dispatch(setAllowMount(provider, allow)),
|
||||
setAutoMountProcessed: processed => dispatch(setAutoMountProcessed(processed)),
|
||||
setMounted: (provider, mounted) => dispatch(setMounted(provider, mounted)),
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
:root {
|
||||
--border_radius: 4px;
|
||||
|
||||
--control_background: rgba(150, 150, 190, .15);
|
||||
--control_background_hover: rgba(150, 150, 190, .35);
|
||||
--control_background: rgba(125, 145, 200, .15);
|
||||
--control_background_hover: rgba(125, 145, 200, .30);
|
||||
--control_border: 1px solid rgba(70, 70, 70, 0.9);
|
||||
--control_box_shadow: 1px 1px 1px black;
|
||||
--control_transparent_background: rgba(40, 40, 55, 0.45);
|
||||
--control_dark_transparent_background: rgba(15, 15, 15, 0.8);
|
||||
--control_transparent_background: rgba(30, 30, 50, 0.3);
|
||||
--control_dark_transparent_background: rgba(10, 10, 20, 0.8);
|
||||
|
||||
--text_color: rgba(200, 205, 220, 0.7);
|
||||
--text_color_hover: rgba(200, 205, 220, 0.7);
|
||||
--text_color: rgba(200, 205, 225, 0.8);
|
||||
--text_color_hover: rgba(200, 205, 225, 0.9);
|
||||
--text_color_error: rgba(203, 120, 120, 0.8);
|
||||
--heading_text_color: rgba(161, 190, 219, 0.7);
|
||||
--heading_text_color: rgba(146, 175, 220, 0.7);
|
||||
--heading_other_text_color: var(--heading_text_color);
|
||||
--text_color_transition: color 0.3s;
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ if (ipcRenderer) {
|
||||
ipcRenderer.on(Constants.IPC_Get_Platform_Reply, (event, arg) => {
|
||||
if (arg.Platform === 'linux') {
|
||||
const root = document.documentElement;
|
||||
root.style.setProperty('--default_font_size', '15px');
|
||||
root.style.setProperty('--default_font_size', '15.3px');
|
||||
}
|
||||
|
||||
store = createAppStore(arg.Platform, arg.AppPlatform, packageJson.version);
|
||||
|
||||
@@ -22,3 +22,25 @@ export const shutdownApplication = () => {
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export const saveState = () => {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
if (state.common.AppReady) {
|
||||
let currentState = {
|
||||
Release: state.relver.Release,
|
||||
Version: state.relver.Version,
|
||||
};
|
||||
|
||||
for (const provider of Constants.PROVIDER_LIST) {
|
||||
currentState[provider] = state.mounts.ProviderState[provider];
|
||||
}
|
||||
|
||||
if (ipcRenderer) {
|
||||
ipcRenderer.send(Constants.IPC_Save_State, {
|
||||
State: currentState
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -1,6 +1,12 @@
|
||||
import * as Constants from '../../constants';
|
||||
import {createAction} from 'redux-starter-kit';
|
||||
import {getIPCRenderer} from '../../utils';
|
||||
import {notifyError} from './error_actions';
|
||||
import {
|
||||
installDependency,
|
||||
installRelease,
|
||||
installUpgrade
|
||||
} from './install_actions';
|
||||
|
||||
export const setAllowDownload = createAction('download/setAllowDownload');
|
||||
|
||||
@@ -19,12 +25,36 @@ export const setDownloadBegin = (name, type, url) => {
|
||||
export const setDownloadEnd = createAction('download/setDownloadEnd');
|
||||
export const setDownloadProgress = createAction('download/setDownloadProgress');
|
||||
|
||||
export const downloadItem = (name, type, urls, completedCallback) => {
|
||||
export const downloadItem = (name, type, urls) => {
|
||||
return (dispatch, getState) => {
|
||||
if (!Array.isArray(urls)) {
|
||||
urls = [urls];
|
||||
}
|
||||
|
||||
const downloadComplete = result => {
|
||||
if (result.Success) {
|
||||
switch (type) {
|
||||
case Constants.INSTALL_TYPES.Dependency:
|
||||
dispatch(installDependency(result.Destination, result.URL));
|
||||
break;
|
||||
case Constants.INSTALL_TYPES.Release:
|
||||
dispatch(installRelease(result.Destination));
|
||||
break;
|
||||
case Constants.INSTALL_TYPES.Upgrade:
|
||||
//const info = this.props.LocationsLookup[this.props.AppPlatform][this.props.VersionLookup[this.props.AppPlatform][0]];
|
||||
const sha256 = null;//info.sha256;
|
||||
const signature = null;//info.sig;
|
||||
dispatch(installUpgrade(result.Destination, sha256, signature, !!result.SkipVerification));
|
||||
break;
|
||||
default:
|
||||
dispatch(notifyError('Unknown download type: ' + type));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
dispatch(notifyError(result.Error));
|
||||
}
|
||||
};
|
||||
|
||||
const downloadAtIndex = index => {
|
||||
const url = urls[index];
|
||||
const state = getState();
|
||||
@@ -42,7 +72,7 @@ export const downloadItem = (name, type, urls, completedCallback) => {
|
||||
if (!arg.data.Success && (++index < urls.length)) {
|
||||
downloadAtIndex(index);
|
||||
} else {
|
||||
completedCallback(name, type, url, arg.data);
|
||||
downloadComplete(arg.data);
|
||||
dispatch(setDownloadEnd(arg.data));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import * as Constants from '../../constants';
|
||||
import {createAction} from 'redux-starter-kit';
|
||||
import {getIPCRenderer} from '../../utils';
|
||||
import {
|
||||
getIPCRenderer,
|
||||
getSelectedVersionFromState
|
||||
} from '../../utils';
|
||||
import {notifyError} from './error_actions';
|
||||
import {setAllowDownload} from './download_actions';
|
||||
import {
|
||||
@@ -10,6 +13,7 @@ import {
|
||||
} from './release_version_actions';
|
||||
import {
|
||||
setApplicationReady,
|
||||
showWindow,
|
||||
shutdownApplication
|
||||
} from './common_actions';
|
||||
|
||||
@@ -38,6 +42,9 @@ export const checkInstalled = (dependencies, version) => {
|
||||
dispatch(setReleaseUpgradeAvailable(upgradeAvailable));
|
||||
dispatch(setMissingDependencies(result.Dependencies));
|
||||
dispatch(setAllowDownload(true));
|
||||
if (result.Dependencies && (result.Dependencies.length > 0)) {
|
||||
dispatch(showWindow());
|
||||
}
|
||||
};
|
||||
|
||||
if (result.Success) {
|
||||
@@ -55,7 +62,26 @@ export const checkInstalled = (dependencies, version) => {
|
||||
};
|
||||
};
|
||||
|
||||
export const installDependency = (source, url, completedCallback) => {
|
||||
export const checkVersionInstalled = () => {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
|
||||
dispatch(setAllowDownload(false));
|
||||
const selectedVersion = getSelectedVersionFromState(state);
|
||||
if (selectedVersion && (selectedVersion !== 'unavailable')) {
|
||||
let dependencies = [];
|
||||
if (state.relver.LocationsLookup[selectedVersion] && state.relver.LocationsLookup[selectedVersion].dependencies) {
|
||||
dependencies = state.relver.LocationsLookup[selectedVersion].dependencies;
|
||||
}
|
||||
dispatch(checkInstalled(dependencies, selectedVersion));
|
||||
} else {
|
||||
dispatch(setInstalledVersion('none'));
|
||||
dispatch(setAllowDownload(true));
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
export const installDependency = (source, url) => {
|
||||
return (dispatch, getState) => {
|
||||
if (ipcRenderer && !getState().install.InstallActive) {
|
||||
dispatch(setInstallActive(Constants.INSTALL_TYPES.Dependency));
|
||||
@@ -67,7 +93,7 @@ export const installDependency = (source, url, completedCallback) => {
|
||||
FilePath: source,
|
||||
});
|
||||
dispatch(setInstallComplete(result));
|
||||
completedCallback(source, url, result);
|
||||
dispatch(checkVersionInstalled());
|
||||
};
|
||||
|
||||
if (result.Success && source.toLowerCase().endsWith('.dmg')) {
|
||||
@@ -100,18 +126,19 @@ export const installDependency = (source, url, completedCallback) => {
|
||||
};
|
||||
};
|
||||
|
||||
export const installRelease = (source, version, completedCallback) => {
|
||||
export const installRelease = source => {
|
||||
return (dispatch, getState) => {
|
||||
if (ipcRenderer && !getState().install.InstallActive) {
|
||||
dispatch(setInstallActive(Constants.INSTALL_TYPES.Release));
|
||||
|
||||
const version = getSelectedVersionFromState(getState());
|
||||
const extractReleaseComplete = (event, arg) => {
|
||||
ipcRenderer.send(Constants.IPC_Delete_File, {
|
||||
FilePath: source,
|
||||
});
|
||||
|
||||
dispatch(setInstallComplete(arg.data));
|
||||
completedCallback(source, version, arg.data);
|
||||
dispatch(checkVersionInstalled());
|
||||
};
|
||||
|
||||
ipcRenderer.once(Constants.IPC_Extract_Release_Complete, extractReleaseComplete);
|
||||
@@ -123,19 +150,25 @@ export const installRelease = (source, version, completedCallback) => {
|
||||
};
|
||||
};
|
||||
|
||||
export const installUpgrade = (source, sha256, signature, skipVerification, completedCallback) => {
|
||||
export const installUpgrade = (source, sha256, signature, skipVerification) => {
|
||||
return (dispatch, getState) => {
|
||||
if (ipcRenderer && !getState().install.InstallActive) {
|
||||
dispatch(setInstallActive(Constants.INSTALL_TYPES.Upgrade));
|
||||
dispatch(setApplicationReady(false));
|
||||
|
||||
const installUpgradeComplete = (event, arg) => {
|
||||
if (arg.data.Success) {
|
||||
const result = arg.data;
|
||||
if (result.Success) {
|
||||
dispatch(shutdownApplication());
|
||||
} else {
|
||||
dispatch(setApplicationReady(true));
|
||||
dispatch(setInstallComplete(arg.data));
|
||||
completedCallback(source, arg.data);
|
||||
dispatch(setInstallComplete(result));
|
||||
dispatch(notifyError(result.Error, false, () => {
|
||||
// TODO Prompt to verify
|
||||
if (result.AllowSkipVerification) {
|
||||
dispatch(installUpgrade(source, sha256, signature, true));
|
||||
}
|
||||
}, false));
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
import * as Constants from '../../constants';
|
||||
import {createAction} from 'redux-starter-kit';
|
||||
import {getIPCRenderer} from '../../utils';
|
||||
|
||||
export const displayConfiguration = createAction('mounts/displayConfiguration');
|
||||
|
||||
export const RESET_MOUNTS_STATE = 'mounts/resetMountsState';
|
||||
export const resetMountsState = () => {
|
||||
return {
|
||||
type: RESET_MOUNTS_STATE,
|
||||
payload: null,
|
||||
}
|
||||
};
|
||||
|
||||
export const SET_ALLOW_MOUNT = 'mounts/setAllowMount';
|
||||
export const setAllowMount = (provider, allow) => {
|
||||
return {
|
||||
@@ -48,3 +58,15 @@ export const setProviderState = (provider, state) => {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export const unmountAll = completedCallback => {
|
||||
return (dispatch, getState) => {
|
||||
const ipcRenderer = getIPCRenderer();
|
||||
const unmountedCallback = () => {
|
||||
dispatch(resetMountsState());
|
||||
completedCallback();
|
||||
};
|
||||
ipcRenderer.once(Constants.IPC_Unmount_All_Drives_Reply, unmountedCallback);
|
||||
ipcRenderer.send(Constants.IPC_Unmount_All_Drives);
|
||||
}
|
||||
};
|
||||
@@ -2,7 +2,12 @@ import axios from 'axios';
|
||||
import * as Constants from '../../constants';
|
||||
import {createAction} from 'redux-starter-kit';
|
||||
import {notifyError} from './error_actions';
|
||||
import {setApplicationReady} from './common_actions';
|
||||
import {
|
||||
saveState,
|
||||
setApplicationReady,
|
||||
showWindow
|
||||
} from './common_actions';
|
||||
import {unmountAll} from './mount_actions';
|
||||
|
||||
export const CLEAR_UI_UPGRADE = 'relver/clearUIUpgrade';
|
||||
export const clearUIUpgrade = () => {
|
||||
@@ -27,6 +32,9 @@ export const detectUIUpgrade = () => {
|
||||
(data.Versions[appPlatform].length > 0) &&
|
||||
(data.Versions[appPlatform][0] !== version)) {
|
||||
dispatch(setUIUpgradeData(data.Locations[appPlatform][data.Versions[appPlatform][0]], data.Versions[appPlatform][0]));
|
||||
if (!state.relver.UpgradeDismissed) {
|
||||
dispatch(showWindow());
|
||||
}
|
||||
} else {
|
||||
dispatch(clearUIUpgrade());
|
||||
}
|
||||
@@ -41,18 +49,34 @@ export const loadReleases = () => {
|
||||
return (dispatch, getState) => {
|
||||
const dispatchActions = (locationsLookup, versionLookup)=> {
|
||||
const state = getState().relver;
|
||||
const latestVersion = versionLookup[Constants.RELEASE_TYPES[state.Release]].length - 1;
|
||||
let latestVersion = versionLookup[Constants.RELEASE_TYPES[state.Release]].length - 1;
|
||||
let release = state.Release;
|
||||
let version = state.Version;
|
||||
if ((version === -1) || !versionLookup[Constants.RELEASE_TYPES[state.Release]][version]) {
|
||||
if (versionLookup[Constants.RELEASE_TYPES[release]][0] === 'unavailable') {
|
||||
release = state.ReleaseDefault;
|
||||
latestVersion = version = 0;
|
||||
} else if ((version === -1) || !versionLookup[Constants.RELEASE_TYPES[state.Release]][version]) {
|
||||
version = latestVersion;
|
||||
}
|
||||
|
||||
dispatch(setReleaseData(locationsLookup, versionLookup));
|
||||
if (version !== state.Version) {
|
||||
dispatch(setActiveRelease(state.Release, version));
|
||||
}
|
||||
|
||||
const dispatchActions = () => {
|
||||
dispatch(setReleaseUpgradeAvailable((version !== latestVersion)));
|
||||
dispatch(setApplicationReady(true));
|
||||
dispatch(detectUIUpgrade());
|
||||
};
|
||||
|
||||
if ((version !== state.Version) || (release !== state.Release)) {
|
||||
dispatch(unmountAll(() => {
|
||||
dispatch(setActiveRelease(release, version));
|
||||
dispatchActions();
|
||||
dispatch(showWindow());
|
||||
dispatch(saveState());
|
||||
}));
|
||||
} else {
|
||||
dispatchActions();
|
||||
}
|
||||
};
|
||||
|
||||
axios
|
||||
|
||||
@@ -2,6 +2,7 @@ import * as Constants from '../../constants';
|
||||
import {createReducer} from 'redux-starter-kit';
|
||||
import {
|
||||
displayConfiguration,
|
||||
RESET_MOUNTS_STATE,
|
||||
SET_ALLOW_MOUNT,
|
||||
setAutoMountProcessed,
|
||||
setBusy,
|
||||
@@ -53,6 +54,13 @@ export const mountReducer = createReducer({
|
||||
DisplayConfiguration: action.payload
|
||||
};
|
||||
},
|
||||
[RESET_MOUNTS_STATE]: (state, action) => {
|
||||
return {
|
||||
...state,
|
||||
MountsBusy: false,
|
||||
MountState: mountState,
|
||||
}
|
||||
},
|
||||
[setAutoMountProcessed]: (state, action) => {
|
||||
return {
|
||||
...state,
|
||||
|
||||
@@ -16,7 +16,8 @@ const versionLookup = Constants.RELEASE_TYPES.map(k=> {
|
||||
export const releaseVersionReducer = createReducer({
|
||||
InstalledVersion: 'none',
|
||||
LocationsLookup: {},
|
||||
Release: 1,
|
||||
Release: 0,
|
||||
ReleaseDefault: 0,
|
||||
ReleaseUpgradeAvailable: false,
|
||||
UpgradeAvailable: false,
|
||||
UpgradeData: null,
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import * as Constants from './constants';
|
||||
|
||||
const ipcRenderer = (!process.versions.hasOwnProperty('electron') && window && window.require) ?
|
||||
window.require('electron').ipcRenderer :
|
||||
null;
|
||||
@@ -11,3 +13,9 @@ export const getIPCRenderer = () => {
|
||||
return ipcRenderer;
|
||||
};
|
||||
|
||||
export const getSelectedVersionFromState = state => {
|
||||
return (state.relver.Version === -1) ?
|
||||
'unavailable' :
|
||||
state.relver.VersionLookup[Constants.RELEASE_TYPES[state.relver.Release]][state.relver.Version];
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user