refactor: rename the theme brand and every identifier from AKSRT to Jio

Full-project rename. `git grep -i aksrt` is now empty apart from the
DBMigrator 3.3.0 changelog note that documents the rename itself.

Code identifiers
- PHP namespace AKSRT\ -> Jio\ (composer PSR-4 + 378 declarations)
- global constants AKSRT_* -> JIO_* (VERSION/DIR/URI, PAY_TYPE_*, CAPTCHA_*)
- procedural functions, hooks, options, meta keys, table names,
  cookies, query vars, ajax actions and nonces: aksrt_ -> jio_
- text domain aksrt -> jio; Theme Name -> Jio
- JS globals: aksrtData/aksrtAdminData/... -> jioData/jioAdminData/...,
  window.AKSRTCaptcha & friends -> window.JioCaptcha, Aksrt* -> Jio*
- Vue components Aks*.vue -> Jio*.vue (15 files renamed + imports)
- CSS classes/data-attrs/custom properties: aksrt- -> jio-
- REST namespace aksrt/v1 -> jio/v1 (incl. payment gateway callbacks)

Storage layer
- DB tables {prefix}aksrt_* -> {prefix}jio_*; SCHEMA_VERSION 3.2.0 -> 3.3.0
  so dbDelta creates the new names on install
- widget id_base aksrt_widget_* -> jio_widget_*
- uninstall.php drop list rebuilt from the actual migrator tables
  (dropped 3 stale entries, added the 17 missing ones)

Removed
- hardcoded https://api.aksrt.com/version.json default update endpoint;
  get_endpoint() now reads the 「更新端点」 setting and do_check() no-ops
  when it is empty

Files renamed: inc/helpers/aksrt-*.php -> jio-*.php (54),
assets/admin/src/components/form/Aks*.vue -> Jio*.vue (15).
Build artifacts regenerated: assets/css/build, assets/js/runtime,
assets/admin/build.

Verified: audit-psr4-paths errors=0, audit-admin-contracts errors=0
(warnings=56, unchanged baseline), 813/813 widget-system tests,
44/44 phpunit, php -l clean across all PHP.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Opus 5 committed 2026-11-01 20:05:04 +08:00
1 parent 5b16bc6e15
commit 35bb96e82f
997 files changed
+28216 -28188

No files matched your search

+24 -24
View File
@@ -3,7 +3,7 @@
*
* 硬约束:
* 1) 会员弹窗加载占位为完整布局仿形骨架(vipSkeleton()),复用全局
* aksrt-modal-runtime__skeleton-line/-block 与 shimmer 动画,
* jio-modal-runtime__skeleton-line/-block 与 shimmer 动画,
* VIP 专属形状样式落在 assets/css/frontend/vip-modal.css;
* 2) 弹窗数据缓存 TTL 60s,悬停/聚焦入口按等级意图预热,预热与
* openRemote 共用 cacheKey 与 flight;
@@ -39,41 +39,41 @@ const scripts = read('src', 'Core', 'ScriptsPart1b.php');
test('会员弹窗使用完整布局仿形骨架屏', () => {
assert.match(vipJs, /function vipSkeleton\(\) \{/);
assert.match(vipJs, /node\("div", "aksrt-vip-modal-skeleton"\)/);
assert.match(vipJs, /node\("div", "jio-vip-modal-skeleton"\)/);
assert.match(vipJs, /skeleton\.setAttribute\("aria-busy", "true"\)/);
// 结构:用户框(头像+两行)、等级卡行、双列面板(权益+套餐区)。
assert.match(vipJs, /aksrt-vip-modal-skeleton__user/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__avatar/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__lines/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__tabs/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__tab/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__pane/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__info/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__products/);
assert.match(vipJs, /aksrt-vip-modal-skeleton__button/);
assert.match(vipJs, /jio-vip-modal-skeleton__user/);
assert.match(vipJs, /jio-vip-modal-skeleton__avatar/);
assert.match(vipJs, /jio-vip-modal-skeleton__lines/);
assert.match(vipJs, /jio-vip-modal-skeleton__tabs/);
assert.match(vipJs, /jio-vip-modal-skeleton__tab/);
assert.match(vipJs, /jio-vip-modal-skeleton__pane/);
assert.match(vipJs, /jio-vip-modal-skeleton__info/);
assert.match(vipJs, /jio-vip-modal-skeleton__products/);
assert.match(vipJs, /jio-vip-modal-skeleton__button/);
// 线条/色块复用全局骨架类。
assert.match(vipJs, /aksrt-modal-runtime__skeleton-line is-wide/);
assert.match(vipJs, /aksrt-modal-runtime__skeleton-line is-short/);
assert.match(vipJs, /aksrt-modal-runtime__skeleton-block/);
assert.match(vipJs, /jio-modal-runtime__skeleton-line is-wide/);
assert.match(vipJs, /jio-modal-runtime__skeleton-line is-short/);
assert.match(vipJs, /jio-modal-runtime__skeleton-block/);
// openRemote 传入自定义骨架,不再使用纯文本占位。
assert.match(vipJs, /skeleton: vipSkeleton\(\),/);
assert.doesNotMatch(vipJs, /加载中/);
});
test('骨架样式落在 vip-modal.css 并对齐 640px 双列阈值', () => {
assert.match(vipCss, /\.aksrt-vip-modal-skeleton \{/);
assert.match(vipCss, /\.aksrt-vip-modal-skeleton__avatar \{[\s\S]*?border-radius: 50%/);
assert.match(vipCss, /\.aksrt-vip-modal-skeleton__tab \{[\s\S]*?flex: 1/);
assert.match(vipCss, /\.aksrt-vip-modal-skeleton__button \{[\s\S]*?height: 38px/);
assert.match(vipCss, /animation: aksrt-modal-skeleton/);
assert.match(vipCss, /@media \(min-width: 640px\)[\s\S]*?\.aksrt-vip-modal-skeleton__pane \{[\s\S]*?grid-template-columns: 1fr 1\.2fr/);
assert.match(vipCss, /\.jio-vip-modal-skeleton \{/);
assert.match(vipCss, /\.jio-vip-modal-skeleton__avatar \{[\s\S]*?border-radius: 50%/);
assert.match(vipCss, /\.jio-vip-modal-skeleton__tab \{[\s\S]*?flex: 1/);
assert.match(vipCss, /\.jio-vip-modal-skeleton__button \{[\s\S]*?height: 38px/);
assert.match(vipCss, /animation: jio-modal-skeleton/);
assert.match(vipCss, /@media \(min-width: 640px\)[\s\S]*?\.jio-vip-modal-skeleton__pane \{[\s\S]*?grid-template-columns: 1fr 1\.2fr/);
});
test('弹窗打开提速:缓存 TTL 提升与意图预热', () => {
assert.match(vipJs, /cacheTtl: 60000,/);
// 预热与 openRemote 同一 cacheKey(method + AksrtRequest.url)。
// 预热与 openRemote 同一 cacheKey(method + JioRequest.url)。
assert.match(vipJs, /function vipModalCacheKey\(level\) \{/);
assert.match(vipJs, /"GET:" \+ window\.AksrtRequest\.url\("\/pay\/vip\/modal", \{ vip_level: level \}\)/);
assert.match(vipJs, /"GET:" \+ window\.JioRequest\.url\("\/pay\/vip\/modal", \{ vip_level: level \}\)/);
assert.match(vipJs, /cache\.acquire\(vipModalCacheKey\(level\)/);
assert.match(vipJs, /ttl: 60000,/);
assert.match(vipJs, /tags: \["vip"\]/);
@@ -134,7 +134,7 @@ test('header-userbox styles ship once in the shared public bundle', () => {
const bundle = read('assets', 'css', 'build', 'public.css');
assert.strictEqual((builder.match(/'assets\/css\/frontend\/header-userbox\.css'/g) || []).length, 1);
assert.strictEqual((bundle.match(/\/\* source: assets\/css\/frontend\/header-userbox\.css \*\//g) || []).length, 1);
assert.match(bundle, /\.aksrt-header-userbox\s*\{/);
assert.match(scripts, /wp_enqueue_style\(\s*'aksrt-public',[\s\S]*?\['aksrt-main'\]/);
assert.match(bundle, /\.jio-header-userbox\s*\{/);
assert.match(scripts, /wp_enqueue_style\(\s*'jio-public',[\s\S]*?\['jio-main'\]/);
assert.doesNotMatch(scripts, /\$enqueue_module\('header-userbox'\)/);
});