QDB Site News — Step 4: Implementation Summary

Feature plan: Step 1 · Step 2 · Step 3 · Step 4

Stage 1 - Canonical news selection

  • Changes:

    • Added QDB policy selection for visible news-tagged threads in descending authored-date order.

    • Supplied the Welcome template with the first three news entries and a flag for additional items, while retaining quote count and prior recent-thread data until the presentation stage.

    • Added policy coverage for a non-quote news entry and date ordering.

  • Verification:

    • php tests/run.php QdbBoardPolicyTest — 5 passed, 0 failed.

    • git diff --check — passed.

  • Notes:

    • No database, route, API, or generic board behavior changed.

Stage 2 - Site News presentation

  • Changes:

    • Replaced the QDB Welcome “Recent activity” list with Site News title/date links, an empty state, and a conditional /tags/news continuation.

    • Added QDB Welcome coverage for a non-quote four-item news collection, three-item cap, authored-date order, title fallback, and the all-news link.

    • Updated the quote-collection regression to exclude Welcome, which is now a news surface rather than a quote collection.

  • Verification:

    • php tests/run.php QuoteCardDisplayNumberTest — 18 passed, 0 failed.

    • git diff --check — passed.

  • Notes:

    • No new route or presentation-specific title/date formatter was introduced.

Stage 3 - Release-path verification

  • Changes:

    • Added a static-artifact regression proving QDB Welcome renders Site News, retains its all-news link, and generates /tags/news.html for a four-item news fixture.

  • Verification:

    • php tests/run.php QdbBoardPolicyTest QuoteCardDisplayNumberTest QdbExperienceRoutingTest — 26 passed, 0 failed.

    • php tests/run.php — QDB Site News coverage passed; the suite reported four failures outside this change: two pending-submit browser-signing tests, anonymous-public-board session behavior, and platform-doc source-path rendering.

    • git diff --check — passed.

  • Notes:

    • Reused the existing /tags/news route and static artifact enumeration; no route, API, schema, or deployment configuration changed.