Skip to main content

max / makenotwork

exorcise: template user-facing copy Batch B12 (templates). Converted ~44 prose em-dashes and &mdash; entities in rendered text (sentences, list lead-ins, form hints, option labels) to colons/commas/periods across 26 templates. Verified: punctuation + capitalization + entity-removal only (no words changed); cargo check clean (all Askama templates compile). Deliberately left as intentional UI, not AI tells: <title>X — Makenot.work separators (6), 'Buy Now — {price}' / 'Get — Free' button labels, the {% else %}—{% endif %} empty-value placeholder glyph, Askama {# #} comments, and admin tooltip/dimmed separators.
Co-Authored-By
Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-07-12 17:25 UTC
Signed with PGP, not checked
Commit: 985532846bf4b6caf652416de224acf71345610b
Parent: b0a0b36
26 files changed, +45 insertions, -45 deletions
@@ -5,7 +5,7 @@
5 5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 6 {% if let Some(token) = csrf_token %}<meta name="csrf-token" content="{{ token }}">{% endif %}
7 7 <title>{% block title %}Makenotwork{% endblock %}</title>
8 - <meta name="description" content="{% block meta_description %}Sell your work directly. 0% platform fee — only Stripe's ~3% processing. Music, software, writing, and more.{% endblock %}">
8 + <meta name="description" content="{% block meta_description %}Sell your work directly. 0% platform fee, only Stripe's ~3% processing. Music, software, writing, and more.{% endblock %}">
9 9
10 10 {# Global OG / Twitter card metadata. Per-page templates emit their own
11 11 og:title / og:description / og:image / og:url / twitter:* tags from
@@ -20,10 +20,10 @@
20 20 recipient opts in. Two patterns:
21 21 </p>
22 22 <ul class="text-sm dimmed">
23 - <li><strong>Unique code per creator</strong> — name it after the recipient (for
23 + <li><strong>Unique code per creator</strong>: name it after the recipient (for
24 24 example ALPHA-JAMIE) and set Max uses to 1. The status shows Unused until
25 25 they redeem, then Redeemed.</li>
26 - <li><strong>Reusable code to share</strong> — leave Max uses blank. Anyone can
26 + <li><strong>Reusable code to share</strong>: leave Max uses blank. Anyone can
27 27 redeem it, but each individual only once; the Uses count is the number of
28 28 distinct people who have redeemed.</li>
29 29 </ul>
@@ -11,7 +11,7 @@
11 11
12 12 {% if let Some(su) = session_user %}{% if su.is_sandbox %}
13 13 <div class="banner banner--info" role="status">
14 - Sandbox mode — your data will be deleted when the session expires.
14 + Sandbox mode: your data will be deleted when the session expires.
15 15 <a href="/join">Create an account</a> to keep your work.
16 16 </div>
17 17 {% endif %}{% endif %}
@@ -11,7 +11,7 @@
11 11
12 12 {% if let Some(su) = session_user %}{% if su.is_sandbox %}
13 13 <div class="banner banner--info" role="status">
14 - Sandbox mode — your data will be deleted when the session expires.
14 + Sandbox mode: your data will be deleted when the session expires.
15 15 <a href="/join">Create an account</a> to keep your work.
16 16 </div>
17 17 {% endif %}{% endif %}
@@ -113,7 +113,7 @@
113 113 {% else %}
114 114 <a href="/login?redirect=/i/{{ item.id }}" class="btn-primary">Log in to purchase</a>
115 115 {% endif %}
116 - <p class="audio-fee-note">Support {{ creator_username }} directly &mdash; 0% platform fee.</p>
116 + <p class="audio-fee-note">Support {{ creator_username }} directly, 0% platform fee.</p>
117 117 {% endif %}
118 118 </div>
119 119
@@ -47,7 +47,7 @@
47 47 </li>
48 48 <li class="do-card">
49 49 <h3 class="do-card-title">Fan engagement, built in</h3>
50 - <p class="do-card-lede">Profile, blog, mailing list, memberships, tips &mdash; no add-ons.</p>
50 + <p class="do-card-lede">Profile, blog, mailing list, memberships, tips. No add-ons.</p>
51 51 <ul class="do-card-links">
52 52 <li><a href="/docs/profile">Profiles</a></li>
53 53 <li><a href="/docs/blog">Blogs</a></li>
@@ -60,7 +60,7 @@
60 60 run through our
61 61 <a href="/docs/content-scanning">six-layer scanning pipeline</a>
62 62 (content-type, structural, archive, YARA, ClamAV, MalwareBazaar) before
63 - it's released, but scanning can't prove a file is safe — use antivirus
63 + it's released, but scanning can't prove a file is safe. Use antivirus
64 64 software and download at your own risk. Report concerns to
65 65 <a href="mailto:reports@makenot.work">reports@makenot.work</a>.
66 66 </div>
@@ -15,7 +15,7 @@
15 15 {% if sso_enabled %}
16 16 <div class="sso-login">
17 17 <h2 class="subtitle-h2">Log in</h2>
18 - <p class="login-prose">testnot.work is a preview of makenot.work. Sign in with your makenot.work account to continue &mdash; your password is only ever entered on makenot.work.</p>
18 + <p class="login-prose">testnot.work is a preview of makenot.work. Sign in with your makenot.work account to continue. Your password is only ever entered on makenot.work.</p>
19 19 <a class="btn-primary btn--large" href="/sso/login">Sign in with Makenot<span class="dot">.</span>work</a>
20 20 </div>
21 21 {% else %}
@@ -80,12 +80,12 @@
80 80 <div class="policy-section">
81 81 <h2 class="section-header">Other Policies</h2>
82 82 <ul>
83 - <li><a href="/docs/legal/terms-of-service">Terms of Service</a> &mdash; what you agree to by using Makenot.work</li>
84 - <li><a href="/docs/legal/privacy-policy">Privacy Policy</a> &mdash; what we collect, why, and how to exercise your rights</li>
85 - <li><a href="/docs/legal/payments">Payments &amp; Refunds</a> &mdash; merchant-of-record model, refunds, chargebacks</li>
86 - <li><a href="/docs/legal/acceptable-use">Acceptable Use</a> &mdash; specific behaviour that gets accounts suspended</li>
87 - <li><a href="/docs/legal/copyright">Copyright &amp; DMCA</a> &mdash; how takedowns and counter-notifications work</li>
88 - <li><a href="/docs/legal/appeals">Appeals</a> &mdash; how to challenge a moderation decision</li>
83 + <li><a href="/docs/legal/terms-of-service">Terms of Service</a>: what you agree to by using Makenot.work</li>
84 + <li><a href="/docs/legal/privacy-policy">Privacy Policy</a>: what we collect, why, and how to exercise your rights</li>
85 + <li><a href="/docs/legal/payments">Payments &amp; Refunds</a>: merchant-of-record model, refunds, chargebacks</li>
86 + <li><a href="/docs/legal/acceptable-use">Acceptable Use</a>: specific behaviour that gets accounts suspended</li>
87 + <li><a href="/docs/legal/copyright">Copyright &amp; DMCA</a>: how takedowns and counter-notifications work</li>
88 + <li><a href="/docs/legal/appeals">Appeals</a>: how to challenge a moderation decision</li>
89 89 </ul>
90 90 </div>
91 91
@@ -10,8 +10,8 @@
10 10 <h2 class="subtitle-h2">Creator Sandbox</h2>
11 11 <p class="sandbox-description">
12 12 Explore the full creator dashboard without signing up.
13 - Create projects, manage items, set pricing, write blog posts
14 - — everything works just like a real account.
13 + Create projects, manage items, set pricing, write blog posts.
14 + Everything works just like a real account.
15 15 </p>
16 16 <ul class="sandbox-details">
17 17 <li>Your sandbox lasts <strong>1 hour</strong></li>
@@ -88,7 +88,7 @@
88 88 {% else %}
89 89 <a href="/login?redirect=/i/{{ item.id }}" class="btn-primary">Log in to purchase</a>
90 90 {% endif %}
91 - <p class="store-cta-note">Support {{ creator_username }} directly &mdash; 0% platform fee.</p>
91 + <p class="store-cta-note">Support {{ creator_username }} directly, 0% platform fee.</p>
92 92 {% endif %}
93 93 </div>
94 94
@@ -107,7 +107,7 @@
107 107 {% else %}
108 108 <a href="/login?redirect=/i/{{ item.id }}" class="btn-primary">Log in to purchase</a>
109 109 {% endif %}
110 - <p class="video-cta-fineprint">Support {{ creator_username }} directly &mdash; 0% platform fee.</p>
110 + <p class="video-cta-fineprint">Support {{ creator_username }} directly, 0% platform fee.</p>
111 111 {% endif %}
112 112 </div>
113 113
@@ -77,7 +77,7 @@
77 77 hx-post="/api/admin/uploads/versions/{{ vid }}/quarantine"
78 78 hx-target="#uploads-table"
79 79 hx-swap="innerHTML"
80 - hx-confirm="Quarantine this upload? Quarantine is sticky — the file stays in DB for audit but is unavailable to fans.">Quarantine</button>
80 + hx-confirm="Quarantine this upload? Quarantine is sticky: the file stays in DB for audit but is unavailable to fans.">Quarantine</button>
81 81 {% else %}
82 82 <button class="btn-primary small"
83 83 hx-post="/api/admin/uploads/items/{{ upload.item_id }}/promote"