chore: add CI, lint config, login rate limit and split large modules

- Rate-limit failed logins (8 per 15 min per IP or username, 429 + Retry-After)
- Add ruff/mypy config and GitHub Actions workflow (ruff, pytest, tsc, tests, build)
- Apply ruff autofixes (import order, pyupgrade)
- Extract rpy_helpers.py, engine-util.ts, TranslationParts.tsx and
  translation-types.ts from oversized modules
- Add dependency-free React UI tests
- Refresh README and ARCHITECTURE (Naninovel/Tomie, status and plans)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Sonnet 5.5 committed 2026-10-25 11:23:22 +03:00
1 parent 57a4edcbfd
commit bbbcc6a5d8
42 files changed
+678 -391

No files matched your search

+17 -6
View File
@@ -131,10 +131,21 @@ LOCKED`), Redis не нужен.
* меню выборов, история реплик, skip/auto, быстрые и слотовые сохранения
на сервере, громкость каналов, предзагрузка ближайших картинок.
## Дорожная карта
## Состояние и планы
* Реализованы редактор PGVN-форка, замена ассетов, ревизии, трёхстороннее слияние
и перенос на новый оригинал — см. [MODDING.md](MODDING.md).
* Поддержка screens/ATL-трансформаций в IR.
* Другие движки (TyranoBuilder, RPG Maker MV) через тот же IR.
* Сборщик мусора доступен как `python -m app.gc`, включая периодический режим.
Реализовано:
* редактор PGVN-форка, замена ассетов, ревизии, трёхстороннее слияние и перенос
на новый оригинал — см. [MODDING.md](MODDING.md);
* импорт Naninovel и адаптер Tomie, пакетный импорт и строгая проверка
совместимости — см. [IMPORT.md](IMPORT.md);
* редактор переводов — см. [LOCALIZATION.md](LOCALIZATION.md);
* сборщик мусора (`python -m app.gc`, есть периодический режим);
* ограничение неудачных попыток входа (`app/ratelimit.py`), CI в GitHub Actions.
Планы:
* поддержка `screen`-языка и ATL-анимаций с движением в IR;
* другие движки (TyranoBuilder, RPG Maker MV) через тот же IR;
* дальнейшее дробление `engine.ts` на модули (рендер сцены, UI, сохранения);
* типизация backend под `mypy` (сейчас проверка справочная).