Character codes in typed text; the site and relay at app.kokkoja.com

With the Text tool, Klammertext's codes give letters a keyboard lacks:
^o" is ö, ^s^ ß, ^a1 ā, ^130ED^ a code point of 4 to 6 digits,
^9053 53EF^ a sequence, ^^ a caret, replaced as each code is completed.
The public site and relay moved to app.kokkoja.com; the old name
redirects.  The Markdown documentation is withdrawn from the release
while it is converted to Klammertext; the README's links to it are
stale until then.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
ackandClaude Fable 5.1 committed 2026-10-13 20:40:09 +02:00
1 parent 34ca33d365
commit 89b4a41b2a
15 files changed
+364 -1273

No files matched your search

+21 -5
View File
@@ -1,13 +1,14 @@
# nginx server block for a Kokkoja web site: the client's files at
# https://kokkoja.andykopra.com/ and the relay at wss://kokkoja.andykopra.com/relay.
# https://app.kokkoja.com/ and the relay at wss://app.kokkoja.com/relay.
# Installed by deploy/setup_vps.sh as /etc/nginx/sites-available/kokkoja.
#
# This is the plain HTTP form. certbot --nginx -d kokkoja.andykopra.com
# adds the TLS listener and turns this block into a redirect.
# This is the plain HTTP form. certbot --nginx -d app.kokkoja.com -d
# kokkoja.andykopra.com adds the TLS listeners and turns the HTTP blocks
# into redirects.
server {
listen 80;
server_name kokkoja.andykopra.com;
server_name app.kokkoja.com;
root /var/www/kokkoja;
index index.html;
@@ -33,7 +34,22 @@ server {
# browsers ask whether they have changed rather than keeping old ones.
add_header Cache-Control "no-cache" always;
# The client loads nothing from anywhere else, and may not be framed.
add_header Content-Security-Policy "default-src 'self'; connect-src 'self' wss://kokkoja.andykopra.com; img-src 'self' blob: data:; style-src 'self' 'unsafe-inline'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'" always;
add_header Content-Security-Policy "default-src 'self'; connect-src 'self' wss://app.kokkoja.com; img-src 'self' blob: data:; style-src 'self' 'unsafe-inline'; base-uri 'none'; frame-ancestors 'none'; form-action 'none'" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer" always;
}
# The old name, kept so that bookmarks and links to the SITE still reach
# it: everything is redirected to app.kokkoja.com. The browser carries a
# link's #join fragment across the redirect, so the join page opens; but
# an invitation made before the move names the old relay inside that
# fragment, and a WebSocket does not follow the 301 (and the new CSP
# forbids the old host), so a pre-move invitation opens but cannot
# connect. Invitations made from app.kokkoja.com name the new relay and
# are fine; live invitations are per-session, so none is affected in
# practice.
server {
listen 80;
server_name kokkoja.andykopra.com;
return 301 https://app.kokkoja.com$request_uri;
}