diff --git a/content/docs/tasks.es.md b/content/docs/tasks.es.md index 5c54341..cd0d773 100644 --- a/content/docs/tasks.es.md +++ b/content/docs/tasks.es.md @@ -112,7 +112,8 @@ tarea encontrada en un mensaje puede tener responsables; las tareas de proyecto Una tarea sin responsable está bien: es mejor que una tarea perdida. Si la herramienta no conoce a la persona que envió el mensaje, la tarea se añade igualmente, sin responsable. -`tasks list "assignee:any state:open"` lista las tareas abiertas que otros te deben. `assignee:none` +`tasks agenda` lista las tareas abiertas que otros te deben en "assigned", primero las más antiguas; +`tasks list "assignee:any state:open"` también las lista. `assignee:none` encuentra las tareas sin responsable, y `assignee:person:` las de una persona. Los agentes que usan el servidor MCP pasan `assignee` a `tasks_add` y `tasks_plan`. @@ -173,8 +174,8 @@ te da muchas tareas. tarea. - Pide a tu agente que lea los mensajes nuevos de cada día y añada lo que las reglas no ven: peticiones y promesas sin signo de interrogación, tuyas y de otras personas. -- Guarda lo que otros te deben como tareas con responsable y revisa - `tasks list "assignee:any state:open"`. +- Guarda lo que otros te deben como tareas con responsable. La agenda las lista en "assigned", primero + las más antiguas. ```text prompt Usa tg CLI. Sincroniza mis chats y muéstrame la agenda de tareas. Después lee los mensajes nuevos de hoy en mis chats uno a uno y en los grupos con la etiqueta watch-tasks, y añade una tarea por cada petición o promesa que las reglas no detectaron, con el remitente como responsable cuando sea su promesa. Muéstrame la lista antes de añadir nada. No envíes nada. @@ -246,7 +247,8 @@ tg personal tasks reject - **agenda** lista las tareas vencidas, las que vencen pronto o toca revisar, y después los chats - donde debes una respuesta y los chats donde la esperas tú. Avisa si el almacén lleva tiempo sin + donde debes una respuesta y los chats donde la esperas tú, y por último lo que otros te deben: las + tareas abiertas con responsable, primero las más antiguas. Avisa si el almacén lleva tiempo sin guardar nada. - **add** necesita un tipo. También necesita una categoría (`--category`), y se niega si ya existe una tarea parecida; consulta diff --git a/content/docs/tasks.md b/content/docs/tasks.md index 810ea30..8d32365 100644 --- a/content/docs/tasks.md +++ b/content/docs/tasks.md @@ -108,7 +108,8 @@ found in a message can have assignees; project tasks in `memo` have their own. A task with no assignee is fine: it is better than a missed task. If the tool knows no person for the sender, the task is still added, with no assignee. -`tasks list "assignee:any state:open"` lists the open tasks that others owe you. `assignee:none` finds +`tasks agenda` lists the open tasks that others owe you under "assigned", oldest first; +`tasks list "assignee:any state:open"` lists them too. `assignee:none` finds tasks with no assignee, and `assignee:person:` the tasks of one person. Agents that use the MCP server pass `assignee` to `tasks_add` and `tasks_plan`. @@ -166,7 +167,7 @@ tasks. the chats where you wrote last and nobody answered. These are there even when no task is. - Ask your agent to read each day's new messages and add what the rules cannot see: requests and promises without a question mark, yours and other people's. -- Keep what others owe you as tasks with an assignee, and check `tasks list "assignee:any state:open"`. +- Keep what others owe you as tasks with an assignee. The agenda lists them under "assigned", oldest first. ```text prompt Use tg CLI. Sync my chats and show my task agenda. Then read today's new messages in my one-to-one chats and in the groups tagged watch-tasks, and add a task for each request or promise the rules missed, with the sender as assignee when it is their promise. Show me the list before you add anything. Don't send anything. @@ -238,7 +239,8 @@ tg personal tasks reject - **agenda** lists tasks that are overdue, due soon or due for a check, then chats where you owe an - answer and chats where you wait for one. It warns when the store has not saved anything for a while. + answer and chats where you wait for one, then what others owe you: open tasks with an assignee, oldest + first. It warns when the store has not saved anything for a while. - **add** needs a type. It also needs a category (`--category`), and it refuses when a similar task exists; see [No duplicate tasks](#no-duplicate-tasks). - **plan** sets the title, the description, the due date, the next check and the assignees. diff --git a/content/docs/tasks.ru.md b/content/docs/tasks.ru.md index 8a2047f..4534895 100644 --- a/content/docs/tasks.ru.md +++ b/content/docs/tasks.ru.md @@ -108,7 +108,8 @@ description: "Вопросы, просьбы и обещания из ваших Задача без исполнителя — это нормально: лучше, чем пропущенная задача. Если инструмент не знает человека-отправителя, задача всё равно добавляется, без исполнителя. -`tasks list "assignee:any state:open"` показывает открытые задачи, которые вам должны другие. +`tasks agenda` показывает открытые задачи, которые вам должны другие, в разделе "assigned", сначала +самые старые; `tasks list "assignee:any state:open"` тоже их показывает. `assignee:none` находит задачи без исполнителя, а `assignee:person:` — задачи одного человека. Агенты, которые работают через MCP-сервер, передают `assignee` в `tasks_add` и `tasks_plan`. @@ -167,8 +168,8 @@ tg personal tags remove --chat "Renovation" watch-tasks чаты, где последним написали вы и вам не ответили. Они там, даже если задачи нет. - Попросите агента каждый день читать новые сообщения и добавлять то, чего правила не видят: просьбы и обещания без вопросительного знака — ваши и чужие. -- Храните то, что вам должны другие, как задачи с исполнителем и проверяйте - `tasks list "assignee:any state:open"`. +- Храните то, что вам должны другие, как задачи с исполнителем. План на день показывает их в разделе + "assigned", сначала самые старые. ```text prompt Используй tg CLI. Синхронизируй мои чаты и покажи план задач. Потом прочитай сегодняшние новые сообщения в личных чатах и в группах с тегом watch-tasks и добавь задачу на каждую просьбу или обещание, которые пропустили правила; если это обещание отправителя, укажи его исполнителем. Покажи список, прежде чем что-то добавлять. Ничего не отправляй. @@ -240,7 +241,8 @@ tg personal tasks reject - **agenda** показывает просроченные задачи, задачи со скорым сроком или пора проверить, затем чаты, - где ответа ждут от вас, и чаты, где ждёте вы. Предупреждает, если хранилище давно ничего не сохраняло. + где ответа ждут от вас, и чаты, где ждёте вы, затем то, что должны вам: открытые задачи с исполнителем, + сначала самые старые. Предупреждает, если хранилище давно ничего не сохраняло. - **add** требует тип и категорию (`--category`) и отказывает, если уже есть похожая задача; см. [Без дубликатов](#без-дубликатов). - **plan** задаёт название, описание, срок, следующую проверку и исполнителей. Следующая проверка — когда агенту diff --git a/docs/release-notes-review.json b/docs/release-notes-review.json index 3ec16f4..556fd21 100644 --- a/docs/release-notes-review.json +++ b/docs/release-notes-review.json @@ -1,9 +1,9 @@ { "tg": { - "version": "v0.71.0", + "version": "v0.72.0", "roadmapSha256": "978bfe805c38732b567388b00cbe701d12721599bc2d3e8dae060fee8f83baab", "reviewedAt": "2026-10-18", - "conclusion": "Reviewed Telegram0.69-0.71 with Core0.326.0/Base0.43.0: an agent can no longer delete for everyone; mcp --permission only tightens (a looser override is refused at startup, so shared browser and permission pages no longer start tg with messages.send=allow); TG_READ_ONLY also stops login/logout and store changes; contacts link me; fewer wrong mention names, own accounts linked, addresses keep their city; in a watch-tasks group any member's reply closes a question while a later non-reply closes nothing; bot MCP tools are the bot commands with their own snake_case arguments. Roadmap unchanged: multi-photo sending, private chat notes and listed MAX-only capabilities remain planned." + "conclusion": "Reviewed Telegram0.72.0 with Core0.331.0/Base0.43.5: tasks agenda lists what others owe you (an assigned section, assigned in JSON); the duplicate check weighs a shared reply chain less, so fewer false duplicate suggestions; a command path given as one argument fails; interactive commands without a terminal wait 5 minutes; under TG_READ_ONLY writes that ask first stop with exit 5 before asking; session start, session end and setup never run through serve, and session end with serve running stops with exit 2; the stemmer settings are spelled search_stemmers.* in the native pages. Roadmap unchanged: multi-photo sending, private chat notes and listed MAX-only capabilities remain planned." }, "max": { "version": "v0.60.0", diff --git a/docs/reviews/2026-10-18-tg-072-release.md b/docs/reviews/2026-10-18-tg-072-release.md new file mode 100644 index 0000000..52318d0 --- /dev/null +++ b/docs/reviews/2026-10-18-tg-072-release.md @@ -0,0 +1,42 @@ +# tg 0.72.0 release review: the agenda lists what others owe you, stemmer settings fixed at the source + +Reviewer: Claude. Portal base: `78fb75e`. +Reviewed runtime: tg `v0.72.0`, commit `9c30815eff5ef19b85f5e29727fb73e9d503507e`, Core `0.331.0`, Base `0.43.5`. +Compared native guides and changelog against the previous pin `v0.71.0` (#304). +Other runtime pins are unchanged. + +Readers of the tg pages now learn that `tasks agenda` lists the open tasks others owe them, that a shared reply chain +counts less in the duplicate check, and the 0.72.0 changes to `session end`, read-only exits and interactive timeouts. +The stemmer settings read `search_stemmers.*` from the native pages, without a portal correction. + +## Evidence + +- tg tagged diff `v0.71.0..v0.72.0`: `CHANGELOG.md` (0.72.0), `docs/commands.md` (generated: the agenda description + adds "open tasks someone else does"), `docs/archive.md` and `docs/configuration-reference.md` (`searchStemmers.*` → + `search_stemmers.*`, tg-cli#602). `docs/roadmap.md` unchanged (fingerprint `978bfe80…`). +- cli-core `v0.331.0` contains cli-core#1484 (agenda "assigned" section, merge `4fe8c553`) and cli-core#1497 (reply-chain + weight +6 → +2, merge `4d6f5304`). + +## Reader paths + +| Page / locale | Changed fact | Result / owner | +| --- | --- | --- | +| tasks / EN, RU, ES | The agenda lists what others owe you under "assigned", oldest first | Reviewed / Claude | +| tg commands / RU, ES | Agenda description adds open tasks someone else does | Reviewed / Claude | +| tg archive, configuration-reference / RU, ES | `search_stemmers.*` spelling | Reviewed / Claude | +| tg changelog / RU, ES | 0.72.0 entry | Reviewed / Claude | +| tg cli-contract / RU, ES | Versioned link moved to v0.72.0 | Reviewed / Claude | + +## Portal corrections + +- Removed: tg/configuration-reference and tg/archive EN/RU/ES `searchStemmers.*` → `search_stemmers.*`. The native pages + at v0.72.0 spell `search_stemmers.*` (tg-cli#602), and the synced pages contain no `searchStemmers`. + +## Remaining items + +- Native, cli-core: the `config unset` setting list in the generated `commands.md` still includes `default_profile` + (still there at v0.72.0, Core 0.331.0). + +## Validation + +Portal check results are recorded in the PR. No account or message data was used. diff --git a/scripts/docs-corrections.json b/scripts/docs-corrections.json index fe46807..d6abb34 100644 --- a/scripts/docs-corrections.json +++ b/scripts/docs-corrections.json @@ -2069,115 +2069,5 @@ } ] } - }, - { - "tool": "tg", - "slug": "configuration-reference", - "reason": "cli-core reads the store-wide stemmer settings as search_stemmers.cyrillic and search_stemmers.latin (src/cli/store-settings.ts); the camelCase name is refused.", - "replacements": { - "en": [ - { - "before": "| `searchStemmers.cyrillic`, `searchStemmers.latin` |", - "after": "| `search_stemmers.cyrillic`, `search_stemmers.latin` |" - }, - { - "before": "`searchStemmers.cyrillic` (`russian`", - "after": "`search_stemmers.cyrillic` (`russian`" - }, - { - "before": "`searchStemmers.latin` (`english`", - "after": "`search_stemmers.latin` (`english`" - }, - { - "before": "| `searchStemmers.cyrillic` | `russian`, `none` |", - "after": "| `search_stemmers.cyrillic` | `russian`, `none` |" - }, - { - "before": "| `searchStemmers.latin` | `english`, `spanish`,", - "after": "| `search_stemmers.latin` | `english`, `spanish`," - } - ], - "es": [ - { - "before": "| `searchStemmers.cyrillic`, `searchStemmers.latin` |", - "after": "| `search_stemmers.cyrillic`, `search_stemmers.latin` |" - }, - { - "before": "`searchStemmers.cyrillic` (`russian`", - "after": "`search_stemmers.cyrillic` (`russian`" - }, - { - "before": "`searchStemmers.latin` (`english`", - "after": "`search_stemmers.latin` (`english`" - }, - { - "before": "| `searchStemmers.cyrillic` | `russian`, `none` |", - "after": "| `search_stemmers.cyrillic` | `russian`, `none` |" - }, - { - "before": "| `searchStemmers.latin` | `english`, `spanish`,", - "after": "| `search_stemmers.latin` | `english`, `spanish`," - } - ], - "ru": [ - { - "before": "| `searchStemmers.cyrillic`, `searchStemmers.latin` |", - "after": "| `search_stemmers.cyrillic`, `search_stemmers.latin` |" - }, - { - "before": "`searchStemmers.cyrillic` (`russian`", - "after": "`search_stemmers.cyrillic` (`russian`" - }, - { - "before": "`searchStemmers.latin` (`english`", - "after": "`search_stemmers.latin` (`english`" - }, - { - "before": "| `searchStemmers.cyrillic` | `russian`, `none` |", - "after": "| `search_stemmers.cyrillic` | `russian`, `none` |" - }, - { - "before": "| `searchStemmers.latin` | `english`, `spanish`,", - "after": "| `search_stemmers.latin` | `english`, `spanish`," - } - ] - } - }, - { - "tool": "tg", - "slug": "archive", - "reason": "cli-core reads the store-wide stemmer settings as search_stemmers.cyrillic and search_stemmers.latin (src/cli/store-settings.ts); the camelCase name is refused.", - "replacements": { - "en": [ - { - "before": "`tg config set searchStemmers.cyrillic russian`", - "after": "`tg config set search_stemmers.cyrillic russian`" - }, - { - "before": "`searchStemmers.latin english,spanish`", - "after": "`search_stemmers.latin english,spanish`" - } - ], - "es": [ - { - "before": "`tg config set searchStemmers.cyrillic russian`", - "after": "`tg config set search_stemmers.cyrillic russian`" - }, - { - "before": "`searchStemmers.latin english,spanish`", - "after": "`search_stemmers.latin english,spanish`" - } - ], - "ru": [ - { - "before": "`tg config set searchStemmers.cyrillic russian`", - "after": "`tg config set search_stemmers.cyrillic russian`" - }, - { - "before": "`searchStemmers.latin english,spanish`", - "after": "`search_stemmers.latin english,spanish`" - } - ] - } } ] diff --git a/tools.json b/tools.json index a713d35..dda50ed 100644 --- a/tools.json +++ b/tools.json @@ -21,7 +21,7 @@ "ru": "Клиент Telegram для терминала и ИИ-агентов, с вашим собственным аккаунтом.", "es": "Un cliente de Telegram para la terminal y para agentes de IA, con tu propia cuenta." }, - "docsRef": "v0.71.0" + "docsRef": "v0.72.0" }, { "name": "drive", diff --git a/translations/sources.json b/translations/sources.json index 668270d..cf392dc 100644 --- a/translations/sources.json +++ b/translations/sources.json @@ -58,18 +58,18 @@ "max/troubleshooting.es": "cee7a1a2f60cabcb639bc73d33f2f1db19a7c964c98d602c0319866004b7e34a", "max/usage.en": "4bfca461d8b77ecf99af57d0e405d8708db9b6bbf13649c4768b293731a554ee", "max/usage.es": "4bfca461d8b77ecf99af57d0e405d8708db9b6bbf13649c4768b293731a554ee", - "tg/archive.es": "39fd8faf0c8616215953751d740db42744290410564fdc81ad61135e3b1f06d4", - "tg/archive.ru": "39fd8faf0c8616215953751d740db42744290410564fdc81ad61135e3b1f06d4", + "tg/archive.es": "5a12db3c345d75d53f626a3c45292035cc40c3d73f8ac6cfb7d355e052d48556", + "tg/archive.ru": "5a12db3c345d75d53f626a3c45292035cc40c3d73f8ac6cfb7d355e052d48556", "tg/bot.es": "acd4741b6fc5d3bdab77e655bb41ef77f907cba85b4b47b569b37ea36b39b933", "tg/bot.ru": "acd4741b6fc5d3bdab77e655bb41ef77f907cba85b4b47b569b37ea36b39b933", - "tg/changelog.es": "d050b95a6cf87dd2e9e71529da8b0661e2ad3397a7b290f81ca47ffea0b3a40c", - "tg/changelog.ru": "d050b95a6cf87dd2e9e71529da8b0661e2ad3397a7b290f81ca47ffea0b3a40c", + "tg/changelog.es": "0d6b231400c6d37fb282edf6224f64be524b3fb6e95540c9ab1a3159a3487760", + "tg/changelog.ru": "0d6b231400c6d37fb282edf6224f64be524b3fb6e95540c9ab1a3159a3487760", "tg/cli-contract.es": "b64ac9c35106278e2af2d9a9f5e7a1a3f6c51108d81123f2e7d8a6f0f5b95b9a", "tg/cli-contract.ru": "b64ac9c35106278e2af2d9a9f5e7a1a3f6c51108d81123f2e7d8a6f0f5b95b9a", - "tg/commands.es": "2969ed8a35c24c699f743ffc180d0e120b24380e4cf3ddc04abaa901db497267", - "tg/commands.ru": "2969ed8a35c24c699f743ffc180d0e120b24380e4cf3ddc04abaa901db497267", - "tg/configuration-reference.es": "ddfccaa7ac879dcccf5cb34d2ea01920453d50be5791975a6884ae4ef4bea4a6", - "tg/configuration-reference.ru": "ddfccaa7ac879dcccf5cb34d2ea01920453d50be5791975a6884ae4ef4bea4a6", + "tg/commands.es": "f28a833b1bf430ba09e58ae1b324644f1422dd5f63c3e5a12fb05b27c29ca697", + "tg/commands.ru": "f28a833b1bf430ba09e58ae1b324644f1422dd5f63c3e5a12fb05b27c29ca697", + "tg/configuration-reference.es": "3b8a509f69c67cf3d0dcf3f02d7dff86bc5ace542882604c94e42d961ae970e8", + "tg/configuration-reference.ru": "3b8a509f69c67cf3d0dcf3f02d7dff86bc5ace542882604c94e42d961ae970e8", "tg/configuration.es": "816885273b9d9a566ff673d5d9c3508aad5bacb7b5799065e542d1f539147a51", "tg/configuration.ru": "816885273b9d9a566ff673d5d9c3508aad5bacb7b5799065e542d1f539147a51", "tg/diagnostics.es": "fe9b0cbabe7b8d597bb16f970329e06f403ce1a2e00ce2e6276a082cb04f1ff1", diff --git a/translations/tg/archive.es.md b/translations/tg/archive.es.md index 7c0c56a..da15709 100644 --- a/translations/tg/archive.es.md +++ b/translations/tg/archive.es.md @@ -365,7 +365,7 @@ tg personal store clear --left --allow-dangerous # delete the chats you have le `tg personal store migrate` crea índices sin terminar; `tg personal store reindex` los reconstruye. `store info` y `store check` muestran si el índice de palabras y el índice de raíz de palabras están listos. La búsqueda utiliza raíces (la parte de una palabra que permanece igual en sus formas) para encontrar formas de palabras; `exact:` y `--exact` seleccionan formas exactas. -`tg config set searchStemmers.cyrillic russian` y `searchStemmers.latin english,spanish` configuran las raíces del archivo local compartido: el latín toma `english`, `spanish` o ambos (el valor predeterminado, por lo que una palabra latina coincide con las raíces de ambos) y `none` desactiva una; ejecute `store reindex` según su propia elección. Cuando una actualización de tg cambia el valor predeterminado, las raíces se reconstruyen por sí mismas: hasta que estén listas, una búsqueda coincide con las formas exactas de las palabras y lo dice, `tg personal serve` las finaliza en segundo plano y `store migrate` de inmediato. La configuración afecta tanto a los servicios de mensajería como a todos los perfiles; un proceso con perfil bloqueado no puede cambiarlo. +`tg config set search_stemmers.cyrillic russian` y `search_stemmers.latin english,spanish` configuran las raíces del archivo local compartido: el latín toma `english`, `spanish` o ambos (el valor predeterminado, por lo que una palabra latina coincide con las raíces de ambos) y `none` desactiva una; ejecute `store reindex` según su propia elección. Cuando una actualización de tg cambia el valor predeterminado, las raíces se reconstruyen por sí mismas: hasta que estén listas, una búsqueda coincide con las formas exactas de las palabras y lo dice, `tg personal serve` las finaliza en segundo plano y `store migrate` de inmediato. La configuración afecta tanto a los servicios de mensajería como a todos los perfiles; un proceso con perfil bloqueado no puede cambiarlo. `tg personal store repair --dry-run --json` obtiene una vista previa de una reparación estructural y la revierte. `store repair` lo aplica sin eliminar datos: las tablas que no coinciden se mantienen como copias y las filas o columnas que quedan allí se nombran en la respuesta. Inspeccione las copias antes de eliminar una con `store copies delete `; `store repair` los nombra en su respuesta. Detenga los procesos que utilizan el archivo local antes de una reparación. diff --git a/translations/tg/archive.ru.md b/translations/tg/archive.ru.md index b53f6d6..561c953 100644 --- a/translations/tg/archive.ru.md +++ b/translations/tg/archive.ru.md @@ -365,7 +365,7 @@ tg personal store clear --left --allow-dangerous # delete the chats you have le `tg personal store migrate` строит незавершенные индексы; `tg personal store reindex` восстанавливает их. `store info` и `store check` показывают, готовы ли индекс слова и индекс основы слова. Поиск использует основы (часть слова, форма которой остается неизменной) для поиска форм слов; `exact:` и `--exact` выбирают точные формы. -`tg config set searchStemmers.cyrillic russian` и `searchStemmers.latin english,spanish` устанавливают стеммеры общего хранилища: латиница принимает `english`, `spanish` или оба (по умолчанию, поэтому латинское слово соответствует основам обоих), а `none` отключает один; запустите `store reindex` по вашему выбору. Когда обновление tg меняет значение по умолчанию, основы перестраиваются сами: пока они не будут готовы, поиск соответствует точным словоформам и говорит об этом, `tg personal serve` завершает их в фоновом режиме, а `store migrate` сразу. Настройка затрагивает как мессенджеры, так и каждый профиль; процесс, заблокированный профилем, не может его изменить. +`tg config set search_stemmers.cyrillic russian` и `search_stemmers.latin english,spanish` устанавливают стеммеры общего хранилища: латиница принимает `english`, `spanish` или оба (по умолчанию, поэтому латинское слово соответствует основам обоих), а `none` отключает один; запустите `store reindex` по вашему выбору. Когда обновление tg меняет значение по умолчанию, основы перестраиваются сами: пока они не будут готовы, поиск соответствует точным словоформам и говорит об этом, `tg personal serve` завершает их в фоновом режиме, а `store migrate` сразу. Настройка затрагивает как мессенджеры, так и каждый профиль; процесс, заблокированный профилем, не может его изменить. `tg personal store repair --dry-run --json` просматривает структурный ремонт и откатывает его. `store repair` применяет его без удаления данных: несовпадающие таблицы сохраняются как копии, а оставшиеся там строки или столбцы именуются в ответе. Проверьте копии перед удалением одной с помощью `store copies delete `; `store repair` называет их в своем ответе. Перед восстановлением остановите процессы, использующие хранилище. diff --git a/translations/tg/changelog.es.md b/translations/tg/changelog.es.md index 179ef3d..254b485 100644 --- a/translations/tg/changelog.es.md +++ b/translations/tg/changelog.es.md @@ -4,6 +4,41 @@ title: "Historial de cambios" Cambios destacados de `@wirecat/tg-cli`, con una sección por versión, de la más reciente a la más antigua. Se utiliza [versionado semántico](https://semver.org); antes de `1.0.0`, la interfaz de comandos todavía puede cambiar. +## 0.72.0 — 18.10.2026 + +### Novedades + +- **`tg tasks agenda` muestra lo que otros te deben** (cli-core 0.328.0): las tareas abiertas que hace otra persona, de + la más antigua a la más reciente, con sus responsables, en una sección «assigned» y en `assigned` en JSON. + +### Cambios — pueden romper scripts + +- **Una ruta de comando dada como un solo argumento falla** (cli-core 0.328.0): `tg 'chats list' --help` imprimía la + ayuda general y salía con 0; ahora falla e indica la línea de comandos que hay que ejecutar. +- **Un comando interactivo sin terminal espera 5 minutos por defecto, no 30 segundos** (cli-core 0.328.0), para que el + `tg session start --qr-file` de un agente no se corte antes de escanear el código. `--timeout` y `TG_TIMEOUT` siguen + decidiendo cuando se indican. +- **Con `TG_READ_ONLY`, una escritura que pregunta primero se detiene con salida 5 antes de preguntar, no con salida 7** + (cli-core 0.329.0): `messages delete`, `topics delete`, `account sessions end`, `chats delete` y `chats clear` + decían «pregunta antes de actuar», como si `--allow-dangerous` los dejara pasar. Ahora dicen «este proceso es de solo + lectura», como cualquier otra escritura. Sin el bloqueo preguntan como antes. + +### Correcciones + +- **Menos sugerencias falsas de duplicados por cadenas de respuestas** (cli-core 0.331.0): una respuesta que pide algo + nuevo ya no marca dos tareas como posiblemente la misma. +- **`tg chats list --json | head` termina sin ruido** (cli-core 0.328.0), también a través de un `serve` en marcha, en + lugar de imprimir una traza de pila cuando el lector se detiene. + +### Seguridad + +- **`tg session end` ya no cierra la sesión de un `tg serve` en marcha** (cli-core 0.328.0): con `serve` en marcha para + el perfil, `session end` se le pasaba a `serve` para que lo ejecutara. Cerraba la conexión que usaba `serve` y + borraba el archivo de sesión que `serve` aún tenía abierto. Ahora `session start`, `session end` y `setup` nunca se + ejecutan a través de `serve`, y `session end` se detiene con salida 2 y pide ejecutar antes + `tg server stop`. Con `TG_READ_ONLY` los tres siguen deteniéndose con salida 5, ahora con «no puede iniciar + ni cerrar sesión». + ## 0.71.0 — 17.10.2026 ### Cambios — pueden romper scripts diff --git a/translations/tg/changelog.ru.md b/translations/tg/changelog.ru.md index e1a8f9c..291a107 100644 --- a/translations/tg/changelog.ru.md +++ b/translations/tg/changelog.ru.md @@ -4,6 +4,41 @@ title: "История изменений" Основные изменения `@wirecat/tg-cli` по версиям, от новых к старым. Используется [семантическое версионирование](https://semver.org); до `1.0.0` интерфейс команд может меняться. +## 0.72.0 — 18.10.2026 + +### Новое + +- **`tg tasks agenda` показывает, что вам должны другие** (cli-core 0.328.0): открытые задачи, которые делает кто-то + другой, от старых к новым, с исполнителями, в разделе «assigned» и в поле `assigned` в JSON. + +### Изменено — может сломать скрипты + +- **Путь команды одним аргументом — ошибка** (cli-core 0.328.0): `tg 'chats list' --help` печатал общую справку и + завершался с кодом 0; теперь команда завершается ошибкой и показывает, какую строку запустить. +- **Интерактивная команда без терминала по умолчанию ждёт 5 минут, а не 30 секунд** (cli-core 0.328.0), чтобы + `tg session start --qr-file` у агента не обрывался, пока код не отсканирован. `--timeout` и `TG_TIMEOUT`, если они + заданы, по-прежнему решают сами. +- **Под `TG_READ_ONLY` запись, которая сначала спрашивает, останавливается с кодом 5 до вопроса, а не с кодом 7** + (cli-core 0.329.0): `messages delete`, `topics delete`, `account sessions end`, `chats delete` и `chats clear` + говорили «спрашивает, прежде чем действовать», как будто `--allow-dangerous` их пропустит. Теперь они говорят + «этот процесс только для чтения», как и любая другая запись. Без блокировки они спрашивают, как раньше. + +### Исправлено + +- **Меньше ложных подсказок о дубликатах из-за цепочек ответов** (cli-core 0.331.0): ответ, в котором просят о чём-то + новом, больше не помечает две задачи как, возможно, одну и ту же. +- **`tg chats list --json | head` завершается тихо** (cli-core 0.328.0), в том числе через запущенный `serve`, а не + печатает трассировку стека, когда читатель останавливается. + +### Безопасность + +- **`tg session end` больше не выходит из аккаунта у запущенного `tg serve`** (cli-core 0.328.0): когда для профиля + работал `serve`, `session end` передавался на выполнение `serve`. Он выходил из подключения, которым пользовался + `serve`, и удалял файл сессии, который `serve` ещё держал открытым. Теперь `session start`, `session end` и `setup` + никогда не выполняются через `serve`, а `session end` останавливается с кодом 2 и просит сначала выполнить + `tg server stop`. Под `TG_READ_ONLY` все три по-прежнему останавливаются с кодом 5, теперь с сообщением + «нельзя войти или выйти». + ## 0.71.0 — 17.10.2026 ### Изменено — может сломать скрипты diff --git a/translations/tg/cli-contract.es.md b/translations/tg/cli-contract.es.md index ca87aa8..369dc9a 100644 --- a/translations/tg/cli-contract.es.md +++ b/translations/tg/cli-contract.es.md @@ -108,6 +108,6 @@ Pídale al agente que le muestre los mensajes que contó y cuánto del historial ## Estándares que seguimos -`tg` sigue las partes que se aplican de [POSIX](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html), [GNU](https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html) y [Pautas de interfaz de línea de comando](https://clig.dev/), además de [Esquema JSON](https://json-schema.org/specification), [MCP](https://modelcontextprotocol.io/specification/2025-11-25/server/tools) y [Agent Skills](https://agentskills.io/specification). La [arquitectura](https://github.com/WireCatLabs/tg-cli/blob/v0.71.0/docs/dev/ARCHITECTURE.md) y el [estándar CLI compartido](https://github.com/WireCatLabs/cli-core/blob/main/docs/dev/STANDARD.md) describen cómo se aplican y las excepciones realizadas intencionalmente. No reclamamos una certificación completa de terceros. +`tg` sigue las partes que se aplican de [POSIX](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html), [GNU](https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html) y [Pautas de interfaz de línea de comando](https://clig.dev/), además de [Esquema JSON](https://json-schema.org/specification), [MCP](https://modelcontextprotocol.io/specification/2025-11-25/server/tools) y [Agent Skills](https://agentskills.io/specification). La [arquitectura](https://github.com/WireCatLabs/tg-cli/blob/v0.72.0/docs/dev/ARCHITECTURE.md) y el [estándar CLI compartido](https://github.com/WireCatLabs/cli-core/blob/main/docs/dev/STANDARD.md) describen cómo se aplican y las excepciones realizadas intencionalmente. No reclamamos una certificación completa de terceros. Para la configuración, consulte la [guía de configuración](./configuration.md); para cada clave y variable de entorno, la [referencia de configuración](./configuration-reference.md). diff --git a/translations/tg/cli-contract.ru.md b/translations/tg/cli-contract.ru.md index 7825b4b..9478e2f 100644 --- a/translations/tg/cli-contract.ru.md +++ b/translations/tg/cli-contract.ru.md @@ -112,6 +112,6 @@ tg commands schema messages list --json ## Стандарты, которым мы следуем -`tg` соответствует частям, применимым к [POSIX](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html), [GNU](https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html) и [Рекомендациям по интерфейсу командной строки](https://clig.dev/), а также [JSON Schema](https://json-schema.org/specification), [MCP](https://modelcontextprotocol.io/specification/2025-11-25/server/tools) и [Agent Навыки](https://agentskills.io/specification). [Архитектура](https://github.com/WireCatLabs/tg-cli/blob/v0.71.0/docs/dev/ARCHITECTURE.md) и [стандарт общего интерфейса командной строки](https://github.com/WireCatLabs/cli-core/blob/main/docs/dev/STANDARD.md) описывают, как они применяются, а также исключения, сделанные специально. Мы не претендуем на полную сертификацию третьей стороной. +`tg` соответствует частям, применимым к [POSIX](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap12.html), [GNU](https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html) и [Рекомендациям по интерфейсу командной строки](https://clig.dev/), а также [JSON Schema](https://json-schema.org/specification), [MCP](https://modelcontextprotocol.io/specification/2025-11-25/server/tools) и [Agent Навыки](https://agentskills.io/specification). [Архитектура](https://github.com/WireCatLabs/tg-cli/blob/v0.72.0/docs/dev/ARCHITECTURE.md) и [стандарт общего интерфейса командной строки](https://github.com/WireCatLabs/cli-core/blob/main/docs/dev/STANDARD.md) описывают, как они применяются, а также исключения, сделанные специально. Мы не претендуем на полную сертификацию третьей стороной. Для настройки см. [руководство по настройке](./configuration.md); для каждого ключа и переменной среды — [справочник настроек](./configuration-reference.md). diff --git a/translations/tg/commands.es.md b/translations/tg/commands.es.md index f0b1647..e10b292 100644 --- a/translations/tg/commands.es.md +++ b/translations/tg/commands.es.md @@ -3652,7 +3652,7 @@ tg tasks unmerge ### `tg tasks agenda` -lo que necesita una revisión hoy, desde el almacén local y sin texto de mensajes: tareas vencidas, con fecha límite o por revisar, chats donde debes una respuesta y chats donde esperas una +lo que necesita una revisión hoy, desde el almacén local y sin texto de mensajes: tareas vencidas, con fecha límite o por revisar, chats donde debes una respuesta, chats donde esperas una y tareas abiertas que hace otra persona ```sh tg tasks agenda [query] [options] diff --git a/translations/tg/commands.ru.md b/translations/tg/commands.ru.md index 437ec73..90d7837 100644 --- a/translations/tg/commands.ru.md +++ b/translations/tg/commands.ru.md @@ -3648,7 +3648,7 @@ tg tasks unmerge ### `tg tasks agenda` -что нужно посмотреть сегодня, по локальному хранилищу и без текста сообщений: задачи просроченные, со сроком или к проверке, чаты, где вы должны ответить, и чаты, где вы ждёте ответа +что нужно посмотреть сегодня, по локальному хранилищу и без текста сообщений: задачи просроченные, со сроком или к проверке, чаты, где вы должны ответить, чаты, где вы ждёте ответа, и открытые задачи, которые делает кто-то другой ```sh tg tasks agenda [query] [options] diff --git a/translations/tg/configuration-reference.es.md b/translations/tg/configuration-reference.es.md index 8706a86..d46dc26 100644 --- a/translations/tg/configuration-reference.es.md +++ b/translations/tg/configuration-reference.es.md @@ -107,7 +107,7 @@ Ningún ajuste elige un perfil: lo nombra la primera palabra (`tg work …`) o ` | `analysis_model` | ninguno; requerido para `--analyze` | modelo de análisis | `build --model` | | `analysis_base_url` | predeterminado del proveedor | punto final API de análisis | `build --base-url` | | `models` | ninguno | modelos externos por finalidad ([abajo](#models-by-purpose)) | Variables `TG_MODELS_*` | -| `searchStemmers.cyrillic`, `searchStemmers.latin` | `russian`, `english,spanish` | los idiomas de raíz de palabras para buscar en todal archivo local ([abajo](#search-languages)) | ninguno | +| `search_stemmers.cyrillic`, `search_stemmers.latin` | `russian`, `english,spanish` | los idiomas de raíz de palabras para buscar en todal archivo local ([abajo](#search-languages)) | ninguno | El archivo se escribe `0600` cuando se creó por primera vez y `0644` por `config set`. No guarda ningún secreto. @@ -193,7 +193,7 @@ tg config unset sends_per_hour # back to the default ### Idiomas de búsqueda -`searchStemmers.cyrillic` (`russian` o `none`) y `searchStemmers.latin` (`english`, `spanish`, ambos separados por comas (el valor predeterminado) o `none`) se mantienen en el almacén local compartido, no en el archivo de configuración: un valor para cada perfil y para ambas CLI. Por lo tanto, `--defaults`, `--personal` y `--bot` no se aceptan con ellos, y un proceso bajo `TG_PROFILE_LOCK` no puede cambiarlos. `config unset` restaura el valor incorporado. Después de un cambio, reconstruya el índice de búsqueda ([mantenimiento del índice](./archive.md#repair-and-index-maintenance)). +`search_stemmers.cyrillic` (`russian` o `none`) y `search_stemmers.latin` (`english`, `spanish`, ambos separados por comas (el valor predeterminado) o `none`) se mantienen en el almacén local compartido, no en el archivo de configuración: un valor para cada perfil y para ambas CLI. Por lo tanto, `--defaults`, `--personal` y `--bot` no se aceptan con ellos, y un proceso bajo `TG_PROFILE_LOCK` no puede cambiarlos. `config unset` restaura el valor incorporado. Después de un cambio, reconstruya el índice de búsqueda ([mantenimiento del índice](./archive.md#repair-and-index-maintenance)). ## Los errores de escritura no se ignoran @@ -282,8 +282,8 @@ Sin `MESSAGING_STORE`, lo que lea esa sesión seguirá guardándose en tu archiv | `embedding_dims` | entero 1–65,536 | perfil | | `analysis_provider` | `agent`, `openai`, `anthropic` | perfil | | `models` | objetos de propósito descritos a continuación | perfil | -| `searchStemmers.cyrillic` | `russian`, `none` | archivo compartido, a través de `config set` | -| `searchStemmers.latin` | `english`, `spanish`, ambos separados por comas, `none` | archivo compartido, a través de `config set` | +| `search_stemmers.cyrillic` | `russian`, `none` | archivo compartido, a través de `config set` | +| `search_stemmers.latin` | `english`, `spanish`, ambos separados por comas, `none` | archivo compartido, a través de `config set` | ### Modelos por finalidad diff --git a/translations/tg/configuration-reference.ru.md b/translations/tg/configuration-reference.ru.md index 7ca8c89..d276d8f 100644 --- a/translations/tg/configuration-reference.ru.md +++ b/translations/tg/configuration-reference.ru.md @@ -107,7 +107,7 @@ tg shop config show --bot | `analysis_model` | нет; требуется для `--analyze` | модель анализа | `build --model` | | `analysis_base_url` | провайдер по умолчанию | конечная точка API анализа | `build --base-url` | | `models` | нет | внешние модели по назначению ([ниже](#models-by-purpose)) | `TG_MODELS_*` переменные | -| `searchStemmers.cyrillic`, `searchStemmers.latin` | `russian`, `english,spanish` | языки-основы слов для поиска по всему архиву ([ниже](#search-languages)) | нет | +| `search_stemmers.cyrillic`, `search_stemmers.latin` | `russian`, `english,spanish` | языки-основы слов для поиска по всему архиву ([ниже](#search-languages)) | нет | При первом создании файл создаётся с правами `0600`, а `config set` пишет его с правами `0644`. Секретов в нём нет. @@ -193,7 +193,7 @@ tg config unset sends_per_hour # back to the default ### Языки поиска -`searchStemmers.cyrillic` (`russian` или `none`) и `searchStemmers.latin` (`english`, `spanish`, оба разделены запятыми — по умолчанию — или `none`) хранятся в общем локальном хранилище, а не в файле настроек: одно значение для каждого профиля и для обоих CLI. Поэтому `--defaults`, `--personal` и `--bot` с ними не принимаются, и процесс под `TG_PROFILE_LOCK` не может их изменить. `config unset` восстанавливает встроенное значение. После изменения перестройте индекс поиска ([обслуживание индекса](./archive.md#repair-and-index-maintenance)). +`search_stemmers.cyrillic` (`russian` или `none`) и `search_stemmers.latin` (`english`, `spanish`, оба разделены запятыми — по умолчанию — или `none`) хранятся в общем локальном хранилище, а не в файле настроек: одно значение для каждого профиля и для обоих CLI. Поэтому `--defaults`, `--personal` и `--bot` с ними не принимаются, и процесс под `TG_PROFILE_LOCK` не может их изменить. `config unset` восстанавливает встроенное значение. После изменения перестройте индекс поиска ([обслуживание индекса](./archive.md#repair-and-index-maintenance)). ## Опечатки вызывают ошибку @@ -283,8 +283,8 @@ tg personal setup | `embedding_dims` | целое число 1–65 536 | профиль | | `analysis_provider` | `agent`, `openai`, `anthropic` | профиль | | `models` | объекты назначения, описанные ниже | профиль | -| `searchStemmers.cyrillic` | `russian`, `none` | общий архив через `config set` | -| `searchStemmers.latin` | `english`, `spanish`, оба через запятую, `none` | общий архив через `config set` | +| `search_stemmers.cyrillic` | `russian`, `none` | общий архив через `config set` | +| `search_stemmers.latin` | `english`, `spanish`, оба через запятую, `none` | общий архив через `config set` | ### Модели по назначению