Skip to content

Releases

0.69.0

Choose a tag to compare

@github-actions github-actions released this 14 Nov 07:35
2cec1ab

Changed — may break callers

  • A readonly level no longer stops drive sync (cli-core 0.662.0, was 0.656.0). A command that only fetches
    from Google Drive into the local store runs at readonly: the profile's own key, a group key or setup's "read
    only" answer. deny still refuses it. Commands that write the owner's files or change Google data stay blocked by
    readonly. A profile that used readonly to stop syncing sets the key to deny. See the
    cli-core changelog.

Fixed

  • A shared config with a small slip is mended when it is read. ~/.config/WireCat/config.json with a
    byte-order mark, a comment, a trailing comma or a missing comma between two lines is fixed in place, the old file
    kept beside it as config.json.bak-<time>. Other damage names its line, column and the likely fix.

0.68.0

Choose a tag to compare

@github-actions github-actions released this 13 Nov 17:44
bf99887

Changed — may break callers

Fixed

  • Sync runs on a fresh install. A shared WireCat config (~/.config/WireCat/config.json) that could not be
    read (a byte-order mark, broken JSON, a folder in its place, an older setup shape) made every WireCat tool
    read-only and refused sync. Now only the owner's own "read only" answer limits a tool, and even then a sync runs:
    it only reads Google into the local store. drive's own policy check lets it through too (cli-core 0.656.0).

0.67.0

Choose a tag to compare

@github-actions github-actions released this 13 Nov 14:42
82e35b7

Added

  • Google Meet transcripts and Gemini notes, wherever they sit. drive <profile> transcripts list lists the
    Google Docs named like a Meet transcript or Gemini notes in your Drive and among the files shared with you (most
    live in the organizer's Drive), and imports nothing. The profile setting transcripts decides what sync does:
    include imports them like a chosen folder and keeps them up to date, exclude leaves them out even inside a
    chosen folder, and skip or unset leaves them alone. transcript_words replaces the words that find them.

Changed — may break callers

  • Built on cli-core 0.652.0 (was 0.650.0) and cli-base 0.99.0. No store change. A stale meeting project
    fingerprint is now conflict (reason meeting-project.stale), not configuration_error. A mistyped profile in
    DRIVE_PROFILE lists the profiles here, and session start keeps the provider's refusal for a new profile.
    doctor reports create gives a pre-filled issue link. The first screen lists pbx, the Asterisk tool. Sync takes a
    saved query beside the chosen folders, and a Meet transcript that Drive also imported is one search hit. What
    changed is in cli-core's changelog.

Security

  • contracts/wirecat.json lists the hosts the shared packages reach: registry.npmjs.org (the update check),
    Hugging Face (huggingface.co, *.huggingface.co, *.hf.co) and GitHub (github.com,
    *.githubusercontent.com) for the local models. WireCat Desktop shows them before install.

0.66.0

Choose a tag to compare

@github-actions github-actions released this 13 Nov 03:54
17e86fc

Changed — may break callers

  • Built on cli-core 0.650.0 (was 0.634.0). The store moves to version 66 on first open (a person's kind and
    name order are worked out again; additive). Model calls follow memo's "local only" switch (models local-only set on), send to a plain http model address only on this computer, and reach only their own host. A profile with no
    saved sign-in fails with session.missing (was oauth.missing), and a profile name that is not on this computer
    with not_found (exit 6, profile.unknown; was validation_error). doctor reports writes a problem report to
    send; store reset is no longer offered to an agent over MCP. What changed is in
    cli-core's changelog.
  • meta.run_id names the run that drive runs show finds (20261112T121302Z-documents-list-7dfb77), as in
    every other WireCat CLI. It was a random UUID that matched no saved run.
  • drive complete is the shared WireCat completion command. The same shells (zsh, bash, fish, PowerShell) and
    the same Tab answers; its help text is the shared one, and it now reads the configured profile names.

Fixed

  • doctor --help shows its Returns and Example again, and doctor reports says what it returns.
  • The docs say where tokens go when the keyring fails. drive saves them in credentials.json (mode 600) in the
    configuration folder and warns once; the configuration and security pages said there was no such fallback.

Security

  • drive reaches only the Google hosts it declares. Every request of the Google SDK, the sign-in and the token
    refresh goes through cli-base's hostFetch, which refuses any other host before anything is sent and checks each
    redirect. The package now ships contracts/wirecat.json, so WireCat Desktop shows these hosts before install.

0.65.0

Choose a tag to compare

@github-actions github-actions released this 10 Nov 23:34
e4851d5

Added

  • drive documents add <url> --profiles <a,b|all> keeps one Drive document's text in the shared store as a
    source added by hand, for memo's "Add to memory". It tries the named profiles in order, at most five (the
    max_add_profiles setting changes that), and says which one opened the document and what refused the others;
    drive <profile> documents add <url> reads with that profile only. --title and --subject name it and what it
    is about. A file a sync already imported is answered as duplicate_of. Not available over MCP.
    • Known limit: adding the same file again after it changed keeps a second copy; the first is not replaced yet.
  • A pull request adds its changelog entries as a fragment, changes/<branch>.md. Open pull requests no longer
    conflict under ## Unreleased. pnpm docs:check checks each fragment, and bin/release collects them into the
    version's section. An entry under ## Unreleased still works during the move.

Changed — may break callers

  • Built on cli-core 0.634.0 (was 0.614.0). The store moves to version 64 on first open (people ties, stored
    person kinds, faster deal-link triggers; additive). With it, a document owner's link is filed as Drive's report.
    What changed in between is in cli-core's changelog.
  • schedule pause <name> and schedule resume <name> take a schedule off its timer and keep it; schedule run
    still runs it. --at repeats: --at 08:30 --at 18:00 runs twice a day.

Fixed

  • A document's owner and last editor no longer land in your memory or its review. sync links a document to the
    owner Drive names as Drive's report (reported, the way a CRM's links are), not as a proposal and not as your own
    confirmed memory, with the reason in words ("Google Drive lists this person as the document's owner, version 68,
    changed 2026-11-02") instead of the raw Drive record. The last editor gets no link and stays in the document's
    metadata. Each import replaces every owner and last-editor link the document had, proposed or confirmed, so the next
    sync (or drive <profile> catalog import --offline) clears the ones already stored. relationships list confirmed:true no longer lists a document's owner.
  • A spent Google quota (dailyLimitExceeded, quotaExceeded) is a rate limit, not a permission refusal.
    sync and every other command now answer it as rate_limited, which says to retry, instead of
    permission_error.

0.64.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 20:29
c1e439c

Added

  • drive <profile> account remove --keep-data|--delete-data removes a profile from this computer: it revokes the
    Google sign-in at Google, deletes the saved sign-in, forgets the profile in the settings and, with --delete-data,
    deletes its document snapshots and exports. --keep-data leaves them searchable. Your mirror folders are never
    touched, and other profiles stay as they are. session end still only forgets the local sign-in.

Fixed

  • Updated cli-base to 0.82.0, which names browse as a verb, so folders browse needs no naming exception.

0.63.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 08:43
1df4aac

Changed — may break callers

  • drive now writes the shared store at version 57, and an older WireCat CLI refuses it until it is upgraded.
    A memo, mail or other WireCat CLI on the same store reads it again once it is updated too: run <cli> upgrade
    for each. The other way round matters more: a memo already on the new store version stopped this drive from
    opening it, and this release reads it again.
  • memories add --supersedes retires the old memory only once the owner confirms the correction. drive writes
    every memory proposed, so the old memory stays in effect until then.

Fixed

  • Updated cli-core to 0.608.0.

0.62.0

Choose a tag to compare

@github-actions github-actions released this 08 Nov 01:23
7c5e7b4

Added

  • folders browse [--parent <id>] lists your Google Drive folders one level at a time, so you can pick one for
    folders add without copying its URL. With no --parent it lists My Drive, Shared with me and every shared drive;
    with one it lists the folders directly inside. Each folder says where it lives, how many folders it holds and
    whether sync already imports it. It only reads Drive, with the read-only sign-in you already have.

Changed — may break callers

  • A profile with no saved sign-in now fails with oauth.missing instead of oauth.expired, so a caller can tell
    "sign in" from "sign in again". Both still say to run session start.

Fixed

  • Updated cli-core to 0.604.0.

0.61.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 23:03
9eea476

Added

  • session start --client-id <id> and the google_client_id setting choose your own Google app (WC-SECR-25):
    --client-file or --client-id, then DRIVE_GOOGLE_CLIENT_ID, then the profile's or the defaults'
    google_client_id, then WireCat's app. The secret comes from DRIVE_GOOGLE_CLIENT_SECRET, never the settings file,
    and session start warns before the browser opens when your app has none. doctor reports "source": "config"
    for the defaults' setting. An agent over MCP cannot change google_client_id.

Fixed

  • files download and files export stream to disk, so large files download. Files over 50 MB failed with
    provider_unavailable because the whole file was read into memory. The bytes now go to a temporary file next to
    --output, which replaces the target only when the download is complete. There is no size limit; a download stops
    only after a minute with no data.
  • The Google sign-in notes no longer describe WireCat's review status. They say that making a shared Google app
    public for Drive is complex, so Google may refuse the sign-in, and point to your own Google app. No behaviour changes.
  • Signing a profile in again keeps its settings: mirrors, max_text_chars, picture_search and the rest stayed
    only as the principal, folders and storage before.

Changed — may break callers

  • doctor's oauth_client says where the Google app comes from: { "client": "wirecat", "source": "constants" },
    or "own" with "flag" (--client-file) or "env" (DRIVE_GOOGLE_CLIENT_ID). WireCat's app now comes from
    cli-core's constants.json instead of drive's source; the order is unchanged.
  • DRIVE_GOOGLE_CLIENT_SECRET without DRIVE_GOOGLE_CLIENT_ID fails with reason sign-in.secret-without-id.
  • drive runs on cli-base 0.77.1 and cli-core 0.566.0. A failure can now be conflict (exit 15); the MCP tools'
    error codes list it.

0.60.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 00:57
30f6c02

Changed — may break callers

  • Error reasons use the names cli-core and gcal share. sign-in.expired is now oauth.expired,
    sign-in.scope-missing is oauth.scope-missing, sign-in.declined is oauth.declined, sign-in.not-saved is
    oauth.not-saved, google-api.disabled is api.disabled, oauth-client.rejected is sign-in.client-rejected,
    file.not-file is file.not-a-file and profile.lock-refused is profile.locked. A sign-in that fails keeps the
    shared sign-in's own reason (oauth.failed, oauth.unavailable, …) and its code, in place of one sign-in.failed;
    the message still names no credential detail.
  • cli-core 0.565.0. The store stays at schema 48.

Added

  • drive config migrate writes each setting the file lacks at its default, and every write drive makes to the
    file adds them too.
    You then find and edit max_text_chars, limit, record and the rest in config.json
    without the docs. Your values, their order and keys drive does not know stay. config unset does not put back what
    it removed; a plain read never rewrites the file (cli-core 0.563.0).
  • drive config show lists each setting under settings with its value, its default, whether the file sets it
    and what it does.

Fixed

  • session start opens no browser under --json, --no-input or CI. It prints the address to open instead.
  • A config file that is not valid JSON no longer suggests drive config repair, which drive does not have
    (cli-core#2461).