- 需求:在端到端加密、分块存储、无中转服务的前提下提供“公开分享”。
本次修复涉及多个我这边用的时候发现的问题:
我在排查时发现上传任务在暂停后直接从 UI 界面消失,无法在任何地方找到该任务。
> 时间:2026-01-07 > 模块:传输任务状态管理 > 核心文件:`client/lib/core/state/app_state.
项目原有的缩略图生成策略为**按需生成**: - 上传文件时,只上传原始文件 - 浏览文件列表时,前端请求缩略图 API - 后端检查缩略图是否存在,不存在则下载源文件、生成缩略图、保存后返回
**涉及模块**: 全局命名、Android 原生、Windows 托盘、Flutter 生命周期
**范围**: 聊天菜单返回键、资源泄漏、文件名安全校验
本次开发解决了聊天界面三个关联问题:
两个历史遗留问题需要解决:
由于生成缩略图需要耗费很多流量(图片需要下载原图生成,视频需要流媒体提取帧),不再默认自动重生成丢失的缩略图,改为可控的策略。
**涉及功能**: 聊天文件预览来源区分、附件保存到网盘、文本消息保存为文件
本笔记记录了搜索功能的完整开发过程,包括方案设计、技术选型、实现细节、架构决策等。
**状态**: 已完成
发送功能允许向指定会话发送文本消息和文件附件。
我在使用过程中发现多个状态相关的问题:
**时间**: 2025-12-22 20:57 **标签**: `架构优化` `代码简化` `重构`
实现 E2E 便携式加密文件的导入导出功能时,我们经历了一个"越做越复杂"的过程,最终意识到走入了过度设计的误区。
**功能**: .e2e 便携式加密文件的导入导出
我这边用的时候发现上传大文件后 App 数据显著增大(从几十 MB 增长到 1.45GB),重启 App 也无法释放。通过 ADB 诊断发现问题根源是 **file_picker 插件在 Android 上的临时文件复制机制**。
原有设计中,S3 配置通过 Settings 页面的弹窗设置,存储在 SharedPreferences 中,只支持单个 S3 配置。使用上需要在不同 S3 存储之间切换时非常不便。本次重构实现:
我在 Windows 桌面端遇到一个奇怪的现象:
E2EEPAN 是一个端到端加密的网盘应用,存储在 S3 上的都是密文。
E2EEPAN 是一个端到端加密的网盘应用,所有文件在上传前加密,存储在 S3 上的都是密文。
在 Android 设备上批量上传视频文件时,部分文件上传失败。
在解决批量上传产生游离文件的问题后(通过互斥锁保证原子性),发现新的性能问题:
我这边用的时候发现批量上传文件时会产生大量游离文件(orphan files)。
游离文件夹中可能存在一种特殊情况:文件以 `.enc` 结尾,但无法解密。
游离文件(orphan files)是指存在于 S3 但不在元数据库中的文件。
系统中可能存在两类"游离文件"——S3 中存在但元数据库中没有记录的文件:
之前缩略图生成逻辑在前端实现: 1.
日期:2025-12-19 主题:围绕“缩略图”系统文件夹,统一后端能力和前端行为,做到:
- 之前的 `/health` 同时承担“核心是否在线”和“S3 是否可用”的责任,逻辑偏重 S3,导致在 S3 很慢或超时时,客户端会把“核心还在工作但 S3 掉了”误判成“核心未启动”。
- 设置页 → 调试选项中,内核和 S3 状态偶尔出现矛盾: - 内核状态显示“未启动或不可用”。
1. **错误信息不友好**:
应用中使用 `ScaffoldMessenger.showSnackBar()` 显示提示消息,存在以下问题:
- 目标:为 Android 和 Windows 两端建立一套稳定、可重复的“构建 + 运行 + 调试”工具链,减少手工步骤,避免把调试兼容逻辑写死在业务代码里。
- 目标:把 Go 核心服务通过 gomobile 以 AAR 形式内嵌进 Android Flutter 客户端,让普通我在手机上开箱即用,而不是先手动起一个独立的 HTTP 核心。
- 目标:未来通过 gomobile / FFI 把 Go 核心嵌入到移动端/桌面应用中,减少“先启动核心进程,再连接 HTTP 服务”的操作成本。
- Go 核心通过命令行参数接收 S3 配置: - 入口:`core/cmd/server/main.go:11-33` - 相关 flag: - `-s3-endpoint`:S3 端点,例如 `127.0.0.1:9000`。
- 项目已经是端到端加密: - 客户端在本地用 AES-256-GCM 加密后,才上传到 S3。
- 早期的 S3 配置是零散的: - 端点、AccessKey、SecretKey、Bucket 可能通过多个入口修改。
- 早期版本里存在一个 `UnlockPage`,用于输入“解锁密码/密钥”。
- 场景:在客户端中新建一个文本文件(例如 `note.txt`)时,文件列表中的图标是“文本文件图标”;但在文本编辑器里修改内容并保存后,图标会变成“普通文件图标”。
这次重构的起点是一个看起来很小、但暴露出架构问题的 bug:
在实现文本文件编辑保存功能后,出现了两个严重问题: