- Public roadmap upvoting + most-requested hot strip โ closes the named rev-95/96 next-sprint candidateRev 38 shipped the public /roadmap page; rev 95 + rev 96 named upvoting as the natural next-sprint candidate citing the operator-feedback loop on the public surface. Rev 97 closes that. Anonymous voting via a per-browser fingerprint cookie minted by `POST /api/roadmap/vote`; one vote per item per fingerprint enforced by a composite primary key on the new `roadmap_vote` table; localStorage mirrors the server state so the UI shows 'voted' pressed-style without trusting the cookie alone. New 'Most requested' hot strip pinned to the top of /roadmap surfaces the top 3 most-voted items with brand-color treatment so visitors see what the community is asking for at a glance โ the load-bearing prioritisation signal procurement teams + early adopters use to push the roadmap toward what they actually need. Roadmap content moved into `src/lib/roadmap-items.ts` as a stable per-item key so items can move between phases (next/soon/considering) or get reworded without breaking historical vote counts.
- /blog/rss.xml โ public RSS 2.0 feed for the blogMirrors the rev-37 /changelog/rss.xml shape so feed aggregators (Feedly, Inoreader, founder / AI-tooling newsletters that read RSS) can subscribe to both surfaces with the same client. Pure read of the existing `getAllPosts()` helper so the page and feed never drift. Marketing surface โ visible cadence on /changelog answers 'what shipped' and the blog answers 'what we're thinking about'; the two RSS feeds together turn the brand voice into a passive distribution channel without the operator's permission. Subscribe link added to the blog hero stats row + `<link rel='alternate' type='application/rss+xml'>` in page metadata so feed readers auto-discover it.
- Source health alert pill in dashboard status barThe dense per-row pills inside the rev-1 sources panel already surface health state, but operators with 10+ sources had to scroll to spot any feed in error or paused state. The new pill collapses that to a glance โ eye lands on it in the status bar (alongside rev-12 heartbeat, rev-39 density, rev-77 personal inbox, rev-85 reset chip), one tap scrolls to #panel-sources. Renders only when at least one source is in error or paused state โ quiet days never see it. Mirrors the rev-77 personal inbox pattern at the source axis. The status-bar instrument cluster now reads as eight instruments deep โ heartbeat (rev 12) + desk health (rev 13) + cycle performance (rev 14) + read-only pill (rev 16) + density toggle (rev 39) + what's-new badge (rev 76) + personal inbox (rev 77) + reset chip (rev 85) + source health (rev 97).
- Latest changelog release pill in dashboard status barOperators are heads-down on the desk and routinely miss the rev-by-rev cadence even though the changelog has shipped a new release every few days for 23+ revs. The new pill surfaces the most recent rev (e.g. 'rev 97 ยท new') in the dashboard status bar with a brand-color treatment when the operator hasn't seen this rev yet, fading to a quiet grey once dismissed. localStorage tracks 'last seen rev' per browser. Pairs with the rev-76 what's-new badge: the badge answers 'what happened in MY workspace since I was here last', the pill answers 'what shipped on the product since I was here last'. One workspace scope, one product scope. Sources from the existing rev-37 `changelog-releases` module so the page, feed, and pill never drift.