refactor(assets): vendor 资产迁入标准目录并全仓去除 zibll 标识

- assets/vendor 全量迁移: fontawesome5→assets/fontawesome5, css→assets/css,
  js→assets/js/runtime(避开 14 个同名自有文件), img 合并去重→assets/img,
  fonts→assets/fonts; 删除 assets/vendor
- libs 五个与 widgets/third-party 字节相同的库不重复入库, loader paths 改指向
- 运行时切换: _win.uri=assets 根, loader baseUrl=/js/runtime, enlighter 注入
  路径同步; PHP 7 个引用文件切换并改名 $zibll_*→$runtime_*
- 去品牌: Qinver 头注释/品牌 console.log/演示链接清除, 默认文案中性化
- 功能标识符改名: zib__→aksrt__, zib_ajax→aksrt_ajax, window.zib→
  window.aksrtLegacy, zibllblock/*→aksrtblock/*, .zib-widget→.aksrt-panel,
  .zib-slider→.aksrt-slider, zib_menu_options meta 键等
- 自有 CSS 改名: legacy-utilities/compat-vars/footer shell
- admin SPA 重建; 契约测试同步(路径/断言/文件更名)
- 例外保留: tests/visual 对照环境与 fixtures 前缀(外部 Zibll 产品引用)

验证: php -l 133 个改动文件通过; runtime 86 个 JS node --check 通过;
契约测试 68/70(2 个失败经 stash 对照确认为存量问题)
This commit is contained in:
2026-08-22 16:16:30 +08:00
parent 4f2391fb64
commit 9375b1c30c
591 changed files with 1690 additions and 11041 deletions
@@ -45,7 +45,7 @@ test('the article stream exposes only the new typed renderer contract', () => {
assert.doesNotMatch(consumers, /content-post-card|aksrt_homepage_render_post_card/);
});
test('settings use Zibll list modes, grouped options, and destructive related keys', () => {
test('settings use legacy list modes, grouped options, and destructive related keys', () => {
const source = join(articleFiles);
const listSchema = read('assets/admin/src/schema/sections/post-list/list.js');
const pageSchema = read('assets/admin/src/schema/sections/post-list/page.js');
@@ -123,7 +123,7 @@ test('image resolution counts only content images and applies the configured Wor
assert.match(phpSchema, /'spare_thumbnail'.*'default' => \[\['img' => get_template_directory_uri\(\) \. '\/assets\/img\/thumbnail\.svg'\]\]/);
});
test('list, card, media, badge and Mini DOM follow dedicated Zibll structures', () => {
test('list, card, media, badge and Mini DOM follow dedicated legacy structures', () => {
const markup = read('inc/helpers/posts-renderer/markup.php');
const data = read('inc/helpers/posts-renderer/post-data.php');
const card = markup.slice(markup.indexOf('function aksrt_renderer_card'), markup.indexOf('function aksrt_renderer_mini'));
@@ -136,7 +136,7 @@ test('list, card, media, badge and Mini DOM follow dedicated Zibll structures',
assert.match(markup, /<div class="item-body flex xx flex1 jsb/);
assert.doesNotMatch(card, /item-excerpt|renderer_excerpt_markup|thumb-items/);
assert.match(data, /<div class="item-thumbnail/);
assert.match(data, /relative zib-slider.*new-swiper item-thumbnail/s);
assert.match(data, /relative aksrt-slider.*new-swiper item-thumbnail/s);
assert.match(data, /swiper-slide.*gradient-bg.*data-opacity="0\.2"/s);
assert.match(data, /\$fit = \$is_contain && !\$has_slides \? ' contain gradient-bg' : ''/);
assert.match(data, /video-thumb-box.*data-post-thumb-video/s);
@@ -180,13 +180,13 @@ test('post-card CSS owns the exact desktop and 767/640 responsive matrix', () =>
assert.doesNotMatch(mobile767, /\.posts-mini\s*\{[^}]*width:\s*100%/s);
assert.match(mobile640, /\.posts-mini\s*\{[^}]*width:\s*100%/s);
assert.match(mobile640, /\.posts-item:not\(\.no-thumb\) \.meta-right item\s*\{[^}]*display:\s*none/s);
assert.doesNotMatch(css, /\.aksrt-|post-card-cms|grid-cms/);
assert.doesNotMatch(css, /\.aksrt-(?!panel|slider)|post-card-cms|grid-cms/);
});
test('article metadata owns its flex and SVG contracts on every list route', () => {
const css = read('assets/css/frontend/post-card.css');
const scripts = read('src/Core/ScriptsPart1c.php');
const loader = read('assets/vendor/zibll/js/loader.js');
const loader = read('assets/js/runtime/loader.js');
assert.doesNotMatch(scripts, /aksrt-svg-icon|svg-icon-helper/);
assert.match(loader, /'svg-icon'\s*:\s*'svg-icon'/);
@@ -252,7 +252,7 @@ test('AJAX pagination can recover, caps auto loading and rehydrates appended med
assert.match(ajaxList, /if \(link\.closest\("\[data-aksrt-pagination\], \.aksrt-comment-pagination"\)\) return;/);
assert.match(media, /thumb-dplayer-playing/);
assert.doesNotMatch(media, /new Swiper|data-post-thumb-slider/);
assert.match(read('assets/vendor/zibll/js/main.min.js'), /new-swiper/);
assert.match(read('assets/js/runtime/main.min.js'), /new-swiper/);
assert.match(media, /data-post-thumb-video/);
assert.match(media, /window\.Grade\(container/);
assert.match(media, /linear-gradient\(135deg/);
@@ -260,7 +260,7 @@ test('AJAX pagination can recover, caps auto loading and rehydrates appended med
assert.match(read('src/Core/ScriptsPart1c.php'), /'aksrt-grade'/);
});
test('the pinned Zibll baseline records all source checksums', () => {
test('the pinned visual baseline records all source checksums', () => {
const baseline = JSON.parse(read('tests/visual/zibll-9.0-article-baseline.json'));
assert.equal(baseline.theme, 'Zibll');
assert.equal(baseline.version, '9.0');