openspec: archive add-webclient-and-clean-footer

This commit is contained in:
estorozhenko
2026-09-07 13:55:57 +00:00
parent c8d490d1c6
commit 4f126cdfae
5 changed files with 5 additions and 104 deletions
@@ -1,2 +0,0 @@
schema: spec-driven
created: 2026-09-07
@@ -1,40 +0,0 @@
## Goals
1. Веб-клиент рядом с GtS: чтение и написание постов из браузера без
сторонних приложений.
2. Убрать ЛГБТ-символы из подвала всех страниц, проверять при апгрейде.
## Non-Goals
- Не менять GtS изнутри (fork, патч бинаря).
- Не использовать тяжёлые клиенты (Elk — сборка из исходников, радужная
символика в UI).
- Не поднимать отдельный Mastodon-сервер.
## Decisions
### Клиент: Phanpy (openengineering/phanpy:latest)
- Статический SPA, минимализм, нейтральный (без ЛГБТ-символики в UI).
- Образ официальный, свежий (автосборка main, 2026-09-05).
- Не требует сборки у нас; образ с nginx-раздачей статики.
- CORS уже `*` на GtS → работа с API из любого origin.
### Публикация: web.dedinit.ru (Caddy на vps02)
- Caddyfile (vps02, docker caddy): `web.dedinit.ru { reverse_proxy 10.8.0.2:8383 }`.
- TLS авто через Caddy (как остальные домены).
### Порт/сеть
- Контейнер phanpy на bigbox: порт 8383, сеть gotosocial_default? Нет —
отдельный сетевой мост, доступ извне через vps02 (как GtS).
- Обычно Phanpy не хранит ничего на диске (localStorage в браузере),
volume не нужен.
### Чистка подвала
- Кастомный page_footer.tmpl в /opt/gotosocial/web/template/, смонтирован
volume в контейнер поверх /gotosocial/web/template/page_footer.tmpl.
- Скрипт проверки при обновлении: docs/check-pride.sh — docker cp шаблонов,
grep по эмодзи, fail при наличии.
@@ -1,34 +0,0 @@
## Why
1. На https://social.dedinit.ru/login предлагается использовать сторонние клиенты
(Elk, Tusky и т.п.), но при отсутствии настроенных устройств нечем читать и
писать посты с браузера. Нужен собственный веб-клиент, поднятый контейнером
рядом с GtS.
2. В подвале страниц отображаются ЛГБТ-символы (🏳️‍🌈, 🏳️‍⚧️, 🦥) из
дефолтного шаблона GtS. Пользователь против такой символики (в РФ это
незаконно) — убрать её со всех страниц и проверять при обновлении версии
контейнера.
## What Changes
1. Поднять контейнер веб-клиента Phanpy (лёгкий, нейтральный Mastodon-клиент,
статический SPA) рядом с GtS в docker-compose; опубликовать на
web.dedinit.ru через Caddy (vps02).
2. Заменить шаблон подвала GtS (page_footer.tmpl) на кастомный без радужных
эмодзи; добавить проверку при обновлении образа GtS.
## How
- GtS уже отдаёт CORS `access-control-allow-origin: *` → Phanpy (SPA) сможет
ходить на API с любого origin, включая web.dedinit.ru.
- Phanpy: официальный docker-образ openengineering/phanpy:latest (свежий,
автосборки) — статика на nginx.
- Caddy на vps02: добавить блок web.dedinit.ru → 10.8.0.2:8383.
- Шаблон: docker cp дефолтного page_footer.tmpl → правим → монтируем volume
в контейнер (уже реализовано, проверить).
## Risks
- Phanpy — сторонний клиент; работает через Mastodon API, CORS уже `*` на GtS.
- Обновления GtS могут менять структуру шаблонов — проверять совместимость
page_footer.tmpl (скрипт check-pride.sh).
@@ -1,22 +0,0 @@
## Context
- Инстанс: social.dedinit.ru (GtS 0.22.1, docker bigbox), account-domain dedinit.ru.
- Прокси: Caddy docker-контейнер на vps02 (87.242.100.206), GtS → 10.8.0.2:8082.
- CORS на GtS API: `access-control-allow-origin: *`.
- Шаблон подвала уже исправлен (page_footer.tmpl смонтирован volume, проверено
на /@kpa39l: флагов нет).
## Tasks
- [x] 1.1 Добавить сервис phanpy в docker-compose.yml (образ openengineering/phanpy:latest, порт 8383)
- [x] 1.2 Поднять контейнер, проверить, что статика отдаётся (curl localhost:8383 → HTTP 200, title Phanpy)
- [x] 1.3 Добавить блок web.dedinit.ru в Caddyfile на vps02 → 10.8.0.2:8383, reload caddy
(понадобился docker restart caddy: bind-mount одиночного файла не live-sync'ится)
- [x] 1.4 Проверить web.dedinit.ru: страница Phanpy загружается (HTTP 200, TLS от Caddy),
API-запросы без CORS-ошибок (preflight 204, allow-origin: *) — пользователь залогинился ✅
- [x] 2.1 Проверить, что подвал на всех страницах чист (grep по 🏳️🌈🏳️⚧️ → 0 на /, /login, /about, /@kpa39l)
- [x] 2.2 Написать scripts/check-pride.sh + check-pride.py (docker cp шаблонов + детект юникода,
fail при наличии; проверен на чистом каталоге exit=0 и на файле с флагами exit=1)
- [x] 2.3 Задокументировать процедуру проверки при обновлении GtS в STATUS.md
- [x] 3.1 Валидация change: openspec validate add-webclient-and-clean-footer → valid
- [ ] 3.2 Коммит + пуш (gotosocial), архив change
@@ -1,10 +1,9 @@
## Why
# gotosocial/webclient-and-clean-footer Specification
На `/login` инстанса предлагается использовать сторонние клиенты, но нет
собственного веб-клиента для чтения/написания постов из браузера. В подвале
страниц отображаются ЛГБТ-символы из дефолтного шаблона, которые нужно убрать.
## Purpose
TBD - created by archiving change add-webclient-and-clean-footer. Update Purpose after archive.
## ADDED Requirements
## Requirements
### Requirement: Веб-клиент рядом с GtS
@@ -43,4 +42,4 @@
- **GIVEN** обновляется image GtS
- **WHEN** выполняется scripts/check-pride.sh
- **THEN** скрипт скачивает шаблоны новой версии и проверяет их на флаги
- **THEN** при обнаружении флагов выводится ошибка (нужна правка шаблона)
- **THEN** при обнаружении флагов выводится ошибка (нужна правка шаблона)