main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
exorcise: template user-facing copy
Batch B12 (templates). Converted ~44 prose em-dashes and — 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>
26 files changed,
+45 insertions,
-45 deletions
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
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
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
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
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 — 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
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 — 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
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
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 — 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
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> — 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 & 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 & 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>
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 & 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 & 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
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
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 — 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
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 — 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
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"