# SnapGo

SnapGo 是一个以 macOS 为核心体验的截图上传工具，面向“截图后立刻分享链接”的高频场景。它常驻于菜单栏，支持全局快捷键唤起截图覆盖层，在完成区域选择后自动将图片上传到兼容 S3 协议的对象存储，并把最终公开链接写入剪贴板，尽可能减少“截图、保存、上传、复制链接”之间的手动切换成本。

项目当前基于 `Wails + Go + Vue 3` 构建，桌面端负责截图、热键、托盘与系统集成，前端负责设置页与截图交互界面。整体设计围绕“轻量常驻、快速触发、上传即复制”展开，适合作为个人图床工作流中的本地入口工具。

## 核心功能

- 全局快捷键截图：支持通过全局快捷键在任意应用中快速唤起截图流程。
- 区域选择覆盖层：提供接近原生体验的截图选区交互，优先针对 macOS 做了透明覆盖层与窗口层级优化。
- 自动上传到 S3 兼容存储：支持 AWS S3、MinIO、Cloudflare R2、Backblaze B2 及其他兼容 S3 API 的对象存储。
- 自动复制公开链接：上传成功后自动将图片 URL 写入剪贴板，方便直接粘贴到 IM、文档或工单系统。
- 菜单栏常驻与设置面板：通过托盘菜单进入设置，配置热键、存储参数，并测试连接可用性。
- 上传失败兜底：当上传失败时，会将截图落盘到本地临时目录，避免截图结果丢失。

## 典型使用流程

1. 首次启动后，在设置页中填写 S3 兼容对象存储的连接信息。
2. 保存配置并测试连通性，确认目标 Bucket 可写。
3. 使用默认快捷键 `cmd+shift+a`，或自定义快捷键，随时发起截图。
4. 选择需要截取的区域并确认。
5. 应用自动上传截图，并将生成的公开链接复制到剪贴板。

## 项目定位

SnapGo 当前更偏向一个面向个人使用的高效工具，而不是“大而全”的截图平台。它的重点不在复杂标注或云端管理能力，而在于把“截图并生成可分享链接”这条链路压缩到尽可能短，尤其适合开发者、产品、测试或需要频繁在聊天工具中分享截图的用户。

虽然工程结构中保留了跨平台方向的设计，但现阶段的核心交互与系统集成主要围绕 macOS 打磨，包括菜单栏形态、原生覆盖层、窗口透明化处理以及与系统截图能力的衔接。因此，如果你希望获得完整体验，macOS 是当前最合适的运行平台。

## 技术实现概览

- 桌面壳与应用编排：Go + Wails
- 设置界面与截图覆盖层：Vue 3 + TypeScript + Vite
- 全局快捷键：`golang.design/x/hotkey`
- 对象存储接入：AWS SDK for Go v2（S3 兼容实现）
- macOS 截图与窗口控制：系统 `screencapture` 命令 + AppKit 原生能力
