Commit Graph
195 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 7c6e4728f4 Add swedish keyboard translations (#1726) 2026-04-23 09:42:01 +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 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 2d6898362b Update Turkish 2026-04-16 14:59:36 +02:00
jpirnay 241f966b7e Update languages 2026-04-16 14:45:05 +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 f7bf43d39b Update slovenian 2026-04-15 09:12:13 +02:00
jpirnay 8f898fc32b Update languages 2026-04-14 19:08:09 +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 e0afe7de98 Some more languages 2026-04-14 14:58:11 +02:00
jpirnay f7db9f9d58 Update German 2026-04-14 14:52:15 +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 d2b13e7a43 Remove duplicate keys 2026-04-12 22:19:10 +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 0d0d7373d3 Fix russian 2026-04-08 10:58:06 +02:00
Andrei Ignatev 27e246cb22 fix: correct Russian auto-turn translations (#1566)
* **What is the goal of this PR?**
Fix inaccurate Russian UI text for the reader auto-turn feature and make
the affected Russian labels consistent with how adjacent UI strings are
formatted.

* **What changes are included?**
Updated Russian translations in `lib/I18n/translations/russian.yaml`:
- changed `Auto Turn` text from wording that implied screen rotation to
wording that means automatic page turning
- adjusted a few Russian prefix/separator strings to include spacing
where the UI concatenates labels with dynamic values

| Before| After |
|--------|--------|
| <img width="480" height="800" alt="image"
src="https://github.com/user-attachments/assets/db416dd2-6174-4a46-bd3a-6f52d1cc01cb"
/>| <img width="480" height="800" alt="image"
src="https://github.com/user-attachments/assets/dd9055e0-d4f1-459d-bd40-60fc4970d458"
/>|

---

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? _**NO**_
2026-04-08 10:43:08 +02:00
Mirus 94c9f90e9f fix: Update Ukrainian translations for footnotes (issue 1409) (#1585)
## Summary

* **What is the goal of this PR?** 
Solve the issue
https://github.com/crosspoint-reader/crosspoint-reader/issues/1409
* **What changes are included?**
Updated translation for footnotes

## Additional Context

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks,
  specific areas to focus on).

---

### AI Usage

Did you use AI tools to help write this code? _**NO**_
2026-04-08 10:41:29 +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 94d62d6077 Update translations 2026-04-07 22:28:18 +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 4200714127 Update Italian 2026-04-06 19:07:33 +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