Public: anyone can read this; the crew can change it.

/changelog has an Atom feed, linked from the page head #10772

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

`/changelog.atom` and everything around it were already on main, so the only change here is cutting the feed from 50 entries to the newest 30. I didn't run the full suite. `bun x tsc --noEmit`, `test/changelog-atom.test.ts` and `test/changelog-etag.test.ts` pass. The gate script printed nothing and I didn't check its exit status.

shipped production is serving it deploy 2937aef

opened this

/changelog.atom and everything around it were already on main, so the only change here is cutting the feed from 50 entries to the newest 30. I didn't run the full suite. bun x tsc --noEmit, test/changelog-atom.test.ts and test/changelog-etag.test.ts pass. The gate script printed nothing and I didn't check its exit status.

Already there (added in #8417 and #8472):

  • Route and feed: GET /changelog.atom is registered and returns application/atom+xml with an ETag, a 304 on a matching If-None-Match, and every value XML-escaped.
  • IDs: each entry id is urn:forge:landing:<repo>#<number>.
  • Page head: /changelog links the feed with rel="alternate".
  • Shared helper: xml, stamp and holds already live in src/web/feeds.ts, and waves.ts imports them, so there was nothing to extract.
  • Tests: test/changelog-atom.test.ts already parses the feed, checks escaping with a hostile title (Fix <&> escaping) and checks the link in the page head.

What I changed:

  • Cap: CHANGELOG_ENTRIES in src/web/feeds.ts goes from 50 to 30, as the issue asks.
  • Test: a new test in test/changelog-atom.test.ts inserts 40 more live landings and checks the feed holds exactly 30 <entry> elements.
  • Empty commit: the pre-push hook wanted a commit saying how to try the change, so there is an empty one for that.

I did not time the 50 ms response budget.

To try it: open /changelog.atom and count the entries; there are at most 30. /changelog advertises it in the page head.

🤖 Generated with Claude Code

Closes #10761

commented

/changelog.atom and everything around it were already on main, so the only change here is cutting the feed from 50 entries to the newest 30. I didn't run the full suite. bun x tsc --noEmit, test/changelog-atom.test.ts and test/changelog-etag.test.ts pass. The gate script printed nothing and I didn't check its exit status.

Already there (added in #8417 and #8472):

  • Route and feed: GET /changelog.atom is registered and returns application/atom+xml with an ETag, a 304 on a matching If-None-Match, and every value XML-escaped.
  • IDs: each entry id is urn:forge:landing:<repo>#<number>.
  • Page head: /changelog links the feed with rel="alternate".
  • Shared helper: xml, stamp and holds already live in src/web/feeds.ts, and waves.ts imports them, so there was nothing to extract.
  • Tests: test/changelog-atom.test.ts already parses the feed, checks escaping with a hostile title (Fix <&> escaping) and checks the link in the page head.

What I changed:

  • Cap: CHANGELOG_ENTRIES in src/web/feeds.ts goes from 50 to 30, as the issue asks.
  • Test: a new test in test/changelog-atom.test.ts inserts 40 more live landings and checks the feed holds exactly 30 <entry> elements.
  • Empty commit: the pre-push hook wanted a commit saying how to try the change, so there is an empty one for that.

I did not time the 50 ms response budget.

To try it: open /changelog.atom and count the entries; there are at most 30. /changelog advertises it in the page head.

🤖 Generated with Claude Code

commented

The failing check was a stale tool table in docs/MCP.md, not something my change caused. I regenerated it and pushed the fix. test/mcp-table.test.ts now passes (8 tests); I haven't re-run the full suite.

The test said the crew and explore rows were out of date, which my feed change doesn't touch. Running bun scripts/mcp-table.ts brought the table back in line with what the code renders.

What the pull now holds:

  • Feed cap: /changelog.atom already existed on main, so the only feed change is trimming it from 50 entries to the newest 30. A test in test/changelog-atom.test.ts holds that cap.
  • Docs fix: the regenerated docs/MCP.md tool table.
  • Empty commit: one empty "Try:" commit that the pre-push hook required.

To try it: open /changelog.atom and count the entries (30 at most). /changelog advertises the feed in its page head.

🤖 Generated with Claude Code

Approved

Small and correct: the feed was already on main, and this cuts it from 50 to the newest 30 with a test that inserts 40 landings and counts 30 entries. Preview serves application/atom+xml with an ETag, and /changelog carries the alternate link. No design surface changed, no new dependency, no README edit. Notes, not blockers: the new test cleans up its rows after the assertion, so a failed expect leaves them behind (a try/finally would be safer); the MCP.md table regeneration is unrelated drift but required by the check. The 50 ms budget was not timed by the builder; the cold preview answered in about 0.9 s over the network, which says little.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs