diff --git a/.runner b/.runner
new file mode 100644
index 0000000..f7d4203
--- /dev/null
+++ b/.runner
@@ -0,0 +1,11 @@
+{
+ "WARNING": "This file is automatically generated by forgejo-runner. Do not edit it manually unless you know what you are doing. Removing this file will cause act runner to re-register as a new runner.",
+ "id": 14,
+ "uuid": "2f3252bd-5f69-4d3c-8f77-8b54caf784af",
+ "name": "nixos-runner",
+ "token": "993ebcbb295c7c58ac35fd5c2ec07cc752c99152",
+ "address": "https://git.derickphan.com",
+ "labels": [
+ "ubuntu-latest:docker"
+ ]
+}
diff --git a/README.md b/README.md
index bd6d74a..71015c0 100644
--- a/README.md
+++ b/README.md
@@ -194,9 +194,13 @@ Enable it on the `/style` page under "Forum". A "Forum" link will appear in the
### How it works
- Threads and posts are stored in `~/.tinyweb/forum.db` (separate from your search index)
-- Instances sync forum content over Reticulum every 5 minutes
+- Instances are discovered automatically via mesh announces — no manual setup needed
+- Sync is manual by default: click "sync now" on the forum page. Auto-sync every 5 minutes is optional (toggle on moderation page)
+- At scale, sync uses epidemic gossip: 20 random peers per cycle, converging globally within ~O(log N) cycles
- Authors are identified by a short pseudonymous identity hash (no accounts, no sign-up)
-- Moderation is local: block authors, mute threads, keyword filters, and gossip block lists with peers
+- Auto-discovery can be disabled in the moderation page
+- Threads are auto-pruned after 30 days (configurable, or set to 0 to keep everything)
+- Moderation is local: block authors, mute threads, keyword filters, and gossip block lists with peers (auto-block after 3 peer reports)
For full feature docs, see the [tinyweb-forum README](https://git.derickphan.com/lichenblankie/tinyweb-forum).
@@ -225,6 +229,7 @@ Other hardening measures:
- **XSS escaping** — All user-supplied content is HTML-escaped before rendering
- **Bookmark authentication** — The bookmarklet endpoint requires a secret token
- **Identity file protection** — The Reticulum identity key is restricted to owner-only permissions (0600)
+- **Forum caveats** — See [tinyweb-forum Security](https://git.derickphan.com/lichenblankie/tinyweb-forum#security) for forum-specific risks (voluntary retractions, block gossip manipulation, no rate limiting)
## Maintenance
diff --git a/handlers.py b/handlers.py
index a3bbb4b..523000f 100644
--- a/handlers.py
+++ b/handlers.py
@@ -931,7 +931,7 @@ def handle_style_form(msg=""):
f"Saves ~50% on storage for embeddings. Slight quality reduction at large scale.
"
f'manage semantic index
'
f""
- {forum_section}
+ f"{forum_section}"
f"
Edit the full page template. Use {esc('{{content}}')} "
f"where page content should appear.