From ecdb45778e274126737aa87e27ed1b1c00cda01c Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Thu, 23 Jul 2026 07:38:28 +0000 Subject: Rebrand to FeeDreader; overflow-menu cleanup; deferred read-marking; folder-organized feed list - Rename app to FeeDreader with an owl launcher icon and a paywall-avoidance note in Settings - Move Open original/Save to Stash into the reader's overflow menu; add Mark unread there too - Only mark an article read when navigating away via Previous/Next, not on open or on back - Saved list no longer crosses out read items; its count includes them - Back from Unread (the root screen) now opens the feed list instead of exiting the app - Feed list: clearer separator above the per-feed list, folder grouping (from OPML categories) with case-insensitive sort, and a virtual "Last fetch failed" section at the top - Reader extraction: cap unsized decorative SVG icons (fixes Ars Technica's giant section-badge icon), force native loading="lazy" images to load eagerly in the hidden extraction WebView, and drop a lightbox's duplicate caption only when a real figcaption sibling exists - Backlog notes on swipe-to-next research, extraction test coverage, and an async-rendered-gallery race confirmed live on Ars Technica Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01EZ7ikw2ukGJFTHE3bJS7zL --- app/src/main/java/org/terst/feedreader/data/Daos.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'app/src/main/java/org/terst/feedreader/data/Daos.kt') diff --git a/app/src/main/java/org/terst/feedreader/data/Daos.kt b/app/src/main/java/org/terst/feedreader/data/Daos.kt index 22f1d22..0b763e1 100644 --- a/app/src/main/java/org/terst/feedreader/data/Daos.kt +++ b/app/src/main/java/org/terst/feedreader/data/Daos.kt @@ -10,10 +10,10 @@ import kotlinx.coroutines.flow.Flow @Dao interface FeedDao { - @Query("SELECT * FROM feeds ORDER BY title ASC") + @Query("SELECT * FROM feeds ORDER BY title COLLATE NOCASE ASC") fun observeAll(): Flow> - @Query("SELECT * FROM feeds ORDER BY title ASC") + @Query("SELECT * FROM feeds ORDER BY title COLLATE NOCASE ASC") suspend fun getAll(): List @Query("SELECT * FROM feeds WHERE id = :id") @@ -98,6 +98,11 @@ interface ArticleDao { @Query("SELECT $ARTICLE_LIST_COLUMNS FROM $ARTICLE_LIST_FROM WHERE articles.isSaved = 1 ORDER BY articles.createdAt DESC") fun observeSaved(): Flow> + // The Saved count is a "how much is on my shelf" total, not an unread badge -- + // includes already-read articles, unlike every other count in this DAO. + @Query("SELECT COUNT(*) FROM articles WHERE isSaved = 1") + fun observeSavedCount(): Flow + @Query("SELECT * FROM articles WHERE id = :id") suspend fun getById(id: String): ArticleEntity? -- cgit v1.2.3