При выборе Y скрипт проверяет TCP-коннект к IP:port каждого сервера
и показывает цветной статус:
- зелёный ✓ доступен
- красный ✗ недоступен
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
while read ломается на последней строке без переноса — loop body не выполняется.
Добавлен || [[ -n "$line" ]] для обработки EOF без trailing newline.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Добавлен сервер 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>
При выборе 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>
- 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>
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>
- Move GLOBAL_RULES.md to home-configs/ as single source of truth
- Add el-review and el-review-heavy skills for GitLab-style branch diff review
- Update ai-setup.sh to deploy skills to ~/.claude/skills/
- Update README and tests for new paths
- source helpers with 2>/dev/null || true and quoted /home/nikitenko path
- remove redundant reauth flag and extra prompt
- check that claude is installed before exec
- apply same source fix to ai-deepseek for consistency
- Replace native kimi CLI launcher with Claude Code + Kimi backend
- Update README description and permission flags
- Update test_isolated.sh and tests/test_fixes.sh for new ai-kimi logic
- _build_ai_sys_prompt сохраняет в ~/.codex/AGENTS.md + ~/.kimi-code/AGENTS.md
- ai-gpt, ai-kimi: убран неработающий --system-prompt, используют нативные AGENTS.md
- ai-setup.sh: шаблоны синхронизированы под новое поведение
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace claude-code-proxy + effort-proxy + claude wrapper with direct
codex binary invocation. claude_gpt now behaves like a simple launcher:
- Looks for codex in ~/.npm-global/bin or PATH
- Falls back with helpful install hint if missing
- Removes all proxy orchestration, auth polling, and Anthropic env vars
claude_kimi now behaves like claude_deepseek:
- Prompts for Artemox API key if missing
- Validates key via _claude_test_openai_api
- Saves key to ~/.config/claude-launcher/kimi_key
- Starts claude-openai-anthropic-proxy.py locally
- Launches claude through the proxy with Anthropic env vars
- Add claude-openai-anthropic-proxy.py (Anthropic ↔ OpenAI translator)
- Rewrite claude_kimi to use native kimi CLI instead of Claude wrapper
- Add OpenAI-compatible API test helpers (_claude_test_openai_api, _handle_openai_api_response)
- Replace 127.0.0.1 with localhost for broader compatibility
- Add test for query-string handling in Kimi proxy
- Update README to reflect Artemox API usage
Три корневые причины и исправления:
1. effort-proxy: однопоточный HTTPServer заменён на ThreadingMixIn,
включён маппинг xhigh→high (claude-code-proxy больше не принимает xhigh),
добавлено логирование ошибок в /tmp/claude-gpt-effort-proxy.log
2. Стартовая логика claude_gpt: убрано гоночное условие (pkill прокси
при отсутствии effort-proxy), effort-proxy всегда перезапускается,
curl -s вместо curl -sf для healthcheck'а
3. localhost заменён на 127.0.0.1 во всех URL для консистентности
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Если python3 недоступен или JSON не парсится, _emsg пустой.
Теперь grep проверяет сырое тело ответа как запасной вариант.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
При вводе нового ключа ret=429 теперь обрабатывается так же, как для
сохранённого ключа: ключ сохраняется, затем предлагается продолжить всё равно.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Thinking-модели (DeepSeek, Kimi) возвращают 400 на max_tokens=1 при проверке ключа.
Новый case обрабатывает это: RESOURCE_EXHAUSTED → return 429, иначе → OK.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Anthropic SDK отправляет ключ в заголовке x-api-key, а не Authorization: Bearer.
Проверочные запросы теперь используют тот же заголовок, что и реальные вызовы.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Правило 1 упрощено — убрана явная оговорка про git add.
Добавлено правило 3: изменения должны быть видны через plain git diff.
Добавлено правило 4: отвечать на русском языке.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix effort-proxy direction: GPT-5.5 natively supports xhigh but not max,
so map max→xhigh (was incorrectly xhigh→max)
- Add EFFORT_MAPPING.md with full mapping table for all providers:
Anthropic, GPT-5.5, DeepSeek V4, Kimi K2.6, Gemini 3.x
- Update proxy docstring and comments
- Add wrapper proxy for fixing effort level in claude-code-proxy
- Improve proxy cleanup trap to include wrapper
- Add credential backup and restore for ChatGPT to prevent Anthropic keys deletion on /logout
- Enhance error messages for 400 and other HTTP errors in ChatGPT and Gemini handlers