Commit Graph
87 Commits
Author SHA1 Message Date
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 b7928a86e3 Add hotel Wifi connection 2026-04-21 17:15:56 +02:00
jpirnay 425c1db132 Review comments 2026-04-20 21:16:31 +02:00
jpirnay a00712a085 Adjust warnings for x3 2026-04-20 20:50:33 +02:00
jpirnay 47b46a24b9 Use common activity pattern 2026-04-16 14:20:35 +02:00
jpirnay 3f1b9d0964 Refactor visual appearance of SystemInformation 2026-04-16 11:57:40 +02:00
jpirnay 5879ef8778 Add instructions 2026-04-15 18:52:02 +02:00
jpirnay 2f4cea3706 Add Global Bookmark feature 2026-04-15 09:32:52 +02:00
jpirnay f9f856f961 Extending 2026-04-14 18:23:10 +02:00
jpirnay 4aabcc934c Integrate and extend pr 1372 by andreaturchet 2026-04-14 18:22:54 +02:00
jpirnay b008baf8aa Paginate through bookinfo if required 2026-04-14 14:28:02 +02:00
jpirnay b39c4710d2 Integrate upstream 1626 + 1658 2026-04-14 10:00:46 +02:00
jpirnay 04af4e3853 Merge pull request #66 from jpirnay/feat-kbd
refactor: redesign on-screen keyboard (Upstream #1644 by pablohc) + pwd show/hide toggle
2026-04-12 23:41:54 +02:00
jpirnay 5f82a28ac6 Slight layout changes 2026-04-12 23:32:19 +02:00
jpirnay 1feb65ff70 Merge pull request #65 from jpirnay/feat-opds
feat: Add OPDS search support & next/prev page navigation (upstream #1462)
2026-04-12 23:13:15 +02:00
jpirnay cf3ab19c77 add OPDS search support & next/prev page navigation (upstream #1462) 2026-04-12 22:49:33 +02:00
jpirnay bec30e3403 Review fixes 2026-04-12 22:25:12 +02:00
jpirnay f4107677f8 Reformat kosync settings 2026-04-12 21:48:25 +02:00
jpirnay df3fec574d Add submenus 2026-04-12 14:21:48 +02:00
jpirnay 7feff4e241 Step 3 2026-04-12 06:49:28 +02:00
jpirnay c6094dce22 Strart with System settings 2026-04-12 06:12:27 +02:00
jpirnay d37621574c Redesign web server to avoid lengthy system stats retrieval 2026-04-11 08:28:06 +02:00
jpirnay 83bc8b41a4 Revert "More reshaping"
This reverts commit 14dcd8be0f.
2026-04-09 22:49:02 +02:00
jpirnay 14dcd8be0f More reshaping 2026-04-09 21:50:32 +02:00
jpirnay 5f4c5550e8 Restructure reader menu 2026-04-09 16:49:55 +02:00
jpirnay 32d44eb158 Review changes 2026-04-09 13:33:20 +02:00
jpirnay 82a32f9f46 Show SD-card info only if requested 2026-04-09 12:58:19 +02:00
jpirnay 72a2a91550 Add UI support for darkness levels 2026-04-08 19:24:17 +02:00
jpirnay 66508258d3 Extended bitmap viewer by option to togglie between grayscale and bw mode 2026-04-08 09:37:08 +02:00
jpirnay 6dd905fb5a Split menu actions for smaller footprint 2026-04-07 21:39:03 +02:00
jpirnay 93669ff492 Treat .sleep and sleep as equal 2026-04-07 10:13:02 +02:00
jpirnay c0797b385a Show file extensions in browser (user option) 2026-04-06 19:34:08 +02:00
jpirnay 7d818c4915 Update languages 2026-04-06 19:01:23 +02:00
jpirnay eb95cacad4 Add dithering algorithms 2026-04-06 13:00:27 +02:00
jpirnay 4ff9a10de1 Amend back button handling, add "use as sleep screen" feature 2026-04-06 10:34:48 +02:00
jpirnay 52d88c820e Add sun and moon info 2026-04-03 18:14:19 +02:00
jpirnay 783828adb0 Merge branch 'feat-weather' of https://github.com/jpirnay/crosspoint-reader into mybuild 2026-04-02 20:19:43 +02:00
jpirnay 3f0e272b44 Add month translations 2026-04-02 20:07:27 +02:00
jpirnay a4a0e6b5dc Merge branch 'feat-weather' of https://github.com/jpirnay/crosspoint-reader into mybuild 2026-04-02 18:37:55 +02:00
jpirnay 049a63a8c1 Add proper weather forecast screen 2026-04-02 17:17:50 +02:00
jpirnay 9fb03ae237 Initial scaffold 2026-04-02 11:23:01 +02:00
jpirnay f764d9c6a0 Merge remote-tracking branch 'pablohc/refactor/pr-1258-cover-overlay' into mybuild
# Conflicts:
#	lib/I18n/translations/english.yaml
#	scripts/gen_i18n.py
#	src/CrossPointSettings.h
#	src/SettingsList.h
#	src/activities/boot_sleep/SleepActivity.cpp
#	src/activities/boot_sleep/SleepActivity.h
2026-03-30 16:12:00 +02:00
pablohc 81d992d254 fix: add 'read' suffix to chapter page overlay format 2026-03-29 22:39:13 +02:00
pablohc 0f1d3ef31d fix: localize sleep overlay strings, validate TXT cache header, migrate overlay enum 2026-03-29 21:55:51 +02:00
pablohc 389ed7266b Refactor sleep cover overlay: BookOverlayInfo struct, multi-line layout, 4 color modes (White/Gray/Black/Off) 2026-03-29 20:51:56 +02:00
jpirnay 0bdfc6e816 Merge branch 'feat-additional-compensation' of https://github.com/jpirnay/crosspoint-reader into mybuild 2026-03-29 18:35:36 +02:00
jpirnay c71fb8c6af Merge branch 'feat-invalid-toc-fallback' of https://github.com/jpirnay/crosspoint-reader into mybuild 2026-03-27 17:29:45 +01:00
jpirnay 3f8a87e907 Deal with invalid/incomplete toc.ncx files 2026-03-27 16:40:34 +01:00
jpirnay dea0503040 Add sleep screen information overlay 2026-03-24 09:46:54 +01:00
jpirnay cc46225f22 Merge branch 'feat-remove-from-recents' of https://github.com/jpirnay/crosspoint-reader into mybuild 2026-03-23 21:43:06 +01:00