All checks were successful
Build & Test WASM / build-and-test (push) Successful in 1m42s
191 lines
9.9 KiB
HTML
191 lines
9.9 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>KoboPatch Web UI</title>
|
|
<link rel="stylesheet" href="style.css?ts=1773669670">
|
|
<script src="https://cdn.jsdelivr.net/npm/jszip@3/dist/jszip.min.js"></script>
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<header class="hero">
|
|
<h1>KoboPatch <span class="hero-accent">Web UI</span></h1>
|
|
<p class="subtitle">Custom patches for your Kobo e-reader</p>
|
|
</header>
|
|
|
|
<!-- Step indicator -->
|
|
<nav id="step-nav" class="step-nav" hidden>
|
|
<ol>
|
|
<li data-step="1" class="active">Device</li>
|
|
<li data-step="2">Patches</li>
|
|
<li data-step="3">Build</li>
|
|
<li data-step="4">Install</li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<!-- Step 1a: Connect device (automatic, Chromium only) -->
|
|
<section id="step-connect" class="step" hidden>
|
|
<div class="warning">
|
|
<b>Patching modifies system files on your Kobo, and <u>will void your warranty</u>.</b> This process allows for custom modifications to be applied, or undone. If something has gone wrong,
|
|
you may need to <a href="https://help.kobo.com/hc/en-us/articles/360017605314-Manual-reset-your-Kobo-Clara-HD-Kobo-Nia-Kobo-Elipsa-Kobo-Clara-2E-Kobo-Elipsa-2E" target="_blank">manually reset your device</a>.
|
|
</div>
|
|
<p>
|
|
Connect your Kobo e-reader via USB. It should appear as a removable drive.
|
|
Then click the button below and select the root of the Kobo drive.
|
|
</p>
|
|
<button id="btn-connect" class="primary">Select Kobo Drive</button>
|
|
<p class="fallback-hint">
|
|
Don't want to use Chrome?
|
|
<a href="#" id="btn-manual-from-auto">Select your firmware version manually</a> instead.
|
|
</p>
|
|
</section>
|
|
|
|
<!-- Step 1b (manual): Select device model + firmware -->
|
|
<section id="step-manual" class="step" hidden>
|
|
<div class="warning">
|
|
Patching modifies system files on your Kobo. If something goes wrong,
|
|
you may need to <a href="https://help.kobo.com/hc/en-us/articles/360017605314-Manual-reset-your-Kobo-Clara-HD-Kobo-Nia-Kobo-Elipsa-Kobo-Clara-2E-Kobo-Elipsa-2E" target="_blank">manually reset your device</a>.
|
|
Proceed with care.
|
|
</div>
|
|
<p id="manual-chrome-hint" class="info-banner" hidden>
|
|
Tip: if you use Chrome or Edge, this tool can auto-detect your device
|
|
and write patched files directly to it. Even easier, but sadly requires a Chromium based browser.
|
|
</p>
|
|
<p>Select your Kobo model and firmware version.
|
|
Not sure which model you have?
|
|
<a href="https://help.kobo.com/hc/en-us/articles/360019676973-Identify-your-Kobo-eReader-or-Kobo-tablet" target="_blank">Identify your Kobo eReader</a>.
|
|
</p>
|
|
<select id="manual-version">
|
|
<option value="">-- Select firmware version --</option>
|
|
</select>
|
|
<select id="manual-model" hidden>
|
|
<option value="">-- Select your Kobo model --</option>
|
|
</select>
|
|
<p id="manual-model-hint" class="fallback-hint" hidden>
|
|
You can identify your model by the serial number prefix shown on your Kobo
|
|
under <strong>Settings > Device information</strong>.
|
|
Match the first characters (e.g. N428) to the list above.
|
|
</p>
|
|
<button id="btn-manual-confirm" class="primary" disabled>Continue ›</button>
|
|
</section>
|
|
|
|
<!-- Step 1c: Device detected (auto mode info card) -->
|
|
<section id="step-device" class="step" hidden>
|
|
<div id="device-info" class="info-card">
|
|
<div class="info-row">
|
|
<span class="label">Model</span>
|
|
<span id="device-model" class="value">--</span>
|
|
</div>
|
|
<div class="info-row">
|
|
<span class="label">Serial</span>
|
|
<span id="device-serial" class="value">--</span>
|
|
</div>
|
|
<div class="info-row">
|
|
<span class="label">Firmware</span>
|
|
<span id="device-firmware" class="value">--</span>
|
|
</div>
|
|
</div>
|
|
<p id="device-status"></p>
|
|
<div class="step-actions">
|
|
<button id="btn-device-restore" class="secondary">Restore Unpatched Software</button>
|
|
<button id="btn-device-next" class="primary">Configure Patches ›</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Step 2: Configure patches -->
|
|
<section id="step-patches" class="step" hidden>
|
|
<p>Enable or disable patches below. Patches in the same group are mutually exclusive.</p>
|
|
<div id="patch-container" class="patch-container-scroll"></div>
|
|
<div class="step-actions">
|
|
<button id="btn-patches-back" class="secondary">‹ Back</button>
|
|
<button id="btn-patches-next" class="primary" disabled>Continue ›</button>
|
|
</div>
|
|
<p id="patch-count-hint" class="fallback-hint"></p>
|
|
</section>
|
|
|
|
<!-- Step 3: Review & Build -->
|
|
<section id="step-firmware" class="step" hidden>
|
|
<p id="firmware-auto-info">
|
|
Firmware <strong id="firmware-version-label"></strong> for
|
|
<strong id="firmware-device-label"></strong>
|
|
<span id="firmware-description">will be downloaded automatically from Kobo's servers and will be patched after the download completes:</span><br>
|
|
<code id="firmware-download-url"></code><br>
|
|
<span id="firmware-verify-notice">
|
|
You can verify if this URL matches your Kobo's model on
|
|
<a href="https://help.kobo.com/hc/en-us/articles/35059171032727" target="_blank">Kobo's support page</a>. The most important bit is that "koboXX" matches, for example "kobo13" for Kobo Libra Color.
|
|
</span>
|
|
</p>
|
|
<!--
|
|
<p id="firmware-manual-info" hidden>
|
|
No automatic download available for your device.
|
|
Please select the firmware zip file manually.
|
|
You can download it from
|
|
<a href="https://pgaskin.net/KoboStuff/kobofirmware.html" target="_blank">pgaskin.net</a>.
|
|
Make sure it matches firmware version <strong id="firmware-version-label-manual"></strong>.
|
|
</p>
|
|
<input type="file" id="firmware-input" accept=".zip" hidden>
|
|
-->
|
|
<div class="step-actions">
|
|
<button id="btn-build-back" class="secondary">‹ Back</button>
|
|
<button id="btn-build" class="primary">Build Patched Firmware</button>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Step 4: Building -->
|
|
<section id="step-building" class="step" hidden>
|
|
<div class="build-header">
|
|
<div class="spinner"></div>
|
|
<p id="build-progress">Starting...</p>
|
|
</div>
|
|
<pre id="build-log" class="build-log"></pre>
|
|
<p class="fallback-hint">Please wait while the patch is being applied...</p>
|
|
</section>
|
|
|
|
<!-- Step 5: Install -->
|
|
<section id="step-done" class="step" hidden>
|
|
<p id="build-status" class="install-summary"></p>
|
|
<div id="existing-tgz-warning" class="warning" hidden>
|
|
An existing KoboRoot.tgz file was found on your Kobo and has not been applied yet. It will be overwritten.
|
|
</div>
|
|
<details class="log-details">
|
|
<summary>Build log</summary>
|
|
<pre id="done-log" class="build-log done-log"></pre>
|
|
</details>
|
|
<div id="build-actions">
|
|
<button id="btn-write" class="primary">Write to Kobo</button>
|
|
<button id="btn-download" class="secondary">Download KoboRoot.tgz</button>
|
|
</div>
|
|
<div id="write-instructions" class="install-instructions" hidden>
|
|
<p class="hint">
|
|
KoboRoot.tgz has been written to your Kobo.
|
|
<strong>Safely eject</strong> the device before unplugging the USB cable — it will reboot and apply the patches automatically.
|
|
</p>
|
|
</div>
|
|
<div id="download-instructions" class="install-instructions" hidden>
|
|
<ol class="install-steps">
|
|
<li>Connect your Kobo via USB so it appears as a removable drive.</li>
|
|
<li>Copy <strong>KoboRoot.tgz</strong> into the <strong>.kobo</strong> folder on the Kobo drive.</li>
|
|
<li><strong>Safely eject</strong> the Kobo — do not just unplug the cable, as this can corrupt data.</li>
|
|
<li>The device will reboot and apply the patches automatically.</li>
|
|
</ol>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Error state -->
|
|
<section id="step-error" class="step" hidden>
|
|
<h2>Something went wrong</h2>
|
|
<p id="error-message" class="error"></p>
|
|
<pre id="error-log" class="error-log" hidden></pre>
|
|
<button id="btn-retry" class="secondary">Start Over</button>
|
|
</section>
|
|
</main>
|
|
|
|
<!-- wasm_exec.js loaded by patch-worker.js inside the Web Worker -->
|
|
<script src="kobo-device.js?ts=1773669670"></script>
|
|
<script src="kobopatch.js?ts=1773669670"></script>
|
|
<script src="patch-ui.js?ts=1773669670"></script>
|
|
<script src="app.js?ts=1773669670"></script>
|
|
</body>
|
|
</html>
|