v1.2.0 Latest
New
- Real-time updates (optional): live order messages and notification badges over WebSockets, powered by Pusher.com or a self-hosted Pusher-compatible server such as Soketi. Disabled by default; enable under Settings - Advanced.
- Review Moderation admin page - approve, reject, and audit customer reviews with status filters and a four-card stats strip.
- My Notifications admin page - a read-only mirror of your in-app marketplace notification stream.
- Wallet ledger entries now link straight to the related order, tip, extension, or milestone.
- Review moderation can now be switched on under Settings - Vendor; new reviews hold for approval and the API reports the same state.
- Dispute timing is configurable: response window, reminder delay, auto-escalation, and a dedicated dispute notifications email under Settings - Orders.
- Order amount limits, price decimal places, deadline-extension cap, buyer-request expiry, portfolio caps, and audit-log retention all have settings fields instead of fixed defaults.
- Order Confirmation and Terms pages can be mapped under Settings - Pages.
- Wallet provider selection under Settings - Payouts; the free plugin and Pro now resolve the same configured provider.
Improve
- Unified dashboard shell across every frontend template so Services, Dashboard, and profile sections read as one product.
- Premium UX uplift on all frontend surfaces - token-driven styling, designed empty states, consistent buttons, badges, and notices at AA contrast.
- Lucide line icons throughout, replacing emoji in notifications, single-service highlights, and helpful-vote controls.
- Dashboard sections now use pretty permalinks (/dashboard/section/) with a 301 fallback for legacy ?section= URLs.
- The earnings area is now "Earnings & Payouts" with manual withdrawal plus extension points so Pro can add PayPal and Stripe payout rails in the same section.
- Confirmation prompts and toast messages use a shared design-system dialog instead of the browser native pop-ups.
- Marketplace pages (Dashboard, Cart, Checkout, Become a Vendor) now render full-width without the theme blog sidebar, with native layout support for the Reign and BuddyX themes and a sidebar-free fallback for any other theme.
- Opening the dashboard lands active vendors on their Sales overview and buyers on My Orders.
- Plugin admin screens hide unrelated third-party notices so the marketplace pages stay focused.
- Vendor profile data (tagline, rating, review count, country, social links) now reads from the canonical vendor profile store everywhere: SEO schema, the vendors API, the Seller Card block, and proposal lists.
- Single service pages show the vendor's real last delivery date.
Fix
- Services archive no longer shows visitor-scoped data when set as the site front page.
- Services archive and single templates - card borders, category-label overlay, button backgrounds, transparent popups, and sidebar filters.
- Favorites now read and write a single canonical meta key, with a one-time lazy merge of the legacy key.
- Resubmitting a rejected service re-queues it for moderation and clears the prior rejection reason.
- Dashboard section header keeps the title on the left and groups the primary action with the Replay tour control on the right, with a clean wrap on mobile.
- The set-up-payouts prompt no longer repeats on every dashboard tab; it stays within the Earnings & Payouts section.
- Order conversation messages can be sent with only an image attached and no text.
- Saving settings now shows a confirmation message instead of completing silently.
- Service add-ons created from the admin service editor or WP-CLI now appear in the cart and checkout, not just the order modal.
- Vendor vacation mode is now honored on the single service page - a notice banner shows the seller's message and return date and the order button is disabled, so buyers cannot purchase while the seller is away. Vendors and admins can set an optional return date.
- Vendor SEO schema now includes the seller's title and aggregate rating; previously both were always empty.
- Vacation mode and other profile changes persist reliably; failed saves now report an error instead of false success, and missing database columns self-heal on update.
- Per-member email notification preferences are honored when sending; muted categories no longer email.
- Admin service editor shows recurring billing fields and saves them with the same keys as the frontend wizard.
- Admin Process Refund button performs the refund through the payment gateway instead of showing a placeholder notice.
- Single service sidebar sticks smoothly while scrolling and scrolls internally when taller than the screen.
- Delivery time and revision counts are consistent across the wizard, admin editor, REST API, SEO schema, and archive filters.
- Vendors approved by an admin can set their PayPal payout email from their profile and it now saves.
Security
- Gateway settings pages no longer print saved secret keys into the page HTML; secret fields are masked and keep the saved value when left blank.
Dev
- REST status parameter on service update (publish or draft), owner-gated.
- Service wizard extension hooks (wpss_wizard_service_data, wpss_wizard_pricing_after, wpss_wizard_sanitize_service_data, wpss_wizard_save_service_meta) let extensions inject fields into the frontend Create Service flow. New filters wpss_use_fullwidth_template, wpss_fullwidth_page_keys, wpss_dashboard_default_section, and wpss_realtime_settings.
- New filters wpss_show_powered_by, wpss_stripe_refund_args, wpss_auto_approve_vendors and wpss_require_service_moderation (now live at the decision points), and action wpss_vendor_profile_saved on both profile save paths.
- Static contract audit gate added to the release pipeline; the free/pro pair ships with a clean audit baseline.
- audit/manifest.json refreshed; full inventory of REST routes, hooks, tables, shortcodes, and admin pages.