- Issue pages highlight Archive instead of Latest unless the issue is the newest one (IssueView::is_latest), with a router test. - The ears row is empty by default and says "Dashboard" on dashboard pages; "Morning edition" only survives on the empty-state hero. - Run page: the Feeds card table is fixed-layout and truncates long feed names with the full title on hover instead of pushing the entries column out of the card. - Static assets are content-hashed, so serve them immutable for a year; preload both Newsreader faces and use font-display: block so a cache revalidation never paints the fallback serif first. Persisted details state is restored pre-paint from theme.js. - Cross-document view transitions (140 ms fade, masthead held still) and Speculation Rules (prerender reader pages, prefetch dashboard pages on hover) served from /static/speculation.json via the Speculation-Rules header, which the CSP would otherwise block inline. No client router. - Dashboard nav gets the same accent underline as the site nav; 40 px targets for the theme toggle, account link and dashboard nav. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MD4VWGq6mGcd8Bg67qyx9k
27 lines
574 B
JSON
27 lines
574 B
JSON
{
|
|
"prerender": [
|
|
{
|
|
"source": "document",
|
|
"where": {
|
|
"and": [
|
|
{ "href_matches": ["/", "/issues/*"] },
|
|
{ "not": { "href_matches": ["/logout", "/rate", "/static/*", "/*\\?*"] } }
|
|
]
|
|
},
|
|
"eagerness": "moderate"
|
|
}
|
|
],
|
|
"prefetch": [
|
|
{
|
|
"source": "document",
|
|
"where": {
|
|
"and": [
|
|
{ "href_matches": ["/dashboard", "/dashboard/*"] },
|
|
{ "not": { "href_matches": ["/logout", "/rate", "/static/*", "/*\\?*"] } }
|
|
]
|
|
},
|
|
"eagerness": "moderate"
|
|
}
|
|
]
|
|
}
|