Commit Graph

101 Commits

Author SHA1 Message Date
feb401f4ba feat: issue #8 — именованные профили сети (home/office/hostname)
setup.sh item 2: показывает существующие профили, предлагает ввести имя.
Профиль сохраняется как network_<name>.conf (вместо фиксированного hostname).
Позволяет держать home/office конфиги на одной машине и переключаться явно.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:18:09 +03:00
df401ca333 feat: issue #7 — латентность до API провайдеров в пункте 5 «Статус»
Добавлен блок «API доступность» с curl time_connect до api.anthropic.com,
api.deepseek.com, api.openai.com, api.kimi.com, openrouter.ai.
Показывает время соединения или «недоступен» при timeout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:17:28 +03:00
71c30b17bc feat: issue #6 — пункт 7 «Обновить» (git pull + перегенерация)
setup.sh: добавлен пункт 7 в меню и case-ветка:
git pull --ff-only + bash scripts/ai-setup.sh для обновления
всех лаунчеров в ~/.local/bin без ручного вмешательства.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:16:57 +03:00
7b0756bf96 fix: issue #5 — 5xx от API не блокирует запуск лаунчеров
_handle_api_response и _handle_openai_api_response теперь имеют явный case
для 5xx: предупреждают что сервер временно недоступен и продолжают (_API_RET=0).
Раньше 5xx попадал в wildcard → _API_RET=$code (non-zero) → exit 1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:16:15 +03:00
7c8b3a7147 feat: issue #4 — geo-тест внешних IP в test_network.sh
Добавлен блок «7. Geo: внешние IP» — curl через прямой интерфейс
и через дефолт (VPN). Показывает оба IP и проверяет что они разные.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:14:54 +03:00
3b591766e1 feat: issue #3 — проверка IPv6 leak при включении kill switch
- scripts/ks-on.sh: перед включением UFW проверяет глобальные IPv6 адреса,
  предлагает отключить IPv6 через sysctl если они есть
- setup.sh item 5: показывает статус IPv6 (отключён / активен с предупреждением)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:14:23 +03:00
6f623a5b3e feat: issue #2 — systemd timer для ежесуточного обновления RIPE-списка
ru-bypass.sh теперь при первом запуске устанавливает ru-bypass.timer
(OnCalendar=daily, Persistent=true). Timer запускает ru-bypass.service
раз в сутки и обновляет ipset + маршруты без ручного вмешательства.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:13:47 +03:00
7429802612 feat: issue #1 — DNS для *.loc через LOCAL_DNS + resolvectl
- setup.sh item 2: добавлен вопрос LOCAL_DNS (офисный DNS-сервер для *.loc)
  сохраняется в network_<hostname>.conf, передаётся в ru-bypass.sh через env
- scripts/ru-bypass.sh: добавлена переменная LOCAL_DNS, после RFC1918 маршрутов
  настраивает resolvectl dns/domain ~loc на интерфейсе DEV

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:13:18 +03:00
00722b430f docs: актуализировать README — добавить ru-bypass, структуру scripts/, сетевой раздел
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 20:04:29 +03:00
b37482312f feat: пункт 6 — проверить сеть (запускает tests/test_network.sh)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:37:57 +03:00
c266b64dab feat: пункт 5 — статус (Amnezia, UFW, сервисы, инструменты, ключи)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:37:13 +03:00
9e74d53025 feat: сохранение GATEWAY/DEV в ~/.config/ai-setup/network_<hostname>.conf
При повторном запуске пункта 2 параметры загружаются из файла — не нужно
вводить снова. Сохраняется отдельно для каждой машины по hostname.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:36:33 +03:00
0ba7416047 feat: автоопределение GATEWAY и DEV из ip route show default
При выборе пункта 2 скрипт сам парсит маршрут по умолчанию и предлагает
найденные значения — пользователь просто жмёт Enter для подтверждения.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 19:36:03 +03:00
805951d920 feat: мастер-скрипт setup.sh + перенос скриптов в scripts/
- все скрипты перенесены в scripts/ (ai-setup.sh, ru-bypass.sh, ks-off.sh, ks-on.sh)
- setup.sh — новый мастер-скрипт с меню: шаги 1-2 отделены от опций 3-4
- пояснения к GATEWAY и DEV при выборе пункта 2
- ai-setup.sh: SCRIPT_DIR поднят на уровень выше (/../) чтобы находить home-configs/
- tests/test_fixes.sh, test_isolated.sh: пути обновлены на scripts/ai-setup.sh
- QUICK_START.md, README.md, home-configs/network/README.md: пути обновлены

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:47:26 +03:00
3d21f6b620 feat: добавить QUICK_START.md в корень проекта
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 10:24:56 +03:00
c9a0fca582 fix: убрать абсолютные пути из README network/
Все команды теперь относительные (от корня репозитория).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:32:44 +03:00
66a040cc03 feat: RFC1918 (*.loc) напрямую + динамический пример IP в выводе
- ru-bypass.sh: маршруты для 10/8, 172.16/12, 192.168/16 через локальный роутер
- ru-bypass.sh: UFW правила для тех же диапазонов (однократно, before.rules)
- ru-bypass.sh: пример IP в конце теперь резолвится из ya.ru динамически
- README.md: описание RFC1918 bypass в разделах про UFW и про шаги скрипта

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 09:03:59 +03:00
9669f5ff15 feat: поддержка GATEWAY/DEV через env + README для network скриптов
- ru-bypass.sh: GATEWAY и DEV теперь переопределяются через env (${VAR:-default})
  Запуск на другой машине: sudo GATEWAY=10.0.0.1 DEV=eth0 bash ru-bypass.sh
- home-configs/network/README.md: объяснение как работает ru-bypass, kill switch,
  как запускать на разных машинах с разными сетевыми интерфейсами

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 08:56:58 +03:00
5cb56124da fix: rm -f /tmp/ru-routes.batch перед записью (PermissionError при запуске от root)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 08:44:02 +03:00
fcf810fd75 feat: ru-bypass — .ru трафик напрямую мимо Amnezia, всё остальное через VPN
- ipset ru-direct + маршруты через 192.168.1.1 для всех RU IP-блоков (RIPE)
- kill switch (UFW) остаётся: не-.ru трафик при отвале Amnezia блокируется
- ru-ipset-restore.service стартует до UFW — исправляет проблему перезагрузки
- ru-bypass.service стартует после network-online — обновляет RIPE и маршруты
- NM dispatcher авто-перезапускает при reconnect amn0
- python3 summarize_address_range для корректной обработки невыровненных блоков RIPE
- tests/test_network.sh — автотесты маршрутизации и связности

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 08:41:16 +03:00
0b0d51b77c feat: обновить цвета статусной строки
- путь и ветка: светло-серый (37), как хинты Claude Code
- модель: приглушённый лососевый (173), фирменный цвет Claude
- лимиты и ctx: единая функция pct_color (зелёный/жёлтый/красный)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:28:49 +03:00
c9db0be030 feat: скорректировать пороги цветов ctx
зелёный <40%, жёлтый 40-60%, красный >=60% (совпадает с порогом звука)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 23:58:12 +03:00
a21a77723c fix: оставить только один звуковой сигнал при ctx=60%
timeout возвращает код 124 при обрезке, что запускало fallback-цепочку.
Заменил || на ; true чтобы подавить код выхода timeout.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 15:57:37 +03:00
ac64bb1505 feat: раскрасить ctx по уровням и добавить звуковой сигнал при 60%
- зелёный <30%, жёлтый 30-50%, красный 50%+
- однократный звуковой сигнал (alarm-clock-elapsed.oga, 1s) при первом достижении 60%
- сброс флага алерта когда ctx опускается ниже 50%

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 13:13:34 +03:00
bae481172f fix: добавить exit 0 в конец statusline скрипта
Без него [ -n "$ctx_pct" ] && ... возвращал exit 1 когда ctx пустой,
и Claude Code прятал всю строку статуса.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 13:01:33 +03:00
01b69c341b feat: показывать заполнение контекста в статусной строке для всех моделей
ctx:35% отображается серым в конце строки у всех провайдеров.
Для Kimi (нет rate limits) это единственная полезная метрика.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 12:58:57 +03:00
08be1dfc08 feat: показывать оба лимита в статусной строке (5ч и 7д)
Вместо одного показываются оба: "4ч20м:1% 5д3ч:4%".
Для недельного добавлен формат дней: "5д3ч".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 12:48:26 +03:00
6b80364344 fix: показывать реальное время до сброса лимита в статусной строке
Вместо захардкоженного "5h" теперь считается оставшееся время
из resets_at timestamp: "4ч40м:25%", "58м:80%" и т.д.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 12:47:00 +03:00
fb952ad371 docs: добавить секцию про сетевые скрипты в README
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 12:04:43 +03:00
dfaf835cb6 chore: удалить недоработанные скрипты ru-direct
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 11:45:33 +03:00
17c456ed4f feat: добавить скрипты управления сетью и kill switch
- ks-off.sh — временно отключить UFW kill switch перед сёрфингом без VPN
- ks-on.sh — восстановить kill switch (с проверкой что amn0 поднят)
- ru-direct.sh — роутинг всех российских IP напрямую через провайдера, минуя Amnezia
- ru-direct-undo.sh — откат ru-direct.sh, возврат к "всё через VPN"

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 11:44:40 +03:00
c1e68571f8 feat: показывать баланс DeepSeek при запуске и в статусной строке Claude Code
- Функция _deepseek_balance в ai-api-helpers: запрос к GET /user/balance
- Вывод баланса при проверке сохранённого и нового ключа в ai-deepseek
- Кеширование баланса в ~/.cache/ai-setup/deepseek_balance для статусной строки
- statusline-command.sh: если модель содержит deepseek — показывать  вместо usage

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 11:14:57 +03:00
2f48d038bd fix: убрать имя и хост из статусной строки, сократить путь до ~
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 10:21:18 +03:00
3dfd7ff034 feat: добавить настройку статусной строки Claude Code
Шаг 6.7 - копирует statusline-command.sh и прописывает statusLine
в settings.json. Показывает user@host, путь, git-ветку, модель и usage%.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 10:17:13 +03:00
25d42e8b50 feat: добавить установку Claude Notifier в ai-setup.sh
Шаг 6.8 - устанавливает claude-notifier через curl, идемпотентно.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 10:11:18 +03:00
704e30d3be feat: добавить авторегистрацию маркетплейса плагинов Claude Code
Шаг 6.7 в ai-setup.sh - регистрирует claude-plugins-official через
GitHub PAT (из env GITHUB_TOKEN или интерактивно). Идемпотентен.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-06 09:04:53 +03:00
6120f34199 feat: добавить TZ и документацию для skill'ов el-review
- Установить часовую зону Europe/Helsinki в ai-api-helpers.sh
- Добавить примеры вызова обоих skill'ов
- Документировать обработку ошибок (отсутствие веток, пустой дифф)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-06-06 08:45:36 +03:00
2f396ac27a docs: актуализация README, +ai-openrouter в AGENTS.md, перегруппировка вывода команд
- README: добавлены ai-openrouter, VLESS/Xray, effort mapping, Gemini skills
- README: команды сгруппированы (Claude Code → нативные)
- README: убрано предупреждение про отдельный Google-аккаунт
- AGENTS.md: ai-openrouter добавлен в список генерируемых скриптов
- ai-setup.sh: финальный вывод перегруппирован, предупреждение Gemini удалено

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 03:26:01 +07:00
Виталий Никитенко
2928298e6b fix(ai-setup): add plugin.json generation for gemini skills 2026-06-05 19:02:56 +07:00
Виталий Никитенко
7a3f14fa48 fix: update OpenRouter API base URL
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 18:17:47 +07:00
Виталий Никитенко
797e8448af feat: add ai-openrouter script with gpt-5.5, opus 4.8 and sonnet 4.6 models 2026-06-05 18:04:09 +07:00
Виталий Никитенко
14b800e6fb feat: новый VLESS сервер EURO-Reality-PQ (45.43.91.139:853)
xhttp + reality + post-quantum encryption, порт 853

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:44:37 +07:00
Виталий Никитенко
39caa4a3ee feat: реальный VLESS-тест + spiderX в конфиге
- Замена TCP-теста на реальный VLESS-тест (запуск xray + curl)
  Теперь ✓ работает только если VLESS-туннель действительно пропускает трафик
- Добавлен spiderX в realitySettings (нужен для AmneziaVPN/tcp-vision)
- Парсер: автоопределение spiderX (пустая строка для tcp, / для xhttp)
- Убран вводящий в заблуждение TCP-check

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:40:05 +07:00
Виталий Никитенко
a4feeca0bb feat: индикация доступности VLESS серверов (TCP check)
При выборе Y скрипт проверяет TCP-коннект к IP:port каждого сервера
и показывает цветной статус:
- зелёный ✓ доступен
- красный ✗ недоступен

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:23:16 +07:00
Виталий Никитенко
a8f651056b fix: обработка последней строки без \n в servers.conf
while read ломается на последней строке без переноса — loop body не выполняется.
Добавлен || [[ -n "$line" ]] для обработки EOF без trailing newline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:21:16 +07:00
Виталий Никитенко
5148ff29ca feat: новый VLESS сервер + поддержка tcp/vision flow
- Добавлен сервер 202.148.54.122 (AmneziaVPN) с flow=xtls-rprx-vision
- Парсер VLESS URL: автоопределение типа транспорта (xhttp/tcp)
  - Если flow указан → тип по умолчанию tcp
  - Если flow пустой → тип по умолчанию xhttp
- Генератор конфига: xhttpSettings только для xhttp-транспорта
- Поле flow в users теперь берётся из URL (ранее было пустым)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 13:17:59 +07:00
Виталий Никитенко
14142c0346 fix: откат настроек прокси в режиме direct (N)
При выборе N (direct mode) теперь корректно откатываются:
- Системный прокси (gsettings mode 'none')
- Firefox прокси (network.proxy.type = 0)
- IPv6 включается обратно (удаление 99-disable-ipv6.conf + sysctl)
- xray стопается и дизейблится

Раньше браузеры оставались настроенными на мёртвый прокси после переключения с Y на N.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 12:02:48 +07:00
Виталий Никитенко
a8d11a3f9f feat: multi-VLESS server selection + direct mode (stop xray)
- Добавлен home-configs/vless/servers.conf с двумя VLESS серверами
- При выборе Y: интерактивное меню выбора сервера (IP + имя)
- Парсер vless:// URL через python3 (извлекает все поля)
- Конфиг xray генерируется динамически, а не копируется статический
- При выборе N: xray стопается и дизейблится (systemctl stop+disable)
- Автоотключение IPv6 (sysctl + persist), автонастройка Firefox SOCKS5
- Автонастройка системного прокси через gsettings
- Зачистка старых drop-in оверрайдов и дефолтных конфигов xray

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 11:54:59 +07:00
8979313467 feat: optional built-in vless/xray with proxychains4 toggle
- ai-setup.sh now asks interactive Y/n prompt for vless mode
- On Y: installs xray + proxychains-ng, deploys configs, enables proxychains4 in all ai-* launchers
- On N: generates plain ai-* scripts without proxychains
- Templates moved to home-configs/xray/ and home-configs/proxychains/

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-05 08:38:03 +07:00
c68aff4725 fix: use _API_RET global var instead of bash return for HTTP codes > 255
bash return values are truncated to 0-255: 401 % 256 = 145, 429 % 256 = 173.
This caused _handle_api_response / _handle_openai_api_response to return 145
instead of 401, so the reauth prompt was never triggered and the script exited
silently with code 1.

Fix: use global _API_RET variable in both functions, read via ret=$_API_RET
in ai-deepseek and ai-kimi launchers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 23:24:02 +07:00