From fbe41e213055f4139b7003fa09d3e75bdd78af60 Mon Sep 17 00:00:00 2001 From: wpdev Date: Fri, 31 Jul 2026 09:45:22 +0800 Subject: [PATCH] =?UTF-8?q?release:=20v1.0.0=20=E2=80=94=20=E5=8F=96?= =?UTF-8?q?=E4=BB=A3=20wp-data-optimizer=20v3.4.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 版本 0.1.0 → 1.0.0(含 TMDO_VERSION / TWO_MEET_DATA_OPTIMIZER_VERSION / WP_DATA_OPTIMIZER_VERSION 與 unit bootstrap)。姊妹外掛只在診斷 CLI 顯示 WP_DATA_OPTIMIZER_VERSION、無版本比較,故報 1.0.0 安全。 wp-data-optimizer 退休:兩站台已停用,本機三個目錄改名為 *.retired (wp-data-optimizer / -v3.1.1 / _audit),git 歷史保留在 gitea。 CHANGELOG 記錄本次 backport 全貌與 4 項 ABI/行為變更。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01TbG1keQQ7XBa7qMQY16KCY --- 2meet-data-optimizer.php | 8 +++--- CHANGELOG.md | 59 ++++++++++++++++++++++++++++++++++++++++ tests/bootstrap.php | 2 +- 3 files changed, 64 insertions(+), 5 deletions(-) diff --git a/2meet-data-optimizer.php b/2meet-data-optimizer.php index 4f6b5c5..3320d51 100644 --- a/2meet-data-optimizer.php +++ b/2meet-data-optimizer.php @@ -3,7 +3,7 @@ * Plugin Name: 2meet Data Optimizer * Plugin URI: https://2meet.io/2meet-data-optimizer * Description: 通用 WordPress 反 EAV 引擎:將 postmeta / usermeta / termmeta / commentmeta 自動分流至四象限扁平表(Hot / Warm / Cold / Archive),大幅提升搜尋與篩選效能。從 wp-data-optimizer v2.16.0 提煉的純核心,整合層交給 11 個 AddOn。 - * Version: 0.1.0 + * Version: 1.0.0 * Requires at least: 6.0 * Tested up to: 6.9.4 * Requires PHP: 8.1 @@ -26,7 +26,7 @@ if ( ! defined( 'ABSPATH' ) ) { } // ── Constants ────────────────────────────────────────────────────────────── -define( 'TMDO_VERSION', '0.1.0' ); +define( 'TMDO_VERSION', '1.0.0' ); define( 'TMDO_DB_VERSION', '2.1.0' ); define( 'TMDO_PATH', plugin_dir_path( __FILE__ ) ); define( 'TMDO_URL', plugin_dir_url( __FILE__ ) ); @@ -52,12 +52,12 @@ define( define( 'TMDO_IS_MYSQL', ! TMDO_IS_SQLITE ); // ── 跨外掛偵測訊號(dual-fire 對外保留 wp-data-optimizer 訊號)──────────── -const TWO_MEET_DATA_OPTIMIZER_VERSION = '0.1.0'; +const TWO_MEET_DATA_OPTIMIZER_VERSION = '1.0.0'; const TWO_MEET_DATA_OPTIMIZER_FILE = __FILE__; const TWO_MEET_DATA_OPTIMIZER_DB_VERSION = '1.2.0'; // 向後相容:對外 sister plugins 仍以 WP_DATA_OPTIMIZER_VERSION 偵測。 if ( ! defined( 'WP_DATA_OPTIMIZER_VERSION' ) ) { - define( 'WP_DATA_OPTIMIZER_VERSION', '0.1.0' ); + define( 'WP_DATA_OPTIMIZER_VERSION', '1.0.0' ); } if ( ! defined( 'WP_DATA_OPTIMIZER_FILE' ) ) { define( 'WP_DATA_OPTIMIZER_FILE', __FILE__ ); diff --git a/CHANGELOG.md b/CHANGELOG.md index 93b7dc4..1c3c307 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,65 @@ Versioning follows [Semantic Versioning](https://semver.org/). --- +## [1.0.0] — 2026-07-31 — 取代 wp-data-optimizer v3.4.6 + +本版把 `wp-data-optimizer` v3.0.1–v3.4.6(92 個 commit)全數 backport 進來, +`wp-data-optimizer` 自此退休:兩個站台皆已停用它,本機目錄改名為 +`wp-data-optimizer.retired`,其 git 歷史保留在 gitea。 + +### 🔒 Security / 正確性 + +- **7 處 `Logger::error()` 參數不足**(array 傳給 string `$hook`)修正 —— 4 個 stress + tester、auto-promoter、conflict-detector、hook-bus,皆為 TypeError fatal +- **`Logger::trace_id()` 補回**:`Audit_Logger::write_row()` 一直呼叫它,但提煉時漏了; + `Audit_Logger::init()` 從未註冊所以隱藏至今 —— 實機驗證才暴露 +- REST 4 個公開端點加上 `show_in_rest` 欄位 allowlist(CVSS 5.3) +- 13 個破壞性 admin 動作由 GET 改 POST + nonce +- DDL 型別白名單(19 型別)、CLI 表名守衛 +- 整欄清空改 `wpdo_allow_mass_column_clear` opt-in(原本 >500 列才擋) +- audit 表補 `group_name` / `action` 欄並註冊 `Audit_Logger::init()` +- `known_login_ips` 註冊(spoke-sso 實際寫入的欄位,先前落 `wp_usermeta`) + +### ⚡ 並發 + +- warm 表 `UNIQUE KEY ui_post_meta`(缺它 `ON DUPLICATE KEY UPDATE` 不生效) +- Zone_Cold 改 `JSON_MERGE_PATCH` / `JSON_REMOVE`、Zone_Warm 原子 `increment()`、 + hook-bus `write_to_flat` 改 upsert + +### 🏗 架構 + +- 回填 `TMDO_Zone_Router` + `TMDO_Routing_Predicate`(Sync_Bridge 400→269 行) +- 回填 Migration Phase Strategy:interface + base + 11 個 phase 類別, + orchestrator 1107→640 行,公開介面不變 +- 核心新增 `TMDO_Standard_Post_Interceptor`,HP AddOn 4 個 interceptor 573→344 行 + +### 🔌 相容性 + +- hook 橋改**雙向**:核心一律 `do_action('wpdo_*')`,原本單向轉發使所有 + `tmdo_*` 契約收不到事件 +- 57 個 AddOn 類別補 `WPDO_*` alias(核心 alias 表在 `plugins_loaded:4` 執行, + 涵蓋不到 `:6` 才載入的 AddOn) +- 38 個 CLI 子指令補 `wp tmdo` 命名空間 +- 選單 slug 統一回 `wp-data-optimizer`(B 內部 10+ 處連結本來就指向它) +- HP adapter 介面改為 `TMDO_ extends WPDO_`,讓 `instanceof WPDO_HivePress_Adapter` 成立 + +### ✅ 品質 + +- 128 個生產檔 `declare(strict_types=1)` +- PHPCS 0 errors / PHPStan level 6(baseline 710) +- 測試:核心 unit 451 / integration 416、hivepress-addon 145、woocommerce-addon 10 +- gitea CI:核心 6 個 job 全綠 + 11 個 AddOn workflow + branch protection + +### ⚠️ ABI / 行為變更 + +- `doctor_callback` 由 3 參數改為 1 參數(表名) +- `wpdo_capture_before_value` 預設 `true` → `false`;需要 `value_before` 的 + 消費者(audit log)要 `add_filter( 'wpdo_capture_before_value', '__return_true' )` +- `wpdo_allow_mass_column_clear` 現為 opt-in,整欄清空預設被拒 +- `SCHEMA_VERSION` 2.0.0 → 2.1.0(audit 表 ALTER) + +--- + ## [0.1.0] — 2026-05-15 (initial release, Phase 0-5 完成) ### Phase 5 hotfix(同日完成) diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 383a423..54988f4 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -17,7 +17,7 @@ define( 'ABSPATH', '/fake/wordpress/' ); define( 'TMDO_PATH', dirname( __DIR__ ) . '/' ); define( 'TMDO_URL', 'http://localhost/wp-content/plugins/2meet-data-optimizer/' ); define( 'TMDO_FILE', dirname( __DIR__ ) . '/2meet-data-optimizer.php' ); -define( 'TMDO_VERSION', '0.1.0' ); +define( 'TMDO_VERSION', '1.0.0' ); define( 'TMDO_DB_VERSION', '2.1.0' ); define( 'TMDO_IS_SQLITE', false ); define( 'TMDO_IS_MYSQL', true );