- 需求:在端到端加密、分块存储、无中转服务的前提下提供“公开分享”。
- 文档预览统一交互:Markdown/HTML 可渲染与源码切换,代码/txt 仅源码高亮。
**范围**: Flutter 客户端 UI 层
**涉及文件**:
本次任务主要包含三个核心需求:
本次修复涉及多个我这边用的时候发现的问题:
我在排查时发现上传任务在暂停后直接从 UI 界面消失,无法在任何地方找到该任务。
> 时间:2026-01-07 > 模块:传输任务状态管理 > 核心文件:`client/lib/core/state/app_state.
**涉及功能**: 文件夹上传、文件元数据管理、前后端数据一致性
在桌面端文件管理界面中,我这边用的时候发现顶部工具栏的上传和新建按钮使用悬停菜单不够直观。
在桌面端文件管理界面中,我这边用的时候发现上传和新建功能的菜单层级较深,操作不够直观。
我希望让桌面端 UI 更加现代化和丝滑,同时修复页面切换时重新渲染和加载界面闪现的问题。
原有设计中,底部/侧边导航栏在切换页面时有复杂的动画效果: - 背景指示器有滑动动画(从一个位置滑到另一个位置) - 背景形状有 stretch 弹性效果(中间拉长再收缩) - 桌面端有 InkWell 涟漪反馈
2026-01-03
**范围**: 聊天菜单返回键、资源泄漏、文件名安全校验
本次开发解决了聊天界面三个关联问题:
我这边用的时候发现生成缩略图时,弹窗闪一下就消失,无法感知任务执行状态。
两个历史遗留问题需要解决:
由于生成缩略图需要耗费很多流量(图片需要下载原图生成,视频需要流媒体提取帧),不再默认自动重生成丢失的缩略图,改为可控的策略。
**涉及功能**: 图片预览缓存、视频播放器边距、聊天输入框、长按加速、锁定屏幕、App 重命名
**涉及功能**: 视频倍速/音轨/字幕/画面比例、图片滑动切换/双击缩放/旋转/信息面板
**涉及功能**: 聊天文件预览来源区分、附件保存到网盘、文本消息保存为文件
**涉及功能**: 视频卡片跑马灯、时区处理、深色模式主题适配
在聊天界面中,多媒体消息(图片、视频、文件)的UI需要进行优化,以提升整体体验和视觉一致性。
在聊天界面中,需要查看消息的具体发送时间,但又不想让时间戳一直显示在界面上影响视觉效果。
> 日期: 2024-12-28 > 状态: 已完成 > 涉及文件: chat_page.
**范围**: chat_page.dart, 后端 API, 新增日历组件
**范围**: chat_page.dart, send_page.dart, session_search_page.dart, file_search_page.dart
设置页面提供了四档字重选项(细、正常、中粗、粗),但除了"粗"之外,其他三档视觉上没有任何区别。
随着项目架构演进,部分早期设计的抽象层和事件机制变得冗余。
files_page.dart 作为应用的核心文件列表页面,代码量达到 3035 行,包含了大量的 UI 组件和业务逻辑。
完成状态管理重构后,我在实际使用中发现了多个 UI 细节问题,同时需要实现"选择网盘文件发送"功能,该功能与文件移动的选择器可以复用。
我在使用过程中发现多个状态相关的问题:
根据项目规范: > "导出文件的文件名必须使用随机生成的八位小写字母,禁止使用明文或可预测的文件名,以增强安全性。
2025-12-23
**时间**: 2025-12-22 20:57 **标签**: `架构优化` `代码简化` `重构`
实现 E2E 便携式加密文件的导入导出功能时,我们经历了一个"越做越复杂"的过程,最终意识到走入了过度设计的误区。
**功能**: .e2e 便携式加密文件的导入导出
原有设计中,S3 配置通过 Settings 页面的弹窗设置,存储在 SharedPreferences 中,只支持单个 S3 配置。使用上需要在不同 S3 存储之间切换时非常不便。本次重构实现:
在 [20251220-211500-video-thumbnail-upload-time-generation.md](./20251220-211500-video-thumbnail-upload-time-generation.md) 中,我们解决了上传时生成视频缩略图的问题。
E2EEPAN 是一个端到端加密的网盘应用,存储在 S3 上的都是密文。
游离文件(orphan files)是指存在于 S3 但不在元数据库中的文件。
系统中可能存在两类"游离文件"——S3 中存在但元数据库中没有记录的文件:
之前缩略图生成逻辑在前端实现: 1.
在缩略图文件夹中点击缩略图预览时,发现显示的是源文件而非缩略图本身,查看详情时信息也不准确。
日期:2025-12-19 主题:围绕“缩略图”系统文件夹,统一后端能力和前端行为,做到:
- 之前的 `/health` 同时承担“核心是否在线”和“S3 是否可用”的责任,逻辑偏重 S3,导致在 S3 很慢或超时时,客户端会把“核心还在工作但 S3 掉了”误判成“核心未启动”。
- 设置页 → 调试选项中,内核和 S3 状态偶尔出现矛盾: - 内核状态显示“未启动或不可用”。
`home_page.dart` 文件过于庞大(2000+ 行),包含了:
不同人对字体大小的偏好不同:
- 目标:为 Android 和 Windows 两端建立一套稳定、可重复的“构建 + 运行 + 调试”工具链,减少手工步骤,避免把调试兼容逻辑写死在业务代码里。
- 目标:把 Go 核心服务通过 gomobile 以 AAR 形式内嵌进 Android Flutter 客户端,让普通我在手机上开箱即用,而不是先手动起一个独立的 HTTP 核心。
- 目标:未来通过 gomobile / FFI 把 Go 核心嵌入到移动端/桌面应用中,减少“先启动核心进程,再连接 HTTP 服务”的操作成本。
- 项目已经是端到端加密: - 客户端在本地用 AES-256-GCM 加密后,才上传到 S3。
- 早期的 S3 配置是零散的: - 端点、AccessKey、SecretKey、Bucket 可能通过多个入口修改。
- 早期版本里存在一个 `UnlockPage`,用于输入“解锁密码/密钥”。
2025-12-14 HTTP 架构 vs NativeCore 抽象取舍记录
- 场景:在客户端中新建一个文本文件(例如 `note.txt`)时,文件列表中的图标是“文本文件图标”;但在文本编辑器里修改内容并保存后,图标会变成“普通文件图标”。
这次重构的起点是一个看起来很小、但暴露出架构问题的 bug:
我们讨论过一个方案: 把图片缩略图的生成从 Flutter/Dart 侧搬到 Go 后端,由 Go 负责解密原图并生成小图。
文件列表中展示图片略缩图时,遇到以下几个典型问题:
默认情况下,上传和下载任务都是按代码里固定的并发度执行,例如固定 3 个并发。
在实现文本文件编辑保存功能后,出现了两个严重问题:
最初文件列表右下角的上传按钮功能比较单一,只支持上传文件,且新建文本文件的交互是:
传输列表页支持按类型切换上传、下载、全部三个 Tab。