← Commit history

Publish 1.2.0

Drew Owens ·9880764a19 ·2mo ago ·parent e481c30
4 files changed +31−4
README.md+28−1
@@ -65,7 +65,7 @@ boot, then prefix the install command below with Run this on whichever container will host the service:  ```bash-curl -fsSL https://wiki.adom.inc/download/adom/adom-rss-gchat/1.1.9/install.sh | bash+curl -fsSL https://wiki.adom.inc/download/adom/adom-rss-gchat/1.2.0/install.sh | bash ```  No Rust, git, or other tooling needed: the installer downloads a prebuilt@@ -115,6 +115,8 @@ list before every save, and the service hot-reloads the file each poll cycle: | Add a feed | Add feed → URL + webhook + label → Save | | Route a feed to another space | Give it that space's webhook URL | | Status-page style re-posts | Set dedup to `guid+date` |+| Cut a noisy feed down | Add `include_categories` / `exclude_categories` |+| Stop old articles arriving as news | Add `max_age_days` | | Rename a feed's label | Edit label → Save (read-history is kept) | | Stop one feed | Remove it → Save | | Pause everything | Remove all feeds → Save (nothing is forgotten) |@@ -209,6 +211,31 @@ Settings live in `~/rss-gchat/env` on the service container (all optional): | `SEED_ON_FIRST_RUN` | `true` | Silently mark a new feed's backlog as read | | `RUST_LOG` | `info` | Log verbosity | +### Filtering a noisy feed++Some feeds mix everything together, and some re-publish old articles under+fresh ids so ancient posts arrive looking like news. Both are per-feed+settings in `feeds.json` (the editor preserves them, it just does not expose+them as fields yet):++| Key | Meaning |+|-----|---------|+| `include_categories` | Only post items carrying one of these `<category>` values |+| `exclude_categories` | Never post items carrying any of these |+| `max_age_days` | Skip items published more than N days ago |++Matching is case-insensitive. An item with no date is never dropped by+`max_age_days`, since a missing date is not evidence of staleness. Filtered+items are recorded as seen, so changing a filter later does not backfill.++```json+{ "url": "https://openai.com/news/rss.xml", "label": "OpenAI",+  "include_categories": ["Product", "API"], "max_age_days": 45 }+```++That example takes OpenAI's firehose from ~1100 items down to ~10 actual+product announcements.+ `feeds.json` format (what the editor writes):  ```json
SKILL.md+1−1
@@ -44,7 +44,7 @@ own small Adom container; no central service, no shared credentials. 2. **Install on the host container** (one-liner, no Rust/git needed):     ```bash-   curl -fsSL https://wiki.adom.inc/download/adom/adom-rss-gchat/1.1.9/install.sh | bash+   curl -fsSL https://wiki.adom.inc/download/adom/adom-rss-gchat/1.2.0/install.sh | bash    ```     The installer prints the exact next steps. It also authenticates its own
package.json+1−1
@@ -2,7 +2,7 @@   "slug": "adom-rss-gchat",   "title": "RSS to Google Chat",   "type": "app",-  "version": "1.1.9",+  "version": "1.2.0",   "description": "Post new RSS feed items straight into your Google Chat spaces. A small always-on poller with a pinnable web editor: click the link in your space, add or edit feeds, Save \u2014 live within one poll cycle. Per-feed dedup handles both news feeds (post once) and status pages (re-post on updates).",   "tags": [     "rss",
page.json+1−1
@@ -2,7 +2,7 @@   "slug": "adom-rss-gchat",   "title": "RSS to Google Chat",   "type": "app",-  "version": "1.1.9",+  "version": "1.2.0",   "description": "Post new RSS feed items straight into your Google Chat spaces. A small always-on poller with a pinnable web editor: click the link in your space, add or edit feeds, Save — live within one poll cycle. Per-feed dedup handles both news feeds (post once) and status pages (re-post on updates).",   "tags": [     "rss",