Fix dead links and hide unfinished surfaces on the public site
Findings from the Aug 1 loose-wire sweep, groups 1 and 2 (landing and
marketing, discovery and docs), each verified by an adversarial pass
before being acted on.
Dead docs links: the six "Other Policies" entries and the two pricing
fine-print links pointed at /docs/legal/<slug> and /docs/guide/<slug>,
but docengine flattens site-docs to bare slugs and the only route is the
single-segment catch-all. All nine now resolve. "Creator guarantees"
pointed at the signup page rather than the guarantees doc.
/changelog 404s until a changelog project is published. The footer
already guards it; economics.html and whats_new.js did not. Both now
reuse that guard rather than duplicating the check, and the sitemap
stops advertising the URL to crawlers.
Both "Coming soon" surfaces are hidden per the Aug 1 gate: the
use-cases block and the importer's unsupported-platform sentence.
Also: the docs search input gained id, name and a label in all three
templates that share the markup; the economics breadcrumb and header
comment no longer describe a route that moved; "Read the commits" is
relative so staging stops sending visitors to prod; the notify input
gained autocomplete; and creators_page drops two per-request queries,
two dead template fields, and a doc comment for a page that no longer
works that way.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-01 19:37 UTC
<p>Currently supports generic CSV files. Upload a CSV with subscriber emails, transaction amounts, or item data, then map columns to the right fields. Coming soon: direct Substack, Ghost, Gumroad, Bandcamp, and Patreon imports.</p>
116
+
<p>Currently supports generic CSV files. Upload a CSV with subscriber emails, transaction amounts, or item data, then map columns to the right fields.</p>
Every tier is the complete platform: <code>/u/username</code> profile, project and item pages, project forum, Discover listing, memberships, pay-what-you-want, promo codes, RSS, analytics, full data export, 2FA/passkeys. The tier picks the file-size envelope, not the feature set.
86
86
Sales are in USD; receiving payouts requires <a href="https://stripe.com/global">Stripe</a> in a supported country.
<p>Numbers refresh at the close of every two-month sprint, alongside the <a href="/changelog">changelog</a> recap. The paying-creator count is read live from the database at the time you load this page.</p>
58
+
{# Same guard the footer uses in base.html: /changelog 404s until a
59
+
changelog project is published. See crate::changelog. #}
60
+
<p>Numbers refresh at the close of every two-month sprint, alongside the {% if crate::changelog::is_published() %}<a href="/changelog">changelog</a>{% else %}changelog{% endif %} recap. The paying-creator count is read live from the database at the time you load this page.</p>