Project direction

Roadmap & Scope

How CrossPoint is evolving, what we're focused on, and where we're intentionally drawing the line.

0
Close-out
1
Footprint
2
Multi-device
3
Reading

Roadmap

Phased path forward

CrossPoint transitions from its current state into the tighter scope below in sequential phases. We close out commitments already in flight before locking down to the stricter "fill gaps the stock firmware leaves" delineator. Phases are sequential — we do not start the next phase until the prior one is wrapped or explicitly carried over.

  1. 0
    In progress Phase 0

    Close Out Legacy Scope Items

    Goal: Land the work already in motion under the prior, broader scope so contributors are not left hanging, and so we enter the stricter phases with a clean slate.

    In Phase 0

    • RTL support PRs currently open — reviewing, iterating, and merging the in-flight right-to-left work.
    • Dictionary PR — offline dictionary lookup work.
    • Bookmarks — first-class navigation markers in EPUBs.
    • Transparent sleep screens (potential) — in if it lands clean, shelved if it stalls.

    Exit criteria

    • RTL, dictionary, and bookmarks PRs are merged or explicitly closed with a reason.
    • Transparent sleep screens merged or shelved.
    • No other "legacy scope" features accepted during this phase.

    Once Phase 0 closes, the tighter scope is fully enforced. "But it was on the old roadmap" is no longer a valid argument.

  2. 1
    Up next Phase 1

    Consolidation & Footprint

    Goal: Reduce memory and flash usage and clean up the codebase so that future device support and reading-quality work has room to breathe.

    Focus areas

    DRAM & heap fragmentation reduction
    Flash footprint reduction
    HAL / SDK boundary refactors
    Themes → SD-loaded assets
    Closed during phase New built-in themes New network connectors
  3. 2
    Planned Phase 2

    Multi-Device ESP32 Support & Recovery Bridge

    Goal: Land the SDK / HAL generalization work so CrossPoint runs cleanly on ESP32-based e-reader hardware beyond Xteink (X3 / X4), including ESP32-S3 class devices. In parallel, lay the groundwork for CrossPoint to act as a safe bridge onto community firmware for users on locked devices.

    Focus areas

    Pluggable per-device SDK layers
    Per-device build configuration
    New ESP32 target documentation
    Bootloader / recovery bridge

    Bootloader / recovery bridge: a workflow that helps users on locked devices reach community firmware (CrossPoint or other forks) without bricking. Includes a recoverable fallback when a flash goes wrong. Fork-neutral — CrossPoint should be a bridge, not a trap. Driven by @jeremydk alongside the SDK abstraction work.

    Depends on Phase 1 cleanup landing first; otherwise we generalize a moving target.

  4. 3
    Future Phase 3

    Reading Experience Deepening

    Goal: With the codebase smaller and portable, invest in the things only a focused reader firmware should do: EPUB rendering, typography, hyphenation, layout edge cases, and gap-filling for languages and scripts that neither stock nor other CrossPoint forks handle well.

    Focus areas

    EPUB parsing & rendering
    Typography (fonts, hyphenation, justification)
    Underserved languages & complex scripts
    E-ink driver refinement (ghosting, partial updates)

Out of roadmap

Explicitly not on the roadmap. May live in other CrossPoint forks; won't be picked up here.

Interactive apps (games, calculators, notepads) Writing / authoring tools Active connectivity (RSS, news, browsers) PDF rendering as first-class format

How this roadmap changes

Scope

Project Vision & Scope

The goal of CrossPoint Reader is to create an efficient, open-source reading experience for ESP32-based e-reader devices. Xteink hardware (X3, X4) is where the project started and remains a primary target, but CrossPoint is broadening to support the wider ecosystem of small ESP32 e-ink readers. A dedicated e-reader should do one thing exceptionally well: facilitate focused reading.

1

Core Mission

A lightweight, high-performance firmware that maximizes the potential of ESP32-based e-reader hardware, prioritizing legibility, performance, and usability over "swiss-army-knife" functionality. Not a kitchen-sink firmware. Not Xteink-only. Device-specific code lives behind the HAL / SDK boundary so the reader core stays portable across ESP32-C3, ESP32-S3, and adjacent variants.

2

Guiding Principle

Fill the gaps the stock firmware leaves.

  • • Stock firmware already does it well? We won't duplicate it.
  • • Another popular fork solves it well? We defer rather than fragment.
  • • Doesn't improve reading or long-term maintainability? Out of scope.

Language priority: English first, then languages where stock firmware fails or forks haven't addressed gaps.

3

Current Focus

Until further notice

Intentionally narrowing scope to consolidate the codebase as we open it up to more ESP32 e-reader devices.

Memory footprint

DRAM & heap. ESP32-C3 sets the ceiling.

Flash footprint

Room for more device targets & features.

Code cleanup

Refactors, dead code, tighter abstractions.

Reading experience

EPUB, typography, hyphenation, legibility.

Temporarily closed

New themes (theming surface is frozen) and new external network connectors (sync engines, cloud storage, OPDS extensions, remote file access). Open a Discussion first if you're unsure.

4

Scope

In-scope Improves reading or maintainability
  • EPUB Rendering & Optimization

    Rendering engine, CSS/image handling, parsing performance.

  • Typography & Legibility

    Fonts, hyphenation, spacing, margins.

  • E-Ink Driver Refinement

    Fewer full-screen flashes, better ghosting management.

  • Reading UX

    Bookmarks, progress, button mapping, navigation.

  • Library Management

    Simple, intuitive local-collection organization.

  • Local Transfer

    Pull-based loading via web server or widely-used standards.

  • Reference Tools

    Local, offline dictionary lookup.

  • Memory, Flash & Code Quality

    Refactors that reduce resource use, even without a user-visible feature.

  • Bootloader / Recovery Bridge

    Helps users on locked devices reach any community firmware safely.

Out-of-scope Compromises stability or mission
  • Interactive Apps

    No notepads, calculators, or games.

  • Writing / Authoring Tools

    Input hardware and RAM are wrong for this.

  • Active Connectivity

    No RSS, news aggregators, or web browsers.

  • Media Playback

    No audio players or audiobooks.

  • Complex Annotation

    No typed-out notes.

  • Stock-firmware duplication

    If it already works well, we don't reimplement it.

  • Fork duplication

    If another popular fork solves it well, we defer.

  • PDF Rendering

    Fixed layout makes for a poor e-ink reading experience on this hardware class.

5

Idea Evaluation

Before proposing a feature, ask:

  1. 1Does the stock firmware already handle this well? If yes, we pass.
  2. 2Does another popular CrossPoint fork already handle this well? If yes, we usually defer.
  3. 3Does it improve the core reading experience, or reduce memory / flash / code complexity?
  4. 4Is it in one of the temporarily closed areas? If yes, wait.
  5. 5Would adding it make the codebase harder to clean up or port to other devices? If yes, rework or defer.
Note to contributors: CrossPoint is intentionally narrow. "It would be cool if..." features are not enough; the bar is "this fixes something the stock firmware does poorly, or it makes the firmware leaner and easier to maintain."
6

Calls to Action

Where contributor help is most valuable right now. Open a Discussion or issue first so we can coordinate.

Theme System: Move Themes Off-Firmware

Help wanted

Abstract themes out of firmware so they load from SD card instead of consuming flash.

Status: @itsthisjustin plans to take this on eventually but is open to someone claiming it sooner.

SDK Abstraction for All ESP32 E-Readers

In progress

Generalize SDK layers (display, input, storage, battery) away from Xteink-specific assumptions.

Status: @jeremydk is actively working. Coordinate before touching open-x4-sdk/ or lib/hal/.

Bootloader / Recovery Bridge for Locked Devices

In progress

Bootloader / recovery-flash workflow that lets users reach any community firmware without bricking, with a recoverable fallback when a flash goes wrong.

Status: @jeremydk alongside SDK abstraction. ESP32 bootloader / OTA experience welcome.

Identifying Other Stock-Firmware Gaps

Help wanted

Catalogue what stock (and other popular forks) handle poorly: RTL text, underserved languages, rendering edge cases, accessibility, input quirks.

Feedback even without code is genuinely useful — open a Discussion with screenshots, sample EPUBs, and expected vs actual behavior.

7

Funding & Contributor Sustainability

CrossPoint uses Royalty.dev (a product built by @itsthisjustin) to fund contributors. There has been some tension in the community around this, so the intent is being clarified here directly.

Why we do this

  • • Long-term contributor interest, in response to community requests for a way to give back.
  • • Motivate investment in the core project rather than spinning up competing forks.
  • • Pay for new ESP32 devices to port CrossPoint to additional hardware.
  • • Give the project a credible long-term path to sustainability.

How it works

  • • Distributed automatically based on impact and tenure.
  • • Over $600 raised in the first few days of opening funding.
  • • Scoring methodology is published at app.royalty.dev/transparency.

This is not fixed in stone. Weighting, eligibility, and distribution rules can be tweaked. If you have concerns or suggestions, open a Discussion. The goal is a system that fairly recognizes the people doing the work, not a perfect one on day one.