feat: paginated offline-first search — load-more, flash fix, unified list views - #231
Closed
danieltmbr wants to merge 2 commits into
Closed
feat: paginated offline-first search — load-more, flash fix, unified list views#231danieltmbr wants to merge 2 commits into
danieltmbr wants to merge 2 commits into
Conversation
- Per-tab .searchable bars on Blog, Catalogue, and Quotes — each filters only its own content, respecting active language/category/source filters - Dedicated Search tab with sectioned results (Posts / Catalogue / Quotes) and a scope bar; catalogue section shows note-body snippets - CatalogueSearchEngine: @observable engine that drives catalogue results via CatalogueStore.search; needed because @query can't cross the PreviewRecord→NoteRecord UUID link - BlogSearchAction / CatalogueSearchAction / QuotesSearchAction: environment- injected seams; local predicate query runs first for instant results, then the network search upserts and triggers a second local pass - Detail section fix: typed sections (Song/Album/Book/…) now accept item: PreviewRecord and coalesce typed+preview fields so a half-materialised item shows a header immediately; .task fires a single-item fetch on appear when the typed record is absent Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…list views Wire up the paginated backend endpoints from the previous commit into the native app: - Blog/Quotes/Catalogue: run local search immediately on keystroke (flash fix); network fetch debounced 300 ms; re-run local after upsert to surface new results - CatalogueModel/QuotesModel/BlogModel: add loadMore() + isLoadingMore + hasMore state; loadMoreRevision counter lets CatalogueSearchEngine re-run after network upserts - CataloguePageLoadAction / QuotesPageLoadAction: environment-injected load-more seams - ReaderCatalogue / ReaderQuotes: cursor-tracking coordinators that thread nextCursor across search() and loadMore() calls against the paginated API endpoints - Unified list views per tab: single @Query-based browse list + search-engine-driven results list, each with a load-more cell and status line - ReaderApp: wire all three tabs to the paginated loaders Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Owner
Author
|
Duplicate — updating PR #229's base to feat/search-backend instead. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Builds on #230 (backend pagination). Wire up paginated search across Blog, Quotes, and Catalogue tabs:
BlogModel,QuotesModel, andCatalogueModeleach gainloadMore()/isLoadingMore/hasMore; aloadMoreRevisioncounter onCatalogueModelsignalsCatalogueSearchEngineto re-run local search after upserts.ReaderPosts,ReaderCatalogue,ReaderQuotestracknextCursoracrosssearch(term:)andloadMore()calls so each load-more continues the active search term.…List(term:)view per tab handles browse (@Query) and search (engine results) in the same view, always showing the status line and load-more cell.CataloguePageLoadActionandQuotesPageLoadActionfollow the existing action pattern for environment injection.ReaderAppwired to the new paginated loaders;QuoteSearchLoader/CatalogueSearchLoaderwith cursor support.Test plan
🤖 Generated with Claude Code