Skip to content

Releases: wu4339/fn_quick_folder

fn_quick_folder 1.5.215

Choose a tag to compare

@github-actions github-actions released this 26 Sep 03:55

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 23:54

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 14:34

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 14:02

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 13:08

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 11:54

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

Choose a tag to compare

@wu4339 wu4339 released this 25 Sep 10:12

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 08:44

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 08:27

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

Choose a tag to compare

@github-actions github-actions released this 25 Sep 08:02

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(-)