1
0

Add support for older devices (Libra 2 and newer)

This commit is contained in:
2026-03-26 13:32:38 +01:00
parent 61aed3f13c
commit 8d67346f80
5 changed files with 76 additions and 7 deletions

View File

@@ -95,6 +95,12 @@ jobs:
if: steps.check-e2e.outputs.run == 'true' && env.GITEA_ACTIONS != 'true'
run: readerly/setup.sh
- name: Validate download URLs
if: steps.check-e2e.outputs.run == 'true' && env.GITEA_ACTIONS != 'true'
run: |
cd tests
./validate-dl-urls.sh
- name: Full integration test (Playwright)
if: steps.check-e2e.outputs.run == 'true' && env.GITEA_ACTIONS != 'true'
run: |

38
tests/validate-dl-urls.sh Executable file
View File

@@ -0,0 +1,38 @@
#!/bin/bash
set -euo pipefail
# Validate all firmware download URLs in downloads.json via HEAD requests.
# Exits with code 1 if any URL is invalid.
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)/../web/src/patches"
DOWNLOADS="$SCRIPT_DIR/downloads.json"
# Extract unique URLs (skip keys starting with _).
URLS=$(node -e "
const d = require('$DOWNLOADS');
const seen = new Set();
for (const [key, val] of Object.entries(d)) {
if (key.startsWith('_') || typeof val !== 'object') continue;
for (const url of Object.values(val)) {
if (!seen.has(url)) { seen.add(url); console.log(url); }
}
}
")
FAILED=0
TOTAL=0
while IFS= read -r url; do
TOTAL=$((TOTAL + 1))
STATUS=$(curl -s -o /dev/null -w "%{http_code}" --head "$url")
if [ "$STATUS" -ge 200 ] && [ "$STATUS" -lt 400 ]; then
echo " OK $STATUS $url"
else
echo "FAIL $STATUS $url"
FAILED=$((FAILED + 1))
fi
done <<< "$URLS"
echo ""
echo "$TOTAL URLs checked, $FAILED failed."
[ "$FAILED" -eq 0 ]

View File

@@ -133,6 +133,7 @@
<!-- Step 1b (manual): Select device model + firmware for custom patches -->
<section id="step-manual-version" class="step" hidden>
<p>Since you have chosen not to connect your device, you will need to look up some information related to the device you want to patch.</p>
<p class="fallback-hint">
<strong>Select the version number currently installed on your device.</strong> If it does not appear in this list, your software version is not supported for custom patching. You can go back and choose NickelMenu instead, which works with all versions.
</p>
@@ -140,13 +141,13 @@
<option value="">-- Select software version --</option>
</select>
<p id="manual-version-hint" class="fallback-hint">
You can find the version number on your Kobo under <strong>More &gt; Settings &gt; Device information</strong> &gt; <strong>Software version</strong>.
You can find the version number on your Kobo under <strong>More &gt; Settings &gt; Device information</strong> &gt; <strong>Software version</strong>. Make sure it's a complete match, or you may encounter issues!
</p>
<select id="manual-model" aria-label="Kobo model" hidden>
<option value="">-- Select your Kobo model --</option>
</select>
<p id="manual-model-hint" class="fallback-hint" hidden>
Match the first characters of your serial number (e.g. N428) to the list above. You can find it under <strong>More &gt; Settings &gt; Device information</strong>.
Match the first characters of your serial number (e.g. N428) to the list above. You can find it under <strong>More &gt; Settings &gt; Device information</strong>. Keep in mind that older devices (released prior to Kobo Libra 2) are not supported by this website at this time, but you may be able to patch them manually.
</p>
<div class="step-actions" style="margin-top: 25px">
<button id="btn-manual-version-back" class="secondary">&#x2039; Back</button>

View File

@@ -1,9 +1,29 @@
{
"_source": "https://help.kobo.com/hc/en-us/articles/35059171032727-Manually-Updating-your-Kobo-eReader-device-Firmware",
"_sources": [
"https://pgaskin.net/KoboStuff/kobofirmware.html",
"https://help.kobo.com/hc/en-us/articles/35059171032727-Manually-Updating-your-Kobo-eReader-device-Firmware"
],
"4.45.23646": {
"N428": "https://ereaderfiles.kobo.com/firmwares/kobo12/Mar2026/kobo-update-4.45.23646.zip",
"N365": "https://ereaderfiles.kobo.com/firmwares/kobo13/Mar2026/kobo-update-4.45.23646.zip",
"N367": "https://ereaderfiles.kobo.com/firmwares/kobo13/Mar2026/kobo-update-4.45.23646.zip",
"P365": "https://ereaderfiles.kobo.com/firmwares/kobo14/Mar2026/kobo-update-4.45.23646.zip"
},
"4.38.23648": {
"N418": "https://ereaderfiles.kobo.com/firmwares/kobo9/Mar2026/kobo-update-4.38.23648.zip"
},
"4.38.23552": {
"N778": "https://ereaderfiles.kobo.com/firmwares/kobo8/Nov2025/kobo-update-4.38.23552.zip",
"N604": "https://ereaderfiles.kobo.com/firmwares/kobo8/Nov2025/kobo-update-4.38.23552.zip",
"N418": "https://ereaderfiles.kobo.com/firmwares/kobo9/Nov2025/kobo-update-4.38.23552.zip",
"N506": "https://ereaderfiles.kobo.com/firmwares/kobo10/Nov2025/kobo-update-4.38.23552.zip",
"N605": "https://ereaderfiles.kobo.com/firmwares/kobo11/Nov2025/kobo-update-4.38.23552.zip"
},
"4.38.23429": {
"N778": "https://ereaderfiles.kobo.com/firmwares/kobo8/Aug2025/kobo-update-4.38.23429.zip",
"N604": "https://ereaderfiles.kobo.com/firmwares/kobo8/Aug2025/kobo-update-4.38.23429.zip",
"N418": "https://ereaderfiles.kobo.com/firmwares/kobo9/Aug2025/kobo-update-4.38.23429.zip",
"N506": "https://ereaderfiles.kobo.com/firmwares/kobo10/Aug2025/kobo-update-4.38.23429.zip",
"N605": "https://ereaderfiles.kobo.com/firmwares/kobo11/Aug2025/kobo-update-4.38.23429.zip"
}
}

View File

@@ -1,12 +1,16 @@
[
{
"filename": "patches_4.45.zip",
"versions": ["4.45.23646"],
"date": "03-2026"
"versions": [
"4.45.23646"
]
},
{
"filename": "patches_4.38.zip",
"versions": [],
"date": "08-2025"
"versions": [
"4.38.23648",
"4.38.23552",
"4.38.23429"
]
}
]