Repository navigation
Plainstruct 3.6.0 Release
[3.6.0] - 2026-10-04
修复
-
博客目录树滚动高亮全面加固(五款博客主题):滚动监听从单一
window监听升级为捕获级文档监听(视口与任何内部滚动容器的滚动都会触发,覆盖程序化滚动、滚动链与各类滚动源),并在load(图片/字体加载改变标题位置)与resize后补算一次当前高亮,保证任意场景下目录都能正确点亮 -
修复对照预览与主题预览中页面脚本不运行:两个预览面板的 iframe 此前以沙箱禁用脚本(TOC 高亮/搜索/灯箱等页面交互全部沉默,顶栏变形等行为由宿主"等效模拟"),与「预览即产出」的定位相悖 —— 博客目录树滚动到对应标题时不亮起即由此而来。现启用
allow-scripts(保留同源),页面脚本与产物一致地运行,宿主的等效模拟与"按钮仅供预览"提示一并移除;构建页与独立窗口预览本就运行脚本,不受影响 -
修复文章移入文件夹后封面图失效:
move_item/目录重命名只挪文件不换算引用,文章的cover:(及正文相对图片、站内链接)都按「相对本文档目录」解析,挪进子目录后全部指向不存在的位置。现前端在移动/重命名(含目录与批量)后,自动把受影响文档的文内相对引用按新目录换算并落盘(remapDocRefsForMove,覆盖 Markdown 图片、<img>、封面与站内链接);打开中未保存的文档同步改写编辑器内容并直接落盘新路径,避免自动保存写回旧路径 -
修复从资产拖入正文时路径多一层
asset/:资产栏图片拖到编辑器,插入的引用形如asset/asset/xxx.png(子目录文档为../asset/asset/xxx.png) —— 拖拽载荷本身已是 content/ 相对的完整路径(含资产目录名),插入时却按「裸文件名」又拼了一次目录前缀,两段语义不匹配导致前缀重复,构建产物中的引用全部 404。现改为按「当前文档目录 → 目标文件」换算相对引用(与资产页移动图片后的引用重定向同源),任意层级的文档与旧版images/站点都正确 -
资产页拖拽进编辑器同样插入图片引用:资产页此前只给拖拽设置纯文本载荷,拖入编辑器会被当作普通文本原样插入;现在单张图片的拖拽额外携带资产载荷(拖拽效果改为 copyMove,不影响文件夹间的移动),拖入编辑器即插入规范的 Markdown 图片引用
-
修复搜索插件导致整页无法点击:搜索插件的遮罩层常驻 DOM,关闭态只做了透明度为 0 —— 全屏遮罩仍然拦截整页的指针事件,开启插件后生成的站点看似正常、实则什么都点不动;现关闭态叠加
visibility: hidden与pointer-events: none,打开时才参与命中测试 -
修复插件在预览刷新后集体失效:预览的
document.write重写会复用同一个 document 对象,插件的防重入标志(window 布尔值)在新内容加载时误判「已初始化」直接返回,点击委托不再注册 —— 搜索按钮在第一次自动重建后消失、图片灯箱点不开。现改以标记元素为防重入标志(重写会清空 DOM,标记随之消失,插件自然重新初始化),连续多次重建后搜索与图片预览均持续可用;注入 shim 的同类隐患(独立窗口刷新后触摸镜像/侧滑返回失效)一并修复 -
修复灯箱工具条按钮点击无效:灯箱在按下瞬间就把指针捕获到遮罩层,按钮收到的 pointer 事件被整体重定向,
click无法派发到按钮本身(缩放/旋转/下载/关闭在真实点击下全部失灵,双击缩放同理);现改为越过位移阈值才捕获并豁免工具条区域,按钮点击、双击缩放、拖拽平移与惯性各归其位 -
图片预览插件优化:预览时锁定页面背景滚动(视口与全部可滚动容器),移动端拖动只作用于预览图片本身,背景页面不再跟随移动,关闭后滚动位置保持;灯箱新增图片信息条(工具条上方,毛玻璃胶囊)显示文件名 · 分辨率 · 文件大小(大小经同源 HEAD 请求读取,不可得时自动省略);旋转连贯化 —— 角度持续累积不再取模,修复转到 270° 后下一次沿原路倒转回 0° 的「回转一圈」;进出场衔接修正 —— 位置/尺寸起止值改用布局尺寸计算(此前把带缩放的显示尺寸当基尺寸,放大后退出会二次缩放跳变),进场先无过渡摆到源图位再长曲线迁移,退场途中旋转同步收正到最近整圈,落地与源图朝向一致;新增 class 标记模式(默认启用)—— 仅 class 含
mws_ps_imgpreview的图片可点击预览(编辑器「图片预览块」插入的图片自带该标记),主题配置「插件」分组可把标记改成任意 class 名或留空放行全部正文图片;构建产物经 script 标签data-require-mark传递,mock 预览经内联变量传递;标记匹配同时检查图片自身与其包裹容器(如<figure>)
新增
- 站点插件系统:插件与主题解耦,以站点为单位在主题配置面板末尾新增的**「插件」分组**统一管理 —— 内置插件开关与用户导入的插件都在这里,对所有主题(含自定义主题)全局生效;两款内置插件默认开启
- 站内搜索(内置插件):站点右下角出现毛玻璃搜索按钮,快捷键
⌘/Ctrl+K呼出搜索面板;构建时自动生成全站搜索索引(页面标题、描述与正文纯文本,懒加载不拖慢首屏),输入即搜、结果以强调色高亮命中片段,↑↓选择、Enter打开、Esc关闭;面板明暗自动跟随站点配色,强调色沿用主题配置,移动端为贴顶全宽布局 - 图片预览(内置插件):点击正文图片进入灯箱 —— 从源图位置平滑展开、关闭时原路返回(进出场空间一致);支持滚轮 / 双指捏合 / 双击缩放(以光标或点击处为中心)、按住 1:1 拖拽平移(松手带惯性衰减)、
±90°旋转与同源下载;Esc、点击背景或关闭按钮退出,+-0R与方向键均可操作;减弱动态偏好下进出场退化为交叉淡入淡出 - 自定义插件导入:「插件」分组内点击「导入插件」,把任意
.js/.css文件(可多选,合并为一个条目)导入为站点插件;文件保存于站点.plainstruct/plugins/,构建时拷入产物并在每个页面按顺序加载;支持逐条启用/停用与删除(删除带确认弹窗)
- 站内搜索(内置插件):站点右下角出现毛玻璃搜索按钮,快捷键
- 编辑器「图片预览块」按钮:工具栏图片按钮旁新增「图片预览块」—— 选取图片后以
<figure class="ps-image">包裹插入(自带图注,样式由图片预览插件提供,可点击进入灯箱);原有「插入图片」的 Markdown 引用行为不变 - 目录点按跳转动画(五款博客主题):「目录与动效」配置组新增**「目录点按跳转动画」(滑动 / 淡化过渡 / 无动画,缺省滑动)、「跳转动画曲线」(标准/缓出/缓入/线性/弹性/自定义 cubic-bezier)与「跳转动画时长」**(120–1000ms,缺省 450)—— 滑动为逐帧贝塞尔缓动(弹性曲线可小幅过冲回弹),淡化过渡为正文淡出、原位跳转、再淡入(各占时长一半),无动画即直接跳位;减弱动态偏好下自动退化为直接跳位
- 目录小彩条按形状适配(五款博客主题):目录悬停动画「滑入」的强调色小彩条此前只适配缩进线样式 —— 树形分支下彩条改为对齐枝点的横线滑入,当前项的枝条(横线与竖线)同步染上强调色;极简下彩条改为条目底部下划线滑入,与各形状的设计语言一致
- 博客主题新增置顶按钮(五款博客主题):「内容显示」配置组新增**「显示置顶按钮」(缺省开启)与「置顶按钮位置」(页面右下角 / 页面左下角)—— 页面下滚超过一屏的约一半后毛玻璃圆钮浮现,点击以目录点按的缓动时长平滑回到顶部,到顶后自动隐去;若搜索入口处于相同角落,置顶按钮自动竖列并排**(上移一个身位),不同角落则各自独立
- 搜索插件新增入口设置:「插件」分组新增**「搜索入口形式」(按钮式 / 长条文本框式)与「搜索入口位置」**(页面右下角 / 页面左下角 / 顶栏最右侧)—— 长条文本框为带放大镜图标的毛玻璃胶囊,点击展开搜索面板;顶栏模式把入口并入主题顶栏最右侧(随布局排列,不遮挡导航);构建产物经 script 标签属性传递设置,mock 预览经内联变量传递,行为完全一致
- 配置头新增「隐藏文档」:勾选后该文档不进入博客文章流与文档站侧栏导航、目录列表页不再列出、上/下篇跳过、不被搜索索引收录(预览内联数据与构建产物索引均排除),页面本身仍正常生成 —— 仅可通过直接链接访问;博客顶栏的自定义导航仍可勾选展示隐藏文档(默认模式不展示)。front-matter 写
hidden: true,取消勾选自动移除字段 - 配置头新增「作者署名」与「AIGC 声明」:「编辑配置头」表单(工具栏按钮与文件树右键入口)新增作者署名输入框与 AIGC 声明三档选择 —— 不显示 AIGC 声明(缺省,不写入字段)、无任何 AIGC、存在 AIGC;确认后写回 front-matter 的
author/aigc字段(留空或不显示档不落字段,切换档位时旧字段自动移除),十款主题的文档页在日期同一行渲染(弹性 meta 行,随内容自动换行):作者名以正文色小字紧跟,AIGC 声明以圆角徽标呈现(「本文由 AI 辅助生成」/「本文无任何 AIGC」),未声明的文档页面保持原样;手写的其他 front-matter 字段仍原样保留。全部主题的「内容显示」配置组新增**「显示作者署名」与「显示 AIGC 声明」**两个独立开关(缺省开启),可在站点层面整体关闭 - 自动保存延迟滑块与倒计时:设置 → 编辑器的「自动保存延迟」由档位下拉改为滑块(0.3 – 5 秒,缺省 0.9 秒;仅在自动保存开启时显示),拖动即改;编辑器保存状态区在输入后实时显示自动保存倒计时(如「0.8 秒后自动保存」,0.1 秒粒度),手动保存、切换文档或关闭自动保存时立即消失;历史设置缺该字段时自动按 0.9 秒处理,手动 ⌘/Ctrl+S 保存不受影响
- 刷新时禁用动画(覆盖所有应用内预览):设置 → 编辑器新增「刷新时禁用动画」开关 —— 开启后,应用内的全部站点预览(内容页打开的独立预览窗口、构建页的站点预览、编辑器对照预览与主题页的示例预览)在自动重建刷新或重新渲染页面时,不再重播主题的页面进场动画与加载动画(转圈/点点/进度条),写作阅读不被反复闪动的页面打断;动画由注入预览的 shim 按设置在首帧绘制前停用,mock 预览同样生效;只停 animation 并隐藏加载覆盖层,悬停反馈等过渡交互与发布后的站点访问不受影响
变更
- 顶栏当前页标题改为紧跟品牌区显示(五款博客主题):开启「顶栏显示当前页面标题」后,标题此前占满品牌与导航之间的剩余空间并靠右对齐,视觉上贴着右侧导航,更像导航的附属信息;现改为紧跟 logo/站点标题右侧(以顶栏统一的呼吸间距分隔),作为品牌区的上下文补充,右侧导航恢复常驻顶栏右缘;标题过长时仍在中断处省略,窄屏自动隐藏等行为不变
- 退格与 Delete 逐字符删除换行:行首退格(或行尾 Delete)此前会一次性删掉换行符连同行尾的两个硬换行空格 —— 把换行符当成了特殊组合而非普通字符,与编辑直觉相悖;现回归逐字符语义,换行符一次删一个,残留的行尾空格以空白标记(¶)可见,由作者自行决定去留
- 十款内置主题的版本号统一升至 3.6.0