- GET /api/v1/roadmap-votes — closes the named rev-97 next-sprint candidateRev 97 shipped the public /roadmap upvote primitive. Until rev 98 the vote counts were only readable through the public dashboard endpoint or by scraping the page. Rev 98 mirrors the counts on the v1 surface so MCP hosts + code generators reading the public roadmap can see what the community is asking for next without scraping HTML. Each item carries the cumulative vote count + a trailing 14-day per-day trend bucket, plus a top-5 most-requested ranking. Public endpoint (no auth header) — same model as /api/v1/badge.svg. Cache-control public, max-age=60, s-maxage=300.
- GET /api/v1/roadmap-items — public roadmap content as JSONPairs with /api/v1/roadmap-votes as the machine-readable companion to the rev-38 /roadmap page: votes return counts, items return the full content (title, description, status, key, phase, cadence). MCP hosts can render 'what is Loop Desk shipping next?' in their own UIs with a single bearer-less GET. Cache-control public, max-age=300, s-maxage=1800. Reuses the rev-97 `src/lib/roadmap-items.ts` shared module so the page, vote endpoint, and v1 surface never drift.
- Per-item 14-day vote-trend sparkline on /roadmapCumulative dashboard polish — every rev 22+ has carried at least one. Each roadmap row now renders a small 14-day trend sparkline between the status pill and the upvote button. Today's bar wears a brand-color highlight; older days fade neutral so the trajectory shape reads cleanly. Hidden when every bucket is zero so quiet items don't see clutter. Pure derived state from the rev-97 roadmap_vote rows — no schema change. Pairs with the rev-98 v1 endpoint that exposes the same trend shape so the public dashboard surface and the protocol-bound surface read the same trajectory.
- OpenAPI 3.1 typed schemas for rev-97 + rev-98 roadmap endpointsThe two new endpoints are documented in /api/v1/openapi.json with full request/response schemas: /roadmap-votes returns counts + 14-day trend + most-requested ranking, /roadmap-items returns the full phases/items tree. Header changelog block summarises the rev-98 work. MCP-host code generators reading the spec can typecheck their tool calls and auto-generate client SDKs against the public marketing surface without bridge code.