Configurable ignore rules for unwanted content (e.g. sports) #20
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
I am totally uninterested in some topics (e.g. any type of sports) and don't want to see groups / articles about them, but the reader shows everything that gets aggregated.
Goal
Findings
Plan of attack
Design decisions
Filter point: display time. Aggregation keeps collecting everything; the reader (and only the reader) hides what matches. Reversible — rule tweaks apply instantly, nothing is destroyed — and it composes with the existing
hide_readfilter in the same place.Rule model: case-insensitive keyword rules. One rule per line, stored in the settings table (key
ignore_rules, newline-joined) via the #8 settings mechanism. A group is hidden when any rule matches a substring of any member article title or any of the groups tags. Tags cover curated cases (sport), titles catch untagged ones. Group-level only: a matching group disappears whole; individual articles inside non-matching groups stay.Scope note: direct URLs to ignored groups still work, and the
gnext-unread navigation will skip ignored groups so it never lands on hidden content.Plan of attack
services/ignore_rules.py:normalize_rules(split/strip/dedupe) +matches_any_rule— pure functions, unit-tested./settings/ignore-rules+ "Ignore rules" card with textarea on the settings page.index()filters ignored groups; next-unread (g) loopsget_next_aggregate_with_unreadpast ignored ones.Branch:
feat/issue-20-ignore-rules. Commits: (1):sparkles: Add ignore rules service, (2):sparkles: Add ignore rules setting with settings-page editor, (3):sparkles: Filter ignored aggregates from the reader and next-unread navigation.Implemented in PR #31 (merged as
dd1b0e1): display-time ignore rules — one keyword per line (Settings → Ignore Rules), matching group article titles and tags case-insensitively; reader index andgnext-unread navigation skip matching groups. Aggregation untouched.