ocnews v0.50.0
ocnews v0.50.0 — Advanced options, security audit and CI
First tagged release. This batch implements the advanced options of a Nextcloud-News-style reader, hardens the backend and adds CI.
Features
- Feed keyword filtering (News 28.4.0): per-feed title/body/URL keywords hide matching articles (
/feeds/{id}/filter), with a dialog in the feed context menu (closes #1). - Article search:
GET /items/searchover title/body/URL with selection scoping, and a search box in the list header (closes #2). - Feed discovery:
GET /feeds/discover?url=auto-detects a site's RSS/Atom feeds; subscribing a non-feed URL offers the detected feeds (closes #3). - Podcasts: feeds with audio/video enclosures are flagged and listed in a dedicated Podcasts view with in-app playback (closes #4).
- Per-feed retention:
retention_daysoverride per feed, purged by the scheduler alongside the global cutoff (closes #5). - User settings: theme, reader width and refresh interval per user, persisted via
/api/me/settingsand applied to the reader (closes #6). - Extension UI: color favicons, relative times, article snippet previews, resizable headlines column, app favicon on the browser tab.
Security
- SSRF guard: a
netguardtransport rejects private/loopback/link-local/metadata IPs on every outgoing fetch (feeds, favicons, image proxy, extraction, discovery) (closes #7). - Favicons served from the backend cache via a public read-only route (closes #8).
- Discover cleanup: single-fetch implementation, redundant guard removed (closes #9).
Accessibility
- Dialogs expose
role=dialog/aria-modal; the feed options button is always visible (touch reachable); the multi-feed discover picker replaces a fragile prompt (closes #10).
CI
- GitHub Actions:
go vet,go test -race -shuffle,go mod tidycheck, golangci-lint (new issues only), gosec (SARIF) and blockinggovulncheck. Go bumped to 1.25.13 (fixes 28 stdlib vulnerabilities).