cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

c31e8bfa414cdc1fe035a5d6d55a477f77525dd7

verified · cmc

author: Christian Cleberg <hello@cleberg.net> · 2026-08-03T20:25:59Z

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.
 README.md                 | 6 ++++--
 theme/static/styles.css   | 1 -
 theme/templates/post.html | 2 --
 3 files changed, 4 insertions(+), 5 deletions(-)

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