{"date":"2026-10-31","cases":[{"label":"下载站","vue":"3.6.0-rc.14","unitTests":24,"browserCases":["加载期禁用控件、保留导航意图并恢复焦点","父子 v-model 与依赖筛选联动","空态和清除筛选","下载文件名与下载事件","HTTP 失败与目录格式错误","手机宽度筛选及布局无横向溢出"],"browserVersion":"156.0.8078.4","passed":true,"js":{"before":{"bytes":89797,"gzipBytes":32875},"after":{"bytes":89717,"gzipBytes":31578}}},{"label":"上传面板","vue":"3.6.0-rc.14","unitTests":23,"browserCases":["登录缺失时阻止文件进入与上传","文件选择、跨组件事件和图片预览关闭","上传忙碌态、重复选择拦截与成功结果","复制按钮与成功反馈，避免写入系统剪贴板","组件 ref 公开方法、重新选择同名文件及结果清理","上传失败反馈与重试入口"],"browserVersion":"156.0.8078.4","passed":true,"js":{"before":{"bytes":81149,"gzipBytes":30873},"after":{"bytes":72184,"gzipBytes":26615}}},{"label":"博客搜索与播放器","vue":"3.6.0-rc.14","vaporComponents":3,"checks":["theme typecheck","build-scripts typecheck","SSG build","standalone music build","theme lifecycle","theme browser","theme edges","standalone bundle contract and size budget"],"js":{"before":{"bytes":207540,"gzipBytes":74363},"after":{"bytes":205507,"gzipBytes":73298}},"standaloneMusic":{"before":{"bytes":111949,"gzipBytes":40145,"sha256":"225a6102b70611daec1ce87c9c3558b270df8ffffcd4c24fe23d5a2d16548924"},"after":{"bytes":99900,"gzipBytes":35386,"sha256":"b9a1a716c318da136208a9b7067e3fda227185f73bc4e76559b9081b36f6e55e"},"beforeOptimization":{"bytes":125433,"gzipBytes":44787,"sha256":"a68d4a731a83a05b64b9f106d2166be2cd4229de4af0321317baece8412ab9df"},"buildOptimization":{"date":"2026-10-31","versions":{"vue":"3.6.0-rc.14","compilerSfc":"3.6.0-rc.14","vite":"8.3.5","vuePlugin":"6.0.10","esbuild":"0.28.2","node":"v26.12.0"},"measurement":{"unit":"bytes","gzipLevel":6,"sourcemaps":false},"baselineStableVdom":{"bytes":111949,"gzipBytes":40145,"sha256":"225a6102b70611daec1ce87c9c3558b270df8ffffcd4c24fe23d5a2d16548924"},"beforeOptimization":{"bytes":125433,"gzipBytes":44787,"sha256":"a68d4a731a83a05b64b9f106d2166be2cd4229de4af0321317baece8412ab9df"},"afterOptimization":{"bytes":99900,"gzipBytes":35386,"sha256":"b9a1a716c318da136208a9b7067e3fda227185f73bc4e76559b9081b36f6e55e"},"css":{"before":{"bytes":12874,"gzipBytes":2731,"sha256":"abb4d0eb2f75efe960b3164f1414084d90f104572614aadb5f6e579fba5991cc"},"after":{"bytes":12896,"gzipBytes":2783,"sha256":"2b59677c1cf0a4ea687fe99b835cea0fa5ff7765816fd77d00c175bb322768c6"}},"diagnosis":{"duplicateVueRuntime":false,"browserCompilerIncluded":false,"esbuildRuntimeModules":[{"package":"@vue/shared","entry":"shared.esm-bundler.js","version":"3.6.0-rc.14"},{"package":"@vue/reactivity","entry":"reactivity.esm-bundler.js","version":"3.6.0-rc.14"},{"package":"@vue/runtime-core","entry":"runtime-core.esm-bundler.js","version":"3.6.0-rc.14"},{"package":"@vue/runtime-dom","entry":"runtime-dom.esm-bundler.js","version":"3.6.0-rc.14"},{"package":"@vue/runtime-vapor","entry":"runtime-vapor.esm-bundler.js","version":"3.6.0-rc.14"},{"package":"vue","entry":"vue.runtime.esm-bundler.js","version":"3.6.0-rc.14"}],"sameEsbuildArtifactWithOxc":{"bytes":100081,"gzipBytes":35635,"sha256":"f709cf30312979cf96ffaac363d58cfb47982e89d8c9404da91c0a58ce9402cf"},"removedUnusedExamples":["performHydration","hydrateNode","useVdomInterop","performTransitionEnter","performTransitionLeave"],"cause":"生产 flags 已生效；esbuild 保留的未使用 hydration、过渡与互操作分支由 Oxc 的常量传播和死代码消除裁去。"},"solution":{"builder":"Vite + @vitejs/plugin-vue + Oxc","format":"ESM","fullOutputMinification":true,"preserveLegalComments":true,"exports":["mountShengMusicPlayer"],"files":["music-player.js","music-player.css","manifest.json"]},"regression":{"bundleContract":true,"budget":{"rawJs":105000,"gzipJs":38000,"rawCss":14000,"oldArtifactRejected":true},"browserSuites":[{"name":"standalone","entry":"isolated-esm","browserVersion":"156.0.8078.74","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]},{"name":"fluid","entry":"fluid-bootstrap","browserVersion":"156.0.8078.74","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]},{"name":"standalone-chromium151","entry":"isolated-esm","browserVersion":"151.0.7922.34","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]}],"theme":{"report":["搜索 → 文章 → 补充材料 → Code Lab → Esc/后退","20 次切页：同一文档、播放器和 Audio；无 pause/emptied/loadstart；无残留 iframe","新标签显式播放接管；原页面点击后重新接管","浅深色、关于页","390px 手机导航与横向溢出检查"],"start":{"identity":"5d0ed816-d124-40d0-b713-32b35c312b0e","time":0.327919,"eventCount":5},"after":{"identity":"5d0ed816-d124-40d0-b713-32b35c312b0e","samePlayer":true,"audioCount":1,"time":23.112647,"events":["emptied","loadstart","emptied","play","loadstart"],"paused":false,"readers":0,"lightboxes":1,"iframes":0,"iframeDetails":[]},"errors":[]},"visualComparison":{"browserVersion":"156.0.8078.74","results":[{"width":1200,"sameScreenshot":true,"beforeSha":"ba7560579ce9fc0a48491d855417c611d97954ba07dd51ae34a75754a0af68f6","afterSha":"ba7560579ce9fc0a48491d855417c611d97954ba07dd51ae34a75754a0af68f6","sameLayout":true},{"width":390,"sameScreenshot":true,"beforeSha":"f7449dc84ae4635b24749b1add7d921577a50106106c5744862eab575797a021","afterSha":"f7449dc84ae4635b24749b1add7d921577a50106106c5744862eab575797a021","sameLayout":true}]},"checks":["build:music-player","test:music-player:bundle","typecheck:build-scripts","typecheck:theme","lint:theme","hexo generate"]},"notes":["优化前后保持业务源码、Vue 版本与 Vapor 模式相同；最终结果含构建工具变化。","未测启动时间、交互耗时或内存；未把远端音乐供应商可用性作为通过条件。"],"sources":["https://vite.dev/config/build-options.html#build-minify","https://rolldown.rs/reference/Interface.OutputOptions#minify","https://esbuild.github.io/api/#metafile"]}},"browserSuites":[{"name":"theme","report":["搜索 → 文章 → 补充材料 → Code Lab → Esc/后退","20 次切页：同一文档、播放器和 Audio；无 pause/emptied/loadstart；无残留 iframe","新标签显式播放接管；原页面点击后重新接管","浅深色、关于页","390px 手机导航与横向溢出检查"],"errors":[]},{"name":"edges","report":["Lint Monaco 加载成功，未创建 Sandpack iframe","网络失败保留原文档、编辑器和 URL；重试成功并释放 Monaco","3 次进入真实 Sandpack 预览并离开，每次 iframe 均归零","禁用 JavaScript 时正文、目录与补充材料仍可阅读"],"errors":[]},{"name":"standalone","entry":"isolated-esm","browserVersion":"156.0.8078.74","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]},{"name":"fluid","entry":"fluid-bootstrap","browserVersion":"156.0.8078.74","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]},{"name":"standalone-chromium151","entry":"isolated-esm","browserVersion":"151.0.7922.34","report":["独立产物挂载、重复挂载保持单实例、本地音频实际播放和暂停","切歌、props 与图标更新、收藏写回","静音、音量、进度输入与 Audio 状态一致","原生表单 v-model、手动添加、textarea 导入与导出状态保持","公开 destroy API、组件卸载和宿主清理"],"errors":[]}]}],"notes":["包体积只比较生产 JS，gzip 固定 level 6；没有测交互延迟、启动时间和内存。","上传回归加载真实扩展，后台请求全部使用本地响应，剪贴板写入使用替身。","博客浏览器回归用本地 WAV 验证实际 HTMLAudio 播放与切页连续性，未验证远端音乐供应商的可用性。"]}