Skip to content

Add a Recent changes page and RSS and Atom feeds - #36

Merged
bonelifer merged 1 commit into
mainfrom
feature/recent-changes
Oct 12, 2026
Merged

bonelifer merged 1 commit into
mainfrom
feature/recent-changes

Conversation

@bonelifer

Copy link
Copy Markdown
Contributor

What this does

Adds the "Recent Changes" item from docs/TODO.md: a chronological list of every edit across all articles, which the overview's "Latest articles" cannot show because it lists only the newest version of each article.

  • Page. /wiki/recent-changes lists every version that is or was live, newest first, with paging (the board's topics-per-page setting): when it was saved, the article, the editor (linked to their contributions page), the reason for the change, and whether the version is live or was replaced. The overview links to it.
  • Feeds. /wiki/recent-changes.rss (RSS 2.0) and /wiki/recent-changes.atom (Atom 1.0) carry the latest 50 entries: article title, a permalink to that version, the editor, the time, and a short summary with the reason. The documents are built with DOMDocument, so titles and reasons are escaped once and correctly (the board stores them HTML-escaped).
  • Format choice. A new "Recent changes feed" setting on Extensions > Wiki > Settings offers RSS, Atom or both, defaulting to both. A format that is not offered answers 404, and the page and the header advertise only the offered ones, so feed readers find them by autodiscovery.
  • Visibility. Versions waiting for approval, and versions of articles with no live version, never appear in the page or the feeds: both are public. Reading needs the same permission as the wiki; a feed reader counts as a guest.
  • A migration adds wiki_feed_format. German strings, a README paragraph, and removal of "Recent Changes feed" from docs/TODO.md are included.

Testing

Claude tested on phpBB 3.3.19 and phpBB 4.0 (master) boards, using SQLite, and on throwaway MySQL 8.0 and PostgreSQL 16 boards loaded with the wiki fixtures from the seed-forum repository:

  • both feeds parse as XML, have 50 entries, carry correct dates and permalinks that open the version, and contain none of the pending-only text;
  • setting RSS only, Atom only and both gives 200 or 404 for each format as expected, and the header advertises only the offered ones next to the board's own feed link;
  • the page shows the changes with paging (25 rows per page on MySQL and PostgreSQL), links to the feeds, and leaves out pending versions; the overview links to it.

Eleven new unit tests cover which formats a setting offers, and both documents: they parse, escape &, <, quotes and non-ASCII text once, carry the right dates, and stay valid with no entries. All 73 wiki unit tests pass, and the new and changed PHP files lint clean on PHP 8.5.


Investigated and written by Claude on behalf of William Jacoby (bonelifer).

/wiki/recent-changes lists every version that is or was live, newest first,
with paging. /wiki/recent-changes.rss and .atom carry the latest 50. A new
ACP setting offers RSS, Atom or both, and the header advertises the offered
feeds. Versions waiting for approval never appear, since the page and feeds
are public.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@bonelifer
bonelifer merged commit 98020be into main Oct 12, 2026
58 checks passed
@bonelifer
bonelifer deleted the feature/recent-changes branch October 12, 2026 18:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant