一介資男(Mxp.TW) 開發工具箱

Descripció

一介資男(Mxp.TW) 開發工具箱不是單一功能外掛,而是一個 WordPress 開發、維運、搬站與站點管理工具包。套件內含主要工具箱與四個可獨立啟用的子外掛,讓管理員只啟用目前站台需要的能力。

套件架構

  • Dev Tools - Mxp.TW:主要工具箱。提供外掛/主題安裝、打包、取代、資料庫維護、網站設定檢視與檔案異動檢查。
  • Dev Tools: Snippets - Mxp.TW:常用維運片段。集中處理安全強化、登入/後台調整、媒體上傳政策、報告排程與網域到期檢查。
  • Dev Tools: Site Manager - Mxp.TW:多站管理輔助。匯出/匯入站台資訊,並以 passkey、加密 token 與 HMAC 提供跨站快速登入。
  • Dev Tools: Hide Login Page - Mxp.TW:登入路徑防護。將預設登入入口改為自訂路徑,並把原始登入與未登入後台入口導向 404。
  • Dev Tools: Feedback Reporter - Mxp.TW:登入用戶全站問題回報。前台與後台可擷取目前頁面、錄製短片、標註截圖、填寫描述後由本站安全轉送 webhook。

Dev Tools – Mxp.TW(主要工具箱)

主要工具箱面向高權限管理員與開發者,功能集中在「安裝、搬站、檢查、替換」:

  • 開發常用外掛清單:從遠端清單與 WordPress.org API 取得外掛資訊,支援安裝、更新與啟用。
  • Themeforest List:輸入 Envato 或 MXP 授權碼後,列出可下載的主題、外掛與其他檔案,並支援線上安裝。
  • 外掛搜尋工具:在後台嵌入作者整理的外掛搜尋介面,從可信來源帶回下載連結後安裝。
  • 外掛/主題打包:可從外掛列表、主題工具、最近異動檔案、wp-content 或 wp-config.php 產生 ZIP 下載。
  • 外掛/主題取代:上傳 ZIP 後解析外掛或主題資訊,比對既有項目,取代前建立備份,失敗時回滾。
  • 調整內容作者工具:依 Post Type 批次改寫內容作者。
  • 查看網站各項設定:顯示外部網路資訊、wp-config.php 常數、使用者定義常數、.htaccess 與 .user.ini。
  • 主機 PHP 設定:在 phpinfo() 可用時顯示 PHP/主機設定。
  • 資料庫檢視與匯出:列出資料庫與資料表,支援單表、全表、背景 SQL 匯出與 wp-content 打包。
  • 資料庫關鍵字取代:以 Search Replace DB 類別處理序列化資料安全的預覽與實際取代。
  • WP 資料庫最佳化:檢視大型 autoload options,清理 orphan/duplicate meta、未使用 option、使用者 metabox,也提供重置 WordPress 的高風險操作。
  • 查看最近變更檔案:掃描並分類近期異動的核心、上傳、主題、外掛與其他檔案。
  • Hook 執行時間除錯:登入狀態下加上 ?debug 時,在 admin bar 顯示 hook 執行時間統計。

Dev Tools: Snippets – Mxp.TW(常用片段與站台行為)

Snippets 子外掛會直接接管多個 WordPress hook,適合用 wp-config.php 先定義 MDT_* 常數後再啟用。

  • 安全強化:停用 XML-RPC、隱藏 REST 使用者資料、移除多種前端 metadata/oEmbed/shortlink 輸出、隱藏作者資訊與頭像、停用 self-ping。
  • HTTP 標頭:可輸出 frame-options、XSS protection、content type options、cross-domain policy 與 HSTS 類型標頭。
  • 檔案修改保護:預設啟用 DISALLOW_FILE_MODS / DISALLOW_FILE_EDIT,並保護指定管理員不被一般後台列表、編輯、刪除或降權流程影響。
  • 登入與後台調整:登入頁 Logo、登入後導向、管理信箱同步、註冊開關、封鎖使用者登入、顯示內容/分類/使用者 ID、使用者註冊時間欄位、隱藏非管理員更新提示與 Customize 選單。
  • 媒體與上傳政策:可停用縮圖產生、停用大圖縮放、上傳圖片大小限制、自動填入圖片標題/alt/content,並對特權管理員與一般使用者套用不同的檔案大小與 MIME 規則。
  • Bot/垃圾防護:登入、註冊、WooCommerce 與留言表單加入 honeypot 與時間戳檢查。
  • 前台 Basic Auth:可啟用簡易前台驗證,並以指定 query key/cookie 暫時略過。
  • 外部 HTTP 請求管控:可封鎖指定網域,或啟用全域封鎖後只允許白名單。
  • 站台健康回報與自動更新排程:可透過排程回報站台資訊,也可在排程內更新指定外掛。
  • 網域到期檢查:Dashboard widget 顯示 home_url()、site_url()、多站、額外指定網域與 filter 網域的 RDAP/WHOIS 結果,包含到期日、註冊商、狀態、DNSSEC、Name Server、原始資料與通知狀態。

網域到期檢查常用設定:

  • MDT_DOMAIN_EXPIRY_CHECK:是否啟用網域到期檢查,預設 true。
  • MDT_DOMAIN_EXPIRY_NOTICE_DAYS:到期通知門檻,預設 90, 60, 30, 14, 7, 3, 1 天。
  • MDT_DOMAIN_EXPIRY_EXTRA_DOMAINS:額外指定檢查網域,支援陣列或逗號分隔字串。
  • MDT_DOMAIN_EXPIRY_OBSERVE_HOSTS:是否自動記錄非設定來源的 HTTP_HOST,預設 false。
  • MDT_DOMAIN_EXPIRY_OBSERVED_HOST_RETENTION_DAYS:觀察到的 HTTP_HOST 紀錄保留天數,預設 180。
  • MDT_DOMAIN_EXPIRY_MAX_DOMAINS_PER_RUN:單次排程最多查詢數量,預設 20。
  • MDT_DOMAIN_EXPIRY_STORE_RAW_DATA:是否儲存 RDAP/WHOIS 原始資料,預設 true。

Dev Tools: Site Manager – Mxp.TW(多站管理)

Site Manager 用來把多個 WordPress 站台整理成一個維運主控台,同時保留既有匯出/匯入與快速登入流程。

  • 匯出目前站台資訊:包含站台 URL、站名、管理員信箱、IPv4、IPv6、DNS A/NS 記錄、Whois/網域到期資訊、Site Manager 版本、登入協議版本、外掛/佈景主題/核心更新、PHP/MySQL 版本、檔案異動、cron 狀態與環境快照。
  • 匯入其他站台匯出的設定字串,經格式、URL、passkey 與欄位結構驗證後仍儲存在 mxp_dev_sites_info_db 站台選項;新版主控台會同步寫入 mxp_sm_sites、mxp_sm_site_credentials、mxp_sm_site_snapshots、mxp_sm_site_events、mxp_sm_site_jobs、mxp_sm_site_job_logs 等資料表。
  • 主控台顯示總覽卡片、站台狀態、環境/客戶/標籤備註、更新數、網域到期、最近 heartbeat、事件紀錄與遠端工作紀錄;後台輸出會移除 passkey/secret/token/HMAC/signature 並轉義顯示內容。
  • 快速登入:新版站台使用具版本標記的加密 token、HMAC-SHA256、audience、jti 與 15 秒時間窗;目標站會以 transient 防止同一 token 重放。舊版匯入資料仍維持相容的 legacy token,建議重新匯入以升級登入協議。
  • 安全配對:先以既有匯出字串內的 passkey 作一次性 bootstrap,完成後改用獨立 remote secret;Hub/Agent REST 請求使用 HMAC-SHA256 簽署 canonical request、5 分鐘時間窗與 replay 防護。
  • 遠端控制開放 Level 0/1 安全動作:heartbeat、capabilities、inventory、refresh_snapshot、clear_object_cache、flush_rewrite_rules、trigger_cron、rotate_pair_credential、issue_login_ticket。一次性登入票券只在當次 AJAX 回應交付,不寫入 job 結果或 dashboard state。
  • Level 2 中風險操作已提供基本中控能力:update_plugin、update_theme、update_core_minor、activate_plugin、deactivate_plugin。每站預設關閉,需在該站 policy 啟用;production 站另需勾選 production Level 2。所有 Level 2 都必須先 dry-run,由後端簽發 10 分鐘 confirmation token,execute 時再驗 token;同站同時只允許一個 Level 2 running job,multisite execute 預設拒絕。
  • Level 3(DB search replace/reset、刪除或任意安裝外掛/佈景、編輯檔案、使用者/角色變更等)仍預設未實作且政策拒絕,不顯示可執行按鈕。
  • 重置站台密鑰:刪除本機 passkey 並在下次使用時重建;既有匯出字串會因此失效,已配對的 remote secret 也應解除配對後重新建立。
  • 支援單站 Tools 頁面與 multisite Network Admin 頁面;頁面與 AJAX 使用同一個可 filter 的 capability。

匯出的字串包含 passkey,等同可請求快速登入與配對 bootstrap 的高權限憑證。請只在可信任管理員與可信任傳輸渠道中保存或分享;若曾外洩,請立即重置站台密鑰、解除配對並重新匯出/配對。

Dev Tools: Hide Login Page – Mxp.TW(登入路徑防護)

Hide Login Page 沒有設定頁,透過常數控制:

  • MDT_LOGIN_PATH:預設 admin-staff,登入網址會變成 /admin-staff/;未啟用 pretty permalink 時使用 /?admin-staff。
  • MDT_LOGIN_PATH_DISPLAY:預設 true;設為 false 時可在外掛列表隱藏此子外掛。

啟用後,wp-login.php、/login、wp-register、wp-activate 與非 multisite 的 wp-signup 會走 404 流程;未登入的 /wp-admin/ 請求也會被導到 /404。此外掛也會改寫 WordPress 產生的登入 URL、redirect URL、welcome email 中的登入連結,以及 WooCommerce 密碼重設連結。

Dev Tools: Feedback Reporter – Mxp.TW(全站問題回報)

Feedback Reporter 沒有設定頁,透過 MDT_FEEDBACK_REPORTER_* 常數控制。啟用外掛後預設啟用回報功能;只允許登入並符合 role / user ID 規則的使用者在前台與後台看到回報入口。若要關閉,可在 wp-config.php 將 MDT_FEEDBACK_REPORTER_ENABLE 定義為 false。

  • 前台使用明確的「回報問題」浮動按鈕;後台使用低干擾的小型「回報」入口,避免遮住主要操作或一直提醒使用者回報。
  • 使用者點擊後才啟動回報流程,可選擇擷取目前頁面「當下捲動視野」,或開啟獨立錄影控制器錄製最長 60 秒短片;控制器留在獨立視窗中,原頁跳轉或重新整理不會中斷錄影,錄影中會顯示倒數與停止按鈕,不必錄滿一分鐘。
  • 截圖模式可在截圖上畫框、箭頭、文字、自由畫筆與馬賽克;錄影模式會送出錄影檔與自動產生的封面截圖。若自動 DOM 截圖無法呈現互動畫面,可上傳 PNG/JPEG/WebP 或從剪貼簿貼上外部截圖取代,再填寫問題描述。
  • 前端只送到本站 REST endpoint;webhook URL 與 secret 不會輸出到瀏覽器。
  • WordPress server-side 驗證登入、nonce、role/user ID、rate limit、截圖與錄影 MIME,並在 webhook 前重新檢查與壓縮截圖大小;未設定 webhook 時仍會保存本機 log/截圖/錄影,設定 webhook 後才送出外部通知;匿名回報也會保存解析後的回報 IP 與 IP hash,方便追蹤濫用來源。
  • 回報 IP 會優先使用可信任反向代理還原出的真實用戶 IP:預設會從 Cloudflare 官方 ips-v4 / ips-v6 清單取得並快取可信 edge CIDR,抓取失敗時才回退到內建 Cloudflare 範圍;只有當 REMOTE_ADDR 落在可信代理 CIDR 內才讀取 CF-Connecting-IP、CF-Connecting-IPv6、True-Client-IP、X-Real-IP、Forwarded 或 X-Forwarded-For,避免直接打到 origin 的請求偽造 client IP header。若 origin 已由防火牆限制只能經 Cloudflare 進站,也仍建議保留此閘門作為防呆;不建議無條件信任 header。
  • log 目錄預設在 wp-content/uploads/mxp-dev-tools/feedback-reporter/,每次回報會寫入不可預測的隨機子目錄與隨機檔名;Apache/LiteSpeed 會透過 .htaccess 關閉目錄列表並拒絕 JSON log 直連,但允許圖片/影片媒體檔讓內部 webhook 連結可直接開啟,nginx 需由站台自行決定是否加上等效規則;再依保留天數與檔案數上限自動清理,移除 Feedback Reporter 子外掛時預設會刪除 log/截圖/錄影。
  • Discord webhook 會以附件方式上傳截圖並在訊息中預覽;Slack incoming webhook 只送出 JSON + Block Kit 文字欄位與 Log / 檔案連結,不使用 image block,避免站台圖片 URL 被主機資安策略阻擋時造成整包通知失敗。

常用常數:

  • MDT_FEEDBACK_REPORTER_ENABLE:是否啟用全站回報,預設 true;可設為 false 關閉。
  • MDT_FEEDBACK_REPORTER_ADMIN_ENABLE:是否在 wp-admin 輸出低干擾後台回報入口,預設 true。
  • MDT_FEEDBACK_REPORTER_ADMIN_BUTTON_MODE:後台入口樣式,預設 subtle-tab,另可用 compact-pill。
  • MDT_FEEDBACK_REPORTER_WEBHOOK_URL:接收回報的 webhook URL;預設要求 HTTPS,未設定時仍可回報並保存本機 log/截圖/錄影,但不送出外部通知。
  • MDT_FEEDBACK_REPORTER_WEBHOOK_FORMAT:webhook payload 格式,預設 auto;Discord 與 Slack incoming webhook URL 會自動送出相容格式,也可設為 generic、discord 或 slack。
  • MDT_FEEDBACK_REPORTER_WEBHOOK_SECRET:webhook HMAC 簽章 secret,預設空字串。
  • MDT_FEEDBACK_REPORTER_WEBHOOK_REQUIRE_HTTPS:是否要求 webhook URL 使用 HTTPS,預設 true;設為 false 時可接受 HTTP,但仍會拒絕 private/reserved IP。
  • MDT_FEEDBACK_REPORTER_WEBHOOK_SSL_VERIFY:是否驗證 HTTPS 憑證,預設 true;設為 false 時可接受自簽憑證。
  • MDT_FEEDBACK_REPORTER_ALLOWED_ROLES:允許回報的角色,預設 administrator。
  • MDT_FEEDBACK_REPORTER_ALLOWED_USER_IDS:額外允許回報的使用者 ID。
  • MDT_FEEDBACK_REPORTER_DENIED_USER_IDS:禁止回報的使用者 ID,優先權最高。
  • MDT_FEEDBACK_REPORTER_DENIED_PATHS:不輸出回報入口的 path prefix,預設只排除 /wp-login.php。
  • MDT_FEEDBACK_REPORTER_LOG_RETENTION_DAYS:本機 log/截圖/錄影保留天數,預設 30。
  • MDT_FEEDBACK_REPORTER_MAX_LOG_FILES:本機 log/截圖/錄影檔案數上限,預設 500。
  • MDT_FEEDBACK_REPORTER_TRUST_PROXY_HEADERS:是否在可信反向代理後方解析真實用戶 IP,預設 true。
  • MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRS:Cloudflare 官方清單抓取失敗時使用的 fallback Cloudflare 代理 CIDR;此閘門是為了防止繞過 CDN 直打 origin 時偽造 CF-Connecting-IP / X-Forwarded-For。
  • MDT_FEEDBACK_REPORTER_ADDITIONAL_TRUSTED_PROXY_CIDRS:額外信任的自家 proxy / load balancer CIDR,會與 Cloudflare 官方清單合併;為相容舊設定,若 MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRS 內含不屬於內建 Cloudflare fallback 的 CIDR,也會視為額外可信代理。
  • MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_AUTO_UPDATE:是否自動抓取 Cloudflare 官方 IP 清單更新可信代理 CIDR,預設 true。
  • MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_CACHE_TTL:Cloudflare IP 清單快取秒數,預設 7 天;抓取失敗時使用上一份有效 transient 或 MDT_FEEDBACK_REPORTER_TRUSTED_PROXY_CIDRS fallback。
  • MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_V4_URL / MDT_FEEDBACK_REPORTER_CLOUDFLARE_IPS_V6_URL:Cloudflare IP 文字清單來源,預設 https://www.cloudflare.com/ips-v4 與 https://www.cloudflare.com/ips-v6。
  • MDT_FEEDBACK_REPORTER_MAX_VIDEO_SECONDS:錄影模式最長秒數,預設 60。
  • MDT_FEEDBACK_REPORTER_MAX_VIDEO_BYTES:錄影檔案大小上限,預設 50 MiB。
  • MDT_FEEDBACK_REPORTER_DELETE_LOGS_ON_UNINSTALL:移除 Feedback Reporter 子外掛時是否刪除 log/截圖/錄影,預設 true。

使用風險

  • 此套件設計給可信任管理員、開發者與站台維護者使用,不適合開放給一般後台使用者。
  • 搜尋取代、資料庫最佳化、WordPress 重置、批次改作者、外掛/主題取代都會改寫資料或檔案;操作前請先確認備份可還原。
  • 主要工具箱會讀取並顯示 wp-config.php、.htaccess、.user.ini、PHP 設定與資料庫資訊。
  • ZipArchive、網路連線、檔案系統權限與主機 PHP 限制會影響打包、匯出、安裝、替換與前端回報轉送功能。

Captures

Instal·lació

  1. Upload the plugin files to the /wp-content/plugins/mxp-dev-tools/ directory, or install the plugin from the WordPress Plugins screen.
  2. Activate the main Dev Tools - Mxp.TW plugin through the Plugins screen in WordPress.
  3. Activate optional sub-plugins only when needed: Dev Tools: Snippets - Mxp.TW, Dev Tools: Site Manager - Mxp.TW, Dev Tools: Hide Login Page - Mxp.TW, or Dev Tools: Feedback Reporter - Mxp.TW.
  4. Open 「開發工具箱」 or the relevant sub-plugin admin page in the WordPress admin menu.
  5. For advanced behavior, define the documented MDT_* constants in wp-config.php before WordPress loads.

PMF

Why are there multiple plugin entries after installation?

The package intentionally contains a main plugin plus optional sub-plugins. This lets a site enable only the tools it needs while keeping one shared release package and update path.

Should I activate every sub-plugin?

No. Activate the main toolbox for development and maintenance tools. Activate Snippets, Site Manager, or Hide Login Page only when the site needs those behaviors, because each sub-plugin changes runtime hooks.

Where are Snippets settings configured?

Most Snippets behavior is controlled with MDT_* constants defined before WordPress loads, usually in wp-config.php. Some behavior also has filters documented in the source.

Will observed HTTP_HOST domains be shown on the domain expiry dashboard?

No by default. Since 3.5.9, MDT_DOMAIN_EXPIRY_OBSERVE_HOSTS defaults to false, and observed-only hosts are kept behind a separate detail page instead of the main dashboard list.

How do I add extra domains to the expiry check?

Define MDT_DOMAIN_EXPIRY_EXTRA_DOMAINS in wp-config.php as an array or comma-separated string.

How do I change the hidden login URL?

Define MDT_LOGIN_PATH before WordPress loads. The default slug is admin-staff.

Is Site Manager safe to share or pair across sites?

No. The exported site string includes the passkey used for quick-login tokens and the first pairing bootstrap. Treat it like an administrator credential, share it only through trusted channels, and rotate the passkey plus re-pair the site if it may have leaked. After pairing, remote control uses a separate encrypted shared secret, HMAC-signed requests, replay protection, and only Level 0/1 low-risk actions.

How do I configure Feedback Reporter?

Activate the Feedback Reporter sub-plugin. The reporter is enabled by default after activation and can save local logs/screenshots/recordings even before a webhook is configured; define MDT_FEEDBACK_REPORTER_ENABLE as false to disable it. Set MDT_FEEDBACK_REPORTER_WEBHOOK_URL before WordPress loads when you want external notifications. auto detects Discord and Slack incoming webhook URLs; set MDT_FEEDBACK_REPORTER_WEBHOOK_FORMAT to generic, discord, or slack only when you need to force a payload type. By default the webhook must be HTTPS with a valid certificate; set MDT_FEEDBACK_REPORTER_WEBHOOK_REQUIRE_HTTPS or MDT_FEEDBACK_REPORTER_WEBHOOK_SSL_VERIFY to false only for trusted internal/self-signed receivers. Use MDT_FEEDBACK_REPORTER_ALLOWED_ROLES, MDT_FEEDBACK_REPORTER_ALLOWED_USER_IDS, and MDT_FEEDBACK_REPORTER_DENIED_USER_IDS to limit who can submit reports.

Does Feedback Reporter expose my webhook secret to visitors?

No. The browser only receives the local REST endpoint and nonce. WordPress sends the webhook server-side and signs it with MDT_FEEDBACK_REPORTER_WEBHOOK_SECRET when configured.

Do I need to back up before using database or replacement tools?

Yes. Database search/replace, optimization, cleanup, reset, bulk author changes, and file replacement tools can modify production data or files. Always keep a verified backup before running destructive actions.

Ressenyes

17 de febrer de 2017
頭香還是自己來XD
Llegiu tota la 1 ressenya

Col·laboradors i desenvolupadors

«一介資男(Mxp.TW) 開發工具箱» és programari de codi obert. La següent gent ha col·laborat en aquesta extensió.

Col·laboradors

Registre de canvis

3.6.11

  • Site Manager 遠端 Level 2 execute 會在已驗證簽章與 policy 後切入管理員 capability context,避免 REST Agent 無登入使用者時 WordPress upgrader 直接拒絕外掛/佈景/核心更新。
  • Site Manager 新增外掛操作改為多來源流程:可選 WordPress.org slug 或外部 ZIP URL,ZIP 來源會驗證 http/https、.zip 路徑與下載主機,執行前會先檢查 ZIP 只含單一有效外掛入口,預檢畫面會顯示來源類型、下載主機、預期 slug、既有安裝狀態與安裝後啟用選項。
  • Site Manager 主控台重整站台詳細頁、操作分組與變更預覽介面;配對後依 Agent 回報功能預設開放可用操作,移除畫面上的 Level 術語與一次性 alert,改為持久的頁內狀態回饋。
  • Site Manager 遠端操作失敗時會恢復按鈕狀態,並在操作區塊內保留可除錯的錯誤明細(action、job、Agent 回應摘要等),避免只顯示無法追查的頁首錯誤。
  • Site Manager 匯入網站設定後會立即使用匯出字串內的 bootstrap passkey 嘗試配對 Agent;只有連線、安全檢查或版本能力不足時,畫面才會提示用「重新配對」恢復。
  • Site Manager 新增 wp mxp-site-manager export|import|pair|list 指令;CLI 匯入預設會直接配對,也可用 --skip-pair 只保存站台設定,支援自動化佈署與救援流程。
  • Site Manager Agent 驗證 Hub 簽章時會鎖定目前站台的配對 credential,避免同一 Hub 管多站時誤用其他站台較新的密鑰而讓遠端操作回 403。
  • Site Manager Dashboard 改用專屬 MXPSiteManager 前端設定物件,避免其他管理頁腳本覆寫共用 MXP nonce 後造成「登入」等 AJAX 操作出現錯誤驗證。
  • Site Manager 站台列表新增「移除」操作,會先確認再刪除 Hub 端保存的站台設定與配對憑證。
  • Site Manager Level 2 預檢會保留原始 payload 並用該 payload 執行確認,避免畫面重繪後 select 重置造成啟用、停用、更新操作的 confirmation token 驗證失敗。
  • Site Manager 外掛更新、啟用、停用改為表格式批次操作;可勾選多個外掛,一次預檢、一組確認後依序執行。
  • Site Manager 變更操作表格補上明確的功能矩陣說明、列尾「加入批次」按鈕、已選數量與「預檢並準備執行」主按鈕,避免只看到下拉選單卻不知道如何執行。
  • Site Manager 操作結果改為可讀表格與摘要,並在預檢、批次結果、錯誤回饋產生後自動聚焦到對應區塊,避免使用者執行後還停在原畫面找不到結果。
  • Site Manager 的 Inventory / Refresh Snapshot 回饋改為專用可讀摘要:以卡片呈現 WordPress、PHP、DB、Agent、外掛/佈景數量、更新狀態、WP-Cron、檔案修改、時區與語系,並列出實際可更新項目,不再把 plugins.items / themes.items 物件陣列或英文 action key 直接塞進欄位。
  • Site Manager 狀態同步與維護工具按鈕保留原本卡片結構,執行中只更新主標與說明,不再把按鈕內容壓成純文字;快照資料庫版本改用 $wpdb->db_version() 正確擷取。
  • Site Manager 變更操作新增 WordPress.org 外掛安裝:輸入 slug 後先做 Level 2 預檢,確認後才安裝,並可選擇安裝後立即啟用。

3.6.10

  • Feedback Reporter 載入 Painterro 後會還原既有 window._,避免 Painterro 內含的 Lodash 4 覆蓋 WordPress admin 依賴的 Underscore,造成媒體庫 _.contains is not a function 並讓特色圖片無法選取。

3.6.9

  • Feedback Reporter 儲存 log、webhook 與匿名 IP hash/rate limit 時,改為只在 REMOTE_ADDR 符合可信代理 CIDR 後解析 Cloudflare / reverse proxy client IP header;可信 Cloudflare CIDR 會從官方 ips-v4 / ips-v6 文字清單抓取並以 transient 快取,抓取失敗時回退內建清單;預設支援 Cloudflare CF-Connecting-IP,並在 Cloudflare Pseudo IPv4 overwrite 模式下改用 CF-Connecting-IPv6 保留真實 IPv6,避免直接請求偽造 X-Forwarded-For;匿名回報現在也會保存解析後的完整 IP 供濫用追蹤,且該 IP 會隨已設定的第三方 webhook 一併送出。
  • Feedback Reporter 前台回報 modal / editor / controls 強化 CSS 隔離,避免站台主題覆寫按鈕、標題 pseudo element、表單控制項與回報卡片樣式。
  • Feedback Logs 後台列表修正長 Trace ID、URL、檔案路徑與 webhook 文字撐破欄位的問題,改用固定表格寬度、水平捲動與欄內斷行。

3.6.8

  • Feedback Reporter 的 Slack incoming webhook 不再送出 Block Kit image block;截圖與錄影仍保留在文字欄位與「開啟 Log」入口,避免 WordPress.com、Cloudflare、WAF、登入保護或靜態檔案策略阻擋圖片 URL 時造成 Slack 回 invalid_blocks 並讓整包通知失敗。
  • Discord webhook 維持 multipart attachment 上傳截圖檔案的既有行為,不受此調整影響。

3.6.7

  • Feedback Reporter 新增可選匿名前台回報:設定 MDT_FEEDBACK_REPORTER_ALLOW_ANONYMOUS=true 後,未登入訪客可使用同一套截圖、標註與錄影流程送出回報;匿名路徑使用短效 challenge、同站 Origin/Referer 驗證、honeypot、IP/UA/path rate limit、較小的預設檔案上限,且後台不對匿名訪客顯示。
  • 匿名模式第一版即支援錄影回報(MDT_FEEDBACK_REPORTER_ANON_ALLOW_VIDEO 預設 true),預設限制為 20 秒 / 15 MiB,截圖預設 2 MiB;log 會標記 anonymous 使用者並保存 IP hash,不在匿名 log 中保存完整 IP。
  • Feedback Reporter 修正前台與後台回報入口的捲軸鎖定:開啟回報模式視窗時改用可還原的 scroll lock 保留原視覺位置,避免 WordPress 後台因 overflow:hidden 被瀏覽器重設到頁面頂端。
  • 所有 modal、錄影 popup 與送出完成流程改用 prevent-scroll focus,關閉或選擇截圖時會還原原始 scroll position,確保後續 Browser Screen Capture / SnapDOM fallback 都從使用者當下的 viewport 進行。

3.6.6

  • Feedback Reporter 在支援且安全的瀏覽器環境中優先使用 Browser Screen Capture API,並採用接近線上會議的螢幕/視窗/分頁分享選擇器;需要包含 DevTools 或瀏覽器外框時可選整個螢幕或視窗,使用者取消或瀏覽器不支援時才回落到 SnapDOM/DOM 截圖。
  • 新增錄製短片回報模式:支援 MediaRecorder 的安全桌機瀏覽器會開啟獨立錄影控制器,可選擇分頁、視窗或螢幕錄影,預設最長 60 秒;原頁跳轉不會中斷錄影,錄影中顯示倒數與停止按鈕,使用者可提前結束;送出時會附上錄影檔與封面截圖,後台 Feedback Logs 可預覽影片。不支援或彈窗被阻擋時會回落到頁內錄影/截圖流程。
  • Discord / Slack webhook 會盡量使用一致的詳細資訊:使用者描述、頁面、SEO、回報者、角色、裝置、請求資訊、Console errors、Log、Screenshot、Video;Slack 使用 Block Kit + mrkdwn 欄位與可用時的截圖 image block,Video 欄位使用錄影檔案的站點完整 URL,方便內部通知直接點開;Apache/LiteSpeed .htaccess 會配合允許圖片/影片媒體檔直連並保留 JSON log 阻擋。
  • 標註編輯器改成只縮放 CSS 預覽,實際 canvas 保留原始截圖像素;預設截圖上限提高到 3840×8192、檔案上限提高到 5 MiB,改善文字與細節模糊問題。
  • Feedback Reporter viewport 截圖保留 client-side 資源 URL 正規化:對同站台的 www/non-www 圖片、srcset、inline style 與 computed background/mask image,改用目前頁面的 origin 讓 SnapDOM 直接讀取,避免常見跨 host alias 的 CORS/dataURL 失敗與截圖破碎。
  • 保持不走預設後端圖片 proxy;真正第三方且未提供 CORS 的資源在 SnapDOM fallback 仍受瀏覽器安全模型限制,可用 Browser Screen Capture、來源端 CORS、上傳或貼上截圖 fallback。

3.6.5

  • Feedback Reporter Logs 列表新增截圖縮圖,詳細頁新增大型截圖預覽;圖片透過後台權限與 nonce 保護的 admin-post.php endpoint 讀取,保留既有私有 log 目錄保護。
  • 修正 WordPress.org Test Preview 藍圖:先安裝並啟用 mxp-dev-tools,再啟用 Feedback Reporter 子外掛,避免 Playground 在外掛尚未安裝時執行 activatePlugin 造成 Plugin file does not exist。

3.6.4

  • 修正 Feedback Reporter 捲動頁面的 viewport 截圖:以暫存 viewport 舞台擷取目前畫面,並把 fixed/sticky 元素依實際視窗座標重疊,避免 DDEV 固定底部操作列在桌機與手機截圖中位移或遮蓋錯誤。
  • 移除標註視窗中的「貼上截圖」按鈕;保留 Ctrl/⌘+V paste 事件與「上傳截圖」fallback,避開瀏覽器 Clipboard API 權限不一致造成的空按鈕體驗。

3.6.3

  • 修正 Feedback Reporter 自動截圖範圍:截圖前不再先鎖定頁面捲動,並以目前 viewport 捲動位置裁切,避免回報內容誤抓頁面頂端。
  • 新增截圖取代功能:標註視窗可上傳 PNG/JPEG/WebP,或在支援的瀏覽器按 Ctrl/⌘+V 從剪貼簿貼上圖片。
  • 強化替代截圖流程的 RWD 介面、圖片尺寸壓縮、格式檢查與錯誤提示,讓桌機、手機與不同瀏覽器都有檔案上傳 fallback。

3.6.2

  • Feedback Reporter 啟用子外掛後預設可直接回報並保存本機 log/截圖;MDT_FEEDBACK_REPORTER_ENABLE=false 仍可覆寫關閉。
  • Feedback Logs 頁面新增 webhook 設定提醒:未設定時顯示通知,已設定時顯示目前通知類型與 host。
  • 新增 Slack incoming webhook 自動偵測與 MDT_FEEDBACK_REPORTER_WEBHOOK_FORMAT=slack,使用 JSON + Block Kit 送出摘要與本機 log/截圖路徑。
  • 新增 WordPress Playground assets/blueprints/blueprint.json,支援 WordPress.org 外掛頁即時預覽。
  • 移除外部服務依賴說明段落。

3.6.1

  • 更新 Feedback Reporter vendored SnapDOM 至 3.2.0。
  • 確認 SnapDOM 3.2.0 與現有截圖流程相容:新增 ESM 動態載入 fallback,維持 snapdom(target, options)、toBlob()、viewport clip、ignore selector 與遮罩流程可正常運作。
  • 強化 Feedback Logs 後台檢視頁:重要資訊分卡片顯示、webhook 狀態 badge、補送/刪除操作、Raw JSON 與手機版 RWD 呈現。

3.6.0

  • 新增 Dev Tools: Feedback Reporter - Mxp.TW 子外掛,支援前台與後台登入用戶截圖、標註、填寫描述與 webhook 回報。
  • 新增 MDT_FEEDBACK_REPORTER_* 常數設定:啟用狀態、後台低干擾入口、webhook、HTTPS/憑證嚴格度、role/user ID 限制、截圖大小、遮罩 selector、rate limit、log 保留天數與檔案數上限。
  • 新增本機 JSON log + screenshot 檔案薄紀錄與每日清理機制;管理員可從「工具 Feedback Logs」讀取檔案型回報紀錄、檢查 webhook 送出狀態、手動補送 webhook,並刪除紀錄;移除子外掛時預設刪除 log。
  • 強化 Feedback Reporter 送出流程:後端在 webhook 前重新壓縮超限截圖,並將截圖頁面的 SEO meta/canonical/Open Graph/Twitter/H1/JSON-LD 型別摘要一併寫入 log 與 webhook。

3.5.9

  • 調整網域到期檢查的 observed host 行為:預設不再自動記錄 HTTP_HOST,可用 MDT_DOMAIN_EXPIRY_OBSERVE_HOSTS 啟用。
  • 新增 observed host 180 天保留規則、獨立檢視頁與刪除操作,避免非主要網域直接出現在控制台。

3.5.8

  • 新增網域到期檢查資訊的註冊商、註冊日期、網域狀態、DNSSEC 與 Name Server 等基本細節。
  • 調整網域到期通知文案,改用「已進入到期前提醒」並加入註冊商資訊,方便確認續約平台。

3.5.7

  • 調整網域到期檢查資訊顯示完整主機名稱,避免子網域被簡化為主網域。
  • 調整網域到期通知規則,僅通知 home_url / site_url 類型來源,純 observed_host 不寄送通知。

3.5.6

  • 調整網域到期檢查資訊的後台文案,移除不易理解的英文術語。