You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
All-digit filenames (e.g. 1968.epub) cannot be opened #900
An EPUB whose filename stem is entirely digits (e.g. 1968.epub) cannot be opened. The book fails to load even though the file is a perfectly valid EPUB. Renaming it so the name contains at least one letter makes it open normally.
Steps to reproduce
Put a valid EPUB on the device named with digits only, e.g. 1968.epub.
Try to open it from the library/file list.
Expected
The book opens like any other EPUB.
Actual
The book will not open.
Scope — it is specifically an all-digit stem
Filenames that merely start with a digit open fine. On the same device, in the same folder, all of these work:
0. Unlocked.epub
1. Old Man's War.epub
7. System Collapse.epub
Only a stem with no letters at all fails. This points at the name being parsed as a number somewhere rather than treated as a string.
The file itself is valid
The failing 1968.epub was checked independently and is a well-formed EPUB 2.0, structurally identical to sibling books that open without trouble:
unzip -t reports no errors; mimetype is the first entry, stored (uncompressed), and contains application/epub+zip.
No DRM / no META-INF/encryption.xml.
The OPF manifest and spine are internally consistent — every manifest href exists in the archive, every spine idref resolves to a manifest item, and the cover meta resolves.
So this is a filename-handling issue, not a bad book.
Workaround
Give the file any name containing a letter, e.g. 1968 - Joe Haldeman.epub. It then opens normally.
Environment
Xteink e-ink reader running CrossInk firmware. (Exact firmware version not recorded; happy to add it if it helps.)
Closing as not reproducible after controlled retesting.
Minimal test case: two byte-identical minimal EPUBs, differing only in name — 1.epub (all-digit stem) and a.epub — were placed in the same folder on the SD card. CrossInk opened both without trouble.
Original file retested: the originally failing book was renamed back to 1968.epub and now opens normally as well.
One confounder worth noting for anyone who hits something similar: the rename round-trip (1968.epub → 1968 - Joe Haldeman.epub → 1968.epub) changes the book's path, and the EPUB layout cache under .crosspoint/epub_<hash>/ is keyed by a hash of the path. The retest therefore ran against a fresh cache. The original failure was most likely an ephemeral or stale-cache condition tied to that specific file at that moment, not an all-digit-filename parsing bug — the minimal 1.epub test rules out the filename itself as the cause.
If an all-digit filename fails again, please capture serial logs during the failed open and note whether clearing the matching .crosspoint/epub_<hash>/ folder fixes it; that would localize the real cause.
Activity
pillarsdotnet commentedon Oct 28, 2026
Closing as not reproducible after controlled retesting.
Minimal test case: two byte-identical minimal EPUBs, differing only in name —
1.epub(all-digit stem) anda.epub— were placed in the same folder on the SD card. CrossInk opened both without trouble.Original file retested: the originally failing book was renamed back to
1968.epuband now opens normally as well.One confounder worth noting for anyone who hits something similar: the rename round-trip (
1968.epub→1968 - Joe Haldeman.epub→1968.epub) changes the book's path, and the EPUB layout cache under.crosspoint/epub_<hash>/is keyed by a hash of the path. The retest therefore ran against a fresh cache. The original failure was most likely an ephemeral or stale-cache condition tied to that specific file at that moment, not an all-digit-filename parsing bug — the minimal1.epubtest rules out the filename itself as the cause.If an all-digit filename fails again, please capture serial logs during the failed open and note whether clearing the matching
.crosspoint/epub_<hash>/folder fixes it; that would localize the real cause.