Skip to content

Releases: ONEGAYI/R2-Manager

v1.2.1 - 文件夹上传 & 桌面端确认对话框修复

Choose a tag to compare

@ONEGAYI ONEGAYI released this 15 Mar 10:05

🆕 v1.2.0 - 文件夹上传功能

新增功能

  • 文件夹上传 - 支持上传整个文件夹,保留目录结构
    • 新增"选择整个文件夹"按钮(FolderUp 图标)
    • Tauri 桌面端:使用原生文件夹选择对话框 + 递归读取
    • 浏览器端:File System Access API (Chrome 86+) + webkitdirectory 降级
    • 拖拽上传:支持拖拽文件夹到上传区域
    • 空目录支持:自动创建空目录(通过 0 字节占位文件)

修复

  • 批量删除确认对话框中文件夹名称显示为空的问题

🔧 v1.2.1 - 桌面端确认对话框修复

修复问题

  • 桌面端确认对话框失效 - 修复 window.confirm 在 Tauri WebView2 中总是返回 true 的问题
    • 批量删除/单文件删除时会直接删除,不再等待用户确认
    • 重启服务/重置设置等操作同样受影响
    • 解决方案:在 Tauri 环境中使用原生对话框(@tauri-apps/plugin-dialog

技术细节

  • 新增 src/lib/confirm.ts: 跨平台确认对话框工具函数
    • Tauri 环境:使用原生系统对话框(异步,带警告图标)
    • 浏览器环境:继续使用 window.confirm(同步)

v1.1.4 - 冲突处理全面优化

Choose a tag to compare

@ONEGAYI ONEGAYI released this 15 Mar 07:02

✨ 新功能

冲突对话框交互重构 (v1.1.2)

  • 拖选框选功能 - 支持鼠标拖动框选多个冲突项
    • 绘制选择框可视化反馈(半透明蓝色边框)
    • 框选时自动包含文件夹的所有子孙项
    • 智能判断:超半数已选中则取消,否则选中
  • Shift 范围选择 - 支持 Shift+点击进行范围选择
    • 从上一个选中项(锚点)到当前项的范围
    • 智能反选逻辑(根据范围内选中比例决定操作)
    • 锚点显示视觉高亮(蓝色内环)
  • 层级展示 - 使用缩进+连接线展示文件夹层级关系
    • 自动根据文件路径计算父子关系
    • 选中文件夹自动选中所有子孙项
  • Tooltip 信息展示 - 源文件/目标文件详情改为悬停显示
    • 显示完整路径、大小、修改时间
    • 减少默认 UI 复杂度
  • "先选后设"批量模式 - 从逐项下拉选择改为批量设置策略
    • 操作栏改为:全选复选框 + 选中计数 + 策略按钮

⚡ 性能优化

冲突检测性能优化 (v1.1.3)

  • "逐个询问"冲突检测速度提升 26 倍
    • 优化前:28 个冲突耗时 ~17.7 秒(串行 HeadObject 调用)
    • 优化后:28 个冲突耗时 ~0.67 秒(并行 ListObjects 方案)
    • 原理:将 2N 次串行 HeadObject 调用改为 2 次并行 ListObjects 调用

批量操作性能优化 (v1.1.1)

  • "全部重命名"策略减少约 50% 的 API 调用
    • 复用已获取的文件列表避免重复 API 调用
    • 批量复制/移动的顶层和子项处理均受益

🐛 Bug 修复

v1.1.4

  • 跨桶复制/移动时未显示 ConflictDialog - 修复选择"逐个询问"策略时直接跳过冲突的问题
    • handleMove/handleCopy 新增 conflictStrategy 参数支持
    • 无冲突或检测失败时降级为 skip 策略继续操作
  • 冲突检测支持文件夹展开 - 修复文件夹复制/移动时冲突检测不完整的问题
    • 使用 ListObjectsV2Command 列出文件夹下所有文件
    • 正确映射源文件到目标位置

📦 安装包

文件 说明
CloudflareR2 Manager_1.1.4_x64-setup.exe NSIS 安装包(推荐)
CloudflareR2 Manager_1.1.4_x64_en-US.msi MSI 安装包

完整更新日志: v1.1.0...v1.1.4

v1.1.0 - 逐项冲突策略支持

Choose a tag to compare

@ONEGAYI ONEGAYI released this 15 Mar 03:08

✨ 新功能

逐项冲突策略支持

  • 每个冲突文件可独立选择处理方式(跳过/保留两者/覆盖)
  • 新增逐个询问冲突策略作为默认选项,遇到冲突时逐个确认
  • 上传冲突检测 - 上传前检测同名文件冲突

ConflictDialog 组件重构

  • 每个冲突项独立下拉选择处理策略
  • 新增全部设为快捷按钮(全部跳过/全部保留/全部覆盖)
  • 策略统计显示(X 项跳过、X 项保留、X 项覆盖)
  • 根据选择的策略显示不同的背景色高亮

🐛 Bug 修复

  • 修复批量操作全部跳过策略导致所有文件被错误跳过的问题
  • 修复空文件夹移动时 skip 策略检查顺序错误

📦 安装包

文件 说明
CloudflareR2 Manager_1.1.0_x64-setup.exe NSIS 安装包(推荐)
CloudflareR2 Manager_1.1.0_x64_en-US.msi MSI 安装包

完整更新日志: v1.0.0...v1.1.0

v1.0.0 - Cloudflare R2 Manager 正式版

Choose a tag to compare

@ONEGAYI ONEGAYI released this 14 Mar 15:07

🎉 Cloudflare R2 Manager v1.0.0

一个现代化的 Cloudflare R2 存储桶可视化管理工具

📖 项目简介

Cloudflare R2 Manager 是一个功能完善的 R2 存储桶管理工具,提供直观的可视化操作界面。支持 Web 浏览器和 Windows 桌面端两种使用方式。

技术栈

  • 前端: React 18 + TypeScript + Vite
  • 后端: Express.js 代理服务器
  • 桌面端: Tauri v2
  • 样式: Tailwind CSS + shadcn/ui
  • 动效: Framer Motion
  • 状态: Zustand
  • API: AWS S3 SDK (兼容 R2)

✨ 核心功能

🪣 存储桶管理

  • 创建存储桶(名称格式校验)
  • 删除存储桶(安全确认,需输入桶名)
  • 桶列表浏览与快速切换

📁 文件操作

  • 上传: 拖拽上传、按钮上传、文件夹上传
  • 下载: 单文件下载、批量下载
  • 删除: 单文件删除、批量删除、递归删除文件夹
  • 重命名: 文件/文件夹重命名
  • 复制/移动: 跨桶复制移动、文件夹递归操作、循环引用检测

📦 批量操作

  • 全选/取消全选当前层级
  • 批量删除(递归处理文件夹)
  • 批量下载(并发获取预签名 URL)
  • 批量复制/移动
    • SSE 实时进度反馈
    • 冲突处理策略(跳过/覆盖/保留两者)
    • "应用到所有"一键批量处理
    • 操作结果详情(成功/重命名/跳过/失败统计)

🚀 传输中心

类似百度网盘的传输管理页面,提供完整的上传下载任务管理:

任务管理

  • 进行中任务列表(上传/下载/批量操作)
  • 历史记录(最近 100 条)
  • 任务排队机制(全局线程池)

多线程分块传输

  • 上传: S3 Multipart Upload API,支持大文件
  • 下载: Range 请求分块下载
  • 可配置分块大小(上传 5-16MB,下载 4-32MB)
  • 可配置并发线程数(1-10)

暂停与恢复

  • 上传暂停/恢复(断点续传)
  • 下载暂停/恢复(Range 请求续传)
  • 暂停状态持久化(应用重启后可恢复)
  • IndexedDB 缓存已下载分块

错误重试

  • 自动重试网络错误和服务器临时不可用
  • 指数退避 + 随机抖动策略
  • 可配置重试次数和延迟

进度反馈

  • 实时进度条和百分比
  • 传输速度计算与显示
  • 进度气泡组件(批量操作时右下角显示)
  • 子项级别状态追踪

🎨 用户界面

视觉设计

  • 现代化 UI 设计
  • 深色/浅色/跟随系统三种主题
  • shadcn/ui 组件库
  • Framer Motion 流畅动画

文件浏览

  • 列表视图 / 网格视图切换
  • 文件图标自动识别(vscode-icons 风格)
  • 面包屑路径导航(Win11 风格折叠)
  • 响应式布局适配

文件浏览器

  • 移动/复制对话框集成文件夹浏览器
  • 可折叠侧边栏
  • 跨桶操作支持
  • 手动输入路径

💻 桌面端

Tauri v2

  • 使用系统 WebView2(Windows 10/11 内置)
  • 体积小巧(约 5-15 MB)
  • Sidecar 方式打包 Express 服务端

配置持久化

  • 桌面端:配置存储到 {Documents}/CloudFlareR2-Manager/config.json
  • 浏览器端:配置存储到 localStorage
  • 自动迁移旧配置

安装包

  • MSI 安装包
  • NSIS 安装包(中文界面)
  • 升级时自动关闭旧版本进程

⚙️ 设置与配置

凭证配置

  • Account ID
  • Access Key ID
  • Secret Access Key
  • 连接测试

传输设置

  • 上传并发线程数(1-10)
  • 下载并发线程数(1-10)
  • 批量操作并发数(1-8)
  • 分块大小配置

错误重试配置

  • 最大重试次数
  • 基础延迟时间
  • 最大延迟时间

系统功能

  • 重启服务
  • 清除所有配置(危险操作)

🔧 开发与构建

开发模式

# 安装依赖
npm install
cd server && npm install && cd ..

# 同时启动前后端
npm run dev

桌面端打包

# 完整打包流程
npm run release

📋 系统要求

Web 版

  • 现代浏览器(Chrome、Firefox、Edge、Safari)
  • Node.js 18+

桌面版

  • Windows 10/11
  • WebView2 运行时(系统内置)

🔐 安全说明

  • 凭证仅保存在本地(不上传到任何服务器)
  • 桌面端配置文件存储在用户文档目录
  • 后端代理服务器仅监听 localhost

📜 License

MIT License


🙏 致谢

完整变更记录请查看 CHANGELOG.md