Changelog

What we've shipped.

A public log of every user-visible change. New features, polish, fixes, deprecations. If it changed something you might notice, it's here.

Marketing rev

Public marketing pages: pricing, comparison, features, audience-specific landing.

Added

  • Dedicated /pricing page with monthly/annual toggle and 3-question plan-picker quiz.
  • /compare hub linking to per-competitor /vs/ pages.
  • /vs/apollo, /vs/instantly, /vs/ahrefs, /vs/semrush — honest head-to-head comparisons.
  • /features overview cataloging all 25 tools in 5 workflow groups.
  • /for/freelancers and /for/agencies audience-specific landing pages.
  • /changelog and /about for transparency + brand trust.

Improved

  • Shared MarketingHeader + MarketingFooter so brand changes are a one-file edit.
  • Footer now links to real /privacy, /terms, /case-study pages instead of static text.
Audit fixes

Broad UX/UI audit + automated merge gates against future regressions.

Improved

  • Custom ESLint rule blocks paid-API imports without checkApiCostGuard.
  • Silent-failure CI check baseline at 399 empty catches; new ones rejected.
  • Tooltip sweep across rank-tracking, link-health, tier3-directories, alliances.
  • Loading states with context labels on inbox, audits, campaigns, backlink-tracking.
  • Cost guards added to /api/email/generate and /api/follow-up/generate.

Fixed

  • Settings tabs no longer swallow API errors into generic 'Failed' toasts.
  • Deliverability poll detects 3-consecutive failures and surfaces a single toast.
  • Pipeline kanban priority dots now expose role='img' + aria-label for screen readers.
  • Pre-existing react/no-unescaped-entities lint error in cookie-consent.
Niche scanner polish

Niche scanner + search pages got a focused UX pass.

Added

  • Compact niche-picker dropdown replacing 300+ inline chips.
  • Keyword-variant retry: 'limousine' tries 'limousine service' before giving up.
  • Synthesised fit score so pre-enrichment rows still sort correctly.

Improved

  • Bulk-pitch endpoint refunds ai_pitches quota for failed pitches in a batch.
  • Niche-picker viewport-aware (max-height: min(560px, 70vh)) with sticky header/footer.
  • Hidden category chips during active search to reduce noise.

Fixed

  • Inverted Fit Score formula was ranking well-served businesses highest.
  • Active/All toggle was a one-way text link instead of a bidirectional pill.
Backlinks + campaigns

Backlink Finder consolidation; campaign daily limits raised.

Added

  • Backlinks Hub: one search → competitor links + tier-3 directories + guest posts + alliances.
  • Per-campaign Analytics tab with pacing, deliverability, reply intent.
  • Stripe failed-payment banner with one-click portal link.

Improved

  • Pro daily campaign-email limit raised 100 → 2000/mo; Max 300 → 10,000/mo.
  • Inbox replies cluster by lead instead of by mailbox.
Foundation

Cost guards, plan gates, and the first audit-driven cleanup.

Added

  • Atomic Lua-script daily $-cap for DataForSEO, Anthropic, Hunter.io, Apify.
  • Plan-aware feature flags throughout the dashboard.
  • Saved-leads pipeline with kanban + list views.

Fixed

  • Memory leak in fallback rate-limit counter under Redis outage.
  • Race condition in concurrent-request quota increment.

Spotted a bug?

Email support@freelanceleads.io and we'll get it on the list.