docs: sync all localized READMEs (RU/ZH/ES) with current install flow
- Update product table versions everywhere (claude v2.1.112, codex v0.116.0, gemini v0.35.3, qwen v0.14.5) - Replace outdated bash heredocs with one-liner installer scripts - Add Windows PowerShell + Windows CMD entry points - Update claude/README*.md: drop git clone snippets, use uclaude_install.ps1 one-liner Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
310
README_ru.md
310
README_ru.md
@@ -8,10 +8,10 @@
|
||||
|
||||
| Папка | Инструмент | Статус |
|
||||
|-------|-----------|--------|
|
||||
| [claude/](claude/) | Claude Code | Активен (v2.1.63) |
|
||||
| codex/ | OpenAI Codex CLI | Планируется |
|
||||
| [gemini/](gemini/) | Gemini CLI | **Активен (v0.29.5)** |
|
||||
| [qwen/](qwen/) | Qwen Code | **Активен (v0.11.1)** |
|
||||
| [claude/](claude/) | Claude Code | Активен (v2.1.112) |
|
||||
| [codex/](codex/) | OpenAI Codex CLI | **Активен (v0.116.0)** |
|
||||
| [gemini/](gemini/) | Gemini CLI | **Активен (v0.35.3)** |
|
||||
| [qwen/](qwen/) | Qwen Code | **Активен (v0.14.5)** |
|
||||
| antigravity/ | Antigravity | Планируется |
|
||||
|
||||
## Быстрый старт
|
||||
@@ -21,10 +21,8 @@
|
||||
Перед установкой убедитесь, что установлен Node.js v24.13+:
|
||||
|
||||
```bash
|
||||
# Проверить версию Node.js
|
||||
node --version
|
||||
|
||||
# Если Node.js отсутствует или версия слишком старая, установите:
|
||||
# Linux (Debian/Ubuntu):
|
||||
sudo apt update && sudo apt install -y nodejs npm
|
||||
|
||||
@@ -38,27 +36,6 @@ brew install node
|
||||
winget install OpenJS.NodeJS
|
||||
```
|
||||
|
||||
### Альтернатива - Автоустановка Node.js
|
||||
|
||||
Если вам нужно установить или обновить Node.js автоматически:
|
||||
|
||||
**Linux:**
|
||||
```bash
|
||||
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - && sudo apt-get install -y nodejs
|
||||
```
|
||||
|
||||
**macOS:**
|
||||
```bash
|
||||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||||
brew install node
|
||||
```
|
||||
|
||||
**Windows:**
|
||||
```powershell
|
||||
# От администратора
|
||||
winget install OpenJS.NodeJS
|
||||
```
|
||||
|
||||
### Claude Code — Установка
|
||||
|
||||
Две команды на любой платформе:
|
||||
@@ -77,10 +54,6 @@ npm install -g @anthropic-ai/claude-code
|
||||
|
||||
> Требуется Node.js. Установить: https://nodejs.org/
|
||||
|
||||
### Обновление
|
||||
|
||||
Те же две команды — npm автоматически скачает последнюю пропатченную версию с нашего реестра.
|
||||
|
||||
### Альтернатива — автоустановщик (если нет Node.js)
|
||||
|
||||
Устанавливает Node.js, Claude Code и патчи автоматически.
|
||||
@@ -101,50 +74,127 @@ curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
git clone --depth 1 https://x-token:cadffcb0a6a3be728ac1ff619bb40c86588f6837@git.sensey24.ru/aibot777/unlimitedcoding.git
|
||||
cd unlimitedcoding
|
||||
powershell -ExecutionPolicy Bypass -File claude\uclaude_update.ps1 --force
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_install.ps1" -OutFile "$env:TEMP\uclaude_install.ps1" -Headers $h
|
||||
. "$env:TEMP\uclaude_install.ps1"
|
||||
```
|
||||
|
||||
### Gemini CLI — Установка
|
||||
### Gemini CLI — Установка (одной командой)
|
||||
|
||||
**Шаг 1 — Установить патченный CLI:**
|
||||
> Установщик ставит Node.js (если нет), npm-пакет, env vars и `~/.gemini/settings.json`.
|
||||
> **Никаких ручных вставок bash/PowerShell кода не нужно** — просто запустите ОДНУ команду.
|
||||
|
||||
**Linux / macOS:**
|
||||
**Linux (Debian/Ubuntu/RHEL/Fedora):**
|
||||
```bash
|
||||
npm config set @google:registry https://npm.sensey24.ru/
|
||||
npm install -g @google/gemini-cli
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.sh \
|
||||
-o /tmp/ugemini.sh && sudo bash /tmp/ugemini.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell):**
|
||||
**macOS (Intel & Apple Silicon):**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.sh \
|
||||
-o /tmp/ugemini.sh && sudo bash /tmp/ugemini.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
npm config set "@google:registry" "https://npm.sensey24.ru/"
|
||||
npm install -g @google/gemini-cli
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.ps1" -OutFile "$env:TEMP\ugemini_install.ps1" -Headers $h
|
||||
. "$env:TEMP\ugemini_install.ps1"
|
||||
```
|
||||
|
||||
> Требуется Node.js. Установить: https://nodejs.org/
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_install.ps1' -OutFile \"$env:TEMP\ugemini_install.ps1\" -Headers $h; & \"$env:TEMP\ugemini_install.ps1\""
|
||||
```
|
||||
|
||||
**Шаг 2 — Настроить окружение:**
|
||||
После установки — **перезапустите терминал** и проверьте:
|
||||
```
|
||||
gemini -p "Привет"
|
||||
```
|
||||
|
||||
Подробнее: [gemini/README.md](gemini/README.md)
|
||||
|
||||
### Codex CLI — Установка
|
||||
|
||||
> Codex CLI — это compiled Rust binary (не npm). Установщик скачивает его с GitHub releases,
|
||||
> применяет config-патчи и настраивает `OPENAI_API_KEY` / `OPENAI_BASE_URL` автоматически.
|
||||
|
||||
**Linux (Debian/Ubuntu/RHEL/Fedora):**
|
||||
```bash
|
||||
# Переменные окружения
|
||||
echo 'export GEMINI_API_KEY="ClauderAPI2"' >> ~/.bashrc
|
||||
echo 'export GOOGLE_GEMINI_BASE_URL="https://ai.37-187-136-86.sslip.io"' >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
|
||||
# Авторизация (переключить с OAuth на API key)
|
||||
mkdir -p ~/.gemini
|
||||
cat > ~/.gemini/settings.json << 'EOF'
|
||||
{
|
||||
"security": { "auth": { "selectedType": "gemini-api-key" } },
|
||||
"telemetry": { "enabled": false, "logPrompts": false }
|
||||
}
|
||||
EOF
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
|
||||
-o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh
|
||||
```
|
||||
|
||||
**Шаг 3 — Проверить:** `gemini -p "Привет"`
|
||||
**macOS (Intel & Apple Silicon):**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.sh \
|
||||
-o /tmp/ucodex_install.sh && sudo bash /tmp/ucodex_install.sh
|
||||
```
|
||||
|
||||
Подробнее (Windows, альтернативная установка): [gemini/README_ru.md](gemini/README_ru.md)
|
||||
> macOS установит Mach-O бинарь под ваш ARCH (x86_64 / arm64), env-переменные через
|
||||
> `launchctl setenv` + `~/.zshrc`. Если запросит — введите пароль для `sudo`.
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1" -OutFile "$env:TEMP\ucodex_install.ps1" -Headers $h
|
||||
. "$env:TEMP\ucodex_install.ps1"
|
||||
```
|
||||
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_install.ps1' -OutFile \"$env:TEMP\ucodex_install.ps1\" -Headers $h; & \"$env:TEMP\ucodex_install.ps1\""
|
||||
```
|
||||
|
||||
> Windows: бинарь ставится в `%LOCALAPPDATA%\Programs\codex\codex.exe` и добавляется в PATH
|
||||
> пользователя. После установки **перезапустите CMD/PowerShell** для подхвата env vars.
|
||||
|
||||
Проверка: `codex exec "Привет"`
|
||||
|
||||
Подробнее: [codex/README.md](codex/README.md)
|
||||
|
||||
### Qwen Code — Установка
|
||||
|
||||
> Установщик подтянет Node.js если его нет, поставит npm-пакет и применит settings.
|
||||
|
||||
**Linux (Debian/Ubuntu/RHEL/Fedora):**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.sh \
|
||||
-o /tmp/uqwen.sh && sudo bash /tmp/uqwen.sh
|
||||
```
|
||||
|
||||
**macOS (Intel & Apple Silicon):**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.sh \
|
||||
-o /tmp/uqwen.sh && sudo bash /tmp/uqwen.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.ps1" -OutFile "$env:TEMP\uqwen_install.ps1" -Headers $h
|
||||
. "$env:TEMP\uqwen_install.ps1"
|
||||
```
|
||||
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_install.ps1' -OutFile \"$env:TEMP\uqwen_install.ps1\" -Headers $h; & \"$env:TEMP\uqwen_install.ps1\""
|
||||
```
|
||||
|
||||
Проверка: `qwen -p "Привет"`
|
||||
|
||||
Подробнее: [qwen/README.md](qwen/README.md)
|
||||
|
||||
### Ручная установка из релиза
|
||||
|
||||
@@ -158,11 +208,147 @@ cd unlimitedcoding
|
||||
<!-- MANUAL_VERSION:START -->
|
||||
| Платформа | Команда |
|
||||
|-----------|---------|
|
||||
| Linux / macOS | `sudo bash claude/releases/v2.1.62/install.sh` |
|
||||
| Windows CMD | `claude\releases\v2.1.62\install.bat` |
|
||||
| Windows PowerShell | `powershell -ExecutionPolicy Bypass -File claude\releases\v2.1.62\install.ps1` |
|
||||
| Linux / macOS | `sudo bash claude/releases/v2.1.112/install.sh` |
|
||||
| Windows CMD | `claude\releases\v2.1.112\install.bat` |
|
||||
| Windows PowerShell | `powershell -ExecutionPolicy Bypass -File claude\releases\v2.1.112\install.ps1` |
|
||||
<!-- MANUAL_VERSION:END -->
|
||||
|
||||
## Обновление
|
||||
|
||||
Скрипты обновления проверяют последнюю версию, скачивают и переприменяют патчи автоматически.
|
||||
|
||||
### Claude Code — Обновление
|
||||
|
||||
**Linux / macOS:**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_update.sh \
|
||||
-o /tmp/uclaude_update.sh && sudo bash /tmp/uclaude_update.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_update.ps1" -OutFile "$env:TEMP\uclaude_update.ps1" -Headers $h
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
. "$env:TEMP\uclaude_update.ps1"
|
||||
```
|
||||
|
||||
### Gemini CLI — Обновление
|
||||
|
||||
**Linux / macOS:**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_update.sh \
|
||||
-o /tmp/ugemini_update.sh && sudo bash /tmp/ugemini_update.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_update.ps1" -OutFile "$env:TEMP\ugemini_update.ps1" -Headers $h
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
. "$env:TEMP\ugemini_update.ps1"
|
||||
```
|
||||
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_update.ps1' -OutFile \"$env:TEMP\ugemini_update.ps1\" -Headers $h; & \"$env:TEMP\ugemini_update.ps1\""
|
||||
```
|
||||
|
||||
### Codex CLI — Обновление
|
||||
|
||||
**Linux / macOS:**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.sh \
|
||||
-o /tmp/ucodex_update.sh && sudo bash /tmp/ucodex_update.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1" -OutFile "$env:TEMP\ucodex_update.ps1" -Headers $h
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
. "$env:TEMP\ucodex_update.ps1"
|
||||
```
|
||||
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_update.ps1' -OutFile \"$env:TEMP\ucodex_update.ps1\" -Headers $h; & \"$env:TEMP\ucodex_update.ps1\""
|
||||
```
|
||||
|
||||
### Qwen Code — Обновление
|
||||
|
||||
**Linux / macOS:**
|
||||
```bash
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_update.sh \
|
||||
-o /tmp/uqwen_update.sh && sudo bash /tmp/uqwen_update.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_update.ps1" -OutFile "$env:TEMP\uqwen_update.ps1" -Headers $h
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
. "$env:TEMP\uqwen_update.ps1"
|
||||
```
|
||||
|
||||
**Windows (CMD от имени администратора):**
|
||||
```cmd
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -Command "$h=@{Authorization='token cadffcb0a6a3be728ac1ff619bb40c86588f6837'}; iwr 'https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_update.ps1' -OutFile \"$env:TEMP\uqwen_update.ps1\" -Headers $h; & \"$env:TEMP\uqwen_update.ps1\""
|
||||
```
|
||||
|
||||
## Удаление
|
||||
|
||||
**Linux / macOS:**
|
||||
```bash
|
||||
# Claude Code
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_uninstall.sh \
|
||||
-o /tmp/uclaude_uninstall.sh && sudo bash /tmp/uclaude_uninstall.sh
|
||||
|
||||
# Gemini CLI
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_uninstall.sh \
|
||||
-o /tmp/ugemini_uninstall.sh && sudo bash /tmp/ugemini_uninstall.sh
|
||||
|
||||
# Codex CLI
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.sh \
|
||||
-o /tmp/ucodex_uninstall.sh && sudo bash /tmp/ucodex_uninstall.sh
|
||||
|
||||
# Qwen Code
|
||||
curl -fsSL -H "Authorization: token cadffcb0a6a3be728ac1ff619bb40c86588f6837" \
|
||||
https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_uninstall.sh \
|
||||
-o /tmp/uqwen_uninstall.sh && sudo bash /tmp/uqwen_uninstall.sh
|
||||
```
|
||||
|
||||
**Windows (PowerShell от имени администратора):**
|
||||
```powershell
|
||||
$h=@{Authorization="token cadffcb0a6a3be728ac1ff619bb40c86588f6837"}
|
||||
Set-ExecutionPolicy Bypass -Scope Process -Force
|
||||
|
||||
# Claude Code
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/claude/uclaude_uninstall.ps1" -OutFile "$env:TEMP\uclaude_uninstall.ps1" -Headers $h
|
||||
. "$env:TEMP\uclaude_uninstall.ps1"
|
||||
|
||||
# Gemini CLI
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/gemini/ugemini_uninstall.ps1" -OutFile "$env:TEMP\ugemini_uninstall.ps1" -Headers $h
|
||||
. "$env:TEMP\ugemini_uninstall.ps1"
|
||||
|
||||
# Codex CLI
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/codex/ucodex_uninstall.ps1" -OutFile "$env:TEMP\ucodex_uninstall.ps1" -Headers $h
|
||||
. "$env:TEMP\ucodex_uninstall.ps1"
|
||||
|
||||
# Qwen Code
|
||||
iwr "https://git.sensey24.ru/aibot777/unlimitedcoding/raw/branch/master/qwen/uqwen_uninstall.ps1" -OutFile "$env:TEMP\uqwen_uninstall.ps1" -Headers $h
|
||||
. "$env:TEMP\uqwen_uninstall.ps1"
|
||||
```
|
||||
|
||||
Каждый деинсталлятор удаляет: бинарь/npm-пакет, директорию настроек, переменные окружения, npm registry config.
|
||||
|
||||
## Что устанавливается автоматически
|
||||
|
||||
| Компонент | Linux | macOS | Windows |
|
||||
|
||||
Reference in New Issue
Block a user