Release Notes
Patch Changes
-
f281797: docs(auth): add manual Google Cloud OAuth client setup and browser-assisted login guidance
Adds step-by-step guidance for creating a Desktop OAuth client in Google Cloud Console,
where to placeclient_secret.json, and how humans/agents can complete browser consent
(including unverified app and scope-selection prompts). -
ee2e216: Narrow default OAuth scopes to avoid
Error 403: restricted_clienton unverified apps and add a--fullflag for broader access (fixes #25). Replace the cryptic non-interactive setup error with actionable step-by-step OAuth console instructions (fixes #24). -
de2787e: feat(error): detect disabled APIs and guide users to enable them
When the Google API returns a 403
accessNotConfigurederror (i.e., the
required API has not been enabled for the GCP project),gwsnow:- Extracts the GCP Console enable URL from the error message body.
- Prints the original error JSON to stdout (machine-readable, unchanged shape
except for an optional newenable_urlfield added to the error object). - Prints a human-readable hint with the direct enable URL to stderr, along
with instructions to retry after enabling.
This prevents a dead-end experience where users see a raw 403 JSON blob
with no guidance. The JSON output is backward-compatible; only an optional
enable_urlfield is added when the URL is parseable from the message.Fixes #31
-
9935dde: ci: auto-generate and commit skills on PR branch pushes
-
4b868c7: docs: add community guidance to gws-shared skill and gws --help output
Encourages agents and users to star the repository and directs bug reports
and feature requests to GitHub Issues, with guidance to check for existing
issues before opening new ones. -
0603bce: fix: atomic credential file writes to prevent corruption on crash or Ctrl-C
-
666f9a8: fix(auth): support --help / -h flag on auth subcommand
-
bcd2401: fix: flatten nested objects in table output and fix multi-byte char truncation panic
-
ee35e4a: fix: warn to stderr when unknown --format value is provided
-
e094b02: fix: YAML block scalar for strings with
#/:, and repeated CSV/table headers with--page-allBug 1 — YAML output:
drive#filerendered as block scalarStrings containing
#or:(e.g.drive#file,https://…) were
incorrectly emitted as YAML block scalars (|), producing output like:kind: | drive#file
Block scalars add an implicit trailing newline which changes the string
value and produces invalid-looking output. The fix restricts block
scalar to strings that genuinely contain newlines; all other strings
are double-quoted, which is safe for any character sequence.Bug 2 —
--page-allwith--format csv/--format tablerepeats headersWhen paginating with
--page-all, each page printed its own header row,
making the combined output unusable for downstream processing:id,kind,name ← page 1 header 1,drive#file,foo.txt id,kind,name ← page 2 header (unexpected!) 2,drive#file,bar.txtColumn headers (and the table separator line) are now emitted only for
the first page; continuation pages contain data rows only. -
173d155: fix: add YAML document separators (---) when paginating with --page-all --format yaml
-
214fc18: ci: skip smoketest on fork pull requests
Install gws 0.2.2
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/googleworkspace/cli/releases/download/v0.2.2/gws-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/googleworkspace/cli/releases/download/v0.2.2/gws-installer.ps1 | iex"Install prebuilt binaries into your npm project
npm install @googleworkspace/cli@0.2.2Download gws 0.2.2
| File | Platform | Checksum |
|---|---|---|
| gws-aarch64-apple-darwin.tar.gz | Apple Silicon macOS | checksum |
| gws-x86_64-apple-darwin.tar.gz | Intel macOS | checksum |
| gws-x86_64-pc-windows-msvc.tar.gz | x64 Windows | checksum |
| gws-x86_64-unknown-linux-gnu.tar.gz | x64 Linux | checksum |
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo googleworkspace/cliYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>