Commit c31e8bfa41

c31e8bfa414cdc1fe035a5d6d55a477f77525dd7

parent: 036f01c663

Verified · cmc

cmc <hello@cleberg.net> · 2026-08-03 20:25 UTC

remove bubbles.town vote widget, keep comment link

Drop the third-party vote.js script and its mount div so posts no longer
auto-fetch from bubbles.town (174 pages), completing onion
self-containment. The opt-in 'comment on Bubbles' link stays. Remove the
now-orphaned .bubbles-vote CSS rule.

Layout: unified · split

README.md +4 −2
@@ -118,8 +118,10 @@ absolute `img.cleberg.net` URLs, so local previews load images from the
118live host and need no symlink. 118live host and need no symlink.
119 119
120Once assets are same-origin, the vhost CSP can tighten `img-src`, 120Once assets are same-origin, the vhost CSP can tighten `img-src`,
121`style-src`, and `font-src` back to `'self'`. After deploying, purge the 121`style-src`, and `font-src` back to `'self'`, and drop `bubbles.town`
122Cloudflare cache (responses carry a 31-day `max-age`). 122from `script-src`/`connect-src` (the vote widget was removed; only a
123plain link to Bubbles remains). After deploying, purge the Cloudflare
124cache (responses carry a 31-day `max-age`).
123 125
124## Creating New Blog Posts 126## Creating New Blog Posts
125 127
theme/static/styles.css −1
@@ -3,7 +3,6 @@ a, a:visited { color: #0000ff; }
3nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } 3nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; }
4nav ul li { padding-right: 0.5rem;} 4nav ul li { padding-right: 0.5rem;}
5img { max-width: 100%; } 5img { max-width: 100%; }
6.bubbles-vote { min-height: 20px; margin-top: 1rem; }
7.post-list { padding: 0; padding-inline-start: 0; } 6.post-list { padding: 0; padding-inline-start: 0; }
8.post-list-item { display: flex; list-style: none; align-items: baseline; } 7.post-list-item { display: flex; list-style: none; align-items: baseline; }
9.post-list-item time { padding-right: 0.5rem; white-space: nowrap; } 8.post-list-item time { padding-right: 0.5rem; white-space: nowrap; }
theme/templates/post.html −2
@@ -7,13 +7,11 @@
7{% elif project_description is defined %} 7{% elif project_description is defined %}
8<meta property="og:description" content="{{ project_description }}" /> 8<meta property="og:description" content="{{ project_description }}" />
9{% endif %} 9{% endif %}
10<script src="https://bubbles.town/vote.js" defer></script>
11{% endblock %} 10{% endblock %}
12{% block main %} 11{% block main %}
13<article> 12<article>
14 <h1>{{ post.title }}</h1> 13 <h1>{{ post.title }}</h1>
15 <p><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time>{% if post.description is defined %} &middot; {{ post.description }}{% endif %}</p> 14 <p><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time>{% if post.description is defined %} &middot; {{ post.description }}{% endif %}</p>
16 <div class="bubbles-vote"></div>
17 <div>{{ post.html | safe }}</div> 15 <div>{{ post.html | safe }}</div>
18 <div><a href="mailto:hello@cleberg.net">Reply via email &rarr;</a></div> 16 <div><a href="mailto:hello@cleberg.net">Reply via email &rarr;</a></div>
19 <div><i>...or, comment on this post on <a href="https://bubbles.town/source/cleberg.net">Bubbles</a>!</i></div> 17 <div><i>...or, comment on this post on <a href="https://bubbles.town/source/cleberg.net">Bubbles</a>!</i></div>