1.7.6 — 2026-09-03
Sync — lockstep bump, no plugin changes.
1.7.5 — 2026-08-24
🛠 Fixed
- A field filled in at the completion gate now triggers whatever you built around it. The gate wrote custom fields straight to the database, which is a different door from the one the profile page uses — so nothing watching for a profile change ever heard about it. An automation waiting on a field, a recipe keyed to an answer, anything downstream: the value arrived and none of it ran. The same field edited from the website profile fired normally, which is why this read as flaky rather than broken — it split by where the member filled it in, not by which field it was. Custom fields now travel with the rest of the profile through Fluent Community's own save, so the gate and the profile page are finally the same event.
- A required field the member cannot see is named on the admin screen instead of trapping them. Fluent Community drops any field its owner has no permission to see, which the old direct write ignored — so a field that was both required and hidden could never be satisfied, and the member sat on a form with no way forward and no explanation. The field list now says so where you configure it.
📡 OTA & Internal
- The gate's own save endpoint still accepts custom fields, deliberately. App updates arrive over the air on the member's next launch, so for a short window an older bundle is still posting the old shape — removing the handler would strand exactly those members on the completion screen with no way past it.
1.7.4 — 2026-08-01
🔧 Changed
- The License tab's support contact follows the site's vendor identity. A dev-bundle buyer running managed service for their own clients points it at their own business from the client site's
wp-config.php, so their clients see their address rather than ours. Left undefined it stays Two Birds Code, so nothing changes on an ordinary install. - Greek. The app module ships a Greek catalog this release, so its screens follow the app's language — see the module changelog. The plugin's own admin screens are unchanged.
1.7.3 — 2026-07-27
🛠 Fixed
- The website completion overlay works for members whose login isn't a plain username. Fluent Community builds its own handle by stripping dots, spaces and hyphens out of the WordPress login — so a member logging in with an email or a dotted name (
[email protected] becomes janedoeexamplecom) could never complete their profile on the web, because the save was aimed at a handle that didn't match. The overlay now uses Fluent Community's actual handle, whatever the login looks like. The in-app flow was fixed separately in Community App 1.3.3; this brings the website side to match.
1.7.2 — 2026-07-21
🛠 Fixed
- The Save bar works without JavaScript, and stops claiming unsaved changes mid-save. The floating Save pill only appeared once JavaScript had run, so a settings form could be left with no reachable submit button; there's now a plain fallback that always works. Separately, the post-submit latch cleared after 4 seconds, which on a slower save re-showed the "unsaved changes" warning while the save was still in flight and swallowed the "Saved" confirmation. That window is now 20 seconds. Shared across the plugin suite.
1.7.1 — 2026-07-14
🛠 Fixed
- Licensing resilience. A rate limit or brief license-server hiccup no longer disables a licensed site — the plugin runs on its last good check, and only a definitive invalid or expired answer gates features. A revoked key also can't slip back to licensed between checks.
1.7.0 — 2026-07-06
Closes the door bots were using to get past the gate: a faked phone. Verification is now a durable property of the profile rather than a throwaway session, so a number typed straight into the API can no longer fake a complete profile — it has to clear a real Twilio code.
🔒 New
- Phone verification actually enforces now. The "Enable phone OTP" toggle always said members must verify before their profile is complete, but the code only checked the field was filled — so a number written straight into Fluent Community's profile API counted as done and Twilio never ran. Verification is now recorded against the member, tied to the exact number they cleared, and the completion check requires it: a filled-but-unverified phone stays incomplete no matter which endpoint wrote it. Change your number later and you're re-asked. On update, existing members who never verified are gated until they do — ready them in one click with the manager below.
- A members manager. A modal on the OTP tab with Verified and Not verified tabs, live counts, search and pagination. Mark an individual, a page selection or everyone verified or unverified, and un-verify a suspicious account in one click. "Mark ALL as verified" trusts your current crowd so an update never strands them, while leaving suspects gated. It doubles as your day-to-day verification management.
- Require a headline. An optional gate field making members add Fluent Community 2.7.0's one-line headline before their profile counts as complete. Off by default and independent of the Bio requirement — require either, both or neither. Enforced identically across the app, the web overlay and the server gate.
🛠 Fixed
- Completing the gate no longer wipes a member's headline. Fluent Community 2.7.0's profile update defaults the headline to empty whenever a save omits it, so a member who'd written one on the web lost it the instant they cleared the gate. Both save paths — the app's completion save and the web overlay — now echo the existing headline back.
📡 Internal
- Verification is stored durably in user meta rather than a transient session, with enforcement running whenever OTP is required. The old consume-on-read session is retired. The manager backend handles search, pagination, per-user and self-draining batch writes through the WordPress meta API so caches stay correct.
- App: no change required — the fix is plugin-side, and the app already routes incomplete members to the completion screen where the verify step runs.
1.6.0 — 2026-07-01
Registration stops fighting Fluent Community's native signup, and the gate gains phone verification. New members sign up with the base fields only — name, email, username, password, terms and FC's own email verification — and the completion gate owns everything else, collected right after signup.
✨ New
- Phone OTP verification. An OTP Verification settings tab enables Twilio Verify on the configured phone custom field, confirming the number with a 6-digit code and an optional voice-call fallback as a step in the completion flow, mirroring the existing email step. Duplicate-number prevention and a blocked-number list are included.
- Cleaner signup. Registration is base-only, so custom fields and phone entry no longer crowd the Fluent Community signup form. The gate presents only what's missing, one screen at a time, immediately after joining.
1.5.0 — 2026-06-21
✨ New
- A social links requirement. A Social Links toggle requires at least one social profile before a profile counts as complete, enforced identically in the app and on the web. Like every other field it appears only when you turn it on and the member hasn't added one. Off by default.
🛠 Fixed
- The social-links section no longer always appears. It previously rendered whenever bio or photos were required, regardless of any setting, reading as an unlabeled and seemingly-required field.
- No more stuck "Complete Profile" button. It used to grey out silently until every requirement was met, with no hint what was missing — a member who skipped the cover photo could be stranded. It now stays pressable and validates on tap with a specific message, like a login form. Applies to both the app and the web.
🔧 Changed
- The requirement is enforced only when Fluent Community actually exposes social-link providers, so a required-but-unfillable field can never lock a member out — the same safety pattern the custom-fields requirement uses. The admin row mirrors it, greying out with guidance when no providers are configured.
1.4.0 — 2026-06-17
Expands the gate beyond bio and avatar to email with optional verification, last name, website, and Fluent Community custom fields — enforced identically in the app and on the web. Completion is a live check now, so there's no stored flag to drift.
✨ New
- Email — require a valid address. Built for bounce recovery: clear a member's email in Users and they must enter a new one on their next visit. Optional 6-digit verification confirms it's deliverable, reusing Fluent Community's own token contract so it works on FC-only installs with no dependency on the app plugin.
- Last name — Fluent Community already requires a first name; this requires a full name. Reads FC's derived display name, so it's correct whether or not user-sync is on.
- Website — require a profile link.
- Custom profile fields — one toggle enforces any Fluent Community custom field marked required, deferring entirely to FC's own per-field setting. The admin row greys out when the feature is off and lists which fields are currently required.
- Cover photo as its own requirement toggle.
🔧 Changed
- Completion is a pure live check. The stored completion flag is no longer the source of truth, along with its invalidation hooks. The gate re-derives completeness from the live profile on every request, so clearing a required field — even directly in the database — re-gates the member immediately. The meta is kept only as a write-through mirror for the app plugin's header reader.
- Moderator fields are preserved. A moderator completing the gate no longer resets their own verification, status or badges — current values are re-sent, matching Fluent Community's moderator branch. Non-moderators send nothing extra.
- The web overlay reaches full parity with the app, rendering only the missing fields including dynamic custom fields and the email-code step.