Что нового

История обновлений ChatGoose

1.3.14 Текущая

Reasoning block теперь не смешивается с prompt debug: LLM Input снова показывает только данные, отправленные в модель.

Главное
  • Reasoning block оставлен только в Pipeline Profiling
  • Нижний LLM Input inspector больше не показывает provider reasoning output
  • Это убирает путаницу между prompt input и reasoning/debug output
Технически
  • Убрано поле reasoning из PromptDebugSnapshot
  • operation:debugPrompt снова содержит только system/transcript/data/user prompt
  • Regression tests обновлены под единственный источник reasoning block в profiling summary
1.3.13

Reasoning block теперь виден прямо в карточке Pipeline Profiling, а не только в нижнем LLM Input inspector.

Главное
  • В Pipeline Profiling появилась раскрываемая строка Reasoning block
  • Блок расположен сразу рядом с Reasoning requested и Reasoning observed
  • Если provider не прислал текст reasoning, UI остаётся как раньше и показывает только observed-сигнал
Технически
  • OperationProfilingSnapshot теперь хранит reasoningBlock
  • Profiler обновляет reasoning block по мере stream delta в debug mode
  • Добавлены regression tests для profiler snapshot и rendering внутри profiling summary
1.3.12

Reasoning debug теперь показывает не только факт thinking-события, но и сам summarized reasoning block, если провайдер прислал его в stream.

Главное
  • В debug inspector появилась секция Reasoning Block
  • Текст reasoning показывается рядом с system prompt, transcript, spending/subscription data и final user prompt
  • Если provider прислал только redacted/omitted сигнал без текста, UI по-прежнему показывает только Reasoning observed
Технически
  • Anthropic и OpenRouter stream parsers прокидывают отдельный onReasoningDelta
  • Operation debug snapshot накапливает reasoning-текст только в debug mode и добавляет его в operation:debugPrompt
  • Добавлены regression tests для Anthropic/OpenRouter reasoning deltas, operation snapshot и overlay rendering
1.3.11

Follow-up hotfix после review 1.3.10: retry/backoff теперь сохраняет ожидаемое поведение в edge cases.

Главное
  • Agency Hub AI usage reporter больше не обходит retry backoff, если новый usage event пришёл прямо во время failing flush
  • LLM auto-retry снова разрешён после provider progress/reasoning event, если текстовый chunk ещё не приходил
  • Retry-таймеры LLM корректно перевооружаются для новой попытки после pre-text provider activity
Технически
  • enqueue() не ставит debounce timer, пока target queue уже flushing; post-flush scheduling выбирает backoff
  • Retry gating в operations снова опирается на первый text chunk, а provider activity остаётся отдельным сигналом для TTFB/idle timers
  • Убран недостижимый 60s Agency Hub retry delay при MAX_ATTEMPTS = 3
  • Добавлены regression tests для enqueue-during-flush и service_unavailable после provider progress до текста
1.3.10

Hotfix для reasoning stream, provider-aware ключей и Agency Hub usage retry.

Главное
  • Deep-фичи больше не падают по LLM TTFB timeout, когда Claude сначала стримит summarized thinking/reasoning, а текст приходит позже
  • Content UI теперь проверяет API key по провайдеру выбранной модели для каждой feature: OpenRouter-фичи больше не стартуют только с Claude key
  • В Settings → AI Models reasoning-select отключается для моделей/feature, которые реально не отправляют reasoning config
  • Из bundled Lora personality убран TODO-placeholder цен, чтобы он не попадал в prompt
Технически
  • llm-ttfb завершается на первый provider event/progress/reasoning signal, а первый text chunk по-прежнему только добавляет текст в UI
  • Capability rules для Anthropic adaptive thinking и OpenRouter Gemini thinking вынесены в общий helper
  • OpenRouter reasoning detection теперь учитывает наличие reasoning property даже при пустой строке
  • Agency Hub AI usage reporter requeue'ит failed/thrown batches с bounded retry/backoff и max attempts
  • Добавлены regression tests для timeout, provider-aware key gating, OpenRouter reasoning, Options reasoning capabilities, bundled prompt text и usage reporter retries
1.3.9

Claude reasoning теперь проще проверить: включённый Anthropic adaptive thinking запрашивает видимый summarized stream-сигнал, а в настройках появился отдельный Max.

Главное
  • В Settings → AI Models → Reasoning добавлено значение Max
  • Для Claude Sonnet 4.6 и Opus 4.6 Max уходит в Anthropic как output_config.effort = "max"
  • Claude-запросы с reasoning теперь используют thinking.display = "summarized", чтобы Reasoning observed мог увидеть thinking-событие в stream
Технически
  • Reply-текст по-прежнему берётся только из text_delta, поэтому summarized thinking не вставляется в чат
  • Для OpenRouter Gemini значение Max безопасно мапится в high
  • Обновлены regression tests для Claude adaptive request body, OpenRouter Gemini mapping, storage и Options UI
1.3.8

Reasoning visibility теперь вынесена прямо в completed profiling summary, чтобы её было видно после генерации без live log.

Главное
  • В завершённой карточке Pipeline Profiling появились отдельные строки Reasoning requested и Reasoning observed
  • Больше не нужно ловить live profiling log во время генерации: статус reasoning виден рядом с usage/cost/stages
Технически
  • Completed overlay summary извлекает reasoning-события из profiling logEntries и рендерит их как обычные profiling rows
  • Добавлен regression test на отображение reasoning rows в completed overlay
1.3.7

Debug/profiling теперь показывает, был ли reasoning фактически замечен в ответном stream, а не только выбран в настройках.

Главное
  • В debug profiling добавлены строки Reasoning requested: ... и Reasoning observed: yes/no
  • Reasoning observed: yes появляется только если в stream пришёл thinking/redacted thinking block, thinking_delta, signature_delta или reasoning delta
  • Теперь можно отличить “reasoning был включён в request body” от “adaptive thinking реально сработал в этом ответе”
Технически
  • Anthropic и OpenRouter stream parsers прокидывают onReasoningObserved
  • Operation и Compare profiling логируют первый observed reasoning signal и явное no, если reasoning был запрошен, но stream не содержал reasoning-событий
  • Добавлены regression tests на stream-level reasoning detection и profiling log
1.3.6

Hotfix для CG-APP-01 после включения reasoning: Anthropic adaptive thinking теперь не отправляется вместе с temperature, потому что extended/adaptive thinking несовместим с temperature modifications.

Главное
  • Reply, Fix, Ping, Hi, Help, Summary и Review сохраняют reasoning medium по умолчанию
  • Anthropic-запросы с reasoning больше не получают temperature, поэтому API не должен отклонять их validation error
  • Если reasoning выключен через Off или выбранная Claude-модель не поддерживает adaptive thinking, temperature продолжает использоваться как раньше
Технически
  • Request body для Anthropic теперь собирается условно: temperature добавляется только когда thinking не отправляется
  • Добавлены regression checks, что adaptive requests содержат thinking/output_config, но не содержат temperature
1.3.5

Reasoning теперь по умолчанию работает на medium, а в настройках можно отдельно управлять reasoning effort для каждой feature-модели.

Главное
  • Все reasoning defaults подняты до medium: быстрые replies больше не остаются на low
  • В Settings → AI Models у каждой feature-строки появился отдельный селект Reasoning
  • Доступные значения: Off, Low, Medium, High
  • Fix, Hi и Compare наследуют reasoning-настройку от Fast Reply
  • Off полностью убирает thinking/reasoning config из запроса для поддерживаемых моделей
Технически
  • Добавлен settings.featureReasoning со storage schema 7; старые настройки автоматически получают medium
  • Anthropic Direct и OpenRouter clients теперь принимают явный reasoningEffort вместо feature-hardcode
  • Для неподдерживаемых моделей thinking config по-прежнему не отправляется, чтобы не ловить provider errors
  • Добавлены regression tests для storage migration, Options UI, Anthropic adaptive thinking и OpenRouter Gemini thinking
1.3.4

Claude Direct replies теперь используют Anthropic adaptive thinking для Sonnet 4.6 и Opus 4.6, с большими аварийными output caps, чтобы thinking не обрезал финальный текст.

Главное
  • Claude Sonnet 4.6 и Claude Opus 4.6 теперь отправляются с thinking.type = adaptive и thinking.display = omitted
  • Для Reply, Fix, Ping и Hi включён output_config.effort = low
  • Для Help, Summary и Review включён output_config.effort = medium
  • Adaptive-mode caps подняты до больших потолков: 8000 для коротких replies, 16000 для Help/Review и 24000 для Summary
Технически
  • Adaptive thinking включается только для claude-sonnet-4-6 и claude-opus-4-6
  • Claude 4.5 и Haiku 4.5 остаются в обычном режиме, чтобы не отправлять неподдерживаемый adaptive config
  • Добавлены regression tests на Claude adaptive request body, большие caps и fallback без thinking для неподдерживаемых Claude-моделей
1.3.3

Hotfix для Gemini replies: thinking остаётся включённым на low, но ChatGoose больше не вставляет в UI служебные обрывки, prompt-leak текст и незавершённые ответы.

Главное
  • Gemini quick replies теперь идут через OpenRouter Messages API с thinking.display = omitted и output_config.effort = low для коротких insertable-фич
  • Для Gemini quick-фич увеличен output budget, чтобы low thinking не съедал весь лимит и не обрывал финальный reply на границе max_tokens
  • Ответы перед [NEXT] / [VARIANT] проходят sanitizer: убираются bracket-обрывки, обрамляющие кавычки, Reply: / Message 1:-префиксы и очевидные meta-leak строки про prompt/instructions
  • Если модель вернула только meta-текст или поток закончился по max_tokens, ChatGoose показывает понятную ошибку и просит regenerate вместо вставки битого текста
Технически
  • Добавлен общий reply-output normalizer для background и content UI
  • OpenRouter и Anthropic stream clients теперь прокидывают stop_reason в операции
  • Compare cards больше не показывают raw leaked output, если после sanitizer не осталось пригодных частей
  • Добавлены regression tests на Gemini leak, short replies, variant splitting, max_tokens и unusable-output ошибки
1.3.2

Hotfix после OpenRouter/LLM abstraction cleanup: исправлены цены Claude Opus 4.6/4.5, более устойчивый parsing OpenRouter stream и preflight warning для OpenRouter API key.

Главное
  • Claude Opus 4.6 и Claude Opus 4.5 теперь считаются по актуальным тарифам $5/$25 за MTok вместо старых Opus 4 тарифов $15/$75
  • Fan Summary больше не завышает отображаемый spend и Agency Hub usage cost при дефолтной Opus 4.6 модели
  • OpenRouter stream больше не падает на валидных SSE data: фреймах без явного event:
  • OpenRouter in-stream error payload классифицируется как rate limit / balance / API key / provider error, а не превращается в silent empty result
  • Если выбрана OpenRouter-модель и ключей вообще нет, preflight toast теперь просит OpenRouter API key, а не Claude key
Технически
  • OpenRouterClient выводит effective event из payload.type для Anthropic Messages stream
  • OpenAI chat-completion chunks на /api/v1/messages по-прежнему reject'ятся как unsupported shape
  • TabUiState получил provider map по feature models для provider-aware content preflight
  • Добавлены regression tests для Opus pricing, OpenRouter data-only SSE frames, OpenRouter stream errors и OpenRouter missing-key toast
1.3.1

Фикс OpenRouter usage/cost и финальная зачистка AI provider abstraction после добавления Gemini/Grok. Расходы, debug-профилирование и ошибки API key теперь больше не используют Claude-лейблы там, где выбран OpenRouter.

Главное
  • OpenRouter usage теперь корректно считает cached/read/write tokens без double-counting
  • cached_tokens и cache_write_tokens из OpenRouter responses попадают в spend и Agency Hub usage
  • Если выбрана OpenRouter-модель без OpenRouter API key, ChatGoose показывает OpenRouter-specific ошибку, а не Claude key warning
  • Debug/profiling строки для Gemini и Grok больше не подписаны как Claude
  • Grok cache-read pricing помечен approximate, пока cache-read цена не подтверждена надёжным source
Технически
  • Provider-neutral контракт переведён на llmSpend, llmUsage, llmCost
  • Удалены legacy anthropic* aliases из payload/profiling contract
  • claude-ttfb / claude-stream timeout и profiling keys заменены на llm-ttfb / llm-stream
  • OpenRouter adapter поддерживает Anthropic-shaped и OpenAI-shaped usage payloads
  • Unsupported OpenRouter SSE chunk shapes теперь дают ошибку вместо silent empty success
1.3.0

ChatGoose теперь умеет работать не только с Claude Direct, но и с OpenRouter. Это даёт доступ к Gemini и Grok прямо из настроек, без изменения привычного workflow: выбираете модель для каждой функции отдельно, а ChatGoose сам отправляет запрос нужному провайдеру.

Главное
  • Добавлена поддержка OpenRouter как второго AI-провайдера
  • В настройках появилось отдельное поле OpenRouter API Key
  • В выборе моделей появились две группы: Anthropic Direct и OpenRouter
  • Добавлены OpenRouter-модели: Gemini 3.1 Pro Preview, Grok 4.20, Grok 4.3
  • Модель можно выбирать отдельно для каждой функции: Reply, Help Me, Summary, Review и Ping
  • Claude продолжает работать напрямую через Anthropic, как раньше
  • Старые Claude-настройки сохраняются и мигрируют автоматически
Что это даёт
  • Можно тестировать Gemini и Grok на реальных чатах, не отключая Claude
  • Быстрые ответы, summaries и reviews можно сравнивать на разных моделях
  • Для дорогих или экспериментальных моделей можно включать OpenRouter только на отдельных функциях
  • Если OpenRouter key не добавлен, ChatGoose заранее покажет понятное предупреждение
  • OpenRouter-модели не подменяются Claude автоматически: выбранная модель остаётся явной
Технически
  • Новые сохранённые model ids теперь provider-aware: anthropic:... и openrouter:...
  • Старые bare Claude ids вроде claude-sonnet-4-6 остаются совместимыми и нормализуются автоматически
  • OpenRouter работает через Anthropic-compatible endpoint /api/v1/messages
  • Live smoke прошёл для google/gemini-3.1-pro-preview, x-ai/grok-4.20 и x-ai/grok-4.3
  • Стоимость считается из локального model registry
  • Для Grok учитываются cache_read_input_tokens, которые OpenRouter возвращает в usage
  • Для Grok 4.3 оценка стоимости помечается approximate: OpenRouter может применять tiered pricing выше 200k total tokens
  • x-ai/grok-4.20 — поддерживаемый slug. x-ai/grok-4.2 не используется и не добавлен
1.2.17

Финальная v2-проверка PPV в ChatGoose. Главный баг прошлой версии был в том, что расширение смотрело на «куплено» с точки зрения модели / viewer-side флагов Fansly. Для модели свой PPV-контент часто выглядит доступным, поэтому AI мог решить, что фан уже купил видео или бандл, и отвечать так, будто контент разблокирован.

Теперь ChatGoose проверяет покупку с точки зрения конкретного фана. Это снижает риск неправильных PPV-ответов и ложных предположений о покупке, но не обещает идеальное совпадение со всеми внутренними состояниями Fansly: если доказательств не хватает, статус остаётся unknown.

Главное
  • purchased ставится только когда найден точный заказ этого фана на этот конкретный PPV-контент
  • not purchased ставится только после успешной точной проверки /media/orderhistory, если заказ для пары «фан + контент» не найден
  • unknown ставится, когда не удалось определить фана, нет нужных API-данных, проверка заказа не сработала, упала, истекла по таймауту или часть вложений не попала в лимит проверок
  • Чаевые и embed-only сообщения (GIF/превью ссылок) больше не превращаются в ложные [Media]
Подробности
  • Проверка идёт с fan-perspective: media.purchased и похожие model-side/viewer-side флаги больше не считаются доказательством покупки фаном
  • Для неподтверждённых PPV-вложений ChatGoose делает exact /media/orderhistory check по accountMediaId или accountMediaBundleId и accountIds=<fanAccountId>
  • Метки медиа и бандлов стали точнее: nested mimetype fallback, состав через bundleContent[] / accountMediaIds[], правильные формы 1 Photo, 2 Videos
  • Пример новой метки: [Media Bundle: 1 Photo, 2 Videos — PPV $20.00, unknown]
  • Промпты fast-reply, improve-draft, help-me и ping теперь прямо говорят AI не цитировать PPV-цены/теги фану и не утверждать «купил» или «не купил» при unknown
Технически
  • normalizeTranscript() принимает PurchaseEvidenceOverride: inline /message.accountMediaOrders[] даёт только positive proof, а checkedNotPurchased* приходит только из exact verifier
  • Inline single засчитывается только как accountId === fanAccountId + type === 1 + accountMediaId; inline bundle — только type === 2 + accountMediaId. Type-less accountMediaId из обычного inline payload не считается покупкой
  • /media/orderhistory вызывается только для unresolved PPV-вложений: single через accountMediaId, bundle через accountMediaBundleId, всегда с accountIds=<fanAccountId> и limit=100
  • Ответ verifier парсится из accountMediaOrderHistory[] и fallback aggregationData.accountMediaOrders[]; строки повторно фильтруются по exact fan/content/kind
  • Verifier ограничен для быстрых replies: cap 10 уникальных PPV-вложений на операцию, concurrency 3, timeout 3s на запрос, in-memory cache 5 минут по (modelAccountId, fanAccountId, kind, contentId)
  • Любая неполная проверка — cap overflow, timeout, malformed response или API error — fail-open'ится в unknown, а не ломает операцию и не превращается в not purchased
  • session-capture теперь знает route key для /api/v1/media/orderhistory, чтобы session/auth check брался из правильного Fansly route
1.2.15
Исправлено
  • AI больше не предлагает фану купить PPV-контент, который тот уже разблокировал — расширение теперь видит, что конкретное видео или набор уже куплены, и не повторяет питч
  • Чаевые на сообщении больше не считаются разблокировкой PPV — это разные операции в Fansly, путать их нельзя
  • В транскрипте платные вложения помечаются статусом «куплено», «заблокировано» или «неизвестно»; при неизвестном статусе AI не делает уверенных утверждений о покупке
1.2.2
Улучшено
  • Максимальный лимит Deep feature message count увеличен до 3000 сообщений
  • Настройки и документация для Deep-фич синхронизированы с реальным дефолтом 1500 и диапазоном 100–3000
1.2.1
Исправлено
  • Исправлен endpoint отправки AI usage batch в Agency Hub: теперь используется корректный путь /api/v1/ai-usage/batch
1.2.0
Новое
  • После каждого успешно завершённого AI-действия ChatGoose отправляет usage в Agency Hub
  • Учитываются и обычные AI-фичи, и Compare, поэтому видно, кто из чаттеров сколько токенов использует
Улучшено
  • Usage отправляется батчами в фоне и не тормозит работу чаттера
  • В отчёт попадают модель, токены, длительность, conversation id, регенерация и cache hit для fan summary
  • Если Agency Hub недоступен или не настроен, расширение тихо пропускает отправку и продолжает работать как обычно
Исправлено
  • Ошибочные и прерванные операции больше не могут случайно попадать в usage-статистику
1.1.6
Улучшено
  • Сканирование фана теперь использует Claude Opus 4.6 по умолчанию
  • Лимит сообщений для Deep-фич увеличен до 1500 (макс. 2000)
1.1.5
Улучшено
  • Пинг-сообщения стали более персонализированными: бот использует конкретные детали из переписки
  • Оптимизирован prompt caching для пингов — быстрее и дешевле
1.1.4
Новое
  • Страница «Что нового» со всей историей обновлений
  • Ссылки на changelog со страниц установки и руководства
1.1.3
Улучшено
  • Бот теперь старается задавать вопрос в конце сообщения, чтобы поддерживать диалог с фаном
1.1.2
Исправлено
  • Навигация в руководстве больше не прыгает при скролле
1.1.1
Новое
  • Ребрендинг: GooseMuse стал ChatGoose
Исправлено
  • Навигационные ссылки больше не наезжают друг на друга на планшетах
1.1.0
Новое
  • Кнопка Hi для быстрого приветствия новых подписчиков
  • Страница-руководство по использованию расширения
  • Страница установки для Firefox
  • Автоматический деплой Firefox-расширения
1.0.0
Первый релиз
  • Быстрые ответы фанам с учётом персоналити модели
  • Выбор тона ответа: casual, flirty, upsell, spicy
  • Разбивка ответа на несколько сообщений
  • Улучшение черновиков
  • Пинг неактивных фанов
  • Обзор чата и саммари фана
  • Интеграция с Agency Hub
  • Отслеживание расходов на API
  • Встроенная персоналити Lora
  • Поддержка Firefox и Chrome