История обновлений ChatGoose
Reasoning block теперь не смешивается с prompt debug: LLM Input снова показывает только данные, отправленные в модель.
Reasoning block оставлен только в Pipeline ProfilingLLM Input inspector больше не показывает provider reasoning outputreasoning из PromptDebugSnapshotoperation:debugPrompt снова содержит только system/transcript/data/user prompt
Reasoning block теперь виден прямо в карточке Pipeline Profiling, а не только в нижнем LLM Input inspector.
Pipeline Profiling появилась раскрываемая строка Reasoning blockReasoning requested и Reasoning observedOperationProfilingSnapshot теперь хранит reasoningBlockReasoning debug теперь показывает не только факт thinking-события, но и сам summarized reasoning block, если провайдер прислал его в stream.
Reasoning BlockReasoning observedonReasoningDeltaoperation:debugPromptFollow-up hotfix после review 1.3.10: retry/backoff теперь сохраняет ожидаемое поведение в edge cases.
enqueue() не ставит debounce timer, пока target queue уже flushing; post-flush scheduling выбирает backoff60s Agency Hub retry delay при MAX_ATTEMPTS = 3Hotfix для reasoning stream, provider-aware ключей и Agency Hub usage retry.
Settings → AI Models reasoning-select отключается для моделей/feature, которые реально не отправляют reasoning configllm-ttfb завершается на первый provider event/progress/reasoning signal, а первый text chunk по-прежнему только добавляет текст в UIreasoning property даже при пустой строке
Claude reasoning теперь проще проверить: включённый Anthropic adaptive thinking
запрашивает видимый summarized stream-сигнал, а в настройках появился отдельный
Max.
Settings → AI Models → Reasoning добавлено значение MaxMax уходит в Anthropic как output_config.effort = "max"thinking.display = "summarized", чтобы Reasoning observed мог увидеть thinking-событие в streamtext_delta, поэтому summarized thinking не вставляется в чатMax безопасно мапится в highReasoning visibility теперь вынесена прямо в completed profiling summary, чтобы её было видно после генерации без live log.
Pipeline Profiling появились отдельные строки Reasoning requested и Reasoning observedlogEntries и рендерит их как обычные profiling rowsDebug/profiling теперь показывает, был ли reasoning фактически замечен в ответном stream, а не только выбран в настройках.
Reasoning requested: ... и Reasoning observed: yes/noReasoning observed: yes появляется только если в stream пришёл thinking/redacted thinking block, thinking_delta, signature_delta или reasoning deltaonReasoningObservedno, если reasoning был запрошен, но stream не содержал reasoning-событий
Hotfix для CG-APP-01 после включения reasoning: Anthropic adaptive thinking
теперь не отправляется вместе с temperature, потому что extended/adaptive
thinking несовместим с temperature modifications.
Reply, Fix, Ping, Hi, Help, Summary и Review сохраняют reasoning medium по умолчаниюtemperature, поэтому API не должен отклонять их validation errorOff или выбранная Claude-модель не поддерживает adaptive thinking, temperature продолжает использоваться как раньшеtemperature добавляется только когда thinking не отправляетсяthinking/output_config, но не содержат temperature
Reasoning теперь по умолчанию работает на medium, а в настройках можно
отдельно управлять reasoning effort для каждой feature-модели.
medium: быстрые replies больше не остаются на lowSettings → AI Models у каждой feature-строки появился отдельный селект ReasoningOff, Low, Medium, HighFix, Hi и Compare наследуют reasoning-настройку от Fast ReplyOff полностью убирает thinking/reasoning config из запроса для поддерживаемых моделейsettings.featureReasoning со storage schema 7; старые настройки автоматически получают mediumreasoningEffort вместо feature-hardcodeClaude Direct replies теперь используют Anthropic adaptive thinking для Sonnet 4.6 и Opus 4.6, с большими аварийными output caps, чтобы thinking не обрезал финальный текст.
thinking.type = adaptive и thinking.display = omittedReply, Fix, Ping и Hi включён output_config.effort = lowHelp, Summary и Review включён output_config.effort = medium8000 для коротких replies, 16000 для Help/Review и 24000 для Summaryclaude-sonnet-4-6 и claude-opus-4-6
Hotfix для Gemini replies: thinking остаётся включённым на low,
но ChatGoose больше не вставляет в UI служебные обрывки, prompt-leak текст
и незавершённые ответы.
thinking.display = omitted и output_config.effort = low для коротких insertable-фичmax_tokens[NEXT] / [VARIANT] проходят sanitizer: убираются bracket-обрывки, обрамляющие кавычки, Reply: / Message 1:-префиксы и очевидные meta-leak строки про prompt/instructionsmax_tokens, ChatGoose показывает понятную ошибку и просит regenerate вместо вставки битого текстаreply-output normalizer для background и content UIstop_reason в операцииmax_tokens и unusable-output ошибкиHotfix после OpenRouter/LLM abstraction cleanup: исправлены цены Claude Opus 4.6/4.5, более устойчивый parsing OpenRouter stream и preflight warning для OpenRouter API key.
$5/$25 за MTok вместо старых Opus 4 тарифов $15/$75data: фреймах без явного event:error payload классифицируется как rate limit / balance / API key / provider error, а не превращается в silent empty resultOpenRouterClient выводит effective event из payload.type для Anthropic Messages stream/api/v1/messages по-прежнему reject'ятся как unsupported shapeTabUiState получил provider map по feature models для provider-aware content preflightФикс OpenRouter usage/cost и финальная зачистка AI provider abstraction после добавления Gemini/Grok. Расходы, debug-профилирование и ошибки API key теперь больше не используют Claude-лейблы там, где выбран OpenRouter.
cached_tokens и cache_write_tokens из OpenRouter responses попадают в spend и Agency Hub usagellmSpend, llmUsage, llmCostanthropic* aliases из payload/profiling contractclaude-ttfb / claude-stream timeout и profiling keys заменены на llm-ttfb / llm-streamChatGoose теперь умеет работать не только с Claude Direct, но и с OpenRouter. Это даёт доступ к Gemini и Grok прямо из настроек, без изменения привычного workflow: выбираете модель для каждой функции отдельно, а ChatGoose сам отправляет запрос нужному провайдеру.
anthropic:... и openrouter:...claude-sonnet-4-6 остаются совместимыми и нормализуются автоматически/api/v1/messagesgoogle/gemini-3.1-pro-preview, x-ai/grok-4.20 и x-ai/grok-4.3cache_read_input_tokens, которые OpenRouter возвращает в usagex-ai/grok-4.20 — поддерживаемый slug. x-ai/grok-4.2 не используется и не добавленФинальная v2-проверка PPV в ChatGoose. Главный баг прошлой версии был в том, что расширение смотрело на «куплено» с точки зрения модели / viewer-side флагов Fansly. Для модели свой PPV-контент часто выглядит доступным, поэтому AI мог решить, что фан уже купил видео или бандл, и отвечать так, будто контент разблокирован.
Теперь ChatGoose проверяет покупку с точки зрения конкретного фана. Это снижает риск неправильных PPV-ответов
и ложных предположений о покупке, но не обещает идеальное совпадение со всеми внутренними состояниями Fansly:
если доказательств не хватает, статус остаётся unknown.
purchased ставится только когда найден точный заказ этого фана на этот конкретный PPV-контентnot purchased ставится только после успешной точной проверки /media/orderhistory, если заказ для пары «фан + контент» не найденunknown ставится, когда не удалось определить фана, нет нужных API-данных, проверка заказа не сработала, упала, истекла по таймауту или часть вложений не попала в лимит проверок[Media]media.purchased и похожие model-side/viewer-side флаги больше не считаются доказательством покупки фаном/media/orderhistory check по accountMediaId или accountMediaBundleId и accountIds=<fanAccountId>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-цены/теги фану и не утверждать «купил» или «не купил» при unknownnormalizeTranscript() принимает PurchaseEvidenceOverride: inline /message.accountMediaOrders[] даёт только positive proof, а checkedNotPurchased* приходит только из exact verifieraccountId === 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=100accountMediaOrderHistory[] и fallback aggregationData.accountMediaOrders[]; строки повторно фильтруются по exact fan/content/kind(modelAccountId, fanAccountId, kind, contentId)unknown, а не ломает операцию и не превращается в not purchasedsession-capture теперь знает route key для /api/v1/media/orderhistory, чтобы session/auth check брался из правильного Fansly routeDeep feature message count увеличен до 3000 сообщений/api/v1/ai-usage/batch