страница для GitHub Pages

This commit is contained in:
unknown 2026-09-03 23:42:20 +03:00
parent b0f2c8a40f
commit 87aa366ea1
2 changed files with 207 additions and 0 deletions

0
.nojekyll Normal file
View file

207
index.html Normal file
View file

@ -0,0 +1,207 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Соучастник — клавиатура, которая называет статью</title>
<meta name="description" content="Android-клавиатура, которая показывает, какой срок вы получите за то, что пишете в интернете. ИИ-модель работает целиком на устройстве, разрешения на интернет у приложения нет.">
<meta name="color-scheme" content="light dark">
<meta property="og:title" content="Соучастник">
<meta property="og:description" content="Помогает разобраться, какой срок вы получите за то, что пишете в интернете. Всё считается на устройстве, интернета у приложения нет.">
<meta property="og:type" content="website">
<style>
:root {
--red: #C0392B;
--bg: #F7F7F8;
--ink: #17171A;
--muted: #6E6E74;
--rule: #E2E2E5;
--card: #FFFFFF;
--strip-bg: #17171A;
--strip-admin: #D8A200;
--key: #2B2B2E;
--key-ink: #F2F2F2;
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #17171A;
--ink: #F2F2F2;
--muted: #8A8A90;
--rule: #2E2E33;
--card: #1E1E22;
}
}
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
margin: 0;
background: var(--bg);
color: var(--ink);
font: 16px/1.6 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
padding: 0 20px 72px;
}
main { max-width: 46rem; margin: 0 auto; }
a { color: var(--red); }
code, pre {
font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", monospace;
font-size: 0.875em;
}
code {
background: var(--card); border: 1px solid var(--rule);
border-radius: 4px; padding: 0.1em 0.35em;
}
pre {
background: var(--card); border: 1px solid var(--rule); border-radius: 8px;
padding: 14px 16px; overflow-x: auto; line-height: 1.5;
}
pre code { background: none; border: 0; padding: 0; }
/* шапка */
header { padding: 64px 0 8px; }
.lockup { display: flex; align-items: center; gap: 16px; }
.lockup svg { width: 56px; height: 52px; flex: none; }
h1 { font-size: 2rem; letter-spacing: -0.02em; margin: 0; font-weight: 650; }
.tagline { font-size: 1.25rem; line-height: 1.45; margin: 24px 0 0; max-width: 32rem; }
.disclaimer { color: var(--muted); font-size: 0.9375rem; margin: 16px 0 0; }
/* скачать */
.get { margin: 0; display: flex; align-items: center; gap: 20px; flex-wrap: wrap; }
.btn {
display: inline-block; background: var(--red); color: #fff; text-decoration: none;
font-weight: 600; font-size: 1.0625rem; padding: 13px 26px; border-radius: 8px;
}
.btn:hover { background: #A93226; }
.get dl { margin: 0; font-size: 0.875rem; color: var(--muted); }
.get dl div { display: flex; gap: 6px; }
.get dt::after { content: ":"; }
.get dd { margin: 0; color: var(--ink); }
/* демо */
figure.demo { margin: 36px 0 0; }
.phone {
max-width: 22rem; background: var(--strip-bg); border-radius: 14px;
overflow: hidden; border: 1px solid var(--rule);
}
.field { padding: 18px 14px 22px; color: #F2F2F2; font-size: 0.9375rem; background: #202024; }
.field .caret { border-left: 2px solid var(--strip-admin); margin-left: 1px; }
.strip {
display: flex; align-items: center; gap: 10px;
padding: 7px 10px; background: var(--strip-bg);
border-top: 1px solid #26262B; border-bottom: 1px solid #26262B;
}
.strip .verdict {
flex: 1; font-size: 0.8125rem; color: var(--strip-admin);
white-space: nowrap; overflow: hidden;
}
.strip .toggle { color: var(--strip-admin); font-size: 1rem; }
.keys { padding: 6px 4px 10px; display: grid; gap: 5px; }
.keys .row { display: grid; grid-auto-flow: column; gap: 4px; justify-content: center; }
.keys .row.mid { padding: 0 14px; }
.keys .row.low { padding: 0 28px; }
.keys span {
background: var(--key); color: var(--key-ink); border-radius: 4px;
text-align: center; padding: 7px 0; font-size: 0.75rem; min-width: 1.55rem;
}
figcaption { color: var(--muted); font-size: 0.8125rem; margin-top: 12px; max-width: 30rem; }
/* текст */
section { margin: 56px 0 0; }
h2 { font-size: 1.3125rem; margin: 0 0 14px; letter-spacing: -0.01em; }
p { margin: 0 0 14px; }
.note { color: var(--muted); font-size: 0.9375rem; }
.table-wrap { overflow-x: auto; }
table { border-collapse: collapse; width: 100%; font-size: 0.9375rem; }
th, td {
text-align: left; vertical-align: top;
padding: 12px 16px 12px 0; border-bottom: 1px solid var(--rule);
}
th { white-space: nowrap; width: 9rem; font-weight: 600; }
blockquote {
margin: 24px 0 0; padding-left: 16px;
border-left: 2px solid var(--rule); color: var(--muted);
}
footer {
margin: 72px 0 0; padding-top: 24px; border-top: 1px solid var(--rule);
color: var(--muted); font-size: 0.875rem;
}
footer p { margin: 0 0 8px; }
</style>
</head>
<body>
<main>
<header>
<div class="lockup">
<svg viewBox="28 30 52 48" role="img" aria-label="Соучастник">
<path d="M37,32 H61 A7,7 0 0 1 68,39 V59 A7,7 0 0 1 61,66 H37 A7,7 0 0 1 30,59 V39 A7,7 0 0 1 37,32 Z" fill="#C0392B"/>
<path d="M47,42 H71 A7,7 0 0 1 78,49 V69 A7,7 0 0 1 71,76 H47 A7,7 0 0 1 40,69 V49 A7,7 0 0 1 47,42 Z" fill="#2B2B2E" stroke="#3B3B40" stroke-width="1"/>
<path d="M59.10 68.03L59.10 68.03Q57.21 68.03 56.11 67.31Q55.01 66.60 54.57 65.33Q54.13 64.06 54.13 62.38L54.13 62.38L54.13 56.27Q54.13 54.50 54.57 53.23Q55.01 51.96 56.11 51.27Q57.21 50.57 59.10 50.57L59.10 50.57Q60.93 50.57 61.97 51.18Q63.01 51.79 63.44 52.91Q63.87 54.02 63.87 55.49L63.87 55.49L63.87 56.92L60.51 56.92L60.51 55.32Q60.51 54.73 60.45 54.22Q60.39 53.70 60.10 53.38Q59.82 53.05 59.13 53.05L59.13 53.05Q58.43 53.05 58.12 53.39Q57.80 53.72 57.72 54.26Q57.63 54.80 57.63 55.45L57.63 55.45L57.63 63.17Q57.63 63.89 57.75 64.42Q57.87 64.96 58.19 65.24Q58.52 65.53 59.13 65.53L59.13 65.53Q59.80 65.53 60.08 65.20Q60.36 64.88 60.44 64.33Q60.51 63.78 60.51 63.17L60.51 63.17L60.51 61.52L63.87 61.52L63.87 62.92Q63.87 64.41 63.45 65.56Q63.03 66.70 62.00 67.36Q60.97 68.03 59.10 68.03Z" fill="#F2F2F2"/>
</svg>
<h1>Соучастник</h1>
</div>
<p class="tagline">Клавиатура для Android. Показывает, какой срок вы получите за то, что пишете.</p>
<p class="disclaimer">Это не юридическая консультация. Настоящий суд смешнее. AI can make mistakes.</p>
</header>
<figure class="demo">
<div class="phone" aria-hidden="true">
<div class="field">да ты дурак совсем<span class="caret">&nbsp;</span></div>
<div class="strip">
<span class="verdict">ст. 5.61 КоАП · оскорбление · 3–5 тыс ₽</span>
<span class="toggle">◉</span>
</div>
<div class="keys">
<div class="row"><span>й</span><span>ц</span><span>у</span><span>к</span><span>е</span><span>н</span><span>г</span><span>ш</span><span>щ</span><span>з</span><span>х</span></div>
<div class="row mid"><span>ф</span><span>ы</span><span>в</span><span>а</span><span>п</span><span>р</span><span>о</span><span>л</span><span>д</span><span>ж</span></div>
<div class="row low"><span>я</span><span>ч</span><span>с</span><span>м</span><span>и</span><span>т</span><span>ь</span><span>б</span><span>ю</span></div>
</div>
</div>
<figcaption>Тумблер справа выключает разбор.</figcaption>
</figure>
<section id="privacy">
<h2>Приватность</h2>
<p><strong>Разрешения <code>INTERNET</code> нет.</strong> Приложение не может отправить наружу ни байта. Модель работает на устройстве, поля с паролями не разбираются.</p>
<p class="note">Проверьте сами, список разрешений должен быть пустым:</p>
<pre><code>aapt dump permissions souchastnik-1.0-arm64-v8a.apk</code></pre>
</section>
<section id="get">
<div class="get">
<a class="btn" href="https://github.com/MShverdiakov/souchastnik/releases/latest">Скачать APK</a>
<dl>
<div><dt>Размер</dt><dd>473 МБ</dd></div>
<div><dt>Требования</dt><dd>Android 9+, arm64</dd></div>
<div><dt>Версия</dt><dd>1.0</dd></div>
</dl>
</div>
</section>
<section id="how">
<h2>Как это работает</h2>
<div class="table-wrap">
<table>
<tbody>
<tr><th>Модель</th><td>Qwen3.5-0.8B, квантованная, на llama.cpp</td></tr>
<tr><th>Кандидаты</th><td>словарь триггеров сужает список статей, модель решает, есть ли состав</td></tr>
<tr><th>Скорость</th><td>4–6 с на фразу; без dotprod (Cortex-A53/A73) 15–20 с</td></tr>
<tr><th>Память</th><td>хватает 4 ГБ RAM</td></tr>
</tbody>
</table>
</div>
</section>
<section id="limits">
<h2>Границы</h2>
<p>Приложение констатирует, а не помогает обойти. Выдуманных статей нет: за VPN и Telegram не сажают.</p>
<p>Словаря триггеров в репозитории нет: за него могут посадить меня. Могу выдать по запросу.</p>
<blockquote>за идею спасибо ув. Кибердед и ув. Лука Ебков</blockquote>
</section>
<footer>
<p>GPL-3.0. Делайте что хотите. <a href="https://github.com/MShverdiakov/souchastnik">Исходный код</a></p>
</footer>
</main>
</body>
</html>