Merged
Conversation
… hearts, read name normalization - tg: compact Tech-style notifications (emoji + action + path/command), batching of identical consecutive calls into (xN), command/result wrapped in blockquote, result (preview) shown as second blockquote, skip service tools (ask_user_question, exit_plan_mode), normalize read/readLines/read_lines/read_file icons - settings: drop read/readLines from default telegramToolNotifyIgnore so reads show up - pet: hold-drag petting emits hearts, pet returns home after stroke (both center and docked modes)
- new tools/AttachTelegramTool.js: attach_telegram / attachTelegram(filePath, caption?, comment?) - sends any local file as a Telegram document via configured bot (telegramBot.sendDocument) - optional comment: extra note the AI adds; appended to caption (blank line) or used as caption - 45MB size cap (Telegram doc limit 50MB), caption/comment capped at 1024 chars - register tool in tools/index.js; expose attachTelegram wrapper in JsRunner sandbox BOOTSTRAP - add attachTelegram declaration to cuckoo-tools.d.ts
…ts in place - add /projects (aliases /project, /proj): inline picker with paged list (8/page), nav buttons and manual path entry - new IPC set-project-dir + preload setProjectDir + setProjectByDir() in project-context.js: set project by known path without opening the folder dialog - /sessions and /log now edit the existing message instead of sending new ones (_lastListMsg map + editMessageId in _pagers), paginated callbacks pass msgId - /new reports result explicitly: no window / failure / success (new.noWindow, new.failed, new.done) - project.* i18n keys (ru/en)
…), fix msgId crash - setProjectByDir(): after setting the dir, build and send initial-prompt to the window (same as initProject) so the AI actually switches to the new project - setProjectByDir is now async; ipc handler awaits it - fix ReferenceError: msgId is not defined in _handleCallback (project pagination); msgId now derived from cbq.message, editMessageText falls back to sendMessage
…f new chat
- setProjectByDir(): find an existing session mapped to the project dir and
loadURL() to it (same as /switch), instead of sending initial-prompt
(which behaved like starting a new chat)
- provider URL is built from sessionUrlBase; falls back to DeepSeek chat URL
- session-store currentSessionId is updated to the found session
- returns { success, dir, sessionId } so the bot can report which session was used
…loads) - _cmdNew: call newChat fire-and-forget instead of awaiting executeJavaScript; loadURL inside newChat unloads the window context, so the awaited promise never resolved and the bot stayed silent - always reply new.done after a short pause; drop the unreachable error branch
- delete src/preload/dom/deepseek-language.js: it force-switched the DeepSeek Language setting to System and locked the select (pointer-events:none, aria-disabled, killed onMouseDown/onKeyDown) so the user could not change it - drop its require and startWatch() call from src/preload/index.js - no other references remain (git grep clean); the language select is now free
…es, lang lock removed)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что в этом PR
Ветка
update→master. 9 коммитов, 20 файлов (+1252 / −368).Added
attach_telegram— AI может отправить любой локальный файл пользователю в Telegram:attachTelegram(filePath, caption?, comment?);comment— необязательная заметка от AI, дописывается кcaptionили уходит подписью сама;telegramBot.sendDocument), новых зависимостей нет;tools/index.js, обёртка в песочницеJsRunner, объявление вcuckoo-tools.d.ts./projects(алиасы/project,/proj):/switch), новый чат не создаётся;/diff,/log,/sessionsпоказывают клавиатуру выбора.Changed
/logи/sessionsредактируют существующее сообщение (editMessageText) вместо отправки нового при повторном вызове и пагинации./newявно сообщает результат: успех / нет активного окна / ошибка./startбольше не требует выбора языка.Fixed
/newне отвечал —newChat()делаетloadURLи выгружает JS-контекст, поэтомуexecuteJavaScriptс ожиданием результата зависал. Теперь fire-and-forget.ReferenceError: msgId is not definedв_handleCallback; id берётся изcbq.message, есть фолбэк наsendMessage.set-project-dir(+setProjectDirв preload,setProjectByDirв main): поиск сессии по папке проекта и навигация на неё.setProjectDir недоступен в окне— метода не существовало, добавлен полный путь IPC → preload → main.Removed
src/preload/dom/deepseek-language.js(переключал Language на «Система» и блокировал селект). Язык UI DeepSeek снова выбирается пользователем свободно.Docs
Проверки
node --checkпо всем изменённым JS-файлам — OK.attach_telegramпрогнан через реальныйJsRunnerс моком Telegram API: успешная отправка (multipart POST .../sendDocument), отказ для файла >45 МБ, ошибка для отсутствующего файла.src/main/changelog-parser.js: версия 4.0.34 распознана, попадает в диапазон whats-new.Замечания для ревью
setProjectByDirпереключает окно на первую найденную сессию проекта (если у проекта их несколько — на произвольную). При необходимости можно выбирать самую свежую или давать список.### ... (EN)блоками внутри той же версии — whats-new покажет ru и en подряд.