New commands under 'gog drive comments':
- list: List comments on a file (with --include-quoted flag)
- get: Get a comment by ID
- create: Create a comment (with --quoted flag for anchor text)
- update: Update a comment
- delete: Delete a comment
- reply: Reply to a comment
Note: The --quoted flag sets quotedFileContent but does not create a
proper anchor. Comments appear in the comments pane but aren't visually
anchored to specific text in the document. Proper anchoring requires
the Google Docs API to resolve text positions to kix.* anchor IDs.
Extract inline select block into waitPostSuccess function and add
unit tests verifying context cancellation behavior for Ctrl+C support.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Merge success_new.html content/layout into success.html
- Add animated gradient orbs from original success.html
- Use Go template conditionals to handle both cases:
- With email/services (account manager flow)
- Without email (simple OAuth flow)
- Delete redundant success_new.html
- Rename renderSuccessPageNew to renderSuccessPageWithDetails
- Update tests to cover both template modes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace inline SVG icons with a reusable `.icon-github` CSS class
that uses mask-image with a data URI. Each template now includes
a comment noting the other files to update if the icon changes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a named constant for the 30-second display delay after OAuth success.
This keeps the Go code and HTML templates in sync, with comments in the
HTML pointing to the authoritative constant definition in oauth_flow.go.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add the same 30-second countdown JavaScript that exists in success.html
to success_new.html for consistency. The countdown shows "Closing in X
seconds..." and updates to "You can close this window." when complete.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace duplicate newAuthLoginCmd() with Cobra alias on newAuthManageCmd().
Both commands had identical RunE logic calling googleauth.StartManageServer.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace blocking time.Sleep with select statement using time.After
and ctx.Done() so the 30-second post-success display period can be
interrupted by context cancellation (Ctrl+C).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This adds a new `gmail thread modify` subcommand that uses the Gmail API's
Threads.Modify endpoint to apply label changes to all messages in a thread
at once.
Usage:
gog gmail thread modify <threadId> --add "Label1,Label2" --remove "Label3"
Features:
- Resolves label names to IDs automatically
- Supports both adding and removing labels in a single operation
- JSON output mode for programmatic use
BREAKING CHANGE: The `gmail thread` command is now a parent command with
subcommands. Use `gmail thread get <id>` instead of `gmail thread <id>`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>