From 45b31d704e0a56f64d5b4afc787f50faf307f1b2 Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Thu, 1 May 2025 21:05:21 -0600 Subject: [PATCH 01/11] add prod build test GH action --- .github/workflows/build-test.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 .github/workflows/build-test.yml diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml new file mode 100644 index 00000000..f8896138 --- /dev/null +++ b/.github/workflows/build-test.yml @@ -0,0 +1,24 @@ +name: Test Production Build + +on: + # Runs on pushes targeting the default branch + push: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Set up bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + - name: Checkout + uses: actions/checkout@v3 + - name: Setup and Install dependencies + run: bun run setup + - name: run production mode + run: bun run prod + From c039bce0c3cd4be88c4eace16b338aeb71df20cb Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 10:44:32 -0600 Subject: [PATCH 02/11] add electron build test --- .github/workflows/build-test.yml | 36 ++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index f8896138..8c8ab247 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -1,4 +1,4 @@ -name: Test Production Build +name: Test Electron App Production Build on: # Runs on pushes targeting the default branch @@ -9,16 +9,26 @@ on: jobs: build: - runs-on: ubuntu-latest - steps: - - name: Set up bun - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - name: Checkout - uses: actions/checkout@v3 - - name: Setup and Install dependencies - run: bun run setup - - name: run production mode - run: bun run prod + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm install + + - name: Build Electron app + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + run: npm run build + From f9d2999e8cb5b5bc0d8fd1a75a26ad7573442f4f Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 10:53:39 -0600 Subject: [PATCH 03/11] add prod dryrun GH action --- .github/workflows/prod-test.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/prod-test.yml diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml new file mode 100644 index 00000000..9239deae --- /dev/null +++ b/.github/workflows/prod-test.yml @@ -0,0 +1,27 @@ +name: Test Electron App Production Build + +on: + # Runs on pushes targeting the default branch + push: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + + +jobs: + build: + runs-on: "ubuntu-latest" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Setup And Install dependencies + run: npm setup + + - name: dry run production build + run: npm run prod --dryrun \ No newline at end of file From df1b80e2a1305b17cf5edb74fe34e604e43a8432 Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 10:55:34 -0600 Subject: [PATCH 04/11] fix typo --- .github/workflows/prod-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index 9239deae..c7bf08b5 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -21,7 +21,7 @@ jobs: node-version: '20' - name: Setup And Install dependencies - run: npm setup + run: npm run setup - name: dry run production build run: npm run prod --dryrun \ No newline at end of file From 5cae3faccbc5c0b6d2edd8ad1700a997f3a25fe9 Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 10:57:34 -0600 Subject: [PATCH 05/11] fix action name --- .github/workflows/prod-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index c7bf08b5..029ccbf2 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -1,4 +1,4 @@ -name: Test Electron App Production Build +name: Test NPM Production Build on: # Runs on pushes targeting the default branch From 6db0e88b68db00c27d0161476666709677075076 Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 11:08:56 -0600 Subject: [PATCH 06/11] switch to concurrent jobs --- .github/workflows/build-test.yml | 49 ++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 8c8ab247..271695dc 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -8,11 +8,8 @@ on: jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + build-ubuntu: + runs-on: "ubuntu-latest" steps: - name: Checkout code @@ -32,3 +29,45 @@ jobs: run: npm run build + build-macos: + runs-on: "macos-latest" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm install + + - name: Build Electron app + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + run: npm run build + + build-windows: + runs-on: "windows-latest" + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Install dependencies + run: npm install + + - name: Build Electron app + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + run: npm run build + + + From eabbd39f57b8f432451f16d6a76893242df58196 Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 11:09:12 -0600 Subject: [PATCH 07/11] fix arg passing to dryrun --- .github/workflows/prod-test.yml | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/prod-test.yml b/.github/workflows/prod-test.yml index 029ccbf2..28093deb 100644 --- a/.github/workflows/prod-test.yml +++ b/.github/workflows/prod-test.yml @@ -24,4 +24,4 @@ jobs: run: npm run setup - name: dry run production build - run: npm run prod --dryrun \ No newline at end of file + run: npm run prod-dryrun \ No newline at end of file diff --git a/package.json b/package.json index 3dfb17e4..c7076ba9 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "setup": "npm i && cd mods && npm i", "dev": "gs-app-server --debug", "prod": "gs-app-server", + "prod-dryrun": "gs-app-server --dryrun", "start": "npm run prebuild && electron .", "start-dev": "npm run prebuild && electron . --devel", "start-dbg": "npm run prebuild && electron . --debugg", From 35bbbd9cbfa7c9240e16d1d94824c20a3991e68f Mon Sep 17 00:00:00 2001 From: bakedpotatolord Date: Sat, 3 May 2025 11:34:20 -0600 Subject: [PATCH 08/11] delete macOS build job --- .github/workflows/build-test.yml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 271695dc..75132889 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -27,27 +27,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} run: npm run build - - - build-macos: - runs-on: "macos-latest" - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - - name: Install dependencies - run: npm install - - - name: Build Electron app - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - run: npm run build build-windows: runs-on: "windows-latest" From 76d90987f8515701fa81478a2809e821e62f0ad9 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 3 May 2025 14:34:41 -0400 Subject: [PATCH 09/11] add drag/drop sending of files to bambu printers --- mods/bambu/bambu.js | 57 ++++++++++++++++++++++++++++++++++++++++++--- mods/bambu/init.js | 10 +++++--- package.json | 4 ++-- web/kiri/index.css | 17 ++++++++++++++ 4 files changed, 80 insertions(+), 8 deletions(-) diff --git a/mods/bambu/bambu.js b/mods/bambu/bambu.js index 6ff97b21..863fc1cc 100644 --- a/mods/bambu/bambu.js +++ b/mods/bambu/bambu.js @@ -126,7 +126,12 @@ self.kiri.load(api => { }, drain() { while (socket.open && socket.q.length) { - socket.ws.send(JSON.stringify(socket.q.shift())); + let data = socket.q.shift(); + if (data instanceof ArrayBuffer) { + socket.ws.send(data); + } else { + socket.ws.send(JSON.stringify(data)); + } } }, send(msg) { @@ -614,6 +619,16 @@ self.kiri.load(api => { } } + function file_send(file, data) { + if (selected?.rec?.host) { + let { rec } = selected; + host = rec.host; + serial = rec.serial; + password = rec.code; + send(file.name, data, false); + } + } + function calcFG(bg) { let r = parseInt(bg.substring(0, 2), 16); let g = parseInt(bg.substring(2, 4), 16); @@ -1007,7 +1022,7 @@ self.kiri.load(api => { ]) ]), - h.div({ class: "t-body t-inset f-col gap3 pad4 grow" }, [ + h.div({ id: "bbl_drop", class: "t-body t-inset f-col gap3 pad4 grow" }, [ h.div({ class: "set-header", onclick() { file_list(); } }, h.a({ class: "flex f-row grow a-center" }, [ @@ -1050,7 +1065,10 @@ self.kiri.load(api => { file_print(selected.file.path); api.alerts.show(`printing: ${selected.file.path}`,2); }}), - ]) + ]), + h.div({ id: "bbl_drop_zone", class: "full hide allpe", style: "background-color: rgba(0,255,0,0.75); font-weight: bold" }, [ + h.label('drop to upload') + ]), ]), h.div({ class: "t-body t-inset f-col gap3 pad4" }, [ h.label({ class: "set-header dev-sel" }, [ @@ -1122,6 +1140,38 @@ self.kiri.load(api => { $('bbl_file_delete').disabled = $('bbl_file_print').disabled = false; }); + let drop = modal.bbl_drop; + let drop_zone = modal.bbl_drop_zone; + let drop_timer; + drop.ondragenter = (ev) => { + drop.classList.add('nope'); + drop_zone.classList.remove('hide'); + clearTimeout(drop_timer); + }; + drop_zone.ondragleave = (ev) => { + clearTimeout(drop_timer); + drop_timer = setTimeout(() => { + drop.classList.remove('nope'); + drop_zone.classList.add('hide'); + }, 50); + }; + drop_zone.ondrop = (ev) => { + drop.classList.remove('nope'); + drop_zone.classList.add('hide'); + ev.preventDefault(); + ev.stopPropagation(); + let files = ev.dataTransfer.files; + console.log('filedrop', files); + for (let file of files) { + let reader = new FileReader(); + // reader.file = file; + reader.onloadend = (ev) => { + let data = ev.target.result; + file_send(file, data); + }; + reader.readAsArrayBuffer(file); + } + }; }); api.event.on("modal.show", which => { @@ -1251,6 +1301,7 @@ self.kiri.load(api => { console.log('Bambu Send', res); if (res.sent) { api.alerts.show('File Sent', 3); + file_list(); } else { api.alerts.show('File Send Error', 3); } diff --git a/mods/bambu/init.js b/mods/bambu/init.js index 25020120..370554c6 100644 --- a/mods/bambu/init.js +++ b/mods/bambu/init.js @@ -349,9 +349,13 @@ module.exports = async (server) => { wsopen.push(ws); debug && util.log('ws open', req.url, wsopen.length); wsend({ found }); - ws.on('message', msg => { - msg = JSON.parse(msg); - let { cmd, host, code, serial, path, amsmap, direct, frames } = msg; + let binaryData; + ws.on('message', (msg, isBinary) => { + if (isBinary) { + return binaryData = msg; + } + msg = isBinary ? msg : JSON.parse(msg.toString()); + let { cmd, host, code, serial, path, amsmap, direct, frames, file, data } = msg; switch (cmd) { case "monitor": get_mqtt(host, code, serial, message => { diff --git a/package.json b/package.json index 3dfb17e4..747de1a0 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "dependencies": { "@fortawesome/fontawesome-free": "^6.1.1", - "@gridspace/app-server": "^0.0.15", + "@gridspace/app-server": "^0.0.16", "@gridspace/net-level-client": "^0.2.3", "@tracespace/parser": "^5.0.0-next.0", "@tweenjs/tween.js": "^16.6.0", @@ -55,7 +55,7 @@ "three-mesh-bvh": "^0.7.6", "uglify-js": "3.14.5", "validator": ">=13.7.0", - "ws": "^7.5.5" + "ws": "^8.18.2" }, "devDependencies": { "@electron/notarize": "^3.0.0", diff --git a/web/kiri/index.css b/web/kiri/index.css index 65c51cd2..a35f0b7f 100644 --- a/web/kiri/index.css +++ b/web/kiri/index.css @@ -646,6 +646,23 @@ details[open] summary::after { .contents { display: contents; } +.full { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.nope, .nope * { + pointer-events: none; +} +.allpe { + pointer-events: auto !important; +} .hide { display: none !important; } From afeea841d607df5a760a9ab94cb8f62d4810c1c9 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Sat, 3 May 2025 16:29:03 -0400 Subject: [PATCH 10/11] limit bbl file drops to actively monitored printers --- mods/bambu/bambu.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mods/bambu/bambu.js b/mods/bambu/bambu.js index 863fc1cc..5d182528 100644 --- a/mods/bambu/bambu.js +++ b/mods/bambu/bambu.js @@ -1144,6 +1144,9 @@ self.kiri.load(api => { let drop_zone = modal.bbl_drop_zone; let drop_timer; drop.ondragenter = (ev) => { + if (!selected?.rec?.serial) { + return; + } drop.classList.add('nope'); drop_zone.classList.remove('hide'); clearTimeout(drop_timer); From d2f201eae9d25b0e0bdf3a870df30f7182198eb2 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 6 May 2025 20:18:43 -0400 Subject: [PATCH 11/11] bump rev 4.1.7 --- package.json | 2 +- src/moto/license.js | 2 +- web/kiri/manifest.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1763b65a..a09a9fab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "grid-apps", - "version": "4.1.6", + "version": "4.1.7", "description": "grid.space 3d slicing & modeling tools", "author": "Stewart Allen ", "license": "MIT", diff --git a/src/moto/license.js b/src/moto/license.js index 9d24a228..05f7cb15 100644 --- a/src/moto/license.js +++ b/src/moto/license.js @@ -5,7 +5,7 @@ let terms = { COPYRIGHT: "Copyright (C) Stewart Allen - All Rights Reserved", LICENSE: "See the license.md file included with the source distribution", - VERSION: (is_self ? self : this).debug_version || "4.1.6" + VERSION: (is_self ? self : this).debug_version || "4.1.7" }; if (typeof(module) === 'object') { diff --git a/web/kiri/manifest.json b/web/kiri/manifest.json index 4c762d51..84bfb412 100644 --- a/web/kiri/manifest.json +++ b/web/kiri/manifest.json @@ -1,5 +1,5 @@ { - "name": "Kiri:Moto 4.1.6", + "name": "Kiri:Moto 4.1.7", "short_name": "Kiri:Moto", "description": "Slicer for 3D printers, CNC mills, laser cutters and more", "start_url": "/kiri/",