[PR #68] [MERGED] feat(cloud): add Cloud Upload Integration (Cloudflare R2 & Google Drive) #77

Closed
opened 2026-03-03 15:57:40 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/mrgoonie/winshot/pull/68
Author: @mrgoonie
Created: 1/7/2026
Status: Merged
Merged: 1/7/2026
Merged by: @mrgoonie

Base: devHead: goon


📝 Commits (10+)

  • 2ddc6d5 Merge remote-tracking branch 'origin/main' into goon
  • 66d6850 chore: merge origin/dev with conflict resolution
  • 9e94f51 Merge pull request #57 from mrgoonie/dev
  • 3527a61 chore(release): 1.4.0 [skip ci]
  • 821fc58 chore: merge origin/main into goon
  • b30744e fix(release): add @semantic-release/npm plugin to update package.json version
  • d46a525 chore(release): 1.4.1 [skip ci]
  • 8f2c55a feat(upload): add Windows Credential Manager wrapper for cloud upload credentials
  • 558796c feat(upload): add Cloudflare R2 uploader with retry logic
  • e3ac924 feat(upload): add Google Drive uploader with OAuth2 flow

📊 Changes

25 files changed (+7787 additions, -820 deletions)

View changed files

📝 CHANGELOG.md (+42 -106)
📝 CLAUDE.md (+4 -0)
📝 app.go (+173 -0)
coverage.html (+347 -0)
📝 coverage.out (+46 -692)
📝 frontend/dist/index.html (+2 -2)
📝 frontend/src/App.tsx (+118 -0)
📝 frontend/src/components/export-toolbar.tsx (+81 -2)
📝 frontend/src/components/settings-modal.tsx (+421 -3)
📝 frontend/wailsjs/go/main/App.d.ts (+35 -0)
📝 frontend/wailsjs/go/main/App.js (+68 -0)
📝 frontend/wailsjs/go/models.ts (+101 -0)
📝 go.mod (+36 -4)
📝 go.sum (+93 -10)
📝 internal/config/config.go (+24 -0)
internal/config/config_cloud_test.go (+139 -0)
internal/upload/credentials.go (+92 -0)
internal/upload/credentials_test.go (+99 -0)
internal/upload/gdrive.go (+366 -0)
internal/upload/gdrive_test.go (+171 -0)

...and 5 more files

📄 Description

Summary

  • Add Cloud Upload feature with support for Cloudflare R2 and Google Drive
  • Implement Windows Credential Manager wrapper for secure secret storage
  • Add Cloud settings tab with R2 configuration and Google Drive OAuth
  • Add directory prefix support for R2 uploads
  • Fix dropdown menu to open upward to avoid screen edge clipping

Features

Cloudflare R2

  • Account ID, Bucket, Access Key, Secret Key, Public URL configuration
  • Optional directory prefix for organizing uploads
  • Test connection validation
  • Retry logic with exponential backoff

Google Drive

  • OAuth2 browser authentication flow
  • Upload to configurable folder
  • Connect/disconnect functionality

UI

  • Cloud upload button with provider dropdown in export toolbar
  • Cloud tab in Settings modal
  • Setup instructions for both providers

Test Plan

  • Configure R2 credentials and test connection
  • Upload image to R2 and verify public URL
  • Test R2 directory prefix feature
  • Connect Google Drive via OAuth
  • Upload image to Google Drive
  • Verify dropdown menu opens above button

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/mrgoonie/winshot/pull/68 **Author:** [@mrgoonie](https://github.com/mrgoonie) **Created:** 1/7/2026 **Status:** ✅ Merged **Merged:** 1/7/2026 **Merged by:** [@mrgoonie](https://github.com/mrgoonie) **Base:** `dev` ← **Head:** `goon` --- ### 📝 Commits (10+) - [`2ddc6d5`](https://github.com/mrgoonie/winshot/commit/2ddc6d5c35ab1a03b8c67312ffde680c3a47c12a) Merge remote-tracking branch 'origin/main' into goon - [`66d6850`](https://github.com/mrgoonie/winshot/commit/66d68504d400659321f8e5f45bfe52fe29333d9b) chore: merge origin/dev with conflict resolution - [`9e94f51`](https://github.com/mrgoonie/winshot/commit/9e94f518facaeb23b43c1e8d961aa9a860610dcf) Merge pull request #57 from mrgoonie/dev - [`3527a61`](https://github.com/mrgoonie/winshot/commit/3527a61dc72433733c4c729a3963b1eb2f825eb2) chore(release): 1.4.0 [skip ci] - [`821fc58`](https://github.com/mrgoonie/winshot/commit/821fc58d27075fc522cfa58d218b157c6f05f368) chore: merge origin/main into goon - [`b30744e`](https://github.com/mrgoonie/winshot/commit/b30744e0ad5664eb9000973e5cebf4842729f8c4) fix(release): add @semantic-release/npm plugin to update package.json version - [`d46a525`](https://github.com/mrgoonie/winshot/commit/d46a5250e1e7041e46e8b95c446e9397914a09bc) chore(release): 1.4.1 [skip ci] - [`8f2c55a`](https://github.com/mrgoonie/winshot/commit/8f2c55a575db0d4976e1ceffee541c99ea6f6487) feat(upload): add Windows Credential Manager wrapper for cloud upload credentials - [`558796c`](https://github.com/mrgoonie/winshot/commit/558796ce9e45561605c67d21d9520bdec2d71617) feat(upload): add Cloudflare R2 uploader with retry logic - [`e3ac924`](https://github.com/mrgoonie/winshot/commit/e3ac924b510c73da0dd21eebf4dca44bfa6d0bbc) feat(upload): add Google Drive uploader with OAuth2 flow ### 📊 Changes **25 files changed** (+7787 additions, -820 deletions) <details> <summary>View changed files</summary> 📝 `CHANGELOG.md` (+42 -106) 📝 `CLAUDE.md` (+4 -0) 📝 `app.go` (+173 -0) ➕ `coverage.html` (+347 -0) 📝 `coverage.out` (+46 -692) 📝 `frontend/dist/index.html` (+2 -2) 📝 `frontend/src/App.tsx` (+118 -0) 📝 `frontend/src/components/export-toolbar.tsx` (+81 -2) 📝 `frontend/src/components/settings-modal.tsx` (+421 -3) 📝 `frontend/wailsjs/go/main/App.d.ts` (+35 -0) 📝 `frontend/wailsjs/go/main/App.js` (+68 -0) 📝 `frontend/wailsjs/go/models.ts` (+101 -0) 📝 `go.mod` (+36 -4) 📝 `go.sum` (+93 -10) 📝 `internal/config/config.go` (+24 -0) ➕ `internal/config/config_cloud_test.go` (+139 -0) ➕ `internal/upload/credentials.go` (+92 -0) ➕ `internal/upload/credentials_test.go` (+99 -0) ➕ `internal/upload/gdrive.go` (+366 -0) ➕ `internal/upload/gdrive_test.go` (+171 -0) _...and 5 more files_ </details> ### 📄 Description ## Summary - Add Cloud Upload feature with support for Cloudflare R2 and Google Drive - Implement Windows Credential Manager wrapper for secure secret storage - Add Cloud settings tab with R2 configuration and Google Drive OAuth - Add directory prefix support for R2 uploads - Fix dropdown menu to open upward to avoid screen edge clipping ## Features ### Cloudflare R2 - Account ID, Bucket, Access Key, Secret Key, Public URL configuration - Optional directory prefix for organizing uploads - Test connection validation - Retry logic with exponential backoff ### Google Drive - OAuth2 browser authentication flow - Upload to configurable folder - Connect/disconnect functionality ### UI - Cloud upload button with provider dropdown in export toolbar - Cloud tab in Settings modal - Setup instructions for both providers ## Test Plan - [x] Configure R2 credentials and test connection - [x] Upload image to R2 and verify public URL - [x] Test R2 directory prefix feature - [ ] Connect Google Drive via OAuth - [ ] Upload image to Google Drive - [x] Verify dropdown menu opens above button --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-03 15:57:40 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/winshot#77
No description provided.