{"id":362108,"date":"2026-09-02T07:19:18","date_gmt":"2026-09-02T07:19:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/homura-time-travel-form-recovery\/"},"modified":"2026-09-03T07:47:21","modified_gmt":"2026-09-03T07:47:21","slug":"homura-time-travel-form-recovery","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/homura-time-travel-form-recovery\/","author":23558617,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.11","stable_tag":"trunk","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Homura Time Travel & Form Recovery","header_author":"Biagio Scaglia","header_description":"Real-time DAG time-travel history engine, form crash recovery, and non-destructive undo\/redo for WordPress and WooCommerce forms.","assets_banners_color":"3e3846","last_updated":"2026-09-03 07:47:21","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/github.com\/biagio-scaglia\/homura-js","header_plugin_uri":"https:\/\/biagio-scaglia.github.io\/homura-js\/","header_author_uri":"https:\/\/github.com\/biagio-scaglia","rating":0,"author_block_rating":0,"active_installs":0,"downloads":92,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.3":{"tag":"1.2.3","author":"biagioscaglia","date":"2026-09-02 07:19:01","revision":3677330},"1.2.4":{"tag":"1.2.4","author":"biagioscaglia","date":"2026-09-02 07:23:39","revision":3677338},"1.2.5":{"tag":"1.2.5","author":"biagioscaglia","date":"2026-09-02 07:51:01","revision":3677392},"1.3.0":{"tag":"1.3.0","author":"biagioscaglia","date":"2026-09-03 07:12:25","revision":3679178},"1.4.0":{"tag":"1.4.0","author":"biagioscaglia","date":"2026-09-03 07:47:21","revision":3679245}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3677330,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3677330,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3677330,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3677330,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.3","1.2.4","1.2.5","1.3.0","1.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Visual Time-Travel undo\/redo and live status badge.","2":"Multidevice QR Code handoff modal.","3":"Sensory Ghost Assist accidental deletion prompt.","4":"Visual Copywriting Git Diff and history scrubber.1. Time-travel controls and real-time form crash recovery.","5":"State Diff modal showing changes between DOM and saved drafts.","6":"History breadcrumbs and status indicators."}},"plugin_section":[],"plugin_tags":[1152,278790,278788,278789,286],"plugin_category":[42,45],"plugin_contributors":[278791],"plugin_business_model":[],"class_list":["post-362108","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form-7","plugin_tags-form-recovery","plugin_tags-time-travel","plugin_tags-undo-redo","plugin_tags-woocommerce","plugin_category-contact-forms","plugin_category-ecommerce","plugin_contributors-biagioscaglia","plugin_committers-biagioscaglia"],"banners":{"banner":"https:\/\/ps.w.org\/homura-time-travel-form-recovery\/assets\/banner-772x250.png?rev=3677330","banner_2x":"https:\/\/ps.w.org\/homura-time-travel-form-recovery\/assets\/banner-1544x500.png?rev=3677330","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/homura-time-travel-form-recovery\/assets\/icon-128x128.png?rev=3677330","icon_2x":"https:\/\/ps.w.org\/homura-time-travel-form-recovery\/assets\/icon-256x256.png?rev=3677330","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Homura Time Travel &amp; Form State Engine<\/strong> brings \"Git for application state\" and bulletproof state preservation to WordPress forms and WooCommerce checkout.<\/p>\n\n<p>Rather than acting as a simple, destructive key-value autosave, Homura acts as an agnostic <strong>client-side state history layer<\/strong> built on top of your existing form builders. It tracks an immutable timeline of states, allowing users to undo\/redo changes, recover from browser crashes or accidental refreshes, and seamlessly transfer their form progress across devices via QR codes.<\/p>\n\n<h3>\ud83c\udf1f Revolutionary Features (v1.4.0)<\/h3>\n\n<ul>\n<li><strong>\ud83d\udcf1 Multidevice Time-Travel (\"Passaggio di Testimone\")<\/strong>: Generate dynamic QR codes (<code>[homura_handoff]<\/code>) allowing users to scan on desktop and immediately continue typing on mobile with the identical history timeline without registering an account.<\/li>\n<li><strong>\ud83d\udc7b Behavioral \"Ghost Assist\" (Sensory UX)<\/strong>: Proactively detects mass accidental deletions (&gt;50% of paragraph) and rage-clicks, displaying a non-intrusive recovery toast with 1-click restore.<\/li>\n<li><strong>\ud83d\udd12 Privacy-First Zero-Knowledge Local Vault<\/strong>: Native 256-bit AES-GCM encryption using browser WebCrypto API (<code>crypto=\"aes-gcm\"<\/code>). Raw LocalStorage bytes are unreadable by third-party extensions.<\/li>\n<li><strong>\ud83d\udcdd Visual Copywriting Git Diff &amp; Scrubber<\/strong>: Real-time word-level difference inspector (<code>[homura_visual_diff]<\/code>) with historical slider for long textareas and articles.<\/li>\n<li><strong>\ud83e\uddec State Diff Engine<\/strong>: Inspect exactly what changed between the current form DOM and any saved draft with visual diff inspection.<\/li>\n<li><strong>\ud83d\udee1\ufe0f WooCommerce AJAX Conflict Recovery<\/strong>: Automatically detects when WooCommerce checkout recalculations (<code>update_order_review<\/code>, cart totals) wipe input values and instantly restores them without disrupting user flow.<\/li>\n<li><strong>\ud83d\udd10 Zero-Leak Sensitive Field Policy<\/strong>: Passwords, CVVs, credit card numbers, payment nonces, and inputs tagged with <code>data-homura-sensitive=\"true\"<\/code> or <code>data-homura-persist=\"false\"<\/code> are strictly excluded from state storage and LocalStorage.<\/li>\n<li><strong>\ud83d\udce6 Smart Recovery &amp; Time-Travel<\/strong>: Prompt users with a non-intrusive recovery banner (<code>[homura_recovery_banner]<\/code>) allowing them to restore all, review differences, or dismiss previous drafts.<\/li>\n<li><strong>\ud83d\udd04 Form Schema Versioning &amp; Migration<\/strong>: Seamlessly handles forms edited or upgraded by webmasters without breaking or corrupting visitor drafts.<\/li>\n<li><strong>Auto-Hook for Top Form Builders &amp; WooCommerce<\/strong>:\n\n<ul>\n<li>WooCommerce Checkout (<code>.woocommerce-checkout<\/code>)<\/li>\n<li>Contact Form 7 (<code>.wpcf7 form<\/code>)<\/li>\n<li>WPForms (<code>.wpforms-form<\/code>)<\/li>\n<li>Gravity Forms (<code>.gform_wrapper<\/code>)<\/li>\n<li>Elementor Forms (<code>.elementor-form<\/code>)<\/li>\n<li>Fluent Forms (<code>.fluentform<\/code>)<\/li>\n<li>Ninja Forms (<code>.nf-form-content form<\/code>)<\/li>\n<li>Formidable Forms (<code>.frm-show-form<\/code>)<\/li>\n<li>WS Form (<code>.wsf-form<\/code>)<\/li>\n<\/ul><\/li>\n<li><strong>Performance First<\/strong>: Deferred script execution (<code>wp_script_add_data<\/code>), passive event listeners, zero render blocking, and zero external tracking.<\/li>\n<li><strong>100% Client-Side &amp; Local-First<\/strong>: No data is sent to external servers or remote databases.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>homura-time-travel-form-recovery<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install via WordPress Plugin Admin.<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress.<\/li>\n<li>Use the shortcodes in any page, post, or form.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20multidevice%20qr%20handoff%20work%3F\"><h3>How does Multidevice QR Handoff work?<\/h3><\/dt>\n<dd><p>Add <code>[homura_handoff form=\"my_form\"]<\/code> to your form. Clicking it generates an encrypted, compressed URL token embedded in an SVG QR code. Users scan it with their phone camera to instantly load the exact state and DAG history on mobile.<\/p><\/dd>\n<dt id=\"how%20does%20ghost%20assist%20protect%20against%20accidental%20deletions%3F\"><h3>How does Ghost Assist protect against accidental deletions?<\/h3><\/dt>\n<dd><p>Homura monitors keystroke velocity and deletion volume. If an author or visitor accidentally selects all and deletes a 500-word paragraph, a Ghost Assist toast immediately appears offering a 1-click restore to the state before deletion.<\/p><\/dd>\n<dt id=\"is%20data%20encrypted%20in%20localstorage%3F\"><h3>Is data encrypted in LocalStorage?<\/h3><\/dt>\n<dd><p>Yes! When <code>crypto=\"aes-gcm\"<\/code> is enabled, state data is encrypted with 256-bit AES-GCM using native browser <code>window.crypto.subtle<\/code>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20work%20with%20woocommerce%3F\"><h3>Does this plugin work with WooCommerce?<\/h3><\/dt>\n<dd><p>Yes! It automatically detects the WooCommerce checkout form, protects against AJAX DOM resets, and preserves billing\/shipping fields locally without saving sensitive credit card details or CVVs.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added Multidevice Time-Travel QR Code Handoff (<code>[homura_handoff]<\/code>).<\/li>\n<li>Added Sensory Behavioral Rage &amp; Mass Erasure Detection (\"Ghost Assist\").<\/li>\n<li>Added Zero-Knowledge Privacy Vault with native WebCrypto AES-GCM 256-bit encryption (<code>crypto=\"aes-gcm\"<\/code>).<\/li>\n<li>Added Visual Copywriting Git Diff &amp; history scrubber (<code>[homura_visual_diff]<\/code>).<\/li>\n<li>Added <code>[homura_ghost_assist]<\/code> shortcode.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Added State Diff Engine and visual diff modal.<\/li>\n<li>Added WooCommerce AJAX Conflict Recovery.<\/li>\n<li>Added Zero-Leak Sensitive Field Policy.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fixed [homura_clear] click reset handler and DOM purge.<\/li>\n<\/ul>\n\n<h4>How can users clear a saved draft?<\/h4>\n\n<p>Use the shortcode <code>[homura_clear form=\"my_form_id\"]<\/code> or <code>[homura_reset form=\"my_form_id\"]<\/code>.<\/p>\n\n<h4>How do I display the Smart Recovery Banner?<\/h4>\n\n<p>Use the shortcode <code>[homura_recovery_banner form=\"my_form_id\"]<\/code> above your form.= 1.3.0 =\n* Feature: Added State Diff Engine (<code>[homura_diff]<\/code> &amp; DOM diffing) for visual comparison of form changes.\n* Feature: Added WooCommerce AJAX Conflict Recovery &amp; DOM-State Integrity Monitor to protect against checkout refreshes.\n* Feature: Added Sensitive Field Policy (PCI-DSS\/GDPR safe; auto-excludes passwords, CVVs, nonces, and <code>data-homura-sensitive<\/code>).\n* Feature: Added Smart Recovery Banner (<code>[homura_recovery_banner]<\/code>) with Restore, Review Diff, and Dismiss options.\n* Feature: Added Form Schema Versioning &amp; Migration support (<code>homura_form_schema_version<\/code>).\n* Feature: Added Sanitized Debug Export (<code>[homura_debug_export]<\/code>) with masked PII for safe dev diagnostics.\n* Feature: Added Conditional Field Memory to preserve hidden conditional field values across toggles.\n* Performance: Optimized passive listeners and state synchronization.<\/p>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Fix: Fixed <code>[homura_clear]<\/code> \/ <code>[homura_reset]<\/code> click handler to immediately purge LocalStorage draft, reset form inputs, and clear history timeline.<\/li>\n<li>Performance: Optimized draft reset synchronization without unnecessary page reload.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Performance: Added deferred script loading strategy for WordPress 6.3+ (zero render blocking).<\/li>\n<li>Performance: Optimized event listener execution using passive event listeners and idle callbacks.<\/li>\n<li>Performance: Added <code>homura_should_enqueue_scripts<\/code> filter for selective conditional loading.<\/li>\n<li>Feature: Added auto-hooks for Fluent Forms, Ninja Forms, Formidable Forms, WS Form, and Gravity Forms.<\/li>\n<li>Feature: Added <code>[homura_clear]<\/code> \/ <code>[homura_reset]<\/code> shortcodes for one-click draft resetting.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Initial release on WordPress.org Plugin Directory.<\/li>\n<li>Added auto-hooks for WooCommerce, Contact Form 7, WPForms, and Elementor.<\/li>\n<li>Added multi-step form wizard, status badges, and breadcrumb shortcodes.<\/li>\n<\/ul>","raw_excerpt":"Git-like local state history, multidevice QR handoff, sensory Ghost Assist, zero-knowledge WebCrypto vault, and non-destructive time-travel for WordPr &hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362108","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=362108"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/biagioscaglia"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362108"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362108"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362108"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362108"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362108"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}