Skip to content

Releases: AptS-1547/AsterDrive

AsterDrive v0.0.1-alpha.16

09 Apr 11:55
v0.0.1-alpha.16
0f6f2fe

Choose a tag to compare

Pre-release

Release Highlights

  • 邮件系统 — 引入 lettre/SMTP 邮件服务,新增 outbox 异步投递队列与 5 种可自定义 HTML 邮件模板(注册激活、邮箱变更、密码重置等),管理后台支持在线编辑模板
  • 完整认证流程 — 新增邮箱验证激活、邮箱变更确认、密码重置三大流程,所有敏感操作均有邮件通知。新增注册开关配置,支持关闭公开注册
  • Office 在线预览 — 支持 Microsoft Office Online 和 Google Docs 两种 provider,可在线预览 Word/Excel/PowerPoint/ODF 文档。新增预览链接服务,生成限时限次的预览令牌
  • 文件变更实时推送 (SSE) — 后端通过 Server-Sent Events 广播文件/文件夹变更事件,前端自动刷新当前目录,用户可在设置中开关实时同步
  • 站点品牌配置 — 支持自定义站点标题、描述、Favicon、亮/暗色 Logo (Wordmark),登录前页面即可展示自定义品牌

Added

  • 邮件基础设施
    • 新增 mail_service.rs:基于 lettre 的 SMTP 邮件发送,支持 TLS/STARTTLS
    • 新增 mail_outbox 数据表:异步邮件投递队列,支持失败重试
    • 后台任务定期处理邮件重试(spawn_background_tasks 新增邮件处理任务)
    • 新增 MemoryMailSender 用于测试环境
  • 邮件模板系统
    • 5 种内置 HTML 模板:注册激活、邮箱变更确认/通知、密码重置/通知
    • 模板变量替换:{{username}}{{verification_url}}{{reset_url}}
    • 管理后台新增邮件模板编辑页面,支持展开/折叠分组编辑
  • 邮箱验证流程
    • 注册后发送激活邮件,未激活账号登录返回 PendingActivation 错误码
    • 前端登录页新增待激活提示面板 + 重发激活邮件功能
    • 邮箱变更需确认:发送变更确认邮件到新邮箱,通知邮件到旧邮箱
  • 密码重置
    • POST /auth/request_password_reset + POST /auth/confirm_password_reset
    • 复用 contact_verification_token 基础设施,新增 PasswordReset 验证用途
    • 重置成功后自动轮换 session_version,所有现有会话强制失效
    • 发送重置链接邮件及重置成功通知邮件,记录审计日志
  • 注册开关
    • 新增 auth_allow_user_registration 运行时配置项(默认 true
    • 关闭后 /auth/register 返回 403,/auth/setup 初始化流程不受影响
    • 前端登录页根据配置隐藏注册入口
  • Office 在线预览
    • 新增 OfficeOnlinePreview 组件,支持 Microsoft Office Online / Google Docs
    • 超时检测、localhost/HTTP 链接错误提示及重试
    • 文件类型识别增强:doc/docx/xls/xlsx/ppt/pptx/odt/ods/odp 文件归入 document/spreadsheet/presentation 分类
  • 预览链接服务 (preview_link_service)
    • 为个人/团队文件及分享文件生成带使用次数限制的预览令牌
    • GET /pv/{token}/{filename} 路由提供 inline 下载
    • 令牌有效期 5 分钟,最大使用次数 5 次
  • 文件变更实时推送 (SSE)
    • storage_change_service:通过 broadcast channel 广播文件/文件夹变更事件
    • GET /auth/events/storage SSE 端点,含心跳保活(30s)与消息积压降级
    • 前端 useStorageChangeEvents hook:订阅实时变更并自动刷新当前目录
    • 用户偏好 storage_event_stream_enabled 字段,可在设置中开关
  • 站点品牌配置
    • 新增 branding_titlebranding_descriptionbranding_favicon_url 配置项
    • 新增 branding_wordmark_dark_urlbranding_wordmark_light_url Logo 配置
    • 前端启动时通过 /api/v1/public/branding 拉取品牌配置
    • 后端渲染 index.html 时注入品牌占位符,登录前即展示自定义品牌
  • 前端增强
    • usePageTitle hook:所有页面动态标题,格式 页面名 · 应用名
    • AdminSiteUrlMismatchPrompt 独立组件:站点 URL 不匹配检测与更新
    • CORS 新增 cors_enabled 独立开关配置

Changed

  • 认证流程重构
    • /auth/check 不再接受 identifier 参数,改为返回公开认证状态(注册开关、初始化状态等)
    • 前端登录页改为页面初始化时一次性拉取认证状态,移除输入框防抖检查逻辑
    • 统一响应时间下限防止用户枚举攻击
  • 头像存储迁移
    • 从对象存储策略迁移到本地文件系统,新增 avatar_dir 配置项
    • 删除时递归清理空目录
    • 兼容旧 avatar_policy_id 记录,平滑迁移
  • 管理后台设置页
    • 默认路由从 /admin/settings/auth 改为 /admin/settings/general
    • 新增邮件模板编辑分区
  • CI 改进
    • 替换 actions/cacheSwatinem/rust-cache@v2,简化配置

Fixed

  • 代码编辑器
    • 默认关闭自动换行 (wordWrap: off)

Breaking Changes

  • 认证 API: /auth/check 移除 identifier 参数,改为返回全局认证状态。前端需适配新的登录初始化逻辑
  • 注册激活: 邮件验证成为注册必需步骤(需配置 SMTP),未激活账号无法登录
  • 密码重置: 重置成功后自动轮换 session_version,所有现有会话强制失效
  • 头像存储: 新上传头像存到本地文件系统 (avatar_dir),不再使用对象存储策略
  • 管理后台: 设置页默认路由从 /admin/settings/auth 改为 /admin/settings/general
  • CORS: 新增 cors_enabled 独立开关,需显式启用

统计数据

  • 243 files changed, 19,542 insertions(+), 1,920 deletions(-)
  • 15 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.16_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.16_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.16_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.16_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.16_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.15

07 Apr 13:47
v0.0.1-alpha.15
68f1bea

Choose a tag to compare

Pre-release

Release Highlights

  • 文件直链分享 — 新增 Direct Link 分享模式,生成不经过分享页面的直接下载链接。支持强制下载参数,独立速率限制。前端分享弹窗可一键切换分享页/直链两种模式
  • 运行时认证策略 — 将 Cookie 安全策略、Token TTL 等认证配置从静态 config.toml 迁移至数据库运行时配置,管理员可在后台实时调整,无需重启服务
  • 管理设置页面重构 — 系统配置按分类标签页导航(认证/网络/存储/WebDAV/审计/通用/自定义),支持批量保存、敏感值掩码、默认值展示与一键恢复、i18n 标签
  • 头像裁剪 — 新增圆形裁剪器,支持缩放和位置调整,输出 1024×1024 WebP 格式
  • 移动端响应式优化 — 对话框与设置页面全面适配移动端布局,标签页增加切换动画方向检测

Added

  • 文件直链服务
    • 新增 direct_link_service.rs:生成带签名的直链下载 token
    • API 端点:GET /api/v1/files/{id}/direct-linkGET /api/v1/team-space/files/{id}/direct-link
    • 公开下载端点:GET /d/{token}/{filename},支持 ?download=1 强制下载
    • 独立速率限制配置
  • 运行时认证配置
    • 新增 auth_runtime.rs:从数据库读取 auth_cookie_secureauth_access_token_ttl_secsauth_refresh_token_ttl_secs
    • 静态配置新增 bootstrap_insecure_cookies 引导选项(仅首次初始化生效)
    • Cookie 路径隔离:Access Token → /,Refresh Token → /api/v1/auth/refresh
  • 头像裁剪
    • 新增 AvatarCropDialog 组件 + avatarCrop.ts 工具
    • 基于 react-image-crop,圆形裁剪框 + 实时预览
  • 前端分享增强
    • 分享弹窗新增双模式切换:分享页 (Share page) / 直链 (Direct link)
    • 直链模式不支持密码和过期时间,支持生成强制下载链接
    • 文件右键菜单支持直接选择分享模式
  • 系统配置 i18n
    • 配置定义新增 label_i18n_key / description_i18n_key 字段
    • 配置项支持分类:auth / network / storage / webdav / audit / general
    • 敏感值标记 (is_sensitive) 和需重启标记 (requires_restart)
    • 中英文翻译覆盖所有系统配置项
  • UI 组件增强
    • Select 新增 width 变体(compact / page-size / fit / full)
    • Tabs line 变体支持全宽样式 + 动画方向检测
    • 审计日志页面支持 URL 参数同步、每页条目数选择、筛选激活指示器

Changed

  • 认证服务重构
    • issue_tokens_for_user 改为从运行时配置获取 Token TTL 和 Cookie 策略
    • 分享验证 Cookie 增加安全标志和路径隔离(/api/v1/s/{token}
  • 管理设置页面
    • 重构为分类标签页导航(桌面端侧边栏,移动端下拉)
    • 新增批量保存机制(草稿值管理)
    • 敏感值显示掩码(********),支持默认值展示与一键恢复
  • 对话框响应式布局
    • AdminTeamDetailDialog / TeamManageDialog / UserDetailDialog 全面适配移动端
    • 两栏布局重构为 flex + overflow-hidden,移动端自适应单列
    • 新增滚动位置记忆和标签切换动画方向检测
  • Select 组件
    • 移除硬编码高度,改用变体系统
    • 管理页面统一使用 width prop

Fixed

  • Cookie 安全策略
    • 修复纯 HTTP 环境首次部署无法登录的问题(bootstrap_insecure_cookies 引导配置)
  • 审计日志页面
    • 修复筛选和分页状态无法保存或通过 URL 分享的问题
  • 移动端布局
    • 修复管理对话框在移动端滚动行为混乱的问题
    • 修复用户详情对话框底部按钮被遮挡的问题

Breaking Changes

  • 配置文件: [auth] 段移除 access_token_ttl_secsrefresh_token_ttl_secscookie_secure,改为运行时配置。新增 bootstrap_insecure_cookies(仅首次初始化生效)
  • Cookie 行为: Refresh Token Cookie 路径从 / 限制为 /api/v1/auth/refresh,分享验证 Cookie 路径限制为 /api/v1/s/{token}
  • 前端路由: 管理设置页面新增子路由 /admin/settings/:section

统计数据

  • 99 files changed, 6,749 insertions(+), 1,629 deletions(-)
  • 7 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.15_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.15_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.15_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.15_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.15_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.14

05 Apr 16:24
v0.0.1-alpha.14
7371e66

Choose a tag to compare

Pre-release

Release Highlights

  • 团队工作空间 — 新增完整团队生命周期管理,支持创建团队、成员邀请、角色分配(Owner/Member)、多空间文件隔离。分享链接新增团队范围支持,团队协作更顺畅
  • 上传性能优化 — 移除 proxy_tempfile 中间策略,新增 relay_stream 无暂存直传快速路径;本地存储上传跳过全局临时目录,小文件上传延迟降低
  • 自定义 CORS 中间件 — 替换 actix-cors 为运行时可配置的自定义实现,支持动态调整跨域策略,管理后台可实时生效
  • Admin 路由重构 — 将臃肿的 admin.rs 拆分为 8 个独立子模块(users/policies/teams/shares/config/locks/audit_logs/overview),代码可维护性提升
  • 缩略图错误精细化 — 区分 202(生成中)、400(不支持类型)、500(生成失败)状态码,前端可做出更精确的用户反馈

Added

  • 团队功能
    • 新增 teams / team_members / team_spaces 数据库表,支持软删除
    • 完整 Team API:创建、更新、删除、成员管理、空间列表
    • 团队空间文件管理:独立于用户空间的团队文件存储
    • 分享支持团队范围(team_id 字段),团队成员可访问团队分享
    • 前端 TeamManagePage / TeamsSettingsView / TeamManageDialog 完整界面
    • 支持团队维度批量操作、搜索、回收站、分享管理
    • 审计日志覆盖团队相关操作
  • 团队文件存储服务 (workspace_storage_service)
    • 独立的空间配额计算与权限校验
    • 支持团队内文件夹/文件的完整生命周期管理
    • 团队文件版本历史支持
  • 上传优化
    • relay_stream 无暂存直传模式(替代原 relay 模式)
    • 本地存储快速路径:小文件直接写入目标路径,跳过全局临时目录
  • 自定义 CORS 中间件
    • CorsConfig 运行时配置支持
    • 基于 http crate 的手动 CORS 头处理
    • 管理后台配置变更实时生效
  • 缩略图 API 细化
    • ThumbnailStatus 枚举:Generating/Unsupported/Error
    • HTTP 202 + Retry-After 头表示生成中
    • HTTP 400 明确标识不支持的 MIME 类型

Changed

  • Admin 路由重构
    • 拆分 admin.rs 为 8 个子模块:users/policies/teams/shares/config/locks/audit_logs/overview
    • 共享工具函数抽离至 admin/common.rs
  • 上传策略
    • 移除 S3UploadStrategy::ProxyTempfile 变体
    • relay_stream 成为新的 relay 模式实现
  • 文件仓库
    • find_or_create_blob 重试策略改为指数退避(减少高并发冲突)
  • 分享服务
    • 重构分享权限校验,支持团队范围校验
    • 分享列表查询优化,支持团队过滤
  • 缩略图错误处理
    • 生成失败返回 500(原为 404)
    • 不支持的类型返回 400(带有明确错误信息)

Fixed

  • 安全性
    • 优化 API 错误信息,避免泄露敏感内部细节(如数据库结构、内部路径)
  • S3 驱动
    • 修复负数 content_length 处理边界情况
  • 应用关闭
    • 重构优雅关闭逻辑,确保缩略图 worker 和后台任务正确收尾

Breaking Changes

  • API: POST /api/v1/uploads 移除 proxy_tempfile 策略选项(已自动迁移至 relay_stream
  • API: 缩略图端点状态码语义变更:
    • 202: 缩略图正在生成中(原行为返回 404)
    • 400: 不支持的文件类型(新增)
    • 500: 生成失败(原行为返回 404)
  • 内部: S3UploadStrategy 枚举移除 ProxyTempfile 变体

统计数据

  • 180 files changed, 33,028 insertions(+), 6,842 deletions(-)
  • 12 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.14_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.14_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.14_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.14_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.14_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.13

01 Apr 19:04
v0.0.1-alpha.13
ecc02ab

Choose a tag to compare

Pre-release

Release Highlights

  • 存储策略组 — 新增策略组子系统,替代原来的用户-策略一对一分配。策略组支持多策略规则(按优先级+文件大小区间匹配),用户绑定策略组后上传自动路由到最合适的存储策略
  • Access Token 自动续期 — 前端新增基于 expires_at 的自动续期机制,提前 2 分钟触发 refresh,登录/改密码响应返回 expires_in,会话生命周期全程可追踪
  • 代码预览轻量化 — 移除 Monaco Editor 依赖(~350 行),替换为基于 Prism 的轻量代码编辑器,按需加载 40+ 语言,构建产物体积大幅缩减
  • OpenAPI 可选编译 — utoipa 全系列依赖改为 optional feature,release 构建默认不编译 OpenAPI 支持,二进制体积更小
  • 管理后台策略组页面 — 完整的策略组 CRUD 页面,含规则编辑、用户迁移确认、系统默认策略组自动种子化
  • 前端基础设施增强 — 新增分页/查询参数工具函数、分享对话框共享逻辑提取、useApiList 竞态保护

Added

  • 存储策略组
    • storage_policy_groups + storage_policy_group_items 数据库表(migration)
    • users 表新增 policy_group_id 列(FK + SET NULL 级联)
    • 6 个 Admin API 路由:CRUD + 用户迁移(/admin/policy-groups/*
    • PolicySnapshot 扩展:缓存策略组/条目/用户绑定,新增 resolve_policy_in_groupresolve_user_policy_for_size 等方法
    • 启动时 ensure_policy_groups_seeded:系统默认策略自动包装为默认策略组,旧 user_storage_policies 记录自动迁移
    • 上传时按文件大小在策略组中匹配最合适的策略
    • 审计日志新增 4 种 action:AdminCreatePolicyGroupAdminUpdatePolicyGroupAdminDeletePolicyGroupAdminMigratePolicyGroupUsers
    • 前端 AdminPolicyGroupsPage 完整策略组管理页面(1439 行)
    • UserDetailDialog 重构:存储策略分配改为单策略组选择
    • 中英文 i18n 各增加约 40 条策略组翻译
  • Access Token 自动续期
    • 后端 auth 响应体返回 expires_inaccess_token_expires_at
    • authStore 新增 expiresAt 状态、sessionStorage 持久化、refreshToken() 去重复用
    • startAutoRefresh() / stopAutoRefresh():基于 setTimeout 提前 2 分钟自动续期
    • HTTP 拦截器 refresh 队列从数组改为 refreshPromise 复用
  • Prism 代码编辑器
    • 新增 CodePreviewEditor 替代 MonacoCodeEditor,基于 prism-react-renderer
    • 按需动态加载 40+ 种语言的 Prism 组件
    • 新增 prismClassNames 模块解决 Scoped CSS className 冲突
    • 新增 tomlgroovy 语言映射
  • 前端基础设施
    • lib/pagination.ts:通用 offset 分页参数解析与构建
    • lib/queryParams.ts:通用 query string 构建工具
    • components/files/shareDialogShared.ts:分享对话框共享逻辑(过期计算、下载次数归一化)
    • api-docs-macros workspace crate:自定义 proc-macro,debug+openapi feature 下展开为 #[utoipa::path]
  • 测试覆盖
    • 新增 AdminPolicyGroupsPage.test.tsx(873 行)
    • 新增 policyGroupDialogShared.test.tsstoragePolicyDialogShared.test.tsshareDialogShared.test.ts
    • 新增 prismClassNames.test.tsfile-capabilities.test.ts
    • 新增 useApiList.test.tsxpagination.test.tsqueryParams.test.ts
    • 新增 authStore.edge.test.ts

Changed

  • OpenAPI 可选编译
    • utoipa / utoipa-swagger-ui 改为 optional = true,新增 openapi feature
    • 全项目 #[derive(ToSchema)] / #[derive(IntoParams)] 改为 #[cfg_attr] 条件编译
    • #[utoipa::path] 替换为 #[api_docs_macros::path]
    • openapi 模块整体条件编译
  • 管理后台页面重构
    • AdminUsersPage 大幅重构,使用 useApiList hook + URL search params 管理
    • AdminPoliciesPage 使用新分页工具函数
    • AdminAuditPage 从手动 useCallback + useEffect 改为 useApiList hook
    • adminService.ts 全面使用 withQuery() 构建 query string,参数改用生成的请求类型
  • 上传策略解析改为基于文件大小路由
    • upload_service 调用新的 resolve_policy_for_size 替代原 resolve_policy
  • 用户创建流程简化
    • create_user_with_role 不再创建 user_storage_policies 行,改为设置 policy_group_id
  • useApiList hook 增强
    • 新增 requestIdRef 竞态保护,快速切换 filter/offset 时丢弃过期响应
    • 新增 setTotal 返回值
  • 移除 relay 上传模式
    • 删除 relay_field_to_s3create_relay_cleanup_handle 等函数(约 170 行)

Fixed

  • 修复 StoragePolicyDialog 策略摘要卡片在大屏下粘性定位失效问题(添加 self-start

Breaking Changes

  • API: 移除 4 个旧的 user-storage-policy 路由(/admin/users/{user_id}/policies/*),替代方案为 /admin/policy-groups/* + PATCH /admin/users/{id}policy_group_id
  • API: POST /auth/loginPOST /auth/refreshPUT /auth/password 响应体从 { data: null } 变为 { data: { expires_in } }
  • API: GET /auth/me 响应新增 access_token_expires_atpolicy_group_id 字段
  • API: 所有用户信息响应体新增 policy_group_id 字段
  • 行为: user_storage_policies 标记为 deprecated,新代码应使用策略组体系
  • 前端: 移除 monaco-editor 依赖,替换为 prismjs + prism-react-renderer

统计数据

  • 137 files changed, 10,275 insertions(+), 3,305 deletions(-)
  • 4 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.13_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.13_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.13_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.13_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.13_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.12

30 Mar 18:49
v0.0.1-alpha.12
1fedf3d

Choose a tag to compare

Pre-release

Release Highlights

  • 会话吊销机制 — 用户表新增 session_version 字段,JWT 嵌入版本号,管理员可一键吊销用户全部会话,改密码自动失效旧令牌
  • 内存运行时配置与策略快照 — 系统配置和存储策略缓存至 RwLock<HashMap>,热路径零 DB 查询,写入时即时同步
  • 批量 SQL 操作 — 删除/移动/复制重构为批量 SQL,单事务校验+执行,逐项错误上报,N 项操作 DB 往返从 ~6N 降至 ~10
  • 管理员权限中间件 — 提取 RequireAdmin 独立中间件,admin 路由嵌套 JwtAuth → RequireAdmin,移除 handler 内联角色检查
  • 本地存储可选内容去重 — 新增 content_dedup 策略选项,关闭时跳过 SHA256 计算,使用独立 blob 短令牌键
  • 数据库索引优化 — 新增目录列表与回收站分页复合索引,消除全表扫描

Added

  • 会话吊销
    • users 表新增 session_version 列(migration)
    • AuthSnapshot 结构体携带 statusrolesession_version
    • 新增 POST /api/v1/admin/users/{id}/sessions/revoke — 管理员吊销用户全部会话
    • 改密码/管理员重置密码自动递增 session_version,当前会话返回新 token 保持在线
    • JWT Claims 嵌入 session_version,认证中间件校验一致性
    • WebDAV Bearer 认证升级为 authenticate_access_token,拒绝 refresh token
    • 新增审计动作:AdminRevokeUserSessionsUserLogout
    • 前端用户详情对话框新增"吊销全部会话"按钮
  • 内存运行时配置
    • RuntimeConfig 结构体:reloadapplyremove + 类型化 getter(get_boolget_i64get_u64 等)
    • PolicySnapshot 结构体:reloadget_policyresolve_default_policy_idset_user_default_policy
    • 启动时预加载全部配置和策略到内存
    • 所有服务(audit、auth、config、file、thumbnail、upload、trash、version、webdav)改为从快照读取
  • 本地存储内容去重选项
    • StoragePolicyOptions 新增 content_dedup 字段
    • 关闭时:跳过 SHA256,使用 new_short_token() 生成独立 blob 键
    • 开启时:写入临时文件后计算 SHA256,复用相同内容 blob
    • local_content_dedup_enabled() / create_nondedup_blob() 公共函数
  • 管理后台关于页面
    • 新增 AdminAboutPage:展示版本号、发布渠道(alpha/beta/rc/stable)、许可证(MIT)、外部链接
    • AsterDriveWordmark 主题感知 SVG 组件(dark/light 自动切换)
    • index.html 注入 asterdrive-version meta 标签,构建时写入版本号
    • 中英文 i18n 完整支持
  • 数据库索引
    • idx_folders_user_deleted_parent_name / idx_files_user_deleted_folder_name — 目录列表查询
    • idx_folders_user_deleted_at_id / idx_files_user_deleted_at_id — 回收站分页查询
  • 测试覆盖
    • test_batch.rs — 批量操作测试(472 行)
    • test_db_indexes.rs — 索引有效性验证(EXPLAIN QUERY PLAN
    • test_webdav_path_resolver.rs — WebDAV 路径解析测试(518 行)
    • test_services.rs — 树可见性、空叶子、回收站路径等(332 行)

Changed

  • 上传完成逻辑重构
    • 提取 create_new_file_from_blobfinalize_upload_session_blobfinalize_upload_session_file 公共原语
    • 提取 complete_s3_multipart_upload_session 统一 multipart 完成逻辑
    • 提取 ensure_uploaded_s3_object_sizetransition_upload_session_to_assembling 辅助函数
    • 删除旧的 finalize_upload_sessionclear_relay_cleanup_handle 实现
  • 批量操作重构为批量 SQL
    • 新增 find_by_foldersfind_all_in_foldersfind_children_in_parentsfind_all_children_in_parents 批量查询方法
    • batch_delete:单事务校验+递归子树收集+批量软删除
    • batch_move:批量冲突/循环检测+批量更新,逐项错误上报
    • batch_copy:预分配唯一文件名,支持重复 ID 重命名
  • 文件夹树遍历改为迭代式
    • BFS 迭代替换递归异步逐条查询
    • build_trash_path_cache 批量预加载回收站父目录路径
    • WebDAV 路径解析改用递归 CTE 查询
  • 管理员路由中间件化
    • admin 路由改为嵌套 scope:JwtAuthRequireAdmin
    • 移除 handler 中 claims: web::ReqData<Claims> 参数和 require_admin() 辅助函数
  • 搜索多数据库兼容
    • name_search_condition 根据数据库后端选择查询策略
    • PostgreSQL 使用 ilike,MySQL 使用 MATCH AGAINST BOOLEAN MODE
    • 新增 escape_like_query 防止通配符注入
  • 管理后台 UI 重构
    • 存储策略对话框拆分为概览/连接/存储详情/上传规则四个分区,编辑模式右侧新增策略摘要卡片
    • 策略表格行改为整行可点击,移除独立编辑按钮
    • 用户表格行改为整行可点击
    • 创建向导新增步骤过渡动画
    • 驱动类型徽章颜色区分(S3=蓝、本地=绿)
    • 内置系统策略禁止删除,带 tooltip 提示
  • 认证服务调整
    • refresh_token 改为 async 函数
    • logout 从 Authorization header 提取 token 记录审计日志
    • 改密码返回新 access/refresh token(保持会话连续性)

Fixed

  • 修复 MySQL migration 中 allowed_typesoptions 列不兼容 DEFAULT 值语法的问题
  • 修复 raw SQL Expr::cust_with_values 替换为类型安全的 SeaORM 表达式(ref_count、storage_used、view_count)
  • 修复最大文件大小为 0 时显示 "0 bytes" 而非"无限制"的问题
  • 修复密码输入框浏览器自动填充问题(添加 autoComplete="new-password"
  • 修复访问密钥输入框浏览器自动填充问题(添加 autoComplete="off"

Breaking Changes

  • API: PUT /api/v1/auth/password 现在返回新的 access/refresh token(Cookie),保持当前会话连续性
  • JWT: 新 token 包含 session_version 字段;旧 token(无此字段)通过 #[serde(default)] 兼容
  • 行为: S3 上传统一使用 files/{upload_id} 路径格式
  • 行为: 本地存储默认 content_dedup: false,每次上传创建独立 blob(与之前隐式去重行为不同)
  • 内部: 所有服务必须从快照读取配置/策略,禁止直接调用 policy_repo/config_repo

统计数据

  • 113 files changed, 7,785 insertions(+), 1,815 deletions(-)
  • 13 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.12_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.12_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.12_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.12_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.12_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.11

29 Mar 23:50
v0.0.1-alpha.11
15830c8

Choose a tag to compare

Pre-release

Release Highlights

  • 管理后台总览面板 — 新增系统概览仪表板,展示用户统计、文件存储、每日活动趋势图表及最近审计事件
  • 流式中继上传策略 — 新增 S3 流式直传中继模式,无需本地临时文件即可直接转发到 S3 Multipart
  • 密码管理增强 — 支持用户自助修改密码,管理员可直接重置用户密码
  • 分享管理升级 — 支持编辑已有分享设置(密码/过期时间/下载次数),新增批量删除分享功能
  • 存储策略向导重构 — 分步创建向导优化体验,新增 S3/R2 端点自动归一化与验证
  • 搜索 API 正式启用 — 完整文件/文件夹搜索能力,支持多维度过滤与分页
  • API 响应类型安全化 — 全面替换内联 JSON,使用强类型响应结构

Added

  • 管理后台总览面板
    • 新增 GET /api/v1/admin/overview 端点,支持 days/timezone/event_limit 参数
    • 用户统计:总数、活跃、禁用数量
    • 文件统计:总文件数、存储字节数、blob 数量
    • 每日活动报表:登录、上传、分享、删除趋势
    • 前端 AdminOverviewPage 集成 Recharts 图表展示
  • 流式中继上传策略
    • 新增 S3UploadStrategy 枚举:ProxyTempfile / RelayStream / Presigned
    • 新增 upload_session_parts 表持久化记录 part 与 ETag
    • RelayStream 模式直接流式转发至 S3,无需本地缓冲
    • 上传进度查询支持 relay multipart 模式
  • 密码管理
    • 新增 PUT /api/v1/auth/password — 用户自助密码修改(需验证当前密码)
    • 新增 PUT /api/v1/admin/users/{id}/password — 管理员重置密码
    • 前端 SecuritySettingsView 安全设置页
    • 审计动作:UserChangePasswordAdminResetUserPassword
  • 分享管理增强
    • 新增 PATCH /api/v1/shares/{id} — 编辑分享设置
    • 新增 POST /api/v1/shares/batch-delete — 批量删除分享(最多 1000 个)
    • 分享密码语义:null = 保留,"" = 移除,"value" = 替换
    • 前端 EditShareDialog 编辑对话框
  • S3/R2 端点归一化
    • 自动从 R2 端点路径提取 bucket 名称
    • 拒绝不安全的 .r2.dev 公网 URL
    • 校验端点与 bucket 字段一致性
    • 强制要求 http://https:// 协议头
  • 搜索 API
    • GET /api/v1/search 正式启用,支持文件名模糊搜索
    • 过滤条件:类型、MIME、大小、日期、目录范围
    • 分页返回 FileSearchItem / FolderSearchItem
  • 分享页面增强
    • 分享页面显示所有者头像和展示名称
    • 单文件分享新增缩略图展示
    • 文件图标与颜色优化
  • 数据库维护索引
    • upload_sessions_status_expires_at — 清理查询优化
    • files_blob_id / file_versions_blob_id — 引用计数优化
    • file_blobs_storage_path — 孤儿 blob 检测
  • 后台维护服务
    • maintenance_service 定时任务:过期上传清理(每小时)、blob 对账(每 6 小时)
    • 原子 claim_blob_cleanup 机制防止并发竞争
  • 数据库查询指标
    • db_queries_total 计数器(按后端/类型/状态)
    • db_query_duration_seconds 延迟直方图

Changed

  • 存储策略对话框重构
    • 分步创建向导:选择类型 → 配置连接 → 确认规则
    • 编辑模式保留单页布局
    • 内置系统策略禁止删除
    • S3 参数变更检测与强制保存确认
  • API 响应强类型化
    • 替换内联 serde_json::json!() 为结构化响应类型
    • 审计详情结构化:AdminCreateUserDetailsBatchDeleteDetails
    • 前端类型按模块分组重组织
  • PATCH 语义修复
    • 引入 NullablePatch<T> 三态类型:Absent / Null / Value
    • PATCH /files/{id} 支持 folder_id: null 移动到根目录
    • PATCH /folders/{id} 支持 parent_id: null 移动到根目录
  • 分享过期状态码
    • ShareExpired 错误 HTTP 状态码从 410 改为 404
    • 错误响应新增 Cache-Control: no-store 防止 CDN 缓存
  • 数字类型转换工具化
    • 新增 utils::numbers 模块:bytes_to_usizei32_to_usizecalc_total_chunks
    • 消除跨层裸 as 强转,统一 checked conversion

Fixed

  • 修复 relay multipart 进度查询未读取数据库 parts 表的问题
  • 修复 blob 清理并发竞争条件
  • 修复分享下载链接缓存控制头缺失

Breaking Changes

  • API: ShareExpired 错误 HTTP 状态码从 410 改为 404
  • API: presigned_upload 布尔配置已迁移为 s3_upload_strategy 枚举(自动兼容)
  • API: PATCH 端点现在正确处理 null 语义(显式清空 vs 忽略字段)
  • Frontend: 存储策略配置项结构变更,自定义前端需适配新策略向导

统计数据

  • 179 files changed, 13,838 insertions(+), 1,756 deletions(-)
  • 14 commits

Download

Platform Architecture Download
Linux x86_64 aster_drive_v0.0.1-alpha.11_linux_x86_64
Linux ARM64 aster_drive_v0.0.1-alpha.11_linux_aarch64
Windows x86_64 aster_drive_v0.0.1-alpha.11_windows_x86_64.exe
macOS x86_64 aster_drive_v0.0.1-alpha.11_macos_x86_64
macOS ARM64 aster_drive_v0.0.1-alpha.11_macos_aarch64

Checksums: checksums.txt

AsterDrive v0.0.1-alpha.9

28 Mar 10:50
v0.0.1-alpha.9
4baddab

Choose a tag to compare

AsterDrive v0.0.1-alpha.10

28 Mar 22:22
v0.0.1-alpha.10

Choose a tag to compare

AsterDrive v0.0.1-alpha.8

26 Mar 20:38
v0.0.1-alpha.8
5d1b6b0

Choose a tag to compare

AsterDrive v0.0.1-alpha.7

26 Mar 11:11
v0.0.1-alpha.7
39f259f

Choose a tag to compare