Skip to content

Releases: lbjxr/CF-Navs

v0.9.3

Choose a tag to compare

@lbjxr lbjxr released this 03 Nov 13:19

修复浏览器书签同步扩展悬窗只能通过图标收起的问题。本次主项目版本为 0.9.3,浏览器扩展版本为 0.3.2。

  • 点击悬窗外的网页区域即可收起,包括其他网页内嵌页面和动态创建的 srcdoc 页面。
  • 面板内输入、分类选择、图标开关和网页原有点击操作保持可用;收起时保留当前面板内容与待同步记录。
  • 补充中英文使用说明及扩展更新步骤。

浏览器插件下载:cf-navs-browser-extension-v0.3.2.zip(SHA-256 校验文件)。解压后,在浏览器中选择“加载已解压的扩展程序”,选择 cf-navs-browser-extension-v0.3.2/browser-extension/ 目录。包内包含插件所需文件、LICENSE 和 NOTICE。

更新扩展:更新原扩展目录,在 chrome://extensions 或 edge://extensions 中重新加载扩展,再刷新已经打开的网页。仅更新导航站点不会更新本机扩展。重新加载或刷新前请先处理未提交的面板编辑;已保存的待同步记录会保留。

验证:lint、类型检查、构建和 2819 项测试通过;16 项隔离 Chrome 回归覆盖外部点击、内嵌页面、输入与分类选择、待同步记录保留、触摸、三档窗口宽度和错误状态。非预期浏览器错误为 0,测试资源已清理。Edge 尚未单独实测。

CI、CodeQL 和 Cloudflare Workers Builds 已通过。部署后在生产入口完成匿名页面渲染、扩展打开、外部点击收起和图标重开的只读检查,未发现页面异常或本站失败请求;未执行管理员流程的全量生产验收。

自托管镜像:ghcr.io/lbjxr/cf-navs:0.9.3 与 latest 已发布,包含 linux/amd64 和 linux/arm64 架构。

完整变更:v0.9.2...v0.9.3

v0.9.2

Choose a tag to compare

@lbjxr lbjxr released this 01 Nov 14:53

浏览器收藏同步与扩展体验更新。

  • 新增待同步收藏列表,支持勾选部分同步、保留未勾选记录,以及手动删除后不再重新拉取。
  • 动态读取浏览器收藏状态,标记已删除或内容变化的待同步记录。
  • 修复确认页稍后处理无法返回首页的问题。
  • 扩展首页已连接导航页时默认收起登录信息,可展开修改;标题下合并同步方式、浏览器和会话说明。
  • 同步中英文文档与项目版本号,项目版本为 0.9.2,扩展版本为 0.3.1。

CF-Navs v0.9.1

Choose a tag to compare

@lbjxr lbjxr released this 31 Oct 11:59

CF-Navs v0.9.1

重点更新

  • 书签卡片悬停稳定性:详情与极简卡片不再通过 hover / 键盘聚焦位移改变链接命中区域,鼠标在卡片底边微移时不再反复触发悬停、提示层闪动和毛玻璃重绘。毛玻璃、悬停描边、阴影与键盘焦点环全部保留。
  • 书签透明圆角的残余微闪:卡片外框不再因普通 hover / focus-within 无条件提高叠放层级,避免鼠标仅经过圆角透明区时改变毛玻璃合成。仅在支持悬停且提示层实际显示时才提高层级,排序态不提升,右键菜单保留更高优先级。
  • 新增书签悬停 Chrome 回归:基于真实首页构建的隔离浏览器回归,覆盖边缘命中、上方卡片像素稳定、明暗主题、触摸和减少动态效果,共 16 组场景。
  • 测试并发上限:Vitest 默认 worker 数限制在 2~4,避免多核机器上模块冷加载与 jsdom 事件处理争用执行资源导致的偶发超时。
  • 可选 GitHub Actions 部署(Issue #23):新增 .github/workflows/deploy.yml,在 Workers Builds / Git 导入不可用时可由推送触发构建与部署。默认不启用,需显式设置仓库变量 CF_NAVS_DEPLOY_PROVIDER=github-actions;默认部署仍是 Cloudflare 账号关联的 Git 构建。

使用指南与菜单

  • 六步中英指南首次访问时浮在真实首页上,首页入口可随时重开,独立 /guide/ 也默认显示指南;弹窗与示例插图跟随当前明暗主题、强调色和书签卡片风格。
  • 修正指南弹窗标题:完整显示「CF-Navs 使用指南」,英文切换后显示「CF-Navs User Guide」;窄屏头部允许换行。
  • 修复指南快捷键键帽在暗色模式下的对比度。
  • 修复 Service Worker 按 URL 缓存导航导致的指南页与离线首页缓存串页。
  • 首页右上角操作组改为桌面与移动端统一的显隐菜单,窄屏下横向展开以避免遮挡首页标题。

验证

  • npm run lint:通过(--max-warnings 0)。
  • npm run type-check:通过,svelte-check 0 errors / 0 warnings。
  • npm test:233 个测试文件、2801 项测试全部通过。
  • npm run build:通过。
  • npm run check:bundle:通过,首屏 JS 255.51 kB(gzip 88.17 kB)、CSS 83.02 kB(gzip 14.15 kB)。
  • npm run regression:chrome:书签悬停相关场景全部通过;唯一失败项为 headless 环境下的右键菜单场景,在合并前的 main 快照上以相同脚本复现同样失败,与本版本改动无关。

升级说明

  • 本次为普通补丁版本,无 D1 schema 变更,无数据迁移,无缓存结构变化。
  • 自托管镜像:tag 推送会自动触发镜像工作流,发布 0.9.1 与 latest 标签(amd64/arm64 双架构)。
  • 推送到 develop 会触发 Cloudflare 自动构建,不需要手动部署。

完整变更记录见 CHANGELOG.md。

CF-Navs v0.9.0

Choose a tag to compare

@lbjxr lbjxr released this 19 Oct 03:50

CF-Navs v0.9.0

重点更新

  • 图标本地优先缓存 v2:书签和分类图标使用 IndexedDB 本地缓存,减少重复网络请求;支持版本失效、配额回退和登出时清理私密图标。
  • Svelte 5 与应用结构升级:完成组件 runes 迁移,并拆分启动、认证、分类、书签和设置控制器。
  • 安全与数据可靠性增强:完善 API 鉴权、SSRF 重定向防护、D1 schema 迁移、缓存版本和点击数据持久化。
  • 导入与性能改进:覆盖大规模导入限制,增加首屏包体积门禁和更多行为测试。
  • README 自动翻译工作流:支持英文 README 预览、翻译和自动创建 PR,并自动修正翻译文件中的相对链接。

修复与维护

  • 修复后台书签删除确认弹窗层级问题。
  • 归档过时的计划文档并修正文档链接。
  • 合并重复的 Wrangler、浏览器登录和验证脚本逻辑。

验证

  • GitHub Actions verify:Lint、类型检查、单元测试、构建、包体积门禁和 API smoke test 全部通过。
  • Cloudflare Workers 构建:通过。
  • Release 提交:346c221。

升级说明

  • D1 schema 会通过版本化迁移自动升级。
  • 旧版图标缓存会在启动时清理,不需要手动处理。

完整变更记录见 CHANGELOG.md。

CF-Navs v0.8.3

Choose a tag to compare

@lbjxr lbjxr released this 12 Oct 14:32

CF-Navs v0.8.3

新增

  • 后台高级颜色选择器:颜色设置改为紧凑输入框 + 棋盘格预览 + 浮动 HSV 面板,支持色相、饱和度/明度、透明度的拖拽与键盘调节;点击外部或按 Escape 关闭。
  • 支持 rgba(...) 与三位 / 六位 / 八位 Hex 手动输入,输入框与面板双向联动;原有颜色与透明度的保存语义保持不变。

验证

  • npm run type-check:0 errors / 0 warnings。
  • npm run build:通过。
  • 颜色相关单测(color.test.ts、colorAlphaInput.test.ts)26 项通过。
  • 发布提交位于 develop,推送后由 Cloudflare 自动构建部署。

CF-Navs v0.8.2

Choose a tag to compare

@lbjxr lbjxr released this 12 Oct 08:56

CF-Navs v0.8.2

新增

  • 分类标题颜色自定义:在「高级与视觉 → 分类标题字体与图标」中分别设置一级、二级分类标题颜色,支持透明度。首页一级标题、二级分类标签和全页搜索分组标题按层级显示自定义颜色;留空时跟随主题。
  • 一级分类聚合二级分类中的常用书签:一级分类没有直属书签时,从其整个子树汇总常用书签,优先按点击次数排序,不足时按原有顺序补足,并显示书签所属的二级分类。私密书签不会进入聚合结果;分类展示数量使用独立上限,不受全局「经常访问」数量设置影响。

修复与调整

  • 点击计数即时持久化:书签点击后的计数更新写回当前版本的本地快照,刷新页面后仍能看到最新计数。
  • 分类常用数量独立配置:一级分类聚合区不再继承全局「经常访问」数量;即使全局数量设为 0,分类聚合区仍按自身上限展示书签。

验证

  • v0.8.2 已在 develop 完成实现,并归档到 main。
  • 完成独立复核、测试站部署和真实浏览器 L2 验证。

CF-Navs v0.8.0

Choose a tag to compare

@lbjxr lbjxr released this 11 Oct 02:03

CF-Navs v0.8.0

新增

  • 为书签和分类提供可信设备图标副本能力:在用户明确启用的设备上保留已验证图标,普通访问可以复用本地副本。
  • 支持图标副本在应用升级、旧快照恢复和页面重新打开后的兼容保留。
  • 增加图标失败恢复、超时恢复和跨页面复用,减少重复下载并改善瞬时网络失败后的恢复体验。
  • 补充分类图标、设备缓存设置、键盘操作和窄屏布局支持。

修复

  • 修复书签图标偶发停留在文字兜底、编辑标题后图标丢失、旧快照恢复不完整等问题(Issue #28 相关)。
  • 修复登录态切换、旧响应和跨标签退出导致首页错误显示游客视图的问题(Issue #29 相关)。
  • 修复低高度窗口、窄屏和顶部导航下编辑菜单被遮挡或无法操作的问题(Issue #30 相关)。
  • 修复图标代理超时、失败重试、取消恢复和副本清理边界,避免失败结果覆盖有效图标。
  • 修复性能审计中首页重复图标请求超出预算的问题。

验证

  • npm test:180 个测试文件,2087 项通过。
  • npm run type-check:0 errors / 0 warnings。
  • npm run accept:prod:40/40 通过。
  • npm run perf:audit:10/10 通过,图标请求 259,预算 260。
  • 真实浏览器完成旧 bundle 到新 bundle 的同 profile 升级、旧/新标签并存、设备副本保留、关闭清理和回滚验证。

已知限制

  • iOS Safari、真实软键盘、真实读屏软件和报告者原 Mac 环境未由本轮自动化复测。
  • Issue #28、#29、#30 的关闭仍需发布后按维护者流程结合报告者反馈处理。

v0.7.3 — 图标恢复、隐私缓存与排序交互修复

Choose a tag to compare

@lbjxr lbjxr released this 03 Oct 02:57

v0.7.3

本次为稳定性与隐私修复版本。上一个公开 Release 为 v0.7.1;本说明也涵盖仓库中 v0.7.2 记录的主要改动。

主要修复

  • 修复登录态切回标签页时私密书签丢失,以及跨会话刷新、管理员快照的竞态问题。
  • 修复私密书签图标持续显示文字兜底;HTTP 图片或代理短暂失败后可有界重试恢复,无需打开编辑器。
  • 修复对象图标缓存的隐私边界:先校验可见性,再读取缓存;分离 Edge 与浏览器缓存,避免隐私切换后复用旧图标。
  • 合并公开重复卡片的在途图标请求,减少不必要的资源加载。
  • 修复页面底部右键菜单与嵌套分类菜单裁切,并为固定排序工具条预留滚动及菜单空间。
  • 修复 Service Worker 缓存的重定向 HTML 响应导致重载失败。
  • 修复默认搜索引擎切换的状态同步。

体验与验证

  • Spotlight 搜索结果展示真实书签图标。
  • 调整后台高级与视觉设置的呈现方式。
  • 验收脚本等待真实弹窗及预缓存就绪,超时仍保留失败判定。
  • 发布前代码基线已通过 1095 项单元测试、97 项本地 API 冒烟、30 项测试站点标准验收、23 项实际执行的 Chrome 回归及 10 项性能指标检查。
  • 专项验证覆盖公开/私密图标故障恢复,以及桌面、移动窄屏、低高度视口的排序工具条与移动菜单交互。

注意事项

  • 未进行 Chrome 134、iOS Safari 虚拟键盘与安全区真机验证;密码轮换场景未在测试站点执行。
  • 版本源码来自 develop,并归档合并到 main;发布 Release 不等同于验证了新版本的生产部署。

完整变更记录见 CHANGELOG.md。

v0.7.1

Choose a tag to compare

@lbjxr lbjxr released this 20 Sep 16:38

v0.7.1 — 2026-09-21

补丁版本:修复 v0.7.0 的 CI 冒烟脚本缺陷(生产行为无变化)。

修复:smoke call() headers 透传(refs #24)

  • 根因:scripts/smoke-test.mjs 的 call() 只解构 { method, token, body },/api/recover 段传入的 headers: { 'X-Setup-Token': ... } 被静默丢弃,有效令牌用例实际未带令牌头而全部返回 401。CI 自 recover 功能提交起红线,与分支合并无关。
  • 修复:call() 增加 headers 透传(accept → 附加头 → content-type → authorization)。
  • 勘误:v0.7.0 变更记录「L1 smoke 83/83(恢复成功…)」表述不准确——该场景修复前实际 77/83;修复后 npm run smoke 83/83 全过,产品侧 /api/recover 功能不受影响(手工实测正常)。

验证:CI(type-check / test / build / smoke)main 与 develop 全绿;本地 npm run smoke 83/83、type-check 316/0。完整记录见仓库 CHANGELOG.md v0.7.1 段。

v0.7.0

Choose a tag to compare

@lbjxr lbjxr released this 20 Sep 15:44

v0.7.0 — 2026-09-20

小版本:新增管理员密码恢复端点与后台管理界面审计整改(P0 + P1/P2)。

新增管理员密码恢复端点 /api/recover(REQ-14)

  • 免登录 POST /api/recover:部署者凭 SETUP_TOKEN(请求头 X-Setup-Token)+ 同源校验 + IP 独立限流,重置管理员密码而无需重新部署。
  • 只重置密码、不改用户名;轮换 JWT secret 使全部旧会话失效,成功后直接返回登录态。
  • 新增 /recover 页面(登录弹窗「忘记密码?」入口);部署密钥非 ASCII 字符前端校验与友好提示;令牌不落库,忘令牌可在 Cloudflare 控制台轮换后重新部署。

密码重置操作说明:打开站点 /recover → 输入部署密钥 SETUP_TOKEN → 输入新密码(8–12 位,须含大小写/数字/符号中的两类)→ 提交即回到登录态。错误语义:未安装 1002 / 令牌错 401 / 跨域 403 / 限流 200+code。兜底链路:后台改密 → /recover → 以新 INIT_ADMIN_*/RESET_ADMIN_CREDENTIALS 重新部署。

后台管理界面审计整改

  • P0(对比度/焦点环/主题基建):WCAG AA 对比度修复(四对 <4.5 → ≥4.67)、主按钮 token 化(新增 --admin-accent-ink,暗色 1.67→10.71)、color-scheme 明暗、theme-color 动态、11 处 :focus→:focus-visible。
  • P1:站点设置布局:二级菜单 6→7 拆出「高级与视觉」(外观分区内滚约 1149px→0);去三层嵌套滚动(面板去锁高、预览列 sticky 跟随);布局导航小栅格修复;样式/脚本 textarea 语言徽标。
  • P1/P2 其余:暗色卡片表面不透明分层、hover 抬升收敛、skip-link 直达主内容、搜索框 aria-label、--focus-ring 焦点环 token 化。

验证:L0 type-check 316/0、test 948、build 通过;L1 smoke 83/83;L2 真实浏览器(本地 + 生产 develop 站点)实测;独立 reviewer 复检 PASS。完整记录见仓库 CHANGELOG.md。