Commit Graph

19 Commits

Author SHA1 Message Date
07983ea84e fix: денежный зелёный цвет баланса DeepSeek (78 вместо 183) 2026-06-11 22:49:32 +03:00
222bb129eb feat: брендовые цвета имён моделей, персистентность model между сессиями
- _brand_color: цвет имени модели по AI_LAUNCHER
  deepseek=синий(69), claude=оранжевый(173), kimi=голубой(81),
  openrouter=фиолетовый(135), остальные=кремовый(223)
- _restore_model / _restore_model_str: сохранение и восстановление
  model_id в кэше лаунчера (~/.cache/ai-setup/model_<launcher>)
- effort-save-hook также сохраняет model_id при завершении сессии
- ai-claude/ai-openrouter используют восстановленную модель при старте

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-11 22:45:49 +03:00
54742d6a36 feat: гармоничная палитра статусной строки и радужный effort max
Цветовая палитра (все из 256-color, мягкие оттенки):
  CWD/Branch:      серый (250)
  Model/Account:    кремовый (223)
  Effort [low]:     золотой (220)
  Effort [medium]:  бирюзовый (43)
  Effort [high]:    небесно-голубой (39)
  Effort [xhigh]:   лавандовый (171)
  Effort [max]:     радуга (210/220/114/43/171) — скобки участвуют
  DeepSeek баланс:  светло-фиолетовый (147)
  Rate/ctx <40%:    мягкий зелёный (114)
  Rate/ctx 40-60%:  золотистый (221)
  Rate/ctx >=60%:   мягкий красный (210)

- _effort_color выводит [level] целиком (для max — посимвольно)
- Effort persistence: StatusLine сохраняет effort в кэш лаунчера
- Мультивалютный баланс DeepSeek с символами ($ и ¥)
- Автоопределение аккаунта Claude.ai по OAuth токену

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-11 22:21:19 +03:00
3f61f15507 fix: автоопределение аккаунта, изоляция effort, фикс разлогина
- switch-account-hook.sh: сохранять обновлённые OAuth-токены обратно в файл
  аккаунта перед переключением — предотвращает 401 после обратного свитча
- statusline-command.sh:
  - effort.level из stdin (сессия), а не из общего settings.json —
    ai-claude и ai-deepseek больше не пересекаются
  - автоопределение аккаунта по access-токену в .credentials.json
  - фолбек: если аккаунт не найден — запрос к haiku напрямую через
    Anthropic (в обход DeepSeek) для определения email
  - показ аккаунта только для claude-* моделей
2026-06-11 21:20:44 +03:00
Виталий Никитенко
23256d9579 feat: аккаунт между веткой и моделью, exit 0 в switch-account хуке
- statusline: [account] выводится между [branch] и model, тот же оранжевый цвет
- switch-account-hook: exit 0 вместо exit 2, чтобы Claude ответил и перерисовал статусбар
- switch-account skill: инструкция отвечать одним символом ✓

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 08:55:05 +03:00
c6161c3332 feat: переключение аккаунтов через хук без токенов LLM
- UserPromptSubmit хук перехватывает /switch-account до LLM, переключает
  credentials по кругу и возвращает decision:block - нулевой расход токенов
- Статусная строка: effort и имя аккаунта в квадратных скобках [high·work]
- ai-setup.sh деплоит хук switch-account-hook.sh и прописывает его в settings.json
- Скилл switch-account оставлен как fallback-документация для setup

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-09 20:58:06 +03:00
Виталий Никитенко
2079768318 fix: system-prompt через файл, кеш rate_limits при старте, SessionStart хук
- Все лаунчеры (ai-claude, ai-deepseek, ai-kimi, ai-openrouter): промпт
  пишется во временный файл через --system-prompt-file вместо аргумента
  командной строки. Решает E2BIG при промптах > 128KB (MAX_ARG_STRLEN)
  из проектов с большими .md файлами.

- statusline: кешируем rate_limits по model_id (раздельные файлы для
  claude/kimi/openrouter). При старте сессии показываем данные из кеша
  + ctx:0%. Убирает пустую статусную строку до первого запроса.

- settings.json: добавляем SessionStart хук при setup, триггерит
  вызов statusLine при открытии сессии.

- ai-claude: --model sonnet зафиксирован, убрали exec для корректной
  работы trap (cleanup временного файла).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-08 09:24:03 +03:00
Виталий Никитенко
cf34698116 Revert "fix: статусная строка — DeepSeek per-request стоимость вместо статичного баланса"
This reverts commit 6c7324bfd8.
2026-06-08 07:56:25 +03:00
Виталий Никитенко
6c7324bfd8 fix: статусная строка — DeepSeek per-request стоимость вместо статичного баланса
DeepSeek: накопленная стоимость сессии по DeepSeek-ценам (V4: $0.55/$2.19, V3: $0.27/$1.10)
Anthropic/Kimi/прочие: рейт-лимиты (5h, 7d) без долларов
Все: заполнение контекста (ctx%)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 07:51:52 +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
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