Changelog

Every release of MemberMode and MemberMode Pro, pulled directly from the source.

Every MemberMode release, free and Pro, sorted by date.

  1. Fixed

    • Account page width: now consistently matches Dashboard, Members, and Profile (~1100px) on every theme. Previously could narrow to ~1000px on some setups.
  2. Added

    • Five native Gutenberg blocks under a dedicated **MemberMode** block category: Members directory, Profile, Profile menu, Restrict content, Forms. Each block ships with an editor preview that matches the front end.
    • Universal page width: dashboard, members, profile, and account pages now render at your theme’s wide width on any theme (block, classic, FSE, page builder). Auth pages (sign in / register / reset) stay compact.
    • Profile menu: master “Hide for guests” toggle plus auto-positioning dropdown that flips left or right depending on where the trigger sits in the viewport.

    Improved

    • License key controls on the **My account → Licenses** tab: Show / Hide and Copy buttons now work again.
    • Pro plugin row “View details” modal now shows the full description, installation steps, FAQ, and per-version changelog instead of a one-line placeholder when no license is active.
    • Lighter free download: removed the bundled licensing SDK from the free plugin. Customers who install the optional Pro addon get the SDK from there.
    • Account routes hardened: `/account//` URL rewrites stay consistent across theme switches.
    • Admin notices scoped to MemberMode admin pages only; no more first-install promos showing up on Posts / Pages / WooCommerce screens.

    Fixed

    • Pro license activation: clicking **Skip** on the connect screen now lands on the MemberMode dashboard instead of a “you are not allowed” error.
    • Profile pages on classic themes no longer show the broken `page-template-default` class when a vanity URL like `/@username/` is used.
  3. Added

    • “View details” modal on the Plugins screen now renders the full plugin description, Installation steps, FAQ, and per-version Changelog — sourced directly from the bundled `readme.txt` so it stays correct whether or not a license is active.

    Fixed

    • License activation **Skip** button no longer dead-ends on a “Sorry, you are not allowed to access this page” error — Pro now registers its activation page so the underlying redirect lands on the MemberMode dashboard cleanly.
    • License panel **Enter license key** button always opens the activation screen, even when the previous opt-in was skipped.
  4. Added

    • Five new branded transactional emails: registration pending review, two-factor enabled, two-factor disabled, sign-in from a new device, plus branded admin-side notifications when a member changes their email or password from the WordPress dashboard.
    • Sender controls: choose the From name, From email, and Reply-to address used for every branded email.
    • Live email preview with a realistic inbox-style header (From / To / Subject), a template selector, and a built-in send-test button — preview updates as you type.
    • One-click “Reset to defaults” for sender, footer, and email toggles.
    • “Insert merge tag” picker for the footer / signature: site name, site URL, recipient name.
    • Pro upsell card on the Email tab for customers who want per-template editing, send logs, and managed delivery.

    Improved

    • Email templates now adapt to dark-mode email clients (Apple Mail, Outlook iOS, etc.) — surfaces flip to a dark theme automatically.
    • Logo and primary colour now flow through every member-facing surface (login, register, password reset, two-factor, account tabs, members directory) — not just emails. Admin-set primary colour wins over theme defaults.
    • Verification code and sign-in code emails share one consistent design.
    • Footer / signature in emails now preserves line breaks (multi-line addresses, signatures, and legal text render correctly).
    • Email Branding settings panel redesigned: split-pane editor with sticky preview, scoped notice styles, instant footer typing.
    • Logo size in Gmail no longer stretches to full column width (explicit width attribute).
    • Reset email-settings dialog now uses the in-app confirm modal (consistent with Modules / Fields / Forms).
    • “Reset” link added to Primary color so admins can revert to the default with one click.

    Fixed

    • Buttons across account, login, password-reset, and two-factor pages no longer inherit the active theme’s link color after being clicked or focused.
    • Checked privacy radios on /account/ now use the admin’s brand colour (or sensible default).
    • Brand colour variables now emit on every front-end page, not only on the licenses tab.
    • Reset action surfaces the standard success snackbar instead of failing silently.
  5. Added

    • Letter-monogram avatars — colored initials (Slack/Discord style) for users without a custom photo or Gravatar. Toggle via Settings → Modules → Profiles. Real Gravatars still win.

    Fixed

    • Activation error on the Member Dashboard page after fresh install (regression from 0.1.7).
    • Account page no longer shows “Unverified” email tag when the email-verification feature is disabled.
    • “Remove all data on uninstall” now fully cleans up plugin pages, custom data, scheduled jobs, and short-lived caches that were sometimes left behind.
  6. Added

    • Login-time 2FA enrollment interstitial — when 2FA is required but the user isn’t enrolled, the login flow now intercepts BEFORE creating the session and walks them through QR scan + verify + backup codes, then signs them in.
    • Account Overview tab — new landing section with greeting + avatar, account stats (email, 2FA status, role, joined, sessions), and quick-action cards (no duplication of /dashboard or /profile).
    • Active sessions: new table layout (Device | Location | Signed in | Expires | actions kebab) with current-session badge, per-row sign-out menu, and a stacked mobile fallback.

    Improved

    • 2FA tab in /account/ now hides when policy is Off and the user isn’t enrolled.
    • Settings → Security: 2FA policy panel redesigned as 4 preset radios (off-all / optional-all / required-staff / required-all) with custom-per-role expand and live enrolment counts. Self-lockout warning when admin picks a mode requiring their own un-enrolled role.
    • Settings → General: Frontend admin bar redesigned as 3 preset radios (show-all / hide-from-members / hide-from-all).
    • Account password form: hidden username field for password-manager + screen-reader compliance.
    • Active sessions: cleaner labels — `Chrome (Linux)` instead of `Chrome on Linux`, loopback / RFC1918 IPs render as “Local network” / “Private network” instead of `::1` or raw octets, current-row badge tone softened.
    • Confirmation dialogs: standardized across the frontend — single `.membermode-confirm` style (left-aligned, primary button left, soft blur backdrop, smooth open/close). Replaces the heavier delete-modal chrome and the native `window.confirm()` in the profile drawer.
    • 2FA verify: new “Lost your authenticator? Use a recovery code” toggle on both `/login/` and `wp-login.php` — swaps subtitle, label, placeholder, autocomplete, and auto-submit behaviour for the recovery-code path. Either mode submits to the same endpoint.
    • Code inputs (OTP login, email verification, 2FA verify, 2FA enroll) now match the height + weight of regular fields — same letter-spacing / centered alignment / tabular-nums, but no oversized font. Visually consistent across the panel.
    • Login error messages: cleaner copy on both surfaces. “Wrong password” and “username not found” both collapse to a single neutral `That username or password didn’t match. Try again or reset your password.` — prevents username enumeration via the login form. Empty-field hints and verification/approval gates keep their actionable copy.

    Fixed

    • Email verification: “Require email verification” now defaults to OFF so fresh installs without configured SMTP don’t lock out new signups. Admins can flip it on once SMTP is wired.
    • Email verification: admin-created, role-promoted, admin-approved, and privileged-on-login users are auto-marked verified — no more dangling “Unverified” tags on accounts that were vouched for out-of-band.
    • Email verification copy: “confirmation link” → “6-digit verification code” (we send OTPs, not links).
    • WpLoginReplacer: `mm_2fa_enroll` action allow-listed alongside `mm_2fa` so the new interstitial isn’t bounced to the frontend login page.
  7. Added

    • “Social profiles” profile field — link your accounts on Facebook, Instagram, TikTok, X, Reddit, GitHub, LinkedIn, YouTube, and a personal website. Renders as a clean icon row in the profile header.
    • Per-network enable/disable + master switch under Fields → Social profiles, with a `membermode_social_networks` filter so themes / addons can register custom networks.
    • Help widget bundled into wp-admin — searchable knowledge base inside your dashboard plus a one-click contact form.
    • Modules screen split into “Installed” and “Available in Pro” tabs.

    Improved

    • Edit Profile drawer: required-field indicators, server-side errors shown inline, unsaved-changes confirmation, save button spinner, opens above the WordPress admin bar.
    • Profile, drawer, popovers and confirmation modal now inherit your theme’s background instead of forcing white.
    • Profile tabs (About / Posts / Activity) no longer stick to the top of the viewport.
    • Onboarding wizard remembers your step and use-case across reloads; cleaner brand step.
    • Dashboard adds a setup checklist and tidier “Setup wizard” button.
  8. Added

    • Onboarding wizard auto-redirects on first activation.
    • Pages screen “Show all in nav” / “Hide all from nav” bulk-action buttons.
    • Settings → Security → Frontend admin bar — pick which roles see the WordPress admin bar on the public site (subscribers + customers hidden by default).
    • “ shortcode + block.

    Improved

    • Onboarding wizard resets scroll position between steps.
    • Dashboard “Total members” relabeled to “Total users” (counts all WP users including admins).
    • Per-page in-nav toggling + classic-theme nav fallback for bell + avatar.
    • ProfileMenu and Notifications bell now master-switch hide everywhere when toggled off.

    Fixed

    • “New this week” no longer counts pre-existing users from before MemberMode was installed.
  9. Added

    • Classic-theme nav fallback: bell auto-injects into the primary nav location for themes that use `wp_nav_menu()` (Astra, Avada, Divi, page-builder headers).

    Improved

    • Bell notification toggle is now a true master switch — hides the bell on the public site whether placed via auto-inject, shortcode, or block.
    • Freemius update transient + ‘Upgrade to Pro’ after-row notice cleanup moved to Pro (was wrongly in free).
  10. Improved

    • External services list trimmed to the calls actually made by the free plugin.
  11. Improved

    • After a password reset, members land logged-in on the account page.
    • Account license card styling cleaned up.

    Fixed

    • Password reset emails reliably delivered.
    • wp-admin background bleeding through from the plugin’s frontend styles.
  12. Improved

    • License panel: rename ‘Activations’ to ‘Sites’ to match the customer account UI wording.
  13. Added

    • License panel: native WP-style empty state with primary ‘Enter license key’ + secondary ‘Get a license’ actions.

    Improved

    • Real empty-state hero when Pro is unlicensed (no more visual cliff between licensed and unlicensed states).

    Fixed

    • Drop stale same-version Pro update offer from `update_plugins` response (fixes phantom ‘update available’ toast on the Pro plugin row).
  14. Fixed

    • Always strip mistakenly-attached Pro update from the FREE plugin basename (Freemius SDK side effect when the SDK is bound to the base plugin).
  15. Added

    • License panel: on-demand key reveal (license key hidden until clicked, eye-icon toggle).
    • Skeleton loader on the license panel during initial fetch (no flash of empty state).

    Improved

    • Snapshot Freemius SDK error surfacing so transient API blips show a meaningful message instead of an opaque failure.
  16. Improved

    • Clarify the Pro license activation flow with inline help text on the License panel.
    • Drop the duplicate update normalizer; route the ‘Re-check’ license action through Freemius directly so customers see the real SDK state instead of a stale local cache.

    Fixed

    • Freemius license deactivation when the customer removes the site from their license.
    • Recover the existing membership pricing page after a regression that overwrote the layout on activation.
    • Membership page layout + package cleanup so the Plans block renders consistently.
  17. Fixed

    • Bind Freemius update notifications to the Pro addon plugin (was previously attaching to the free plugin’s basename).
  18. Improved

    • Audit log: complete event labels, sort dropdown alphabetically, fix purge modal layout, set subject for password-reset-blocked event.
    • Route Pro profile URL emitters through `PrettyUrls::url_for_user`.

    Fixed

    • REST URL builder for plain permalinks (resolved a `??`-double-query bug).
    • Pro TypeScript type-check errors.
  19. Added

    • Initial release.
    • Frontend profiles with `/@username` vanity URLs, Twitter/X-style layout, theme-native styling.
    • Drag-drop form builder: registration, profile-edit, and custom forms.
    • Member directory with privacy-respecting search and filters.
    • Access control: sitewide, per-post, per-term, per-CPT rules with teaser support.
    • Two-factor authentication (TOTP) on both `wp-login.php` and the frontend.
    • Passwordless email-OTP login (rate-limited, hashed, single-use).
    • Branded transactional emails with per-email toggles and merge tags.
    • Member Dashboard hub and Activity feed.
    • Notifications center with admin-bar bell.
    • Public API facade: `MemberMode\API\{User, Fields, Access, Forms, Directory, Activity, Notifications}`.
    • WP-login hardening: rate-limit, author-enumeration blocker, optional custom slug.
    • Pro addon available separately at membermode.app.
  20. Added

    • Initial Freemius-ready Pro addon release.