- 需求:在端到端加密、分块存储、无中转服务的前提下提供“公开分享”。
实现系统分享接收,把分享的文件丢进上传队列;顺手清掉一堆废弃/重复代码。
2026-01-12
**范围**: Flutter 客户端 UI 层
- **品牌残留**:旧代号 “E2E Pan/E2EPan” 仍存在于核心启动 banner、Flutter 入口类名、默认下载目录命名,导致对外展示不一致。
本次任务主要包含三个核心需求:
我在排查时发现上传任务在暂停后直接从 UI 界面消失,无法在任何地方找到该任务。
> 时间:2026-01-07 > 模块:传输任务状态管理 > 核心文件:`client/lib/core/state/app_state.
**涉及功能**: 文件夹上传、文件元数据管理、前后端数据一致性
在桌面端文件管理界面中,我这边用的时候发现顶部工具栏的上传和新建按钮使用悬停菜单不够直观。
在桌面端文件管理界面中,我这边用的时候发现上传和新建功能的菜单层级较深,操作不够直观。
2026-01-03
**涉及功能**: 聊天文件预览来源区分、附件保存到网盘、文本消息保存为文件
> 日期: 2024-12-28 > 状态: 已完成 > 涉及文件: chat_page.
在聊天界面上传文件时,如果我在上传完成前退出聊天页面,上传任务会直接终止失败。
设置页面提供了四档字重选项(细、正常、中粗、粗),但除了"粗"之外,其他三档视觉上没有任何区别。
发送功能允许向指定会话发送文本消息和文件附件。
完成状态管理重构后,我在实际使用中发现了多个 UI 细节问题,同时需要实现"选择网盘文件发送"功能,该功能与文件移动的选择器可以复用。
实现 E2E 便携式加密文件的导入导出功能时,我们经历了一个"越做越复杂"的过程,最终意识到走入了过度设计的误区。
原有设计中,S3 配置通过 Settings 页面的弹窗设置,存储在 SharedPreferences 中,只支持单个 S3 配置。使用上需要在不同 S3 存储之间切换时非常不便。本次重构实现:
E2EEPAN 是一个端到端加密的网盘应用,所有文件在上传前加密,存储在 S3 上的都是密文。
在文件列表中显示视频缩略图,提升使用体验。
在解决批量上传产生游离文件的问题后(通过互斥锁保证原子性),发现新的性能问题:
我这边用的时候发现批量上传文件时会产生大量游离文件(orphan files)。
游离文件(orphan files)是指存在于 S3 但不在元数据库中的文件。
系统中可能存在两类"游离文件"——S3 中存在但元数据库中没有记录的文件:
日期:2025-12-19 主题:围绕“缩略图”系统文件夹,统一后端能力和前端行为,做到:
1. **错误信息不友好**:
`home_page.dart` 文件过于庞大(2000+ 行),包含了:
应用中使用 `ScaffoldMessenger.showSnackBar()` 显示提示消息,存在以下问题:
- 项目已经是端到端加密: - 客户端在本地用 AES-256-GCM 加密后,才上传到 S3。
- 场景:在客户端中新建一个文本文件(例如 `note.txt`)时,文件列表中的图标是“文本文件图标”;但在文本编辑器里修改内容并保存后,图标会变成“普通文件图标”。
这次重构的起点是一个看起来很小、但暴露出架构问题的 bug:
我们讨论过一个方案: 把图片缩略图的生成从 Flutter/Dart 侧搬到 Go 后端,由 Go 负责解密原图并生成小图。
文件列表中展示图片略缩图时,遇到以下几个典型问题:
默认情况下,上传和下载任务都是按代码里固定的并发度执行,例如固定 3 个并发。
最初文件列表右下角的上传按钮功能比较单一,只支持上传文件,且新建文本文件的交互是:
传输列表页支持按类型切换上传、下载、全部三个 Tab。