Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,5 @@ test/coverage.lcov

# Playwright MCP
.playwright-mcp/
/tiktok
/.cuckoo/skills
99 changes: 20 additions & 79 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## [4.0.25] - 2026-09-17

### Added

- **Инструмент `attach_file` — загрузка файлов-вложений в чат** — AI может прикрепить локальный файл (PDF, Word, Excel, PPT, изображения и др. бинарные форматы) прямо в поле ввода:
- скрытый `input[type=file]` на странице чата заполняется через `DataTransfer` + событие `change`;
- лимит 30 МБ, авто-определение MIME по расширению (~50 типов, фолбэк `application/octet-stream`);
- JS-API `attachFile(filePath)` (в песочнице также принимает объект `{ filePath }`), объявление в `cuckoo-tools.d.ts`, запись в `tool-names.js`;
- окно определяется через callback `attachFile` (по аналогии с `pasteImage` у `read_photo`), а не через `BrowserWindow.fromId`.
- **Telegram-бот: индикатор «печатает…»** — во время генерации ответа AI в чат отправляется `sendChatAction('typing')` каждые ~4 секунды, статус гасится по завершении стрима. IPC-хэндлеры `telegram-typing-start` / `telegram-typing-stop`, обновлён `observer.js`.

### Changed

- **Задержка отправки — теперь в секундах** — в overlay-панели поля ввода переведены с миллисекунд на секунды (шаг 0.1):
- хранение в `localStorage` и `state` осталось в мс (обратная совместимость с `chat-input.js`);
- конвертация мс ↔ сек на границе UI, подпись `сек` / `sec`;
- валидация и тосты переписаны под новые единицы.
- **i18n для настроек задержки** — сообщения об ошибках и сохранении переведены на ru/en (ранее были захардкожены на китайском): ключи `overlay.delay.*`.
- Исправлена вёрстка строки задержки в overlay — подписи «до» и «сек» больше не переносятся по буквам (отдельный класс `.cuckoo-delay-label` вместо `.cuckoo-blur-label` с `space-between`).

## [4.0.24] - 2026-09-16

### Added
Expand All @@ -15,82 +35,3 @@

- **Меню slash-команд `/`** оставлено без иконок — иконки показываются только в списке файлов (`@`).
- Список файлов в меню `@` выровнен по левому краю с иконкой 16×16 (папка — SVG, файл — Material-иконка).

## [4.0.20] - 2026-09-16

### Added

- **Telegram-бот: команды управления** — теперь из Telegram доступны:
- `/status` — статус окна, проекта, процессов, задач и polling бота
- `/stop` (синоним `/kill`) — прервать текущую задачу и убить активные дочерние процессы
- `/new` — открыть новый чат на домашней странице провайдера
- `/diff` — прислать `git diff` текущего проекта (до 3 КБ суммарно, с картой файлов)
- `/diagnostics` (синоним `/diag`) — отчёт диагностики интеграции main/preload/сайта
- **Telegram-бот: очередь сообщений** — исходящие сообщения идут через очередь с троттлингом ~1 сообщение/сек на чат (уважает лимит Telegram)
- **Telegram-бот: retry на 429** — при rate-limit соблюдается `retry_after` из ответа Telegram, до 3 попыток на запрос
- **Telegram-бот: файловый лог** — `<userData>/telegram-bot.log` с ротацией при 512 КБ (переименование в `.1`), уровни info/warn/error; дублирует вывод в консоль
- **Telegram-бот: маскировка токена** — все сообщения и логи проходят через `TelegramBot.maskToken()`, токен заменяется на `bot<TOKEN>`
- **`/cancel` отменяет и подтверждения** — теперь сбрасывает не только ожидающий ввод, но и все pending-approval вызовы инструментов
- **`/settings`** — обновлена справка `/help` со всеми новыми командами
- **IPC `new-chat`** — новый обработчик + `window.electronAPI.newChat()` (переход на домашнюю страницу активного провайдера)
- **`window.electronAPI.runDiagnosticsText()`** — запуск диагностики в контексте страницы, возвращает готовый текстовый отчёт
- **Сайт проекта на GitHub Pages** (`docs/`) — лендинг в Material Design 3:
- тёмная тема, голубые акценты, Material Symbols Outlined
- версии на русском (`index.html`) и английском (`en.html`) с переключателем языка
- галерея скриншотов с lightbox (клик / Esc)
- секции: hero, «зачем», возможности, таблица инструментов, установка, использование, конфигурация, CTA
- готов к публикации через Settings → Pages → `/docs`
- **prettier** добавлен как devDependency

## [4.0.19] - 2026-09-15

### Added

- **Учёт токенов диалога**: панель «Токены диалога» с оценкой всего диалога из DOM (CJK 0.6 / ASCII 0.3), сохранение по `sessionId` в localStorage, обновление раз в секунду, на `popstate`/`hashchange` и `beforeunload`; формат K/M вместо китайского «万»
- **Токены под ответом AI**: оценка токенов именно этого ответа под каждым сообщением
- **Перехват серверных токенов DeepSeek** (`token-interceptor`): точные значения usage из ответов DeepSeek + настройка видимости
- **What's New**: модальное окно нововведений при первом запуске после обновления
- `src/main/changelog-parser.js` — парсер CHANGELOG.md (диапазон версий, semver-сравнение)
- `src/main/whats-new.js` — логика check-and-mark, атомарная запись состояния
- `src/preload/dom/whats-new.js` — одноразовый модал в рендерере; CHANGELOG.md включается в сборку
- **Диагностика интеграции** (`src/preload/dom/diagnostics.js`) — инструмент и UI проверки связки main/preload/сайт

### Changed

- **Удалён Claude-провайдер** (`src/providers/claude.js`, промпт, лого, тесты)
- Удалён мёртвый код network-hook (`src/interceptor/`, `intercept-observer.js`, `serverTokenUsage`, `useIntercept`)
- Обновлён UI вкладки настроек (`settings-tab.js`)
- Убран устаревший хелпер tryOpenInVSCode

## [4.0.18] - 2026-09-14

### Added

- **Авто-форматтеры** после `write`/`edit`: файл автоматически приводится к стилю проекта
- Встроенный реестр: prettier, biome, gofmt, ruff, rustfmt, shfmt, clang-format
- Определение по расширению + наличию конфига + бинарю в `PATH` или `node_modules/.bin`
- Отключается флагом `formattersEnabled: false` в `cuckoo-settings.json`
- Ошибки форматтера никогда не ломают `write`/`edit`
- Кнопка вкл/выкл в настройках Cookie Code; документация в README (EN + RU)
- **Режим плана (Plan Mode)**: кнопка-тумблер, per-session режим, перетаскиваемый диалог плана, инструмент `exit_plan_mode`
- **Produced files** под ответом AI (факт-ориентированно, только успешные операции), ru/en i18n, настройка `showProducedFiles`, тесты
- **Бейджи +/− строк** по каждому блоку diff в ответе
- **Telegram-бот**: команды `/help` и `/settings` с полным меню настроек

### Fixed

- `meta.produced` label: «Создано» → «Затронуто» / Produced → Affected
- i18n overlay: `OVERLAY_HTML` → `buildOverlayHTML()` — пересборка при смене языка

## [4.0.17] - 2026-09-14

### Added

- **File-path chips**: кликабельные чипы путей (абсолютный + относительный через `projectDir`) с открытием в VS Code / проводнике и настройкой видимости
- **Produced files** под ответом AI (базовый вариант) + ru/en i18n
- Override QR-кода скачивания приложения DeepSeek — свой QR и ссылка на Telegram
- `safe()`-обёртка для защиты от изменений DOM DeepSeek

### Fixed

- `meta.produced` label: Создано → Затронуто / Produced → Affected
Loading
Loading