# Batata 更新日志

## V1.12.40 (2026-08-05)

### 图标修复

- documents.php/markdown.php：fa-file-pdf 图标替换为内联 SVG（FA6 Free 不含此图标）
- documents.php：引入 Bootstrap Icons CDN，右上角四个按钮样式统一（等高外轮廓）

## V1.12.39 (2026-08-05)

### 导航调整

- 技术支持菜单重组：用户指南→媒体中心→下载中心→云剪切板，闪电随笔/在线笔记/技术博客下移
- flashx.php 改名为下载中心
- play.php 去掉媒体中心标题行，videos/broadcast 目录默认展开
- guide.php 左侧菜单字体加大加粗、面包屑加粗、工具栏 padding 15px

### 间距统一

- news/guide 工具栏 padding 8px 15px
- play.php 搜索框和各路径标题 15px 边距
- partner.php article-detail/article-rss 15px padding

## V1.12.38 (2026-08-04)

### 间距微调

- ipgeo/status 卡片 padding 统一 20px 24px
- partner/article-rss 间距 24px，article-detail/article-rss padding 15px
- news/guide 工具栏 padding 8px 15px
- guide 左侧导航菜单字体加大加粗、面包屑加粗
- style-switcher 增加 margin 0 15px，与品牌图对齐

## V1.12.37 (2026-08-04)

### 全站统一间距

- `.agileits-single-img` 全局增加 `padding: 0 15px`，形象宣传图片与内容区宽度对齐
- 颜色/证照/签名/艺术字/文生图/文生视频等卡片统一 `padding: 20px 24px; margin: 0 15px`
- podcast、aboutus、sample、joinus、ipgeo、status、utils、openapi、read 等内容区统一 15px 边距
- gallery 分类组、filter-bar 统一 15px 间距

### 内容区标题统一

- color/photo/signature/textart/text2image/text2video/utils 卡片内增加 h3 标题栏（图标 + 底部边框）
- ipgeo/status h3 标题风格统一：1.1rem 加粗、1px 边框、暗模式适配
- utils 百度 API 密钥设置区暗模式适配

### 卡片增强

- third-party-works 产品卡片上下间距 24px
- podcast 播客列表容器、显示模式切换按钮位置优化
- gallery 图片按作品分类分组展示，组标题可折叠

## V1.12.36 (2026-08-04)

### 播客页面增强

- podcast.php：新增大卡片/紧凑/列表三种显示模式，默认大卡片，localStorage 记忆
- 大卡片模式：封面以圆形光盘（120px）展示，播放按钮居中；无封面显示音符图标
- 播客列表容器（圆角卡片），显示模式切换按钮置于右上角，暗模式适配
- 文档说明区与播客列表统一容器样式、内边距

### 媒体管理增强

- media_admin.php：新增作品名称、作品分类字段，保存到 MongoDB
- 图片列表按用途→作品分类二级分组展示，每组可展开/收起（默认收起）
- gallery.php：图片按作品分类分组展示，组标题可折叠，AJAX 加载自动归组
- gallery.php 灯箱播放时图片名称/描述移至左下角，序号移至右下角

### 导航与命名

- 文创商店：AI+美图 → AI+摄影
- 系统管理：闪电随笔移至技术支持（用户指南与在线笔记之间）；文生图片→文生图像，语音合成下移
- 技术支持菜单增加闪电随笔高亮

### 暗模式

- 全站统一卡片暗色背景 #2a2a2a
- text2image/text2video：API Key 区域暗模式修正

## V1.12.35 (2026-08-03)

### 页面布局统一

- 多页面增加圆角卡片容器（白底阴影），暗模式下统一为 `#2a2a2a`：photo、signature、textart、text2image、text2video、ipgeo、utils、status
- 各页面内容与形象宣传图片宽度对齐（去除卡片外多余边距），内容区上下左右保留 24px 留白
- textart.php：左侧预览+文本输入，右侧设置项，textarea 12 行 + "文本内容"标签
- ipgeo.php、utils.php 暗模式卡片/控件颜色统一

### 导航调整

- 闪电随笔：系统管理 → 技术支持（用户指南与在线笔记之间），当前窗口打开
- 系统管理：文生图片→文生图像，语音合成移至文生视频下方，文生图像前加分隔线
- utils.php 增加形象宣传图片支持

### 暗模式修复

- text2image、text2video：API Key 区域暗模式背景/文字颜色修正
- color.php：输入框、预览色块、上传区域暗模式适配

## V1.12.34 (2026-08-03)

### 颜色工具增强

- color.php：传图取色移至在线取色卡片内，与取色器同行（160×80px），上传后图片居左、提取色块居右；预览色块显示"点我取色"（PC + 移动端）；暗模式适配输入框/预览色块/上传区域；PC 端色值输入框扩至 200px；移动端 HEX/RGB/HSL 标签与输入框同行、输入框自适应占满宽度

### 全站统一间距

- 修复全站内容区距屏幕边缘不一致问题：Bootstrap 栅格列自带 15px padding 与 .container 叠加为 30px，而自定义 flex/grid 容器仅有 15px
- batata.css：`.style-switcher`、`.filter-bar`、`.book-grid`、`.batata-card-grid`、`.partner-grid` 等共享类补充 15px 水平内边距；`.article-body`、`.markdown-body`、`.masonry-grid`、`.timeline-wrap`、`.agileits_three_comments`、`.w3_leave_comment`、`.callbacks_container`、`.agileinfo-single-icons`、`.article-rss`、`.cta-section` 新增间距规则；`.row.product-grid` 抵消负 margin
- 17 个页面内联样式修正：news、joinus、video、podcast、play、photo、poem、text2image、text2video、textart、guide、cloudclip、flashx、status、ebook、latest、utils — 各自主内容容器补 `padding: 0 15px` 或等量 margin
- index.php：AI 要闻/播报板块与 Welcome 板块左右间距对齐

## V1.12.33 (2026-08-02)

### 语音合成平台升级

- Node.js 升级至 v22.23.2（系统全局安装，移除 nvm 依赖）
- 新增百度短语音识别：支持 ffmpeg 自动转码（MP3/M4A/AAC → PCM 16kHz），长音频自动切块 60s，API Key 面板化管理
- 新增 Fish Audio 第三方 TTS：王立群 / 王立群2.0 AI 克隆语音，API Key 面板化管理（Fish Audio + 百度 AK/SK + 硅基流动 Token 统一设置）
- 语音合成 TAB 重构：左对齐无动画连接式布局，emoji 图标（🗣️/🎙️），识别引擎单选按钮（默认百度）
- 修复：Server.js 路由遗漏导致 API 404、tokenInput 残留 JS 报错、转录按钮丢失、MP3 Content-Type 格式错误、ffmpeg 转码后 PCM 识别率
- tts-worker.mjs：语言选择器 + API 设置按钮重定位至 header 内距右上角 8px，外部 div 工具栏样式适配

### 电子书阅读器

- ebook.php：大卡片/紧凑/列表三种展示模式切换（默认大卡片），全屏阅读内容居中 + 底部导航，搜索框按扩展名排序
- 朗读功能升级：优先服务端 Edge TTS / Fish Audio，浏览器 TTS 兜底；20 款语音选择器 + 语速/音调/风格设置面板；王立群语音置底 AI 克隆标注

### 监控增强

- monitor/system.php：CPU Top5 进程、日志总览（Systemd/Nginx/APT/Snap）、Snap 旧版统计、磁盘告警联动 header 闪烁图标
- status.php：磁盘 ≥90% 告警条，header 邮箱旁闪烁警告图标，Docker 容器状态缓存刷新

### 其他

- header_nav.php：实用工具→文本工具、闪电笔记→闪电随笔、艺书工坊→AI+阅读、新增闪电笔记/语音合成菜单
- utils.php：百度 API Key 面板管理（翻译/OCR/语音识别 6 字段 JSON 存储）
- flashx.php：修复重命名变量缺失、新增上传目标目录选择
- signature.php：签名区默认浅灰大字占位
- photo.php：8 色背景 + 去背景双取样、自定义规格（DPI + 锁宽高比）、6 吋打印排版 + 拍摄须知

## V1.12.32 (2026-08-02)

### 系统运维

- 磁盘清理：释放 5.5GB（Systemd 日志 1.8G + Jellyfin Docker 1.5G + Nginx 日志 1.2G + Snap 旧版 1G + APT 163M）
- Node.js 升级：卸载系统 Node 12，统一使用 nvm Node 18.20.8，解决重启后语音合成服务端口抢占问题
- status.php：磁盘告警（≥90% 时品牌图下方黄色警告条），header 邮箱旁闪烁告警图标（点击跳转 status.php），Docker 容器缓存清理
- monitor/system.php：CPU/内存 Top5 进程、Systemd/Nginx/APT/Snap 日志监控、5 秒自动刷新恢复、CPU 公式修正（/proc/stat 替代 sys_getloadavg）、Snap 旧版数量+空间
- header_nav.php：磁盘告警闪烁图标 + blink 动画

### 工具增强

- utils.php（文本工具）：新增百度 API 密钥管理面板（管理员可见，翻译/OCR/语音识别共 6 个字段，保存至 JSON 配置文件）
- header_nav.php：实用工具→文本工具、闪电笔记→闪电随笔、艺书工坊→AI+阅读

### 导航修正

- monitor/*.php：6 个子页面 status.php 链接改为绝对路径 /status.php
- photo.php：去背景双取样保护、8 色背景新增深蓝/浅蓝/天蓝/深红、自定义规格（DPI + 锁宽高比）、6 吋打印排版、拍摄须知+示例图、滑块品牌绿
- signature.php：默认占位「签名」浅灰大字

## V1.12.31 (2026-08-01)

### AI 语音合成

- flashnote/tts-worker.mjs：VoiceCraft 升级为「AI语音合成」，去除广告代码，朗读按钮前置（在线朗读），语音设置面板（语速/音调/风格 11 级），语言切换器迁移至卡片右上角
- 语音合成服务本地化部署：Node 18 + Worker 模块直连 Microsoft Edge TTS，独立端口 8086，不再依赖外部 Worker
- 新增 Fish Audio 第三方 TTS 接入：支持王立群 / 王立群2.0 两款 AI 克隆语音，API Key 面板化管理（前端 localStorage 存储 + 请求头发送），余额不足/Key 无效中文提示
- ebook.php 朗读升级：优先服务端 API（Edge TTS + Fish Audio 双引擎自动路由），浏览器 TTS 兜底；20 款语音排序（女声在前），王立群置底标注 AI 克隆，语音设置面板（语速/音调/风格与 Worker 一致）

### 导航与交互

- header_nav.php：文创商店「艺书工坊」→「AI+阅读」，系统管理新增闪电笔记、语音合成（弹窗打开）；手写字体改名；证照制作、电子签名子菜单
- ebook.php 阅读窗口：全屏阅读（内容居中 + 底部导航栏），朗读按钮 + 语音设置面板，大卡片/紧凑/列表三种展示模式切换，封面区 PC 端 320px 移动端 240px，扩展名优先排序
- ebook.php EPUB 封面提取：修复属性顺序兼容性（id 在 href 后）、文件名扫描兜底、basename 双 key spine 映射

### 工具增强

- textart.php：新增 3 款 CDN 手写字体（鸿雷板书/拙书/悠哉），预设持久化到服务器 JSON 文件跨终端共享，默认字号/手写体优化
- photo.php：自定义证件照规格（像素/分辨率/打印尺寸 + 锁宽高比），8 色背景 + 采样保护，6 吋打印排版，拍摄须知示例图，滑块品牌绿
- flashx.php：修复重命名变量缺失 bug，新增上传目标目录选择器

## V1.12.30 (2026-08-01)

### 新增工具

- photo.php：证照制作，支持上传/拍照，8 种背景色 + 自定义，去背景（双取样：背景去除/衣服保护色），亮度/对比度调整，预设规格 + 自定义（像素/分辨率/打印尺寸 + 锁宽高比），6 吋相纸排版下载 + 打印，拍摄须知（含示例图）
- signature.php：电子签名，鼠标/触屏手写 + 上传去底，墨黑/朱红/靛蓝三色笔刷，撤销/缩放/亮度对比度，透明 PNG 下载

### 手写字体增强

- textart.php：新增 3 款 CDN 中文手写体（鸿雷板书简体、鸿雷拙书简体、悠哉手写体），中文手写体共 10 款；个性签名预设改用鸿雷拙书
- header_nav.php：艺术字体 → 手写字体（菜单改名）

### 导航

- header_nav.php：系统管理菜单新增「证照制作」「电子签名」

## V1.12.29 (2026-07-30)

### 电子阅览室增强

- ebook.php：新增「书籍制作」卡片（管理员可见），支持上传 TXT + 封面 + 出版商 + 藏家手写签名，一键生成标准 EPUB 2.0.1
- 生成的 EPUB：扉页（600×800 圆角白卡、书名/作者/出版商/中文日期居中排版）、目录页（超链接跳转）、正文章节、NCX 导航，封面图作为第一页
- TXT 解析升级：采用 book_export.php 同款正则，支持中文数字章节（第一章/第一回）、开篇关键词（序/楔子/题记/目录）、结尾关键词（后记/番外/尾声），目录模式自动跳过
- EPUB 封面提取：自动解析 OPF + ZIP 扫描，提取封面图片在书架上显示
- 移动端 EPUB 目录 404 修复：构建 href→spine index 映射表（basename 双 key），用 spine 序号导航绕过移动端路径解析问题
- 布局重构：骏九书架 / 书籍制作 / 使用说明 三张卡片分区，搜索框内置书架卡片
- 阅读窗口：目录按钮统一为弹窗浮层（桌面+移动端一致），新增字体大小切换（A/A+/A++）

### 导航

- header_nav.php：AI + E书 → 艺书工坊；AI + 开发 → AI + 软件
- header_nav.php：系统管理菜单新增「艺术字体」

### 新增工具

- textart.php：艺术字体生成器，Canvas 渲染，14 款中英文手写体（Google Fonts），5 种快速预设 + 自定义预设（服务器存储跨终端共享），支持霓虹灯/立体阴影/双色描边/金属烫金/个性签名效果，下载 PNG / 复制到剪贴板

## V1.12.28 (2026-07-29)

### 电子阅览室重构

- ebook.php：MD/TXT 改为 iframe 阅读窗口架构（与 EPUB 统一），服务端 Parsedown 按标题分节，左侧目录 + 底部翻章 + 页码；TXT 自动识别章节标题并兼容 GBK/GB18030 编码；移动端目录浮层弹出
- ebook.php：新增文档样式切换器（GitHub/Batata）及使用说明（manual/Sys/电子阅览室说明.md），涵盖格式支持表、不支持的格式用 Calibre 转 EPUB 方案、编码兼容说明
- PDF 改为 iframe 阅读窗口，移动端提供「在新窗口打开」按钮绕过系统单页限制
- 修复移动端阅读窗口触摸跳动（滚动链隔离、overscroll-behavior）

### 导航

- header_nav.php：AI + 开发 → AI + 软件
- manual/ 全部文件所有权统一为 www-data

## V1.12.27 (2026-07-29)

### 新增

- ebook.php：新增电子阅览室页面，阅览 upload/ebooks/ 下电子书，支持 TXT/MD 在线阅读、EPUB 在线渲染（epub.js + 左侧章节目录 + 键盘翻页）、PDF 新窗口打开，支持搜索过滤、目录分组、暗模式
- header_nav.php：文创商店菜单新增「AI + E书」链接

### 修复

- ebook.php：暗模式下 EPUB 阅读器文字/背景颜色适配

## V1.12.26 (2026-07-29)

### 页面重构

- play.php：重写为 Bootstrap 框架页面（header_nav + batata + footer_nav），保留模态弹窗播放、PC 左右箭头/键盘切换、移动端滑动切换、自动连播、搜索过滤、目录分组
- cloudclip.php：重写为 Bootstrap 框架页面，保留全部功能（文本/文件上传、二维码生成、复制/下载、Tab 切换）
- flashx.php：重写为 Bootstrap 框架页面，保留全部功能（文件/文件夹上传、拖拽上传、进度条、暂停/继续、下载列表、目录导航、重命名、删除、下拉刷新）
- color.php：加入 Bootstrap 框架外壳（header_nav + batata + footer_nav），保留全部配色功能

### 导航

- header_nav.php / footer_nav.php：媒体中心、云剪切板、下载中心、网站配色改为当前窗口打开（去掉 window.open 弹窗）
- header_nav.php：网站配色移至分割线上方（与管理后台同组）

### 修复

- play.php：修复点击播放后不停切换下一个的 bug（playAdjacent/playMedia 双重防抖锁死）

## V1.12.25 (2026-07-28)

### 多媒体

- play.php：新增自动连播（播完自动切下一首）+ 移动端横向滑动切换上下首；视频播放禁止自动全屏（playsinline）
- podcast.php：播放条颜色适配暗/亮模式；移动端播放条改为顶部吸附（与桌面一致）

## V1.12.24 (2026-07-28)

### 工具

- markdown.php 搜索框：区分文件名/文件内容搜索，新增搜索模式选择器（文件名默认客户端过滤，内容按回车触发服务端全文检索并显示匹配片段），移动端搜索结果强制展开防折叠覆盖
- markdown.php 文件上传：修复移动端无法选择 .md 文件（accept 增加 text/plain MIME 类型兼容 iOS）

## V1.12.23 (2026-07-28)

### 网文系统

- books_admin.php 下载弹窗：新增 txt/md/epub 三格式选择，md 输出开篇/结尾标题与卷同级（##），书名下方增加作者名（###）
- book_export.php：新增 EPUB 导出模块（PHP ZipArchive，兼容 EPUB 2.0.1），自动解析章节结构生成电子书
- header.php：新增 filter_book() 函数，过滤书本开篇/结尾关键字段落（序/楔子/尾声/番外等）

### 工具

- cloudclip.php：自动显示文本内容二维码，实时字节/汉字计数，修剪按钮（截断至安全长度），下载文本按钮，网址二维码按钮，动态二维码大小，容量溢出时回退显示页面网址二维码
- qrcode.min.js：修复 UTF-8 编码缺陷（数组复用导致多字节字符残留污染后续 ASCII 字节，扫描出现乱码）

### 样式

- batata.css：未上架徽章改为红色（#c62828）

## V1.12.22 (2026-07-27)

### 网文系统

- books_admin.php 开始连载：支持开篇/结尾特殊段落识别（序/楔子/题记/目录/尾声/后记/番外等），目录内卷章检测抑制，换行符统一规范化，分卷扫描改为全文检测
- books_admin.php 全文校对保存：同步支持特殊段落识别与目录抑制，保持与开始连载一致的解析逻辑
- books_admin.php 删除确认：替换浏览器 confirm 弹窗为自定义模态框，确认按钮红色
- chapter_admin.php 发布 TXT 格式统一：标题去白、章节前空行、卷名写入，卷内不分章时跳过重复标题，与全文校对保存格式一致
- read.php 正文解析：同步支持特殊段落识别、目录抑制、换行符规范化、全文分卷扫描

### 工具

- utils.php：新增行尾 LF / 行尾 CRLF 按钮

## V1.12.21 (2026-07-26)

### 网文系统

- read.php 分卷书目录与阅读：支持分章/不分章检测，卷下不分章时只显示卷名链接
- online-works.php 封面修复：支持 jpg/png 双扩展名，从 MongoDB thumb_url 读取后台自定义封面，修复默认封面缺失
- chapter_admin.php 发布增强：未上架作品点击发布弹窗选择"保存到草稿"或"保存并上架"
- books_admin.php 下架逻辑优化：下架时同步更新 listed=0 和 downlink

### 运营后台

- novel_admin.php：保存时同步 listed 字段到 tomato_books/qimao_books
- physical_admin.php：图片选择器关闭按钮移至顶部右上角

### 样式与导航

- batata.css：新增 badge-draft/serial/finished 状态标签样式
- header_nav.php：导航调整 AI+诗词 位置

### 工具

- utils.php：新增"行首去白"按钮，清除中英文空格和 Tab
- images/img_00000.png：新增默认封面 fallback 图片

## V1.12.20 (2026-07-26)

### AI+诗词 (poem.php) 媒体与导航

- 诗词卡片支持视频显示：视频文件卡片展示电影图标，点击弹窗自动播放
- 模态框支持视频播放器（img/video 自动切换）
- 音视频自动播放：有音频播音频，有视频播视频，音频播放完毕 1.5s 后自动切换下一首
- 既无音频也无视频时 5s 后自动切换下一首
- 键盘左右箭头 / 移动端横向滑动（>50px）切换前后卡片
- 弹窗左右新增圆形箭头按钮，底部页码指示器，首/末首隐藏对应箭头
- 短诗词（<7 行）移动端正文字体扩大 1.3 倍

### 文学作品管理 (physical_admin.php)

- Tab 结构修复：else 改为 elseif，避免 poems tab 显示订单统计信息
- 操作列编辑/删除按钮 white-space:nowrap 同行显示
- 文件选择器路径调整：配图扫描 `/images` + `/upload/videos`，音频扫描 `/upload/audios`
- 配图选择器新增全部/图片/视频筛选切换按钮，视频文件以电影图标标识

### 样式修复

- 视频模态框 display:block 覆盖 CSS 的 display:none，修复视频不显示问题

## V1.12.19 (2026-07-25)

### read.php 阅读模式增强

- 阅读模式宽度增至 1117px，提升桌面端阅读体验
- 无章节网文（chapter_id=0 分页模式）也支持阅读模式，底部栏显示页码、按钮为上一页/下一页
- 关闭图标退出阅读，章节/页码信息点击弹出目录弹窗
- 首章/首页隐藏上一页按钮，末章/末页隐藏下一页按钮
- 暗色目录弹窗：黑灰底白字，hover 品牌绿

### 大事记图片样式对齐

- 大事记图片边框对齐团队成员圆形图片风格：`<span>` 包装器 + `::before` 伪元素叠加内白边 + 投影
- 内白边 8px，团队成员保持 16px

## V1.12.18 (2026-07-25)

### read.php 阅读模式

- 新增阅读模式按钮：点击进入沉浸式阅读，隐藏 banner/footer/导航/封面，暖纸背景，字体放大至 1.3rem
- 底部固定控制栏：关闭图标（退出阅读）、章节信息（点击弹出目录弹窗）、上一章/下一章
- 移动端左右滑动翻页，键盘 ← → 翻页，ESC 退出
- URL 附加 `&reading=1` 参数，翻页自动保持阅读状态
- 首章隐藏上一章按钮，末章隐藏下一章按钮
- 阅读模式隐藏 MongoDB 调试信息
- 目录弹窗支持深浅色模式（浅色白底，暗色黑灰底）

### CSS 修复

- `.batata pre` 暗色模式统一：边框 `#777` 灰白，背景 `#2d2d2d`
- 阅读模式增大书名与章节标题间距

## V1.12.17 (2026-07-25)

### CSS 架构重构

- 合并 `.single` / `.gallery` / `.agileits-about-top` 三个 section wrapper 为统一的 `.batata` 类，集中管理 padding（桌面 40px / 移动 30px）和深色模式背景
- 形象宣传图位置统一由 `batata.css` 控制，移除 16 个页面中独立的 `<style>` 覆盖块
- 20 个 PHP 文件同步替换 class 引用

### 页面修复

- 修复 `video.php`、`podcast.php`、`latest.php` 三页 `<style>` 开标签丢失导致 CSS 泄露为页面文本
- `aboutus.php` 去掉多余 `<div class="about">` 外层包裹，修复形象图与 banner 间距异常
- `status.php`、`ipgeo.php` 补充移动端 padding:30px 覆盖，对齐 `joins.php` 间距
- `rss.php` 增加形象宣传图片支持

## V1.12.16 (2026-07-25)

### 系统状态页面重构

- `monitor/status.php` 移至根目录 `status.php`，从 Tailwind CSS 独立布局重写为 Batata 站点统一风格（banner + 卡片 + footer）
- 系统管理菜单中「系统状态」移至管理后台与实用工具之间，改为当前窗口直接打开
- 卡片样式对齐 `ipgeo.php`：`box-shadow` 白卡、品牌绿标题下划线、浅灰网格卡片
- 增加形象宣传图片（`agileits-single-img`），后台可控显示/隐藏
- 完整浅色/深色模式适配，卡片图标链接改为新窗口打开
- 补充 footer 组件，移除 banner 下 OS 冗余信息行

### 实用工具额度表优化

- 原有 OCR 12 项额度表替换为百度翻译 / OCR / 语音三合一功能一览表（22 行，来源百度官网）
- 表格全宽显示、有边框、浅色/深色模式适配、类别列居中、表头品牌绿
- 表头下沿加粗线去除，个人认证/企业认证列居左

### Slider 高度修复

- `index.php` 首页 slider 因摘要/正文长度差异导致切换时高度跳动
- 临时解除 CSS 隐藏 → 测量全部 slide 实际高度 → 取最大值锁定 `.rslides` 容器 `min-height`，杜绝跳动

### 其他

- `partner.php` 接口开发文章标题颜色改为品牌绿 `#8eb446`
- `CLAUDE.md` 同步工作流加防护：清理前验证生产文件存在性，操作远程前必须先 `git fetch`

## V1.12.15 (2026-07-22)

### 实用工具页面上线

- `code_formatter.php` 更名为 `utils.php`，菜单名称改为「实用工具」，系统管理中置于管理后台与 IP 归属地之间
- 新增**翻译**功能：百度翻译 API，弹窗选择源/目标语种，支持 16 种语言互译
- 新增**OCR 文字识别**：百度 OCR API，支持图片文字识别，每月 1,000 次免费
- 新增**语音识别**：百度短语音识别 API，支持 WAV/MP3/M4A/AMR/PCM 格式
- 底部折叠展示百度 OCR 免费资源额度一览表（12 项服务）
- 按钮分组重排，统一品牌绿圆角样式：代码美化、中文排版、删除空行、翻译、OCR

### 全宽/暗模式适配

- utils.php 支持全宽/标准宽切换（与全站 `hdr-full` 同步）
- 完整暗模式 CSS 适配
- 移除系统管理菜单中的旧「格式代码」条目

### 全球 AS 号段分布图

- `ipgeo.php` 底部新增基于 Leaflet + OpenStreetMap 的 RIR 分区可视化地图
- 五大 RIR（ARIN/RIPE NCC/APNIC/LACNIC/AFRINIC）彩色多边形叠加，点击弹窗显示 ASN 号段分布

## V1.12.14 (2026-07-21)

### podcast.php 优化

- 音频封面查询从每文件一次 findOne 改为一次性 `$in` 批量查询，消除 N+1（Mongo 连接改为有音频时才建立）
- json_encode 播放列表增加 `JSON_HEX_TAG | JSON_HEX_AMP`，防止文件名中 `</script>` 截断内联脚本
- 进度条拖动期间 timeupdate 不再回写滑块（防抖动）；关闭播放条时重置时间与进度显示
- 移动端播放条改为底部悬浮条，与音频卡片同宽（15px 留白对齐、圆角、适配 iPhone 安全区）
- 修复超窄屏（<320px）音频网格横向溢出
- 清理未使用的 afmtDuration()，修正播放条位置注释

### 下拉刷新脚本修复与统一

- 修复全站 bug：下拉刷新手势结束后未清除 body 的 `will-change: transform`，导致 `position: fixed` 元素相对 body 而非视口定位（移动端底部播放条失效的根因）
- 补充 touchcancel 处理，手势被系统中断时同样清理
- footer_nav.php / markdown.php / flashx.php 三处内联拷贝统一抽取为 `js/pull-refresh.js`
- 页面可定义 `window.onPullRefresh` 自定义刷新动作（flashx.php 以 loadUploadedFiles() 替代整页刷新）

## V1.12.13 (2026-07-20)

### 字体本地化与精简

- Google Fonts CDN 字体（Raleway / Crimson Text / Roboto Condensed）下载至本地 `fonts/` 目录
- 创建 `css/fonts.css`，所有 @font-face 指向本地 woff2 文件
- 72 个 PHP/HTML 文件 Google Fonts CDN 链接批量替换为本地 `/css/fonts.css`
- 精简为仅保留 Raleway 字体（10 个 woff2，1.2MB），移除 Crimson Text、Roboto Condensed
- `batata.css` 和 `style.css` 所有 font-family 统一为 `'Raleway', sans-serif`
- 清理 Josefin Sans、Playball 等未本地托管的字体引用

## V1.12.12 (2026-07-19)

### 头部社交图标整合

- 6 个社交图标样式统一迁移至 batata.css，去除 header_nav.php 内联样式
- 图标排序：GitHub → RSS → 微信 → 博客 → 主题 → 全宽
- 暗模式默认显示白色，hover 强调色：RSS 黄、微信绿、博客红、GitHub 亮蓝
- 主题切换（日月）和全宽切换 SVG 增加 hover 颜色变化

### latest.php 图片路径修复

- `fixReadmeImages()` 同时处理 Markdown `![]()` 和 HTML `<img src>` 两种相对路径
- `rawBase` 根据实际分支名（main/master）动态拼接，兼容不同项目
- 跳过绝对 URL（http/https/锚点/协议相对/data URI），避免误替换

## V1.12.11 (2026-07-17)

### latest.php 图片加载修复

- Batata 简介 README.md 相对路径图片 → GitHub raw URL 替换
- 其他项目 README 图片路径同步修复，适配不同仓库分支

## V1.12.10 (2026-07-17)

### podcast.php 播放条优化

- 播放条移至文档说明与音频列表之间，默认隐藏，播放时显示
- `position: sticky; top: 0` 替代 `fixed; bottom: 0`，移动端滚动吸顶更可靠
- 圆角 + 橙色细边框，暗模式保持橙色

## V1.12.9 (2026-07-17)

### aboutus.php 优化

- 视频自动播放（静音循环），保持原始宽高比，填满容器
- 业务介绍板块顶部间距优化
- 形象宣传图与人文故事间距加大

## V1.12.8 (2026-07-16)

### status.php 性能优化

- Docker 容器数据缓存，页面加载从 8.3s → 0.4s
- 公网 IP 查询缓存 1h
- 容器管理弹窗实时查询后自动缓存

### 地图按需加载

- joinus.php / ipgeo.php 地图改为点击加载，节省首次 ~150KB

## V1.12.7 (2026-07-16)

### documents.php 暗模式完善

- GitHub 样式代码高亮 token 色适配暗模式
- 章导航按钮、文章标题暗模式适配
- 工具栏新增主题切换按钮
- 文章元信息间距优化

### IP归属地查询

- 新增 ipgeo.php，支持公网 IP 查询 + Leaflet 地图

## V1.12.6 (2026-07-16)

### IP归属地查询

- 新增 `ipgeo.php`：IP归属地查询，左侧信息卡片 + 右侧 Leaflet 地图
- 客户端 JS 多服务自动获取公网 IPv4 地址，支持手动输入 IP 查询
- 快捷查询链接：本机公网IP / 服务器IP / Google DNS / Cloudflare DNS
- BGP/AS 信息展示，全球广域网参考数据
- header_nav.php 系统管理新增「IP归属地」子菜单

### documents.php 增强

- 左侧栏新增「内容采集」标签 + 剪贴板粘贴按钮
- 工具栏新增深色/浅色主题切换按钮（月亮/太阳图标）
- 暗模式适配：侧栏/主内容区/样式切换器/文章标题（招牌绿）/章导航按钮
- 文章元信息间距优化

### 维护页面

- maintenance.php 新增 ICP备案号、版权所有人字段
- footer_nav.php 备案号、软件名称、版权所有人改为动态读取数据库

### 其他

- joinus.php 新增 Leaflet 公司地址地图
- 菜单「代码格式化」→「格式代码」

## V1.12.5 (2026-07-14)

### 维护页面增强

- maintenance.php 新增 ICP备案号、版权所有人输入框，保存到 MongoDB
- footer_nav.php 备案号、版权所有人、软件名称、年份均改为动态读取数据库
- 页脚 "Powered by" 样式优化（软件名加粗品牌绿）

## V1.12.4 (2026-07-12)

### news.php 优化

- 新闻分类排序：焦点新闻 → 绝对头条 → AI要闻 → 要闻播报
- 默认展开焦点新闻并自动打开第一篇文章
- 支持 `?cat=` 参数指定展开的分类
- index.php「更多」按钮带分类参数跳转
- 当前文章视觉指示：缩进 + 绿色高亮

### sample.php 评论增强

- 回复帖子左侧绿色竖线 + 缩进，标注「回复 @XXX」
- 回复时标题切换为「回复评论」
- article_admin.php 仅在有评论时显示评论链接

### 其他

- aboutus.php 大事记竖线自动拉伸、移动端横向布局
- online-works.php VIP 订阅徽章暗模式保持橙色渐变
- 创建 /manual/Sys/微信公众号说明.md

## V1.12.3 (2026-07-12)

### 修复

- 暗模式全局链接 hover 改为亮绿 `#a3d055`（原黑色与暗背景融合）
- podcast.php 移动端播放条吸附修复（html,body height:auto + JS scroll 补偿）
- sample.php 评论区域暗模式适配：人名白色、回复链接白色、发送按钮绿底

## V1.12.2 (2026-07-12)

### sample.php 优化

- 内联样式全部移入 batata.css，页面零内联 `<style>` 块
- 暗模式评论区域修复：人名白色、回复链接白色、发送按钮绿底白字

## V1.12.1 (2026-07-12)

### CSS 整合优化

- `style.css`（2222行）并入 `batata.css`，36 个页面移除 style.css 引用，统一为单一主样式文件
- 60 个页面 Google Fonts 3 条链接合并为 1 条，减少 120 次 HTTP 请求
- Fonts 加载改为非阻塞（`media="print" onload` + `display=swap`），慢网不卡页面渲染
- 移除 16 个未使用的旧组件 CSS 规则块

### header 导航重构

- 右侧图标重新排列：主题/宽度/RSS/微信/闪电/GitHub，等距 flexbox 对齐
- 全局暗/亮模式 + 全宽/标准切换图标，localStorage 持久化，所有页面共享
- `news.php` / `guide.php` 移除独立主题/宽度切换，统一由 header 控制
- 暗模式 JS 修复：DOM 就绪后更新图标、null 安全检查

### rss.php / restfull.php 适配

- `rss.php` 暗模式完整适配（订阅栏/面板/文章卡片/标题/表单）
- `restfull.php` 暗模式适配（API 请求卡片/方法标签/JSON 区/输入框）
- 修复 `api/header.php` 加载顺序，解决站点名不一致问题

### 其他

- `documents.php` 保留 FA6（工具栏图标需要）
- 多处暗模式颜色微调（标题/背景/输入框对比度）

## V1.12.0 (2026-07-12)

### 全局暗模式系统

- `header_nav.php` 新增暗/亮模式 + 全宽/标准切换图标，`localStorage` 持久化，所有页面共享状态
- `batata.css` 集中管理暗模式样式：body/footer/banner/标题/卡片/表单/表格/markdown/article-body 等通用元素
- 各页面特有元素暗模式内联适配：`index.php`（AI卡片/播报/服务）、`aboutus.php`（团队/大事记/合作伙伴）、`joinus.php`（表单/联系信息/反馈）、`software.php`（产品卡片/按钮）、`latest.php`（novel-card/section-card）、`video.php`/`podcast.php`（媒体卡片）、`openapi.php`（书籍封面3D效果）、`online-works.php`（书籍卡片/套餐卡）、`third-party-works.php`（按钮/产品卡片）

### 导航栏图标重构

- 右侧图标重新排列：RSS / 微信 / 闪电博客 / 主题 / 宽度 / GitHub
- 统一 flexbox 对齐，等距分布，hover 变色（GitHub 红/RSS 橙/微信绿/闪电红）
- `news.php` / `guide.php` 工具栏移除独立的主题/宽度切换，统一由 header 控制

### 页面重构

- `joinus.php` 全面重设计：卡片式布局、圆角表单、用户反馈列表美化
- `index.php` 内联样式清理：通知条/播报区/Welcome 图片均改用 CSS 类
- `aboutus.php` 大事记重写：硬编码内联样式 → CSS 类 `.timeline-*`，居中布局

### TinyMCE 增强

- 保存时自动将 `<video>` 包裹进 `broadcast-video-wrap` 容器，补齐属性
- `<img>` width/height 自动剔除，禁止 URL 相对路径转换

### 新增页面

- `podcast.php`：AI 播客音频展示/播放/下载，支持封面、连播
- `color.php`：在线取色器、配色方案、Pantone 色卡、颜色代码大全

### 媒体管理

- `media_admin.php`：支持 `/upload/audios` 目录、封面图片选择、标签改名

## V1.11.14 (2026-07-11)

### news.php 工具栏与暗模式

- 新增与 guide.php 一致的工具栏：文档样式切换（GH/B）、暗色/亮色主题切换、宽度切换（全宽/标准）
- 完整暗模式适配：侧栏、分类导航、正文区、GitHub/Batata 样式、页脚
- 顶部导航暗模式：logo/菜单字体白色，下拉菜单深色背景，社交图标反白 + hover 色
- sticky 吸顶修正（html,body height:auto），侧栏防穿透工具栏

### guide.php 暗模式

- 顶部导航暗模式适配：logo/菜单字体、下拉菜单、社交图标（与 news.php 一致）

### TinyMCE 视频标签

- `article_admin.php` / `chapter_admin.php` / `novel_admin.php`：保存时自动将未包裹的 `<video>` 放入 `broadcast-video-wrap` 容器，补齐 id/style/preload/controls 属性，`<source>` 添加 data-mce-fragment

## V1.11.13 (2026-07-11)

### Markdown 编辑器增强

- `markdown.php` 工具栏新增「插入音频」「插入视频」按钮，点击插入 HTML5 `<audio>` / `<video>` 模板代码
- `flashnote` 同步新增音频/视频插入按钮，与 markdown.php 保持一致
- 视频模板统一为 `<video poster="" controls="controls" width="" height=""><source src="" type="video/mp4">`

### TinyMCE URL 处理

- `article_admin.php` / `chapter_admin.php` / `novel_admin.php`：新增 `relative_urls: false`，禁止 TinyMCE 将绝对路径转为相对路径，解决封面图片地址被截断的问题

### 播客说明文档

- 新增 `manual/Sys/音频说明.md`，介绍两类音频来源（第三方音频 + AI TTS 合成）及制作流程
- `podcast.php` 引用更新为音频说明.md

## V1.11.12 (2026-07-11)

### AI 播客

- 新增 `podcast.php`：扫描 `/upload/audios` 音频文件，卡片式展示，底部播放条（上/下一首、进度条、时间），播完自动连播，有封面显示封面
- `header_nav.php` / `footer_nav.php`：文创商店新增「AI + 播客」菜单；「AI + 文创」→「文创商店」

### 媒体管理增强

- `admin/media_admin.php` 上传媒体文件支持 `/upload/audios` 目录，音频格式扩展至 m4a/aac/wma/opus/oga/weba
- 新增封面图片字段：可选择 `admin/images/covers/` 下的图片作为音视频封面，网格弹窗展示
- 标签改名：视频生成技能→媒体生成技能，素材来源→文本素材来源，视频脚本→媒体制作脚本

### TinyMCE 图片宽高

- `article_admin.php` / `chapter_admin.php` / `novel_admin.php`：`GetContent` 事件中剔除 `<img>` 的 width/height 属性，图片尺寸由 CSS 统一控制

### 网站配色工具

- 快捷色盘按色相环排列（红→橙→黄→绿→青→蓝→紫→灰）
- 颜色代码大全：40 种常用命名颜色对照表（中英文 + HEX + RGB）
- RGB 颜色查询对照表：736 色按 10 组色相分组展示
- 色彩搭配方案：191 组经典配色按首色色相分为 10 组展示
- Pantone 色卡：44 个年度色+经典色，按色系分组，中英文名，两列布局

### 导航

- `header_nav.php` / `footer_nav.php`：「网页颜色」→「网站配色」；footer 新增网站配色、代码格式化链接

### read.php

- 章节页七猫/番茄 API 链接改为通过 `restfull.php?url=` 打开

## V1.11.11 (2026-07-11)

### 网站配色工具

- 新增 `color.php`：在线取色（取色器 + 色相环排序 40 色色盘，HEX/RGB/HSL 实时转换，点击复制）
- 颜色代码大全：40 种常用命名颜色对照表，默认收起可展开，点击行应用
- 网页配色方案：8 组预设（Batata 绿、Material Design、扁平化、柔和色、暗夜等），色块点击复制
- 更多色彩搭配：8 组扩展方案（中国传统色、莫兰迪、马卡龙、霓虹、大地色等），默认收起可展开
- 渐变色阶：基色自动生成 10 级渐变
- 知名配色工具链接：ColorHunt / Coolors / Adobe Color / CoolHue / uiGradients / Flat UI Colors 等
- 底部版权信息

### 导航菜单

- `header_nav.php` 系统管理新增「网站配色」子菜单
- `footer_nav.php` 系统管理新增「网站配色」「代码格式化」链接

### read.php

- 章节页七猫章节内容API、番茄章节内容RSS 链接改为通过 `restfull.php?url=` 打开，支持 JSON 格式化/语法高亮

## V1.11.10 (2026-07-10)

### 图片默认宽度

- `css/batata.css`：`.markdown-body` / `.article-body` 内图片未指定宽度时默认 60% 容器宽并居中（对齐类 `.img-left/.img-right/.img-center` 不受影响）

### 代码高亮修复

- `documents.php` / `markdown.php` / `guide.php`：样式切换（GitHub ↔ Batata）时重调 `Prism.highlightAll()`，防止类名变更导致高亮丢失

### documents.php 外部网页代理修复

- 代理返回内容注入基础代码块样式（`.token-line { display:block }` 等），解决 Docusaurus 等文档站代码行挤在一起
- 复制 Markdown 的 `<pre>` 处理增加 `.token-line` 行识别——逐行提取 textContent 以 \n 拼接，保留换行缩进
- 代理内容不再由本地 Prism 重高亮（避免破坏源站已有高亮结构）

### 服务器运维

- 清理 Nginx 轮转日志、Systemd Journal、旧 syslog、MongoDB 日志、过期备份，磁盘 93% → 78%
- PHP-FPM 进程池扩容（max_children 5→20），解决 RSS 抓取导致的 502

## V1.11.9 (2026-07-10)

### documents.php 外部网页代理

- 左侧栏底部新增 URL 输入框（输入组 + 打开 / 清空按钮），输入任意网页地址可在右侧内容区显示该网页主内容
- 服务端代理抓取（curl 优先 + file_get_contents 回退），自动识别编码并转为 UTF-8
- 智能主内容提取：优先 `<article>` / `<main>`，回退到文本最多的 div/section，自动移除脚本/样式/导航/页脚等干扰元素，图片链接相对路径补全
- 反爬兼容：普通站 Chrome UA 请求，若检测到 JS 反爬挑战（如 CSDN）自动降级百度蜘蛛 UA 重试
- DOM 健壮性：XPath 噪声过滤排除 html/body 根元素避免误删整页；遍历前 snapshot 避免 PHP 8.1 实时 NodeList 问题

## V1.11.8 (2026-07-08)

### 代码格式化工具

- 「系统管理」菜单新增「代码格式化」工具（`code_formatter.php`）：支持 自动识别 / JSON / JavaScript / TypeScript / CSS / SCSS / LESS / HTML / XML，可选缩进（2/4/Tab），格式化 + 复制 + 示例 + 清空，`Ctrl+Enter` 快捷键
- 纯客户端处理（代码不上传），基于**自托管 js-beautify**（`js/beautify/`），国内可达、不依赖 CDN

### 复制 Markdown 增强

- `documents.php`「复制Markdown」转换器整体重写：正确还原数学公式（KaTeX→原始 TeX）、脚注、GFM 提示框、`[TOC]`、`<details>`、嵌套列表/列表内代码块、无 `thead` 表格、含反引号的行内/围栏代码等

### 界面

- `markdown.php`、`documents.php` 文档样式切换器右侧的转换按钮改为仅图标（保留悬停提示）

## V1.11.7 (2026-07-06)

### 文档导出 PDF / Word

- `markdown.php`：文档样式切换器右侧新增「转换成PDF」「输出Word」按钮
  - PDF：`@media print` 打印样式，只输出正文、保留当前 GitHub/Batata 样式、优化页边距与分页；点击触发浏览器打印，另存为 PDF
  - Word：把渲染后的正文包成 Word 可打开的 HTML `.doc` 一键下载，图片/链接相对路径转绝对，内联表格/代码/引用/CJK 字体样式
- `documents.php`：右侧内容区样式切换器同样新增「转换成PDF」「输出Word」按钮，内容取 `#content-area`，文件名取当前选中导航项；加载外部 iframe 时随切换器隐藏
- 均为纯客户端方案、零服务端依赖（无需 wkhtmltopdf / Chromium）

## V1.11.6 (2026-07-06)

### Parsedown 表格渲染

- `Parsedown.php`：新增 `normalizeTables()` 预处理——为「紧贴上一段落、中间无空行」的表格自动补一个空行，修复表头被并入上一段落、整张表当作纯文本渲染的问题（AI 生成文档常见：表格紧贴冒号行）。带围栏代码保护，只插空行不删内容；回归覆盖正常表/紧贴表/水平线/代码块内竖线/含竖线段落

### flashnote 侧栏

- 笔记列表顶部前 5 条按最新更新，第 6 条起按标题字母升序（顺序：数字/符号 → 英文字母 → 汉字拼音）
- 第 5 与第 6 条之间加分割线；文档行间距缩小（note-item padding 10px→6px）
- 标准预览支持**带缩进的围栏代码块**（列表项内缩进的 ``` 代码不再当乱码）

### documents.php 随笔导航

- 随笔列表与 flashnote 对齐：前 5 最新 + 分割线 + 字母序；分割线颜色统一为 `rgba(255,255,255,0.22)`

## V1.11.5 (2026-07-05)

### 收费作品标识

- `online-works.php`：带魔法参数 `?need_sub=33333` 访问时，页面顶部提示条列出所有需要订阅（VIP）的作品书名；普通访问无变化
- `openapi.php`：收费（VIP，`vip==1`）作品在封面右上角叠加金色锁形「VIP」角标

## V1.11.4 (2026-07-05)

### 网络小说「书籍信息头更新」闭环

- `admin/novel_admin.php`：保存七猫/番茄书籍信息头时写入 `update='header'` 标记；加载书籍列表时清空更新时间超过 24h 的头标记，使标记自动过期
- `admin/books_admin.php`：已上架书籍操作列的「查看更新」改为按更新状态显示——仅当头 `update=header` 或章节 `update=new/modify` 且更新时间在 24h 内时才出现
- `latest.php`：书籍信息头 `update=header`（24h 内）时，卡片显示「《书名》书籍信息有更新」；仅改头、无新章节的书也进入最新列表
- `admin/chapter_admin.php`：书籍信息头 24h 内有更新时，章节表格底部显示橙色重要提醒「即使章节未更新也要点击『发布』」，24h 自动过期

### 修复

- `flashnote/public/app.js`：标准预览表格行尾 `|` 改为可选（兼容 GFM）——`| |   - …` 这类留空首格、行尾无 `|` 的续行不再掉出表格被当作段落渲染
- `admin/media_admin.php`：修复「上传媒体文件」tab 页脚与内容区间距过小——平衡两个 tab 的 `<div>` 嵌套（媒体 tab 原先漏闭合 `.container`），使间距与「上传图片」tab 一致

## V1.11.3 (2026-07-04)

### `guide.php` 暗主题优化

- **整体配色改为 macOS 风格中性灰**：原 navy-purple 偏蓝色系（`#1a1a2e`/`#252540`…）统一替换为中性灰（页面 `#1e1e1e`、面板 `#2a2a2a`、激活 `#323232`、边框 `#3a3a3c` 等）；品牌绿与蓝色链接保留
- 修复 Batata 样式正文过灰（改 `#e0e0e0`）、表格配色不协调（两种样式统一暗色交替行）
- GitHub 样式暗色优化：github-markdown.css 暗色变量仅在系统深色偏好下生效，本站手动切换触发不了，故重声明 GitHub 暗色令牌，一次性适配引用块/hr/链接/h5-h6/边框等所有 `var()` 元素
- GitHub 样式代码高亮暗模式下整套统一为 Batata/prism 暗色主题（原 GitHub 浅色语法主题的字符串/标点等在暗代码块上几乎不可见）

### `Parsedown.php`

- 修复大文档（含较多 `<details>` 折叠块 + 围栏代码块）渲染为空：`normalizeDetailsBlocks` 中保护围栏的正则存在灾难性回溯，大文档下击中 PCRE 回溯上限使 `preg_replace_callback` 返回 null → 整篇为空；改为无 dotall 的 tempered greedy 写法

## V1.11.2 (2026-07-04)

### `documents.php`

- 修复站长日记为空：目录引用由小写 `manual/pblog` 更正为实际的 `manual/Pblog`（Linux 大小写敏感，原路径 `is_dir` 匹配不上导致日记列表读不到文件）

## V1.11.1 (2026-07-04)

### `documents.php`

- **修复会话过期后点导航项的登录体验**：带 `action` 的 AJAX 请求会话过期时返回 401（不再把登录页 HTML 塞进右侧面板），前端整页跳转到登录流程；登录后自动回到本页并**打开当初点击的那篇文档**
- md 文档标题下的「移动」按钮改为**弹窗选择目标目录**（递归列出 `manual/` 全部子目录，默认 `/manual`），仅管理员可见；服务端加管理员校验、目标目录 `manual/` 范围校验、同名拒绝

### `header_nav.php` — 顶部右侧图标

- 图标顺序调整为 Github / RSS / 微信 / markdown / ⚡闪电笔记；移除 FlashNote 旧图标
- markdown 图标改为内联 SVG **实心版**并缩小，与微信之间拉开间距；恢复左侧三个图标原间距
- 新增**闪电图标**链接闪电笔记（flashnote）主页，hover 变红
- 清理已无引用的 `.flashnote-icon` 死样式

### 其他

- `admin/maintenance.php` 系统设置「哲学链接地址」选择器默认列出 `/manual/Philosophy` 下的 md 文档
- `mdreader.php` 返回按钮后新增「关闭页面」按钮

## V1.11.0 (2026-07-04)

### FontAwesome 6 统一自托管

- 全站原有 38 处从 cdnjs 拉取 FA6，且混用 `6.0.0`/`6.4.0`/`6.5.0` 三个版本；现统一为**自托管单一版本 6.5.0**（6.x 内向后兼容，是三者的安全超集）
- 新增 `css/fontawesome6/`（`all.min.css` + 8 个 webfont：brands/regular/solid/v4compat 各 woff2+ttf），36 个 PHP 文件的 FA6 `<link>` 统一改为本地绝对路径 `/css/fontawesome6/css/all.min.css`
- 去除外部 CDN 依赖（可靠性/隐私/离线可用）、全站 FA6 版本一致；前台 FA 4.6.3 维持不动

### `header_nav.php`

- 顶部「技术博客」图标由 FontAwesome 书本图标改为**内联 SVG 的 markdown 官方标志**（矢量单色、`currentColor` 随字号缩放并支持 hover 变色，不再依赖栅格图片）

## V1.10.9 (2026-07-04)

### 前端体验修复

- `index.php` 顶部通知条改用 `sessionStorage`：本次浏览会话内关闭后不再弹出，关闭浏览器（新会话）后重新出现
- 首页 slider 指示圆点未居中（偏右）修复：`.callbacks_tabs` 由 `left:48%` 改为 `left:50% + transform:translateX(-50%)` 真正水平居中，媒体查询同步
- `guide.php` 移动端下拉导航菜单被吸顶工具栏遮挡修复：给 banner 加更高层级（`z-index:101`），使菜单显示在工具栏之上

### `markdown.php`

- 打开某文档时，「保存路径」下拉框自动选中该文档所在目录（归一化路径匹配），未打开文件时默认 manual 根目录

### FlashNote（闪电笔记）

- 左栏 logo 与浏览器标签改用 `favicon.ico` 图标（server.js 增加 `.ico` MIME、favicon 复制到 `public/`）
- 页面 title 由 `FlashNote` 改为「闪电笔记」

## V1.10.8 (2026-07-03)

### 站点通知功能（后台可配置）

- **首页顶部通知条**：`index.php` 顶部新增可开关的横幅（喇叭图标 + 文案 + 可选链接 + 关闭按钮），关闭状态用 localStorage 记忆，文案/链接变化后重新出现
- **前端页面通知框**：参照 DeepSeek usage 页样式，新增卡片式信息框（图标 + 标题 + 多行文案 + 可选「查看详情」链接），显示在 banner 与形象宣传图之间
  - 后台可**多选指定显示页面**（17 个前端页面复选框），只有勾选的页面才显示
  - 位置间距按页面结构自适应：内容页在 4em section 内用负边距上提（间距 ≈22px），`index.php`/`guide.php` 的通知框在 banner 之后、不加负边距（避免覆盖 banner）
- 配置项均存入 `sys_db.site`，在 `admin/maintenance.php`「系统设置」卡片中统一编辑
- 修复 `noticeBoxPages` 从 MongoDB 读出为 `BSONArray` 对象导致 `is_array`/`in_array` 判断失效、通知框始终不显示的问题

## V1.10.7 (2026-07-03)

### `markdown.php` — 文件管理增强

- 新建文件增加保存路径下拉框
- 新建目录交换目录名与路径顺序
- 文件上传路径样式统一
- 所有文件增加重命名按钮（仅管理员可见）
- 目录增加重命名/删除按钮（仅管理员可见），按钮位于右侧
- 专题目录树支持多级递归展示，目录/文件按字母升序排列
- 目录下文件缩进与子目录对齐

### `guide.php`

- 右侧目录标题字号增大
- 工具栏最右侧增加 GitHub 图标链接
- 移除 Vibe-Trading 导航项

### 路径迁移

- `software.php`、`online-works.php`、`video.php`、`gallery.php`、`third-party-works.php` 介绍文档路径从 `./manual/` 迁至 `./manual/Sys/`

## V1.10.6 (2026-07-03)

### `guide.php` — 左侧导航重构为递归树

- 数据源改为 `/manual/documents/`，递归扫描目录和文件生成多级导航树
- 文件/目录混合按名称升序排序，自动去除数字前缀（如 `1-快速入门` → `快速入门`）
- 目录可展开/收起，文件点击加载 Markdown 内容
- 修复扫描函数缺少 `global $guideDir` 导致文件路径为空的 bug
- 面包屑改为层级显示（路径拆分 + 去数字前缀 + 去扩展名）
- 更新日志和 Vibe-Trading 与一级导航同级

## V1.10.5 (2026-07-02)

### 文档阅读体验

- `guide.php` 暗模式下 GitHub 文档样式的代码块背景与代码文字背景统一，修复工具栏暗色切换细节
- `documents.php` 的「Markdown文档」导航递归解析 `manual/` 子目录，支持任意层级目录展开；站长日记目录保持独立

### Markdown 文档管理

- `markdown.php` 新建目录时可从下拉框选择 `/manual` 或任意层级子目录，默认 `/manual`
- 文件上传新增上传路径选择，支持上传到 `/manual` 的任意层级子目录，默认 `/manual`
- 新建目录、移动与上传操作增加目标路径校验，限制在 `manual/` 范围内
- 加密文档目录名称统一为 `Pblog`

### 开发与内容同步

- 新增 AI 要闻、软件录入、视频脚本 Agent skills 及生产同步辅助脚本
- 同步 Vibe-Trading 中文 README、站点静态页面与 Claude 图片资源

## V1.10.4 (2026-07-02)

### `guide.php` — 用户指南工具栏与布局修复

- 修复工具栏标题「Batata 用户指南」与右侧切换图标未贴边、聚在中间的问题：根因是 Bootstrap `.container` 的 `::before/::after` 清除浮动伪元素在 `display:flex` 下被当作 flex 项目，配合 `justify-content:space-between` 占据两端把真实内容挤向中间；禁用这两个伪元素后标题贴左、图标组贴右
- 修复工具栏垂直滚动约一屏后不再吸顶：根因是 `batata.css` 的 `body{height:100%}` 把 body 盒子锁死为一屏高，`position:sticky` 的工具栏只能在此范围内吸顶；本页改为 `body{height:auto;min-height:100vh}` 让 body 随内容增长，工具栏全程吸顶
- 修复左侧「文档导航」栏吸顶时钻入工具栏下方被遮挡：侧边栏 `sticky` 的 `top` 由 `20px` 调整为 `60px`（与右侧目录一致），停在工具栏下方
- 文档导航项改为按文件创建时间升序排列

## V1.10.3 (2026-07-02)

### `markdown.php` — 导航与文档管理增强

- 导航编辑按钮改为**移动按钮**，弹出模态框选择 `manual/` 子目录将文件移入，仅管理员可用
- 新增**专题目录**导航组：显示 `manual/` 下子目录，每个目录可展开查看内含文件
- 「普通文档」→「其他文档」，目录项不再出现在文件列表
- 新建文件与上传文件之间新增**新建目录**功能，输入目录名即可在 `manual/` 下创建，仅管理员可见
- 目录导航条样式增大（padding/font-size）

### `guide.php`

- 导航目录路径 `manual/guide/` → `manual/Guide/`

## V1.10.2 (2026-07-02)

### `guide.php` — 用户指南全面升级

- **动态导航**：左侧导航改为扫描 `/manual/guide/` 目录下 `.md` 文件，自动生成导航项
- **右侧目录**：新增右侧目录栏，自动解析 h1-h6 标题，滚动高亮当前位置，点击平滑跳转
- **工具栏吸顶**：banner 下方增加图标工具栏（Apple 图标 + 标题置左，设置项置右），滚动时固定顶部
- **暗色/亮色切换**：太阳/月亮 SVG 图标切换主题，支持 localStorage 持久化
- **全宽/标准宽度切换**：一键切换全宽模式，Bootstrap 多断点覆盖
- **中英文切换**：地球图标切换 UI 语言（数据属性驱动）
- **面包屑导航**：Home 图标 + 当前文档名，切换语言/文档时自动更新
- **文档样式**：GitHub/Batata 样式切换器保留

### `books_admin.php` — 书籍下载

- 操作列新增「下载」链接，生成《书名》+ 空行 + 正文的干净 txt 并自动下载到 `/upload/books/`
- 草稿书籍也支持下载，兼容 `_book_` 前缀文件

### `article_admin.php`

- 文章列表交替行背景色（隔行灰白）

### `filemanager.php`

- 新建/上传文件区域支持折叠，默认收起

### `admin/qimao_admin.php`

- 删除已废弃文件

## V1.10.1 (2026-07-02)

### 后台 UI 增强
- **books_admin.php**：文章列表→书籍列表，交替行颜色，重命名同步更新文件内 book_id
- **novel_admin.php**：作品列表→网文列表，交替行颜色，当前编辑高亮，七猫/番茄信息头折叠
- **chapter_admin.php**：交替行颜色，增加下拉刷新（引用 admin_footer.php）
- **admin_nav.php**：菜单顺序调整 - 书籍管理移至连载管理前
- **api/tomato_latest_chapter_list.php**：最新更新条件增加 `update=new|modify` 筛选
- **删除** `admin/novel_publish_1.php`

## V1.10.0 (2026-07-02)

### `admin/chapter_admin.php` — 发布链路多项修复

- **修复发布后状态被覆盖回"已更新"的根因**：编辑/新建保存是整页表单 POST，页面当前文档即该次 POST 的响应；点击「发布」成功后的 `location.reload()` 会重放这份保存 POST，把刚发布的状态又写回。改用 **PRG（Post/Redirect/Get）** 彻底根治
- 修复"编辑保存后立即点发布"的竞态：保存表单提交时同步禁用顶部「发布」按钮，避免发布请求与姗姗来迟的保存请求前后抢跑
- 修复新建章节表单重复提交（双击/网络延迟）会把已发布状态覆盖回"新增"：前端加提交标志位拦截二次提交，后端"已存在则更新"分支增加内容比对，纯重复提交直接跳过
- 修复"初始化同步每次GET都比对TXT与DB"导致的重复插入章节与状态回退：改为仅当DB完全无章节记录（导入老书场景）才触发
- 修复发布写入 TXT 时按 `chapter_id` 去重不彻底导致的循环复制问题
- 修复新建章节 `chapter_id`/`index` 类型不统一（字符串 vs 整数）导致与历史章节混排时排序错乱；已批量清洗历史数据
- 修复发布导出的 TXT 段落间出现空行（TinyMCE 提交内容标签间残留 `\r\n`，与 `</p>`→`\n` 转换叠加）
- 修复 TinyMCE 多段落编辑排版丢失：改为仅在已有 `<p>` 标签开头补全角空格缩进，不再 strip 后用不同函数重建（避免破坏对齐/加粗等格式）
- 状态标签「自动新增」（`upgrade==0`）改名为「导入」
- 顶部菜单改用共享 `admin_nav.php`，与 novel_admin 保持一致；操作列「预览」改名「查阅」；新建/编辑表单字段布局改为 `label:input` 同一行
- 移除清空功能与顶部上架按钮；操作按钮顺序调整为 新建｜发布｜预览｜删除｜返回

### `admin/works_admin.php`

- 已下架作品新增「重命名」功能，位于「删除」之前：弹窗输入新文件名，服务端强制保留下划线前缀（防止重命名后被误判为已上架），`basename()` 防路径穿越，目标文件名已存在则拒绝
- 文件列表操作链接「发布管理」改名为「连载管理」

### `admin/novel_admin.php`

- 整合七猫 + 番茄双段书籍信息表单（同页保存），删除独立的 `qimao_admin.php`
- 「新建」改名「创建新书」；「导出草稿」整合为页内 AJAX 执行 + 结果弹窗（审核上架/关闭）
- 添加新书卡片增加封面列（默认图 `img_00000.png` + 选择封面），响应式网格布局
- 编辑书籍信息卡片标题显示为「编辑《书名》书籍信息」（取实际书名）
- 作品列表中未入库书籍的操作列显示「点击入库」，链接同书号（`?edit`）

### `latest.php`

- **修复打开长时间白屏**：GitHub 404/文件不存在的探测结果此前从不写入缓存，导致每次打开页面都对根本不存在的文件（如非 Rust 仓库探测 `Cargo.toml`）重新发起实时请求，21 个软件仓库累积后长达十余秒；改为无论成功/失败都写入缓存，缓存过期时先用旧数据渲染，实际刷新通过 `fastcgi_finish_request()` 推迟到响应发送之后的后台执行。实测由约 12.5s 降至 0.2~0.3s
- 指定 `book_id` 与不指定时，章节筛选统一为「`updated_at` 24 小时内 且 `update` 为 `new`/`modify`」；指定 `book_id` 时按章节顺序排列，不指定时按发布时间倒序展示全部小说
- 封面 `img_{book_id}.jpg` 不存在时回退显示默认封面 `api/images/img_00000.png`

### `read.php`

- 移除「MongoDB番茄书籍信息库」与「MongoDB章节数据库」两处「刷新」功能（均为管理员可见的破坏性操作，前者删除整本番茄书籍记录+全部章节，后者删除单章节记录），连同对应服务端 `refresh` 处理分支一并下线

## V1.9.6 (2026-06-29)

### `documents.php` — 技术博客

- 「媒体文档」导航改为 `manual/` `upload/`（含子目录）的**递归目录树**，可逐级折叠展开
- 「备份归档」文件列表中目录名可点击进入浏览子目录，附「返回上级」与当前路径

### `admin/filemanager.php`

- **可读写文件树改为 AJAX 懒加载 + 前端折叠**：展开状态存 sessionStorage，不再塞进 URL，消除展开多目录时 URL 越来越长甚至超限的问题，且免整页刷新
- 修复「新建文件」保存路径错误（web-root 相对路径在 admin/ 下解析失败）；成功后不跳转、顶部提示创建成功；tab 名「新建文本文件」→「新建文件」
- 可读写树根文件白名单调整为 `README.md` `CHANGELOG.md` `CLAUDE.md` `LICENSE`，文件名可点击在预览窗口查看内容；预览窗口去掉人为 500ms 延时，点击立即弹出

### 安全与清理

- **删除生产 web 根可被直接下载的 `.env`**（曾 HTTP 200，属密钥泄露风险）；`.env`/`.gitignore` 从 filemanager 白名单移除；二者不再部署到生产
- 删除根目录冗余 `batata.css`（统一以 `css/batata.css` 为准）
- 删除一批无引用的废弃文件：`shellexec.php`（错误日志外泄）、`tailwind_icon.php`、`testlogging.php`、`testphp.php`、`zip.php`、`docreader.php`、`collections_stats.php`，以及遗留的 `download.php`、`backup.php`、`migrate.php`、`viewer.php`、`view_collections.php`、`admin_nav.php`、`bootstrap.php`、`copy2clip.php`、`.DS_Store` 等

## V1.9.5 (2026-06-29)

### `admin/filemanager.php` — 文件保存位置动态化

- 文件保存位置选择器由硬编码改为动态递归目录树：根目录为 `upload/` `manual/` `backups/` `restores/` `api/download/` 及其子目录（最多 2 层）
- 选择框旁新增「新建目录」按钮，可在当前所选目录下创建子目录（AJAX mkdir，含路径安全校验）
- 参照 `admin/media_admin.php` 实现

## V1.9.4 (2026-06-29)

### `admin/article_admin.php` — 搜索跨越全部版块与专题

- 搜索表单的隐藏 `location`/`subject` 改为固定 `all`，点击搜索不再受当前下拉筛选影响，始终跨全部版块和全部专题搜索

## V1.9.3 (2026-06-29)

### 导航菜单

- `header_nav.php`「加入我们」由直链改为下拉：首项「联系我们」关联 `joinus.php`，并把原「AI + 文创」下的分隔线与实用网址（iHover/AweSome/BootStrap/ModelRank）移入其中

### `admin/media_admin.php` — 上传位置与目录管理

- 上传位置 select 由硬编码改为**递归目录树**：图片 tab 列 `images/` `api/images/` `admin/images/` 及其子目录、子目录的子目录；媒体 tab 以 `upload/videos/` 为根递归
- select 同行新增「新建目录」按钮（图片/媒体两个 tab 通用），可在所选目录下创建子目录
- 图片列表 / 媒体文件列表均按递归子目录分组展示，**默认不展开任何目录**

### `video.php` — 今日视频

- 递归列出 `/upload/videos` 子目录视频，**按目录分组**展示
- 子目录视频（如 broadcast、ai_news）**仅管理员登录可见**
- 子目录分组改为带背景色的**大标题横幅**，可点击**展开/折叠**，默认全部折叠；全屏连播贯穿全部可见视频

### `admin/article_admin.php` — TinyMCE 本地文件选择器

- 图片/媒体对话框地址框增加浏览按钮（`file_picker_callback`）：弹出选择器可切换目录、点选本地图片/媒体文件回填地址
- 新增 `picker_action(dirs/files)` AJAX（仅 admin，目录白名单 + 禁 `..` 越级）

### 文件迁移

- `/upload/ai_news` → `/upload/videos/ai_news`；`/upload` 根下散落视频 → `/upload/videos/`（要闻播报类归入 `/upload/videos/broadcast/`），同步更新文章正文与 `ai_news_videos.videos` 路径引用
- 删除已废弃的 `ai-news-video` 技能

## V1.9.2 (2026-06-28)

### 文创菜单与栏目介绍

- **菜单改名**（`header_nav.php` / `footer_nav.php`）：文创商店 → `AI + 文创`，定制开发 → `AI + 开发`，在线网文 → `AI + 网文`，今日视频 → `AI + 视频`，摄影欣赏 → `AI + 美图`；「文创商品」移至「AI + 美图」之后
- **栏目介绍文档**：新增 `manual/软件作品介绍.md` / `在线作品介绍.md` / `摄影作品介绍.md` / `第三方作品介绍.md`，分别由对应栏目页加载；正文统一用 `<details><summary>这里有什么</summary>` 折叠（与 `视频说明.md` 一致）

### `video.php` 今日视频页

- 视频卡片名称统一为**视频文件名**（不再回退用途名）
- 新增**文档样式切换器 + Markdown 文字说明**（读取 `manual/视频说明.md`，参照 software.php）
- 新增**抖音式全屏连播播放器**：点击卡片进入全屏，移动端上滑下一个/下滑上一个，桌面方向键与按钮，播完自动连播
- 移动端播放器改进：自定义静音键移至顶栏最左（避免与右上角关闭键误触）；修复 `position:fixed` 被 body `transform/will-change` 破坏导致的非全屏定位

### 修复

- `gallery.php` 灯箱移动端全屏居中（同源问题：打开时清除 body 的 transform/will-change）

## V1.9.1 (2026-06-28)

### 视频生成工作流（`video.php` + `admin/media_admin.php` + 新技能）

- **新增 `video.php`「今日视频」页**：参照 latest.php 骨架 + media_admin 卡片样式，扫描 `/upload/videos` 按时间倒序卡片展示，用 `ai_news_videos.videos` 元数据丰富；文创商店菜单（header/footer）在「在线网文」与「文创商品」间新增「今日视频」入口
- **`media_admin.php` 媒体 tab 增强**：
  - 「项目技能」→「视频生成技能」；新增「素材来源」（弹窗从 `article_db` 选书 `tomato_books` → 选章节 `chapters`）与「视频脚本」（textarea + 编辑/锁定切换）
  - 新增 `skill_action`、`material_action` AJAX 端点（仅 admin）；`skill_path` / `material_*` / `video_script` 随保存持久化
  - 上传卡片底部新增「自动生成视频」技能使用说明
- **新增技能 `ai-video-script`**：据视频记录素材（章节正文）按剧透口吻生成 <60 秒视频脚本，写入 `video_script`；配套 edge-tts + 书封背景 + 字幕的竖屏 mp4 合成流水线

## V1.9.0 (2026-06-28)

### `latest.php` — 软件版本汇总表与版本检测

- **版本检测对齐技能 `ai-software-input`**：新增 `detectRepoVersion()`，按 release/tag → `package.json`/`pyproject.toml`/`pubspec.yaml`/`Cargo.toml`/`tauri.conf.json` → `CHANGELOG` 兜底的优先级解析仓库真实最新版，修复 Python 等非 Node 项目（如 Vibe-Trading）汇总表「当前版本号 > 最新版本号」倒挂问题
- **软件版本汇总表**：在「软件名称」后新增「作者」列（显示仓库 owner）
- **软件名称锚点链接**：每个详情卡片加 `id=sw-card-N`，汇总表名称点击跳转到对应卡片
- **点击排序**：「序号」（数值）与「软件名称」（`localeCompare`）表头支持点击升/降序，两列互斥、仅重排行不影响锚点
- **移动端适配**：所有单元格 `nowrap`，表格外层加横向滚动容器，窄屏可横向滑动
- 页面标题由「更新监控」改为「最新作品」

## V1.8.9 (2026-06-28)

### 新增 — 软件信息自动录入技能 `ai-software-input`
- 触发语「请帮我录入/更新 `<GitHub仓库URL>` 软件的基本信息〔，价格XXXX〕」，自动抓取仓库 README/元信息，生成中文软件基本信息并 upsert 到 `software_db.products`
- 名称格式 `仓库名(首字母大写) - README大标题软件名`；价格未给默认 9.9；自动带 `github_repo`（关键字）与 `skill_path`（默认本技能路径）
- 已批量录入 18 个仓库的软件信息（iFTPServer、file-transfer、flashnote、Vibe-Trading、oh-my-posh、ghostty、localsend 等）

### `admin/software_admin.php` — 软件管理增强
- 添加软件卡片新增「GitHub 仓库」输入框 + 仓库选择（新标签打开 GitHub 仓库页）
- 新增「项目技能」只读路径 + 「修改」在线编辑 SKILL.md 弹窗（按技能名自动生成 `skills/技能名/SKILL.md`，支持新建/选取）+ 「下载」另存 SKILL.md
- 填入仓库后名称为空自动取仓库名（首字母大写）；价格默认 0、允许 0 元
- 产品列表、定制开发需求列表名称前增加「序号」列
- 添加软件卡片底部增加「自动录入备忘」提示
- 产品文档新增 `github_repo` / `skill_path` 字段；技能读写 AJAX 限定 `skills/` 下且文件名 `SKILL.md`

### `admin/article_admin.php`
- 文章列表卡片底部增加 `ai-news-update`（AI 要闻自动录入）技能使用备忘

## V1.8.8 (2026-06-27)

### `admin/maintenance.php` — 系统维护页面（原 migrate.php 改名）
- **重命名**：`migrate.php` → `maintenance.php`，涵盖 MongoDB 迁移 + 系统设置 + 维护模式
- **网站维护模式**：一键暂停/恢复数据库访问，通过 `/tmp/batata_maintenance.lock` 文件锁控制
- **系统设置卡片**：版本号/软件名/网站名/口号/哲学链接/形象图片，数据存 `sys_db.site`
- **图片选择器**：浏览 `/images/` 目录选图；**哲学文件选择器**：浏览 `manual/` 目录选 md
- **形象图片统一管理**：全站 12+ 页面形象宣传图由 `sys_db.site` 统一控制

### `api/version.php` — 站点设置加载
- `loadSiteSettings()` 从 MongoDB `sys_db.site` 读取，失败回退默认值
- 全站哲学链接、形象图片等硬编码统一替换为数据库变量

### 其他
- `admin/user_admin.php` 风格对齐 `software_admin`，按钮卡片化
- `joinus.php` 标题 → Contact us + 形象图片 + 白色背景容器
- `guide.php` / `latest.php` 新增形象宣传图片

## V1.8.7 (2026-06-27)

### `Parsedown.php` — 表格解析增强
- 根据表头行首尾是否有 `|` 自动区分有边框/无边框表格，输出 `<table class="table-bordered">` 或 `table-borderless`

### `markdown.php` — 表格分模式渲染
- **Batata 模式**：无边框表格仅水平线（GFM 风格），有边框表格四边网格线
- **GitHub 模式**：保持 `github-markdown.css` 默认样式
- 移除 JS 动态 class 操作，改用 Parsedown 服务端标记

### `admin/backup.php` — 备份功能修复
- 按钮「代码备份」→「应用备份」，函数 `backupAPP` 重命名
- `backupAPP`/`backupWebsite` 增加 `is_readable()` 防御检查，跳过不可读文件
- 修复 vim 临时文件（root:600）导致 `ZipArchive::close()` 权限拒绝的问题

### `documents.php` — 内嵌窗口布局优化
- **马克**：iframe 去 padding 填满右侧区域；**随笔**：上下 35px 左右无 padding
- `openInContent` 增加 `keepPadding` 参数

### 其他
- `api/version.php`：V1.8.5 → V1.8.7
- 删除废弃目录 `admin/uploads/`、`images/assets/`，加入 `.gitignore`

## V1.8.6 (2026-06-27)

### `markdown.php` — 顶部图标优化
- favicon 改用 `icons/icon_32x32.png`（30px 高度，比标题文字略高），添加 `display:inline` 防止全局 `img { display:block }` 导致换行

### `documents.php` — 内嵌窗口布局优化
- **马克**：iframe 去 padding 填满整个右侧区域（`height: 100vh`）
- **随笔**：iframe 上下保留 35px padding，左右无 padding（`height: calc(100vh - 70px)`）
- `openInContent` 函数增加 `keepPadding` 参数区分两种行为
- 加载其他内容时自动恢复 `.doc-main` 默认 padding

## V1.8.5 (2026-06-26)

### 导航菜单重构
- **菜单更名**：开发合作→产品服务、作品商店→文创商店、技术支持功能全面重排
- **产品服务**：合作声明、接口开发、最新作品、分割线、接口演示
- **文创商店**：定制开发、在线网文、文创商品、摄影欣赏
- **技术支持**：用户指南、在线笔记、技术博客、分割线、云剪切板、下载中心、媒体中心、分割线、P2P互传、聚合网盘

### `openapi.php` / `read.php` — 布局优化
- 接口测试→接口演示；封面说明移入接口信息列表；作品简介与接口演示移至封面下方
- 底部 API 链接增加间距；标题与封面间距对齐

### `latest.php` — 更新监控全面升级
- 新增 7 个 GitHub 项目展示（FlashNote / Vibe-Trading / World Knowledge 等）
- 动态获取版本号（`package.json` / CHANGELOG）；支持 `master` 分支仓库
- 卡片交替渐变背景 + Prism 代码高亮 + fixBadgeRows 徽章适配 + 样式切换器
- 内容折叠（10 行限制 + 查看更多）；Batata 简介改用本地 README.md

### `guide.php` — 两栏文档导航
- 左侧折叠导航树（用户手册/更新日志/Vibe-Trading），自动解析 md 标题层级
- 右侧 AJAX 加载内容 + Prism 高亮 + KaTeX 公式；样式切换器

### `filemanager.php`
- 清空临时文件按钮移至总体概览卡片，文字显示「清空临时文件」

### 其他
- `software.php`：软件产品→软件开发；`third-party-works.php`：外部商品→文创商品
- `online-works.php`：网络小说→网文订阅
- `api/version.php`：`$siteName` 调整为「穷鬼悟道」

## V1.8.4 (2026-06-26)

### 新增 — 新闻中心 `news.php`
- 全新新闻中心页面：头部沿用站点 `banner + header_nav` 风格，左侧按 `article_db.articles`（`location='新闻资讯'`）的 `subject` 分类导航，右侧经典阅读区
- 分类项可折叠展开（含当前文章的分类自动展开），分类标题加背景色与折叠箭头
- 左侧文章标题前按内容含视频/图片/纯文字显示对应图标（橙/蓝/灰）
- 点击文章标题 **AJAX 局部加载**到右侧、不刷新整页（`history.pushState` 同步地址栏，支持刷新直达、前进/后退）
- 正文 `http→https` 及 `../` 路径规范化；面包屑加大加粗；响应式布局

### 首页
- 「AI 要闻」「AI 要闻播报」两板块右下角新增「更多」按钮，进入新闻中心
- AI 要闻播报视频**循环播放**：点击播放后依次播放 3 篇文章视频并循环，高亮当前正在播放的文章标题
- 要闻播报取数 `subject` 由「AI要闻」改为「要闻播报」

### 后台列表排序
- `article_admin` 文章列表支持按作者/创建时间/更新时间排序；标题超 30 字截短显示（悬停看完整标题）
- `novel_admin` 作品列表支持按 Book_ID/书名/作者/创建时间/更新时间/状态排序
- `novel_publish` 章节列表支持按卷号/书号/章节号/标题/更新时间/状态排序；卷号移到书号之后

### 后台其它
- `media_admin` 表单标题改为「输入图片/媒体信息」，编辑载入显示「编辑图片/媒体信息」
- `user_admin` 测试数据种子抽取到 `admin/seed_users.php`，「生成测试数据」加强风险确认提示
- 移除 `migrate.php` 的头像路径修复卡片

### 全站
- 彻底移除「返回顶部」功能（PHP 页面：`footer_nav.php` 统一版 + `index.php` 内联版）

## V1.8.3 (2026-06-25)

### 媒体管理页（`admin/media_admin.php`）
- 同步生产环境的新版 Tab 界面（`tab-panel`/`tab-btn` 卡片式设计，替代旧版蓝色按钮）
- 修复「上传媒体文件」Tab 底部与版权信息间距过小：媒体分支补齐与图片分支对齐的收尾 `</div>`，两个 Tab 底部间距统一

## V1.8.2 (2026-06-25)

### 代码重构 — 版本信息统一管理
- 新建 `api/version.php`：集中管理 `$Version`、`$softWareName`、`$siteName` 及 `toHttps`/`extractFirstImage` 共享函数
- `api/header.php` 改为 `require_once 'version.php'` 获取版本号
- 删除 `api/extract_helpers.php`（合并至 `version.php`），10 个引用页面同步更新

## V1.8.1 (2026-06-24)

### 修复与维护 — 媒体管理、控制台报错与 Mixed Content 清理
- **媒体管理页（`admin/media_admin.php`）**：修复编辑按钮无反应的 bug —— `editMediaFile` 的参数名 `location` 遮蔽了全局 `window.location`，导致内联编辑跳转静默失败（既不跳转也不报错），改用 `window.location.href`
- **媒体管理页**：删除/取消登记按钮 onclick 中多余的反斜杠转义改为正常单引号；编辑/保存/调入编辑时按上传目录展开媒体列表对应目录；首次将 `admin/media_admin.php` 纳入版本控制
- **PullToRefresh 报错**：`footer_nav.php`、`admin/admin_footer.php`、`markdown.php`、`flashx.php` 统一改用 pulltorefreshjs 的 UMD 浏览器构建（`dist/index.umd.min.js`）并加 `typeof` 守卫，消除 `PullToRefresh is not defined`
- **Mixed Content（HTTPS）**：全站 24 个页面（14 php + 10 html）的 `http://fonts.googleapis.com` 字体表改为 `https://`，修复 HTTPS 下被浏览器硬拦截、字体不加载的问题
- **Tailwind 警告**：移除自托管 `js/tailwindcss-3.4.js` 的生产环境弃用 `console.warn`；`article.php` 改用本地文件替代 `cdn.tailwindcss.com`

## V1.8.0 (2026-06-24)

### 媒体管理系统 — `image_admin.php` → `media_admin.php`
- **图片+媒体双 Tab**：整合图片和音视频文件管理到统一后台
- **媒体文件上传**：支持分片上传到 `/upload` 及子目录，自动扫描子目录选项
- **媒体卡片**：视频缩略图预览、音频图标、文件类型图标；网格/列表视图切换
- **数据库分离**：图片 → `images_db.images`，媒体 → `ai_news_videos.videos`
- **孤儿清理**：图片/媒体各自独立清除磁盘文件已不存在的 DB 记录
- **编辑/登记**：已入库媒体文件支持编辑跳转（用途/简介/重命名），未入库文件内联登记
- **预览弹窗**：视频/音频/PDF/图片全屏预览，自动识别格式
- **文件过滤**：媒体 Tab 文件选择器限制 `audio/*,video/*`
- **导航更新**：admin_nav 「图片管理」→「媒体管理」

### 返回顶部统一优化
- 移除 19 页面各自内联的 `move-top.js`/`easing.js`/`UItoTop` 重复代码，统一由 `footer_nav.php` 提供
- `move-top.js` 改用浏览器原生 `scrollTo({behavior:'smooth'})`

### Parsedown — 脚注功能
- `[^id]` 引用 + `[^id]:` 定义，按引用顺序编号，文末汇总带回链；代码块保护

## V1.7.9 (2026-06-24)

### Parsedown — 脚注功能实现
- **脚注引用**：`[^id]` 按首次出现顺序自动编号，渲染为上标链接
- **脚注定义**：`[^id]: 内容` 从正文移除，汇总到文末（带回链 ↩），定义内容支持行内 Markdown
- **代码块保护**：围栏代码块（```/~~~）内容不受脚注影响；缩进代码块（4 空格/Tab）内的 `[^id]:` 不被误提取为定义，`[^id]` 不被替换为引用
- **CSS**：`batata.css` 新增脚注样式（`.footnotes-sep`、`ol.footnotes`、`sup.fn-ref`、`a.fn-back`）

### 返回顶部统一优化
- 移除 19 页面各自内联的 `move-top.js`/`easing.js`/`UItoTop` 重复代码
- 统一由 `footer_nav.php` 提供，`scrollSpeed` 调整为 400ms
- `move-top.js` 改用浏览器原生 `scrollTo({behavior:'smooth'})`，GPU 合成线程执行

## V1.7.8 (2026-06-23)

### FlashNote — 修复行内代码中的 `$` 被数学公式吞掉
- 数学公式提取（`$...$` / `$$...$$`）前，先保护行内反引号代码，避免其中的 `$` 被当成公式
- 修复 `` `$` ``、`` `$a^2+b^2=c^2$` `` 等同行多处含 `$` 的行内代码渲染错乱、文字重复的问题
- 标准预览与 GFM 两处数学预处理均已修复；真正的公式（代码外的 `$E=mc^2$`）仍正常渲染

## V1.7.7 (2026-06-23)

### FlashNote — LaTeX 数学公式、代码高亮、图片宽度、自动换行
- **LaTeX 数学公式**：标准预览与 GFM 预览均支持 `$...$`（行内）、`$$...$$` / `\[...\]`（块级），按需加载 KaTeX 渲染
- **代码语法高亮**：fenced code block 语言标签（```js 等）自动触发 highlight.js 着色，与 GFM 模式共用
- **图片宽度**：`![alt](url){width=640px}` 扩展语法，标准与 GFM 预览均支持
- **`[TOC]` 目录**：自动扫描全文档标题生成嵌套目录（仅标准预览）
- **无边框表格**：`col1 | col2` 语法（行首尾无 `|`）渲染为 GFM 风格仅水平线
- **GFM 数学/图片后处理**：marked 解析前后保护代码块 → 提取公式/宽度 → 还原占位符，避免代码块内容被误解析
- **documents.php / markdown.php**：Parsedown 启用 `setBreaksEnabled(true)`，单换行自动渲染 `<br>`

## V1.7.6 (2026-06-23)

### FlashNote 标准预览 — 表格增强与自动链接
- **表格对齐**：解析分隔行 `:---` / `:---:` / `---:`，渲染 `text-align:left/center/right`；表头行渲染为 `<thead><th>`
- **无边框表格**：支持 GFM 无边框表格语法（`col1 | col2` 无首尾 `|`），自动检测并渲染为 `.table-borderless`（仅水平线）；有边框表格保持四边网格
- **自动链接**：`<user@example.com>` → `mailto:`、`<https://url>` 及裸 URL 自动转为可点击链接
- **表格解析边界**：无边框表格排除首字符为空白（缩进代码块中 `|` 不被误解析）；分隔行检查防止纯文本误触
- **CSS**：`.table-bordered` 四边网格 / `.table-borderless` GFM 水平线，raw HTML `<table>` 默认按有边框处理
- **代码块边界**：fenced code block 正则锚定行首（`^...$` + `gm`），段落中 ` ``` ` 不再误触发生成代码块

## V1.7.5 (2026-06-22)

### 首页 — 恢复「AI 要闻播报」板块
- 恢复首页 AI 要闻播报板块（视频 + 最新要闻列表）
- 补回 `$latestVideo` 查询（`ai_news_videos.videos` 最新一条），修复播报视频区缺少数据源、始终显示占位图的问题

## V1.7.4 (2026-06-22)

### FlashNote GFM 模式 — 脚注与高亮
- 给 marked 注册行内扩展：`==高亮==` → `<mark>`、脚注引用 `[^id]` → 上标（按引用顺序编号）
- 解析前抽取脚注定义 `[^id]: …`（保护围栏代码块），解析后追加文末脚注区（带回链）
- 代码跨/代码块内的 `==x==`、`[^id]` 由 marked 分词器自动保持字面，不被解析
- 与标准预览的脚注/高亮效果一致

## V1.7.3 (2026-06-22)

### 首页 — 修复 slider 初始化闪烁
- `css/style.css`：`.rslides li` 第二条规则补回 `:first-child`（原误删），使 JS 初始化前仅显示第一张幻灯片
- 修复首页顶部 slider 打开时「全部展开 → 收合」的视觉闪烁（FOUC）

## V1.7.2 (2026-06-22)

### FlashNote 标准预览 — GFM 扩展语法增强
- **多级列表嵌套**：按缩进（4 空格 / 1 Tab/级）支持无序、有序及有序无序混合嵌套；修复 CRLF 笔记换行
- **脚注**：引用 `[^id]` 渲染为上标（按引用顺序编号），定义 `[^id]: …` 汇总到文末并带回链
- **分割线**：支持 `---` / `***` / `___` 及带空格变体 `- - -` / `* * *`，统一渲染为 `<hr>`
- **多级引用**：支持 `>` / `>>` / `>>>`（及 `> >` 空格式）嵌套 blockquote
- **高亮**：`==文本==` 渲染为 `<mark>`（黄色背景）
- **行内代码**：先抽离占位符再做其它行内转换，修复 `` `* * *` `` 等代码内容被斜体/粗体污染的问题

## V1.7.1 (2026-06-22)

### FlashNote — 行内反引号代码解析修复
- 围栏代码块保护正则锚定行首：行内的三反引号不再被误当作代码段
- 行内代码支持多反引号定界（`` `x` ``、`` ``code`` ``、`` ```npm start``` `` 等）
- 纯反引号串按「首尾各 1 个作定界符」解析：连续 N 个反引号 → 行内代码含 N−2 个（如 5 个 → 显示 3 个）
- 相邻的单反引号代码跨不再被错误合并；避开后行断言以兼容旧版 Safari

## V1.7.0 (2026-06-22)

### FlashNote — GFM 模式 `<details>` 折叠块修复
- GFM（marked）渲染前移植 Parsedown 的 `normalizeDetails()`，为 `<details>` 折叠块补空行
- 解决 marked 按 CommonMark HTML 块规则把折叠块内 Markdown（列表/表格）当原样 HTML 不解析的问题
- 保护围栏代码块内的 `<details>` 不被改动，行为与标准预览一致

## V1.6.9 (2026-06-22)

### FlashNote — 预览返回编辑交互优化
- 预览底部中间的「N / M」数字改为按钮，前缀 ✎ 图标，点击即返回编辑
- 移除底部独立「编辑」按钮
- 移除移动端右上角浮动「编」按钮，返回入口统一为底部数字按钮

## V1.6.8 (2026-06-21)

### FlashNote — 标准预览缩进代码块
- 标准「预览」内置渲染器新增 CommonMark 缩进代码块：每行 4 空格或 1 个 Tab 即识别为代码块
- 自动剥离一层缩进（8 空格保留内层 4 空格缩进），首尾空行裁剪，内容 HTML 转义
- 防误判：缩进行不打断段落（视为延续），列表内缩进按原逻辑处理
- 缩进代码块内容完全字面、不做 markdown 解析：表格预处理正则锚定行首，避免 `| … |` 等被误解析

## V1.6.7 (2026-06-21)

### FlashNote — GFM 高级渲染
- 工具栏「预览」旁新增「GFM」按钮，按需从 CDN 加载 marked.js（`marked@12`）渲染 GitHub 扩展语法
- 相比内置渲染新增支持：裸 URL 自动链接、任务列表嵌套、表格列对齐、连续多行引用合并等
- 普通「预览」仍为零依赖内置渲染；GFM 引擎加载失败（离线）时自动回退到内置渲染并提示
- 预览底部导航条新增「✎ 编辑」按钮，桌面/移动端均可一键返回编辑

## V1.6.6 (2026-06-21)

### 性能 — 移除 SmoothScroll 滚轮劫持
- 删除 19 个页面（`index.php` 及 18 个 `.php` 页面）中引入的 `js/SmoothScroll.min.js`
- 该库会拦截鼠标滚轮事件并以缓动动画替代原生滚动（默认 `animationTime≈400ms`），导致滚轮垂直滚动明显迟滞；移除后恢复浏览器原生即时滚动
- 锚点平滑滚动不受影响（仍由 jQuery `.scroll` 处理 + CSS `scroll-behavior: smooth` 提供）

## V1.6.5 (2026-06-21)

### FlashNote — 预览渲染修复
- raw HTML 表格（`<div>`/`<table>`）整块原样透传，消除被解析器切成残留 `<p>` 导致的大空白间隔
- 表格紧跟标题时去除上边距，紧贴标题
- raw 块标签配平只统计表格结构标签（div/table/tr/td 等），修复单元格含 `<PROVIDER>`/`<id>` 等尖括号占位符时块不闭合、吞掉后续 `## 标题` 与 `<details>` 的问题
- 行内代码 `` `...` `` 内容做 HTML 转义，修复 `<PROVIDER>_API_KEY`、`run_id=<id>` 等占位符被当作 HTML 标签解析而消失

## V1.6.4 (2026-06-20)

### Parsedown — `<details>` 折叠块修复
- 新增 `normalizeDetailsBlocks()` 预处理：自动为 `<details>` 折叠块补齐空行（块前、`<summary>` 后、`</details>` 前后）
- 修复 README_zh.md 中「更早的更新」折叠块紧贴列表导致结构畸形、无法点击展开/收起的问题
- 内部内容现按 Markdown 正确解析（列表/表格/加粗），原生 `<details>` 折叠正常工作
- 围栏代码块内的 `<details>` 不受影响

## V1.6.2 (2026-06-20)

### FlashNote 增强
- 移动端预览时右上角显示「编」按钮，点击返回编辑模式
- 预览区底部新增文档导航条（← 上一篇 | 3/12 | 下一篇 →），支持键盘 ← → 切换
- 左侧 FlashNote 标题前增加 Home 图标，点击返回主页
- 新建笔记标题自动带日期时间（如 `新建笔记_2026-06-20_09-21`）
- 时间戳增加公历日期（`公元2026年6月20日`）和地理位置（浏览器定位 + 逆地理编码）
- header_nav.php：FlashNote 图标改为当前窗口直接打开

### 样式
- `markdown.php`：锚点平滑滚动 + `scroll-margin-top` 防止页面上移
- `batata.css`：全局 `scroll-behavior: smooth`，标题 `scroll-margin-top` 偏移

## V1.6.1 (2026-06-19)

### FlashNote — Markdown 预览功能
- 工具栏右端新增「预览」按钮，点击切换编辑/预览模式（快捷键 `Ctrl+P`）
- 内联 Markdown 渲染器，覆盖全部工具栏语法：H1-H6、粗/斜/删除线、行内代码、代码块、引用、有序/无序/任务列表、分隔线、链接、图片、表格
- 预览模式隐藏工具栏，切换笔记时自动退出预览
- 零外部依赖，渲染逻辑内联于 `app.js`

### documents.php — 随笔移动到 manual
- 随笔（flashnote/notes/）文档点击后，标题下方显示「移动」按钮
- 点击后将文件从 `flashnote/notes/` 迁移至根目录 `manual/` 文件夹
- 移动成功后页面自动刷新，更新左侧导航

## V1.6.0 (2026-06-19)

### Parsedown 增强 — 高亮文本语法
- 新增 `==高亮文本==` 语法支持，渲染为 `<mark>` 标签（浏览器默认黄色背景）

### 后台权限与体验优化
- 新增 `admin/access_denied.php` 统一访问拒绝页面（锁图标 + 友好提示）
- 11 个管理页面（backup/article_admin/novel_admin/image_admin/software_admin/physical_admin/qimao_admin/publish/migrate/filemanager/works_admin）统一替换为美观的访问拒绝页面
- `admin/sign_up.php`：非管理员注册/编辑时，部门仅可选「其他成员」或自己所在部门，工号/职务只读
- `admin/UserManager.php`：头像上传支持格式扩展至 JPEG/PNG/GIF/WebP/BMP/SVG/ICO/AVIF/TIFF

### 其他
- `admin/sign_up.php`：非管理员角色受限制
- `documents.php`：去掉不可靠的文件创建时间，仅显示修改时间；标题改 h1
- `header_nav.php`：技术博客图标 hover 变蓝，导航链接调整
- `batata.css`：GitHub 样式 h4-h6 标题调整，移动端代码块不换行

## V1.5.9 (2026-06-18)

### documents.php 交互优化
- 左侧底部「随笔•马克」链接点击后在右侧区域用 iframe 打开，不再弹窗
- 头像下方新增「随笔•马克」快捷入口（与用户名同样式）
- 用户名优先显示 username（admin），昵称作为备选
- 底部版权信息精简（去掉 - by 随笔•马克）

### footer_nav.php
- 版权声明文案优化

## V1.5.8 (2026-06-18)

### Parsedown 增强 — TOC 目录 + LaTeX 数学公式
- `[TOC]` / `[toc]` 标记：md 文档中独立一行写入，解析后自动替换为目录（`<h1>目录</h1>` + 嵌套列表）
- 标题自动生成 `id` 锚点（中文/英文/数字），目录链接可跳转，同名标题自动去重
- LaTeX 数学公式：块级 `$$...$$` → `<div class="math math-block">`，行内 `$...$` → `<span class="math math-inline">`
- 前端 KaTeX 渲染引擎（v0.16.11 CDN）
- 默认启用，无需配置

### documents.php 样式与功能优化
- 引入 `github-markdown.css`，GitHub 样式与 `download.php` 完全一致（标题大小、代码块、行高等）
- `.markdown-body` 亮色代码高亮主题（背景 `#f6f8fa`，不影响 `.article-body` 暗色主题）
- KaTeX 数学公式渲染（AJAX 加载内容亦支持）
- 修复双垂直滚动条（body `overflow:hidden`）
- 新增 Go 语言语法高亮支持（`js/prism-go.min.js`）
- 移除 `#content-area .markdown-content` 全部规则，消除样式冲突

### 其他
- `batata.css`：新增 `.toc` 目录边框样式，`.markdown-body` 完整 Prism token 配色
- `markdown.php`：修复 NOWDOC 字符串包裹问题

## V1.5.7 (2026-06-16)

### 团队成员显示优化
- aboutus.php：团队成员按 admin/writer 角色过滤，按工号升序排列，修复头像路径（uploads/avatars/ → images/avatars/）
- user_admin.php / sign_up.php / UserManager.php：用户管理更新，支持工号、姓名、分类字段

## V1.5.5 (2026-06-14)

### AI 要闻播报
- 首页新增「AI 要闻播报」板块（位于 AI 要闻与 Welcome 之间）
- 左侧 16:10 视频播放窗口，右侧 3 条最新要闻标题+摘要列表
- 视频以要闻配图为背景（压暗+模糊），edge-tts 中文女声（zh-CN-XiaoxiaoNeural）逐条播报
- MongoDB `ai_news_videos.videos` 记录视频元信息
- 新增 `ai-news-video` skill：一键生成今日 AI 要闻播报视频

### 团队管理增强
- sign_up.php：新增人员分类下拉框（内容生产端/运营与发行端/技术支撑端/其他成员）、工号字段（4位数字）、姓名字段
- 密码/确认密码输入框增加眼睛图标，点击可切换明文/密文
- user_admin.php：部门归类从硬编码映射改为 MongoDB `category` 字段，各分部按工号升序排列
- 「其他成员」卡片补齐编辑、简历、删除操作按钮

### play.php 重构
- 递归扫描 `upload/` 子目录，自动生成可折叠分组
- 点击目录头部展开/收起，根级文件归入 `upload /` 标签
- 移动端文件名自动换行（word-break + flex-wrap）

### 多页面修复
- joinus.php / openapi.php / latest.php 补 `batata.css` 引用，右上角 M 图标字体统一
- index.php slider FOUC 修复：内联 `#slider4>li` 样式移至 `<head>`，首条预显
- 首页哲学链接「How do people become useless?」居中修复
- 移动端播报列表占满屏幕、play.php 文件名换行

### AI 要闻自动化
- 新增 `ai-news-update` skill：搜索当日新闻 → 提取配图 → 写入 MongoDB
- 新增 `ai-news-video` skill：取最新 3 条要闻 → TTS 语音合成 → ffmpeg 编码 mp4

### 基础设施
- 链接全局 `a:hover` 去除下划线（batata.css）
- 生产环境 `/manual` 目录属主保持 www-data:www-data
- rsync 默认使用 `--no-owner --no-group` 保护服务器文件权限

---


## V1.5.0 (2026-06-13)

### 🔗 API 阅读器集成
- restfull.php 支持 GET 参数预填 URL，带参进入自动发起请求展示格式化结果
- openapi.php 全部 API/RSS 链接改为 restfull.php 跳转，点击直接查看格式化 JSON/XML
- read.php 接口测试链接（整书订阅RSS、目录API/RSS、签名RSS）同步迁移到 restfull.php

### 🏷️ 导航重命名
- 接口开发 → 接口测试（partner.php），接口测试 → 接口预览（openapi.php）
- header_nav.php 和 footer_nav.php 同步更新

### 📱 移动端适配
- partner.php 输入框组件（.article-rss）在 640px 以下换行堆叠，不再溢出

### 🗂️ Tab 切换组件
- cloudclip.php：上传文本/上传文件 Tab 切换，默认显示文本表单
- admin/filemanager.php：新建文本文件/上传文件 Tab 切换，默认上传文件；文件保存位置双 Tab 共享同步

### 🤖 首页 AI 要闻板块
- 新闻资讯从单条"绝对头条"升级为3卡AI要闻网格（subject=AI要闻）
- 图片16:9封面 + 标题 + 日期 + 摘要卡片布局，hover 上浮动效
- 不足3条自动占位填充，响应式：桌面3列 / 平板2列 / 手机1列
- 支持 Claude Code 自动录入：说"把今日AI top3新闻录入"即可自动查找并发布

### 👥 团队管理系统 (user_admin.php)
- 按现代文化传媒公司架构重新设计：内容生产端 / 运营与发行端 / 技术支撑端 三部门卡片
- 内置13人测试数据（制片/编剧/导演/设计/后期/审读/运营/发行/品牌/数据/法务/技术/产品）
- 一键"生成测试数据"写入 MongoDB，已存在用户自动更新职务信息

### 📂 文件管理器折叠面板
- 网站可读写文件管理/网站文件浏览器 区块支持点击标题栏展开/收起
- 前者默认展开，后者默认收起

## V1.4.0 (2026-06-12)

### 🎨 样式架构重构
- **batata.css 成为全站主样式**：整合全局重置、字体、链接、图片、卡片、瀑布流、灯箱、时间线、表单等通用样式
- 10+ 页面内联 `<style>` 块清理，统一引用 batata.css
- 图片对齐全面改用 CSS 类 `.img-left` / `.img-center` / `.img-right`，替代旧的内联 `float` 和内嵌 div 方案
- `.image-style`、`.imgcontainer*`、`.imgbox-*` 等历史方案全部移除

### 🗂️ 通用卡片体系
- `batata-card`：横版 16:10（软件作品）
- `book-card`：竖版 3:4（在线作品/书籍）
- `product-card`：横版商品（第三方代卖）
- 各体系独立：图片比例、布局、配色互不干扰

### 📰 RSS 订阅阅读器重设计 (rss.php)
- 两栏布局：左栏订阅源管理 / 右栏文章卡片
- POST 订阅保存到数据库 / GET 浏览仅临时展示不存库
- 站内 API 链接级联钻取：书单 → 章节目录 → 章节内容
- 章节阅读：全文显示、上一章/目录/下一章导航
- 侧栏支持展开/收起，状态记忆 localStorage
- 修复 `&`/`&amp;` URL 编码链、游标耗尽等关键 bug
- 移动端输入框/按钮自适应一行

### 📐 LaTeX 数学公式支持
- Parsedown.php V1.9.0：`$...$` 行内公式、`$$...$$` 块级公式、`\(...\)` 分界符
- 围栏代码块内公式不转换
- 前端 KaTeX CDN 渲染 `.math` 元素（markdown.php、download.php）

### 📱 响应式与移动端适配
- aboutus.php：logo 与文字同行、大事记时间线通用化为 `.timeline-*`、团队成员职务显示、合作伙伴卡片
- gallery.php：修复平板端幻灯片播放按钮触摸拦截
- partner.php/wechat.php：补 Google Fonts 和 batata.css、无换行长字符串处理
- documents.php：样式切换器 GitHub/Batata，默认 Batata
- markdown.php：移动端折叠空白修复、用户登录区改版

### 🔧 管理后台
- article_admin.php：TinyMCE 图片插入增加居左/中/右对齐样式选项
- user_admin.php/sign_up.php：用户增加「职务」字段
- status.php：Docker 容器状态卡片（管理员可见），支持启停、查看挂载路径和端口

### 🐛 Bug 修复
- sample.php：标题 CSS 选择器 h3→h1 不匹配、@media 残缺
- aboutus.php：g3.jpg 丢失、孤儿 HTML、header_nav 样式异常
- software.php/online-works.php/third-party-works.php：类名迁移残留导致显示异常
- rss.php：`deleteMany([])` 每次清空文章、游标耗尽、URL 双编码
- 多处 `$_SESSION['user']['id']` 加 `isset` 保护

### 🧹 代码清理
- 10 个页面移除孤儿 HTML `</div>--> `、空注释、空 @media
- `<font>` 标签替换为 `<strong style="...">`
- `weichat` → `wechat` 拼写修正
- Makdonw → Markdown 拼写修正

---

## V1.3.9 (2026-06-10)
- markdown.php 侧栏用户区改版与移动端修复
- cloudclip.php 底部版权统一样式
- flashx.php 下拉刷新统一

## V1.3.8 (2026-06-09)
- 版本号管理重构：api/header.php 集中 `$Version`
- 管理后台下拉刷新统一为 footer_nav.php 风格
- physical_admin.php tab 美化

## V1.3.7 及更早
- 软件商店、商品代卖、图库瀑布流升级
- 在线作品书籍展示
- 多页面下拉刷新功能
