Releases: gnacho/ocnews
Release list
v0.1.7
v0.1.7 — RSS reader comparison features
Feature batch derived from a feature comparison with Miniflux, FreshRSS, Tiny Tiny RSS, NewsBlur and CommaFeed.
Features
- #34 Keyboard shortcuts for navigation and actions (j/k, o/Enter, m, f, v, g u/b/p, a, r, /, ? help overlay).
- #35 Per-feed and global block/keep filters with regex on title, URL, author, content and date (future / before / after / between / max-age).
- #36 Saved searches surfaced as virtual feeds in the sidebar.
- #37 Privacy: strip tracking parameters (utm_*, fbclid, gclid…) from URLs and drop tracking pixels from content.
- #38 Push notifications for new articles via ntfy (per-user topic or server default).
- #39 Per-feed CSS scraper selectors for full-text extraction, with automatic extraction as fallback.
- #40 Rules to auto-mark articles as read on arrival (by feed and/or title regex).
- #41 Nested folders (subfolders); deleting a parent moves children back to the root.
- #42 Story clustering: group duplicate stories across feeds and show a count badge.
- #43 Share individual articles via a public URL (token-based, revocable).
- #44 WebSub (PubSubHubbub) support for real-time feed updates with HMAC signature verification.
Backend
- 8 schema migrations (011-018), new packages
privacy,rules,notify,websub. - New env vars:
OCNEWS_PUBLIC_URL(WebSub callbacks),OCNEWS_NTFY_URL,OCNEWS_NTFY_TOPIC. - Dependency added:
PuerkitoBio/goquery(scraper selectors).
Extension
- New dialogs (rules, scraper, auto-read, shortcuts help), saved-search sidebar entries and new Settings fields (ntfy topic, global rules).
- ES translations updated (161 msgids).
Full CI (test + lint + security) green.
v0.1.6
What's changed
Validated batch of fixes and features (PR #30, closes #23-#29):
Dark theme fixed (#23)
Text and icons no longer keep the host colors when the reader theme differs from the OpenCloud theme. The app now overrides the host's --oc-role-* tokens on its own root for both light and dark, so paragraphs, headings, dialogs, links and buttons always follow the app palette.
Reader typography (#24, #25)
- Article list titles: 17px. Article detail title: 17px. Article body base: 15px.
- New per-user settings for reader font family (default, serif, sans-serif, monospace) and font size (13-20 px).
- Closing an article (or opening the app) shows a centered empty state with the app icon instead of a blank pane.
- The settings dialog is now called "News settings".
Feeds behind HTTP Basic auth (#27)
- Subscribe with optional username/password (the Android client can too:
POST /feedsaccepts the same keys). - If a feed answers 401/403, the app asks for credentials automatically.
- Edit or remove credentials later from the feed menu. Empty password keeps the current one.
- Passwords are stored encrypted (AES-256-GCM, key in the server data dir) and never leave the API.
Article actions (#26)
Read, star, full-article and open-original icons in the article header are aligned and larger (20px).
Folders and discoverable entries (#28, #29)
- Folder creation, renames and move-to-folder now use in-app dialogs instead of
window.prompt(which the host can suppress). - Move to folder uses a folder picker.
- The settings gear is now a labeled button; "New folder" shows its label.
Backend: full test suite green with -race (cipher, Basic auth fetch, credentials API flow). CI: test, lint and security all pass.
v0.1.5
v0.1.4
v0.1.3
v0.1.2
v0.1.1
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).