From 3b5faf9696b16de9198cc63e9e35691bb9204a20 Mon Sep 17 00:00:00 2001 From: Nico Verbruggen Date: Mon, 16 Mar 2026 14:21:21 +0100 Subject: [PATCH] Add fourth install step --- README.md | 2 -- kobopatch-wasm/build.sh | 4 ++- screenshot.png | Bin 85533 -> 0 bytes web/public/app.js | 38 ++++++++++++++++++++------ web/public/index.html | 50 +++++++++++++++++++++++----------- web/public/patch-worker.js | 2 +- web/public/style.css | 54 +++++++++++++++++++++++++++++++++++++ 7 files changed, 123 insertions(+), 27 deletions(-) delete mode 100644 screenshot.png diff --git a/README.md b/README.md index 3eda3d2..91fd528 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,6 @@ A web application that provides a GUI for applying custom [kobopatch](https://github.com/pgaskin/kobopatch) patches to Kobo e-readers. It uses the File System Access API (Chromium) to interface with connected Kobo devices, or falls back to manual model/firmware selection on other browsers. -![A screenshot of the prototype of the web UI.](./screenshot.png) - The app makes it easy to configure which patches to apply, downloads the correct firmware from Kobo's servers, runs the patcher (compiled to WebAssembly), and places the resulting `KoboRoot.tgz` on the device. The user then reboots to apply. Fully client-side — no backend needed, can be hosted as a static site. Patches are community-contributed via [MobileRead](https://www.mobileread.com/) and need to be manually updated when new Kobo firmware versions come out. diff --git a/kobopatch-wasm/build.sh b/kobopatch-wasm/build.sh index 23494d5..4a56a70 100755 --- a/kobopatch-wasm/build.sh +++ b/kobopatch-wasm/build.sh @@ -23,8 +23,10 @@ echo "Copying artifacts to $PUBLIC_DIR..." cp kobopatch.wasm "$PUBLIC_DIR/kobopatch.wasm" cp wasm_exec.js "$PUBLIC_DIR/wasm_exec.js" -# Update the cache-busting timestamp in the worker +# Update cache-busting timestamps sed -i "s|kobopatch\.wasm?ts=[0-9]*|kobopatch.wasm?ts=$TS|g" "$PUBLIC_DIR/patch-worker.js" +sed -i "s|\.js?ts=[0-9]*|.js?ts=$TS|g" "$PUBLIC_DIR/index.html" +sed -i "s|\.css?ts=[0-9]*|.css?ts=$TS|g" "$PUBLIC_DIR/index.html" echo "Build timestamp: $TS" echo "Done." diff --git a/screenshot.png b/screenshot.png deleted file mode 100644 index 76f3a95a4a93fbf8c1dcab47585c622dcb9b9ea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85533 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 U6k-szNZc1H3YzjIvd`cA8!v~%?EnA( diff --git a/web/public/app.js b/web/public/app.js index f82e471..c744953 100644 --- a/web/public/app.js +++ b/web/public/app.js @@ -41,7 +41,8 @@ const deviceStatus = document.getElementById('device-status'); const patchContainer = document.getElementById('patch-container'); const buildStatus = document.getElementById('build-status'); - const writeSuccess = document.getElementById('write-success'); + const writeInstructions = document.getElementById('write-instructions'); + const downloadInstructions = document.getElementById('download-instructions'); const firmwareVersionLabel = document.getElementById('firmware-version-label'); const firmwareDeviceLabel = document.getElementById('firmware-device-label'); const patchCountHint = document.getElementById('patch-count-hint'); @@ -306,7 +307,6 @@ } btnBuild.addEventListener('click', async () => { - hideNav(); showStep(stepBuilding); buildLog.textContent = ''; buildProgress.textContent = 'Starting...'; @@ -337,32 +337,52 @@ buildStatus.textContent = 'Patching complete. KoboRoot.tgz is ' + (resultTgz.length / 1024).toFixed(0) + ' KB.'; - writeSuccess.hidden = true; const doneLog = document.getElementById('done-log'); doneLog.textContent = buildLog.textContent; - doneLog.scrollTop = doneLog.scrollHeight; + // Reset install step state. btnWrite.hidden = manualMode; - hideNav(); + btnWrite.disabled = false; + btnWrite.className = 'primary'; + btnWrite.textContent = 'Write to Kobo'; + btnDownload.disabled = false; + writeInstructions.hidden = true; + downloadInstructions.hidden = true; + + setNavStep(4); showStep(stepDone); + + // Scroll log to bottom after the step becomes visible. + requestAnimationFrame(() => { + doneLog.scrollTop = doneLog.scrollHeight; + }); } catch (err) { showError('Build failed: ' + err.message, buildLog.textContent); } }); - // --- Done step --- + // --- Install step --- btnWrite.addEventListener('click', async () => { if (!resultTgz || !device.directoryHandle) return; + btnWrite.disabled = true; + btnWrite.textContent = 'Writing...'; + downloadInstructions.hidden = true; + try { const koboDir = await device.directoryHandle.getDirectoryHandle('.kobo'); const fileHandle = await koboDir.getFileHandle('KoboRoot.tgz', { create: true }); const writable = await fileHandle.createWritable(); await writable.write(resultTgz); await writable.close(); - writeSuccess.hidden = false; + + btnWrite.textContent = 'Written'; + btnWrite.className = 'btn-success'; + writeInstructions.hidden = false; } catch (err) { + btnWrite.disabled = false; + btnWrite.textContent = 'Write to Kobo'; showError('Failed to write KoboRoot.tgz: ' + err.message); } }); @@ -376,6 +396,9 @@ a.download = 'KoboRoot.tgz'; a.click(); URL.revokeObjectURL(url); + + writeInstructions.hidden = true; + downloadInstructions.hidden = false; }); // --- Error / Retry --- @@ -398,7 +421,6 @@ manualMode = false; selectedPrefix = null; patchesLoaded = false; - btnWrite.hidden = false; btnDeviceNext.hidden = false; if (hasFileSystemAccess) { diff --git a/web/public/index.html b/web/public/index.html index 2288268..f410abc 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -4,7 +4,7 @@ KoboPatch Web UI - + @@ -20,11 +20,17 @@

  • Device
  • Patches
  • Build
  • +
  • Install