TWWIM AI: Voice-to-Action AI Agent for WooCommerce and WordPress
Changelog
1.4.0
New: in-product Legal Center inside the embedded admin dashboard — Terms (AGB), Privacy, Data-Processing Agreement (AVV), Imprint and Cookie Policy each available in German and English with one-click PDF download. A non-blocking banner surfaces any document that needs (re-)acceptance after a content update; per-document accept replaces the old bulk modal.
New: profile-completeness gate inside the dashboard. After login the user is asked once to complete the company profile with structured legal fields (commercial register court / number split, VAT ID, tax number, managing director). The dashboard refuses to issue paid plans until the profile is complete so generated invoices stay legally valid.
New: PERSONAL → Business upgrade flow inside the company settings — private accounts that grow into a business can convert without recreating the account.
New: email-verification gate after registration with a persistent verify-nag and one-click “Resend verification email” action surfaced in the dashboard header.
New: bilingual transition emails (legal-update and pay-pending readiness) are sent automatically when a relevant state change happens.
New: Lexoffice invoice PDFs are emailed to the company’s billing address as an attachment when Company.billingEmail is set.
New: pay-pending readiness modal — when the user clicks a paid plan with an incomplete profile we now warn before navigating away rather than silently blocking the flow.
Improved: multicurrency pricing (EUR/USD) end-to-end in the Plans page, ROI calculator and checkout summary.
Improved: structured German legal-form support (UG/GmbH/AG/GbR/KG/OHG/Einzelunternehmer) with channel-aware presentation in the WP build.
Fixed: PDF download race in Chromium 147+ (the active object URL is now revoked after a short deferral so the browser does not abort the download).
1.3.2
Fixed: the frontend widget was invisible on sites using caching or minification plugins that self-host external JavaScript (WP-Optimize “Include external files”, WP Rocket, Autoptimize, LiteSpeed Cache, Cloudflare Rocket Loader, etc.). Those plugins rewrote the widget script URL to a local cached copy without copying the widget’s code-split chunks, so the loader 404’d on first import and the widget never rendered. The widget is now injected into the DOM at runtime via a tiny inline bootstrap, which HTML-scanning optimizers cannot see or rewrite. No settings change is needed — the fix is automatic on upgrade.
1.3.1
Fixed: the Terms of Service / Privacy Policy consent checkbox on the in-plugin registration form was rendered with an almost-invisible border on some admin colour schemes. Now uses an explicit visible border and the native accent colour for the checked state.
1.3.0
WooCommerce feature compatibility declared (custom_order_tables / cart_checkout_blocks / product_block_editor) — silences the “incompatible plugins” admin notice on modern WooCommerce setups. Plugin reads product data only; no order, cart/checkout or product-editor surfaces are touched.
Registration form now requires explicit acceptance of Terms of Service and Privacy Policy via an inline checkbox with localised legal links (EN/DE).
Admin notices (WooCommerce warnings, theme messages, updates nags) no longer push the embedded dashboard out of the viewport — they stack as toasts at the top-right of the TWWIM AI admin page so the SPA keeps its full height.
Sidebar user profile and language switcher are no longer clipped below the WP admin bar — layout now correctly caps the embedded SPA inside the available viewport regardless of Tailwind min-h-screen rules.
Admin stylesheet (admin-layout.css) is now cache-busted by file modification time so iterative CSS updates are picked up without manual browser cache-busting.
Knowledge page no longer crashes when the URL carries a stale or malformed tenant id — the route self-heals by falling back to the first available tenant.
1.2.2
Plugin listing refreshed: positioned as a Voice-to-Action AI agent for WooCommerce and WordPress. Expanded Description with WooCommerce integration details, mobile-first benefit section, and what store owners gain.
Installation instructions updated to reflect the in-plugin registration and tenant-creation flow. No external sign-up step. Integration key is generated when the tenant is created and picked up by the plugin automatically.
External services disclosures tightened: removed internal service-name labels, consolidated to TWWIM AI and Stripe entries.
No functional code changes.
1.2.1
Plugin slug aligned with text domain (twwim-ai) — resolves Plugin Check TextDomainMismatch errors.
Renamed all internal PHP classes, constants, and helper functions to the Twwim_ / TWWIM_AI_ / twwim_ai_ prefix. Legacy Archer_ identifiers removed.
Frontend widget now emits <script id=”twwim-config”> (legacy #archer-config still accepted by the CDN bundle for backward compatibility).
Admin dashboard JS global renamed to window.twwimAi (legacy window.archerAi alias emitted for bundles predating the rename).
Hardened REST POST /twwim/v1/settings with per-field validation (URL validation via esc_url_raw, enum whitelist for dock position, boolean/CSV-ID validation) and is_array() guard on the request body.
Sanitized $_SERVER and apache_request_headers() fallbacks in the sync-secret auth path (sanitize_text_field( wp_unslash(…) )).
uninstall.php now cleans up four previously-missed options (twwim_api_url, twwim_tenant_id, twwim_sync_secret, twwim_wc_missing) and uses prefixed globals ($twwim_options, $twwim_option).
1.2.0
Admin stylesheets moved to external CSS files (assets/admin-menu.css, assets/admin-layout.css) and enqueued via wp_enqueue_style() / wp_add_inline_style() — no more raw <style> tags.
Full dashboard source code bundled under source/ for GPL compliance and WP.org reviewability.
Expanded == External services == documentation to cover TWWIM AI and Stripe.
Updated legal URLs to their current locations on twwim.ai (Terms of Service, Privacy Policy, GDPR).
Contributor handle corrected to the WordPress.org account owning this plugin.
0.1.0
Initial release
AI voice and text assistant widget injection on frontend pages
Admin dashboard (React SPA) embedded in WordPress admin panel
REST API for plugin settings (integration key, CDN URL, dock position, DOM indexer, widget toggle, page exclusions)
Configurable widget dock position
Per-page widget exclusion by page/post ID
DOM indexer toggle for automatic page content understanding