Bookshelf

eu.decentnewsroom.bookshelf
by Decent Newsroom ['dn@decentnewsroom.com']

E-reader for Nostr books.

Bookshelf is a calm e-reader for discovering, saving, and enjoying books. It turns an open publishing network into a personal pocket library: browse curated shelves or search the public catalog, open a book, settle into a comfortable chapter view, and keep the titles you care about close at hand.

First release: Aug 27, 2026, 20 total releases.

Most recent release: Sep 27, 2026.

Repo

Appears in 3 app stacks.

21,000 sats / 1 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Sep 27, 2026 0.1.26
    - Hide the More like this Retry button when the book edition is not indexed for recommendations. - Fit the opening cover card to the artwork's proportions and fill it edge to edge, preventing the fallback background from peeking around the image. - Show a large, generously padded cover while opening a book, with a full-title-and-author fallback when artwork is missing, loading, or unavailable. - Jump directly to the selected chapter from the table of contents instead of animating through intervening chapters. - Replace Include book contents with Search book contents: enabled searches chapter text only, validates 4–160 characters, and shows the full-text hint beside the toggle. - Keep content search matches together in one result card containing the book header, matching chapter, excerpt, and Open matching chapter action. - Replace separate cache-clear buttons in Settings with selection toggles and one Clear selected caches action, including a combined confirmation and per-cache failure reporting. - Add Rate and review directly after See details in the book menu, opening the review form with the active reader's cached review ready to edit. - Add a publication type, chapter count, and Read card above community ratings in book details, while retaining type and chapter count in the metadata. - Embed More like this below community ratings as a carousel shared with Home, with cached results shown immediately and independent loading, offline, and retry feedback.
    More…
    - Persist recommendations in a separate bounded 24-hour cache, retain stale results offline or on refresh failure, and expose independent storage statistics and clearing in Settings. - Simplify Search to all publication metadata by default, with an optional Include book contents toggle instead of scope buttons. Keep the toggle for the current app session and support `content:` for chapter-only searches. - Give full-text chapter searches a two-minute read timeout instead of 20 seconds so expensive queries have more time to return results. - Make the stalled-response cancellation regression test observe body-source reads directly instead of relying on HTTP event-listener timing. - Add All, Title, Author, Subject, and Inside books search controls, visible partial-result notices, and an explicit action to open a matching chapter after normal reader loading. - Align search validation with the extended Books API, reject unrelated parent-book matches, reconcile chapter hits with current publication revisions, and stop discovery requests while offline. - Add More like this in book details with verified, server-ranked recommendations, local saved-book filtering, a bounded session cache, and independent offline/error/retry states. - Cancel discovery HTTP work when dismissed or superseded, including response reads and fallback attempts, and preserve reader resume when a matching chapter is unavailable. - Search the active user's verified NIP-65 read relays alongside configured relays for community ratings and recent-rating suggestions. - Show cached community-rating summaries immediately in book details, while publisher and relay refreshes continue independently. - Include profile aggregator alongside the current read relays, to improve publisher and reviewer profile lookup.
  • Sep 23, 2026 0.1.25
    - Let signed-in readers edit their own book rating and written review from Community ratings. Prefill the composer from their current review, save the signed revision to the durable review outbox, and show the updated rating from the local cache. - Show cached community ratings immediately, refresh them in the background when online, and replace older revisions by the newest `kind:pubkey:d` event in both the list and rating cache. Compact old cached revisions locally in the background at app startup, including offline. - Normalize pasted `nostr:naddr` references before Search resolves their exact publication coordinates. - Add a **Delete** action for saved private highlights. Queued or published highlights remain protected because their immutable signed events may still be delivering. - Keep validated online/offline status stable while Android hands the default network between Wi-Fi, cellular, and VPN transports.
  • Sep 22, 2026 0.1.24
    - Improve reader resume precision by persisting the in-chapter pixel offset, and make fresh reading progress start at 0% instead of counting the first chapter as complete. - Move the Reading & Display preview beneath its controls, give it a theme-aware border, and add text alignment to the in-reader controls. - Give secondary actions a theme-aware filled background so their padded touch targets align visually with adjacent controls. - Present the Settings About source-code destination as a text link with the repository name. - Cap the reader's tap-to-reveal-menus hint at one lifetime impression, persist it when shown, and add a **Got it** dismissal control. - Split the Compose UI into bounded feature, reader, shared-component, and signer-effect packages while keeping BookshelfApp as the composition root. - Restore the Home feed's scroll position after opening a book and returning to Home. - Cache successfully opened saved books for offline reading, use cached chapters before remote fallbacks, and present source-neutral offline availability notices in the reader. - Publish highlights with NIP-22 root tags for their kind `30040` book index and parent tags for the kind `30041` chapter containing the quote.
  • Sep 21, 2026 0.1.23
    - Treat relay duplicate acknowledgements as successful immutable-highlight delivery so retries can complete. - Change Settings behavior, so Back gesture from details navigates to main settings list.
  • Sep 21, 2026 0.1.22
    - Align Settings headers with the main app content and use the edge Back gesture to return Home. - Improve highlights context menu.
  • Sep 21, 2026 0.1.21
    # Changelog All notable user-facing changes to Bookshelf are documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and versions follow [Semantic Versioning](https://semver.org/). ## [Unreleased] ## v0.1.20
    More…
    - Reorganize Settings into dedicated Reading, Account, Sources, Relays, Storage, and About screens. - Add persistent reader font and paragraph alignment controls with a live preview. - Show pending publications, offline state, and safe cache actions alongside the existing account and relay configuration. - Highlights - Add validated-offline rating reads, durable locally saved review delivery, optional local Citrine publication, and automatic deferred relay synchronization. - Resolve cached and refreshed Nostr author profiles in community review details, displaying reviewer names when available. ## v0.1.20 - Look up verified reviews for library cards and full books exclusively through interoperable `a`/`A` publication-address tags; publication emits its namespaced `d` convention plus companion `k=30040` and publication-author `p` tags. ## v0.1.19 - Clarify Mercury book-opening APIs by naming the resolved-index operation `openBook`. - Keep zero-chapter kind `30040` publication indexes discoverable as library cards, label them as full text unavailable, and prevent them from opening the reader. - Publish and read rating events using each publication index's declared type for the namespaced d target and m tag, defaulting to `book` when unset. ## v0.1.18 - Accept pasted NIP-19 publication `naddr` references in Search, resolve their exact coordinates through secure relay hints and configured read relays, and retain the API fallback. ## v0.1.17 - Expose transient community-rating summaries on book summaries, hydrated through the dedicated ratings repository. - Add verified R1 book-rating parsing, aggregation, Quartz relay reads, and the Community ratings details flow. - Route rating publication to configured defaults, the active user's write relays, and the publication author's NIP-65 read relays. - Accept inclusive normalized rating endpoints `[0, 1]` as an explicit compatibility policy pending R1 clarification. - Show rating-cache size, event count, and last successful sync in Settings, with an independent safe clear action. ## v0.1.16 - Display the current app version beneath the Settings sections. - Open books by tapping the card and show My Books, publication details, and configured local-relay actions on long press. - Show publisher profile information and parsed publication/event metadata in a book details modal. - Queue and broadcast the original signed book index and all available signed chapters to the configured local relay. - Replace the deprecated plain-tooltip position provider with the positioned Material 3 tooltip API. ## v0.1.15 - Move bookshelf synchronization actions from Account to the Relays Settings section. - Confirm when the optional local relay is saved or disabled from Settings. - Add persistent contextual tooltips for saving books to My Books and revealing reader navigation and settings menus by tapping the reading view. ## v0.1.14 - Make the system Back gesture return every non-Home page to Home, including cancelling a pending book open. - Reorganize Settings into collapsible Appearance, Account, Relays, and Cache sections, including read-only NIP-65 relay visibility and an optional local Citrine relay. - Add Compose Material Icons Extended for app iconography. - Make Sepia the default theme for new reader preferences. ## v0.1.13 - Discover verified NIP-65 user relay lists and route reads and directory publishing to the account's read and write relays. - Migrate directory, profile, and known-relay publication-index traffic to Quartz's shared Nostr relay client. - Show relay-specific directory sync outcomes and bounded rejection reasons instead of a generic no-acceptance error. - Move persistent chapter retrieval to Quartz relay subscriptions, preserving relay hints and Mercury fallback. ## v0.1.12 - Add a Home **Continue reading** card for the most recently opened saved book, including durable chapter progress and resume behavior. - Fix signed local bookshelf directories being rejected before publication because their required publish-only metadata was compared as an editable collection tag. - Add an explicit, retryable **Sync to relays** action for publishing the current local My Books directory after signer or relay failures, while retaining a separate pull action. ## v0.1.11 - Open saved independently published books from their resolved kind `30040` index, including its chapter relay hints, when Mercury does not mirror that index event. - Show book-opening errors on the My Books screen instead of silently returning to the saved-books list.
  • Sep 11, 2026 0.1.20
    - Look up verified reviews for library cards and full books exclusively through interoperable `a`/`A` publication-address tags; publication emits its namespaced `d` convention plus companion `k=30040` and publication-author `p` tags.
  • Sep 11, 2026 0.1.19
    - Clarify Mercury book-opening APIs by naming the resolved-index operation `openBook`. - Keep zero-chapter kind `30040` publication indexes discoverable as library cards, label them as full text unavailable, and prevent them from opening the reader. - Publish and read rating events using each publication index's declared type for the namespaced d target and m tag, defaulting to `book` when unset.
  • Sep 11, 2026 0.1.18
    - Accept pasted NIP-19 publication `naddr` references in Search, resolve their exact coordinates through secure relay hints and configured read relays, and retain the API fallback.
  • Sep 11, 2026 0.1.17
    - Expose transient community-rating summaries on book summaries, hydrated through the dedicated ratings repository. - Add verified R1 book-rating parsing, aggregation, Quartz relay reads, and the Community ratings details flow. - Route rating publication to configured defaults, the active user's write relays, and the publication author's NIP-65 read relays. - Accept inclusive normalized rating endpoints `[0, 1]` as an explicit compatibility policy pending R1 clarification. - Show rating-cache size, event count, and last successful sync in Settings, with an independent safe clear action.
  • Sep 2, 2026 0.1.16
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.15...v0.1.16
  • Sep 2, 2026 0.1.15
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.14...v0.1.15
  • Sep 2, 2026 0.1.14
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.13...v0.1.14
  • Aug 31, 2026 0.1.13
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.12...v0.1.13
  • Aug 30, 2026 0.1.12
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.11...v0.1.12
  • Aug 30, 2026 0.1.11
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.10...v0.1.11
  • Aug 29, 2026 0.1.10
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.9...v0.1.10
  • Aug 28, 2026 0.1.9
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.8...v0.1.9
  • Aug 27, 2026 0.1.8
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.7...v0.1.8
  • Aug 27, 2026 0.1.0
    **Full Changelog**: https://github.com/decent-newsroom/bookshelf-app/compare/v0.1.6...v0.1.7