feat: subcommand-level allowlist for --enable-commands#1
Open
EricYangTL wants to merge 308 commits intomainfrom
Open
feat: subcommand-level allowlist for --enable-commands#1EricYangTL wants to merge 308 commits intomainfrom
EricYangTL wants to merge 308 commits intomainfrom
Conversation
* feat: add `sheets notes` command to read cell notes The existing `sheets get` uses the Values API which doesn't expose cell notes. This adds `sheets notes <spreadsheetId> <range>` which uses the full Spreadsheets.Get API with a narrow field mask to fetch only notes and formatted values, keeping the response payload minimal. Supports both text (tabwriter table) and JSON output modes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: harden sheets notes output (steipete#208) (thanks @andybergon) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
…steipete#263) * feat: add `docs comments` subcommand for managing Google Doc comments Add a full `gog docs comments` command tree that provides a doc-centric interface for managing comments on Google Docs via the Drive API v3 comments endpoint. Subcommands: list - List comments (filters resolved by default, --include-resolved to show all) get - Get a single comment with full details including replies add - Add a comment, optionally anchored to quoted text reply - Reply to a comment resolve - Resolve a comment (mark as done), with optional message delete - Delete a comment Key differences from `drive comments`: - `list` filters resolved comments by default (--include-resolved to include) - `list` always shows quoted text column (no separate flag needed) - `resolve` subcommand (drive comments has no equivalent) - Accepts Google Doc URLs in addition to bare IDs (via normalizeGoogleID) - Doc-centric naming and help text Follows existing patterns: uses shared helpers (collectAllPages, tableWriter, formatDateTime, truncateString, normalizeGoogleID, failEmptyExit, dryRunExit, confirmDestructive), same auth/token flow, consistent output formatting. * fix: improve docs comments list and anchoring (steipete#263) (thanks @alextnetto) --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
…letion (steipete#262) `drive delete` was calling `Files.Delete()` which permanently destroys files. This contradicts the help text ("moves to trash") and user expectations. The fix changes the default behavior to use `Files.Update()` with `Trashed: true`, which moves files to trash (recoverable for 30 days). A new `--permanent` flag is added for users who explicitly want irreversible deletion. Fixes steipete#261 Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…rs (steipete#266) * fix(drive,gmail): pass-through filter queries and encode non-ASCII headers Drive search now detects raw API filter syntax (field comparisons, contains, membership, has) and passes it through instead of wrapping in fullText contains. Plain-text searches always append trashed=false to prevent false positives. Gmail MIME now RFC 2047-encodes display names with non-ASCII characters in From/To/Cc/Bcc/Reply-To headers using net/mail. Fixes steipete#254, fixes steipete#255 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(drive,gmail): tighten trashed predicate detection * chore(lint): silence goconst for auth services * fix(auth): avoid goconst on services=all --------- Co-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
steipete#265) * fix: only patch Attendees in calendar respond to avoid reminders validation error When responding to a calendar event, the previous code was patching the entire event object including Reminders. This caused a Google API error 'Missing override reminder minutes' when the event had custom reminders. The fix creates a minimal patch object containing only the Attendees field, avoiding the reminders validation issue. Fixes events with custom reminders failing to accept RSVP responses. * fix(calendar): add RSVP reminders regression test (steipete#265) (thanks @sebasrodriguez) --------- Co-authored-by: J.A.R.V.I.S. <sebasrodriguez@users.noreply.github.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
…ments (steipete#269) * fix(secrets): recognize empty GOG_KEYRING_PASSWORD in non-TTY environments Use os.LookupEnv to distinguish between "env var not set" and "env var set to empty string". Previously fileKeyringPasswordFuncFrom checked password != "", which caused an empty passphrase to fall through to the TTY prompt path, failing in headless/CI environments. Fixes steipete#268 Co-Authored-By: Claude <noreply@anthropic.com> * fix(secrets): respect empty GOG_KEYRING_PASSWORD (steipete#269) (thanks @zerone0x) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
Adds `gog sheets insert <id> <sheet> <rows|cols> <start>` to insert empty rows or columns at a specific position using the Sheets API InsertDimensionRequest via batchUpdate. Supports --count for multiple rows/columns and --after to insert after the specified position instead of before. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Pass context to outfmt.WriteJSON (signature changed upstream) and use normalizeGoogleID for spreadsheet ID consistency.
Co-authored-by: salmonumbrella <182032677+salmonumbrella@users.noreply.github.com>
Add support for the following contact fields in create/update commands: - --org: Organization/company name - --title: Job title - --url: URLs (can be repeated for multiple) - --note: Note/biography - --custom: Custom key=value fields (can be repeated) Also updates the read mask to include these fields in list/get output. Closes steipete#198
…election (steipete#131) * fix(gmail): decode ISO-2022-JP bodies * fix(gmail): include cc/bcc in get output * feat(calendar): allow selecting calendars in events * test(gmail): add edge case tests for ISO-2022-JP decoding Add tests for edge cases in ISO-2022-JP body decoding: - Mixed ASCII and Japanese text (e.g., "Hello こんにちは World") - Empty content with ISO-2022-JP charset header - Malformed ISO-2022-JP sequences (graceful degradation) - Truncated escape sequences These tests verify the graceful fallback behavior in decodeBodyCharset which returns original data if decoding fails. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(calendar): validate unknown calendar names in resolveCalendarIDs When a calendar name doesn't match any known calendar (not in bySummary or byID maps), return an error listing the unrecognized names instead of treating them as raw calendar IDs which causes cryptic Google API errors. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(calendar): validate unknown and ambiguous calendar name resolutions --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Peter Steinberger <steipete@gmail.com>
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.
Cross-repo PR to steipete/gogcli