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
118118live host and need no symlink.
119119
120120Once assets are same-origin, the vhost CSP can tighten `img-src`,
121`style-src`, and `font-src` back to `'self'`. After deploying, purge the
122Cloudflare cache (responses carry a 31-day `max-age`).
121`style-src`, and `font-src` back to `'self'`, and drop `bubbles.town`
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`).
123125
124126## Creating New Blog Posts
125127
theme/static/styles.css −1
@@ -3,7 +3,6 @@ a, a:visited { color: #0000ff; }
33nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; }
44nav ul li { padding-right: 0.5rem;}
55img { max-width: 100%; }
6.bubbles-vote { min-height: 20px; margin-top: 1rem; }
76.post-list { padding: 0; padding-inline-start: 0; }
87.post-list-item { display: flex; list-style: none; align-items: baseline; }
98.post-list-item time { padding-right: 0.5rem; white-space: nowrap; }
theme/templates/post.html −2
@@ -7,13 +7,11 @@
77{% elif project_description is defined %}
88<meta property="og:description" content="{{ project_description }}" />
99{% endif %}
10<script src="https://bubbles.town/vote.js" defer></script>
1110{% endblock %}
1211{% block main %}
1312<article>
1413 <h1>{{ post.title }}</h1>
1514 <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>
1715 <div>{{ post.html | safe }}</div>
1816 <div><a href="mailto:hello@cleberg.net">Reply via email &rarr;</a></div>
1917 <div><i>...or, comment on this post on <a href="https://bubbles.town/source/cleberg.net">Bubbles</a>!</i></div>