diff --git a/build.sh b/build.sh index ece97212..992f7256 100755 --- a/build.sh +++ b/build.sh @@ -94,6 +94,10 @@ cp -r cordova/platforms/android/app/build/outputs/apk/debug/app-debug.apk "$comp cp -r cordova/platforms/android/app/build/outputs/bundle/release/app-release.aab "$compiled_dir/Runebase-Lite-Wallet-v$version-release.aab" cp -r dist-electron/*.AppImage "$compiled_dir" cp -r dist-electron/*.exe "$compiled_dir" +cp -r dist-electron/*.deb "$compiled_dir" +cp -r dist-electron/latest.yml "$compiled_dir" +cp -r dist-electron/latest-linux.yml "$compiled_dir" + # Display a message indicating where the compiled files are located echo "Compiled files are in the '$compiled_dir' directory." diff --git a/cordova/config.xml b/cordova/config.xml index 95101e85..26c74831 100644 --- a/cordova/config.xml +++ b/cordova/config.xml @@ -1,5 +1,5 @@ - + Runebase Lite Wallet A lightweight wallet and transaction signing client for the Runebase network Bago diff --git a/cordova/package.json b/cordova/package.json index 876a3cbd..73cd95c4 100644 --- a/cordova/package.json +++ b/cordova/package.json @@ -1,7 +1,7 @@ { "name": "io.runebase.runebaselitewallet", "displayName": "Runebase Lite Wallet", - "version": "1.6.7", + "version": "1.7.0", "description": "A Runebase Lite Wallet", "main": "index.js", "scripts": { diff --git a/electron-builder-config.js b/electron-builder-config.js index 32c74f78..60490bdf 100644 --- a/electron-builder-config.js +++ b/electron-builder-config.js @@ -9,11 +9,13 @@ module.exports = { 'main.js' ], win: { - icon: 'dist/icons/icon.ico' + icon: 'dist/icons/icon.ico', + target: ['nsis', 'portable'] }, linux: { category: 'Utility', - icon: 'dist/icons/icon.png' + icon: 'dist/icons/icon.png', + target: ['deb', 'AppImage'] }, mac: { icon: 'dist/icons/icon.icns', diff --git a/electron/main.js b/electron/main.js index b89d366b..e15c575a 100644 --- a/electron/main.js +++ b/electron/main.js @@ -1,9 +1,10 @@ -// electron/main.js const { app, BrowserWindow, Menu } = require('electron'); +const { autoUpdater } = require('electron-updater'); const path = require('path'); const url = require('url'); let mainWindow; +let feedURL = 'https://github.com/runebase/runebase-lite-wallet/releases/latest'; function createWindow() { mainWindow = new BrowserWindow({ @@ -11,6 +12,11 @@ function createWindow() { height: 600, webPreferences: { nodeIntegration: false, + contextIsolation: false, + enableRemoteModule: false, + contentSecurityPolicy: { + scriptSrc: ["'self'", "'unsafe-inline'", 'https://github.com/'], + }, }, }); @@ -22,18 +28,54 @@ function createWindow() { }) ); - // Remove the default menu bar - Menu.setApplicationMenu(null); mainWindow.setMinimumSize(350, 600); - - // mainWindow.webContents.openDevTools(); - + mainWindow.webContents.openDevTools(); mainWindow.on('closed', function () { mainWindow = null; }); } -app.on('ready', createWindow); +function checkForUpdates() { + autoUpdater.checkForUpdatesAndNotify(); + + autoUpdater.on('update-available', () => { + console.log('Update available'); + mainWindow.webContents.send('update-available'); + }); + + autoUpdater.on('update-downloaded', () => { + console.log('Update downloaded'); + mainWindow.webContents.send('update-downloaded'); + }); + + autoUpdater.on('error', (err) => { + console.error('AutoUpdater error:', err); + }); + + // Additional logging for update events + autoUpdater.on('checking-for-update', () => console.log('Checking for update')); + autoUpdater.on('update-not-available', () => console.log('No update available')); +} + +app.on('ready', () => { + // Remove the default menu bar + Menu.setApplicationMenu(null); + + // Generate Custom Menu + const menu = Menu.buildFromTemplate([ + { + label: 'Check for Updates', + click: () => { + checkForUpdates(); + }, + }, + ]); + Menu.setApplicationMenu(menu); + + createWindow(); + // Check for updates + checkForUpdates(); +}); app.on('window-all-closed', function () { if (process.platform !== 'darwin') app.quit(); diff --git a/package-lock.json b/package-lock.json index ec800d5b..e3a9ab66 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "Runebase-Lite-Wallet", - "version": "1.6.7", + "version": "1.6.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Runebase-Lite-Wallet", - "version": "1.6.7", + "version": "1.6.4", "hasInstallScript": true, "dependencies": { "@emotion/react": "^11.11.1", @@ -36,6 +36,7 @@ "create-hash": "^1.2.0", "crypto-browserify": "^3.12.0", "deep-equal": "^2.2.3", + "electron-updater": "^6.1.7", "ethjs-abi": "^0.2.1", "events": "^3.3.0", "https-browserify": "^1.0.0", @@ -4489,8 +4490,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/arr-diff": { "version": "4.0.0", @@ -5203,7 +5203,6 @@ "version": "9.2.3", "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", - "dev": true, "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -6561,7 +6560,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -7345,6 +7343,83 @@ "integrity": "sha512-JAJ4lyLJYudlgJPYJicimU9R+qZ/3iyeyQS99bfT7PWi7psYWeN84lPswTjpHxQueU34PKxM/IJzQS6poYlovQ==", "dev": true }, + "node_modules/electron-updater": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.7.tgz", + "integrity": "sha512-SNOhYizjkm4ET+Y8ilJyUzcVsFJDtINzVN1TyHnZeMidZEG3YoBebMyXc/J6WSiXdUaOjC7ngekN6rNp6ardHA==", + "dependencies": { + "builder-util-runtime": "9.2.3", + "fs-extra": "^10.1.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "lodash.escaperegexp": "^4.1.2", + "lodash.isequal": "^4.5.0", + "semver": "^7.3.8", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/electron-updater/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/electron-updater/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-updater/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-updater/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/electron-updater/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, "node_modules/electron/node_modules/@types/node": { "version": "18.19.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", @@ -8798,8 +8873,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -10043,7 +10117,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -10220,8 +10293,7 @@ "node_modules/lazy-val": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", - "dev": true + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==" }, "node_modules/lcid": { "version": "1.0.0", @@ -10586,6 +10658,16 @@ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -11148,8 +11230,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nan": { "version": "2.18.0", @@ -13842,8 +13923,7 @@ "node_modules/sax": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, "node_modules/scheduler": { "version": "0.23.0", @@ -14941,6 +15021,11 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", diff --git a/package.json b/package.json index fd9c2958..6bc56994 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,11 @@ { "name": "Runebase-Lite-Wallet", "description": "LightWeight wallet for the Runebase blockchain", - "author": "Bago", - "version": "1.6.7", + "author": { + "name": "Bago", + "email": "support@runebase.io" + }, + "version": "1.7.0", "private": true, "scripts": { "clean": "rm -rf dist", @@ -95,6 +98,7 @@ "create-hash": "^1.2.0", "crypto-browserify": "^3.12.0", "deep-equal": "^2.2.3", + "electron-updater": "^6.1.7", "ethjs-abi": "^0.2.1", "events": "^3.3.0", "https-browserify": "^1.0.0", diff --git a/static/manifest.json b/static/manifest.json index e1c9c367..332871fd 100644 --- a/static/manifest.json +++ b/static/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "RunebaseChrome", - "version": "1.6.7", + "version": "1.7.0", "description": "Runebase lightweight wallet and transaction signing client.", "icons": { "16": "images/logo-main-16.png", diff --git a/static/popup.html b/static/popup.html index 2b199b2c..34b69585 100644 --- a/static/popup.html +++ b/static/popup.html @@ -3,6 +3,7 @@ + Runebase Lite Wallet