站点更新日志v2.0.0
记录每一次打磨,让版本演进清晰可查
111
条更新记录
2026.11.18
最近更新
6
种更新类型
全部 111
重要更新 16
版本发布 16
功能新增 14
优化改进 30
问题修复 20
日常维护 15
2022.11.23
版本发布
Xdir v1.3.9 版本发布,正式版上线;
2022.11.23
优化改进
优化更新,优化文本查看器代码高亮区域实现左右滑动块,方便看全内容;
2022.11.27
优化改进
优化更新,调整并支持jquery-jtoast样式的消息提醒;
2022.12.01
优化改进
优化更新,调整文本查看器代码复制随屏滚动、消息提醒由jquery-mac-message-tips提供支持;
2022.12.01
优化改进
优化更新,调整文本查看器代码区域块锁定窗口预览大小;
2022.12.03
优化改进
版本更新,调整站点更新日志页面,去除旧日志页面,减轻站点程序体积;
2022.12.05
版本发布
版本发布,发布站点日志v1.0.0版本,帮助站点展示更新进度;
2022.12.05
版本发布
Xdir v1.3.9 赞助正式版,文件哈希阈值查验最大支持1024M;
2022.12.05
版本发布
版本发布,发布 Xdir v1.3.9 正式版,本次更新共计三款,赞助版、标准版、清爽版,用户可根据不同需要所取不同版本;
2022.12.06
版本发布
版本更新,Xdir v1.3.9 清爽正式版,界面简约清爽、功能与赞助版标准一样、无广告、公告、简介展示;
2023.03.08
功能新增
功能更新,新增复制按钮获取文件后缀自动增加标签SRC属性;
2023.04.24
版本发布
版本发布,站点更新日志更新至v1.0.1版本;
2023.04.24
版本发布
功能更新、优化,复制功能增加SRC属性类别复制提醒、增加遍历目录列表Loading加载等待效果、新增鼠标样式、鼠标点击效果、HTML5“DPlayer”视频播放器升级至v1.27.1,播放器功能参数优化更新,功能区按钮细节优化、fileTypes遍历目录文件后缀个别图标样式更新、部分UI细节优化更新;
2023.05.10
优化改进
优化更新,部分UI细节优化更新、暗黑模式UI样式更新;
2023.05.17
优化改进
功能、优化更新,简介功能优化升级,新增Readme文档解析模式配置(支持html、md文档解析并支持自定义切换简介说明文档的预览方式)、支持Markdown解析添加锚点,官网站点界面UI样式优化调整;
2023.05.19
版本发布
版本发布,Xdir v1.4.0.20230519 赞助正式版本上线运行;
2026.10.29
版本发布
Xdir v2.0.2 旗舰版发布:彻底修复 /index.php?c=cache 索引页空白(PHP8 下 DirectoryLister.php:877 类型错误致命,已补配置默认键并加防御);
2026.10.29
优化改进
优化更新:F12 控制台改为双色标签(版本深色块+浅色字 / 官网黄块+蓝下划线),配色与系统一致;
2026.10.29
版本发布
优化更新:页脚改为 sticky 锁定视口底部、回退 v2.0.1 的 body flex 布局,修复主页列表断层与左侧蓝带;
2026.10.29
问题修复
修复更新:全局超链光标 Link.cur 路径修正生效、MD 锚点跳转 scroll-margin-top 由 70px 收紧至 16px;
2026.10.29
功能新增
功能新增:数据安全·加密保险箱(PHP 内置 PDO_SQLite + AES-256 加密,后台可视化增删改查,单目录可迁移);
2026.10.29
版本发布
Xdir v2.0.3 旗舰版发布:修复歌词链路——functions/lyrics.php 以 include 载入全局 $config 并合并后台 data/settings.json,仅填基础地址时自动补全 title/artist 参数;
2026.10.29
优化改进
优化更新:站点更新日志页重构为后端页面管理(data/pages.json),首次访问自动迁移历史日志,后台「单页管理」可视化增删改排序;
2026.10.29
优化改进
优化更新:全站统一一套 default_header.php / default_footer.php,更新日志页移除自带顶部导航与尾部调用,与首页共用同一页头页脚;
2026.10.29
重要更新
重要修复:PHP 8 下 config 缺失 username / download-url 键产生 Warning,输出在 DOCTYPE 之前导致浏览器进入怪异模式、整站样式失效;已补全默认键并在模板层统一兜底;
2026.10.29
版本发布
Xdir v2.0.4 旗舰版发布:后台数据统一纳入 PDO_SQLite 管理,站点配置 / 存储挂载 / 单页内容 / 分享记录四类数据双写 JSON 镜像,支持可视化迁移、由库恢复与一致性校验;
2026.10.29
功能新增
功能新增:私有分享支持密码明文回显、复制带密码链接、单独复制密码,并内置二维码供手机扫码直达;
2026.10.29
版本发布
优化改进:站点更新日志页 UI 完整重构,采用卡片式时间轴 + 类型标签 + 概览统计 + 类型筛选,版本发布、功能新增、问题修复等记录一目了然;
2026.10.29
问题修复
修复更新:音乐播放弹窗左右两块等高对齐、间隔统一,折叠目录含音乐时的悬浮播放器上抬避开页脚;
2026.10.29
问题修复
修复更新:切换目录后页脚未贴合浏览器底部(内容不足一屏时悬空)已修正;Readme Markdown 锚点点击跳回顶端的问题改用精确滚动定位;
2026.10.29
重要更新
重要修复:文件索引页(?c=cache)与搜索页(?c=search)此前各自 include 只有几行 <link> 的旧页头,缺 DOCTYPE 与 html/head/body,浏览器进入怪异模式导致样式全丢、且没有页头页脚;已新增统一页面外壳 functions/XdirPage.php,全站前台页共用同一套 header/footer;
2026.10.29
功能新增
功能新增:加载动画改为只在目录列表卡片内显示,移除覆盖整站的全屏加载遮罩;
2026.10.29
优化改进
优化改进:运行环境兼容提升至 PHP 8.4 并向下兼容 5.6,新增 functions/XdirCompat.php 提供函数垫片与统一错误策略,后台系统信息页显示兼容状态;
2026.10.29
问题修复
修复更新:Readme 简介说明中的 MD 锚点点击后跳回顶端的问题彻底修正(折叠面板自动展开 + 顶栏偏移精确滚动 + 目标高亮);
2026.10.29
问题修复
修复更新:音乐播放弹窗歌词高亮不跟随节奏的根本原因(歌词行集合误存 jQuery 对象导致 classList 报错),并新增歌词区显式滚动条、悬停可滚、手动滚动自动暂停跟随;
2026.10.29
重要更新
重要修复:私有分享复用同路径 token 时未同步更新密码,导致带密码链接与二维码扫码访问提示「密码不正确」;已修复并可自动填充密码到密码栏;分享结果窗口支持自适应滚动,内容不再看不全;
2026.10.29
功能新增
功能新增:站点更新日志页增加返回顶部按钮,复用首页同一套交互;
2026.10.29
重要更新
重要修复:歌词调用在线 API 时把歌名当成歌手传入,导致匹配到完全另一首歌(实测 api.lrc.cx 传错 artist 会主动带偏结果);现从文件名解析「歌手 - 歌名」,并按多候选回退与 12 小时缓存取词;
2026.10.29
重要更新
安全加固:后台管理员密码 / 访客密码改为 AES-256 加密存入 data/settings.json(形如 enc:…),密钥独立存放 data/.xdir_key;旧明文数据无需迁移,下次保存自动升级;
2026.10.29
重要更新
重要修复:文件索引页与搜索页页脚未贴合浏览器底部(内容不足一屏时悬空、内容末行被页脚遮挡);改为独立页弹性布局精确贴底;
2026.10.29
重要更新
安全加固:文件索引页按操作系统自适应屏蔽敏感文件(.user.ini / .htaccess / web.config / Thumbs.db / .env / .git 等)与本程序自身配置入口,避免部署目录泄漏;
2026.10.29
优化改进
体验优化:后台确认弹窗按钮文案随操作类型变化(迁移 / 恢复 / 清空 / 删除各自对应),常规操作改用蓝色系以区别危险操作;文件索引页移除标题图标并强化条目悬停样式;
2026.10.29
优化改进
体验优化:私有分享弹窗创建阶段恢复自然高度,创建成功后按结果内容自适应调高,密码区与二维码完整可见;
2026.10.29
重要更新
重要修复:搜索「文件明明存在却搜不到」—— 索引缓存只有人工访问索引页才重建、有效期长达 24 小时,长期无人访问就停留在旧快照;新增统一索引引擎,缺失或超过 5 分钟自动重建,并改用结构化清单检索(不再解析 HTML 文本);
2026.10.29
功能新增
功能新增:音乐播放器支持跨页面续播 —— 标签页不关闭时,站内浏览目录、切换页面音乐不中断,自动恢复曲目与进度;被浏览器自动播放策略拦截时降级为「点击继续播放」;
2026.10.29
优化改进
优化改进:F12 控制台改分层输出(内核信息 / 发行版本 / 使用说明 / 反馈通道),并新增页面加载性能(首字节、DNS、DOM、完整加载、资源数与传输量、均速);
2026.10.29
重要更新
安全加固:数据管理「立即迁移到 SQLite」「由库恢复文件」统一对密码字段做 AES 加密,导出的备份也不再含明文;索引页与搜索页按操作系统并集屏蔽 .user.ini / .htaccess / web.config / Thumbs.db 等敏感文件;
2026.10.29
优化改进
体验优化:全站搜索无结果时图标居中;搜索页「复制」改为完整下载链接并新增新窗口打开;文件索引页显示收录条目数与「立即重建」;后台「单页管理」更名为「更新日志」并补充实际功能说明;分享弹窗二维码与文本不再被裁切;
2026.10.29
重要更新
重要安全修复:全局搜索只跳过点文件,导致 data/、functions/、resources/ 目录与程序生成的哈希命名缓存(如 35b8….json 歌词缓存)被搜出来返回前端;现完全复用索引引擎的可见性规则,并在进入目录前剪枝;
2026.10.29
优化改进
优化改进:搜索页「复制」链接改为最小转义,中文保留可读(不再是一串 %E9%9F%B3%E4%B9%90),仅转义空格、#、?、&、%、+ 等会破坏 URL 的字符;
2026.10.29
功能新增
功能新增:音乐播放器支持收起 / 展开,收起后缩为左下角小圆盘(播放时外圈脉冲),站内浏览不再被遮挡;折叠状态跨页面保持;
2026.10.29
重要更新
重要修复:分享已创建弹窗内容被裁切(本版 layer 无 layer.style(),旧实现被 try/catch 静默吞掉,内容区高度仍停在创建表单时的值);改为显式设置内容区与外层高度并重新居中,矮屏自动切换为滚动;
2026.10.29
重要更新
重要修复:左上角 logo / 站标名 / 徽章 鼠标悬停时整组发糊 —— 悬停高亮原用绝对定位伪元素铺白色蒙版,而伪元素绘制顺序晚于普通流内容,白膜盖在了图标与文字之上;改为给品牌元素自身加半透明背景,背景永远画在内容之下;
2026.10.29
优化改进
UI 重构:版本徽章改到 logo + 站标名 的右上角作为上标标签,尺寸由 24px/14px 收至 17px/11px,新增红色渐变底、1px 半透明白描边、投影与文字投影,白字对比度 4.83:1 达 WCAG AA;同时移除 JS 里写死的 12 项内联样式,徽章外观回归样式表单一出处;
2026.10.29
优化改进
体验优化:项目部署后主体初始默认「明亮」—— 原逻辑首次访问取 auto 并跟随系统 prefers-color-scheme,导致系统为深色的访客第一次打开就进了暗黑;现无 cookie 一律默认明亮,只有用户主动切到「自动」才跟随系统,同时同步 color-scheme 让浏览器原生控件与页面明暗一致;
2026.10.29
优化改进
UI 调整:版本徽章从「右上角上标」改回与 logo + 站标名 同一水平线垂直居中,并加 1px 光学补偿(中文字形视觉重心比行盒低),配合 10px 横向间距;徽章保持 17px 紧凑尺寸,不再高过站标名;
2026.10.29
日常维护
行为还原:主题切换循环恢复为 自动 → 黑暗 → 明亮 → 自动,首次访问(无 cookie)回到默认「自动」,跟随浏览器 / 系统配色 —— 即系统设为深色时首屏就是深色,属预期行为;同时保留 color-scheme 同步,让滚动条与表单控件随页面明暗一致;
2026.10.29
重要更新
重要修复:页面刷新时左上角 logo、站标名、徽章"抖一下" —— 样式表里 `#page-navbar .shiyu a{display:inline-block}` 的特异性(1,1,1)压过了品牌链接的 inline-flex(1,1,0),首帧品牌链接是 inline-block,align-items:center 完全失效,三者退回基线对齐;等脚本写入内联 display:inline-flex 后才跳到正确位置,实测徽章纵向跳动 4px、横向 3.3px;现用高特异性选择器 + :not(.xdir-brand) 排除,CSS 首帧即终态,脚本不再写任何品牌区内联样式;
2026.10.29
优化改进
UI 调整:徽章垂直位置改为显式 margin-top: 10px、margin-bottom: 10px(上下等值使 flex 居中净位移为 0,中心仍严格对齐 logo 与站标名),光学补偿由 position/top 改为 transform,不再参与布局;
2026.10.29
问题修复
体验优化:后台「LOGO 实时预览」按前台顶栏 1:1 复刻 —— 图标由白色改为品牌蓝 #58b4ff 并补 1px 投影勾边、站名改为 #f2f6fa 并补文字投影、徽章由 21px 胶囊形改为 17px 圆角矩形(竖向红渐变 + 白描边 + 双层投影,与原前台完全同款)、站名与徽章间距由 7px 修正为 10px(gap 7 + margin 3)、预览底色由渐变改为 #444 纯色、高度对齐 65px,并补齐 -webkit-font-smoothing 使字形栅格化一致;
2026.10.29
日常维护
UI 统一:后台侧栏站标图标色由菜单蓝 #1E9FFF 改为前台品牌蓝 #58b4ff 并加投影,侧栏版本标签同步为前台红渐变样式,避免「后台蓝、前台亮蓝」两套观感;
2026.11.18
版本发布
版本发布:Xdir v2.0.18 旗舰版(Build 20261118)正式发布 —— 版本号由 v2.0.14 迭代至 v2.0.18,构建号更新为 20261118,静态资源戳同步自增,覆盖升级后强刷一次即可拉取全部新资源;
2026.11.18
日常维护
UI 细化:顶栏版本徽章字距放宽至 0.8px、高度定为 18px、上下外边距各 30px,小字号下更透气,红块更醒目且不压过站标名(flex 居中会居中 margin box,上下 margin 必须等值,只改一边会偏 5px);
2026.11.18
优化改进
体验优化:顶栏品牌区悬停高亮背景向左扩展 6px 内边距(配 margin-left:-6px 抵消,logo 版面位置不变),鼠标滑上时 logo 不再紧贴高亮框左缘,整组呼吸感更自然;
2026.11.18
优化改进
架构改进:后台「LOGO 实时预览」不再手抄一套数值,改为与前台共用独立的 xdir-brand.css(选择器 :is(#page-navbar, .xdir-brand-scope)),预览容器加同名作用域 class、HTML 与前台完全同构 —— 改一次样式两边同时生效,从机制上消除不同步;同时把图标盒的字号/字重/颜色显式固定,避免纯文本 LOGO 在前后台呈现两种样子;
2026.11.18
功能新增
文档重写:部署与功能说明补充 Windows Server / Linux / 宝塔面板 / 虚拟主机等多环境安装流程、PHP 与扩展运行环境要求、以及完整功能模块说明,文本重新润色;
2026.11.18
重要更新
重要修复:目录切换的加载动画仍显得在列表外、靠近页脚 —— 遮罩虽已覆盖卡片,但它是「对整张卡片垂直居中」,列表一长(30 行≈785px、60 行≈1487px)卡片几何中心就落到视口之外或贴在视口底部;现改为两层结构,遮罩仍严格等于卡片(overflow:hidden 兜底),内层 .xdir-loading-box 由脚本定位到「卡片 ∩ 视口」的可见区域中心,短列表即卡片中心、长列表即当前可视区中心,自动适配文件与文件夹数量,并随滚动缩放实时重算;
2026.11.18
问题修复
修复:文件索引页悬停超链出现「双重下划线」 —— 该条目同时写了 border-bottom-color 与 text-decoration:underline,两条线一条在文字基线下方、一条在盒子底部,垂直错开约 3px,看起来就是重复下划线;现统一由 border-bottom 一条承担,text-decoration 在链接常态/悬停/焦点/访问过等所有状态强制 none,同时挡住 bootstrap 的 a,a:visited 与 a:focus,a:hover 规则;
2026.11.18
优化改进
优化:文件列表中的文件名主链接(a.preview)也取消悬停下划线 —— 此前无任何 text-decoration 规则接管,悬停时 bootstrap 的下划线会从图标一直贯穿到文件名;悬停反馈改由变色与整行高亮承担;
2026.11.18
重要更新
重要优化:页面底部留白统一 —— 简介说明下方到页脚之间曾有一条约 119px 的空白带,成因是两处留白重复叠加:① .jianjie-container 写死 margin-bottom:80px,② #page-content 仍按页脚 position:fixed 时代预留了整份页脚高度(页脚早已改为 sticky,自身就在文档流里占位,再补一次等于重复预留)。现统一为单一变量 --xdir-gap-bottom:16px,简介/列表收尾到页脚顶边恒为 16px;
2026.11.18
优化改进
优化:页脚高度与「返回顶部」按钮共用同一基准线 —— 新增 --xdir-foot-pad-y 控制页脚上下内边距(5px→7px,页脚略增高更沉稳);返回顶部按钮与底部信息按钮的 bottom 均改为 foot-h + gap,按钮底边正好落在内容结束线上,与列表/简介收尾水平对齐,不再是各处各写 16/14px 的散值;
2026.11.18
功能新增
新增「简介说明」管理模块:后台可统一开关该模块、单选简介文件类型(Markdown .md / HTML .html),并按所选类型提供在线编辑器与实时预览,支持选择站点根目录下两层子目录分别维护各自的简介;预览走后端同一套渲染器,与前台展示逐字一致;
2026.11.18
优化改进
简介说明展示逻辑优化:目录下既无 README.md 也无 README.html(或后台关闭开关)时,整个「简介说明」容器不再输出 —— 此前容器仍会渲染,带着 1rem 上边距,表现为「模块已隐藏但位置还占着」;同时读取规则改为「所选类型优先、缺失自动回退另一种」,避免切换类型后原有简介突然消失;
2026.11.18
重要更新
重要修复:切换目录后简介说明显示错误 —— 「首次进子目录仍显示上一个目录的简介、按 F5 刷新才正确/或直接消失」。根因是 AJAX 切换目录时只替换了文件列表与面包屑,简介区块原地不动;现已把简介一并纳入 AJAX 片段同步,新目录无简介时移除旧容器,并补给手风琴点击事件与样式表;顺带把简介版权行的年份由 document.write 改为服务端输出,避免 AJAX 插入时丢年份;
2026.11.18
优化改进
体验优化:图片预览支持鼠标左键长按 + 上下滑动手势 —— 按住左键约 0.26 秒后上下拖动即可切换上一张 / 下一张(跟手位移、超阈值滑出换图、不足阈值弹回),长按瞬间底部浮出提示并高亮目标方向箭头;手势按「图片是否超出可视区」自动分工:整张看全时用于翻图,放大 / 长图时仍是平移查看,互不打架;
2026.11.18
问题修复
修复:图片预览拖拽越拖越偏、可把图拖出可视区 —— 原实现用 offset() 取起点再写 left,而相对定位元素的 offset 已包含上次位移,第二次拖动会把上次位移再叠一次;且没有边界约束。现改为记录起始 left/top 累加 + 按溢出量一半夹紧,缩小到无余量时自动锁中线,光标同步变回默认(不再暗示可拖);触屏平移也接入同一套夹紧;
2026.11.18
优化改进
体验优化:txt / 代码文件 / Markdown 预览同样支持「鼠标左键长按 + 上下拖动滚动」—— 按住约 0.22 秒后拖动即可上下滚动正文(内容跟手、松手带衰减惯性),长代码行还可左右拖动横向查看;短按拖动仍保持浏览器原生选文字,复制代码与选中引用不受影响;无法滚动的小文件不会触发手势,也不会弹提示;
2026.11.18
日常维护
管理后台列表统一升级:分享管理、加密保险箱、日志系统、网络存储、挂载管理、更新日志六处列表全部加入分页栏(默认 10 条/页,可切 10/20/50/100)与防抖搜索(输入停止 0.24 秒即筛选,回车立即生效,带一键清空);搜索框与分页控件全站共用同一份实现,不各写一套;
2026.11.18
功能新增
更新日志(单页管理)增强:更新记录列表列头右侧新增防抖搜索与「导出日志」按钮,可把全部更新记录(含未显示的页)一键导出为 Markdown 文件;分页采用「行仍保留在 DOM、仅切换显隐」的方式,因此分页 / 搜索状态下点「保存并生效」也不会丢记录,拖动排序、新增、删除与全局序号照常工作;
2026.11.18
日常维护
顺手修掉一处翻页后失效的问题:列表行内按钮(编辑 / 测试 / 删除 / 显示隐藏)改用事件委托绑定,翻页重渲染后依然可用;此前若直接绑在按钮上,翻到第二页按钮就点不动了;
2026.11.18
功能新增
在线预览格式大扩充:视频新增 MOV / WMV / M4V / MPG / 3GP,音频补上此前"判定为音频却没有播放按钮"的 AAC / M4A / OGG,图片新增 TIF / TIFF,文档新增 RTF / ODT / ODS / ODP,代码新增 CMD / BAT(REG 原有);共覆盖 112 种扩展名,全部由一张格式表统一驱动;
2026.11.18
问题修复
兼容性关键修复:音视频改由 PHP 按格式表显式发送 Content-Type 并支持 Range 分段 —— 此前 .mkv / .flac / .mov / .3gp 等扩展名多数 Web 服务器未收录,会以 application/octet-stream 发出,浏览器一律不播(黑屏转圈),换台服务器又正常;现在换成 Windows / Linux / macOS 任意环境行为一致,进度条拖动也正常;
2026.11.18
功能新增
TIFF 图片可直接查看:无 Imagick 时用纯 PHP 解码并自行编码 PNG(支持 LZW / Deflate / PackBits / 无压缩、灰度 / RGB / RGBA / 调色板、大端小端),已与专业库逐像素比对 8 种变体完全一致;超出尺寸上限或遇到不支持的变体时明确提示下载,不输出破图;
2026.11.18
日常维护
RTF / ODT / ODS / ODP 改为本地解析预览(服务端提取标题、段落、列表与表格),不再依赖微软在线预览 —— 该服务不认这些格式,且要求文件能被公网抓取,内网部署根本用不了;现纯 PHP 解析、无需外网、无需装办公软件;
2026.11.18
问题修复
修复文本预览两处老问题:① 内容被转义了两次,代码里的 < > 会显示成 < >(cmd / bat / reg 里到处都是重定向符,一眼就看出);② 中文 Windows 的 .bat / .reg 常是 GBK 或 UTF-16 编码,原实现用 GB2312 转码,遇到生僻字会整篇变空白,且 UTF-16 文件被误判为二进制只显示"不支持预览";
2026.11.18
优化改进
简介说明再优化:目录内的 README.md / README.html 不再作为普通文件出现在文件列表中 —— 这两个文件的内容已经由列表尾端的「简介说明」整块呈现,再列一份等于同一份内容出现两次,点开还只是源码文本页;其它 .md / .html 文件(笔记、说明页等)不受任何影响,照常列出;目录内没有简介文件时该模块仍整块隐藏;站点索引页与全局搜索同步过滤,索引缓存结构版本升级后会自动重建,无需手动清缓存;
2026.11.18
日常维护
简介说明文件识别改为大小写不敏感并统一到一处:先前「读哪个文件」与「列表里要不要藏」各写一套判断,容易错位(出现列表藏着、简介却是空的);现在由 findReadmeFile() 统一裁决——先按后台所选类型找,找不到再回退另一种,readme.md / ReadMe.MD 同样识别;后台关闭「简介说明」开关时两个 README 文件恢复显示,避免文档被藏得无处可看;
2026.11.18
问题修复
后台 UI 修复:加密保险箱那一行的防抖搜索框,放大镜图标与占位文字叠在一起 —— 根因是 CSS 特异性打架,与保险箱本身无关:工具栏通用规则 `.log-bar input{padding:0 12px}` 的特异性(0,1,1)压过了搜索框的 `.xd-search-inp{padding:0 34px 0 32px}`(0,1,0),而保险箱的搜索栏正好嵌在工具栏里(与「迁移旧数据 / 刷新 / 新增条目」同一行),左内边距被打回 12px,图标绝对定位也在 left:12px,文字便从同一位置起排;日志页的搜索框是工具栏直接子元素,所以此前看不出来;改法两步:工具栏规则收窄为直接子元素选择器(.log-bar > input),搜索框提到 .xd-search .xd-search-inp 提升特异性,实测左内边距恢复 32px、图标右缘 24.08 与文字起点 33 之间留白 8.92px,日志页样式不受影响;
2026.11.18
优化改进
后台 UI 优化:列表「搜索不到结果」不再是甩一行灰字,统一改用图标 + 主文案 + 辅助说明的空状态(放大镜图标、回显搜索关键词、提示换词或点清空);更新记录的占位块插进记录列表容器内而非分页栏,落在记录原本的位置上,并与内容水平居中;挂载管理新增防抖搜索(按挂载名 / 类型 / 标签 / 来源筛选,敏感字段不进前端),搜不到时同样显示居中图标与文字说明;
2026.11.18
优化改进
简介说明定版调整:README.md / README.html 改为「无论开关状态都隐藏」—— 上一版让开关关闭时这两个文件恢复显示,理由是怕文档看不到,实测后确认这个判断不对:开关关掉的语义本就是「这份文档不在前台展示」,否则开着藏、关着露,关掉开关反而多出两个文件条目,用户会以为开关把文档「变出来」了;现在文件名判断与开关完全解耦,仅认 README.md / README.html(大小写不敏感),README(无后缀)/ README.txt / my-readme.md / notes.html / 说明.html 等相似名一律不受影响照常列出;索引页与全局搜索同步,索引缓存结构版本升级后自动重建;需要看原文仍可经文件管理器或 FTP 取得;
2026.11.18
问题修复
修复旧索引页 index.php?c=indexes 白屏(Fatal):该页是早期自写的一套递归扫描,`include_once("../config.php")` 按当前工作目录解析 —— 而它是被 index.php 用 include_once("functions/".$c.'.php') 引入的,此时 CWD 是站点根,于是路径指到站点上一级、配置没载入,全局 $ignore 为 null,array_search($file, null) 在 PHP 8 直接抛 TypeError;同时 `tree("..")` 扫的也是站点上一级目录(共享主机上会列出别人的站点),且 config.php 的 $ignore 里没有 data,修好路径也会漏出 data/ 与 README.md,文件名与 URL 还未转义、不套统一页面外壳;现已改为直接委托 functions/cache.php(唯一实现),URL 不变、输出与 ?c=cache 逐字节一致,一并解决越界读取、目录泄漏、无外壳三个问题;
2026.11.18
问题修复
修复子目录 / 全新部署必定白屏「Missing application config file at .../resources/config.php」:完整部署包的排除规则写的是「排除 config.php」,实际把根目录与 resources 下的两份都命中了,导致 resources/config.php 从来没进过任何一个完整包;原地覆盖升级不受影响(老站点这份文件还在),所以整整十几个版本都没暴露,直到全新部署 / 子目录部署才炸;现新增 resources/config.simple.php 出厂模板,并在配置缺失时自动复制生成,目录不可写则直接读模板照常运行,同时把 require_once 改为 include(同一请求内第二次包含会返回 true 而非数组,会让全站配置失效);
2026.11.18
问题修复
部署错误提示重做:原先配置缺失只会 die 出一行英文「ERROR: Missing application config file at 路径」,既不知错在哪也不知怎么办;现改为统一的图标 + 文字说明页 —— 语义化配色图标、主标题、一句话原因、等宽字体显示出错路径并支持一键复制、编号修复步骤、以及说明「两个 config.php 有何不同」的小字提示;支持明暗双色与移动端,按场景给出 503 / 500 状态码,并区分「文件缺失」与「文件存在但格式有误(含语法错误)」两种病因;
2026.11.18
日常维护
顺带加固子目录部署:程序内部大量使用相对路径(./config.php、functions/xxx.php、resources/...),全部按当前工作目录解析,多数 FPM 环境 CWD 恰为脚本目录所以没暴露,子目录部署或某些 CGI / 反代配置下就会一路找不到文件;现 index.php 开头即 chdir 到自身所在目录,把基准钉死在站点根;控制器加载也改为绝对路径 + 白名单校验(原写法 ?c=../admin 可穿越到后台入口),空控制器时不再去包含 functions/.php 而先抛一条 Warning;
2026.11.18
日常维护
建站时间改为首次部署自动写入:此前页脚「已运载」在 install_date.txt 不存在时,会拿 config 里 $siteinfo[Date] 当种子,而该字段出厂值硬编码为 05/19/2023,导致全新部署一打开就显示「已运载 3 年」;现在初始化时若仍为出厂占位值,即以当前安装时刻为起点,并把同一时刻回写进 config 的 Date,让配置文件记录的建站日与页脚算的起点始终一致;若用户手工设过真实建站日则尊重原值不作改动,config.php 不可写时静默跳过,由 install_date.txt 作为唯一权威;
2026.11.18
日常维护
顺带修掉一处「初始化永远不跑」的旧缺陷:这段建站时间初始化原先写在页脚模板里,站点一旦在后台设置自定义尾部信息,自带页脚整块不输出,初始化便再也不会执行,install_date.txt 永远不生成;现已前移到 index.php 配置就绪之后,页脚只做兜底读取,无论用不用自带页脚都能正常起算;
2026.11.18
日常维护
写 config 时的两处细节:① 不能用简单正则替换 —— config.php 头部注释里本就有同一行示例(尾部建站运载时间:Date => 12/03/2022),正则会先命中注释,把时间写进注释而真实值丝毫未动,且返回「成功」极难发现;现改用 PHP 词法分析器定位,注释天然被跳过,tokenizer 不可用时退化为逐行跳过注释行。② 只改值不动其余字节,临时文件 + rename 原子替换并继承原权限,引号风格跟随原值;
2026.11.18
日常维护
部署提示页(配置文件已自动生成 / 站点配置文件缺失 / 配置文件格式有误)补全浏览器标签页图标:此前这几页的 head 里只写了 title 与 meta,唯独漏了 link rel=icon,标签页上显示成默认的空白/地球图标,而全站其他页面都有;现优先复用站点自己的 folder.png(与全站完全一致),该文件不存在时(配置缺失、resources 上传不完整的典型场景)退到内联 SVG data URI 并按状态配色,保证任何情况下都有图标且不产生额外请求;路径改为从 SCRIPT_NAME 推算站点根,子目录部署与「从 functions/ 下脚本触发」两种情形都能算对;
2026.11.18
问题修复
首次部署动作写入日志系统:安装时系统会自动复制 config.php、复制 resources/config.php、初始化建站时间,但这些动作过去完全不落日志,事后想确认「哪个文件是自动生成的、生成在哪、用的什么版本、是不是子目录部署」只能靠猜;现逐条记入「日志系统」的操作日志,另加一条总览(动作清单 + 安装路径 + 访问入口 + 部署形态 + 时区 + 站点根 / data / resources 三处目录可写性),每条记录都自动附带版本、构建号、PHP 版本、SAPI 与操作系统,单条即可还原现场;另在 resources/ 不可写、只能以模板运行时记一条警告,提醒修正目录权限;
2026.11.18
功能新增
简介说明新增「移动端显示」开关:此前 style.css 在 ≤828px 断点里写死了 .jianjie-container{display:none},等于手机上永远看不到简介,后台也没有任何开关可以改变;现在后台可单独启停,关闭时只给容器加 xdir-rm-mobile-off 类由 CSS 在窄屏隐藏,桌面端不受影响。该开关刻意只控制「窄屏渲不渲染这个模块」,不改变文件可见性 —— 否则同一目录在手机上会凭空多出 README.md,用户会以为文件被动过;
2026.11.18
功能新增
后台简介说明编辑器移动端适配:编辑与实时预览双栏在手机上各压 260px 上下堆叠,须滚到页面底部才能保存,实际不可用 —— 现 ≤828px 改为「编辑 / 预览」页签切换,一次只显示一个面板;编辑框字号提到 16px(iOS Safari 对小于 16px 的输入框会聚焦放大,输一个字跳一次);操作按钮整行 44px 高,达 iOS 建议的最小触控尺寸;两个开关改用拨动开关组件(原 checkbox 方框仅 14px,手机上点不中),全局开关关闭时「移动端也显示」自动灰化并禁用;另新增「插入模板」按钮,手机上不必从空白开始敲;
2026.11.18
日常维护
前台简介正文在窄屏的排版收口:桌面端为锚点定位留的 h1 22px / h2 30px / h3 37px 下内边距在手机上变成一截莫名其妙的空白,首行缩进 30px 也让每行只剩十来个字 —— 窄屏统一收紧字号与间距、去掉首行缩进,并让表格与代码块内部横滑,避免超宽内容把卡片撑出横向滚动条;
2026.11.18
问题修复
修复移动端简介说明尾部被页脚遮挡、页面像被拉长:根因是 html,body 同时写了 height:100%(body 高度锁死在一屏),而 ≤767px 的 overflow-x:hidden 按 CSS 规范会把 overflow-y 从 visible 提升成 auto —— body 因此变成滚动容器,与 window 形成两套滚动坐标系;页脚 position:sticky 的包含块也跟着变成那个固定高的 body,长页面里恒定浮在视口底部盖住正文,简介尾部被挡、要继续下滑,看起来就是页面被拉长。现改为只给 html 留 height:100%、body 用 min-height:100% 随内容增高,overflow-x 改用 clip(不参与 overflow-y 提升),页脚回到文档流 static,短内容贴底交给 #page-content 的 min-height,并追加 100dvh 版本以适配手机地址栏伸缩;
2026.11.18
问题修复
修复桌面端返回顶部按钮不该出现时却出现:原判定是滚动超过 30px 就显示,而页面只要比视口高一点点(简介展开、公告栏出现、body 被撑高几十像素)轻微一滚就会触发;现在先判断文档是否真的能滚动(scrollHeight 需明显大于视口),再要求滚过 max(320px, 视口高×0.4) 才淡入,与移动端按钮的 320px 阈值对齐;同时窄屏(≤768px)不再启用这套桌面按钮,避免与专门的移动端返回顶部按钮叠在右下角互相遮挡;
2026.11.18
问题修复
修复移动端同时出现两个返回顶部按钮:原先有两套 —— HTML 里写死的 .cd-top(桌面红色方块,样式在 zzsc.css)与 xdir-enhance.js 在窄屏动态 append 的 #xdirBackTop(蓝色圆形)。前者判 ≤828、后者判 ≤768,而全站「移动端」统一断点是 828(列表视图、简介说明开关都用它),于是 769~828 这个夹缝里两边同时满足显示条件。现不再让两套互斥,而是只保留一个 .cd-top 节点:>828px 为红色方块、≤828px 由 CSS 换成蓝色圆形 44×44 并与页脚保持距离,显隐统一由 zzsc.js 负责 —— 只有一个 DOM 节点,结构上不可能再重复;
2026.11.18
日常维护
窄屏圆形按钮的两个视觉细节:① 箭头改用 mask 伪元素绘制,颜色由 background-color 决定 —— 原先靠 background-image 直接贴 SVG、箭头颜色写死在图里,暗色模式下只能给整个元素套 filter:invert(),但那会把底色与边框一起反掉,深底反而变白;② 窄屏必须清掉原 background-image,否则两份箭头叠出「深色箭头 + 蓝色轮廓」的重影,实测按钮中心取到深灰 rgb(51,51,57) 正是这个原因。现浅色为白底蓝箭头、深色为深底淡蓝箭头,两种主题均无残留;
2026.11.18
日常维护
修掉「改了没生效」的老毛病:三个页面引用 resources/Top/css/zzsc.css 与 zzsc.js 时都是不带任何 query 的裸路径,浏览器会强缓存,改完样式在用户那边可能压根没加载 —— 现在统一补上 ?v=版本&t=文件时间&av=资源戳,与全站其它静态资源一致;同时把该 CSS 里从 demo 页带过来的 header{background:#5c4751;height:100px} 与 main p{...} 规则删掉,它们会命中建站史页的 <header class="xd-cl-head">,给它糊上深紫底色并撑到 100px 高,文件本身混合的 GBK 与非法字节也一并统一为 UTF-8;
2026.11.18
问题修复
修复页脚不再锁定底部、跟随页面滚走:上一版为修「固定页脚遮挡简介尾部」把页脚从 sticky 改成了 static,遮挡是好了、锁定也没了。同一个位置前后试过三种方案 —— fixed 锁定正确但脱流不占位、正文末行被压住;sticky 在流里占位但元素位于视口下方时会一直黏底,等于长页面里恒定浮层;static 不遮挡但会滚走。正确解法是 fixed 锁定 + 内容区 padding-bottom 预留页脚高度,两者必须成对出现,只做一半就会退回上面某一版的毛病;
2026.11.18
版本发布
站点更新日志徽章改为独立版本 v2.0.0,与程序版本号解耦:原先徽章种子取自模板里写死的 v2.0.18,等于每发一版程序、日志页徽章就跟着跳,看不出「日志本身攒了几轮」;现默认值独立为 v2.0.0,后台「更新日志 → 页头信息」明确标注两者无关。存量站点的徽章存在 data/pages.json 属用户内容、不会被默认值覆盖,因此后台加了提醒:当徽章与程序版本相同时出现「改为独立版本 v2.0.0」按钮,点一下填入再保存即可;
2026.11.18
问题修复
新增站点更新日志「前端默认排序」预设:可设为手动顺序(按后台列表自上而下,默认)、日期倒序(新的在前)或日期正序(早的在前),解决「日志一多、想按时间读却得手工拖」的问题。日期解析支持 2026.10.29 / 2026-10-29 / 2026/10/29 / 2026.9.3 等写法;无法解析日期的记录恒排最后而不当作 1970 扔到最前,同日记录保持原有相对顺序;排序在服务端完成,前台按类型筛选只做显隐、不会打乱已排好的顺序,后台下拉改动还会即时回显「保存后会变成什么」;
2026.11.18
版本发布
撤掉更新日志徽章的「改为独立版本 v2.0.0」提醒:上一版为照顾存量站点,在徽章与程序版本相同时弹黄条并给一键改回按钮。这个设计多余且方向不对 —— 徽章的规则只有一句「首次部署默认 v2.0.0,之后想填什么由用户自己决定」,它本来就不与程序版本联动,不存在「需要从系统版本改回来」这种状态;而徽章恰好等于程序版本是完全合法的,每次却弹黄条,看着像出错。现该提醒与按钮、以及仅为它而加的后端字段一并移除,徽章回归为普通输入框,填 v2.1.0 / 2026.11 第 3 轮 / 留空都可以;
该类型下暂无记录