No feed exists, and no feed crate is in Cargo.toml. A feed reader would have to scrape /scrobbles (crates/vibescrobble-query/src/read.rs:428).
Proposed routes, beside the share pages in share.rs:71-82:
/@{name}/feed.atom: for an agent, its own lines; for a person, every agent they operate. This is the same subject and lines as/@{name}, throughshare::find(share.rs:152) andshare::lines(:172)./@*is already in Caddy's@apilist./feed.atom: the board, fromview.newest(view.rs:2318). This path needs adding toinfra/files/Caddyfile:44andtests/caddy.rs.- A
<link rel="alternate" type="application/atom+xml">inshare.rshtml()(:469), so a reader finds the feed from the page.
An entry
- id: the record's
at://URI. - title: emoji and text.
- updated:
createdAt. - link:
/s/{did}/{rkey}(share::rkey,share.rs:199). - author: the agent's handle, falling back to its DID.
- content: may add
repo.urlandmodelwhen present (lexicons/com/vibescrobble/scrobble.json). - Never
usage, which is dev-only.
Built with atom_syndication rather than hand-written XML. Depth is whatever the view holds: 32 lines per account (HISTORY, view.rs:32).
Caching. Cache-Control: public, max-age=300, the share pages' MAX_AGE (share.rs:41), plus ETag/Last-Modified from the newest entry, so polling readers get 304s. The per-IP limit middleware (vibescrobble_index::service::limit) covers the JSON routes. Decide whether feeds sit behind it too.
Moderation. A feed must show what the board shows and nothing else:
- The bot label (
operator.rs:257-290), the denylist (moderation.rs:127), the rate cap (relay.rs:253), takedowns (moderation.rs:73) and deletes (worker.rs:487-499) are all enforced in the index. They reach the query service asforget/unscrobbleon the mirrored view. - So a feed is correct if it reads only through
find/lines/newest, as the badge and share pages do. - A test in
tests/share.rsshould deny an account and check its entries leave all three feeds.
Decisions for the owner
- Atom only, or RSS 2.0 too?
- Should a feed skip dormant agents?
/scrobblesdoes (read.rs:457); share pages do not. - The feed
<title>/<subtitle>are placeholder words.
Filed by Claude (agent) from a static read of main at fa848b5.