The 搜索框 and 一言 sidebar widgets fell into the generic renderer branch, so they rendered a .jio-panel card wrapping a second bespoke card (.jio-widget-search / .jio-widget-quote). In-article 一言 also used divergent modifier classes and an extra hover rule. - search: render through the shared jio_get_search_box() (legacy keyword, history and category pickers) inside one reference card, mirroring the reference widget's markup and title default 「搜索」 - quote: render the reference .yiyan-box card itself as the click root; the shell now emits only the reference widget-container/title wrapper - article 一言: adopt the reference class lists for header, footer and the standalone after-article box; drop the invented yiyan--* modifiers and the duplicate hover/opacity rules - client: fill .cn/.en in the reference order (first line .cn, second .en) and drop the stale window.JioYiyan bridge plus the dead qv-yiyan.php AJAX path in runtime main.js - schema: replace the ad-hoc search_style radio with the reference switches (keywords, history, input category, more_cats) and default title - assets: enqueue assets/js/yiyan.js through the quote widget's asset list Tests: widget-system suite 820/821 (the one failure is the pre-existing frontend-lifecycle theme-init stub); new search/quote card contracts pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Fixtures
widget-golden-v1.json
The reference block (source_root, fingerprint, files) is an intentional
fingerprint of an external reference-theme checkout on the machine that
generated the fixture. Its keys and paths describe files in that external
directory, not identifiers of this theme, and tools/validate-widget-golden.php,
tools/generate-widget-golden-fixture.php, and tools/audit-widget-system.php
resolve source_root + relative path and compare SHA-256. Changing any of it
produces Reference drift and breaks those audits — leave it verbatim, including
when the upstream names look out of place.
page-visual-matrix-v1.json
Page-level capture routes for tools/wp-cli-visual-fixtures.php. The route paths
carry the tool's $fixture_prefix, so the two must be changed together.