Repository navigation
Releases: Belphemur/XPoint
Release list
XPoint v2.8.1
Changelog
Range: v2.8.0..v2.8.1
Bug Fixes
- quick font preview shows only the current page and restores your reading position
Documentation
- clarify scope for reusable downstream primitives (crosspoint-reader#3821)
Chores
- deps
- update freeink-sdk digest to 0f65066 (#226)
- release
- bump version to 2.8.1
- sync
- merge upstream/develop into develop
XPoint v2.8.0
Changelog
Range: v2.7.2..origin/develop
Features
- lib/AsciiText
- Add custom HTTP headers for OPDS and KOReader Sync (crosspoint-reader#3016)
- lib/EpdFont
- offer Libron in Manage Fonts downloads (crosspoint-reader#3971)
- src/CrossPointSettings.cpp
- Add "Footnotes and links" option to long press menu button (crosspoint-reader#3851)
- src/MappedInputManager.cpp
- Swipe to delete (crosspoint-reader#3712)
Bug Fixes
- reader
- restore framebuffer after the idle prewarm render (#225)
- src/activities
- wrap plugin event disclosures to fit screen (crosspoint-reader#3837)
- src/network
- normalize web upload filenames to NFC (crosspoint-reader#3961)
- prevent FilesPage modal from closing when selecting text (crosspoint-reader#3931)
- test
- add lib/AsciiText to section_incremental include paths
Performance
- scan the central directory in one read per entry (crosspoint-reader#3955)
Documentation
- list Paper Mono in frontlight guide (crosspoint-reader#3968)
Chores
- deps
- update freeink-sdk digest to 52a201b (#224)
- sync
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
Other
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.7.2
Changelog
Range: v2.7.1..origin/develop
Bug Fixes
- lib/Epub
- Sub-chapter contents navigation (crosspoint-reader#3946)
- other
- update SDK to resolve X3 anti-aliasing freeze (crosspoint-reader#3960)
- reader
- honor the saved reading position across layout generation bumps (#223)
Style
- refresh device web UI (crosspoint-reader#3950)
Chores
- deps
- other
- yet more refinment of agents guidelines (crosspoint-reader#3951)
- sync
- merge upstream/develop into develop
- merge upstream/develop into develop
Other
- lib/hal
- Check for gyroscope presence in tilt sensor init
- other
- Merge remote-tracking branch 'upstream/develop' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.7.1
Changelog
Range: v2.7.0..origin/develop
Bug Fixes
- lib/I18n
- say why an OPDS feed fetch failed (crosspoint-reader#3872)
- src/activities
- align cover-grid tab bar with the home menu model (#220)
Documentation
- add 'What XPoint changes from CrossPoint' summary section
Other
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.7.0
Faster book opens
Returning to a book you were already reading now paints the page in a fraction of the previous wait. The reader used to re-read its chapter position table from the SD card in hundreds of tiny chunks on every open; it now reads the same data in a few batches, cutting that part of a warm open from about two seconds to well under a tenth of it on long chapters. You notice it the moment you tap a book: the page appears almost as soon as the display allows.
What else is fixed
- Dictionary definitions stored as HTML now render through the styled layout even when the dictionary file mislabels them, so you get proper formatting instead of raw markup.
- Screen long-press now follows your
touchLongPressActionbutton remapping, not just physical buttons. - Metalio E-Ink 4 powers off fully when it sleeps instead of drawing power.
Update
- OTA: Settings → System → Check for updates (signed manifest, verified on-device).
- Manual flash:
xpoint-2.7.0-x4pro.binfrom this release for the X4 Pro; every supported board has its own.binhere.
Changelog
Range: v2.6.1..origin/develop
Bug Fixes
- dict
- route HTML-content definitions through styled layout despite sametypesequence=x (#217)
- lib/hal
- Metalio E-Ink 4 powers off fully when it sleeps (crosspoint-reader#3944)
- reader
- honor touchLongPressAction for screen long-press routing (#215)
Performance
- speed up warm book open by batching FIBP index reads (#218)
Chores
- deps
- update freeink-sdk digest to bfe4d29 (#214)
- other
- further refine agents guidelines
- sync
- merge upstream/develop into develop
Other
- Merge remote-tracking branch 'origin/develop' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.6.1
Changelog
Range: v2.6.0..origin/develop
Features
- support looking up multiple tokens using clipping feature (crosspoint-reader#3932)
Bug Fixes
- kosync
- advertise percentage progress support (crosspoint-reader#3219)
- lib/GfxRenderer
- add non-CJK GUI fallback font support (crosspoint-reader#3484)
- reader
- do not rebuild when a restore is already covered by the index (#213)
Chores
XPoint v2.5.0
Changelog
Range: v2.4.0..v2.5.0
Features
- docs
- render redaction blocks without a special font (crosspoint-reader#3882)
- lib/I18n
- Add support for Metalio E-Ink 4 device (crosspoint-reader#3825)
- Add support for Metalio E-Ink 4 device (crosspoint-reader#3825)
- lib/hal
- eego a4 support (crosspoint-reader#3887)
- power
- GT911 idle sleep + EPD idle power-off with screen state tracing
- src/FontInstaller.cpp
- Add vector font (.ttf/.otf) upload support in webserver (crosspoint-reader#3717)
Bug Fixes
- docs
- scope Git version to sources that use it (crosspoint-reader#3860)
- lib/Epub
- preserve paragraph continuity across soft flushes (crosspoint-reader#3875)
- lend the framebuffer to the chapter build's image dimension probe (crosspoint-reader#3802)
- lib/Logging
- stop dropping log lines at the low-power clock (crosspoint-reader#3737)
- lib/hal
- hold the power mode mutex while switching to low-power (crosspoint-reader#3847)
- reader
- src/activities
- stable tip positions in keyboard activity (crosspoint-reader#3863)
- add plugin-manager to return-selection mapping (crosspoint-reader#3864)
- src/components
- Center button hints using the actual text height (crosspoint-reader#3865)
- src/main.cpp
- load the X3 battery capacity into its BQ27220 fuel gauge (crosspoint-reader#3730)
- exempt IDLE tasks from sentinel stack-overflow warning
- webdav
- GET sends one byte per file, since HalFile wrapped FsFile (crosspoint-reader#3410)
Performance
- lib/EpdFont
- stop SD-font caches from splitting the heap while reading (crosspoint-reader#3831)
- other
- skip unused Arduino SDK libraries (crosspoint-reader#3857)
- src/activities
- avoid list navigation callback allocations (crosspoint-reader#3848)
CI
- add eego_a4 to the CI/release matrix on the fork's pipelines
Chores
- deps
- update step-security/harden-runner action to v2.22.0 (#200)
- update freeink-sdk digest to ac3021b (#199)
- update freeink-sdk digest to 73d8cc0 (#198)
- update freeink-sdk digest to 0707b34 (#197)
- update freeink-sdk digest to 0bf52e8 (#192)
- update freeink-sdk digest to 15404d2 (#191)
- update freeink-sdk digest to 552c7a0 (#190)
- release
- bump version to 2.5.0
- sync
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
Other
- Merge remote-tracking branch 'upstream/develop' into HEAD
- Merge remote-tracking branch 'upstream/develop' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
- Merge upstream develop (webdav GET fix crosspoint-reader#3410, framebuffer-lend probe fix crosspoint-reader#3802, Metalio E-Ink 4 crosspoint-reader#3825)
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.4.0
Personal fork release. See README fork notice. OTA is signed (Ed25519); verify before flashing.
Changelog
Range: v2.3.0..v2.4.0
Features
- fonts
- TTF distribution pipeline for PSRAM devices (#187)
- power
- log CPU frequency transitions + graph them in the serial monitor
- port Crossfire endurance governor + power stats overlay (#184)
Bug Fixes
- bidiutils
- canonicalize reversed tuple in emission path (crosspoint-reader#3834)
- build
- restore HalStorage::freeBytes after the power-governor revert
- define NO_WOLFSSL_ESP32_CRYPT_RSA_PRI with an empty value
- docs
- Add per-book content key storage and plugin isolation (crosspoint-reader#3824)
- lib/EpdFont
- keep SD-font kerning and ligatures in edge cases (crosspoint-reader#3838)
- lib/Epub
- stop books with thousands of chapters aborting the index build (crosspoint-reader#3733)
- lib/hal
- Remove BQ27220 battery current USB detection for X3 (crosspoint-reader#3809)
- power
- restore the 80 MHz PSRAM idle floor
- lower the PSRAM-board idle floor from 80 to 40 MHz
- src/RecentBooksStore.cpp
- keep reopened books from pinning the heap (crosspoint-reader#3830)
Documentation
- correct the stall-sampling comment and round-2 design note
Chores
- deps
- lib/I18n
- change "Footnotes" label to "Links and footnotes" (crosspoint-reader#3808)
- release
- bump version to 2.4.0
- sync
- merge fork develop (PR #187 TTF distribution) into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
Other
- docs
- Revert "feat(power): port Crossfire endurance governor + power stats overlay (#184)"
- Allow plugins to override download directory via config
- other
- Merge remote-tracking branch 'origin/develop' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.3.0
Changelog
Range: v2.2.0..origin/develop
Features
- SD card based plugin system (crosspoint-reader#3114)
- Add configurable EPUB paragraph indentation (crosspoint-reader#3727)
Bug Fixes
- input
- don't count render stalls as button hold time on C3 (#183)
- src/activities
- reopen on the viewed page after following a link (crosspoint-reader#3764)
Performance
- keep FAT sectors in a separate SdFat cache (crosspoint-reader#3685)
Tests
- pin one step per short tap on the direction buttons
Chores
- deps
- bump freeink-sdk to d7b52a7 (C3 sync regression test)
- update freeink-sdk digest to 78099e5 (#182)
- lib/Epub
- clean dead code (crosspoint-reader#3805)
Other
- input
- extract StallDiscountWindow into testable unit + wiring tests
- other
- Merge upstream develop (link-reopen fix crosspoint-reader#3764, SD plugin system crosspoint-reader#3114)
- Merge commit '707625a4' into develop
- Merge commit '458be7ed' into develop
- Merge remote-tracking branch 'upstream/develop' into develop
XPoint v2.2.0
Personal fork release. See README fork notice. OTA is signed (Ed25519); verify before flashing.
Headline: TrueType & OpenType fonts, with hinting actually working — and a rewritten fast, clean TTF engine
The TTF/OTF engine was rewritten to use FreeType directly on PSRAM boards (X4 Pro, and any other board with PSRAM), and it's the fast-and-clean kind of rewrite: hinting on so glyphs snap to the pixel grid, and the render path is monochrome 1-bit now, so you don't need anti-aliasing anymore.
What that means on the page:
- Sharper text at small sizes. Hinting makes glyphs land crisp on the pixel grid, which is exactly where the old unhinted pipeline looked soft and a little blurry.
- Faster. The FreeType backend reuses open faces and uses a glyph cache + fast face loading, and next-page prerendering is back. Page turns stopped hunting for a font you were already looking at.
- Cleaner output, no AA. With the FreeType path on PSRAM boards, glyphs render monochrome, so the renderer no longer has to pay the grayscale anti-aliasing pass. Less work on the SPI bridge, cleaner edges.
- Hinting genuinely works this time. The stack budget that gates hinting was sitting below the real cost of a hinted render, so it switched hinting off for essentially every font — including OTF/CFF faces that crashed the probe on the way in. The budget is now derived from data (the actual 48 KB render-task stack minus a measured margin), backed by a host benchmark (
test/hint_mem_bench) that records real per-font stack depth. The probe itself was resized so it reports an over-budget face instead of panicking on it. Both Amazon Ember and Atkinson Hyperlegible keep hinting on now.
If you use custom fonts, drop your .ttf / .otf in /fonts or /.fonts and flash this release — this is the one where it lands.
Changelog
Range: v2.1.0..v2.2.0
Features
- docs
- Add TrueType fonts on PSRAM boards (crosspoint-reader#3646)
- add word and character spacing controls (crosspoint-reader#3528)
- choose which UI languages are compiled in (crosspoint-reader#3618)
- font
- port upstream crosspoint-reader#3646 TTF improvements into the native-TTF stack (#162)
- switch native-TTF reader to the FreeType backend
- lib/Epub
- add Portuguese hyphenation support (crosspoint-reader#3643)
- Adds Cover Grid UI Theme for PSRAM capable devices (crosspoint-reader#3657)
- lib/I18n
- better footnotes navigation (crosspoint-reader#3682)
- Add CrossInk style swipe and tap controls (crosspoint-reader#3586)
- refresh library (crosspoint-reader#3608)
- reader
- quick-menu sizing unification + full-screen font preview activity
- background FIBP chapter-index prefetch (index-ahead) (#153)
- src/MappedInputManager.cpp
- add back buttons to the header and unify all theme headers (crosspoint-reader#3689)
- src/activities
- settings checkbox (crosspoint-reader#3773)
- navigate lists on button press (crosspoint-reader#3754)
- Convert slider dialogs to popups over current page (crosspoint-reader#3669)
- rename files (crosspoint-reader#3572)
Bug Fixes
- ci
- pin pioarduino core inside the platform penv (crosspoint-reader#3594)
- docs
- Remove article stripping logic (crosspoint-reader#3749)
- justify Korean text by word spaces only (crosspoint-reader#3700)
- font
- frontlight
- persist side-swipe adjustments on drag release
- input
- consume-on-check edge reads (soak regression: tap/home-key replay) (#158)
- lib/EpdFont
- Sticky env missing ram stats (crosspoint-reader#3683)
- stop duplicating identical interval tables across font styles (crosspoint-reader#3616)
- lib/FsHelpers
- don't cut screenshot folder names mid-letter (crosspoint-reader#3750)
- lib/GfxRenderer
- speed up long status titles (crosspoint-reader#3573)
- re-introduce deferred overlay refresh with bounded settle (follow-up to #143) (#149)
- restore space widths on partial cache misses (crosspoint-reader#3585)
- lib/Utf8
- restore NFC composition in File Browser rows (crosspoint-reader#3630)
- lib/hal
- other
- pin pioarduino in release.yml too
- pin packages in rc workflow
- pin packages in rc workflow
- reader
- drop quick-font +/- buttons; preview close pops to the book page
- selecting the already-resident family must not reload the loader
- resync the TTF UI fallback after a loader reload
- serve partial-prefix resume, stop FIBP claim churn, local quick-font steps (#165)
- mark TTF pages rendered so sleep covers and recents work
- guard prerender invalidation behind the TTF build flag
- settle overlay refresh before launching stats screens
- gate FIBP worker progress and dedup re-arm (PR #153 review threads)
- quick font sheet +/- responsiveness after family pick and per-tap delay (#140)
- reader,bench
- settings
- fix list scrolling (crosspoint-reader#3668)
- sleep
- invert the logo before the transparent blit
- src/ReaderFontSizes.cpp
- Toolbar menu in landscape mode + TTF font sizes (crosspoint-reader#3748)
- src/SettingsList.h
- Re-Enable toolbar reader menu on button-only devices (crosspoint-reader#3603)
- src/SilentRestart.h
- tear down WiFi when leaving the Settings network screen (crosspoint-reader#3613)
- src/SleepFrameHash.h
- skip redundant sleep-frame rewrites (#164)
- src/activities
- let Back leave File Transfer during a slow HTTP upload (crosspoint-reader#3732)
- Footnote selection with power button (crosspoint-reader#3766)
- update keyboard layout and look (crosspoint-reader#3755)
- don't reopen unreadable EPUB on wake (crosspoint-reader#3724)
- release SD-font caches on reader exit (crosspoint-reader#3699)
- Switch tap zones for RTL books (crosspoint-reader#3709)
- Reader list not scrollable with touch (crosspoint-reader#3693)
- wrap OTA completion power-on hint (crosspoint-reader#3632)
- Split navigation modes for cover grid & add selected states (crosspoint-reader#3670)
- harden the overlay settle-timeout path (issue #151) (#152)
- tear down quick font sheet chrome unconditionally (#143) (#144)
- stop materializing every File Browser row (FUI list rowProvider) (crosspoint-reader#3600)
- dictionary definition navigation honors touchReaderControls (#138) (#139)
- src/images
- Remove loading icon display during startup (crosspoint-reader#3671)
- src/main.cpp
- unblock X4 Pro frontlight double-click when short power press = Sleep, add Home key option (crosspoint-reader#3089)
Performance
- docs
- lib/GfxRenderer
- reduce per-pixel overhead in font rendering (crosspoint-reader#3633)
- src/activities
- avoid main-loop contention during EPUB rendering (crosspoint-reader#3652)
- src/util
- remove ButtonNavigator allocation churn (crosspoint-reader#3698)
Refactors
- docs
- consolidate file writes onto the SDK's atomic write path (#178)
- frontlight
- one shared controller + global edge drag
- reader
- unify TXT and Markdown rendering via EPUB pipeline (crosspoint-reader#3704)
Documentation
- design
- GT911 sleep toward touch-only wake (proposed)
- dictionary
- recommend unzipping .dict.dz files on devices without PSRAM. (crosspoint-reader#3768)
- other
- make ESP32-S3 (X4 Pro) the default target with C3 compatibility
Tests
- include in library builder storage stub (crosspoint-reader#3765)
- fix library_builder stub include for GCC 16
CI
- pin platform-espressif32 to 55.03.312 release asset
Chores
- deps
- update freeink-sdk digest to 2e7a3cf (#181)
- update freeink-sdk digest to 73284f4 (#179)
- update freeink-sdk digest to 1bc845c (#176)
- update freeink-sdk digest to 6aea9ce (#173)
- update freeink-sdk digest to 3b0573c (#172)
- update freeink-sdk digest to 1149d71 (#169)
- update freeink-sdk digest to 7004582 (#166)
- update freeink-sdk digest to 55f241b (#163)
- bump freeink-sdk to 211c834 (trailing reveal list action)
- bump freeink-sdk to 2e4dae25 (ttc face-index + review hardening, PR Belphemur/freeink-sdk#33)
- update freeink-sdk digest to 517f150 (#161)
- update freeink-sdk digest to 4979b86 (#160)
- update freeink-sdk digest to 8a17f64 (#157)
- update astral-sh/setup-uv action to v10.2.0 (#159)
- update freeink-sdk digest to ab103d0 (#156)
- update freeink-sdk digest to 43fed43 (#154)
- update freeink-sdk digest to 2dbd5a8 (#150)
- update freeink-sdk digest to 5b52bfc (#148)
- update freeink-sdk digest to 6a8addc (#145)
- bump freeink-sdk to 660dc91 (FreeInkFont split)
- update freeink-sdk digest to d4ae97f (#141)
- docs
- Update translations (crosspoint-reader#3396)
- lib/I18n
- update German translation (crosspoint-reader#3621)
- other
- allow build RC from develop
- allow build RC from develop
- scripts
- address Python Sonar warnings (crosspoint-reader#2515)
- sync
- merge upstream/develop — ours-resolve TXT/EPUB pipeline refactor
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
- merge upstream/develop into develop
Other
- lib/Epub
- [port] unify TXT and Markdown rendering via EPUB pipeline (crosspoint-reader#3704)
- other
- Merge remote-tracking branch 'upstream/develop' into develop
- Merge upstream develop: footnote power-button select, list navigation, keyboard layout
- Merge remote-tracking branch 'origin/develop' into develop
- Merge remote-tracking branch 'upstream/...