Commit Graph

278 Commits

Author SHA1 Message Date
Arthur Tazhitdinov
fc8bcbce4f script to embed hypher-generated .bin tries into constexpr headers 2026-01-09 22:41:55 +05:00
Arthur Tazhitdinov
163fae57ec hypher tries 2026-01-09 22:38:27 +05:00
Arthur Tazhitdinov
ac528bbf01
Merge branch 'daveallie:master' into hyphenation-v3 2026-01-09 21:00:21 +05:00
Arthur Tazhitdinov
18fb14271c clang format fix 2026-01-09 20:55:59 +05:00
Arthur Tazhitdinov
0b3e029484 switch to trie packed liang hyphenation dictionaries 2026-01-09 20:54:31 +05:00
Luke Stein
d4ae108d9b
Docs: Add instructions for file management via curl (#282)
Some checks failed
CI / build (push) Has been cancelled
Per a [reddit
thread](https://www.reddit.com/r/xteinkereader/comments/1q0fk9r/if_using_crosspoint_firmware_you_can_upload_using/),
the file manager can be accessed via curl.

Given file upload or deletion via curl may be useful for advanced users,
I've added instructions.
2026-01-09 08:58:58 +11:00
Jonas Diemer
7240cd52a9
Move battery status on home screen to top left (#253)
So it doesn't look so lost on a row on its own.

Also sligthly (1px) moved symbol in on reader view.
2026-01-09 08:57:50 +11:00
Arthur Tazhitdinov
c83fd37286 clang format fix 2026-01-08 15:40:17 +05:00
Arthur Tazhitdinov
3ef2448f72 optimization 2026-01-08 03:27:27 +05:00
Arthur Tazhitdinov
58314e9efd optimization 2026-01-08 03:01:36 +05:00
Arthur Tazhitdinov
34d2b81f40 Remove script method from hyphenator classes to streamline language-specific hyphenation logic 2026-01-08 02:42:24 +05:00
Arthur Tazhitdinov
8822e83394 clang format fix 2026-01-08 02:33:40 +05:00
Arthur Tazhitdinov
61d0e1cadf Add language support to Epub metadata and hyphenation logic 2026-01-08 02:32:52 +05:00
Arthur Tazhitdinov
4f94cf2c36 support for soft hyphens 2026-01-07 22:44:26 +05:00
Arthur Tazhitdinov
8cbf24d12f clang format fix 2026-01-07 20:43:22 +05:00
Arthur Tazhitdinov
f589c60690 Merge branch 'master' into hyphenation-v2 2026-01-07 20:42:53 +05:00
Arthur Tazhitdinov
8580277131 improve explicit hyphen breaking logic 2026-01-07 20:36:06 +05:00
Arthur Tazhitdinov
7e541b9f3b add comments 2026-01-07 20:25:34 +05:00
Dave Allie
0bae3bbf64
Support up to 500 character file names (#275)
Some checks failed
CI / build (push) Has been cancelled
## Summary

- Support up to 500 character file names

## Additional Context

- Fixes #265
2026-01-07 23:43:19 +11:00
Dave Allie
2b12a65011
Remove HTML entity parsing (#274)
## Summary

* Remove HTML entity parsing
  * This has been completely useless since the introduction of expat
* expat tries to parse all entities in the document, but only knows of
HTML ones
* Parsing will never end with HTML entities in the text, so the
additional step to parse them that we had went completely unused
* We should figure out the best way to parse that content in the future,
but for now remove that module as it generates a lot of heap allocations
with its map and strings
2026-01-07 23:08:43 +11:00
Dave Allie
46fa186b82
Make extension checks case-insensitive (#273)
## Summary

* Implement new `StringUtils::checkFileExtension` which does case
insensitive checking
* Move all checks over to this
2026-01-07 21:07:23 +11:00
Luke Stein
0cc2c64df2
Update User Guide to reflect release 0.12.0 (#269)
## Summary

* Update the User Guide per current firmware release.
* Make some formatting improvements including for readability and
consistency.
2026-01-07 20:28:32 +11:00
Stanislav Khromov
1f956e972b
Allow disabling anti-aliasing via a setting (#241)
## Summary

Fixes https://github.com/daveallie/crosspoint-reader/issues/233

## Additional Context

By disabling the Text Anti-Aliasing in the settings, you can get faster
black-and-white page turns that work exactly like the stock firmware,
instead of having an additional flash after rendering (see issue linked
above for example).

Tested on the X4 and confirmed working.

---------

Co-authored-by: Dave Allie <dave@daveallie.com>
2026-01-07 20:14:35 +11:00
Dave Allie
9c573e6f7f
Ensure new settings are at the end of the settings file 2026-01-07 20:02:33 +11:00
Justin
0edb2baced
feat: remember parent folder index in menu when ascending folders (#260)
## Summary

Adds feature to file selection activity for better user navigation when
ascending folders. The activity now remembers the index of the parent
folder instead of always resetting to the first element.

I don't have any means of testing this, so if someone could test it
that'd be great

Resolves #259
2026-01-07 19:58:49 +11:00
Justin Mitchell
b792b792bf
Calibre Web Epub Downloading + Calibre Wireless Device Syncing (#219)
## Summary

Adds support for browsing and downloading books from a Calibre-web
server via OPDS.
How it works
1. Configure server URL in Settings → Calibre Web URL (e.g.,
https://myserver.com:port I use Cloudflare tunnel to make my server
accessible anywhere fwiw)
2. "Calibre Library" will now show on the the home screen
3. Browse the catalog - navigate through categories like "By Newest",
"By Author", "By Series", etc.
4. Download books - select a book and press Confirm to download the EPUB
to your device
Navigation
- Up/Down - Move through entries
- Confirm - Open folder or download book
- Back - Go to parent catalog, or exit to home if at root
- Navigation entries show with > prefix, books show title and author
- Button hints update dynamically ("Open" for folders, "Download" for
books)
Technical details
- Fetches OPDS catalog from {server_url}/opds
- Parses both navigation feeds (catalog links) and acquisition feeds
(downloadable books)
- Maintains navigation history stack for back navigation
- Handles absolute paths in OPDS links correctly (e.g.,
/books/opds/navcatalog/...)
- Downloads EPUBs directly to the SD card root
Note
The server URL should be typed to include https:// if the server
requires it - HTTP→HTTPS redirects may cause SSL errors on ESP32.

## Additional Context

* I also changed the home titles to use uppercase for each word and
added a setting to change the size of the side margins

---------

Co-authored-by: Dave Allie <dave@daveallie.com>
2026-01-07 19:58:37 +11:00
Arthur Tazhitdinov
2315513ca1 Refactor hyphenation logic to return detailed break information, enhancing line breaking capabilities 2026-01-07 03:54:43 +05:00
Arthur Tazhitdinov
f998180353 clang format fix 2026-01-07 03:17:33 +05:00
Arthur Tazhitdinov
07f1786ff2 Enhance hyphenation logic to allow fallback breaks for better line breaking in ParsedText 2026-01-07 03:15:38 +05:00
Arthur Tazhitdinov
f0ea0b4d5b Fix header size calculation to include hyphenationEnabled in Section.cpp 2026-01-07 03:04:05 +05:00
Arthur Tazhitdinov
81ad6fa6c4 refactor 2026-01-07 02:34:58 +05:00
Arthur Tazhitdinov
54669a8fd4 clang format fix 2026-01-07 02:14:57 +05:00
Arthur Tazhitdinov
e46a271c12 Implement hyphenation support and refactor line break calculations 2026-01-07 02:14:01 +05:00
Arthur Tazhitdinov
22c15cbbca fixed parameter order 2026-01-07 02:12:52 +05:00
Arthur Tazhitdinov
b2ed0989a7 Remove hyphenation enum and set default value for hyphenationEnabled 2026-01-06 00:06:44 +05:00
Arthur Tazhitdinov
76ece0073f Merge branch 'master' into hyphenation-v2 2026-01-06 00:01:47 +05:00
Jonas Diemer
afe9672156
Feature/cover crop mode (#225)
Some checks failed
CI / build (push) Has been cancelled
Added a setting to select `fit` or `crop` for cover image on sleep
screen.

Might add a `expand` feature in the future that does not crop but rather
fills the blank space with a mirror of the image.

---------

Co-authored-by: Dave Allie <dave@daveallie.com>
2026-01-05 21:07:27 +11:00
David Fischer
9f95b31de5
add settings for reader screen margin (#223)
## Summary

* **What is the goal of this PR?** 
* This PR adds a setting to control the top left and right margins of
the reader screen in 4 sizes (5, 10, 20, 40 pt?) and defaults to `SMALL`
which is equivalent to the fixed margin of 5 that was already in use
before.
* **What changes are included?**

## Additional Context

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

---------

Co-authored-by: Dave Allie <dave@daveallie.com>
2026-01-05 20:29:08 +11:00
Stanislav Khromov
c76507c937
Add blank sleep screen option (#242)
## Summary

Very small change to add a blank ("None") sleep screen option, for those
who prefer a clean aesthetic.

Tested on X4 device.
2026-01-05 20:08:39 +11:00
Justin
881aa2e005
Fix scrolling wrap-around in settings menu (#249)
## Summary

Fixes a bug in the settings menu, where previously wrap-around only
worked when scrolling upwards. Now, scrolling downwards on the last list
element wraps around to the top as expected.

Resolves #236.
2026-01-05 19:25:27 +11:00
Dave Allie
14972b34cb
Remove authentication type from hotspot QR code (#235)
Some checks are pending
CI / build (push) Waiting to run
## Summary

* Remove the `T` parameter (authentication type), and `P` parameter
(password) for the SoftAP wifi config QR code

## Additional Context

* It is optional according to the spec:
https://www.wi-fi.org/system/files/WPA3%20Specification%20v3.2.pdf#page=25
so should either be omitted or set to nopass
* Fixes https://github.com/daveallie/crosspoint-reader/issues/229
2026-01-04 16:08:32 +11:00
Jonas Diemer
c8f4870d7c
Improved battery symbol (#228)
Some checks are pending
CI / build (push) Waiting to run
Rounded corners, smaller positive terminal thingy.
2026-01-04 15:27:34 +11:00
Arthur Tazhitdinov
be233917ec Refactor hyphenation logic and update settings for hyphenation toggle 2026-01-03 15:50:51 +05:00
Arthur Tazhitdinov
3059cdbc11 Merge branch 'master' into hyphenation-v2 2026-01-03 15:46:56 +05:00
Arthur Tazhitdinov
ae71752cfc Update subproject reference in open-x4-sdk 2026-01-03 15:23:53 +05:00
Arthur Tazhitdinov
cb1ecdb505 Add explicit hyphen handling and improve hyphenation logic in ParsedText and Hyphenator 2026-01-03 15:20:53 +05:00
Dave Allie
5fdf23f1d2
Cut release 0.12.0
Some checks are pending
CI / build (push) Waiting to run
2026-01-03 19:42:14 +11:00
Justinian
2fb417ee90
Feat/sleep and refresh settings (#209)
## Summary

* **What is the goal of this PR?** (e.g., Fixes a bug in the user
authentication module, Implements the new feature for
  file uploading.)
* **What changes are included?**

## Additional Context

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

---------

Co-authored-by: ratedcounsel <hello@ratedcounsel.com>
Co-authored-by: Dave Allie <dave@daveallie.com>
2026-01-03 19:33:42 +11:00
V
c8f6160fbc
Refactor semantic version comparison for OTA updates (#216)
## Summary

* **What is the goal of this PR?** (e.g., Fixes a bug in the user
authentication module, Implements the new feature for
  file uploading.)

This PR refactors the semantic version comparison logic used during OTA
update checks.

Memory stats before : 
RAM:   [===       ]  30.8% (used 101068 bytes from 327680 bytes)
Flash: [========= ]  85.7% (used **5617830** bytes from 6553600 bytes)

Memory stats before : 
RAM:   [===       ]  30.8% (used 101068 bytes from 327680 bytes)
Flash: [========= ]  85.7% (used **5616870** bytes from 6553600 bytes)


* **What changes are included?**

Replaced std::string::substr() and std::stoi() based parsing with a
lightweight, heap-free approach.
Version parsing is now done in a single pass without creating temporary
std::string objects.
Behavior remains identical: versions are still compared as
MAJOR.MINOR.PATCH.

## Additional Context

`std::string::substr() ` creates a new string and performs heap
allocation

* Add any other information that might be helpful for the reviewer
(e.g., performance implications, potential risks, specific areas to
focus on).
2026-01-03 19:19:53 +11:00
Brendan O'Leary
8e4484cd22
Add buton hints to keyboard screen (#205)
## Summary

This adds the correctly styled button hints to the keyboard screen as
well as the ability to add hints to the side buttons (and up/down hints
to that screen)

## Additional Context

N/A
2026-01-03 19:17:53 +11:00