{"id":336383,"date":"2026-07-07T10:36:36","date_gmt":"2026-07-07T10:36:36","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hxrv-ai-ready-visual-review\/"},"modified":"2026-07-07T10:37:58","modified_gmt":"2026-07-07T10:37:58","slug":"hxrv-ai-ready-visual-review","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/hxrv-ai-ready-visual-review\/","author":23511001,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"HXRV - AI-Ready Visual Review","header_author":"Youhei Okubo","header_description":"Self-hosted visual review for WordPress. Click any element to leave a comment, resolve it Figma-style, and export open issues as an AI-ready Markdown brief for coding agents. Powered by htmx + Alpine.js. No SaaS, no build step, no data leaves your site.","assets_banners_color":"cccccc","last_updated":"2026-07-07 10:37:58","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/okuboyouhei\/hxrv-ai-ready-visual-review","header_author_uri":"https:\/\/profiles.wordpress.org\/youheiokubo\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"youheiokubo","date":"2026-07-07 10:37:58"}},"upgrade_notice":{"1.0.0":"<p>First stable release.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3598848,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3598848,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3598848,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3598848,"resolution":"772x250","location":"assets","locale":"","width":722,"height":234}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Review overlay - click any element to pin a comment.","2":"Threaded discussion and resolve button on a pin.","3":"Admin list grouped by page, with the AI export button.","4":"Exported Markdown brief ready for a coding agent."}},"plugin_section":[],"plugin_tags":[2353,107,108,110,63174],"plugin_category":[42,44,53],"plugin_contributors":[266517],"plugin_business_model":[],"class_list":["post-336383","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-comments","plugin_tags-feedback","plugin_tags-review","plugin_tags-visual-feedback","plugin_category-contact-forms","plugin_category-discussion-and-community","plugin_category-ratings-and-reviews","plugin_contributors-youheiokubo","plugin_committers-youheiokubo"],"banners":{"banner":"https:\/\/ps.w.org\/hxrv-ai-ready-visual-review\/assets\/banner-772x250.png?rev=3598848","banner_2x":"https:\/\/ps.w.org\/hxrv-ai-ready-visual-review\/assets\/banner-1544x500.png?rev=3598848","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/hxrv-ai-ready-visual-review\/assets\/icon-128x128.png?rev=3598848","icon_2x":"https:\/\/ps.w.org\/hxrv-ai-ready-visual-review\/assets\/icon-256x256.png?rev=3598848","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Most feedback tools collect comments. HXRV turns them into a fix pipeline.<\/p>\n\n<p>Reviewers click any element on the live page to pin a comment. Threads are discussed and resolved Figma-style. Then, instead of leaving a pile of tasks for a human to decipher, HXRV exports every open comment as a structured Markdown brief - selectors, element text, warnings included - ready to be handed directly to an AI coding agent such as Claude Code. The agent locates the template, the engineer reviews the diff, the reviewer checks the box.<\/p>\n\n<p><strong>What makes HXRV different<\/strong><\/p>\n\n<ul>\n<li><strong>AI-ready export.<\/strong> The fix brief records each comment's CSS selector, an excerpt of the element's text, dynamic-content warnings (\"this pin sits inside a posts loop - fix the template, not the content\"), and anchor-lost notices. An AI coding agent can grep your theme and go straight to the right file. No other feedback tool produces agent-consumable output.<\/li>\n<li><strong>Element-anchored pins.<\/strong> Most tools store pins as page coordinates, so they drift on responsive layouts. HXRV anchors comments to the element itself: CSS selector plus a relative offset inside it. Pins follow their element at any viewport width.<\/li>\n<li><strong>Three-stage anchor fallback.<\/strong> When a template edit breaks a selector, HXRV re-anchors by the element's saved text excerpt; if that fails too, the comment moves to an orphan tray instead of silently disappearing - and the export flags it so nobody (human or AI) acts on a stale pointer. Restore the element and the comment re-anchors itself.<\/li>\n<li><strong>Truly self-hosted.<\/strong> Everything lives in one custom table in your own database. No SaaS account, no external requests, no tracking. Install it for a review cycle, uninstall it, and every trace is gone - including the table.<\/li>\n<li><strong>Lightweight by design.<\/strong> Powered by htmx and Alpine.js, bundled locally (~100 KB total). No build step, no jQuery, no React widget injected into your client's site. Assets load only in review mode for authorized users.<\/li>\n<li><strong>Zero settings screens.<\/strong> Configuration is code: filters (<code>hxrv_capability<\/code>, <code>hxrv_export_markdown<\/code>) and CSS custom properties (<code>--hxrv-primary<\/code> and friends) for restyling the overlay from your theme.<\/li>\n<\/ul>\n\n<p><strong>The workflow<\/strong><\/p>\n\n<ol>\n<li>A reviewer (client, editor, designer) opens the page, clicks an element, leaves a comment.<\/li>\n<li>Threads collect replies; finished items get resolved.<\/li>\n<li>The engineer exports the open comments as a Markdown brief and pastes it into an AI coding agent - or reads it themselves.<\/li>\n<li>Fixes land, boxes get checked, the plugin can be removed without a trace.<\/li>\n<\/ol>\n\n<p>Part of the HX Series (HXFE - forms, HXSE - search): htmx-powered WordPress tools that send HTML over the wire, skip the build step, and cut every feature that is not essential.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20is%20my%20data%20stored%3F\"><h3>Where is my data stored?<\/h3><\/dt>\n<dd><p>In a custom table (<code>wp_hxrv_comments<\/code>) in your own WordPress database. Nothing is sent to any external service. Uninstalling the plugin removes the table completely.<\/p><\/dd>\n<dt id=\"who%20can%20leave%20comments%3F\"><h3>Who can leave comments?<\/h3><\/dt>\n<dd><p>Logged-in users with the <code>edit_pages<\/code> capability (administrators and editors) by default. Change it with one line in your theme's functions.php:<\/p>\n\n<pre><code>add_filter( 'hxrv_capability', fn() =&gt; 'publish_posts' ); \/\/ authors and above\nadd_filter( 'hxrv_capability', fn() =&gt; 'edit_posts' );    \/\/ contributors and above\nadd_filter( 'hxrv_capability', fn() =&gt; 'read' );          \/\/ any logged-in user\n<\/code><\/pre>\n\n<p>For a review-only client account, return a custom capability (e.g. <code>hxrv_review<\/code>) and add it to the client's role with <code>add_cap()<\/code> - they get commenting rights without any editing rights. External reviewer share links (no login required) are planned for a future version.<\/p><\/dd>\n<dt id=\"my%20theme%20already%20loads%20htmx%20%2F%20alpine.js.%20will%20they%20load%20twice%3F\"><h3>My theme already loads htmx \/ Alpine.js. Will they load twice?<\/h3><\/dt>\n<dd><p>No. HXRV detects common script handles (<code>htmx<\/code>, <code>alpinejs<\/code>, and friends) and reuses your theme's copy instead of loading its own, while guaranteeing the load order the overlay needs. If your theme registers them under custom handles, declare them via the <code>hxrv_htmx_handles<\/code> \/ <code>hxrv_alpine_handles<\/code> filters.<\/p><\/dd>\n<dt id=\"how%20do%20i%20start%20a%20review%3F\"><h3>How do I start a review?<\/h3><\/dt>\n<dd><p>Click \"HXRV Review\" in the admin bar on any front-end page, or append <code>?hxrv<\/code> to the URL while logged in.<\/p><\/dd>\n<dt id=\"what%20is%20the%20ai%20export%20for%3F\"><h3>What is the AI export for?<\/h3><\/dt>\n<dd><p>It turns open review comments into a structured Markdown brief. Paste it into an AI coding agent (Claude Code, etc.) and the agent can locate the relevant template files using the recorded CSS selectors and element text.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20editor%20and%20custom%20blocks%3F\"><h3>Does it work with the block editor and custom blocks?<\/h3><\/dt>\n<dd><p>Yes. Comments anchor to the rendered DOM, so classic templates, block content, and custom blocks all work. Elements inside dynamic loops (latest posts, query blocks) are flagged as possibly dynamic.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable release on WordPress.org.<\/li>\n<li>Pin navigation: numbered chips in the toolbar jump to each comment and pulse its marker.<\/li>\n<li>Reuse the theme's htmx \/ Alpine.js when already registered, preventing double-loading (filterable via <code>hxrv_htmx_handles<\/code> \/ <code>hxrv_alpine_handles<\/code>).<\/li>\n<li>Bidirectional anchor-status sync: orphaned comments automatically return to open if the element re-appears.<\/li>\n<li>Updated bundled libraries: Alpine.js 3.15.12, htmx 2.0.10.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Element-anchored pin comments with threaded replies and resolve flow.<\/li>\n<li>Text-excerpt re-anchoring and orphan handling.<\/li>\n<li>Admin overview grouped by page.<\/li>\n<li>AI-ready Markdown export of open comments.<\/li>\n<\/ul>","raw_excerpt":"Self-hosted visual review. Pin comments to page elements, resolve them, and export open issues as an AI-ready Markdown brief.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/336383","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=336383"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/youheiokubo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=336383"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=336383"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=336383"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=336383"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=336383"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=336383"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}