diff --git a/authored-docs.json b/authored-docs.json index 2b558a0a..f3043cec 100644 --- a/authored-docs.json +++ b/authored-docs.json @@ -2,7 +2,7 @@ { "name": "email", "package": "@wirecat/mail-cli", - "docsRef": "v0.28.0", + "docsRef": "v0.32.0", "pages": ["translations/pages/mail/email"] }, { diff --git a/docs/release-notes-review.json b/docs/release-notes-review.json index a7276997..5d404f73 100644 --- a/docs/release-notes-review.json +++ b/docs/release-notes-review.json @@ -42,10 +42,10 @@ "conclusion": "Reviewed gcal 0.22.0 and 0.23.0 from the changelog and the command diff since v0.21.0. 0.23.0 adds `account remove --keep-data|--delete-data`, which revokes the Google sign-in and forgets the profile, `models set` and `models add` from cli-core, and `contracts/wirecat.json` naming the hosts gcal talks to. Every request to Google now goes through cli-base's hostFetch, which refuses any other host. The store moves to version 59. 0.22.0 moves the store to version 57 and reads a store a newer memo already moved. `upgrade --offline` and `calendars busy --offline` answer `permission_error` `offline.refused` (exit 5). `events prepare` reads only accounts of the asked account's scope. Search reads a trailing `?` and an unknown `word:` as words, and ё matches е in names. It also corrects the 0.21.0 note about WireCat's Google app. RU/ES changelog and commands reviewed. The roadmap's Next is now that nothing new is planned yet, since everything it listed has shipped; the RU/ES roadmap already said so. Earlier: Reviewed released Google Calendar 0.21.0 (Core 0.600.0/Base 0.80.8). 0.21.0 adds schedule --notify-on and --deliver-to (schedule agent also --model and --max-cost-per-day), and session start --client-id with the google_client_id setting to choose your own Google app (order: --client-file or --client-id, GCAL_GOOGLE_CLIENT_ID, the profile's then the defaults' google_client_id, WireCat's app; the secret only from GCAL_GOOGLE_CLIENT_SECRET; config set refuses google_client_id to an agent). A write cut short by Ctrl-C ends as outcome_unknown (exit 14), not cancelled. Security: every api events method also checks the key of the matching events command, reads included, on --dry-run, api show (also_checks) and MCP, and a patch to cancelled also checks events.delete; checked on the 0.21.0 build with an isolated profile, no sign-in: api show calendar.events.delete lists also_checks events.delete, and api calendar-events-delete --dry-run is refused with access.denied once events.delete is deny. mcp serve --permission api.=deny now stops the events writes that call that method. A Google call no longer holds the finished command for 30 seconds. gcal's own installation, configuration, usage, troubleshooting and roadmap pages now say every package carries WireCat's Google app and that Google may refuse a sign-in through it, so the five 0.20.0 portal corrections for those pages are retired; the changelog correction for 0.20.0's two old reason names stays, since that section is unchanged. One new EN correction rewords \"unset the secret to use WireCat's app\" in troubleshooting, which docs:versions read as an editorial phrase. EN/RU/ES pages reviewed: changelog (RU/ES 0.21.0 section), commands (--client-id; copied from the released reference), configuration (the sign-in order list, the events keys the api methods also need), installation (WireCat's app in every package, --client-id, google_client_id), troubleshooting (the oauth_client null row, the missing-secret row, the unverified app row), usage (the sign-in order). Index, remote, scenarios and security unchanged. Roadmap: v0.21.0 dropped its only Next item (sign-in without your own client, shipped in 0.20.0) and listed no status, so the roadmap page is pinned to gcal-cli main 8167d16 (gcal-cli #133), which says nothing new is planned yet. The comparison page is checked against 0.21.0 on 7 November: no mark changes; the agent-permission note adds that the raw api events methods answer to the same events keys. Earlier: Reviewed released Google Calendar 0.20.0 (Core 0.566.0/Base 0.77.1). 0.20.0 renames error reasons to the names cli-core and drive share (sign-in.expired is oauth.expired, sign-in.scope-missing and api.scope-missing are oauth.scope-missing, profile.not-signed-in is oauth.missing, google.denied is access.denied, google.not-found is item.not-found, google.usage-limit is provider.usage-limit). calendars busy takes and answers starts_at and ends_at. A sync where one calendar fails saves and answers the others with meta.complete false and a sync.partial issue, exit 0. cli-core 0.566.0 adds the conflict failure (exit 15), and doctor connects nowhere unless doctor --online. gcal signs in with WireCat's Google app from cli-core's constants.json with no client file (order: --client-file, then GCAL_GOOGLE_CLIENT_ID and GCAL_GOOGLE_CLIENT_SECRET, then WireCat's app), a secret without an id fails with sign-in.secret-without-id, sign-in.no-client and sign-in.bundled-client-invalid are gone, and doctor's oauth_client is {client, source}. Also: config migrate and config repair, events create --text retries with --operation-id, session start opens no browser under --json, --no-input or CI, reads open the store read-only, Google paging stops after a repeated token or 1000 pages, events export --output writes a private file whole, organizer-only changes say event.organizer-only, local times at a terminal, and busy says when Google did not answer. EN/RU/ES pages reviewed: changelog (RU/ES translated), commands (calendars busy fields, doctor --online, config migrate and repair, exit 15), usage (partial sync, busy fields, quick add retry), remote (the example tunnel address), troubleshooting (oauth.scope-missing). gcal's own installation, configuration, usage, troubleshooting and roadmap pages at v0.20.0 still say releases do not carry WireCat's app, so portal corrections in EN/RU/ES now say every package carries it, that Google has not verified it yet (unverified app page, 100 users in total shared with drive), and that your own app is the way out. Troubleshooting drops the rows for errors 0.20.0 cannot give (unreadable bundled client, no client set up, oauth_client.client null), adds sign-in.secret-without-id. The owner confirmed a real sign-in through WireCat's app with the Calendar API on, so the pages drop the hedges that doubted it. The changelog correction names oauth.missing and provider.usage-limit where 0.20.0's Fixed section still names the old reasons. Shared installation and agents pages say gcal signs in through WireCat's app or your own. Index, scenarios and security unchanged. Roadmap changed through the correction: sign-in without your own client ships, Google's review of WireCat's app is what stays next. Earlier: Reviewed released Google Calendar 0.19.0 (Core 0.551.0/Base 0.75.1). 0.19.0 installs wcat-gcal beside gcal and answers wcat-gcal --wcat-describe, so wcat gcal runs the tool and wcat --help lists it; gcal keeps working. cli-base 0.75.1 offers word* and ranges in a stored list's help only when a field takes them; every gcal list is filtered by Google and already said only what it takes, so gcal's help does not change. RU/ES changelog reviewed; other pages unchanged. Roadmap unchanged. Earlier: Reviewed released Google Calendar 0.18.0 (Core 0.551.0/Base 0.75.0). 0.18.0 adds docs/remote.md, a guide for ChatGPT or Claude in the browser or on the phone: Tailscale Funnel or a named Cloudflare tunnel, mcp serve --http --public-url, the one-time login code, permissions over MCP (ask runs, so --permission api=readonly or api.calendar.acl=deny for that server), mcp server start in the background, and mcp revoke; the overview and usage link to it. Outlook and Exchange feeds that name Windows time zones are read in the matching IANA zone (cli-core 0.551.0); provider-filtered lists no longer offer OR in --help (cli-base 0.75.0); the mcp serve --http login page names your Google Calendar. EN/RU/ES remote (new, in the sidebar under Guides), index, usage and changelog reviewed; other guides unchanged. Roadmap changed: What works today now names all accounts in one list, overlaps, events prepare, quick add, .ics export and import, feeds, search all and schedule, and the Next item links installation for your own Google app; sign-in without your own Google client stays next, waiting for Google app review. Earlier: Reviewed released Google Calendar 0.17.0 (Core 0.549.0/Base 0.74.0), covering 0.15.0 and 0.16.0. 0.15.0: schedule command --every -- installs a systemd user timer, a launchd agent or a Task Scheduler task (schedule list, run, remove look after it), so the events remind timer is one command; installing it does not lift events.remind.hook, the command says so and gives the config set line, GCAL_READ_ONLY refuses schedule command and remove, and no MCP tool offers schedule; cron and hand-written timers stay under By hand. 0.16.0: calendars add [--title] follows an iCalendar feed (https://, http:// or webcal://) as a read-only calendar of the profile, read again by sync, with repeating events expanded in their own time zone; its events show in events list, search events, overlapping:true and events remind, a write refuses with calendar.read-only before anything is sent, calendars busy leaves feeds out, and the address is kept in the keyring (gcal-cli / feeds:) or credentials.json and never printed; calendars add and remove are not on MCP. A write to a calendar shared as reader now refuses with calendar.read-only, and the --client-file reader moved to cli-core with unchanged shapes and errors. 0.17.0: search all searches stored meetings, the other tools' messages and notes in one ranked list (kind and ref per hit, meta.accounts, --only, --source, --limit, --page, --exact, --timezone; transcripts only when --source names a meeting account; --only mail refuses and points to memo search mail), over MCP as a read with permissions.search.all; sync asks a feed with ETag/Last-Modified and keeps stored events when nothing changed (feeds unchanged: true), the first sync of a day and --rescan read in full; calendars add warns once on stderr for http://; calendars remove now deletes the feed calendar and its events (may break callers). RU/ES changelog, usage (Follow a calendar feed, Search everything at once, Run it on a timer with Keep feeds fresh and By hand), commands and security reviewed; scenarios, index, installation, configuration, troubleshooting and roadmap unchanged. A correction marks the usage guide's words after which a scheduled command is typed as gcal personal …, which the command checker read as an unknown command. The comparison adds a row for following a calendar published as an .ics address (gcal yes, the other tools not in their documentation), keeps one search over meetings, chats, mail and notes as partly because mail goes to memo search mail, adds schedule to the reminders note, a calendar feeds note, and names calendars add, remove and schedule among the commands kept at a terminal. Roadmap unchanged since 0.14.0: Next is still only sign-in through WireCat's shared Google app; What works today does not yet name feeds, search all or schedule, which is incomplete but not wrong. Earlier: Reviewed released Google Calendar 0.14.0 (Core 0.543.0/Base 0.73.0), covering 0.13.0. 0.13.0: events list, events prepare, doctor and session status carry meta.now, meta.now_local and meta.timezone (WC-TIME-7), and the skill tells the agent to plan from them; over MCP a list's query names its fields and says -event_type: or NOT event_type: leaves a kind out; events export without --output runs through gcal_read, so a read-only profile (GCAL_READ_ONLY) can export, while --output stays off MCP and the read-only lock refuses it. 0.14.0: events remind [--due-within 10m, 1m to 1d] [--dry-run] [--offline] [-- ...], for cron, a systemd timer, launchd or Task Scheduler, syncs, then tells once about each timed event that starts within the window (not cancelled, declined, focus, out-of-office or working-location; a moved meeting is reminded again); a failed sync still reminds from the store with meta.complete: false and exits with the sync's code. The program runs with no shell, once per event, the event as one JSON line on stdin with ref and untrusted, GCAL_EVENT and GCAL_PROFILE in its environment; exit 0 marks it reminded, any other leaves it for the next run (remind.hook-failed), 60 seconds stops it, and a second run at once answers remind.running. permissions.events.remind.hook defaults to deny, --yes does not lift it, GCAL_READ_ONLY refuses it, and no MCP tool offers events remind. RU/ES changelog, usage (Get reminded before a meeting, the time in answers, export through gcal_read), commands, security and roadmap reviewed; scenarios unchanged. The comparison adds a row for a reminder through your own program (gcal and gcalcli yes) and notes on the time in answers, reminders and their safety rules, and read-only export; three commands now stay off MCP. Roadmap changed: What works today names events remind; Next is still only sign-in through WireCat's shared Google app. Earlier: Reviewed released Google Calendar 0.12.0 (Core 0.539.0/Base 0.71.0). events prepare [event:] gives the stored evidence for one meeting, the next one when none is named (timed, not cancelled or declined, not focus, out-of-office or working-location, with someone else invited): the event with attendees' answers and Drive files, and per attendee linked identities, latest one-to-one messages and mail, group messages, past events and recorded meetings from every WireCat tool on the computer; it reads the store only and writes no summary, meta.complete: false names chat.not-read or meetings.index-pending, untrusted marks other people's text. The skill and gcal guide gain prepare-meeting and digest. events create --text hands one line to Google's quickAdd (keys events.create and api.calendar.events.quickAdd, no --operation-id). events export [--output file.ics] writes up to 1000 events in UTC, one per occurrence; events import adds up to 500 events under their UIDs through events.import, mails nobody and asks first (events.import ask). events list takes event_type: and -event_type: (the only field a minus can leave out) and id:; calendars are named by title everywhere, a shared name refused with calendar.ambiguous. RU/ES changelog, usage, commands and scenarios (new digest and prepare-meeting) reviewed; the comparison marks preparing for the next meeting as yes and adds rows for leaving out birthdays and working-location blocks and for .ics export and import. Roadmap unchanged since 0.7.0: sign-in through WireCat's shared Google app is still planned. Earlier: Reviewed released Google Calendar 0.11.0 (Core 0.527.0/Base 0.68.1). events list --source reads several accounts as one list (all, a provider, gcal:,... or group:): meta.accounts names them, a meeting two accounts hold is listed once, an account with no synced calendar or an unfinished sync makes the answer partial (meta.complete: false, calendar.unsynced or calendar.sync-incomplete), and GCAL_PROFILE_LOCK limits --source to the locked profile. events list overlapping:true keeps timed meetings that overlap another, each with overlaps; cancelled, declined, free, working-location and all-day events are left out and back-to-back meetings do not overlap; with --source it compares across accounts. session start can use a WireCat Google app built into the package, but 0.11.0 carries none, so every user still makes their own: the installation guide gains Make your own Google app (steps 1 to 8) and troubleshooting gains Sign-in problems. The usage guide's raw api section now matches 0.7.0 (easy-to-undo writes run without a question, deletes and sharing ask, calendars.clear, delete and transferOwnership refused until allowed). The MCP server is listed in the MCP Registry as dev.wirecat/gcal-cli from the next release. RU/ES installation, configuration, troubleshooting, usage, commands and changelog reviewed; the comparison marks all accounts in one list and overlapping meetings as yes. Roadmap unchanged since 0.7.0: sign-in through WireCat's shared Google app is still planned, and no release carries that app yet. Earlier: Reviewed released Google Calendar 0.10.0 (Core 0.512.0/Base 0.68.1). 0.10.0 only moves gcal to cli-core 0.512.0: no command, option, setting or MCP input changes for gcal. cli-core 0.512.0 renamed id to operation_id in its shared calendar MCP tools and gave events_list a page, but gcal does not serve those tools; its agents use gcal_write and gcal_read, which already take operation_id and events list --page since 0.9.0. RU/ES changelog reviewed; the other gcal pages are unchanged at v0.10.0. Roadmap unchanged since 0.7.0: sign-in through WireCat's shared Google app is still planned. Earlier: Reviewed released Google Calendar 0.9.0 (Core 0.510.0/Base 0.68.1), covering 0.8.0. 0.8.0 takes the keyring's file fallback from cli-base 0.68.0 with no workaround of gcal's own: a sign-in in the private file stays there until a session start reaches the keyring again. 0.9.0 renames events create --id and events update --following --id to --operation-id (may break callers), adds events list --page with a page.next step that keeps the query, makes search events --backend both answer (store hits first, those Google also found marked server, then Google-only hits, one page with no cursor), fixes the --cursor help, and the MCP agent log now names the calling agent instead of gcal-mcp. EN/RU/ES changelog, usage and commands reviewed. Roadmap unchanged since 0.7.0: sign-in through WireCat's shared Google app is still planned. Earlier: Reviewed released Google Calendar 0.7.0 (Core 0.502.0/Base 0.67.0), covering 0.5.0 and 0.6.0. 0.5.0 renames search to search events and status to store status, makes events list take only field query terms (today, week, from: and overlapping removed; changed: becomes changed_at>=), lists people with event:, and denies deleting or transferring a whole calendar by default. 0.6.0 adds starts_at bounds to events list, makes calendars busy take start>=/end<= with repeatable calendar: and person:, and falls back to a file when the keyring fails (--credential-storage file chooses it). 0.7.0 lets raw api writes that do not delete or share run without a question, and moves the upgrade check to 0.6.0. EN/RU/ES commands, usage, configuration, security, changelog and the comparison reviewed in cli-docs #465, #466 and #467. Roadmap matches the release: the current summary names search events and changed_at>=, the overlapping filter left it; sign-in through WireCat's shared Google app is still planned. Earlier: Reviewed released Google Calendar 0.4.0 (Core 0.491.0/Base 0.65.5). 0.4.0 moves the shared store to version 40 (the trigram index notes and documents search uses), so an older gcal no longer leaves a newer tool's store without its index entries; no command, setting or guide changes. EN/RU/ES changelog reviewed, and the comparison re-dated to 0.4.0 with every competitor mark linked to its source. Roadmap unchanged since 0.3.0: sign-in through WireCat's shared Google app is still planned. Earlier: Reviewed released Google Calendar 0.3.0 (Core 0.489.0/Base 0.65.5), covering 0.2.0. 0.2.0 only publishes the skill on ClawHub as wirecat-gcal. 0.3.0 adds events move --to-calendar, events update|delete --following, events list changed: and events list overlapping, and models list|download; create/update/move/respond are now allowed by default while delete asks, a series update that ends a series sooner needs events.delete.series, a failed sync prints nothing and fails with sync.partial carrying details.calendars, search and links review answer items, search --backend server refuses --newest, and a moved-folder run signs in to its own keyring entry. EN/RU/ES overview, usage, commands, settings, security, changelog, roadmap and the comparison reviewed. Roadmap matches the release: moving an event to another calendar and changing this-and-following occurrences shipped and left Next; sign-in through WireCat's shared Google app is still planned." }, "mail": { - "version": "v0.28.0", + "version": "v0.32.0", "roadmapSha256": "6024dc9e20e4e58378d80faa23c15baf828a086e07b454978285e2be11e36c52", "reviewedAt": "2026-11-14", - "conclusion": "Reviewed mail 0.25.0 to 0.28.0 from the changelog and the command diff since v0.24.0. `rules add --do meeting-notes:` keeps the matched mail whole and protected and saves it as a meeting on sync; `rules apply --yes` saves notes stored before the rule, and its dry run counts them. Telemost notes in Yandex's older layout take the text before the first heading as their summary, and the footer is not stored. `doctor reports show|create`, the `crm.:.activities` setting, the local-only model switch, declared hosts, and sync on a fresh install with an unreadable shared config. RU/ES changelog and commands reviewed. The Email guide does not describe any of these and stays correct; its pin moves to v0.28.0. The new Yandex Telemost page documents the meeting-notes rule. The roadmap is unchanged since v0.17.0: its Next item, a live test of Gmail over OAuth, is not claimed as done." + "conclusion": "Reviewed mail 0.29.0 to 0.32.0 from the changelog and the command diff since v0.28.0. 0.29.0: `rules apply` runs up to 15 minutes by default in a terminal and 45 seconds over MCP, reads headers newest first and saves batch by batch; a run that reaches its limit answers `state: partial` with a cursor, and `rules apply --cursor` goes on from there; `rules apply` takes `--yes` over MCP; `score:` and `--kind` judge a sender from the store; the time-limit error names the time limit. 0.30.0 builds on cli-core 0.659.0 and mends a shared config with a small slip, keeping a `.bak` copy. 0.31.0: `rules import --format gmail` takes its own `--yes` over MCP, `rules export` answers over MCP, a resumed `rules apply` that read nothing points to `MAIL_TIMEOUT` over MCP or adds `--timeout 30m` in a terminal, and `messages delete --rules` keeps mail from senders the owner wrote to. 0.32.0: a `readonly` level no longer stops `mail sync`; `deny` still does. RU/ES changelog and commands reviewed. The Email guide and the Yandex Telemost page were checked against the new behaviour: neither says `rules apply` needs a long `--timeout`, fails on a big mailbox or that `readonly` stops sync, so both stay unchanged; the pin moves to v0.32.0. The roadmap is unchanged since v0.17.0: its Next item, a live test of Gmail over OAuth, is not claimed as done. Earlier: Reviewed mail 0.25.0 to 0.28.0 from the changelog and the command diff since v0.24.0. `rules add --do meeting-notes:` keeps the matched mail whole and protected and saves it as a meeting on sync; `rules apply --yes` saves notes stored before the rule, and its dry run counts them. Telemost notes in Yandex's older layout take the text before the first heading as their summary, and the footer is not stored. `doctor reports show|create`, the `crm.:.activities` setting, the local-only model switch, declared hosts, and sync on a fresh install with an unreadable shared config. RU/ES changelog and commands reviewed. The Email guide does not describe any of these and stays correct; its pin moves to v0.28.0. The new Yandex Telemost page documents the meeting-notes rule. The roadmap is unchanged since v0.17.0: its Next item, a live test of Gmail over OAuth, is not claimed as done." }, "b24": { "version": "v0.15.0", diff --git a/tools.json b/tools.json index 6761e8cf..a489657b 100644 --- a/tools.json +++ b/tools.json @@ -71,7 +71,7 @@ "repo": "WireCatLabs/mail-cli", "package": "@wirecat/mail-cli", "lang": "en", - "docsRef": "v0.28.0", + "docsRef": "v0.32.0", "summary": { "en": "Sync your mailbox over IMAP into the shared WireCat store, search it offline, and organise it on the server (flags, moves, Trash with undo, folders), keep drafts, and send mail over SMTP.", "ru": "Синхронизируйте почтовый ящик по IMAP в общее хранилище WireCat, ищите по нему без интернета и наводите порядок на сервере: флаги, перемещение, корзина с отменой, папки, храните черновики и отправляйте письма по SMTP.", diff --git a/translations/mail/changelog.es.md b/translations/mail/changelog.es.md index 5ee070fa..f6a6ab70 100644 --- a/translations/mail/changelog.es.md +++ b/translations/mail/changelog.es.md @@ -4,6 +4,70 @@ title: "Historial de cambios" Cambios destacados de `@wirecat/mail-cli`. Una sección por versión, de la más reciente a la más antigua. +## 0.32.0 — 14.11.2026 + +### Cambiado — puede romper a quien llama + +- **Un nivel `readonly` ya no detiene `mail sync`** (cli-core 0.662.0, antes 0.661.0). Un comando que solo trae + correo al almacén local funciona en `readonly`; `deny` lo sigue rechazando. Los comandos que escriben archivos del + propietario o llaman a otro servicio siguen bloqueados por `readonly`. Si un perfil usaba `readonly` para detener la + sincronización, pon esa clave en `deny`. + +## 0.31.0 — 14.11.2026 + +### Corregido + +- **`rules import --format gmail` acepta `--yes` por MCP.** Un agente solo podía previsualizar las reglas que + sugieren los filtros de Gmail: la herramienta ofrecía solo las opciones propias del comando, y `--yes` era del + programa. +- **`rules export` responde por MCP.** La llamada fallaba con «el comando imprimió su respuesta en lugar de + entregarla». Ahora el agente recibe el archivo de reglas como respuesta; en una terminal y en una tubería sigue + imprimiendo el archivo, así que `rules export > rules.json` se vuelve a importar. +- **`rules apply` ya no ofrece repetir con el mismo límite de tiempo una ejecución que no leyó nada.** Por MCP el paso + decía que se pasara un `--timeout` más largo, algo que un agente no puede hacer, y estaba marcado como seguro de + ejecutar sin preguntar, así que una ejecución reanudada podía repetirse sin avanzar. Por MCP ahora pide al + propietario que dé al servidor un `MAIL_TIMEOUT` más largo o que lo ejecute en una terminal; en una terminal el paso + añade `--timeout 30m` y espera al propietario. +- **`messages delete --rules` conserva el correo de un remitente al que el propietario escribió.** Juzgaba a los + remitentes por el correo guardado, donde el correo propio del propietario de una carpeta Enviados por IMAP parecía + recibido. Así, un sobre de alguien a quien el propietario respondió podía proponerse para la Papelera, y una regla + predefinida aún podía atrapar a ese remitente. Ahora cli-core marca como enviado el correo guardado del propietario, + y los motivos «respondido» y «enviado» de la limpieza valen también para los buzones IMAP. + +## 0.30.0 — 14.11.2026 + +### Cambiado — puede romper a quien llama + +- **Construido sobre cli-core 0.659.0** (antes 0.657.0). Consulta el + [historial de cambios de cli-core](https://github.com/WireCatLabs/cli-core/blob/main/CHANGELOG.md). + +### Corregido + +- **Una configuración compartida con un pequeño desliz se repara al leerla.** En `~/.config/WireCat/config.json`, una + marca de orden de bytes, un comentario, una coma final o una coma que falta entre dos líneas se corrigen en el sitio, + y el archivo anterior se guarda al lado como `config.json.bak-