Настройки
Repository Settings, SSH Keys Manager, AI provider config
В GitBor нет одного большого окна настроек — вместо этого набор отдельных диалогов, привязанных к конкретной функциональности.
Repository Settings
Repository → Repository Settings...
Окно для настроек git-идентичности в текущем репозитории:
user.nameuser.email
Тумблер Global / Local переключает между:
- Local —
git config user.name X(только этот репозиторий, пишется в.git/config). - Global —
git config --global user.name X(для всех репозиториев пользователя, пишется в~/.gitconfig).
Под капотом — src/core/git/GitConfig.ts.
SSH Keys Manager
File → Configure SSH Keys...
Менеджер SSH-ключей из ~/.ssh/:
| Действие | Что делает |
|---|---|
| List | Сканирует ~/.ssh/, ищет пары id_* + id_*.pub. Имена проверяются isSafeFilename(). |
| Generate | ssh-keygen с выбором: Ed25519 (рекомендуется) или RSA. Опционально — passphrase. |
| Copy public key | Копирует содержимое id_*.pub в буфер обмена через безопасный wrapper copyToClipboard(). |
| Delete | Удаляет файл ключа (с подтверждением). |
Реализация — src/core/ssh/SshKeyManager.ts.
AI provider configuration
Settings → AI... (или AI-кнопка → шестерёнка).
Открывает AiSettingsDialog со селектором пресетов с группами optgroup:
- Cloud: OpenAI, DeepSeek, Groq.
- Local: Ollama, LM Studio.
- Web: Qwen Web (chat.qwen.ai через сессионный токен из
localStorage). - Custom — произвольный OpenAI-совместимый endpoint.
Поля:
Base URL— endpoint провайдера.Model ID— имя модели (для Qwen Web — whitelistqwen3-*).API Key/Session Token— секрет.Commit language—auto/en/ru.
Кнопка Test connection делает короткий пробный запрос перед сохранением. Save шифрует секрет через Electron safeStorage (DPAPI на Windows, Keychain на macOS, libsecret на Linux). Если key store недоступен — fallback на префикс plain: (для headless / CI окружений).
Конфиг хранится в {userData}/ai-config.json через AiConfigStore с атомарной записью. Реализация — src/core/ai/.
Git Hooks Manager
Repository → Git Hooks...
Список всех hook-ов в .git/hooks/ (исключая *.sample). Toggle Enable / Disable переименовывает файл с суффиксом .disabled. Раскрытие записи показывает содержимое hook-скрипта в read-only режиме.
Под капотом — src/core/git/HooksManager.ts.
Worktrees
Repository → Worktrees...
Менеджер git worktree:
- Список всех worktrees с веткой, путём и SHA.
- Главное worktree помечено бейджем.
- Add —
git worktree add <path> <branch>(существующая или новая ветка). - Remove —
git worktree remove(с подтверждением).
Реализация — src/core/git/WorktreeManager.ts.
Git LFS
Repository → Git LFS...
- Статус установки LFS в системе.
- Список tracked-паттернов из
.gitattributes. - Add / Remove паттерна — пишет в
.gitattributesчерезgit lfs track / untrack. - Список всех LFS-файлов с OID.
Реализация — src/core/git/LfsManager.ts.
.gitignore Editor
Repository → .gitignore...
Текстовый редактор с предзаполненными шаблонами:
- Node.js, Python, Java, C/C++, Rust, Go.
- IDE (VS Code, JetBrains, Vim, Emacs).
- OS (Windows, macOS, Linux).
Клик по шаблону добавляет / убирает соответствующие паттерны. Если .gitignore уже существует — предупреждение перед перезаписью.
TODO: скриншоты Repository Settings и AiSettingsDialog.