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 |
| 118 | live host and need no symlink. |
118 | live host and need no symlink. |
| 119 | |
119 | |
| 120 | Once assets are same-origin, the vhost CSP can tighten `img-src`, |
120 | Once 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` |
| 122 | Cloudflare cache (responses carry a 31-day `max-age`). |
122 | from `script-src`/`connect-src` (the vote widget was removed; only a |
| |
123 | plain link to Bubbles remains). After deploying, purge the Cloudflare |
| |
124 | cache (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; } |
| 3 | nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } |
3 | nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } |
| 4 | nav ul li { padding-right: 0.5rem;} |
4 | nav ul li { padding-right: 0.5rem;} |
| 5 | img { max-width: 100%; } |
5 | img { 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 %} · {{ 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 %} · {{ 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 →</a></div> |
16 | <div><a href="mailto:hello@cleberg.net">Reply via email →</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> |