Rich chat messages (reactions, replies, files, images); RSS poll countdown; Speakers' Corner directory page updates
- Chat: extract reactions, quoted replies, file/image data in _normalize_item
- Chat: render emoji reaction pills, reply-quote blocks, inline image previews, file blocks with Accept/Download
- Chat: reply UI (hover → set reply → preview bar above compose → send with quotedItemId)
- Chat: emoji picker strip (6 quick-react emojis) on message hover
- Chat: POST /react and POST /file/{id}/receive and GET /file/{id}/download endpoints
- Chat: file decryption via core.chat_read_file (native libsimplex FFI), served with correct MIME type
- List: RSS bot cards show live next-poll countdown (ticks every second via status API poll_next field)
- Directory: rename SimpleXXX → Speakers' Corner Online Directory throughout
- Directory: add hero banner image, About page link, QR popout, title hyperlink
- Directory: new about.html — Online Safety Act, Digital ID, 65k arrests stat, community rules
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
348
web/about.html
Normal file
348
web/about.html
Normal file
@@ -0,0 +1,348 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>About — Speakers' Corner Online Directory</title>
|
||||
<meta name="description" content="Why Speakers' Corner Online exists — private, uncensored conversation for UK residents facing the Online Safety Act, digital ID, and growing surveillance of speech.">
|
||||
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Crect width='100' height='100' fill='%230053D0'/%3E%3Cg transform='translate(50,50) rotate(45)'%3E%3Crect x='-34' y='-9' width='68' height='18' fill='%2302C0FF'/%3E%3Crect x='-9' y='-34' width='18' height='68' fill='%2302C0FF'/%3E%3Crect x='-20' y='-5' width='40' height='10' fill='%230053D0'/%3E%3Crect x='-5' y='-20' width='10' height='40' fill='%230053D0'/%3E%3C/g%3E%3C/svg%3E">
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
:root {
|
||||
--bg: #f5f5f7;
|
||||
--card-bg: #ffffff;
|
||||
--text: #1d1d1f;
|
||||
--muted: #6e6e73;
|
||||
--accent: #0053D0;
|
||||
--border: #e0e0e5;
|
||||
--shadow: 0px 20px 30px rgba(0,0,0,0.12);
|
||||
--warn: #b91c1c;
|
||||
--warn-bg: #fef2f2;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--bg: #111827;
|
||||
--card-bg: #0B2A59;
|
||||
--text: #f5f5f7;
|
||||
--muted: #9ca3af;
|
||||
--accent: #70F0F9;
|
||||
--border: #1e3a5f;
|
||||
--shadow: none;
|
||||
--warn: #fca5a5;
|
||||
--warn-bg: rgba(185,28,28,0.18);
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
header {
|
||||
background: var(--card-bg);
|
||||
border-bottom: 1px solid var(--border);
|
||||
padding: 14px 24px;
|
||||
position: sticky; top: 0; z-index: 10;
|
||||
}
|
||||
|
||||
.header-inner {
|
||||
max-width: 860px; margin: 0 auto;
|
||||
display: flex; align-items: center;
|
||||
justify-content: space-between; gap: 10px;
|
||||
}
|
||||
|
||||
.logo-text {
|
||||
font-size: 18px; font-weight: 700;
|
||||
color: var(--accent); letter-spacing: -0.5px;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 760px; margin: 0 auto;
|
||||
padding: 48px 20px 80px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: clamp(26px, 5vw, 36px);
|
||||
font-weight: 700; color: var(--accent);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.page-lead {
|
||||
font-size: 16px; color: var(--muted);
|
||||
line-height: 1.7; margin-bottom: 40px;
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
.page-lead a { color: var(--accent); text-decoration: none; }
|
||||
|
||||
/* Stat banner */
|
||||
.stat-banner {
|
||||
background: var(--warn-bg);
|
||||
border: 1.5px solid var(--warn);
|
||||
border-radius: 14px;
|
||||
padding: 22px 28px;
|
||||
margin-bottom: 32px;
|
||||
display: flex; gap: 18px; align-items: flex-start;
|
||||
}
|
||||
.stat-number {
|
||||
font-size: clamp(36px, 8vw, 52px);
|
||||
font-weight: 800; color: var(--warn);
|
||||
line-height: 1; flex-shrink: 0;
|
||||
}
|
||||
.stat-body { flex: 1; }
|
||||
.stat-body strong {
|
||||
display: block; font-size: 15px;
|
||||
color: var(--text); margin-bottom: 5px;
|
||||
}
|
||||
.stat-body p { font-size: 13px; color: var(--muted); line-height: 1.6; }
|
||||
.stat-body a { color: var(--warn); text-decoration: none; font-size: 12px; }
|
||||
.stat-body a:hover { text-decoration: underline; }
|
||||
|
||||
/* Section cards */
|
||||
.section {
|
||||
background: var(--card-bg); border-radius: 16px;
|
||||
box-shadow: var(--shadow); padding: 28px 32px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.section-icon { font-size: 26px; margin-bottom: 10px; display: block; }
|
||||
|
||||
.section h2 { font-size: 19px; font-weight: 700; margin-bottom: 14px; color: var(--text); }
|
||||
|
||||
.section p {
|
||||
font-size: 14px; line-height: 1.75; color: var(--muted);
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.section p:last-child { margin-bottom: 0; }
|
||||
.section a { color: var(--accent); text-decoration: none; }
|
||||
.section a:hover { text-decoration: underline; }
|
||||
|
||||
.section ol, .section ul { padding-left: 20px; margin-top: 8px; }
|
||||
.section li { font-size: 14px; line-height: 1.7; color: var(--muted); margin-bottom: 6px; }
|
||||
.section li:last-child { margin-bottom: 0; }
|
||||
|
||||
/* Rule rows */
|
||||
.rule-list { list-style: none; padding: 0; margin-top: 8px; }
|
||||
.rule-list li {
|
||||
display: flex; gap: 12px; align-items: flex-start;
|
||||
padding: 10px 0; border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.rule-list li:last-child { border-bottom: none; }
|
||||
.rule-dot {
|
||||
width: 8px; height: 8px; border-radius: 50%;
|
||||
background: var(--accent); flex-shrink: 0; margin-top: 6px;
|
||||
}
|
||||
.rule-body strong { display: block; font-size: 14px; color: var(--text); margin-bottom: 2px; }
|
||||
.rule-body span { font-size: 13px; color: var(--muted); line-height: 1.55; }
|
||||
|
||||
/* Callouts */
|
||||
.callout {
|
||||
border-left: 4px solid var(--accent);
|
||||
background: color-mix(in srgb, var(--accent) 8%, transparent);
|
||||
border-radius: 0 10px 10px 0;
|
||||
padding: 12px 16px; margin-top: 14px;
|
||||
font-size: 13px; color: var(--muted); line-height: 1.65;
|
||||
}
|
||||
.callout.warn {
|
||||
border-left-color: var(--warn);
|
||||
background: var(--warn-bg);
|
||||
}
|
||||
|
||||
footer {
|
||||
text-align: center; padding: 28px 20px;
|
||||
font-size: 12px; color: var(--muted);
|
||||
border-top: 1px solid var(--border);
|
||||
}
|
||||
footer a { color: var(--accent); text-decoration: none; }
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.section { padding: 20px; }
|
||||
.stat-banner { flex-direction: column; gap: 8px; padding: 18px 20px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<div class="header-inner">
|
||||
<a href="./index.html" style="text-decoration:none;">
|
||||
<span class="logo-text">Speakers' Corner Online</span>
|
||||
</a>
|
||||
<a href="./index.html" style="color:var(--accent);font-size:13px;font-weight:600;text-decoration:none;">← Directory</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<h1>Why This Exists</h1>
|
||||
<p class="page-lead">
|
||||
The United Kingdom has quietly become one of the most aggressive surveilleurs of online
|
||||
speech in the democratic world. Speakers' Corner Online was built as a response — a place
|
||||
where residents can talk freely, privately, and without fear, using infrastructure that
|
||||
cannot be monitored or compelled to hand over your conversations.
|
||||
</p>
|
||||
|
||||
<!-- Stat banner -->
|
||||
<div class="stat-banner">
|
||||
<div class="stat-number">65,000+</div>
|
||||
<div class="stat-body">
|
||||
<strong>arrests in the UK for social media posts since 2017</strong>
|
||||
<p>
|
||||
British police forces have made over 65,000 arrests for online speech in less than a decade —
|
||||
averaging more than 20 arrests every single day. Offences range from "grossly offensive"
|
||||
messages under the Communications Act to alleged "stirring up" of hatred, applied
|
||||
increasingly broadly and with little consistency.
|
||||
</p>
|
||||
<a href="https://archive.ph/bdEqK" target="_blank">Source: archived report ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Online Safety Act -->
|
||||
<div class="section">
|
||||
<span class="section-icon">🔒</span>
|
||||
<h2>The Online Safety Act</h2>
|
||||
<p>
|
||||
The Online Safety Act 2023 granted Ofcom sweeping powers to demand that platforms
|
||||
scan private messages for illegal content — a power that, by technical necessity,
|
||||
requires breaking end-to-end encryption. Put simply: if a platform must be able to
|
||||
read your messages to check them, your messages are no longer private.
|
||||
</p>
|
||||
<p>
|
||||
The Act also imposes broad "duty of care" obligations that incentivise platforms to
|
||||
over-censor legal speech to avoid regulatory liability. The practical result is that
|
||||
mainstream platforms increasingly remove or restrict content that is perfectly lawful —
|
||||
not because it breaks any law, but because it is cheaper than arguing with a regulator.
|
||||
</p>
|
||||
<div class="callout warn">
|
||||
Signal, WhatsApp and others have threatened to leave the UK market rather than comply
|
||||
with backdoor requirements. SimpleX's architecture makes compliance technically
|
||||
impossible — there is no central server holding your keys and no company that can be
|
||||
served a disclosure order for your messages.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Digital ID -->
|
||||
<div class="section">
|
||||
<span class="section-icon">🍌</span>
|
||||
<h2>Digital Identity & the Coming Infrastructure</h2>
|
||||
<p>
|
||||
The UK government is rolling out a voluntary Digital Identity and Attributes Trust
|
||||
Framework that creates the infrastructure for verified digital IDs accepted across
|
||||
government and private services. "Voluntary" has a habit of becoming mandatory once
|
||||
the infrastructure exists — access to banking, benefits, travel and eventually online
|
||||
platforms may increasingly depend on presenting a verified digital identity.
|
||||
</p>
|
||||
<p>
|
||||
Combined with age-verification mandates in the Online Safety Act, the direction of
|
||||
travel is clear: anonymous online participation is being engineered out of existence.
|
||||
Once every account is tied to a real identity, the chilling effect on speech becomes
|
||||
total — people will self-censor on anything that could attract official attention.
|
||||
</p>
|
||||
<div class="callout">
|
||||
SimpleX requires no phone number, no email address, and no government ID.
|
||||
Your identity on this network is a cryptographic key that exists only on your device.
|
||||
There is nothing to subpoena and no account to suspend.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Why SimpleX -->
|
||||
<div class="section">
|
||||
<span class="section-icon">🚀</span>
|
||||
<h2>Why SimpleX</h2>
|
||||
<p>
|
||||
Most "private" messaging apps still require a phone number — which ties every account
|
||||
to a real identity via your mobile carrier. SimpleX was designed from the ground up to
|
||||
have no user identifiers at all. Each conversation uses a fresh pair of message queues;
|
||||
even the platform operator cannot link two conversations to the same person.
|
||||
</p>
|
||||
<ul>
|
||||
<li><strong>No phone number or email required</strong> — connect via a QR code or link.</li>
|
||||
<li><strong>No central user database</strong> — there is nothing to leak, sell, or hand to police.</li>
|
||||
<li><strong>End-to-end encrypted</strong> — messages are decrypted only on your device.</li>
|
||||
<li><strong>Open source</strong> — the code can be audited by anyone.</li>
|
||||
<li><strong>Self-hostable</strong> — you can run your own relay servers and remain fully independent.</li>
|
||||
</ul>
|
||||
<p style="margin-top:12px;">
|
||||
<a href="https://simplex.chat/downloads/" target="_blank">Download the SimpleX app →</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Community rules -->
|
||||
<div class="section">
|
||||
<span class="section-icon">📜</span>
|
||||
<h2>Community Rules</h2>
|
||||
<p>
|
||||
We defend the right to hold and express unpopular opinions. The narrow set of rules
|
||||
below are about direct harm — not offence, not controversy, not dissent.
|
||||
</p>
|
||||
<ul class="rule-list">
|
||||
<li>
|
||||
<div class="rule-dot"></div>
|
||||
<div class="rule-body">
|
||||
<strong>No illegal content</strong>
|
||||
<span>Content that is illegal in the UK — CSAM, credible incitement to imminent violence, etc. — will result in immediate removal and referral to authorities.</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="rule-dot"></div>
|
||||
<div class="rule-body">
|
||||
<strong>No targeted harassment campaigns</strong>
|
||||
<span>Groups whose sole purpose is to coordinate abuse toward a specific individual are not permitted.</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="rule-dot"></div>
|
||||
<div class="rule-body">
|
||||
<strong>No doxing</strong>
|
||||
<span>Publishing someone's private personal information (home address, workplace, phone number) without consent is not allowed.</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="rule-dot"></div>
|
||||
<div class="rule-body">
|
||||
<strong>Label adult content</strong>
|
||||
<span>Communities containing explicit material must say so clearly in their description.</span>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="rule-dot"></div>
|
||||
<div class="rule-body">
|
||||
<strong>Honest descriptions</strong>
|
||||
<span>Your group's name and description must accurately represent what it is. No spam, no bait-and-switch.</span>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="callout">
|
||||
Controversial, offensive, politically extreme, or unpopular speech is explicitly
|
||||
permitted here. The entire point of this platform is that you do not need our approval
|
||||
to speak — only your own conscience.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Reporting -->
|
||||
<div class="section">
|
||||
<span class="section-icon">📢</span>
|
||||
<h2>Reporting & Joining</h2>
|
||||
<p>
|
||||
To report a listed community that breaches the rules above, connect to the directory bot
|
||||
via the QR code on the <a href="./index.html">main page</a> and send a brief message
|
||||
with the community name and the nature of the breach. Reports are reviewed manually.
|
||||
</p>
|
||||
<p>
|
||||
To submit your own group or channel, join the directory bot and follow the prompts.
|
||||
Listing is free.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
<p>Speakers' Corner Online — private communities on the <a href="https://simplex.chat" target="_blank">SimpleX Network</a> — <a href="./index.html">← Back to Directory</a></p>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user