Architecture review (hai-architecture / APoSD) of the shipped redesign found one
structural smell: the shared lib/ layer imported the release manifest from
components/ — data in the presentation layer, dependency pointing the wrong way.
- move components/release-links.generated.ts -> lib/; update the four importers
and the README. lib/ no longer imports from components/.
- downloads.ts: reuse PlatformDownload["id"] instead of re-declaring the union.
No behavior change (download counter + tracked hrefs identical); build + e2e 12/12.
- adaline heading + version/count line + three platform cards with Reicon
download icons (components/sections)
- preserve all business logic verbatim: the /api/download-stats count fetch with
seeded fallback, and every asset link routed through getTrackedDownloadHref
(/api/download?asset=...) so downloads stay counted and the real R2 URLs
remain behind the server redirect