Releases: AptS-1547/AsterDrive
Releases · AptS-1547/AsterDrive
AsterDrive v0.0.1-alpha.16
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/storageSSE 端点,含心跳保活(30s)与消息积压降级- 前端
useStorageChangeEventshook:订阅实时变更并自动刷新当前目录 - 用户偏好
storage_event_stream_enabled字段,可在设置中开关
- 站点品牌配置
- 新增
branding_title、branding_description、branding_favicon_url配置项 - 新增
branding_wordmark_dark_url、branding_wordmark_light_urlLogo 配置 - 前端启动时通过
/api/v1/public/branding拉取品牌配置 - 后端渲染
index.html时注入品牌占位符,登录前即展示自定义品牌
- 新增
- 前端增强
usePageTitlehook:所有页面动态标题,格式页面名 · 应用名AdminSiteUrlMismatchPrompt独立组件:站点 URL 不匹配检测与更新- CORS 新增
cors_enabled独立开关配置
Changed
- 认证流程重构
/auth/check不再接受identifier参数,改为返回公开认证状态(注册开关、初始化状态等)- 前端登录页改为页面初始化时一次性拉取认证状态,移除输入框防抖检查逻辑
- 统一响应时间下限防止用户枚举攻击
- 头像存储迁移
- 从对象存储策略迁移到本地文件系统,新增
avatar_dir配置项 - 删除时递归清理空目录
- 兼容旧
avatar_policy_id记录,平滑迁移
- 从对象存储策略迁移到本地文件系统,新增
- 管理后台设置页
- 默认路由从
/admin/settings/auth改为/admin/settings/general - 新增邮件模板编辑分区
- 默认路由从
- CI 改进
- 替换
actions/cache为Swatinem/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
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-link、GET /api/v1/team-space/files/{id}/direct-link - 公开下载端点:
GET /d/{token}/{filename},支持?download=1强制下载 - 独立速率限制配置
- 新增
- 运行时认证配置
- 新增
auth_runtime.rs:从数据库读取auth_cookie_secure、auth_access_token_ttl_secs、auth_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 参数同步、每页条目数选择、筛选激活指示器
- Select 新增
Changed
- 认证服务重构
issue_tokens_for_user改为从运行时配置获取 Token TTL 和 Cookie 策略- 分享验证 Cookie 增加安全标志和路径隔离(
/api/v1/s/{token})
- 管理设置页面
- 重构为分类标签页导航(桌面端侧边栏,移动端下拉)
- 新增批量保存机制(草稿值管理)
- 敏感值显示掩码(
********),支持默认值展示与一键恢复
- 对话框响应式布局
AdminTeamDetailDialog/TeamManageDialog/UserDetailDialog全面适配移动端- 两栏布局重构为 flex + overflow-hidden,移动端自适应单列
- 新增滚动位置记忆和标签切换动画方向检测
- Select 组件
- 移除硬编码高度,改用变体系统
- 管理页面统一使用
widthprop
Fixed
- Cookie 安全策略
- 修复纯 HTTP 环境首次部署无法登录的问题(
bootstrap_insecure_cookies引导配置)
- 修复纯 HTTP 环境首次部署无法登录的问题(
- 审计日志页面
- 修复筛选和分页状态无法保存或通过 URL 分享的问题
- 移动端布局
- 修复管理对话框在移动端滚动行为混乱的问题
- 修复用户详情对话框底部按钮被遮挡的问题
Breaking Changes
- 配置文件:
[auth]段移除access_token_ttl_secs、refresh_token_ttl_secs、cookie_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
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运行时配置支持- 基于
httpcrate 的手动 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
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_group、resolve_user_policy_for_size等方法- 启动时
ensure_policy_groups_seeded:系统默认策略自动包装为默认策略组,旧user_storage_policies记录自动迁移 - 上传时按文件大小在策略组中匹配最合适的策略
- 审计日志新增 4 种 action:
AdminCreatePolicyGroup、AdminUpdatePolicyGroup、AdminDeletePolicyGroup、AdminMigratePolicyGroupUsers - 前端
AdminPolicyGroupsPage完整策略组管理页面(1439 行) UserDetailDialog重构:存储策略分配改为单策略组选择- 中英文 i18n 各增加约 40 条策略组翻译
- Access Token 自动续期
- 后端 auth 响应体返回
expires_in和access_token_expires_at authStore新增expiresAt状态、sessionStorage 持久化、refreshToken()去重复用startAutoRefresh()/stopAutoRefresh():基于 setTimeout 提前 2 分钟自动续期- HTTP 拦截器 refresh 队列从数组改为
refreshPromise复用
- 后端 auth 响应体返回
- Prism 代码编辑器
- 新增
CodePreviewEditor替代 MonacoCodeEditor,基于 prism-react-renderer - 按需动态加载 40+ 种语言的 Prism 组件
- 新增
prismClassNames模块解决 Scoped CSS className 冲突 - 新增
toml和groovy语言映射
- 新增
- 前端基础设施
lib/pagination.ts:通用 offset 分页参数解析与构建lib/queryParams.ts:通用 query string 构建工具components/files/shareDialogShared.ts:分享对话框共享逻辑(过期计算、下载次数归一化)api-docs-macrosworkspace crate:自定义 proc-macro,debug+openapi feature 下展开为#[utoipa::path]
- 测试覆盖
- 新增
AdminPolicyGroupsPage.test.tsx(873 行) - 新增
policyGroupDialogShared.test.ts、storagePolicyDialogShared.test.ts、shareDialogShared.test.ts - 新增
prismClassNames.test.ts、file-capabilities.test.ts - 新增
useApiList.test.tsx、pagination.test.ts、queryParams.test.ts - 新增
authStore.edge.test.ts
- 新增
Changed
- OpenAPI 可选编译
utoipa/utoipa-swagger-ui改为optional = true,新增openapifeature- 全项目
#[derive(ToSchema)]/#[derive(IntoParams)]改为#[cfg_attr]条件编译 #[utoipa::path]替换为#[api_docs_macros::path]openapi模块整体条件编译
- 管理后台页面重构
AdminUsersPage大幅重构,使用useApiListhook + URL search params 管理AdminPoliciesPage使用新分页工具函数AdminAuditPage从手动useCallback + useEffect改为useApiListhookadminService.ts全面使用withQuery()构建 query string,参数改用生成的请求类型
- 上传策略解析改为基于文件大小路由
upload_service调用新的resolve_policy_for_size替代原resolve_policy
- 用户创建流程简化
create_user_with_role不再创建user_storage_policies行,改为设置policy_group_id
useApiListhook 增强- 新增
requestIdRef竞态保护,快速切换 filter/offset 时丢弃过期响应 - 新增
setTotal返回值
- 新增
- 移除 relay 上传模式
- 删除
relay_field_to_s3、create_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/login、POST /auth/refresh、PUT /auth/password响应体从{ data: null }变为{ data: { expires_in } } - API:
GET /auth/me响应新增access_token_expires_at和policy_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
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结构体携带status、role、session_version- 新增
POST /api/v1/admin/users/{id}/sessions/revoke— 管理员吊销用户全部会话 - 改密码/管理员重置密码自动递增
session_version,当前会话返回新 token 保持在线 - JWT Claims 嵌入
session_version,认证中间件校验一致性 - WebDAV Bearer 认证升级为
authenticate_access_token,拒绝 refresh token - 新增审计动作:
AdminRevokeUserSessions、UserLogout - 前端用户详情对话框新增"吊销全部会话"按钮
- 内存运行时配置
RuntimeConfig结构体:reload、apply、remove+ 类型化 getter(get_bool、get_i64、get_u64等)PolicySnapshot结构体:reload、get_policy、resolve_default_policy_id、set_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-versionmeta 标签,构建时写入版本号- 中英文 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_blob、finalize_upload_session_blob、finalize_upload_session_file公共原语 - 提取
complete_s3_multipart_upload_session统一 multipart 完成逻辑 - 提取
ensure_uploaded_s3_object_size、transition_upload_session_to_assembling辅助函数 - 删除旧的
finalize_upload_session和clear_relay_cleanup_handle实现
- 提取
- 批量操作重构为批量 SQL
- 新增
find_by_folders、find_all_in_folders、find_children_in_parents、find_all_children_in_parents批量查询方法 batch_delete:单事务校验+递归子树收集+批量软删除batch_move:批量冲突/循环检测+批量更新,逐项错误上报batch_copy:预分配唯一文件名,支持重复 ID 重命名
- 新增
- 文件夹树遍历改为迭代式
- BFS 迭代替换递归异步逐条查询
build_trash_path_cache批量预加载回收站父目录路径- WebDAV 路径解析改用递归 CTE 查询
- 管理员路由中间件化
- admin 路由改为嵌套 scope:
JwtAuth→RequireAdmin - 移除 handler 中
claims: web::ReqData<Claims>参数和require_admin()辅助函数
- admin 路由改为嵌套 scope:
- 搜索多数据库兼容
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_types和options列不兼容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
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安全设置页 - 审计动作:
UserChangePassword、AdminResetUserPassword
- 新增
- 分享管理增强
- 新增
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!()为结构化响应类型 - 审计详情结构化:
AdminCreateUserDetails、BatchDeleteDetails等 - 前端类型按模块分组重组织
- 替换内联
- 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_usize、i32_to_usize、calc_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
Download
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | aster_drive_v0.0.1-alpha.9_linux_x86_64 |
| Linux | ARM64 | aster_drive_v0.0.1-alpha.9_linux_aarch64 |
| Windows | x86_64 | aster_drive_v0.0.1-alpha.9_windows_x86_64.exe |
| macOS | x86_64 | aster_drive_v0.0.1-alpha.9_macos_x86_64 |
| macOS | ARM64 | aster_drive_v0.0.1-alpha.9_macos_aarch64 |
Checksums: checksums.txt
AsterDrive v0.0.1-alpha.10
Download
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | aster_drive_v0.0.1-alpha.10_linux_x86_64 |
| Linux | ARM64 | aster_drive_v0.0.1-alpha.10_linux_aarch64 |
| Windows | x86_64 | aster_drive_v0.0.1-alpha.10_windows_x86_64.exe |
| macOS | x86_64 | aster_drive_v0.0.1-alpha.10_macos_x86_64 |
| macOS | ARM64 | aster_drive_v0.0.1-alpha.10_macos_aarch64 |
Checksums: checksums.txt
AsterDrive v0.0.1-alpha.8
Download
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | aster_drive_v0.0.1-alpha.8_linux_x86_64 |
| Linux | ARM64 | aster_drive_v0.0.1-alpha.8_linux_aarch64 |
| Windows | x86_64 | aster_drive_v0.0.1-alpha.8_windows_x86_64.exe |
| macOS | x86_64 | aster_drive_v0.0.1-alpha.8_macos_x86_64 |
| macOS | ARM64 | aster_drive_v0.0.1-alpha.8_macos_aarch64 |
Checksums: checksums.txt
AsterDrive v0.0.1-alpha.7
Download
| Platform | Architecture | Download |
|---|---|---|
| Linux | x86_64 | aster_drive_v0.0.1-alpha.7_linux_x86_64 |
| Linux | ARM64 | aster_drive_v0.0.1-alpha.7_linux_aarch64 |
| Windows | x86_64 | aster_drive_v0.0.1-alpha.7_windows_x86_64.exe |
| macOS | x86_64 | aster_drive_v0.0.1-alpha.7_macos_x86_64 |
| macOS | ARM64 | aster_drive_v0.0.1-alpha.7_macos_aarch64 |
Checksums: checksums.txt