- Add crosspoint-ef fork notice to README with links to upstream - Include feature overview, user guide, and technical comparison docs
12 KiB
Branch Comparison Summary: crosspoint-ef vs 0.16.0
This document provides a comprehensive comparison between the crosspoint-ef branch and the upstream 0.16.0 release for merge planning and implementation decisions.
Branch History
| Branch | Base | Commits Since Base | Status |
|---|---|---|---|
crosspoint-ef |
0.15.0 | 90+ | Active development |
0.16.0 |
0.15.0 | 30 | Released |
Both branches diverged from 0.15.0 at commit 3ce11f14.
Feature Comparison Matrix
Major Features
| Feature | crosspoint-ef | 0.16.0 | Notes |
|---|---|---|---|
| Dictionary Support | Yes | No | StarDict format with word selection |
| Bookmark System | Yes | No | Per-book bookmarks with visual indicator |
| Quick Menu | Yes | No | Power button quick access |
| Library Search | Yes | No | Character picker with weighted search |
| CSS Parsing | Yes | No | Element, class, inline styles |
| Inline Images (PNG/JPEG) | Yes | No | With caching and dithering |
| Custom Fonts | Yes | No | Atkinson Hyperlegible, Fern Micro |
| Enhanced Web Server | Yes | Partial | File ops, MD5 API, mDNS |
| Companion App API | Yes | No | Deep links, WebSocket uploads |
| Reading Lists | Yes | No | With pinning support |
| Tab Bar Enhancements | Yes | No | Scrolling, overflow indicators |
| High Contrast Mode | Yes | No | System-wide |
| Bezel Compensation | Yes | No | Edge defect compensation |
| Sleep Screen Edge Detection | Yes | No | Dominant color fill |
| Recents Improvements | Yes | No | Badges, removal, clearing |
| Progress Bar Status Bar | Yes | Yes | Same feature |
| Spanish Hyphenation | No | Yes | Missing in crosspoint-ef |
| XTC/XTCH Author Extraction | No | Yes | Missing in crosspoint-ef |
| OTA Rework | No | Yes | Different implementation |
| KOReader MD5 Binary Matching | No | Yes | Missing in crosspoint-ef |
| Relative Position on Settings Change | No | Yes | Missing in crosspoint-ef |
| Multi-line Keyboard Entry | No | Yes | Missing in crosspoint-ef |
| Italics on Image Alt | No | Yes | Missing in crosspoint-ef |
| Page Turn on Button Press (UX) | No | Yes | When chapter skip disabled |
Bug Fixes
| Fix | crosspoint-ef | 0.16.0 | Notes |
|---|---|---|---|
| Large EPUB indexing O(n²)→O(n) | Yes | Yes | Same fix |
| Settings validation on read | Yes | Yes | Same fix |
| Line break fixes | Yes | Yes | Similar fixes |
| Rotate origin in drawImage | Yes | Yes | Same fix |
| Short-press power wakeup | Yes | Yes | Same fix |
| TXT books in recent tab | Yes | Yes | Same fix |
| B&W filters for covers | Yes | Yes | Same fix |
| Cover fit artifacts | Yes | Yes | Same fix |
| Grayscale state corruption | Yes | No | Unique to crosspoint-ef |
| Memory graceful degradation | Yes | No | Unique to crosspoint-ef |
| Chapter Selection UI (KOReader) | No | Yes | Missing in crosspoint-ef |
| Front layout in mapLabels() | No | Yes | Missing in crosspoint-ef |
Files Changed Summary
crosspoint-ef Unique Files (New)
| Category | Files |
|---|---|
| Dictionary | src/activities/dictionary/ (8 files), lib/StarDict/ (4 files) |
| Bookmarks | src/BookmarkStore.cpp/.h, src/activities/home/BookmarkListActivity.cpp/.h |
| Quick Menu | src/activities/util/QuickMenuActivity.cpp/.h |
| CSS | lib/Epub/Epub/css/ (3 files) |
| Images | lib/Epub/Epub/blocks/ImageBlock.cpp/.h, lib/Epub/Epub/converters/ (6 files) |
| Custom Fonts | src/customFonts.cpp, src/fontIds.h, lib/EpdFont/builtinFonts/custom/ (50+ files) |
| Utils | src/util/Md5Utils.cpp/.h, src/util/StringUtils.cpp/.h |
| Lists | src/BookListStore.cpp/.h |
| Docs | docs/webserver-api-reference.md, docs/companion-app-deep-link-API.md, docs/troubleshooting.md |
crosspoint-ef Modified Files (Significant Changes)
| File | Changes |
|---|---|
src/network/CrossPointWebServer.cpp |
+1083 lines (file ops, API, WebSocket) |
src/activities/home/MyLibraryActivity.cpp |
+700 lines (tabs, search, badges) |
src/main.cpp |
+255 lines (feature integration) |
lib/GfxRenderer/GfxRenderer.cpp |
+439 lines (contrast, bezel) |
lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp |
+596 lines (CSS integration) |
src/CrossPointSettings.cpp/.h |
New settings fields |
src/activities/boot_sleep/SleepActivity.cpp |
Edge detection, caching |
src/RecentBooksStore.cpp |
Badges, removal, metadata |
src/ScreenComponents.cpp |
Tab bar enhancements |
0.16.0 Unique Files/Changes
| File | Description |
|---|---|
lib/Epub/Epub/hyphenation/generated/hyph-es.trie.h |
Spanish hyphenation (removed in ef) |
lib/KOReaderSync/ |
KOReader credential handling (removed in ef) |
src/network/OtaUpdater.cpp |
OTA rework |
Merge Strategy Recommendations
Phase 1: Cherry-pick 0.16.0 Fixes into crosspoint-ef
Low Risk - Recommended First:
-
Spanish hyphenation support (#558)
- Add
hyph-es.trie.hback - Update
LanguageRegistry.cpp
- Add
-
Render keyboard entry over multiple lines (#567)
- Update
KeyboardEntryActivity.cpp
- Update
-
Correctly render italics on image alt (#569)
- Minimal change to text rendering
-
Page turning on button pressed (#451)
- UX improvement when chapter skip disabled
-
Missing front layout in mapLabels() (#564)
- Bug fix for button mapping
Medium Risk:
-
KOReader document MD5 binary matching (#529)
- May conflict with MD5Utils changes
-
Chapter Selection UI bugs (#501)
- Review for conflicts with tab bar changes
-
Relative position on settings change (#486)
- Reader state management change
Higher Risk:
-
OTA feature rework (#509)
- Compare implementations, may need reconciliation
- crosspoint-ef has different OTA changes
-
Extract author from XTC/XTCH (#563)
- XTC format was removed in crosspoint-ef
- Evaluate if needed
Phase 2: Potential Upstream Contributions from crosspoint-ef
High Value, Moderate Complexity:
-
Dictionary Support
- Self-contained feature
- New files, minimal integration points
- Requires shipping dictionary data
-
Bookmark System
- Clean implementation
- New files with reader integration
-
Quick Menu
- Simple overlay feature
- Depends on bookmark and dictionary
-
CSS Parsing
- Significant EPUB improvement
- Well-isolated in
lib/Epub/Epub/css/
High Value, Higher Complexity:
-
Inline Image Support
- Major EPUB enhancement
- Multiple new converters
- Memory management considerations
-
Library Search
- Integrated into MyLibraryActivity
- Tab bar changes included
-
Enhanced Web Server
- Large changes to CrossPointWebServer
- New API endpoints
- WebSocket uploads
Medium Value:
-
Custom Fonts
- Large binary additions (font headers)
- Clean integration
-
Display Enhancements
- High contrast, bezel compensation
- Settings additions
-
Reading Lists
- New feature with web API
Potential Conflicts
High Conflict Risk
| Area | crosspoint-ef | 0.16.0 | Resolution |
|---|---|---|---|
MyLibraryActivity.cpp |
Major restructure | Minor fixes | Manual merge required |
CrossPointWebServer.cpp |
Extensive additions | Minimal changes | crosspoint-ef likely compatible |
CrossPointSettings.h |
Many new fields | Few changes | Additive, low conflict |
main.cpp |
Feature integration | Minor changes | Review integration points |
OtaUpdater.cpp |
Modified | Reworked (#509) | Compare implementations |
Low Conflict Risk
| Area | Notes |
|---|---|
| Dictionary files | All new, no conflicts |
| Bookmark files | All new, no conflicts |
| CSS parser files | All new, no conflicts |
| Image converter files | All new, no conflicts |
| Custom font files | All new, no conflicts |
| StarDict library | All new, no conflicts |
Testing Considerations
Regression Testing Required
After any merge:
-
EPUB Reading
- Page navigation
- Chapter selection
- CSS styling
- Image rendering
- Bookmark indicators
-
Library Functions
- Tab navigation
- Search functionality
- Recent books display
- List management
-
Dictionary
- Word selection
- Lookup accuracy
- Definition display
-
Web Server
- File upload/download
- API endpoints
- WebSocket uploads
- mDNS discovery
-
Settings
- All new settings persist correctly
- Settings migration from older versions
-
Display
- High contrast mode
- Bezel compensation (all orientations)
- Sleep screen variations
Memory Testing
crosspoint-ef includes memory optimization fixes. After merge:
- Test with large EPUBs (2000+ chapters)
- Test opening multiple books in sequence
- Test anti-aliasing under memory pressure
- Monitor for ghosting/artifacts
Priority Recommendations
Immediate (For crosspoint-ef Stability)
- Cherry-pick Spanish hyphenation (#558)
- Cherry-pick multi-line keyboard entry (#567)
- Cherry-pick italics on image alt (#569)
- Cherry-pick front layout fix (#564)
Short-term (Feature Completeness)
- Evaluate OTA rework (#509) - compare implementations
- Cherry-pick page turn UX (#451)
- Cherry-pick relative position fix (#486)
Long-term (Upstream Contribution)
- Prepare dictionary feature as PR
- Prepare bookmark system as PR
- Prepare CSS parsing as PR
- Evaluate inline image support for upstream
File Inventory for Merge
Files to Add to 0.16.0 Base (for upstream contribution)
src/activities/dictionary/
DictionaryMargins.h
DictionaryMenuActivity.cpp
DictionaryMenuActivity.h
DictionaryResultActivity.cpp
DictionaryResultActivity.h
DictionarySearchActivity.cpp
DictionarySearchActivity.h
EpubWordSelectionActivity.cpp
EpubWordSelectionActivity.h
src/activities/util/
QuickMenuActivity.cpp
QuickMenuActivity.h
src/activities/home/
BookmarkListActivity.cpp
BookmarkListActivity.h
src/
BookmarkStore.cpp
BookmarkStore.h
BookListStore.cpp
BookListStore.h
customFonts.cpp
fontIds.h
BadgeConfig.h
src/util/
Md5Utils.cpp
Md5Utils.h
StringUtils.cpp
StringUtils.h
src/images/
LockIcon.h
lib/StarDict/
StarDict.cpp
StarDict.h
DictHtmlParser.cpp
DictHtmlParser.h
DictPrefixIndex.generated.h
lib/Epub/Epub/css/
CssParser.cpp
CssParser.h
CssStyle.h
lib/Epub/Epub/blocks/
ImageBlock.cpp
ImageBlock.h
BlockStyle.h
lib/Epub/Epub/converters/
FramebufferWriter.cpp
FramebufferWriter.h
ImageDecoderFactory.cpp
ImageDecoderFactory.h
ImageToFramebufferDecoder.cpp
ImageToFramebufferDecoder.h
JpegToFramebufferConverter.cpp
JpegToFramebufferConverter.h
PngToFramebufferConverter.cpp
PngToFramebufferConverter.h
lib/EpdFont/builtinFonts/custom/
[All font header files]
docs/
webserver-api-reference.md
companion-app-deep-link-API.md
troubleshooting.md
crosspoint-ef-features.md
crosspoint-ef-user-guide.md
Files to Merge Carefully
src/main.cpp
src/CrossPointSettings.cpp
src/CrossPointSettings.h
src/network/CrossPointWebServer.cpp
src/network/CrossPointWebServer.h
src/network/OtaUpdater.cpp
src/network/OtaUpdater.h
src/activities/home/MyLibraryActivity.cpp
src/activities/home/MyLibraryActivity.h
src/activities/reader/EpubReaderActivity.cpp
src/activities/settings/SettingsActivity.cpp
src/activities/settings/CategorySettingsActivity.cpp
src/ScreenComponents.cpp
src/ScreenComponents.h
src/RecentBooksStore.cpp
src/RecentBooksStore.h
lib/GfxRenderer/GfxRenderer.cpp
lib/GfxRenderer/GfxRenderer.h
lib/GfxRenderer/BitmapHelpers.cpp
lib/GfxRenderer/BitmapHelpers.h
lib/Epub/Epub/parsers/ChapterHtmlSlimParser.cpp
lib/Epub/Epub/parsers/ChapterHtmlSlimParser.h
lib/Epub/Epub/Section.cpp
lib/Epub/Epub/Section.h
Conclusion
The crosspoint-ef branch represents a significant enhancement over the 0.15.0 baseline with 14+ major features. Most features are cleanly isolated in new files, making selective upstream contribution feasible.
Recommended approach:
- First, bring crosspoint-ef up to date with 0.16.0 bug fixes
- Then, evaluate individual features for upstream PR submission
- Prioritize dictionary, bookmarks, and CSS parsing as highest-value contributions
The grayscale state corruption fix in crosspoint-ef should also be submitted upstream as a critical bug fix, as it prevents display artifacts under memory pressure.