Webserver: - Remove MD5 hash computation from file listings (caused EAGAIN errors) - Implement JSON batching (2KB) with pacing for file listings - Simplify sendContentSafe() flow control Memory: - Cache QR codes on server start instead of regenerating per render - Optimize WiFi scan: vector deduplication, 20 network limit, early scanDelete() - Fix 48KB cover buffer leak when navigating Home -> File Transfer EPUB Reader: - Fix errant underlining by flushing partWordBuffer before style changes - Text before styled inline elements (e.g., <a> with CSS underline) no longer incorrectly receives the element's styling Flash Screen: - Fix version string buffer overflow (30 -> 50 char limit) - Use half refresh for cleaner display - Adjust pre_flash.py timing for half refresh completion
8.1 KiB
8.1 KiB
crosspoint-ef Changelog
All notable changes to the crosspoint-ef fork are documented here.
Base: CrossPoint Reader 0.15.0
ef-1.0.5
Stability & Memory Improvements
Bug Fixes - Webserver
- File Transfer Stability: Removed blocking MD5 hash computation from file listings that caused EAGAIN errors and connection stalls
- JSON Batching: Implemented 2KB batch streaming for file listings with pacing to prevent TCP buffer overflow
- Simplified Flow Control: Removed unnecessary yield/delay logic from content streaming
Bug Fixes - Memory
- QR Code Caching: Generate QR codes once on server start instead of regenerating on each screen render
- WiFi Scan Optimization: Replaced memory-heavy
std::mapdeduplication with in-place vector search, limited results to 20 networks, earlierWiFi.scanDelete()for faster memory recovery - Cover Buffer Leak: Fixed 48KB memory leak when navigating from Home to File Transfer (cover buffer now explicitly freed)
Bug Fixes - EPUB Reader
- Errant Underlining: Fixed words before styled inline elements (like
<a>tags with CSS underline) incorrectly receiving the element's style by flushing the text buffer before style changes
Bug Fixes - Flashing Screen
- Version String Overflow: Fixed flash notification parsing failing on longer version strings (buffer limit increased from 30 to 50 characters)
- Display Quality: Changed flashing screen to half refresh for cleaner appearance
- Timing: Adjusted pre-flash script timing for half refresh completion
Files Changed
src/main.cpp- flash screen fixes, cover buffer free on File Transfer entryscripts/pre_flash.py- timing adjustments for full refreshsrc/network/CrossPointWebServer.cpp- JSON batching, removed MD5 from listingssrc/network/CrossPointWebServer.h- removed md5 from FileInfo, simplified sendContentSafesrc/activities/network/CrossPointWebServerActivity.cpp- QR code cachingsrc/activities/network/CrossPointWebServerActivity.h- QR code cache memberssrc/activities/network/WifiSelectionActivity.cpp- WiFi scan memory optimizationlib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp- flush buffer before style changes
ef-1.0.4
EPUB Rendering & Stability
New Features
- End-of-Book "Start Over": Press next at end of book to wrap to first page
EPUB Rendering Improvements
- CSS
margin-left/padding-leftparsing for block indentation - Vertical bar and italic styling for blockquotes
- Left margin indentation for list items (
<ol>/<ul>) - Fixed ordered lists showing bullets instead of numbers
- Fixed nested
<p>inside<li>causing marker on separate line
Bug Fixes
- Webserver: Fixed file listing disconnection issues with flow control
- Webserver: Memory optimization for File Transfer mode (frees heap before starting)
- Dictionary: Fixed zip dictionary allocation order for better memory allocation success
ef-1.0.3
Maintenance Release
Bug Fixes
- Fixed cppcheck CI failure: removed unused
screenWidthvariable in word selection activity
ef-1.0.2
Quick Menu Enhancements
New Features
- Screen Rotation Toggle: Quick toggle between Portrait and Landscape CCW directly from the quick menu
- Automatically reindexes content for new screen dimensions
- Preserves reading position via content offset restoration
- Customizable Menu Order: Reorder quick menu items to your preference
- New "Edit List Order" option at bottom of menu
- Pick-and-place reordering: select item, navigate to destination, place
- Order persists across sessions
UI Improvements
- Added navigation button hints to quick menu (prev/next on front buttons, up/down on side buttons)
- Fixed orientation-aware margins for button hint areas in landscape modes
- New default menu order: Bookmark, Dictionary, Rotate Screen, Settings, Clear Cache
ef-1.0.1
Dictionary Stability & UX Improvements
Bug Fixes - Stability
- Fixed dictionary crashes caused by heap fragmentation from repeated page navigation
- Refactored TextBlock/ParsedText from
std::listtostd::vector, reducing heap allocations by ~12x per TextBlock- Affects EPUB reader page rendering, dictionary definition display, and word selection
- Contiguous memory improves cache locality during text layout and reduces heap fragmentation on the memory-constrained ESP32
- Added uncompressed dictionary (
.dict) support to avoid decompression memory issues with large dictzip chunks (58KB chunks -> direct read) - Implemented chunked on-demand HTML parsing for large definitions, parsing pages as user navigates rather than all at once
- Limited cached pages to 4 with re-parse capability for backward navigation beyond cache window
- Fixed double-button press bug when loading new dictionary chunks
Bug Fixes - UI/Layout
- Restored proper orientation-aware button hint spacing (front: 45px, side: 50px)
- Added side button hints to definition screen with "<" / ">" labels for page navigation
- Added side button hints to word selection screen ("UP"/"DOWN" labels, borderless, small font)
- Added side button hints to dictionary menu ("< Prev", "Next >")
- Moved page indicator up to avoid bezel cutoff in landscape orientations
ef-1.0.0
First Official Release (previously ef-0.15.99)
First milestone release of the crosspoint-ef fork, building on CrossPoint Reader 0.15.0 with 14+ major new features and enhancements.
New Features
- Dictionary Support: Offline StarDict dictionary with word selection from reader, fast prefix-indexed search, rich HTML formatting, and multi-page pagination
- Bookmark System: Per-book bookmarks with visual folded-corner indicators, dedicated management interface, and auto-generated bookmark names
- Quick Menu: In-reader quick access menu for common actions (Dictionary, Bookmark, Clear Cache, Settings) via short power button press
- Library Search: Search across all books by title, author, or filename with dynamic character picker and weighted relevance scoring
- CSS Support: Parse and apply CSS styles from EPUB stylesheets (text-align, font-style, font-weight, text-decoration, margins, padding)
- Inline Image Support: PNG and Baseline JPEG rendering within EPUB content with 2-bit grayscale dithering and caching
- Custom Fonts: Atkinson Hyperlegible Next (low-vision readers) and Fern Micro (small screens)
- Enhanced Web Server: File management (upload, download, delete, rename, copy, move, mkdir), companion app API, WebSocket uploads, mDNS discovery at
crosspoint.local - Reading Lists: Create, manage, and pin custom book lists with web API support (CSV format)
- Enhanced Tab Bar: Unified tab bar with horizontal scrolling and overflow indicators (Recent, Lists, Bookmarks, Search, Files)
- Progress Bar Status: Additional status bar option showing visual reading progress
- OPDS Browser Enhancements: Navigation history, page skipping (hold Up/Down), error retry, HTTP Basic Auth support
Display Enhancements
- High Contrast Mode: System-wide contrast adjustment
- Bezel Compensation: Configurable margin (0-10px) for physical screen edge defects
- Sleep Screen Improvements: Edge-aware color filling for seamless letterbox appearance
Bug Fixes
- Fixed device hanging when booted without USB connected (Serial.available()/Serial.read() called without Serial.begin())
- Fixed grayscale state corruption causing ghosting artifacts when anti-aliasing enabled under memory pressure
- Memory optimization with graceful degradation when memory is low
Development Tools
pre_flash.py: Displays "Flashing firmware..." screen during uploaddebugging_monitor.py: Enhanced serial monitor with memory graphspio_helper.py: Interactive PlatformIO workflow helper
Differences from Upstream 0.16.0
This fork is based on upstream 0.15.0. The following 0.16.0 features are not included:
- KOReader sync support
- Non-English hyphenation patterns (Spanish, German, French, Russian)
- XTC/XTCH file format support
See crosspoint-ef-features.md for complete feature documentation.