Commit Graph
1432 Commits
Author SHA1 Message Date
jpirnayandCopilot 88bfb8a76a Update workflow
Co-authored-by: Copilot <copilot@github.com>
2026-04-23 22:32:39 +02:00
jpirnay e299318851 Merge pull request #122 from jpirnay/integrate-pr-1209
feat: multiple opds server support (upstream 1209 by osteotek)
2026-04-23 19:51:34 +02:00
jpirnay a2f31f06e7 adress cppcheck complaint 2026-04-23 19:45:38 +02:00
jpirnay 6053ef4756 Review comments 2026-04-23 17:08:08 +02:00
jpirnay 9621dc1181 Cleanup startup 2026-04-23 16:44:27 +02:00
jpirnay 1d4748d20c Merge pull request #123 from jpirnay/fix-indexing-on-toc-pagebreak
fix: Fix reindexing loop on toc-page-break
2026-04-23 16:34:07 +02:00
jpirnay e0e3bd4251 Fix reindexing on toc-page-break 2026-04-23 13:15:30 +02:00
jpirnay 42fa3a4ac8 clang 2026-04-23 12:19:55 +02:00
Arthur TazhitdinovandCopilot c867669560 feat: Support for multiple OPDS servers (#1209)
* Add support for configuring and using multiple OPDS servers, replacing
the previous single-server limitation. Closes
https://github.com/crosspoint-reader/crosspoint-reader/issues/1178
* New OpdsServerStore singleton (modeled after WifiCredentialStore) that
persists up to 8 OPDS servers to /.crosspoint/opds.json with MAC-based
password obfuscation.
* One-time migration from legacy single-server fields in
CrossPointSettings to the new store on first boot.
* New OpdsServerListActivity for the device UI — works in two modes: a
settings list (add/edit/delete servers) and a picker (select which
server to browse). When only one server is configured, the picker is
skipped automatically.
* Renamed CalibreSettingsActivity → OpdsSettingsActivity for clarity. It
now edits individual OpdsServer entries (name, URL, username, password,
delete).
* OpdsBookBrowserActivity now receives an OpdsServer at construction and
uses its credentials for all fetches/downloads, and shows the server
name in the header.
* HttpDownloader::fetchUrl and downloadToFile accept optional per-call
username/password parameters instead of reading from global settings.
* REST API endpoints on CrossPointWebServer: GET /api/opds, POST
/api/opds, POST /api/opds/delete — passwords are never exposed over the
API (only a hasPassword flag), and omitting the password field on update
preserves the existing one.
* Web UI (SettingsPage.html) with dynamic OPDS server management cards —
add, edit, save, and delete servers from the browser.
<img width="932" height="906" alt="SCR-20260416-stvu"
src="https://github.com/user-attachments/assets/a8f18d84-4204-46a0-bb31-b73d24b3255f"
/>

* The OpdsServerStore JSON format and obfuscation scheme are identical
to WifiCredentialStore, so the same JsonSettingsIO infrastructure
handles both.
* The web API uses POST /api/opds/delete instead of DELETE /api/opds
because the ESP32 WebServer doesn't support the DELETE method with a
request body.
* Existing single-server configurations are migrated automatically — no
user action required. After migration the legacy CrossPointSettings
fields are cleared so it only runs once.
* The HttpDownloader changes are backward-compatible: the credential
parameters default to empty strings, so existing callers are unaffected.

---

While CrossPoint doesn't have restrictions on AI tools in contributing,
please be transparent about their usage as it
helps set the right context for reviewers.

Did you use AI tools to help write this code? _**< YES >**_

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-23 11:14:50 +02:00
jpirnay d9d6e32359 git pre-commit hook for format fix (#1730) - ux only 2026-04-23 09:47:40 +02:00
jpirnay 7c6e4728f4 Add swedish keyboard translations (#1726) 2026-04-23 09:42:01 +02:00
jpirnay 700d7b442b fix: Erroneous navigation with long filenames in footnote links (#1723) 2026-04-23 09:39:58 +02:00
jpirnay 0d68162a07 show long branch names (#1727) 2026-04-23 09:33:50 +02:00
jpirnay 8ff8418441 pluralize folder/file counts correctly in file list summary (#1701) 2026-04-23 09:30:50 +02:00
jpirnay 4981086a1d Update html title strings according to #1703 2026-04-23 09:29:28 +02:00
jpirnay e5e825e7a5 Update Italian according to #1718 2026-04-23 09:25:50 +02:00
jpirnay 9116070335 Update Spanish according to upstream #1717 2026-04-23 09:24:39 +02:00
jpirnay 62e271ac8f Merge pull request #119 from jpirnay/refactor-kosynchelper
refactor: Introduction of small helper routines
2026-04-22 07:37:14 +02:00
jpirnay e30b7a551a Introduction of small helper routines 2026-04-22 07:18:28 +02:00
jpirnay 8c72efb3b9 Reset version info 2026-04-22 07:04:31 +02:00
jpirnay 192eeaddc5 Merge pull request #118 from jpirnay/fix-ota-updater
feat: Try to support CaptivePortals
2026-04-22 06:52:32 +02:00
jpirnay 7da8b335ab Review comments 2026-04-21 22:16:23 +02:00
jpirnay 157a19ff35 Address cppcheck issue 2026-04-21 22:04:07 +02:00
jpirnay 4efbc035ba Try resetting the version info 2026-04-21 21:47:30 +02:00
jpirnay f6f18dcf15 Write directly 2026-04-21 18:27:59 +02:00
jpirnay df171560db Fix firmware download 2026-04-21 17:16:19 +02:00
jpirnay b7928a86e3 Add hotel Wifi connection 2026-04-21 17:15:56 +02:00
jpirnay d4c475470b Allow cancellation of download, dont block the device 2026-04-21 14:26:21 +02:00
jpirnay 9b27564931 Merge pull request #115 from jpirnay/fix-halclock
fix: Add additional time zones
2026-04-20 21:24:50 +02:00
jpirnay 425c1db132 Review comments 2026-04-20 21:16:31 +02:00
jpirnay 3a4923c8d5 yaclf 2026-04-20 21:00:20 +02:00
jpirnay a00712a085 Adjust warnings for x3 2026-04-20 20:50:33 +02:00
jpirnay a6aed8d30e Add additional timezones 2026-04-20 20:40:38 +02:00
jpirnay 02ddce1301 Merge pull request #114 from jpirnay/refactor-utf8-kosync
refactor: embrace utf8-counting helpers
2026-04-20 20:32:04 +02:00
jpirnay 966ba71a90 Embrace utf8-counting helpers 2026-04-20 20:16:40 +02:00
jpirnay 930b38fbaa Merge pull request #113 from jpirnay/fix-x3-boot
fix: x3 boot issue regression (#102)
2026-04-20 18:19:13 +02:00
jpirnay 5b31d49036 One more safety net 2026-04-20 17:42:27 +02:00
jpirnay 14975379cd Add wstring to test shims 2026-04-20 17:40:31 +02:00
jpirnay 9f95567212 Fix x3 boot issue 2026-04-20 17:33:46 +02:00
jpirnay a7638bb7d3 Merge pull request #87 from jgoguen/opds-multi-format-select
feat(opds): Allow selecting the download format
2026-04-20 14:26:00 +02:00
jpirnay 83fe041a6b Merge pull request #109 from jpirnay/kosync_extension
refactor: Picking up some itsthisjustin ideas for KOreader synchronisation
2026-04-20 14:21:31 +02:00
jpirnay 440d64e48e Nitpick comments 2026-04-20 14:16:13 +02:00
jpirnay 6f52aec95d Merge pull request #107 from jgoguen/fix-parser-not-freed
fix: free parser on error
2026-04-20 14:07:23 +02:00
jpirnay 3e2f80f8ca Merge pull request #105 from jgoguen/fix-parser-use-after-free
fix: harden OPDS parser cleanup after errors
2026-04-20 14:06:54 +02:00
jpirnay 36931aaa25 Merge pull request #108 from jpirnay/feature-webui-update
feat: webui update (integrate some ideas from upstream #1715 by pablohc)
2026-04-20 14:05:43 +02:00
jpirnay 29284c85c9 Review comments 2026-04-20 13:28:56 +02:00
jpirnay 3fb9ac9e29 Finetuning 2 2026-04-20 13:15:05 +02:00
jpirnay 5e4f78f7be Finetuning 2026-04-20 12:28:00 +02:00
jpirnay fd72941cd4 Treat body[1] properly 2026-04-20 11:53:46 +02:00
jpirnay 38e90a818b Make json field check more lenient 2026-04-20 11:39:21 +02:00