Skip to content

✨ feat(reader): browse highlights and jump to saved passages - #165

Merged
vitofico merged 1 commit into
mainfrom
codex/highlight-navigation
Oct 30, 2026
Merged

vitofico merged 1 commit into
mainfrom
codex/highlight-navigation

Conversation

@vitofico

@vitofico vitofico commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Adds More → Highlights in the EPUB reader. The current book’s list shows saved quotations, semantic colours and locations in reading order. Quotations remain selectable and can expand; invalid or unavailable locations keep their saved text visible.

Selecting a row opens its exact canonical range, including repeated text and selections far into a long paragraph. The mounted reader is retained while the list is open. Cancellable navigation protects saved progress while loading a chapter, validates the destination, and restores the prior reading location on failure; an unverified rollback keeps the bookmark protected until the reader is reopened. Rotation retains the existing resize/reanchor policy.

Jump navigation supports horizontal-text reflowable EPUBs. Fixed-layout and other writing-mode quotations remain readable/selectable without a guessed jump.

This completes the list/navigation increment separately from sync and notes. Exact navigation spans reader readiness, DOM geometry and progress/rollback state; targeted tests accompany each layer.

Component(s)

  • Android app
  • Sync server
  • Documentation
  • CI / build

Validation

  • Production Kotlin and debug APK build passed; APK contains the frozen production helper and excludes test EPUBs/spike activity.
  • App/reader debug checks passed, including nine list UI cases, twelve navigation transactions and three viewport/progress regressions.
  • All 26 browser regressions passed, including duplicate ranges, late text in one paragraph, reflow, RTL/fractional page geometry, origin pins, mixed snapshot rejection and textless-origin fallback.
  • Independent source and final native-evidence review passed with no unresolved findings. API36 native checks passed: per-book list/Back and isolation/empty state; unavailable-quote display and wrapped-prose expansion/collapse; exact second duplicate, second cross-paragraph pair and offset 7473 in a repeated long text node; 130% font/Dark reflow; page-turn and relaunch bookkeeping. A stale cross-resource target stages its chapter, restores the loaded textless cover, and preserves the durable locator.
  • Server/shared identity/schema sources are unchanged; reuse the validated PR1 server suite (990 passed and Ruff clean) against the identical server Git tree.
  • Pre-commit passed on all 29 PR files.
  • Full Android CI and CodeQL passed on 9613ae6: debug/release builds, all unit tests, lint, license drift, repository guards and release tooling checks. The release job is correctly skipped for a PR.

Screenshots

Reader before More menu Per-book list
Reader before highlights list Reader menu with Highlights entry Current book highlights list

Actual API36 screenshots use the original synthetic test book; the list shows the surviving native Copper highlight.

Checklist

  • Tests added or updated
  • Docs updated in the same PR
  • Android UI screenshots attached
  • Server schema migration: N/A, server unchanged
  • core/identity algorithm/shared fixtures: unchanged
  • No new runtime SDKs, analytics or telemetry
  • Commit messages follow gitmoji + conventional commits

Related issues

Refs #143. PR 2 follows the highlighting/mode/Copy as quote foundation in #164.

@vitofico
vitofico marked this pull request as ready for review October 30, 2026 16:39
@vitofico
vitofico merged commit 656376b into main Oct 30, 2026
5 checks passed
@vitofico
vitofico deleted the codex/highlight-navigation branch October 31, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant