Releases: wu4339/fn_quick_folder
Releases · wu4339/fn_quick_folder
Release list
fn_quick_folder 1.5.215
fn_quick_folder 1.5.215
更新内容
- 反馈:v1.5.214 后缩略图仍慢,且进入时间线的
apiMs由 300ms 涨到 2852ms、全量渲染由 3926ms 涨到 17167ms。 - 根因:
ensureThumb的缓存命中分支无条件调用queueTinyBackfill(v1.5.196 起),不分请求优先级。而进入视图时会发一次POST /api/thumb/warm,单次最多投 4000 项 —— 存量库(微图 v1.5.196 才引入)几乎全无微图,于是每进一次时间线就往单并发补缺队列压进数千个 ffmpeg 派生任务,连续数分钟不停 spawn,把 CPU/磁盘喂满;此刻用户真正在看的那十几张图反而要排队,期间服务端事件循环也被statSync与进程创建拖住,表现就是接口变慢、整页要十几秒才铺满。 - 修复:缓存命中分支仅在
priority === 'hot'(用户此刻真要看的图)时补微图,预热(冷)不再触发整库派生;微图本就只是「正在看」时的模糊占位,后续按需tiny=1请求与真看到的大图生成都会在需要时补上,冷路径不必抢资源。 - 诊断(为下轮定位,不改行为):
/api/thumb增加响应头X-QF-Ms(服务端首字节前耗时);前端「加载耗时」日志相应拆成srv(服务端)/net(ms - srv,传输+解码+主线程排队)/bytes(缩略图体积)。据此可直接判定剩余慢是服务端排队还是链路/浏览器主线程,并用bytes换算实际吞吐。 - 版本 1.5.214 -> 1.5.215(f131 -> f132)
📦 修改文件(相对 v1.5.214)
CHANGELOG.md | 7 +++++++
app/server/public/app.js | 27 +++++++++++++++++----------
app/server/server.js | 15 ++++++++++++---
manifest | 2 +-
4 files changed, 37 insertions(+), 14 deletions(-)
fn_quick_folder 1.5.214
fn_quick_folder 1.5.214
更新内容
- 反馈:时间线文件夹缩略图加载很慢,像几个几个往外蹦;局域网下实测吞吐只有几百 KB/s。
- 根因(用户导出日志实锤):
THUMB条目全部first:false(服务端命中缓存),却耗时 400~2400ms —— 说明慢的不是生成,而是请求在排队。排队源头是微图(tiny=1)链路:每张卡先发一个微图请求,而微图是 v1.5.196 才引入的、存量库几乎全无缓存,于是每张卡都命中「大图已缓存 → 用 ffmpeg 现场派生微图」这一支。该派生①不限并发、②绕过thumbGate并发池,6 条浏览器连接(同域 HTTP/1.1 上限)被 6 个派生 ffmpeg 各占数百毫秒,CPU/磁盘被顶满;紧随其后的大图请求明明命中缓存也只能干等,表现为「缓存命中却要等几百毫秒、几个几个地出图」。 - 修复(
/api/thumb?tiny=1请求路径彻底去 ffmpeg):①微图缓存命中 → 秒回;②微图缺失 → 立即 204,不再现场派生(前端本就把微图当可选占位,拿不到就静默等大图);③大图已缓存时,派生改由单并发后台补缺队列queueTinyBackfill串行推进(每张 ~30ms),用户下次进视图即「先糊后清」。请求路径上不再出现任何 ffmpeg 进程。 - 版本 1.5.213 -> 1.5.214(纯服务端改动,前端构建号维持 f131)
📦 修改文件(相对 v1.5.213)
CHANGELOG.md | 6 ++++++
app/server/server.js | 21 +++++++++++++--------
manifest | 2 +-
3 files changed, 20 insertions(+), 9 deletions(-)
fn_quick_folder 1.5.213
fn_quick_folder 1.5.213
更新内容
- 反馈:进入多选时,在显示设置前面出现全选选项。
- 实现:
#全选按钮从「显示设置」弹窗的「批量选择」一行移到顶栏第一行,位置紧挨在「显示设置」宫格按钮之前,进入多选(长按文件)时才出现、退出即收起;已全选时文案变为「取消全选」,再次点击恢复。样式用强调色(橙色)与显示设置按钮区分,标识「正在多选」状态。事件绑定、文案与显隐逻辑沿用原有 id,行为不变。 - 版本 1.5.212 -> 1.5.213(f130 -> f131)
📦 修改文件(相对 v1.5.212)
CHANGELOG.md | 5 +++++
app/server/public/app.js | 2 +-
app/server/public/index.html | 10 +++++-----
app/server/public/styles.css | 3 +++
manifest | 2 +-
5 files changed, 15 insertions(+), 7 deletions(-)
fn_quick_folder 1.5.212
fn_quick_folder 1.5.212
更新内容
- 反馈:加密、移动、归档也要和删除一样的效果(大列表里操作后不跳进度、整屏不重渲染)。
- 实现:抽出统一的「就地摘卡」收尾
seamlessRemoveEntries,删除 / 加密 / 移动 / 归档四处共用 —— 操作成功后直接把被移走的卡片从 DOM 摘除并同步内存数据,滚动位置与其余卡片纹丝不动。加密、移动、归档原先是navigate整屏重渲染,现在与删除完全一致。 - 安全边界(任一不满足即退回整体刷新,保证界面与磁盘一致):
- 服务端报告的成功项数必须等于本次选中项数 —— 有失败/被跳过的项时,那些文件其实还在界面上,不摘卡;
- 目标目录就是文件自己所在的目录(原地改名,移动/归档到本目录)时文件并未离开当前列表,不摘卡;
- 被移走的项在当前 DOM 里找不到对应卡片(虚拟滚动窗口外、分帧尚未补全)或删空整个视图时,不摘卡。
- 版本 1.5.211 -> 1.5.212(f129 -> f130)
📦 修改文件(相对 v1.5.211)
CHANGELOG.md | 9 +++++++++
app/server/public/app.js | 45 ++++++++++++++++++++++++++++++++++-----------
manifest | 2 +-
3 files changed, 44 insertions(+), 12 deletions(-)
fn_quick_folder 1.5.211
fn_quick_folder 1.5.211
更新内容
- 需求 1:显示设置里增加「缩略图」圆角 / 直角选项。
- 实现:显示设置弹窗新增「缩略图」一行(圆角 / 直角),偏好存入 localStorage(
qf.display.thumbCorner,默认圆角,旧外观不变)。纯 CSS 类thumb-square切换,不重建卡片、不影响滚动位置:宫格/竖幅下去掉媒体卡片与缩略图的圆角;列表模式下仅方化小缩略图,列表行本身保持圆角。 - 需求 2:时间线 8k+ 文件时把进度拖到后面删除一个文件,显示会先跳进度再弹回原位,期望无感删除。
- 根因:删除走
navigate整屏重渲染,重建瞬间内容被清空、滚动高度塌陷,浏览器把 scrollTop 钳回低位(进度条先跳),随后分帧补全才逐步弹回原位(再跳回)——即 v1.5.206 的「持续保持滚动」只解决了「跳回顶部」,未解决大列表短时间内的进度跳动。 - 修复:改为就地摘卡——被删卡片直接在 DOM 中移除、同步剔除内存数据(
_curData.items/grid._qfItems),滚动位置与其余卡片纹丝不动;顺带收起被删空的时间线日/月标题与标签空分组。仅当每个被删项都能在 DOM 里找到卡片且未删空视图时才就地处理,其余情况(虚拟滚动窗口外、分帧未补全、删空)自动退回整体刷新,保证数据与界面一致。 - 版本 1.5.210 -> 1.5.211(f128 -> f129)
📦 修改文件(相对 v1.5.210)
CHANGELOG.md | 8 ++++
app/server/public/app.js | 89 ++++++++++++++++++++++++++++++++++++++++++--
app/server/public/index.html | 10 +++++
app/server/public/styles.css | 6 +++
manifest | 2 +-
5 files changed, 111 insertions(+), 4 deletions(-)
fn_quick_folder 1.5.210
fn_quick_folder 1.5.210
更新内容
- 问题:v1.5.182 向 .gitignore 追加忽略
.thumb/时漏了换行,整行被写成了.DS_Store.thumb/—— 两条规则粘连后同时失效:.DS_Store不再被忽略,.thumb/缩略图缓存也从未真正被忽略。 - 影响:缩略图属于可由源文件重建的派生产物,一旦被
git add -A带进仓库会持续撑大体积且难以清理。本次排查中本地跑预览时,示例库下真的生成了app/server/data/sample/Camera/DCIM/2024/.thumb/,并被 git 列为未跟踪文件,实测确认该忽略条目未生效。 - 修复:将该行拆成
.DS_Store与.thumb/两条独立规则,恢复其原本意图(缩略图缓存与 macOS 元数据文件各归各的忽略项)。 - 说明:仅调整忽略规则,不含任何应用代码改动,前端构建号维持 f128;v1.5.182 清理过的示例缩略图本次无需重复删除。
- 版本 1.5.209 -> 1.5.210
📦 修改文件(相对 v1.5.209)
.gitignore | 3 ++-
CHANGELOG.md | 7 +++++++
manifest | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)
fn_quick_folder 1.5.209
fn_quick_folder 1.5.209
更新内容
- 反馈:①缩略图的占位图大小要和图片一样;②占位图里的图标没有居中显示。
- 根因(一个老 bug 引发两个现象):页面级「加载中」指示的通用规则
.loading { padding: 40px }会同时命中缩略图加载态.thumb.loading(选择器泄漏)。box-sizing: border-box下上下共 80px 内边距:- 把窄卡片里的占位容器撑到最小 80px 宽,超出卡片被裁剪 —— 占位图与加载后的图片区域大小不一致(6 列时卡片仅 ~56px,溢出 24px);
- 40px 上内边距把占位图标(🖼️)挤出中心:6 列实测偏右 12px、3 列偏下 16px;图片加载完成
.loading移除、内边距消失,区域才恢复正常 —— 与「占位时不对、加载完就对了」的现象完全吻合。
- 修复:①
.thumb.loading显式padding: 0,占位容器与图片区域始终同尺寸;②占位图标line-height: 1收紧行盒,消除 emoji 基线排版带来的 3~4px 光学偏移,图标各模式下残差 ≤2px(像素级扫描实测:6 列 / 3 列 / 列表 全部居中)。 - 版本 1.5.208 -> 1.5.209(f127 -> f128)
📦 修改文件(相对 v1.5.208)
CHANGELOG.md | 8 ++++++++
app/server/public/app.js | 2 +-
app/server/public/styles.css | 11 +++++++++--
manifest | 2 +-
4 files changed, 19 insertions(+), 4 deletions(-)
fn_quick_folder 1.5.208
fn_quick_folder 1.5.208
更新内容
- 反馈:4/5/6 列相册模式下占位图标应该缩小才对,加载动画效果保留(v1.5.207 把 26px 放大到 38px 方向错了)。
- 原因:每行个数越多卡片越小(6 列时卡片仅 50~60px),38px 占位图标几乎撑满整卡,观感失衡;正确的做法是图标随卡片同步缩小。
- 修复:相册模式(4/5/6 列)加载占位图标 26px → 20px;视频播放角标 28px → 18px 同步等比缩小(内边距、三角比例随动)。
- 加载中的呼吸动画效果保持不变(动画规则本身未改动,仅尺寸调整);≤3 列常规模式维持原 26px/28px。
- 版本 1.5.207 -> 1.5.208(f126 -> f127)
📦 修改文件(相对 v1.5.207)
CHANGELOG.md | 7 +++++++
app/server/public/app.js | 2 +-
app/server/public/styles.css | 11 +++++++++--
manifest | 2 +-
4 files changed, 18 insertions(+), 4 deletions(-)
fn_quick_folder 1.5.207
fn_quick_folder 1.5.207
更新内容
- 反馈 1:选中文件加密完成后闪一下界面,闪完后被加密文件的缩略图还在。
- 根因:加密/解密/彻底删除密文/自动补加密这四个加密空间写操作,完成后没有失效平铺列表缓存(内存缓存 + 磁盘快照) —— 整屏刷新仍拿到旧列表,被移走的文件自然还挂在界面上(移动/删除/重命名等其它操作本就有失效逻辑,唯独加密空间这批遗漏)。
- 修复:四个操作完成后统一整库失效平铺缓存,操作后刷新立即反映最新列表;「闪一下」也随之消失 —— 刷新返回的是变化后的正确数据,而非原地踏步的旧内容。
- 反馈 2:每行个数 5/6 时,缩略图加载动画(占位图标)与 1:1 大卡片大小不匹配。
- 修复:相册模式(4/5/6 列)加载占位图标由 26px 放大到 38px,呼吸动画同步;≤3 列常规模式保持原大小。
- 版本 1.5.206 -> 1.5.207(f125 -> f126)
📦 修改文件(相对 v1.5.206)
CHANGELOG.md | 8 ++++++++
app/server/public/styles.css | 2 ++
app/server/server.js | 6 ++++++
manifest | 2 +-
4 files changed, 17 insertions(+), 1 deletion(-)
fn_quick_folder 1.5.206
fn_quick_folder 1.5.206
更新内容
- 反馈:时间线文件夹内对文件操作(收藏、加密、删除、添加标签等)后,浏览进度跳回文件夹顶部。
- 根因:这些操作完成后都会整屏刷新当前列表(navigate 同层级重入),重建内容时高度先塌陷;旧的恢复逻辑只在首屏 96 卡渲完后一次性回设滚动位置,时间线几千项分帧渲染数秒,期间内容高度不足,滚动位置被浏览器钳回低位 —— 表现就是「跳到顶部」。
- 修复:新增「渲染期间持续保持滚动」机制 —— 每帧把滚动位置回设到目标值,内容渐增时逐步到位,分帧渲染完成后稳定;用户一旦主动滚动(滚轮/触摸/键盘/拖动滚动条)立即让位,绝不劫持操作。
- 覆盖范围:收藏、加密、解密、删除、恢复、归档/移动、添加/清除标签、预览内操作 —— 所有走整屏刷新的路径;排序/布局切换的就地重排同样保持进度。
- 顺带修复:时间线视图内切换布局会整屏丢失「今天/x月x日」日期分组标题(就地重排漏传时间线参数),现已与正常渲染路径一致。
- 版本 1.5.205 -> 1.5.206(f124 -> f125)
📦 修改文件(相对 v1.5.205)
CHANGELOG.md | 8 ++++++++
app/server/public/app.js | 47 ++++++++++++++++++++++++++++++++++++++++++++---
manifest | 2 +-
3 files changed, 53 insertions(+), 4 deletions(-)