From 53de22c226b7bcf11ad1d0000ee8c2ee20989b57 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 11:50:21 -0400 Subject: [PATCH 01/14] Auto --- package-lock.json | 77 +++++++++++++++++++++++++++++++++++++++++----- package.json | 6 ++-- public/electron.js | 3 +- public/updater.js | 47 ++++++++++++++++++++++++++++ src/App.tsx | 2 +- 5 files changed, 123 insertions(+), 12 deletions(-) create mode 100644 public/updater.js diff --git a/package-lock.json b/package-lock.json index c864662..4459598 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "snakescreen", - "version": "0.0.1", + "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "snakescreen", - "version": "0.0.1", + "version": "0.0.2", "dependencies": { "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.0", @@ -17,6 +17,7 @@ "@types/estree": "^1.0.6", "@types/react": "19.0.8", "@types/react-dom": "19.0.3", + "electron-updater": "^6.6.2", "react": "19.0.0", "react-dom": "19.0.0", "react-scripts": "5.0.1" @@ -10030,6 +10031,53 @@ "dev": true, "license": "ISC" }, + "node_modules/electron-updater": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz", + "integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==", + "license": "MIT", + "dependencies": { + "builder-util-runtime": "9.3.1", + "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.6.3", + "tiny-typed-emitter": "^2.1.0" + } + }, + "node_modules/electron-updater/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==", + "license": "Python-2.0" + }, + "node_modules/electron-updater/node_modules/builder-util-runtime": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz", + "integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/electron-updater/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -11810,7 +11858,6 @@ "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==", - "dev": true, "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -12243,7 +12290,6 @@ "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, "license": "ISC" }, "node_modules/graphemer": { @@ -14948,7 +14994,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -15083,7 +15128,6 @@ "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, "license": "MIT" }, "node_modules/lazystream": { @@ -15286,6 +15330,12 @@ "license": "MIT", "peer": 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==", + "license": "MIT" + }, "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", @@ -15294,6 +15344,13 @@ "license": "MIT", "peer": true }, + "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==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -19734,7 +19791,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, "license": "ISC" }, "node_modules/saxes": { @@ -21610,6 +21666,12 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -22061,7 +22123,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "license": "MIT", "engines": { "node": ">= 10.0.0" diff --git a/package.json b/package.json index a3aa3f9..230dc04 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "0.0.2", + "version": "1.0.14", "private": true, "main": "public/electron.js", "homepage": ".", @@ -14,6 +14,7 @@ "@types/estree": "^1.0.6", "@types/react": "19.0.8", "@types/react-dom": "19.0.3", + "electron-updater": "^6.6.2", "react": "19.0.0", "react-dom": "19.0.0", "react-scripts": "5.0.1" @@ -27,7 +28,8 @@ "electron": "electron .", "electron:start": "npm run app:build && npm run electron", "electron:dir": "electron-builder --dir", - "electron:build": "electron-builder" + "electron:build": "electron-builder", + "publish": "npm run app:build && electron-builder -p always" }, "devDependencies": { "electron": "^35.0.2", diff --git a/public/electron.js b/public/electron.js index 66d0f08..69db6c4 100644 --- a/public/electron.js +++ b/public/electron.js @@ -1,8 +1,9 @@ const { app, BrowserWindow } = require('electron'); +const { checkForUpdates } = require('./updater'); const path = require('path'); let mainWindow; - +checkForUpdates(); function createWindow() { mainWindow = new BrowserWindow({ diff --git a/public/updater.js b/public/updater.js new file mode 100644 index 0000000..10008cc --- /dev/null +++ b/public/updater.js @@ -0,0 +1,47 @@ +const { dialog } = require('electron'); +const { autoUpdater } = require('electron-updater'); + + +autoUpdater.autoDownload = false; + +autoUpdater.on('error', (error) => { + dialog.showErrorBox('Error: ', (error == null) ? "unknown" : (error.stack || error).toString()); +}); + +autoUpdater.on('update-available', () => { + dialog.showMessageBox( + { + type: "info", + title: "Found Updates", + message: 'Found updates, do you want to update now?', + buttons: ["Yes", "No"] + } + ).then((buttonIndex) => { + if (buttonIndex.response === 0) { + autoUpdater.downloadUpdate() + } + }); +}); + +autoUpdater.on('update-not-available', () => { + // Prevent from showing dialog on every start + // dialog.showMessageBox({ + // title: "No Updates", + // message: "Current version is up-to-date.", + // }); +}); + +autoUpdater.on('update-downloaded', () => { + dialog.showMessageBox({ + title: 'Installed Updates', + message: 'Updates downloaded, apllication will quit for update...' + }).then(() => { + setImmediate(() => autoUpdater.quitAndInstall()); + }); +}); + +function checkForUpdates(){ + autoUpdater.checkForUpdates(); +} + +module.exports.checkForUpdates = checkForUpdates; \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 0391c00..9838e28 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -66,7 +66,7 @@ export default function App({ IP, setIP }: IPprops) { zIndex: -1, }} > - + Your browser does not support the video tag. )} From b39d8aae9627dc9ba5146c3542223077a9f61474 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 11:59:27 -0400 Subject: [PATCH 02/14] Changes to main.yml (Not done yet) --- .github/workflows/main.yml | 14 +++++++++++++- package.json | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1d95978..af43277 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -53,11 +53,23 @@ jobs: with: name: SnakeScreen-Setup path: dist/ + + - name: Get Version + id: getVersion + shell: bash + run: | + content=`cat ./package.json` + # the following lines are required for multiline json + content="$(content//'%'/'%25')" + content="$(content//$'\n'/'%0A')" + content="$(content//$'\r'/'%0D')" + # + echo "::set-output name=packageJson::$content" - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - tag_name: v1.0.${{ github.run_number }} + tag_name: v1.0.${{ fromJson(steps.getVersion.outputs.packageJson).version}} files: dist/SnakeScreen-Setup.exe env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file diff --git a/package.json b/package.json index 230dc04..4f9d6da 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "1.0.14", + "version": "1.0.15", "private": true, "main": "public/electron.js", "homepage": ".", From 233a54db8f7ff02529b7c7ddf7ad8439d6d72fc8 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 13:17:11 -0400 Subject: [PATCH 03/14] testing change --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index af43277..0ab31bb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -42,7 +42,7 @@ jobs: release: needs: build runs-on: windows-latest - if: github.ref == 'refs/heads/main' + # if: github.ref == 'refs/heads/main' steps: - name: Checkout code From 462cafefa22f29bdf7cf275c53102168a729d071 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 13:24:57 -0400 Subject: [PATCH 04/14] new publish test and trying fix for version --- .github/workflows/main.yml | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0ab31bb..37d85cd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,14 +30,16 @@ jobs: - name: Build Snakescreen run: npm run build - - name: Build Electron App - run: npm run electron:build + - name: Build Electron App and publish + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + run: npm run publish - - name: Upload executable as an artifact - uses: actions/upload-artifact@v4 - with: - name: SnakeScreen-Setup - path: dist/SnakeScreen-Setup.exe + # - name: Upload executable as an artifact + # uses: actions/upload-artifact@v4 + # with: + # name: SnakeScreen-Setup + # path: dist/SnakeScreen-Setup.exe release: needs: build @@ -48,17 +50,17 @@ jobs: - name: Checkout code uses: actions/checkout@v3 - - name: Download built executable - uses: actions/download-artifact@v4 - with: - name: SnakeScreen-Setup - path: dist/ + # - name: Download built executable + # uses: actions/download-artifact@v4 + # with: + # name: SnakeScreen-Setup + # path: dist/ - name: Get Version id: getVersion shell: bash run: | - content=`cat ./package.json` + content=`cat package.json` # the following lines are required for multiline json content="$(content//'%'/'%25')" content="$(content//$'\n'/'%0A')" @@ -70,6 +72,6 @@ jobs: uses: softprops/action-gh-release@v2 with: tag_name: v1.0.${{ fromJson(steps.getVersion.outputs.packageJson).version}} - files: dist/SnakeScreen-Setup.exe + # files: dist/SnakeScreen-Setup.exe env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file From 13657c022ac233447a41632c1a9a62a5c46022b9 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 13:35:24 -0400 Subject: [PATCH 05/14] Maybe CI work now --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 37d85cd..4d7ab30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,6 +48,7 @@ jobs: steps: - name: Checkout code + shell: bash uses: actions/checkout@v3 # - name: Download built executable @@ -69,6 +70,7 @@ jobs: echo "::set-output name=packageJson::$content" - name: Create GitHub Release + shell: bash uses: softprops/action-gh-release@v2 with: tag_name: v1.0.${{ fromJson(steps.getVersion.outputs.packageJson).version}} From 1c8c568dd86e79b5c774749002966597a061fa21 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 13:42:03 -0400 Subject: [PATCH 06/14] Maybe this will work --- .github/workflows/main.yml | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4d7ab30..1938ee7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -48,7 +48,6 @@ jobs: steps: - name: Checkout code - shell: bash uses: actions/checkout@v3 # - name: Download built executable @@ -57,23 +56,14 @@ jobs: # name: SnakeScreen-Setup # path: dist/ - - name: Get Version - id: getVersion - shell: bash - run: | - content=`cat package.json` - # the following lines are required for multiline json - content="$(content//'%'/'%25')" - content="$(content//$'\n'/'%0A')" - content="$(content//$'\r'/'%0D')" - # - echo "::set-output name=packageJson::$content" + - name: package.json info + id: info + uses: jaywcjlove/github-action-package@main - name: Create GitHub Release - shell: bash uses: softprops/action-gh-release@v2 with: - tag_name: v1.0.${{ fromJson(steps.getVersion.outputs.packageJson).version}} + tag_name: ${{ steps.info.outputs.version }} # files: dist/SnakeScreen-Setup.exe env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file From d680416c976fb97819be6929bb5239593c34101a Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 13:50:35 -0400 Subject: [PATCH 07/14] Maybe works --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 1938ee7..9d140f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -63,7 +63,7 @@ jobs: - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ steps.info.outputs.version }} + tag_name: v${{ steps.info.outputs.version }} # files: dist/SnakeScreen-Setup.exe env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file From 4d6367da1933cc7de28a30e946de57d75502b72c Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 14:01:22 -0400 Subject: [PATCH 08/14] maybe this works --- .github/workflows/main.yml | 44 +++++++++++++++++++------------------- package.json | 6 ++++++ 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9d140f4..98b77ef 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,29 +41,29 @@ jobs: # name: SnakeScreen-Setup # path: dist/SnakeScreen-Setup.exe - release: - needs: build - runs-on: windows-latest - # if: github.ref == 'refs/heads/main' + # release: + # needs: build + # runs-on: windows-latest + # # if: github.ref == 'refs/heads/main' - steps: - - name: Checkout code - uses: actions/checkout@v3 + # steps: + # - name: Checkout code + # uses: actions/checkout@v3 - # - name: Download built executable - # uses: actions/download-artifact@v4 - # with: - # name: SnakeScreen-Setup - # path: dist/ + # # - name: Download built executable + # # uses: actions/download-artifact@v4 + # # with: + # # name: SnakeScreen-Setup + # # path: dist/ - - name: package.json info - id: info - uses: jaywcjlove/github-action-package@main + # - name: package.json info + # id: info + # uses: jaywcjlove/github-action-package@main - - name: Create GitHub Release - uses: softprops/action-gh-release@v2 - with: - tag_name: v${{ steps.info.outputs.version }} - # files: dist/SnakeScreen-Setup.exe - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file + # - name: Create GitHub Release + # uses: softprops/action-gh-release@v2 + # with: + # tag_name: v${{ steps.info.outputs.version }} + # # files: dist/SnakeScreen-Setup.exe + # env: + # GITHUB_TOKEN: ${{ secrets.GH_TOKEN}} \ No newline at end of file diff --git a/package.json b/package.json index 4f9d6da..96789aa 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,12 @@ "files": [ "build/**/*" ], + "publish": [ + { + "provider": "github", + "releaseType": "release" + } + ], "mac": { "category": "public.app-category.utilities" }, From 8a0a3e4416f480d970e004f9bd4ed05c7402a365 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 14:07:34 -0400 Subject: [PATCH 09/14] Fix double build of SnakeScreen --- .github/workflows/main.yml | 7 ++++++- package.json | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 98b77ef..e4051fc 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: CI +name: Publish Release env: GH_TOKEN: ${{ secrets.GH_TOKEN }} @@ -35,6 +35,11 @@ jobs: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} run: npm run publish + + +# Keeping incase we want to use seperate jobs + + # - name: Upload executable as an artifact # uses: actions/upload-artifact@v4 # with: diff --git a/package.json b/package.json index 96789aa..b49c2ff 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,8 @@ "electron:start": "npm run app:build && npm run electron", "electron:dir": "electron-builder --dir", "electron:build": "electron-builder", - "publish": "npm run app:build && electron-builder -p always" + "publish": "electron-builder -p always", + "build&publish": "npm run build && npm run publish" }, "devDependencies": { "electron": "^35.0.2", From d16517a6468b6713c74a06a6639863f18fb09523 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 14:10:59 -0400 Subject: [PATCH 10/14] cleaning up branch --- .github/workflows/main.yml | 42 ++++++++++++++++++-------------------- package.json | 2 +- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e4051fc..405977b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -13,26 +13,24 @@ jobs: build: runs-on: windows-latest # Electron-builder requires Windows for .exe builds - - steps: - name: Checkout code uses: actions/checkout@v4 - - name: Setup Node.js + - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 23 - - name: Install dependencies + - name: Install dependencies run: npm install --force - - name: Build Snakescreen + - name: Build Snakescreen #Builds react app run: npm run build - - name: Build Electron App and publish + - name: Build Electron App and publish #Builds the electron app then publishes to github releases env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GH_TOKEN }} run: npm run publish @@ -40,31 +38,31 @@ jobs: # Keeping incase we want to use seperate jobs - # - name: Upload executable as an artifact - # uses: actions/upload-artifact@v4 - # with: - # name: SnakeScreen-Setup - # path: dist/SnakeScreen-Setup.exe - + # - name: Upload executable as an artifact + # uses: actions/upload-artifact@v4 + # with: + # name: SnakeScreen-Setup + # path: dist/SnakeScreen-Setup.exe + # # release: # needs: build # runs-on: windows-latest # # if: github.ref == 'refs/heads/main' - + # # steps: # - name: Checkout code # uses: actions/checkout@v3 - - # # - name: Download built executable - # # uses: actions/download-artifact@v4 - # # with: - # # name: SnakeScreen-Setup - # # path: dist/ - + # + # - name: Download built executable + # uses: actions/download-artifact@v4 + # with: + # name: SnakeScreen-Setup + # path: dist/ + # # - name: package.json info # id: info # uses: jaywcjlove/github-action-package@main - + # # - name: Create GitHub Release # uses: softprops/action-gh-release@v2 # with: diff --git a/package.json b/package.json index b49c2ff..56e18e7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "1.0.15", + "version": "1.0.16", "private": true, "main": "public/electron.js", "homepage": ".", From f46912b8bec35da53168b03017737b1160eedfda Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 14:19:14 -0400 Subject: [PATCH 11/14] fix spelling mistake --- public/updater.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/updater.js b/public/updater.js index 10008cc..c692e4e 100644 --- a/public/updater.js +++ b/public/updater.js @@ -34,7 +34,7 @@ autoUpdater.on('update-not-available', () => { autoUpdater.on('update-downloaded', () => { dialog.showMessageBox({ title: 'Installed Updates', - message: 'Updates downloaded, apllication will quit for update...' + message: 'Updates downloaded, application will quit to apply changes...' }).then(() => { setImmediate(() => autoUpdater.quitAndInstall()); }); From be3498de490a3d97a991ffe13e4fb04d77759536 Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 15:29:30 -0400 Subject: [PATCH 12/14] testing fixes --- package.json | 4 ++-- public/electron.js | 5 +++-- public/updater.js | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 56e18e7..699d3c3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "1.0.16", + "version": "1.0.17", "private": true, "main": "public/electron.js", "homepage": ".", @@ -30,7 +30,7 @@ "electron:dir": "electron-builder --dir", "electron:build": "electron-builder", "publish": "electron-builder -p always", - "build&publish": "npm run build && npm run publish" + "build-publish": "npm run build && npm run publish" }, "devDependencies": { "electron": "^35.0.2", diff --git a/public/electron.js b/public/electron.js index 69db6c4..d436789 100644 --- a/public/electron.js +++ b/public/electron.js @@ -3,7 +3,6 @@ const { checkForUpdates } = require('./updater'); const path = require('path'); let mainWindow; -checkForUpdates(); function createWindow() { mainWindow = new BrowserWindow({ @@ -16,7 +15,9 @@ function createWindow() { }); mainWindow.loadFile('./build/index.html'); - + + checkForUpdates(); + mainWindow.on('closed', function () { mainWindow = null; }); diff --git a/public/updater.js b/public/updater.js index c692e4e..2430133 100644 --- a/public/updater.js +++ b/public/updater.js @@ -5,7 +5,9 @@ const { autoUpdater } = require('electron-updater'); autoUpdater.autoDownload = false; autoUpdater.on('error', (error) => { - dialog.showErrorBox('Error: ', (error == null) ? "unknown" : (error.stack || error).toString()); + let message = (error == null) ? "unknown" : (error.stack || error).toString(); + message = error.name; + dialog.showErrorBox('Error: ', message); }); autoUpdater.on('update-available', () => { From b4008a4b30d4a5bf1df488d1b79ec827132d4eec Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 15:39:34 -0400 Subject: [PATCH 13/14] testing new error handling --- package.json | 2 +- public/updater.js | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 699d3c3..5c8a34e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "1.0.17", + "version": "1.0.18", "private": true, "main": "public/electron.js", "homepage": ".", diff --git a/public/updater.js b/public/updater.js index 2430133..00f6821 100644 --- a/public/updater.js +++ b/public/updater.js @@ -1,13 +1,26 @@ const { dialog } = require('electron'); const { autoUpdater } = require('electron-updater'); +function hostAvailable(url) { + var req = new XMLHttpRequest(); + req.open('HEAD', url, false); + req.send(); + return req.status!=404; +} autoUpdater.autoDownload = false; autoUpdater.on('error', (error) => { let message = (error == null) ? "unknown" : (error.stack || error).toString(); - message = error.name; - dialog.showErrorBox('Error: ', message); + if (hostAvailable("https://github.com")){ + dialog.showErrorBox('Error: ', message); + }else{ + dialog.showMessageBox({ + type: "none", + title: "Error: ", + message: message + }); + } }); autoUpdater.on('update-available', () => { From 67027de064673e314d868e9d1bd77e64bf24883d Mon Sep 17 00:00:00 2001 From: avidraccoon Date: Sun, 30 Mar 2025 16:03:11 -0400 Subject: [PATCH 14/14] This works good enought for now still needs improvements --- package.json | 2 +- public/updater.js | 21 +++++---------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 5c8a34e..7dc0b01 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "snakescreen", - "version": "1.0.18", + "version": "1.0.19", "private": true, "main": "public/electron.js", "homepage": ".", diff --git a/public/updater.js b/public/updater.js index 75227c6..5f4b48a 100644 --- a/public/updater.js +++ b/public/updater.js @@ -2,26 +2,15 @@ const { dialog } = require('electron'); const { autoUpdater } = require('electron-updater'); -function hostAvailable(url) { - var req = new XMLHttpRequest(); - req.open('HEAD', url, false); - req.send(); - return req.status!=404; -} - autoUpdater.autoDownload = false; autoUpdater.on('error', (error) => { let message = (error == null) ? "unknown" : (error.stack || error).toString(); - if (hostAvailable("https://github.com")){ - dialog.showErrorBox('Error: ', message); - }else{ - dialog.showMessageBox({ - type: "none", - title: "Error: ", - message: message - }); - } + dialog.showMessageBox({ + type: "info", + title: "Error: ", + message: message + }); }); autoUpdater.on('update-available', () => {