meshnmeet is in beta — Premium features are free while we test. Spot a bug or have feedback? We'd love to hear it.
Beta

What we've been building and fixing. We're in beta, so this moves fast — thanks for testing along the way.

0.2.174

  • Plugin (customer) sites: emails use your WordPress site logo automatically, with an optional override under meshnmeet → Settings → Email logo. The field now spells out the size guidance (displayed 40px tall / up to ~220px wide; upload ~2× for sharp high-resolution rendering).

0.2.171

  • Email logos are now size-capped reliably — a fixed height (~40px) is enforced in every email client, including Outlook desktop (which ignores CSS limits on images), so no one can blow out an email with an oversized logo.

0.2.170

  • Emails can now show your logo. Emails display the logo set under Site Admin → Settings → Branding → "Email logo URL" (or, if blank, your site's WordPress logo) at the top on a clean white header; if no logo is set they fall back to the "meshnmeet" wordmark. Invitations use the organizer's custom logo when they have one, otherwise this site logo.

0.2.169

  • Added a Help Center guide, "Setting up email delivery (FluentSMTP + Postmark)," with step-by-step instructions including how to verify your sending domain in Postmark (DKIM + Return-Path DNS) and create the invitations/transactional message streams — plus a FAQ entry for troubleshooting undelivered invitations.

0.2.168

  • Help Center and FAQ updated for the newest features: confirming your email address before sending invitations; choosing how a WordPress plugin site sends invitations (your own email service vs. "through meshnmeet," 30 free a month then credit packs); what invite credits are; and an accurate description of beta license keys and when the beta ends.

0.2.167

  • Site Admin -> Licenses: the Revoke button works now. Revoke disables a license so it stops validating on the customer's site (handy for comped keys or the beta cleanup); revoked licenses show a Restore button to re-enable. Also added a "Beta end date" field under Site Admin -> Settings -> Beta mode: it sets the expiry stamped into newly issued beta license keys and the date the in-plugin beta banner counts down to.

0.2.166

  • Beta-ending reminder for plugin sites. When a site is running on a beta license key (which unlocks Premium for free during the beta and expires on its own), meshnmeet now shows a countdown banner in wp-admin as the key nears expiry — explaining that Premium will need a paid license afterward, with links to buy and activate — and the Setup screen shows the beta license's expiry date. No polls or links are affected.

0.2.164

  • Fixed: the "Buy invite credits" button now lands on a credit-packs section that actually sells them. The plugin pricing page previously showed only license tiers (credit packs were hidden under an old assumption that plugin sites never buy them); now that "Send through meshnmeet" exists, the page shows the prepaid invite-credit packs (500 / 1,000 / 5,000) with checkout, and the Setup button jumps straight to them.

0.2.163

  • "Send through meshnmeet" polish (Increment 4): the Setup → Email invitations panel now shows your remaining free allowance and credits and has a "Buy invite credits" button when you're in meshnmeet-send mode. Invitations that are held because your monthly allowance ran out are no longer added to the poll, so you can simply re-send to those people after topping up. Added a short in-repo guide (docs/hosted-email.md) explaining the two delivery modes.

0.2.162

  • "Send through meshnmeet" is now live (Increment 3). Under meshnmeet -> Setup -> Email invitations you can now choose how invitations are sent: your own email service (unlimited, via your SMTP) or through meshnmeet (no SMTP setup — 30 free invitations a month, then prepaid credit packs). In the meshnmeet mode, invitations are sent for you from "{your site} via meshnmeet" with replies going to the organizer; if a month's free allowance and credits run out, the extra invitations are held and both the wizard and the Setup screen tell you, with the option to buy credits or switch back to your own email service.

0.2.161

  • Backend groundwork for "send through meshnmeet" (Increment 2): the meshnmeet.com relay endpoint that will send invitations on a customer site's behalf — license-authenticated, metered (30 free per month, then prepaid credits, anything beyond is held), and idempotent so a retry never double-sends. Not yet wired to customer sites; that arrives with the delivery-mode switch.

0.2.160

  • Groundwork for a choice of how invitation emails are sent. The Setup → Email invitations panel now shows two delivery modes: "Your own email service" (active — unlimited, via your SMTP) and "Through meshnmeet" (coming soon — 30 free invitations a month, then credit packs, with no SMTP setup). The monthly cap is now aware of the mode. Sending is unchanged for now; the "Through meshnmeet" option activates in a later release.

0.2.159

  • No more email-invite cap on plugin (customer) sites. Because those sites send invitations through their own email service, there's nothing for meshnmeet to meter — so invitations are now unlimited there, and the Settings page reflects that instead of showing a confusing "X of 30 left this month" counter. (The monthly cap still applies on the hosted meshnmeet.com app, where meshnmeet handles delivery.)

0.2.158

  • Poll participation pages now set themselves up automatically: after updating, the plugin creates the "Poll" host page and refreshes links on its own, so /p/… links render inside your site's real header, navigation, and footer with no manual Setup step. The poll is also now centered within your theme's content area instead of hugging the left edge.

0.2.157

  • Participation pages (/p/…) now render inside your site's normal header, navigation, and footer instead of a stripped-down fallback — on customer sites the poll routes through a real "Poll" page so your theme wraps it like any other page. Re-run **meshnmeet → Setup → Create poll pages** after updating to enable this. Also fixed the help tooltips on locked Premium options in the wizard: the whole row was dimmed, which washed out the tooltip text — now only the label and switch are dimmed and the tooltip stays crisp.

0.2.156

  • Emails are now branded HTML. Poll invitations, reminders, welcome/confirm, receipts, license keys, renewal & expiry notices, co-organizer invites, and the account/billing notices now send as a designed HTML email — meshnmeet purple header, clear call-to-action buttons, and a tidy footer — with the existing plain-text version kept as the automatic fallback for text-only clients and spam filters. No wording was lost; the buttons wrap the same links the text version lists.

0.2.155

  • Site Admin -> Licenses can now issue a complimentary plugin license by hand (no Paddle purchase) — pick a plan, term (1 year, 2 years, or never), and recipient, and optionally email them the key. Handy for the pilot site, comped partners, or support recovery; the key validates against the license server exactly like a purchased one. Super admins only.

0.2.154

  • Confirm-your-email flow now explains itself: new accounts get a welcome email with a confirmation link, and until you click it, invitations are held back (your poll still goes live and its participation link works). A "Please confirm your email address" banner with a one-click resend now appears on both the create-a-poll page and your dashboard, and if you try to invite people before confirming — from the wizard or from Manage poll — you get a clear message instead of a silent no-op.

0.2.153

  • Account emails: a welcome email now goes out when you sign up, and you'll get a confirmation email whenever you export or delete your account data, so account-lifecycle actions always leave a paper trail in your inbox.

0.2.152

  • Your data: the account-page export now includes your saved email lists, prepaid invite credits, and your responses on other people's polls (previously it only covered polls you created). Deleting your account also removes comments you left on other people's polls. Site owners can now handle data-subject requests through WordPress's built-in Tools -> Export/Erase Personal Data, alongside the self-service export/delete on the account page.

0.2.151

  • Site Admin -> Payments now records refunds and deep-links each row to the matching transaction in Paddle, and a one-click "Clear test data" resets the Payments and Licenses lists before launch. On customer plugin sites where creation is admin-only, the front-end "Create a poll" page now shows a clear notice pointing admins to the meshnmeet menu (also enforced server-side). Saved email lists can now be edited and renamed.

0.2.150

  • License-linked invite credits: a customer plugin site can draw down the buyer's meshnmeet.com prepaid credit balance through the license server (optional hybrid mode, off by default). Fixed a display error on the Site Admin -> Licenses page.

0.2.149

  • Email deliverability: bounces and spam complaints now sync from Postmark automatically every hour (plus an on-demand "Sync now" in Site Admin -> Deliverability), so a bad address is suppressed and skipped on future invitations even when the inbound webhook is blocked by the host firewall.

0.2.148

  • Email deliverability (new): a per-organizer sending gatekeeper that automatically throttles or pauses any sender with a high bounce or spam-complaint rate — protecting deliverability for everyone — plus a local suppression list and a Postmark bounce/complaint webhook. New Site Admin -> Deliverability section shows gated senders and the suppression list, with a control to reactivate a hard-bounced address.

0.2.144

  • Plugin email (Model A): on a customer's own WordPress site, a valid license now means unlimited invitations, sent through the site's own email service — meshnmeet no longer needs to relay plugin-site mail. Free/unlicensed sites keep the monthly invite cap. (Prepaid credit packs remain a hosted-app feature.)

0.2.138

  • A dedicated plugin pricing page on meshnmeet.com, and the groundwork for license-linked invite credits synced from the buyer's account.

0.2.135

  • Customer plugin sites: a new "meshnmeet" menu in wp-admin — Setup, Create a poll, Manage polls, Analytics, Settings — with one-click creation of the poll pages, and an option to restrict poll creation to administrators (enforced server-side, not just in the UI). Anyone can still vote from a poll's share link with no account.

0.2.127

  • Security: the Paddle webhook now also checks the caller's IP against Paddle's published notification ranges (fetched live from Paddle, cached, environment-aware) on top of the existing HMAC signature check. Fails open if the source IP can't be resolved or the list can't be fetched, and can be disabled with the mnm_paddle_webhook_ip_allowlist filter — so it can't break a legitimate, signed delivery. Test in sandbox before relying on it in live.

0.2.126

  • Site Admin → Settings: added breathing room below the "Save changes" button so it no longer sits tight against the "Nonprofit & school grants" card beneath it.

0.2.125

  • Pricing page: the comparison table's "Get started" button no longer wraps to two lines — the three plan buttons are now one line and the same size.
  • Account page: the "Connect Zapier" section is now "Connect your apps" and covers both Zapier and Make — the same API key connects either (Make also needs your site URL, now shown).

0.2.124

  • One-click reminders to non-responders are now a **Premium** feature (were Pro-only) — available on Premium and Pro. Pricing comparison, features page, FAQ, and Help Center updated to match. (Pro still adds the analytics dashboard that measures reminder lift.) DB v28.

0.2.123

  • Site Admin → Settings: consistent spacing between the setting cards (they had no gap), and the "Save changes" button now sits in a proper footer under the settings form. (The "Nonprofit & school grants" card below it is a separate tool with its own Grant/Revoke buttons, so it stays after the settings form.)

0.2.122

  • Scheduling polls no longer let people vote on dates that have already passed. Past dates are shown but greyed out and marked "past" in the vote form and results grid, and the server rejects any vote on them (existing votes are kept). "Passed" is judged in the poll's own time zone — an all-day date stays votable through the end of that day; a timed option closes once its start time is reached. Organizers are exempt (they can still correct rows). If every date has passed, voters see a short note instead of an empty form. Developers can re-open past dates with the mnm_allow_past_date_votes filter.

0.2.121

  • New: in-app vote notifications for organizers. While you're viewing your poll's results, a toast pops up when someone votes ("Jordan just voted"). Toggle it with "🔔 Notify me when someone votes" on the results view — the choice is remembered per poll, in your browser. Free on every plan. (For alerts when you're not on the site — Slack, email, your phone — use the Zapier/Make integration.)

0.2.120

  • Fix: on the "Your polls" dashboard, the "View analytics" and "+ Create a poll" buttons were different sizes and misaligned (the Create button carried a stray top margin from the vote form). They're now the same height and aligned.

0.2.119

" picker letting you choose Apple Calendar (.ics), Google Calendar, or Outlook; the poll-wide "Add dates to calendar" button is a matching dropdown (Apple downloads all dates in one .ics; Google and Outlook list each date, since those services add one event at a time).

0.2.118

  • One-click "Add to Google Calendar" and "Add to Outlook" links on scheduling polls (Pro), right next to the .ics download for each date. Clicking opens a pre-filled event in Google Calendar or Outlook — no download, no account connection. Times are converted to UTC so the event lands correctly in any calendar. Apple Calendar and desktop Outlook still use the .ics file.

0.2.117

  • Fix: the "Add dates to calendar (.ics)" download on scheduling polls crashed with "There has been a critical error on this website." The calendar endpoint referenced an uninitialised property when looking up the poll; it now loads the poll the same way every other endpoint does. Calendar export works again.

0.2.116

  • Belt-and-suspenders for the "Request an integration" button: its purple colour is now set inline on the element itself, so it stays visible even if an old cached stylesheet or an aggressive theme would otherwise hide it (white-on-white).

0.2.115

  • Fix: solid call-to-action buttons (e.g. "Request an integration", "Create a poll") could render invisibly — white text on a white background — when a WordPress theme overrode link colours inside page content. Their purple background and white text are now enforced so they stay visible on any theme.

0.2.114

  • "Request an integration" now points to the support/contact page (same destination as the Help Center's "Contact support"), instead of a mailto. Override with the mnm_request_integration_url filter.

0.2.113

  • Integrations page + broader integration copy (Pro). The pricing/features "Zapier integration" row is now simply "Integrations" and covers both Zapier and Make (with Slack, Teams, and more noted as coming soon). New [meshnmeet_integrations] page lists what you can connect today, what's on the way, and a "Request an integration" link — linked from the pricing table, features page, FAQ, and Help Center. Create a page with the [meshnmeet_integrations] shortcode (default link: /integrations). Still shown only when the integration is switched on. DB v27 (feature relabel).

0.2.112

  • Fix: the Zapier/Make "new response" and "new sign-up claim" triggers never fired for a first-time public voter (the most common case). A brand-new participant is created already marked as having voted, and the "is this their first vote?" check was reading that same just-set status — so it treated every new voter as a repeat and skipped the trigger. First-time votes now correctly fire the trigger; re-votes and admin edits still don't. No effect on any non-integration behaviour.

0.2.111

  • Zapier integration — Phase D scaffolding (Pro). Adds the "Zapier integration" row to the Pro column of the pricing comparison, a matching entry on the features page, an FAQ answer, and a Help Center article — all shown only once the integration is switched on (mnm_zapier_enabled), so nothing is advertised before it's live. Ships the Zapier app itself as a CLI project (in /zapier) defining the connection, all six triggers, and both actions against the meshnmeet/v1 endpoints, ready to publish as a private app. DB v26 (adds the zapier_integration feature). Still off by default until you publish the app.

0.2.110

  • Zapier integration — Phase C actions (Pro). Zapier can now *do* things in meshnmeet, not just react to it: a Zap can create a poll (reusing the same validation, monthly quota, and slug rules as the wizard) and invite people to one of your polls (respecting the monthly invite cap). Creating a poll accepts an optional idempotency key so a Zapier retry never makes a duplicate. Still off by default (mnm_zapier_enabled) until the Zapier app is published — the whole Zapier REST surface is now inert while the feature is switched off.

0.2.109

  • Zapier integration — Phase B triggers (Pro). Adds five more events an organizer's Zaps can fire on: a new participant joins a poll, a new sign-up claim is made, a sign-up slot fills to capacity, a poll is closed, and a new poll is created. Also adds "Close voting" / "Reopen voting" on the Manage panel (organizer only) so a poll can be closed to new responses while keeping its results visible — with a "Closed" badge on the poll. Still off by default (mnm_zapier_enabled) until the Zapier app is published.

0.2.108

  • Zapier integration — Phase A foundation (Pro). Adds the backend for connecting meshnmeet to Zapier: a per-user API key (generate/regenerate/revoke on the Account page), authenticated REST endpoints (/zapier/me, subscriptions, responses), the "new response" trigger, and a reliable cron-based delivery queue that retries failed webhook deliveries with exponential backoff. Off by default (mnm_zapier_enabled) until the Zapier app is published; no user-facing change yet. New DB tables (v25).

0.2.107

  • Fix: logged-out visitors landing on /create (from the main "Create a poll" CTA) got a bare, unstyled sign-in wall — the wizard stylesheet was only loaded after the logged-out check, so the gate had no styling and just one sentence. The gate now loads its styles, leads with a proper "Create a poll" heading, a friendly explanation (a free account is needed to create; voting never needs one), a "Sign in to continue" button (which returns you to the wizard), and a "Create a free account" link.

0.2.106

  • Pricing page: the Free plan's poll allowance ("3 polls / month") now shows on the plan cards, matching the FAQ and the comparison chart. The poll allowance is a per-tier line (3/month vs Unlimited) so the Free cap is no longer implied only by omission; the redundant "Unlimited polls" feature row was removed from the comparison. Also corrected sign-up-sheet help text: editing any participant's sign-up is available to all organizers (not a Pro-only extra); Pro adds per-person quantities and fill-rate analytics.

0.2.105

  • Sign-up sheets are now free on every plan. Anyone can create a sign-up sheet with slots, capacities, and automatic waitlists. Pro adds the extras: per-person quantities ("bring 2 dozen cookies", "take 2 shifts"), editing any participant's sign-up, and sign-up fill-rate analytics. Pricing, features page, FAQ, and Help Center updated to match. DB v24.

0.2.104

  • Help Center & FAQ: added coverage for the new features. FAQ gains answers on Free vs Premium vs Pro, sign-up sheets, one-click reminders, custom branding, templates & duplicate, add-to-calendar, the analytics dashboard, uploading a contact list, and the nonprofit/school discount. The Help Center adds matching reference articles for each.

0.2.103

  • Internal: tier-aware entitlements. Subscribers are now granted exactly their own tier's features (Premium gets Premium's, Pro gets Pro's) instead of every subscriber receiving the full set, drawn from the same tier/feature matrix the pricing page shows. Beta mode still unlocks everything. No change to what any current user can do (all Pro-only gates already keyed on the plan tier); this makes the entitlement layer correct for launch, when beta is turned off.

0.2.102

  • Pricing: removed "WordPress plugin" from the hosted-plan feature comparison. The plugin is a separate product (Personal / Business / Agency licences) with its own section, so listing it as a free hosted-plan feature was misleading. Existing sites drop the row automatically on upgrade. DB v23.

0.2.101

  • Features page: added the major features shipped recently. A new "Pro — for teams, schools & charities" section covers sign-up sheets, one-click reminders, custom branding, templates & duplicate, add-to-calendar, and the analytics dashboard; the invite section now lists contact-list import (.csv/.xls/.xlsx).

0.2.100

  • Analytics: sign-up fill rates. The dashboard now shows how full each of your sign-up-sheet slots is, aggregated by slot label across sheets (so a recurring "Drivers" slot rolls up), least-filled first so chronic gaps stand out. Colour-coded bars: green when full, amber mid, red understaffed. Completes the analytics milestone-2 set.

0.2.99

  • Analytics: reminder lift. meshnmeet now logs each one-click reminder send, and the analytics dashboard adds a "Reminder lift" tile showing how many invited people responded after you nudged them (and how many reminders you sent). Attribution counts votes that arrive at or after a poll's first reminder — an honest proxy, labelled as such. New reminders log table (DB v22).

0.2.98

  • Analytics dashboard — milestone 2 (Pro). A date-range selector (30 / 90 / 365 days) now drives the whole dashboard. Added a "Best day to schedule" breakdown that tallies "yes" votes by day of week across your scheduling polls (so you can pick days people actually say yes to), and a "Non-responders" panel listing invited people who haven't voted, with a one-click CSV download of the full list. (Reminder-lift is still to come — it needs reminder send-logging.)

0.2.97

  • My-polls dashboard: a "View analytics" link now appears next to "Create a poll" for Pro organizers (free during beta), linking to the analytics page. Set its target with the new analytics_url attribute on [meshnmeet_dashboard] (defaults to /analytics).

0.2.96

  • Analytics dashboard — milestone 1 (Pro). New [meshnmeet_analytics] page shows an organizer their poll performance over the last 90 days: headline tiles for response rate, average time to respond (with the share who reply within 48 hours), polls run, and invites used this month, plus a response-rate trend across recent polls drawn as a lightweight inline chart. Response rate counts invited participants only; link voters don't dilute it. Pro-only (free during beta); added to the pricing comparison. DB v21.

0.2.95

link — in the results grid header and next to each option on the vote form — so participants can add just the date(s) that work for them. Uses the same .ics export.

0.2.94

  • Upload a contact list in the wizard's "Send invitations" step. Click "Upload a contact list (.csv, .xls, .xlsx)" and meshnmeet pulls every email address out of the file and adds them to your invite list (deduplicated against what's already there). Works with exports from Gmail, Outlook, Excel, and Google Sheets; 2 MB max, up to 2,000 addresses per upload. The monthly invite cap still governs how many are actually emailed.

0.2.93

  • Add to calendar (.ics) for scheduling polls (Pro). Participants and organizers can download a scheduling poll's dates as an .ics file and add them to Apple Calendar, Google Calendar, or Outlook. Times are exported in UTC so they land correctly in any calendar. Available on scheduling polls whose owner is on Pro (free during beta); added to the pricing comparison. DB v20.

0.2.92

  • Poll templates & one-click duplicate (Pro). Save any poll's setup — type, options/slots, settings, info questions, times — as a reusable template, then start a new poll from it in the create wizard's "Start from a template" picker. "Duplicate" on a poll's Manage panel opens the wizard prefilled from that poll (dates cleared, so you pick fresh ones). Templates are also offered on the final wizard step ("Save this setup as a template"). Pro-only (free during beta); added to the pricing comparison. DB v19.

0.2.91

  • Sign-up sheets: organizers can now edit any participant's sign-up. A new "Sign-ups by person" list in the admin view shows who claimed what, each with an Edit button that opens their sign-up pre-filled — adjust their slots and quantities, or correct their name — and saving reconciles capacity/waitlists just like a normal claim. Participants still edit only their own.

0.2.90

  • Internal: add a `Plan::isPro()` helper and route the Pro-only gates (custom branding, one-click reminders, sign-up sheets) through it, with a doc note clarifying that Pro-vs-Premium gating must use the plan tier, not entitlements (which only track paid/not-paid). No behavior change — a guardrail against a future feature being gated the wrong way.

0.2.89

  • Sign-up sheets are now a Pro feature. The create wizard shows the "Sign-up sheet (slots)" type with a Pro tag for Free/Premium users and blocks selecting it (with an upgrade prompt); creation is also enforced server-side. "Advanced sign-up sheets" is added to the pricing comparison as a Pro-only row. (During beta, all Pro features stay free, so it remains available to everyone.) DB v18.

0.2.88

  • Advanced sign-up sheets — now end-to-end. The create wizard has a new "Sign-up sheet (slots)" poll type: add slots as label + capacity (in units; blank = unlimited). Participants claim slots with a quantity ("bring 2 dozen cookies", "2 chaperone spots"), see "X of N left" / "Full" per slot, and the overflow is waitlisted first-come-first-served — with automatic promotion when someone releases a claim. The sheet shows who's covering what (respecting confidential + hide-until-vote), and organizers can add more slots from the Manage panel. Builds on the 0.2.87 foundation.

0.2.87

  • Advanced sign-up sheets (Pro) — foundation. Adds the sign-up-sheet poll type and the quantity-aware slot allocator that powers it: each slot has a capacity in units and a claim takes a quantity ("bring 2 dozen cookies"), with overflow first-come-first-served waitlisted. Votes now carry a quantity (DB v17). No visible UI yet — the create wizard and claim view land in the next updates.

0.2.86

  • Site Admin → Customers: a "Data & account" card on each customer's page mirrors the account-page data rights for staff handling a request — export a JSON copy of that customer's account and polls, or permanently delete their account and all their data (typed DELETE confirmation; cancels any active subscription first; staff/administrator accounts are protected).

0.2.85

  • Account page self-service (data rights + plan changes). "Your data": export a JSON copy of your account and all your polls (options, participants, votes), and permanently delete your account and all its data (typed DELETE confirmation; cancels any active subscription first; staff/admin accounts are protected). Subscription: Pro subscribers get "Switch to Premium" (swaps the Paddle subscription to the Premium price at the next renewal), and the cancel action is now a clear "Downgrade to Free plan." The plan label now reflects Pro vs Premium correctly.

0.2.84

  • Nonprofit/school discount route + pricing-page link. The pricing page now has a "Nonprofit or school?" strip linking to the application page (/non-profit-application/). Admin grants now offer two modes: comp to Pro free, or approve the account to buy Pro at a discounted rate. Set a "Nonprofit discount" (a Paddle discount ID or code) in the Paddle settings; approved accounts get a one-click "check out at your nonprofit rate" button with the discount pre-applied — shown only to approved accounts, never publicly.

0.2.83

  • Nonprofit & school discount (Phase 0.4): a new [meshnmeet_nonprofit_apply] page lets registered charities and schools apply for discounted/free Pro; applications email the admin for manual verification. Site Admin → Settings gains a "Nonprofit & school grants" card to comp a verified account to Pro for free (reversible, and it never touches paying subscribers) and to review/revoke existing grants.

0.2.82

  • HTML branded emails: invitation, reminder, and "new options added" emails are now sent as polished HTML with an accent-colored button (and a plain-text fallback for deliverability). Pro organizers' logo and accent color appear in these emails; everyone else gets the meshnmeet default.

0.2.81

  • One-click reminders (Pro): from a poll's Manage panel, nudge everyone who hasn't voted yet with one click — cap-enforced like invitations. The pricing cards and comparison chart now list the Pro-only features (Custom branding, One-click reminders). DB v16.

0.2.80

  • Custom branding (Pro): Pro organizers can set their own logo and accent color (Account page) that show on their polls — a step beyond Premium's badge removal. Polls recolor to the accent and display the logo at the top.

0.2.79

  • Pro annual set to $119/year — the Pro card now says "2 months free" (accurate for $119) instead of reusing Premium's "save 20%".

0.2.78

  • Pro tier (foundation): add the Pro plan ($11.99/mo, unlimited polls, 2,500 poll email invites/month) as a third pricing card + chart column. Tier-aware plan detection (Free/Premium/Pro) now drives the invite cap; the Paddle webhook records the plan from the subscribed price and recognizes Pro subscriptions. Hidden until you set the Pro price ID in Settings. DB v15.

0.2.77

  • Invites: the wizard's Send-invitations step now shows "X of Y email invites left this month". Added a prepaid top-up wallet — buy invite packs (+500 / +1,000 / +5,000) through Paddle to add credits that never expire and are used after the monthly allowance runs out. Manage it from the account page. Set the pack price IDs in Site Admin → Settings.

0.2.76

  • Email invite cap (Pro-tier foundation): enforce a monthly poll-email-invite limit per organizer — Free 30, Premium 1,000 (Pro 2,500 slots in when that tier ships) — counted per calendar month and enforced at the single invitation chokepoint. The wizard confirmation now says plainly when some invites weren't sent because the limit was reached. Protects margins across every tier.

0.2.75

  • Pricing page: the full comparison chart is now collapsed by default behind a keyboard-accessible "Compare every feature" expander, so the page leads with the plan cards and stays compact. The chart is one click away, fully intact.

0.2.74

  • Pricing page: add scannable Free & Premium plan cards above the comparison chart (the chart stays, for detailed side-by-side comparison). Cards are driven by the same plan data as the chart and respect the Monthly/Annual toggle.

0.2.73

  • Pricing: add a Monthly/Annual billing toggle. Set a "Premium annual price ID" in Settings (a yearly price you create in Paddle) and the pricing table shows a Monthly/Annual switch that flips the Premium price ($6.99/mo ↔ $67/yr, save 20%) and opens the matching Paddle checkout. Hidden until the annual price is configured.

0.2.72

  • Fix (real cause): the plugin-license plan section renders outside .mnm-pricing, where the brand CSS variables weren't defined — so the "Buy license" buttons (and plan colors) had no purple. Scope the variables to .mnm-plugin-plans too. Buttons and colours now display.

0.2.71

  • Fix: the plugin-license "Buy license" buttons on the pricing page were invisible (a <button> needs appearance:none for its purple background to render). Now styled correctly.

0.2.70

  • Features page: the Scheduling polls icon is now the branded AUG 25 calendar mark (matching the logo), replacing the emoji.

0.2.69

  • Remove the temporary Paddle portal diagnostic (cause found: the API key needs the "customer portal session" permission). The "Update payment method" button now opens the Paddle customer portal, with a friendly message if it ever can't.

0.2.68

  • Temporary diagnostic: the "Update payment method" button now shows the exact Paddle response when a portal session can't be created, to pinpoint the cause. Will be removed once fixed.

0.2.67

  • Account page: show the card on file (e.g. "Visa ending 4242") and an "Update payment method" button that opens Paddle's hosted customer portal (update card, view invoices, cancel). Card + billing history now come from one cached Paddle API call.

0.2.66

  • Account page: restore the Billing history table (past charges + receipt links) for Paddle subscribers, via a new read-only Paddle API client. Cached ~5 min.

0.2.65

  • Pricing: hosted Premium repriced to $6.99/mo (was $9.99), applied to existing sites by a one-time migration (DB v14). Added the WordPress-plugin license plans — Personal $49, Business $99, Agency $199 per year — to the pricing page with Paddle buy buttons that also work for logged-out buyers (the license key is emailed to the address Paddle collects).

0.2.64

  • Licensing (Track B): meshnmeet now issues and validates its OWN WordPress-plugin license keys, replacing Lemon Squeezy's license API (Paddle has none). A Paddle purchase of a plugin product mints a seat-limited, 1-year license key and emails it to the buyer; renewals extend it, refunds disable it. The plugin activates/validates against meshnmeet.com's own license server, and plugin auto-updates are gated on it. New mnm_licenses table (DB v13). Set the plugin Paddle price IDs in Site Admin → Settings.

0.2.63

  • Payments: add Paddle Billing as the payment processor for hosted Premium (Track A). Paddle overlay checkout on the pricing page, a signature-verified webhook that grants/revokes per-user Premium, cancel/resume from the account page, and a Paddle billing card in Site Admin (Settings). Inert until Paddle keys are entered; Sandbox by default. Lemon Squeezy code remains but is superseded for hosted subscriptions. Plugin license issuance via Paddle (Track B) is next.

0.2.62

  • Poll wizard: the Step 5 participation link is now clearly labelled a preview (dashed, greyed) with no premature "Copy link" button, so organizers no longer mistake it for a live link and share it before pressing "Create poll." The real, copyable share link stays on the final confirmation screen.

0.2.61

  • Sign-in rate limiting now counts only FAILED attempts and resets after a successful login, so normal sign-ins no longer risk a "too many attempts" lockout. Brute-force protection (15 failed attempts per 15 minutes per IP) is unchanged.

0.2.60

  • Removed the temporary sign-in diagnostic from 0.2.59.

0.2.59

  • Temporary diagnostic: the branded sign-in now appends the exact authentication failure reason to the error message, to pin down a login that's rejected despite correct credentials. Will be removed once resolved.

0.2.58

  • Fix: signing in with your email on the branded sign-in page now reliably resolves to your account and authenticates (some email sign-ins were being rejected even with the correct password). Username sign-in continues to work.

0.2.57

  • Fix: password-reset emails now link to the branded /reset-password page instead of the default WordPress login (wp-login.php). Applies to resets started anywhere, including WordPress's own "Lost your password?"; on customer plugin sites without that page, WordPress's default is kept.

0.2.56

  • Tweak: a bit more spacing between the radio button and the option text on single-choice polls (1.1rem to 1.75rem).

0.2.55

  • Tweak: more spacing between the radio button and the option text on single-choice polls.

0.2.54

  • Fix: on single-choice polls, the option's radio button now appears before the option text (left-aligned) instead of after it.

0.2.53

  • New Step-3 poll option: "One vote per email address." When on, each voter enters their email and can vote only once — a second vote from the same address is blocked. No account required; voters can still use their edit link to change their response. (Existing sites upgrade automatically — no data lost.)
  • Fix (hosted app only): stopped the WordPress admin toolbar from adding a stray vertical scrollbar on short pages. Applies only on meshnmeet.com, never on customer plugin sites.

0.2.52

  • Fix: on the Account settings page, the "Hide the Powered by meshnmeet badge" checkbox no longer stretches full-width and misaligns — it now sits inline to the left of its label.

0.2.51

  • My polls: trashed polls now have a "Delete" button (next to Restore) that permanently removes the poll after a confirmation modal — this cannot be undone.
  • My polls: you can now "Archive" a live poll and "Restore" it later. Archived polls are inactive (hidden from participants, no voting) and are kept indefinitely — they're never auto-deleted like trashed polls are.

0.2.50

  • The WordPress admin toolbar is now hidden from regular signed-in account holders (customers/participants) on the front end; site administrators still see it.

0.2.49

  • Payments: each charge now has a "View in Lemon Squeezy" deep link (opens the subscription in your dashboard, where refunds are issued). Failed charges get a "Send reminder" button that emails the customer a branded "update your billing" note from meshnmeet.
  • Moderation is now live. Participants can report a poll from its page (with an optional reason); reports are aggregated per poll and auto-escalated once a poll passes 3 reports. The Moderation queue lists real reports and its actions work — Take down (trash the poll), Suspend account (the owner; never staff), and Dismiss.

0.2.48

  • Site Admin → Payments is now fed by Lemon Squeezy: each successful (and failed/refunded) subscription charge is recorded from the billing webhook and listed here. Replaced the leftover "EDD store" wording across the admin (Payments, Licenses, Analytics) with Lemon Squeezy.

0.2.47

  • Fix: the "Sign in" prompts on the create-a-poll, dashboard, account, and get-the-plugin pages now go to the branded /sign-in/ page (and return you to where you were afterward), instead of the default WordPress wp-login.php screen.

0.2.46

  • Removed the animated illustrations from the Features page, restoring the clean icon + text layout.

0.2.45

  • Features page: added a "How it works" strip — six small, looping illustrations of the core flows (find the best date, live results, single/multiple choice, invite your list, embed on a site, and open-the-link voting). Pure CSS, self-hosted (no video), and hidden automatically for visitors who prefer reduced motion.

0.2.44

  • Optional error monitoring via Sentry. Bundles the Sentry PHP SDK and adds a "Sentry DSN" field under Site Admin → Settings — paste your project DSN to turn on automatic capture of errors and stack traces (errors only; no performance tracing). Off by default and a no-op until a DSN is set; you can instead define MESHNMEET_SENTRY_DSN in wp-config.php for a more secure option.

0.2.43

  • Fix: corrected the release timestamps so the "What's new" page shows the real time of each release in your local time zone. (Times are stored in UTC and converted to each viewer's zone; earlier entries had placeholder times.)

0.2.42

  • Pricing comparison: every feature row now has a "?" tooltip that explains, in plain language, what the feature does — matching the wizard's tooltip style and quick hover speed. Works on hover and keyboard focus.

0.2.41

  • Expanded the FAQ with answers on free-plan poll limits, private/anonymous polls, collecting extra info at vote, embedding a poll, changing a vote after submitting, per-option capacity & waitlists, and exporting results.
  • Help Center: added how-to articles for single vs. multiple choice, capacity limits & waitlists, collecting extra info, participant comments, co-organizers, exporting to CSV/Excel, managing a poll after it's sent, and private/anonymous polls; refreshed the "Editing votes & results" article to cover the "Edit your response" button and admin-only vote locking. New articles appear automatically on existing sites (any you've hand-edited are left as-is).

0.2.40

  • Results export is now a single "Export results" button that opens a small menu to choose CSV or Excel (.xls), instead of two separate buttons.

0.2.39

  • Exporting results is now a Premium feature — the export buttons appear only on polls whose owner is on Premium. Added an "Export Excel" (.xls) button alongside "Export CSV", so you can open results directly in Excel, Numbers, or LibreOffice. Updated the Features and pricing pages to match.
  • Fix: the "What's new" page now shows each release date and time in your own local time zone, instead of a fixed zone.

0.2.38

  • Pricing comparison now lists the same features as the Features page, each marked as included on Free or Premium-only. Existing sites are updated automatically (no data lost).

0.2.37

  • Features page rewritten with an expanded, grouped set (Plan together · Invite & share · Control how people vote · Richer responses & teamwork) covering everything the product now does.

0.2.36

  • New Step-3 option: "Single choice (voters pick one option)". When on, participants pick just one option (radio-style); off (default) they can vote on as many as they like.

0.2.35

  • Critical fix: a missing class import made any poll with comments enabled fail to load (fatal error on the poll page / data endpoint). Polls load correctly again.

0.2.34

  • Custom poll links ("Customize your link") are now a Premium feature. Free plans get an automatic link from the poll title; the field shows as a locked Premium option and is enforced on the server. Added "Custom poll link" to the pricing comparison.

0.2.33

  • Option tooltips now appear instantly on hover (replaced the slow native browser tooltip with a custom one).
  • Added a "Copy link" button next to the participation link in the wizard's Send invitations step.

0.2.32

  • Fix: the option tooltip "?" no longer stays highlighted after you click it — it now only changes color on hover (and keyboard focus).

0.2.31

  • Two Step-3 options are now fully built: "Limit max participants per option" (set a max per date/option; extra "yes" votes go on an auto-promoting waitlist, with spots-left/full shown to voters) and "Allow participant comments" (a comment thread on the poll). Added helpful tooltips explaining every advanced option.

0.2.30

  • Disclosure + help: the FAQ now notes that free polls show a "Powered by meshnmeet" badge, and the Help Center gains an article on how to remove it (premium/license). New bundled help articles now reach already-set-up sites too, without duplicating your existing ones.

0.2.29

  • Hardened the "Powered by meshnmeet" badge against CSS hiding: visibility-critical styles are inline + !important (outranking any host stylesheet), plus a runtime guard that re-inserts the badge if it's removed from the page.

0.2.28

  • "Powered by meshnmeet" badge on free polls (plugin sites + embeds), with a link back to meshnmeet. Premium can white-label it: a site-wide toggle in Site Admin -> Settings (plugin) and a per-user toggle on the Account page (hosted). Adds "Remove meshnmeet branding" as a real premium feature on the pricing comparison.

0.2.27

  • Removed "Ad-free" from the pricing comparison and dropped its dead wizard toggle (there is no ad system, so the option did nothing). Installing this also clears the earlier "Quick voting" and "File attachments" rows from pricing.

0.2.26

  • Removed "File attachments" from the pricing comparison (it was an unbuilt feature). Installing this update also clears the earlier "Quick voting" row from pricing.

0.2.25

  • Quick voting: when on, participants vote Yes / No only (the "Maybe" option is hidden) for a faster, one-tap ballot. It's now a free poll option (Step 3), not a premium feature, and no longer appears on the pricing comparison.

0.2.23

  • Participants can now edit their own response after voting — an "Edit your response" button reopens their vote form, pre-filled. On polls with "Lock votes to admin-only editing" on, they instead see a read-only note (only admins can change votes), making that premium option take real effect.

0.2.22

  • "Request additional info at vote" is now fully built. In the wizard's premium options, define up to 5 custom questions (short text / email / number / yes-no, each optional-or-required, with quick-add presets for Email/Phone/Guests). Participants answer them when they vote; organizers see each person's answers on their results row and can Export CSV (votes + answers). Answers are stored per participant.

0.2.21

  • Manage panel now has a "Share & embed" section: the poll link, the WordPress shortcode, and an iframe embed code — each with a one-click Copy button.

0.2.20

  • Admins & co-organizers can now edit any participant's vote: each row in the results grid has an Edit button that opens that person's response (and lets you fix their name). Deleting a poll is now reserved to the poll owner — co-organizers manage everything else but can't trash it.

0.2.19

  • Co-organizers (now actually built). Add co-organizers by email in the poll wizard (step 5) and from a poll's Manage panel. They help manage the poll from their own meshnmeet account — invited-by-email people who don't have an account yet are prompted to create one, and the poll appears in their dashboard. Co-organized polls show a "Co-organizer" badge on My polls.

0.2.18

  • Trash items now show when they were trashed and their deletion date, with a "N days left" countdown (highlighted in the final week).

0.2.17

  • Trash retention: polls left in the trash are permanently deleted after 90 days, via a daily cleanup job. The dashboard's Trash section notes the policy. (Cascades to the poll's options, participants, votes, and comments.)

0.2.16

  • Forgot password / reset at sign-in. A "Forgot your password?" link and a branded /reset-password flow: request a link by email, then set a new password. Secure (single-use, expiring key; no account enumeration; rate-limited + captcha). Tested up to WordPress 7.0.

0.2.15

  • Help articles are now editable in WP admin. Adds a "Help Articles" post type and "Help Sections" taxonomy; the Help Center renders from them. Your existing articles are seeded automatically on first load so nothing is lost — edit, reorder, add, or remove them under Help Articles.

0.2.14

  • Help Center: adds a "Shortcode reference" section listing every shortcode you can place on your own WordPress pages, with examples.

0.2.13

  • Help Center + Contact support. A searchable [meshnmeet_help_center] knowledge base and a [meshnmeet_support] contact form that emails your support inbox, tagged with the sender's plan, license, and whether they're on the hosted app or the WordPress plugin. Site Admin -> Settings gains a Support email field.

0.2.12

  • Customers: click a customer to open their profile, where you moderate the account (Restrict sending / Suspend / Reinstate) and keep an ongoing notes & activity log. Cleaner list; status changes are recorded on the timeline automatically.

0.2.11

  • Site Admin -> Customers: moderate accounts. "Restrict sending" blocks a customer's outbound invitations (for poor send quality); "Suspend" is a full lockout (no sign-in, no new polls, no sending). Both are reversible, record a reason/note, and leave the customer's existing polls live. Adds customer search and an Active/Restricted/Suspended filter.

0.2.10

  • Release notes now show the date and time of each release.

0.2.9

  • Pricing page now links to the WordPress plugin download.

0.2.8

  • Account page and dashboard now show your monthly poll usage (e.g. "2 of 3 used").

0.2.7

  • "Get the plugin" page: download the plugin + a beta license key for your own WordPress site.

0.2.6

  • "What's new" page now auto-renders the changelog (no manual updates).

0.2.5

  • Release notes: bundled changelog now shows in the plugin update screen.

0.2.4

  • Beta feedback form (/feedback) with a "Send feedback" link in the beta banner.
  • Site Admin -> Settings: Feedback email field.

0.2.3

  • Beta mode: all Premium features free for everyone during the beta (one Settings toggle), with "Free during beta" pricing and a beta banner.

0.2.2

  • Full subscription panel on the account page: plan, renewal date, payment method, and billing history (from Lemon Squeezy), plus Resume.

0.2.1

  • Cancel your subscription from the account page.

0.2.0

  • Account settings page (name, email, password) and Log out.

0.1.9

  • Embed options on the confirmation step: link, WordPress shortcode, and iframe.

0.1.8

  • Premium options in the wizard now unlock for Premium users.

0.1.7

  • Premium: save and load reusable email lists in the invitations step.

0.1.6

  • Poll times shown in 12-hour format, converted to each viewer's local time zone.

0.1.5

  • New Hour / Minute / AM-PM time picker.

0.1.4

  • Trash and restore polls (soft delete).

0.1.3

  • Invite more people after a poll is sent; optional notice when new options are added; a Manage button on the dashboard.

0.1.2

  • Manage a poll after sending: rename it and add more dates/questions (votes preserved).

0.1.1

  • Lemon Squeezy billing configuration in Site Admin -> Settings.

0.1.0

  • Initial release: scheduling & opinion polls, the 6-step wizard, no-account voting + results grid, dashboard, invitations, Lemon Squeezy licensing, admin backend, and security hardening.