Releases: fanquanpp/FANDEX
Releases · fanquanpp/FANDEX
Release list
v4.5.0
[v4.5.0] - 2026-09-23
新增
- 算法教学独立子页面:新增
/algorithms/,与「学习路线」并排同级——
将 algorithm 模块 30 篇教程按学习曲线重组为 8 大单元课程表,
首页 / 各子页 Hero 入口、页脚与搜索命令面板同步加入「算法教学」入口; - 算法题图鉴:新增
/algorithms/problems/题库功能页,整理 95 道
经典算法题(力扣高频为主,14 个分类),支持分类 / 难度筛选与题名标签
搜索(状态同步 URL 可分享);每题附题意概括、分点思路讲解、Python
参考实现(默认折叠)、复杂度标注与关联教程回链,共 95 个静态详情页; - AI 助手站点索引:新增
/llms.txt端点(llmstxt.org 规范),以纯
Markdown 列出全部 35 个模块、1700+ 篇文档的标题、链接与描述,
ChatGPT、Cursor 等编码代理无需解析 HTML 即可检索站点内容; - RSS 订阅发现:全站 head 注入
rel="alternate"订阅链接,
阅读器与浏览器扩展可自动发现更新流; - 打印样式:文档页支持 Ctrl+P / 导出 PDF——自动隐藏顶栏、侧边栏、
目录与几何装饰,三栏扁平化为单列正文,代码块与提示块防跨页断裂,
正文外链在纸面追加可见 URL; - 界面中英双语:全站 UI 文案中英双语(440+ 条字典文案),顶栏语言
按钮一键切换(zh / en);中文为基准语言——SSR 直出完整中文页面,
SEO、RSS 与无 JS 降级不受影响,英文为纯客户端渐进增强;语言选择本地
持久化、跨标签页与 View Transitions 切页后保持,文档正文与教学内容
不进字典、永远保持原文; - 算法教学外部资源分组推荐:算法教学页「外部刷题平台推荐」由 6 项
平铺扩充为四组 18 项——刷题与竞赛(力扣、PracHub、NeetCode、洛谷、
Codeforces、牛客网、AtCoder DP 专项)、可视化学习(VisuAlgo、
Algorithm Visualizer、USFCA 数据结构可视化)、计划与追踪(Grind 75、
LeetCode 统计面板)、公开课与视频(MIT 6.006、Stanford CS161、
Princeton Algorithms、Berkeley CS 61B、Back To Back SWE、
WilliamFiset);分组标签与区块副注中英双语,算法页 SEO 描述与
disclaimer(网页版、仓库版)平台列举同步更新; - AI 接入通道(预留,未激活):新增网页端 AI 设置页
/ai/与
src/lib/ai/通道模块(服务商注册表、OpenAI 兼容请求客户端、密钥
隔离存储层),支持将 OrcaRouter 配置为可选 Provider——OrcaRouter
为 OpenAI 兼容的多上游模型网关(api.orcarouter.ai,浏览器直连已
验证 CORS 放行),提供平台密钥与 BYOK 两种由用户自行配置的密钥方式,
设置页内附控制台跳转、连通性测试(/v1/models校验密钥)与责任
声明;密钥默认仅存会话内存、勾选后写入本机 localStorage,FANDEX
不收集不记录;通道总闸AI_CHANNEL_ACTIVE默认 false,本版本不发起
任何 AI 对话请求,仅预留架构;页脚「项目资源」新增入口(桌面端剔除
该页与链接,/ai/页使用独立 CSP 仅放行该 API 域名,并 noindex);
修复
- 学习进度残留失效节点:学习路线与算法题的本机进度存储按编号/题号
累积,文档编号重构或题库重组后会残留已失效的条目——既不显示也无法
清除,总览页进度徽章与状态计数被虚增。现技术地图挂载时按当前地图的
有效节点集合修剪回写、题库页挂载时按当前题表修剪,逐页访问自愈;
localStorage 值损坏(解析失败)时同步移除,不再每次读取重复失败; - 桌面端隐藏退出后启动窗口隐形:窗口状态保存/恢复此前含 VISIBLE 标志,
若应用在Ctrl+Alt+F隐藏状态下退出(如关机、注销),下次启动会被还原为
隐藏——进程已在运行但窗口不出现,仅能靠全局快捷键找回。窗口状态现仅覆盖
几何信息(大小 / 位置 / 最大化 / 全屏);便携版打包同步移除「候选产物
缺失时抓取任意 exe」的过宽兜底,改为直接终止打包; - 冒烟测试可达性断言恒真:本地静态服务器对缺失资源回退 404.html 时仍
返回 200,导航直达链接可达性断言(nav-depth)形同虚设;现回退时携带
真实 404 状态码,Playwright 与 Lighthouse 的可达性判定恢复效力; - 学习路线地图全量失效:2026-09 全库文档编号重构后,36 张技术地图
共 979 个知识点节点仍指向旧编号,各技术统计全部显示"待补充"、思维导图
文档链接 404。已按 slug 谱系全量重映射(973 自动 + 6 人工裁定),
零失效、零同图重复,audit-learning-path 全绿; - 文档正文站内链接 404:正文普遍使用根相对链接(如
/sql/020-OverviewStandard),GitHub Pages 项目路径(/FANDEX/)下
全部指向域根导致 404。新增构建期 remark 插件统一补 base 前缀与尾斜杠
(图片与引用式链接同步覆盖,桌面端根路径构建天然兼容); - canonical / og:url 双斜杠:
Astro.site序列化自带尾斜杠,与
pathname 字符串直拼产生github.io//FANDEX/...,文档页、模块页、
分页页共 6 处规范链接与分页关系链改为new URL()拼接;
RSS 频道级 link 同步指向站点首页; - 首页标题 hover 跳帧:hero 标题 hover 时改写
animation-duration
导致背景进度按新时长重映射、肉眼可见跳变,移除改写保留缩放与字距反馈; - 工作台弹层与存储健壮性:作品库打开 / 删除 / 复制在 IndexedDB 异常
(配额满、隐私模式)下不再产生未捕获 Promise 拒绝(会触发全站
「无未捕获异常」冒烟门禁),改为错误态与工具栏提示;引导 / 画廊 /
作品库三处弹层补焦点管理(打开移入面板、关闭归还触发元素);
格式化失败提示、未命名标题与「副本」后缀接入 i18n,英文界面不再
出现中文残留;标题输入默认改占位文案(消费端各自回退); - Service Worker 桌面变体失效:
sw.js硬编码/FANDEX/前缀,
非 GitHub Pages base 部署下全部请求被跳过、预缓存 404;改为从
SW 注册作用域推导 base; - 搜索面板竞态崩溃:面板在 Pagefind 加载 / 搜索等待期间被关闭时
继续写已置空引用导致未捕获 TypeError,改为捕获本轮引用并在过期后
丢弃;语言切换后关闭面板避免旧语言 chrome 残留;工作台弹层打开时
Ctrl+K不再抢焦点;Shift+/打开引导不再被语法页/快捷键截胡; - 语法速览深链水合错配:
?lang/?q直链在客户端水合时与 SSR 状态
不一致(React 恢复性错配闪烁),改为同构默认值 + 挂载后一次性应用; - 首页 marquee resize 布局抖动:窗口拖动时读-写-读循环无节流,
rAF 合帧 + 克隆补位上限;网页端刷新后不再尝试自动恢复全屏
(无手势调用被拒绝产生控制台噪音,恢复逻辑收敛到桌面端运行时); - Android 更新安装静默失败:Android 11+ 包可见性过滤下
resolveActivity对系统安装器可能误报 null 导致更新无法调起,
清单补<queries>声明并改由ActivityNotFoundException兜底;
generate-content.mjs资产清理正则/^d+-/笔误修正为/^\d+-/
(原清理逻辑永不命中,跑成全量重拷);过时的「CI 构建已自动执行」
注释同步修正;
性能
- 数学公式页体积精简:KaTeX 输出切换为仅 HTML 渲染层(原双份输出
为每条公式内联隐藏 MathML 副本),公式密集页(约 580 条公式)HTML
体积下降约四分之一,全站含公式页面均受益; - 动效令牌收敛与节奏统一:语法速览面板开合动画时长缓动改消费
--motion-*令牌;首页标题 hover 过渡令牌化;学习路径分类/职业两条
流光曲线按路径长度等速校正(原长曲线流速快近一倍的不协调); - 前端实验室懒加载 chunk 瘦身:移除编辑器从未使用的 CodeMirror
语言包(python / cpp 与 legacy-modes 共 9 种语言模式——工作台仅编辑
HTML / CSS / JS),依赖同步移除,减小工作台懒加载 chunk 与安装体积;
内容
- 长文档导读补全:为 211 篇超万字文档批量补「学习目标 / 前置知识」
小节(基于 frontmatter 难度、描述与真实章节结构生成),读者进入长文
前可获得模块定位、难度与章节导览;
变更
- 仓库结构与脚本整理:移除空置的
thd-third-party/脚手架目录(仅含
.gitkeep,无任何代码引用,README 中"第三方许可存放处"的说法与实际不
符),README 仓库结构与 vite 模块 monorepo 教程同步校准(原教程仍引用
已不存在的 tls-tools / app-android / dcs-docs 目录);学习路径审计报告
输出从编辑器私有目录迁移至仓库根.reports/(新增 gitignore 条目);
内容审计接入pnpm --filter @fandex/web audit:content脚本,CONTRIBUTING
与 CONTENT-GUIDE 自检命令同步更新; - Android release 签名缺失即失败:assembleRelease / bundleRelease 执行
前校验 keystore 与密码完整性,缺失时构建直接终止——原先静默回退 debug
签名,debug 签名的 release 包一旦发布,存量用户会因签名不一致无法升级;
更新通知小图标改用与启动图同构的品牌 F 字标(原为系统下载完成图标); - 文档统计与 CI 描述校准:README 数字更新至实际规模(43 个技术模块、
1803 篇文档、1069 个学习路径知识点,原 38 / 1743 / 979 为历史口径);
README / CONTRIBUTING 与桌面端、便携版、旧版 Android README 移除已退役
工作流(desktop-build / android-build / android-release)的过时描述,
修正 lighthouse.yml 触发条件(push main / PR / 手动,非定时)与发版脚本
「七处版本文件同步」描述;.env.example由无关的第三方 API 密钥模板
改写为 web 端真实环境变量说明(PUBLIC_SITE_URL / DESKTOP_BUILD /
ANALYZE_BUNDLE / LHCI_PORT); - 全项目审计修复与 CI 加固:CSP 收紧(移除 script-src 的
data:、
style-src 与 connect-src 的 jsdelivr——站点无对应加载行为,jsdelivr
仅为工作台动态 import prettier 保留在 script-src);两个 CI 工作流
锁定ubuntu-24.04(2026-10 runner 镜像迁移 Ubuntu 26 前主动锁定)
并补齐根 tsconfig / .npmrc / scripts 路径过滤;content-sync 在 git
历史为空(浅克隆)时硬失败,避免全站 updated 被静默改写为当天;
qa-check 大文件告警不再对 HTML 页面逐条刷屏(由 1.5MB 专项检查
把关,警告 197 → 14 条真信号),BASE 与 astro.config 同源取
DESKTOP_BUILD;根 typescript 与 workspace catalog 对齐(7 → 6.0.3)、
engines pnpm 提升至 >=11;README / CONTRIBUTING / CHANGELOG 头注
移除已退役的 android-build / desktop-build / android-release 工作流
描述,注明安装包由维护者本地构建; - 免责声明扩展 AI 通道条款:仓库版
DISCLAIMER.md与网页版免责声明页
同步新增「AI 接入通道(预留)」一节(中英双语),明确 FANDEX 仅提供
接入选项不提供 AI 服务、密钥仅存本机、费用用户自担、数据经 OrcaRouter
转发需自行接受其隐私政策,原第 5-9 节顺延为第 6-10 节;README 新增
「关于 AI 功能的说明」章节; - web 端依赖全量升级:lockfile 全量重解析至各依赖当前最新版——
mermaid 11 → 12(12 默认布局引擎换 ELK、默认外观换 neo,渲染初始化
显式固定 dagre + classic,约 520 篇含图表文档观感与升级前一致);
TypeScript 5.9 → 6.0(typescript-eslint 与 @astrojs/check peer 范围内
的最新大版本);lucide-react 1.45 / tailwind-merge 3.7 / zod 4.6.4 等
同步刷新;Astro 7.3.2 与全家桶已是最新,无版本变化。typecheck、lint、
qa 门禁、生产依赖审计(零漏洞)与全量构建全部通过;
修复
- 桌面端版本同步盲区:发版脚本与 CI 版本一致性门禁此前不覆盖
app-desktop/package.json与src-tauri/Cargo.toml(后者连带 Cargo.lock),
v4.4.0 发布后两者仍停在 4.3.1。已将四份 package.json、tauri.conf.json、
Cargo.toml/lock、Android versionName 共七处全部纳入 release.mjs 同步与
version-check 校验,现存偏差一并修正; - 桌面端升级后可能供旧:web 端 Service Worker 会在 Tauri WebView 内照常
注册,其缓存跨应用升级持久存在,可向已升级的应用继续提供旧版页面。现检测
到 Tauri 环境(window.__TAURI__)时跳过注册——桌面内容本就随应用离线分发,
SW 无增益;桌面构建的页面 CSP 同步收紧为无任何第三方域授权(playground
早已剔除,jsDelivr 授权失去唯一消费者); - Android 页面加载失败无日志:六个页面 ViewModel(首页/文档/模块/学习
路径列表与详情/语法详情)的异常分支只把 message 写进 UI 错误态、不落日志,
线上排障时无迹可循。现统一在兜底前Log.e记录堆栈; - 发布说明端描述错位:Release 自动说明中新技术栈 APK 被误写为
"React 生态三端统一"(实为 Kotlin Compose 重写版),Legacy APK 描述同步
改为冻结维护定位;
变更
- Android 新版依赖对齐稳定最新:Compose BOM 2026.08 → 2026.09、
activity-compose 1.10.1 → 1.13.0、lifecycle 2.9.4 → 2.11.0、
core-ktx 1.17.0 → 1.19.0、navigation-compose 2.9.8 → 2.10.1、
SplashScreen 1.0.1 → 1.2.0、协程 1.10.2 → 1.11.0、okhttp 5.4.0 → 5.5.0、
kotlinx-serialization 1.8.0 → 1.11.0(AGP/Kotlin 版本保持不变);
datastore 与 WorkManager 当前稳定版即所用的 1.2.1 / 2.10.0,无动作。
旧技术栈 APK 处于维护冻结,按冻结公告不做变更;
安装包(FANDEX-4.5.0.apk、FANDEX-Setup-4.5.0.exe 与便携版 zip)由维护者本地构建后补充上传到本 Release。