mirror of
https://gitverse.ru/kpa39l/gotosocial.git
synced 2026-09-29 01:50:08 +00:00
openspec: archive add-webclient-and-clean-footer
This commit is contained in:
@@ -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
|
||||
+5
-6
@@ -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** при обнаружении флагов выводится ошибка (нужна правка шаблона)
|
||||
Reference in New Issue
Block a user