Skip to content

TaleEngine v2.1.0 Beta

Choose a tag to compare

@Sonicspeedfly Sonicspeedfly released this 26 Sep 03:02
· 78 commits to main since this release
4a36836

Подготовка к публичному доступу. Три вещи, которые в редизайн не входили, но
без которых открывать приложение посторонним нельзя.

Исправлено — панель отладки больше не показывает чужую переписку

Буфер отладки был ОДИН на всё приложение, а эндпоинты /api/debug/log вообще
не спрашивали, кто пришёл. В режиме аккаунтов туда попадали ходы всех
пользователей, и любой залогиненный видел в панели 🐞 сводку чужих сообщений.

  • Каждая запись помечается владельцем, выдача фильтруется по нему.
  • Право на общий просмотр есть только у администратора, и решается это в слое
    доступа, а не в модуле лога. Параметр all=true от обычного пользователя
    игнорируется, а не выполняется.
  • Очистка тоже изолирована: свои записи удаляются, чужие остаются.
  • Служебное поле владельца наружу не отдаётся.
  • Владелец проставляется контекстной переменной, а не протаскиванием параметра
    через шлюз LLM: llm_gateway про пользователя ничего не знает и знать не
    должен, а фоновая задача генерации наследует пометку вместе с контекстом.
  • Заодно буфер увеличен со 100 до 400 записей: теперь он делится на всех.

Изменено — стандартная фильтрация по умолчанию

disable_safety был True: каждый новый пользователь получал снятые фильтры
провайдера, при этом сам интерфейс красил этот переключатель в цвет опасности.
Два сигнала противоречили друг другу.

  • Новые профили получают стандартную фильтрацию. Снятие фильтров остаётся
    доступным, но становится осознанным выбором, а не тем, что достаётся молча.
  • Уже сохранённые настройки существующих пользователей не меняются: их
    параметры грузятся поверх умолчаний. Тихо менять поведение работающей
    установки хуже, чем оставить как есть.
  • Одноразовая подсказка при первом старте и бейдж состояния во вкладке
    «Генерация»: режим виден с одного взгляда, без чтения абзаца.

Изменено — секреты переезжают в переменные окружения

Пароль администратора, код доступа и токен Telegram-бота хранились в таблице
app_settings открытым текстом. Резервная копия базы, её экспорт или чужой
доступ к файлу означали компрометацию всего сразу.

  • Новые переменные ADMIN_PASSWORD и ACCESS_CODE (TELEGRAM_BOT_TOKEN уже
    был). Заданное в окружении перекрывает базу, а не дополняет её: значения
    уже сохранены, и «запасной вариант» проиграл бы базе — перенос вышел бы
    бессмысленным.
  • Поля таких секретов в админке помечаются замком и блокируются, а запись их из
    интерфейса игнорируется на сервере. Иначе сохранение «проходило» бы, а
    работало всё равно значение из .env — худший вид молчаливого расхождения.
  • scripts/scrub_secrets.py вычищает секреты из базы после переноса. Ничего не
    делает молча: показывает найденное, предупреждает о значениях без пары в
    окружении, требует подтверждения и делает резервную копию. Значения на экран
    не печатаются.
  • .gitignore с .env, data/*.db и *.sqlite3 закоммичен.