Some checks failed
CI / build (push) Failing after 3m43s
- Add crosspoint-ef fork notice to README with links to upstream - Include feature overview, user guide, and technical comparison docs
423 lines
12 KiB
Markdown
423 lines
12 KiB
Markdown
# 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:**
|
|
|
|
1. **Spanish hyphenation support** (#558)
|
|
- Add `hyph-es.trie.h` back
|
|
- Update `LanguageRegistry.cpp`
|
|
|
|
2. **Render keyboard entry over multiple lines** (#567)
|
|
- Update `KeyboardEntryActivity.cpp`
|
|
|
|
3. **Correctly render italics on image alt** (#569)
|
|
- Minimal change to text rendering
|
|
|
|
4. **Page turning on button pressed** (#451)
|
|
- UX improvement when chapter skip disabled
|
|
|
|
5. **Missing front layout in mapLabels()** (#564)
|
|
- Bug fix for button mapping
|
|
|
|
**Medium Risk:**
|
|
|
|
6. **KOReader document MD5 binary matching** (#529)
|
|
- May conflict with MD5Utils changes
|
|
|
|
7. **Chapter Selection UI bugs** (#501)
|
|
- Review for conflicts with tab bar changes
|
|
|
|
8. **Relative position on settings change** (#486)
|
|
- Reader state management change
|
|
|
|
**Higher Risk:**
|
|
|
|
9. **OTA feature rework** (#509)
|
|
- Compare implementations, may need reconciliation
|
|
- crosspoint-ef has different OTA changes
|
|
|
|
10. **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:**
|
|
|
|
1. **Dictionary Support**
|
|
- Self-contained feature
|
|
- New files, minimal integration points
|
|
- Requires shipping dictionary data
|
|
|
|
2. **Bookmark System**
|
|
- Clean implementation
|
|
- New files with reader integration
|
|
|
|
3. **Quick Menu**
|
|
- Simple overlay feature
|
|
- Depends on bookmark and dictionary
|
|
|
|
4. **CSS Parsing**
|
|
- Significant EPUB improvement
|
|
- Well-isolated in `lib/Epub/Epub/css/`
|
|
|
|
**High Value, Higher Complexity:**
|
|
|
|
5. **Inline Image Support**
|
|
- Major EPUB enhancement
|
|
- Multiple new converters
|
|
- Memory management considerations
|
|
|
|
6. **Library Search**
|
|
- Integrated into MyLibraryActivity
|
|
- Tab bar changes included
|
|
|
|
7. **Enhanced Web Server**
|
|
- Large changes to CrossPointWebServer
|
|
- New API endpoints
|
|
- WebSocket uploads
|
|
|
|
**Medium Value:**
|
|
|
|
8. **Custom Fonts**
|
|
- Large binary additions (font headers)
|
|
- Clean integration
|
|
|
|
9. **Display Enhancements**
|
|
- High contrast, bezel compensation
|
|
- Settings additions
|
|
|
|
10. **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:
|
|
|
|
1. **EPUB Reading**
|
|
- Page navigation
|
|
- Chapter selection
|
|
- CSS styling
|
|
- Image rendering
|
|
- Bookmark indicators
|
|
|
|
2. **Library Functions**
|
|
- Tab navigation
|
|
- Search functionality
|
|
- Recent books display
|
|
- List management
|
|
|
|
3. **Dictionary**
|
|
- Word selection
|
|
- Lookup accuracy
|
|
- Definition display
|
|
|
|
4. **Web Server**
|
|
- File upload/download
|
|
- API endpoints
|
|
- WebSocket uploads
|
|
- mDNS discovery
|
|
|
|
5. **Settings**
|
|
- All new settings persist correctly
|
|
- Settings migration from older versions
|
|
|
|
6. **Display**
|
|
- High contrast mode
|
|
- Bezel compensation (all orientations)
|
|
- Sleep screen variations
|
|
|
|
### Memory Testing
|
|
|
|
crosspoint-ef includes memory optimization fixes. After merge:
|
|
|
|
1. Test with large EPUBs (2000+ chapters)
|
|
2. Test opening multiple books in sequence
|
|
3. Test anti-aliasing under memory pressure
|
|
4. Monitor for ghosting/artifacts
|
|
|
|
---
|
|
|
|
## Priority Recommendations
|
|
|
|
### Immediate (For crosspoint-ef Stability)
|
|
|
|
1. Cherry-pick Spanish hyphenation (#558)
|
|
2. Cherry-pick multi-line keyboard entry (#567)
|
|
3. Cherry-pick italics on image alt (#569)
|
|
4. Cherry-pick front layout fix (#564)
|
|
|
|
### Short-term (Feature Completeness)
|
|
|
|
5. Evaluate OTA rework (#509) - compare implementations
|
|
6. Cherry-pick page turn UX (#451)
|
|
7. Cherry-pick relative position fix (#486)
|
|
|
|
### Long-term (Upstream Contribution)
|
|
|
|
8. Prepare dictionary feature as PR
|
|
9. Prepare bookmark system as PR
|
|
10. Prepare CSS parsing as PR
|
|
11. 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:**
|
|
1. First, bring crosspoint-ef up to date with 0.16.0 bug fixes
|
|
2. Then, evaluate individual features for upstream PR submission
|
|
3. 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.
|