feat(bot): Коммит — навигация по дереву репозитория #36

Closed
Eleboba wants to merge 1 commits from feat/8-repo-browser into dev
Owner

Что меняется

Раздел «📝 Коммит»: навигация по дереву репозитория загрузок кнопками — папки, страницы, карточка файла с последним коммитом, просмотр файла. Изменения и пуш — #26, #9.

Closes #8

Порядок мержа: ветка построена поверх #35 (QR-приглашения) — сначала #35, потом этот.

Как проверить

make lint && make test   # 87 тестов, в т.ч. на настоящем bare-репозитории

Заметки

  • ssh бота запускается с -F /dev/null: личный ключ из ~/.ssh/config больше не может подменить ключ бота (так #7 был ложно закрыт — переоткрыт).
  • В Docker ключ передаётся GIT_SSH_KEY_B64.

Чек-лист

  • lint + тесты зелёные
  • секретов в диффе нет
  • лог в issue дописан

🤖 Generated with Claude Code

## Что меняется Раздел «📝 Коммит»: навигация по дереву репозитория загрузок кнопками — папки, страницы, карточка файла с последним коммитом, просмотр файла. Изменения и пуш — #26, #9. Closes #8 **Порядок мержа:** ветка построена поверх #35 (QR-приглашения) — сначала #35, потом этот. ## Как проверить ```bash make lint && make test # 87 тестов, в т.ч. на настоящем bare-репозитории ``` ## Заметки - ssh бота запускается с `-F /dev/null`: личный ключ из `~/.ssh/config` больше не может подменить ключ бота (так #7 был ложно закрыт — переоткрыт). - В Docker ключ передаётся `GIT_SSH_KEY_B64`. ## Чек-лист - [x] lint + тесты зелёные - [x] секретов в диффе нет - [x] лог в issue дописан 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Eleboba added 2 commits 2026-10-15 19:11:12 +03:00
- AccessService: одноразовые приглашения (128 бит, в БД только sha256, TTL 24 ч),
  атомарный захват приглашения (условный UPDATE — из двух сканов одного QR проходит один),
  антиперебор (> 5 неудач в час — молчание), отзыв (черновик и FSM удаляются), повторное приглашение
- ADMIN_IDS заводятся в БД при старте; дальше — только по приглашению
- AccessMiddleware: участники из БД (+ last_seen раз в 5 мин), новичкам — только /start <токен>
- «👥 Участники» для админов: список, QR (segno) + ссылка, отзыв с подтверждением
- один ответ на неверный/истёкший/использованный токен — без подсказок

Refs #25

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- UploadsRepo: локальный клон, fetch не чаще fetch_interval, ls-tree -z (пробелы/кириллица),
  cat-file, последний коммит по пути; git без shell, ssh с -F /dev/null (без конфига хоста)
- «📝 Коммит»: папки/файлы с размерами, ⬆️ Вверх, страницы по 20, карточка файла
  с последним коммитом, «👁 Показать» (<pre> или документом); в кнопках только индексы
- ключ для контейнера: GIT_SSH_KEY_B64 → временный файл 0600 (смонтированный файл хоста
  контейнерному uid не прочитать); volume /data для клона
- тесты на настоящем bare-репозитории во временной папке

Refs #8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Eleboba added 1 commit 2026-10-15 19:31:45 +03:00
Eleboba closed this pull request 2026-10-15 19:31:54 +03:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.