Skip to content

Release notes

What shipped,when, and why.

Every release, grouped by version. Features on top, fixes below, each bullet linked to the commit that introduced it. Generated automatically from the repository — no marketing spin, no missing entries.

v1.70.0

Features

  • onboardingpolish round — clickable stepper, favicon competitor chips, Step 6 redesign, title relocation, Continue spinner
  • onboardingW-A wizard skeleton — routes, persistence, steps 1+6
  • onboardingW-A.1 — auto-redirect, dashboard resume tile, step 1 inline edit
  • onboardingW-B — step 2 AI engine + blocking connection test
  • onboardingW-C — step 3 SEO intelligence (positioning + competitors + keywords)
  • onboardingW-D — steps 4 (Visuals) + 5 (Persona)
  • onboardingW-E — tier-change reaction + campaign-side gate
  • onboardingwizard restart endpoint + Step 6 button + ?restart=1 URL trick

Fixes

  • onboardingContinue stuck post-restart + full wordmark + centered title in header
  • onboardingcritical wizard bugs — back button, dropdowns, cache merge, finish, headings
  • onboardinghoist OnboardingPage hooks above the loading-state early return
  • onboardingportal wizard out of wp-admin chrome, mirror dark class to body
  • onboardingseven issues from in-browser test — logo, exit color, footer gap, navigation model
  • onboardinguse icon logo variant in wizard header, mono ink for dark
  • seo-intelhide numeric category IDs from Site Intelligence niche display

v1.69.1

Fixes

  • seo-intelreal DFS response shapes — categories objects, organic-footprint authority, ETV sort

v1.69.0

Features

  • seo-intelsurface analyzed URL + source so headless setups are verifiable
  • siteinteractive Competitors + Settings CRUD; vertical spacing fix; DFS payload logs
  • siteSitePanelHeader for consistent layout; auto-discover SERP competitors

v1.68.0

Features

  • aiinternal-link picker — surface workspace's ranking URLs in prompts
  • aiwire SEO intel provider into post-synthesis research + prompt
  • campaignsadd Competitors wizard step; rename 'Excluded Domains'
  • campaignsdata-source badge — Live data vs AI estimate
  • campaignspersist wizard competitor URLs to workspace; thread to keyword discovery
  • channelsroute LinkedIn org connections through a second OAuth app
  • seo-inteladd monthly refresh cron + workspace notices
  • seo-intelextend campaign + workspace schemas; add updateWorkspaceSeoSettings
  • seo-intelhourly balance watch with Telegram critical alerts
  • seo-intelimplement DataForSEO OnPage client; wire analyzeCompetitorPages end-to-end
  • seo-intelreal discoverKeywords impl with gap analysis
  • seo-intelscaffold DataForSEO provider foundation
  • seo-intelwire keyword-discovery through the provider
  • seo-intelworkspace activation hook — warm /site cache on first activate
  • siteadd /site route with 5 tabs; relocate Headless Mode toggle
  • siteAuthority tab — real backlinks-driven authority metrics
  • sitemanual analyze trigger — real DataForSEO impls + Keywords/Info tabs

Fixes

  • seo-intelbind DATAFORSEO_SECRETS to TEXT_GENERATION_SECRETS
  • seo-intelconvert dynamic imports to static (.js extension)
  • siteempty-result UX, niche fallback, real Competitors/Settings data
  • siteLockedPanel overlay overflows when preview is shorter
  • sitereset heading + paragraph margins against wp-admin globals

v1.67.0

Features

  • aiguard generated content against degenerate repetition
  • campaignswarn when BYOK image gen is on but no image model picked

Fixes

  • airesolve BYOK image model from catalog default instead of failing
  • billingdrop undefined fields in recordUsage so keyless runs record
  • clientremove double spinner from campaign Posts tab loading state

v1.66.1

Fixes

  • pluginsync WP header Version with release-please (was stuck at 1.59.0)

v1.66.0

Features

  • aisingle source of truth for language→geo, extend to ~55 languages
  • personasground Magic Suggest on the site's own voice
  • progresssurface competitor-analysis and authority research steps
  • seofallback /llms.txt that defers to Yoast/Rank Math
  • uimonochrome logo variant for colored backgrounds
  • websplit-screen login, Overview dashboard, system-pref theme
  • wwwStructura vs. Outrank comparison page
  • wwwsurface multi-channel distribution + GEO on the homepage

Fixes

  • authauthoritative isNewUser for magic-link sign_up conversion
  • wwwlink the Outrank comparison page from nav + homepage

v1.65.0

Features

  • channelsLinkedIn company-page posting
  • clientswap dashboard upgrade banner for a permanent tiered upsell card

Fixes

  • clientrestrict header Upgrade to none/free, restyle, order internal links first
  • wwwsync channels page to catalog — drop X, add Telegram/WhatsApp/Email/Webhook

v1.64.0

Features

  • channelspage ops Telegram on permanent channel-dispatch failures
  • clientadd Manage account button to the account page
  • clientmove Account & Settings into a header account menu
  • runssurface partial channel-dispatch failures on the run

Fixes

  • i18ntranslate the bare "Upgrade" string for es/fr

v1.63.0

Features

  • adminanalytics dashboard, workspace drill-down, and shell parity
  • adminmake signups KPI 'today' (viewer-local) instead of rolling 24h
  • campaignscap Free tier to one post per week
  • channels/promptstune LinkedIn + X social copy for subtle conversion
  • consentenv-gated opt-out default for US-only launch
  • noticessurface generation failures + retire in-app System Logs strings
  • personasblock campaign and single-post creation when no personas exist
  • usersworkspace-aware account deletion with guard rails
  • web/accountmake delete dialog role-aware
  • web/accountrestyle danger zone and make delete dialog descriptive

Fixes

  • channels/xdrop ungrantable media.write scope so X OAuth can connect
  • channelsstop LinkedIn truncation + strip AI-tell em-dashes
  • client/channelsstop /channels/* redirect from racing the entitlement heartbeat
  • client/licenseinvalidate entire query cache on connect/disconnect
  • plugin/licensere-seed default persona after reconnecting to a new workspace
  • progressreflect stock-served progress instead of freezing at 25%

Reverts

  • channels/promptsrestore original LinkedIn + X social prompts

v1.62.0

Features

  • adminadd "Test Telegram" button to the admin dashboard
  • opscritical-alert fan-out + stalled-run watchdog; fix campaign-step OOM

Fixes

  • functions/emailuse the friendly run-timeline copy in failure emails
  • functionsraise global HTTP timeout so long generations don't die at 5 min
  • increase memory
  • runscorrect stalled-run index scope; add image-gen timing metrics

v1.61.1

Fixes

  • client/typesJob.persona_id accepts nanoid strings (type hygiene)
  • plugin/campaignspreserve nanoid in Campaign_Shape_Transformer::normalize_persona_id

v1.61.0

Features

  • personasPhase 2b — per-activation binding becomes the canonical author-attribution path

Fixes

  • personas/pagealways render the personas grid when the editor is open
  • plugin/campaigns,cloud/typespreserve nanoid string in personaId end-to-end
  • pluginwp.org Plugin Check security pass — escape output, sanitize input
  • scheduler/plugin,types/clouddefensive sweep — preserve persona nanoids in remaining (int) casts
  • schedulerwrite the resolved nanoid persona id on generation docs

v1.60.1

Fixes

  • channels/linkedinread post URN from x-restli-id header + diagnostic logging
  • plugin/channelsforward attach_featured_image through the settings REST proxy

v1.60.0

Features

  • channelsper-connection "attach featured image" toggle (default on)
  • notices,client,pluginPhase 3a — wp-admin Notices page
  • notices,clientbell + popover, shared utils, translations, indexes
  • notices,plugin,clientPhase 3b — retire local logs surface
  • notices,plugin,clientplugin-health diagnostics button
  • notices,webportal NoticesBell
  • noticesPhase 1 — cloud-side Notification Center
  • noticesPhase 1.1b — wire remaining audit-gap error branches
  • noticesPhase 2 — portal Notice Center page

Fixes

  • channels,schedulerforce OAuth landing on #/channels/connections; stamp link_validation milestone on paid-tier always-on runs
  • hook ordering, webhook timeout, link_validation milestone, timeline rail
  • notices,webportal page theming + missing Firestore index
  • progress/timelineper-tier image-row matrix (None tier-locks both; Free tier-locks body only)

v1.59.0

Features

  • progresssplit image gen into per-slot milestones (featured + body)

Fixes

  • ai/geminidisable reasoning on schema-constrained calls + breadcrumb the image phase
  • generate-postblock sync generation when no visual preset is bound
  • progress/timelinedefault to SHOWING the images row unless explicitly disabled
  • schedulerbound webhook delivery + inline image gen with wall-clock deadlines

Reverts

  • ai/geminidrop thinkingBudget: 0 — Gemini 3.x Pro rejects it

v1.58.1

Fixes

  • channels/dispatchergive adapt 30s and degrade timeout to title-only
  • channelsmount the BYOK + provider master keys on channelsPostPublished
  • progress/timelinerescue render when currentStep was filtered out of the visible order
  • schedulergive synthesis 30 min instead of 9, log terminal completion
  • stock/text-batchgive blueprint requests 64k output to survive reasoning models

v1.58.0

Features

  • analyticswire PostHog across www, web, and plugin SPA

v1.57.0

Features

  • analyticsmigrate to GTM + emit sign_up event from new-account flows
  • pricinghide WP.org column in comparison matrix when plugin unpublished
  • wwwgate wp.org plugin surfaces behind WP_PLUGIN_PUBLISHED flag

Fixes

  • wwwmobile-friendly layouts for comparison + agency-volume tables

v1.56.0

Features

  • channels/xattach featured image to tweets via v2 media upload
  • channelsAI-adapted social commentary (first-person + hashtags) for LinkedIn & X
  • channelsenrich post-published payload + auto-pick prefixSwap on headless

Fixes

  • channels/oauthland users on the real SPA route after OAuth, not a phantom admin slug
  • channels/oauthwrite OAuth secret doc under the workspace, not the license
  • settingskill the headless+inherit contradiction end-to-end
  • stockcron refills only when buffer fully drained (matches consume trigger + spec)