From adc79c7884500c20ab47cee0b6bd8b13add602a1 Mon Sep 17 00:00:00 2001 From: King Omar Date: Sat, 25 Jul 2026 15:37:52 +1000 Subject: [PATCH] Error page: lead with one-click Archive snapshot button for unreachable sites Co-Authored-By: Claude Opus 4.8 (1M context) --- src/views.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/views.js b/src/views.js index 7b6d142..2b81657 100644 --- a/src/views.js +++ b/src/views.js @@ -182,15 +182,19 @@ export function readerPage(art, url, host) { } export function errorPage(url, message) { + const ranked = rankMethods(url).filter((m) => m.kind === 'external') + const hero = ranked[0] // most reliable external route (Archive.today for hard paywalls) return layout('Reader unavailable — PaywallFree', `
-

That one needs a different trick

+

This one needs a snapshot

-

Our reader couldn't pull clean text from this page${message ? ` (${esc(message)})` : ''}. That's normal for hard paywalls and JavaScript-only sites — an archive snapshot usually works instead.

+

Our reader couldn't pull clean text from this page${message ? ` (${esc(message)})` : ''}. Some publishers (FT, WSJ, Bloomberg) block every server fetch and render entirely in JavaScript — no proxy can reach the text. A community archive snapshot is the reliable way in.

🔗 ${esc(url)}
+ ${hero ? `${hero.icon} Open ${esc(hero.name)} snapshot ↗` : ''}
-
${rankMethods(url).filter((m) => m.id !== 'reader').slice(0, 6).map((m) => methodCard(m, url)).join('')}
+

Or try another route:

+
${ranked.slice(1, 6).concat(METHODS.filter((m) => m.id === 'proxy')).map((m) => methodCard(m, url)).join('')}
← Try another link
`) }