Zum Inhalt springen

Release-Notes

Was ausgeliefert wurde,wann und warum.

Jedes Release, nach Version gruppiert. Features oben, Fixes darunter, jeder Punkt verlinkt auf den Commit, der ihn eingeführt hat. Automatisch aus dem Repository generiert — kein Marketing-Spin, keine fehlenden Einträge.

v2.34.0

Features

  • billingnative subscription management callables
  • channelsrecord HTTP status and latency on article deliveries
  • clientAccount page shows the real plan, usage and billing links
  • let owners edit a headless site's blog URL pattern
  • offer a post status on headless one-off runs
  • webmanage the subscription in the portal instead of Stripe's
  • webreplace the cycle usage card on Billing with a one-row strip
  • websay lifetime code instead of AppSumo and show lifetime licences as such
  • webshow the Article delivery state on builder sites' overview

Fixes

  • billingreport a change as syncing only while its confirm's expectation is unmet
  • builder-promptsinsist on every JSON-LD entry and copy the prompt unwrapped
  • functionsdefault builder sites to /blog/%postname% so delivered canonicals resolve
  • webdescribe Lovable's receiver as a route inside the site

v2.33.0

Features

  • billingcount delivered images on the cycle usage map
  • billingsell Cloud volumes as prices of one plan and stamp caps from the price
  • functionsadopt a pending WordPress space and merge a blocked claim
  • functionsguess a site's platform and record its builder
  • functionssite platform, pending WordPress spaces and the portal finish
  • toolslink the free tools' results to the new Learn pages
  • uidraw real platform and surface marks
  • uimarks for every site platform, a disabled stepper step, described-by on inputs
  • upload author photos instead of pasting a photo URL
  • webconnect a site from its address
  • webconnect the site as the last setup wizard step
  • webexplain the photo and profile page fields in the author form
  • webgive workspace authors their own page and show personas and authors as cards
  • weblicense key on the workspace home and platform status in site lists
  • webone setup wizard for every platform
  • webpick the Cloud posts-per-site volume on the pricing page
  • webproduct updates email opt-in
  • webshow the detected platform as one card, with the picker behind Change platform
  • wwwadd a format to Learn pages, a by-format strip on the hub and a fuller Learn footer column
  • wwwadd an IndexNow key file and a submit script
  • wwwcredit the post's author on blog posts and drop the API's duplicate BlogPosting
  • wwwmove the backlinks-needed post into the Learn hub
  • wwwone Cloud plan with a volume selector across the site, docs and plugin copy
  • wwwpublish 12 more Learn pages (wave 3)
  • wwwpublish 16 Learn pages and extend 12 existing ones
  • wwwpublish 18 more Learn pages (wave 2)
  • wwwtint the plan-choice band on the pricing page

Fixes

  • billingacknowledge subscription webhooks for a deleted user instead of retrying
  • docsserve sitemap.xml and robots.txt past the locale middleware
  • functionsadopt a pending WordPress space ahead of reviving a disconnected activation
  • headlessrun headlessReadPosts at 512 MiB
  • pluginnever hand the wp-admin dashboard a wizard state without a state
  • webalign onboarding copy across locales
  • weblet the site check outlast a cold start
  • webnoindex every portal route except /login and /signup for crawlers that skip JS
  • webrun Update on a live post without the publish confirmation
  • webshow the author's photo in the persona author picker and on the site persona card
  • webthe Persona step says Continue while Connect is still ahead
  • wwwleave retired blog posts out of the sitemap
  • wwwmove the footer's Learn links into a full-width band
  • wwwrun the free AI detector on its heuristics only
  • wwwstop caching a blog backend failure as a post 404

v2.32.0

Features

  • accept review notes in the WordPress editor and flag open notes in the owner email
  • credit a real author per persona per site with Person JSON-LD on every surface
  • functionsadd editor review notes to the WordPress delivery payload
  • keep authors in a workspace library and credit them per persona per site
  • pluginshow editor review notes in the Structura post meta box
  • wwwadd LetsLaunch listing badge to the footer rotator

Fixes

  • clientkeep the cloud consent gate busy until the page reloads
  • thememake the duration-fast/normal/slow/slower utilities exist
  • uidim disabled InputField, TextArea and Checkbox
  • uirequest a favicon size Google's S2 actually serves
  • webhold the shell behind the loader until workspace and role resolve
  • webshow bullets and numbers in post editor list blocks

v2.31.0

Features

  • campaignscampaigns without keywords write from the objective

Fixes

  • aikeep an OpenAI insufficient_quota 429 terminal through the engine wrapper
  • campaignsadd the scheme to WP site URLs built for portal runs
  • campaignsplugin cron runs of banked campaigns pick from the bank in the cloud

v2.30.0

Features

  • aievery own-key plan can connect all three providers
  • aiMagic suggest on every plan
  • aione image model on managed plans
  • functionsAI label on generated images
  • functionsgenerated images follow the site's image medium and show only what the brief names
  • plugina quieter Generate a Post page
  • toolstrack portal tool runs, Learn link clicks and the tool behind a signup
  • visualsimage medium cards and an AI label switch, with a reminder in the campaign form
  • wwwdraft the next three Learn pages of the authority cluster

Fixes

  • functionsreferral links to another domain are published as sponsored
  • functionstitles and headings in sentence case
  • image switches, license sync, partial preset updates and wizard medium parity
  • plugina preset update without the art direction keeps the stored text
  • pluginthe setup wizard works on anonymous installs

v2.29.0

Features

  • campaignsnew campaigns open on 1,200 words instead of 2,700
  • functionsa campaign save raises the Gemini text notice for a site without one
  • wwwthe header links to Learn instead of Blog where a Learn hub exists

Fixes

  • functionsmerge plan keeps the status of an unpublished source post
  • wwwLearn links inside posts use the default link style
  • wwwredirect the 16 blog posts merged in the 2026-10 quality audit

v2.28.0

Features

  • channelstest-send endpoint, connection verification fields, builder-prompts package, headless-only article delivery
  • deliver published articles to custom blogs
  • functions,wwwmake the DR checker a link-only, one-field check
  • functionsadmin tool to refresh a published headless post in place
  • functionsaudit with a model chosen per plan
  • functionsbatch generation mode in the evaluation harness
  • functionsevaluation harness for the post pipeline
  • functionsground posts in official sources, audit drafts and record Source check
  • functionsone AI lineup and a posts allowance for managed plans
  • functionsops alert when a site's Search Console data stops updating
  • functionsper-workspace limit on AI suggestion calls
  • functionspersona guardrails for generated personas
  • functionsrecord which free tool brought a signup
  • functionsrefresh tool can make the writing persona the post's author
  • functionsSEO tools for signed-in members on a monthly allowance
  • functionssite AI defaults that follow the best key, advice state and notice
  • model-catalogcurrent model generation, full prices and capability flags
  • model-catalogcurrent-generation text tiers for own-key plans
  • plugin"Recommended for text" label on the connected provider card
  • pluginmessage for the AI suggestion limit
  • pluginNew Campaign opens empty and drafts only on Magic suggest
  • pluginposts allowance and no AI engine details on managed plans
  • pluginprovider and model guidance for own-key plans
  • tools-uihand the per-visitor limit to the surface's card
  • tools-uiverdict chips, metric tiles and Learn links in the three reports
  • uiconnect-flow primitives — Stepper a11y, OptionCardGroup media/row, CodeBlock title, PlatformMark/Chip
  • uiprovider lists per plan, joined in the page's language
  • uiread-only mode for DiscoverableChipList
  • uirecommended label and inline advice components
  • webConnect your site flow for Article delivery
  • webfree SEO tools in the customer portal
  • webmessage for the AI suggestion limit
  • webmetric verdicts and Learn links in the portal's SEO tools
  • webposts allowance and no AI engine details on managed plans
  • webprovider and model guidance for own-key plans
  • webSource check notes in the post editor and Research on the run page
  • webtool links from www land on the running tool after sign-in
  • www,functionsadd free SEO tools (SEO checker, DR checker, keyword generator)
  • www"your next question" block on Learn pages
  • www/blog-seo-software — the selling page for the blog SEO buyer cluster
  • www/programmatic-seo and /byok — the last two pages from the GSC mismatch
  • www/wordpress-ai-writer — the plugin page for the WordPress AI writer cluster
  • www3 free checks per tool a day for each visitor
  • wwwadd LaunchNest listing badge to the footer rotator
  • wwwcredit the founder on every blog post and Learn page
  • wwwdraft the first four Learn pages of the authority cluster
  • wwwmanaged plan copy by posts allowance
  • wwwmetric verdicts on the free tool pages, Learn links gated on the hub
  • wwwpublish the first four Learn pages of the authority cluster
  • wwwresearched DE section headings, hero, and re-headed KI tool titles
  • wwwresearched EN section headings and a new hero message
  • wwwresearched ES section headings and hero
  • wwwresearched FR section headings and hero
  • wwwscaffold 12 Learn pages for the free tools' metrics
  • wwwsplit the footer into Product, Solutions and Free tools columns
  • wwwthe capacity card always offers a free account

Fixes

  • docspoint hard-coded links at locale-prefixed URLs
  • firestoredeclare the channelTestSends TTL policy in the index file
  • functions,wwwbase the DR checker's dofollow share on referring pages
  • functions,wwwlist each keyword search once in the keyword generator
  • functionsa "random" persona never draws from outside the site's persona list
  • functionsactivation keeps a workspace the customer has already set up
  • functionscount a site's live stock without an indexed filter
  • functionscount JSON-LD as structured data in the SEO checker
  • functionsheadless action steps read "Name: text" without an em-dash
  • functionsheadless delivery passes the campaign's referral links to the link repair
  • functionslink repair keeps configured referral links on the site's own origin
  • functionsonly a delivered post uses a post slot on own-key and free plans
  • functionspost titles stay within 70 characters
  • functionsretire DR link results cached before the dofollow fix
  • functionsstale stock written by an older model of the lineup's provider
  • functionsstock refill failures alert ops and the hourly tick finishes its work
  • functionsstop the prompt from inviting accusations and invented specifics
  • functionsstop two pickers from taking the same keyword
  • functionsworkspace allowance counts connected sites only
  • functionswriting rules for persona claims, keyphrase use, openers, titles and attribution
  • plugina single connected provider shows its name instead of an empty row
  • pluginaction steps read "Name: text" without an em-dash
  • pluginediting a campaign no longer resets its status or progress
  • pluginGemini needs at least a Free licence, as the cloud already requires
  • pluginMagic suggest no longer fails on PHP 7.4
  • pluginmanaged plans hide the queue's provider column and the image fallback
  • pluginnew posts and campaigns start on the best connected provider
  • pluginno provider advice or model picker until a text provider is connected
  • pluginprovider advice also shows on the New Campaign setup step
  • pluginthe provider advice says Claude
  • portal,functionsresolve plan, billing and permissions from the selected workspace
  • portalsend canonical Link headers for /login and /signup
  • rulesstop owners rewriting server-owned fields on their user doc
  • tools-uishow sub-second load times in milliseconds
  • tools-uivisual QA fixes for the verdict reports
  • uikeep unselected option cards visible on dark dialogs
  • uino divider above a first header-less combobox group
  • webbilling FAQ states the providers per plan in the user's language
  • webkeep the SEO tools reset date on one line
  • webno provider advice for a text provider with no key behind it
  • webrun inspector shows the error reference only on runs with an error
  • webthe provider advice and pickers say Claude
  • wwwalign the free-tool submit button with its input
  • wwwauthor credit polish from the visual review
  • wwwdrop the free-tools footer link that shipped ahead of its route
  • wwwfree-tool fixes from browser QA
  • wwwgive every locale its own sitemap entry with a full hreflang cluster
  • wwwhyphenate keywords in the market's language on phones
  • wwwkeep the Open Graph card text clear of its footer
  • wwwlimit card says "tomorrow" and its button wraps on small phones
  • wwwlink own pages directly instead of through redirects
  • wwwmake the hero one message instead of two sentences
  • wwwpaginate the changelog to stay under 2 MB per page
  • wwwpoint schema.org logo and image at files the site serves
  • wwwpricing and selling pages state the providers per plan
  • wwwrethrow Next's prerender signal from currency detection
  • wwwshorten the English homepage title to fit a Google result
  • wwwstop lazy-loading the theme-paired LaunchNest badge images
  • wwwwide article tables scroll inside themselves on phones

Performance

  • wwwprerender pages by rendering the document in the locale layout

v2.27.0

Features

  • uiaccept comma-separated lists in every per-item add field
  • wwwanimate the channels hero illustration
  • wwwanimate the features hero illustration
  • wwwanimate the homepage hero illustration

Fixes

  • functionsgate reference-lookup queries out of keyphrase grounding
  • functionsnever delete the workspace when purging the last site
  • pluginreplace German strings leaked into the es/fr catalogs

v2.26.0

⚠ BREAKING CHANGES

  • ai,client,web,plugin`number_in_title` is no longer a user-toggleable SEO rule. Stored values are ignored by the cloud and cleared by the script above; the `SeoRuleName` union no longer includes it. Numbers in titles are now decided per post by the cadence rotation.

Features

  • ai,client,web,pluginretire the "Number in title" toggle
  • billinggate member invites by plan tier only, drop the 3+ sites rule
  • campaign language per site and a drafted Setup step replace the interview
  • functionsforward error-level incidents to Telegram by default
  • functionspage ops on the money paths and the autonomous engines
  • functionsrank authority domains per post keyword before the site-search sweep
  • growthname the signup source on the Telegram ping
  • web,clientrun the AI refinement from a Magic suggest button, never automatically
  • webcreate a visual preset from the site Visuals page when none is bound
  • wwwadd /blog-automation — the "how does it run unattended?" page
  • wwwopt-in eyebrowAsHeading so /blog-automation inverts all 7 sections
  • wwwre-add SeekTool.ai as a neutral reciprocal link
  • wwwrotate the footer directory badges through one slot

Fixes

  • ainumbered-title suppression never fired — detector missed our own shape
  • cigive the integration emulator a dummy RESEND_API_KEY
  • clientkeep the campaign interview's answers and seeds across a revisit
  • firestoreadd the campaigns index the SEO-intel refresh cron needs
  • firestorerestore COLLECTION-scoped single-field indexes on campaigns.status
  • functionsan unbound RESEND_API_KEY must not kill the runtime
  • functionsbalance watch POSTed a GET-only endpoint, failing every tick
  • functionsbind the growth-alert secrets once on the campaign create paths
  • functionscount the monthly post cap per post, not per key resolution
  • functionsisolate the headless tick per campaign, wire the SEO-intel error rate
  • functionspage when the balance watch goes blind; retune threshold to $5
  • functionsrefresh cron never selected a never-refreshed campaign
  • functionsrefresh tick was killed at 60s and had no SERPER key
  • functionsreject "placeholder" stub blueprints and track outcomes per model
  • i18ncall the language catalogue "More languages", not "All WordPress languages"
  • web,functionsstop invited members landing on a dead workspace; owner-only billing and owner row
  • webgate campaign model pickers on the workspace's plan, not the user's own license
  • webkeep the GSC property picker inside the setup wizard; treat WebKit MIME-type errors as stale chunks
  • webkeep the license workspace when the membership callable fails
  • weblet the campaign wizard step back to Interview and forward again
  • wwwdon't lazy-load theme-paired footer badges
  • wwwdrop the SeekTool.ai pill — we were never listed there
  • wwwretarget /en/for-agencies off a term that means "hire an agency"

Chores

  • release the next version as 2.26.0, not 3.0.0

v2.25.0

Features

  • pluginname and tag the wp.org listing for the autoblogging cluster
  • pricingretire the founding offer from www and the portal, keep the Stripe code live
  • wwwadd followed SeekTool.ai footer link for the free directory listing
  • wwwdrop Learn from the header nav — footer Resources only
  • wwwlead the EN /vs/ titles with "alternative", the query that ranks
  • wwwPeerPush verification badge in the footer directory row
  • wwwsurface the Learn hub site-wide and 308 cross-locale tag/category ghosts

Fixes

  • channelsemail-owner channel actually sends — wire the mail-collection transport
  • clientGSC connect dialog title keeps its icon inline in wp-admin
  • clientwizard pre-fills saved positioning + never clobbers an untouched visual preset
  • functionsheadless run receipts finally reference their delivered post
  • functionsrestore surface-interest modules swept into 94e5f039d
  • functionsstrip leaked image-directive paragraphs from post bodies
  • headlesspost view reads the delivery-time AI model stamp
  • plugincompleted setup stays completed across the license claim
  • web,uiGSC property picker scoped to the site's domain; tall dialogs scroll
  • webadmin site-limit override goes through the adminOverrideSiteLimit callable
  • webcampaign view rendered raw key campaignView.seo.liveData

v2.24.0

Features

  • webWordPress connect flow becomes a real stepper with a verify stage

Fixes

  • pluginricher Plugins-screen row — description, action links, meta links
  • uiexplicit aria-disabled on inert Stepper chips

v2.23.0

Features

  • clientCreate Free Account CTAs on the anonymous Account & License page
  • functionsweekly cap on manual single-post generations
  • noticesSend Test Notification actually delivers a notice
  • noticesweekly single-gen cap refusals reach the Notification Center
  • proactive weekly one-off usage indicator on the Generate page
  • releasewp.org launch follow-through — www flag flip, portal wp.org zip, SVN deploy in CI
  • ui,webPromptDialog + upgrade CTAs across the free-tier portal
  • ui,webrich Pro upsell dialogs, tier-true provider pickers, Get Pro CTA
  • videoShorts title ships with hashtags, capped at YouTube's 100 chars
  • web,functionsweekly quota surface on the portal Generate page
  • www'Available on WordPress.org' badge in the footer brand column
  • wwwFAQ query cluster on the remaining ten vs pages
  • wwwquery-first titles + FAQ cluster for the Machined AI and SEOWriting vs pages
  • wwwquery-first titles for the remaining ten vs pages

Fixes

  • clientdon't seed the Generate form with a provider that has no key
  • clientexplain the license gate on the disabled New Campaign CTA
  • clienthonest escalating copy while a run waits for the site's cron
  • clientlicense gate wins the New Campaign tooltip; no engine-banner flash on cold boot
  • clientportal-side upgrades finally reach wp-admin
  • clientthe Interview step's Pro button explains itself
  • clientthe notification test button no longer masquerades as chaos tooling
  • functionsgetSingleGenQuota tolerates a license doc missing status
  • pluginclear Action Scheduler's cron event on deactivation
  • plugindrop unrelated 'xerx' wp.org handle from readme Contributors
  • pluginforward the Post Status choice onto the single-gen wire
  • pluginrename display name to StructuraWP for wp.org distinctiveness
  • uigated CTAs keep their explanatory tooltip and cursor while disabled
  • webatCampaignCap declared after the campaigns list it reads
  • webchannel tier badges respect entitlement; compact seat count in plan chip
  • webheader CTAs share one flex group instead of scattering
  • webone Add key CTA on the AI-keys page, not two
  • webportal New-campaign button respects the campaign cap
  • webthree surfaces stop disagreeing about post counts
  • webvisual-review nits on the conversion batch
  • webworkspace rename reaches the header without a manual refresh
  • www308 indexed cross-locale and WP-era blog URLs instead of 404ing

v2.22.0

Features

  • appsumocode pool, grant math, and the generator script
  • appsumoportal /redeem page + billing stacking entry
  • appsumoredeemAppsumoCode callable — validate, grant, stack
  • appsumorefund claw-back script
  • clientranked keyword bank on the wizard's Keywords step + discovery meta round-trip
  • functionsDFS Backlinks rank as domain authority + cold-start discovery mode
  • functionsexpose resolved discovery mode, KD ceiling and per-keyword variant counts
  • functionsinformational-first keyword scoring + volume-among-winnable bank order
  • functionskeyword ledger + exhaustion-aware picking + bank auto-refresh
  • functionstwo-stage duplicate-topic gate + title-shape variety
  • pluginrequire an explicit opt-in before any Structura Cloud contact
  • portalreusable login tokens for the AppSumo reviewer account
  • stockconsume-time finalize chain + persisted pickedKeyword
  • stockfallback-provider resubmission for failed image batches
  • stockpersona rotation on random campaigns + per-entry persona provenance
  • stockstock WP serve rides the shared delivery body + closes wire gaps
  • uiKeywordRow, MetricChip and KeywordBankList primitives for the ranked keyword bank
  • web,www,functionsfirst-touch attribution on sign_up + referrer-host capture
  • webkeyword-bank runway prediction + thin-bank warning in the campaign keyword step
  • webranked keyword bank on the campaign Discovery step + edit page
  • webSupport link in the portal account menu
  • www/ai-humanizer analyzer tool + detector retitled onto local head terms
  • www/ai-seo selling page for the AI SEO money cluster, all four locales
  • www/autoblogging definition block with stable anchor + DefinedTerm schema
  • www/for-developers — API-first CMS page for the headless cluster
  • www/vs/autoblogging-ai meta on the review + pricing brand queries
  • wwwAI Directories badge in the footer badge row
  • wwwauto-link blog bodies into the learn hub
  • wwwFazier #1 Product of the Day award badge in the footer
  • wwwFazier launch badge in the footer
  • wwwfollowed LaunchKiwi badge in the footer badge row
  • wwwfooter badges on their own row + SmolSaaS badge
  • wwwlearn hub — headless WordPress body + Next.js CMS comparison
  • wwwlearn hub content loader, schema builders, and auto-linker
  • wwwlearn hub routes, blocks, and the 25-term shortlist
  • wwwlearn terms — blog-seo, content-decay, generative-engine-optimization, content-hub, content-velocity
  • wwwlearn terms — evergreen-content, search-intent, ai-search-optimization, topical-authority
  • wwwlearn terms — pillar-page, content-pillars, blog-automation, content-marketing-automation
  • wwwlearn terms — seo-content-writing, content-brief, content-operations, content-pruning
  • wwwlearn terms — seo-copywriting, llm-seo, ai-visibility, content-automation
  • wwwpublish learn terms — blog-seo, content-decay, generative-engine-optimization, content-hub, content-velocity
  • wwwpublish learn terms — evergreen-content, search-intent, ai-search-optimization, topical-authority
  • wwwpublish learn terms — pillar-page, content-pillars, blog-automation, content-marketing-automation
  • wwwpublish learn terms — seo-content-writing, content-brief, content-operations, content-pruning
  • wwwpublish learn terms — seo-copywriting, llm-seo, ai-visibility, content-automation, headless-wordpress, nextjs-cms
  • wwwpublish the first two Learn terms — programmatic SEO, internal linking
  • wwwretitle home, grow-with-content, for-agencies per the Ahrefs pass
  • wwwretitle selling pages onto researched keywords, all four locales
  • wwwTAAFT featured badge in the footer badge row
  • wwwToolFame + Good AI Tools badges in the footer badge row

Fixes

  • aigive tags the reuse-first governance categories already had
  • billingsend welcome/dunning emails only on status or plan transition
  • bloga slug from another locale's corpus must 404, not render
  • channelsflip connection to expired on auth_expired publish
  • client"Campaign deleted." toast after a delete, not "archived"
  • docsdeclare @anthropic-ai/sdk + deterministic locale asset-path rewrite
  • docsthe generated-posts section link had no page to land on
  • functions150 suggestions per seed + stopword/plural-aware bank dedupe
  • functionsclose two discovery gate leaks seen on the first real run
  • functionsDFS keyword_suggestions rows were never ingested — flat item shape
  • functionsdrop hire-out / transactional keywords from blog banks instead of demoting them
  • functionslong-tail anchor splits hyphens/umlauts; bank collapses same-token-set rewordings
  • functionslong-tail keyphrase pool was starved to 0–2 entries
  • functionsmount BYOK_MASTER_KEY on portal credential endpoints
  • functionsmount BYOK_MASTER_KEY on three more BYOK-decrypting functions
  • functionsseed keyword discovery on the topic space, not buyer intent
  • i18nDE www speaks du-form everywhere — detector + contact-sales converted
  • keyword-bankalign partial-metric rows, label volumes, badge legacy live banks
  • pluginappend the Structura admin menu after Settings instead of position 25
  • pluginenqueue admin-notice scripts and styles instead of printing them inline
  • pluginescape slashes in JSON-LD output so schema data cannot close the script element
  • pluginforward per-keyword metrics from keyword discovery to the SPA
  • pricingretire the founding offer automatically when its 25 seats fill
  • scriptsxerx retitle must move metaTitle with title
  • stockpersist imageProvider on stock entries — writer dropped it since 2026-05-01
  • stocksingle-source research-stage secrets — stock cron gains DataForSEO
  • stocktrigger refills mount the research bundle too — DataForSEO gap
  • videoone render per instance — concurrency:1 on runVideoSynthesis
  • web,clientdead app.structurawp.com/pricing upsell links → real funnels
  • webcanonicalise /login and noindex all other portal routes
  • www308s for wrap-around duplicate blog posts + CMS repair script
  • wwwallow launchbuff.com to iframe the site via CSP frame-ancestors
  • wwwdecode every HTML entity in FAQ text before it reaches FAQPage JSON-LD
  • wwwdecode German and French quotation entities in FAQ text too
  • wwwdrop the changelog's GitHub commit links — the repo is private
  • wwwhreflang must name locales that actually serve the slug
  • wwwkeep learn's generateStaticParams out of the dev prerender manifest
  • wwwlearn hub — apply the Ahrefs pre-deploy validation pass
  • wwwlearn kit builds site-relative hrefs through the adapter's localePath
  • wwwlearn term titles drop the " — Structura" template suffix
  • wwwlegal-page autolinks swallowed the sentence's full stop
  • wwwLocaleSwitcher sends cross-locale blog links to the blog index
  • wwwput metadata in <head> for crawlers + canonicalize in-body links
  • wwwstrip inline issue refs from changelog bullet text
  • wwwsubmit every locale's blog posts, not just the first one's
  • wwwswap AI Directories badge variants — file names describe artwork color, not theme
  • wwwthe features comparison teaser pointed at a route we never had
  • wwwthe sitemap advertised term URLs in locales that never had them

Reverts

  • wwwremove LaunchKiwi footer badge
  • wwwremove ToolFame footer badge

v2.21.0

Features

  • aiinject attached research documents into the synthesis prompt
  • aitier picker for every BYOK-family tier, Standard default, provider gating
  • attachmentsresearch-attachment upload core — extract (PDF/DOCX/TXT/MD/HTML), store, portal callable + plugin bearer twin
  • campaignswiden the ephemeral single-post contract — content options + research attachments on the wire
  • clientResearch material section on Generate Post + attachment refs on the wire
  • headlesssurface image-rehost failures on run receipt, incidents, and ops Telegram
  • i18nAustrian and Swiss German campaign languages with variant prompt guidance
  • pluginresearch-doc upload proxy + attachments on the single-post wire
  • pricinggate the founding seat counter behind a reveal threshold
  • uiOptionCardGroup primitive — one selectable-card control for all campaign-mode grids
  • uiResearchAttachments multi-file primitive per design handoff
  • videocomma-separated Tags field on the Shorts caption package
  • websingle post generation is one full page — popup removed, full wire contract, research attachments

Fixes

  • campaignsempty keyword bank falls back to campaign name, warns, and regional geo reaches DataForSEO
  • functionspin @firebase/database-compat to 2.1.4 — 2.1.5 breaks cold starts
  • stockstop bucket lifecycle rule from deleting live stock images
  • webGSC modal wraps overflowing footers and adds a reconnect state for expired connections

v2.20.0

Features

  • aiaccept a BYOK model tier on the generation path (rollout-tolerant)
  • aiextract shared @structura/model-catalog with tier-based resolution
  • campaignspersist + thread the BYOK model tier through generation
  • clientmove GSC prompt to a dismissable dashboard banner; scroll the property picker
  • clientTop/Standard tier picker on campaign create/edit
  • clientTop/Standard tier picker on single-post-gen + create steps
  • functionsprime inputSnapshot on portal single-post runs
  • model-catalogadd live provider model-sync script
  • model-catalogbump models to live-confirmed ids
  • pluginforward model tier (top|mid) on campaign + single-gen
  • runs,webadd provider/model rows to the Run-again modal
  • runsconfirm before "Run again" with a run summary
  • runsrebuild the Run-again modal to the design handoff
  • Top/Standard tier picker for image regeneration
  • web"Run again" on the portal run receipt
  • webtier-based BYOK model picker (Top/Standard) on campaigns

Fixes

  • billingguard against a duplicate active product shadowing a plan
  • campaignsstop "Run again" crashing on a schedule-less snapshot
  • clientcorrect the wp.element JSX-runtime shim (React #130 crash)
  • clientscope the wp-admin Personas page to this site's bound voices
  • clienttier badge shows the plan only, not the retired audience suffix
  • onboardingbind seeded House voice for non-AI tiers + workspace-aware seed flag
  • onboardingdurable server-backed onboarding-dismissed flag
  • pluginself-heal a revoked anonymous bearer instead of 401-looping forever
  • runsshow draft-aware label on the single-post run header
  • webdraft-aware run receipt label for WP posts

v2.19.0

Features

  • gsccap the weekly digest length for agencies
  • gscvalue-gate the weekly digest — no email without a story
  • wwwadd Search Console differentiator to vs pages + home
  • wwwannounce Search Console analytics across the marketing site

v2.18.0

Features

  • gscdesigned connect flow — four-state modal on both surfaces
  • gscopportunity engine + URL inspection drip (slice 3 backend)
  • gscrange support + per-post table on the site overview
  • gscSearch performance page — trends, opportunity queue, post table
  • gscuncovered-query rule, impact tiers, competing titles, row sparklines
  • gscweekly search digest email — slice 4 complete
  • gscwizard connect cards + wp-admin dashboard glance card

Fixes

  • gscroute property-less connections to the Configure picker
  • headlessenforce WP-style per-site slug uniqueness at delivery

v2.17.0

Features

  • billingfounding member offer across portal, www, and seat counter
  • gscGoogle Search Console integration — connection + post performance
  • webshow translated render-stage progress on video cards
  • wwwadd /rank-higher paid-ad landing page

Fixes

  • functionscount delivered live posts in the headless terms cache
  • functionsdefault missing slug arrays in delivery term deltas
  • functionsportal run cancel no longer 500s
  • noticesrender translated copy instead of raw i18n keys
  • refuse URL-shaped input in API key fields before the live test
  • uiresolve pricing/search-perf subpaths for CommonJS consumers

v2.16.0

⚠ BREAKING CHANGES

  • videothe "assembly" video pipeline id and the Shotstack integration are removed from the cloud renderer.

Features

  • functionspublic share links for headless posts + SEO/AI provenance stamps
  • headlessrelease the Headless surface to everyone — remove the dogfood gate
  • portalreal Xerx mark + wider integration-help dialog
  • portaltrack outbound xerx.io clicks from the integration-help surfaces
  • portalXerx integration-help banner + lead dialog on the Headless surface
  • videoyear-long video retention with self-healing download links
  • web+wwwshare links live on the vanity host share.structurawp.com
  • webpost export (MD/HTML/DOCX) + Share-preview dialog for headless posts
  • wporgplugin directory listing assets — icon + banner
  • www"Works with your stack" platforms band + Content API feature card
  • wwwdrop "WordPress sites" from the Xerx builtBy credit
  • wwwfooter bottom-bar cleanup — cookies to Legal, Xerx credit
  • wwwplatform-neutral copy across EN landing pages
  • wwwport the multi-platform reposition to de/es/fr
  • wwwpublic share-preview page at /p/{token}
  • wwwrename the product descriptor to "autonomous blog engine"
  • wwwreposition homepage copy to two-paths (WordPress or Content API)
  • wwwscrub "WordPress-only" concessions from EN vs pages
  • wwwtwo-paths copy for features, pricing, and channels pages

Fixes

  • billingfree-tier weekly and monthly post caps never blocked
  • functionsmanaged AI derives from the plan, not the stored license flag
  • functionspage ops when the Serper account rejects all SERP calls
  • functionstemporal anchor in generation prompts + competitor guard on citations
  • functionstolerate trailing commas in AI blueprint JSON
  • functionstrigger-driven stock refills thread isManagedAi too
  • functionsvideo renders can no longer strand at 'rendering'
  • licensesentitlement bundle never matched WP sites — consolidate site-host normalizers
  • licensesgrace-period revokes wrote to the retired activations path, aborting every revoke
  • onboardingAI competitor suggestions survive wizard step remounts
  • plugincampaign Posts tab shows drafts — recent-blueprints queries set post_status
  • portalland invite acceptances in the invited workspace + lock member roster to owner/admin
  • web+clientmodel pickers are BYOK-only; managed campaigns store no model
  • web+docsalign portal and docs welcome with the two-paths positioning
  • webcampaign config card falls back to the provider name when no model is stored
  • webdrop stale pre-parity headless channel strings
  • webShare dialog close button + surface the active share link on the post view
  • webshow the wizard smart loader from first paint on Visuals + Persona steps
  • webwizard logo commits live at upload; suggested competitors auto-add
  • workspacesenforce the plan-tier provider gate on the plugin credential transport
  • wporg-zipclamp 'Tested up to' to major.minor
  • www+functionsshare-page identity tile prefers the square favicon over the logo
  • wwwmark Cloud as Most Popular on landing and vs pages, not BYOK
  • wwwremove false WordPress-only claims after headless GA

Chores

  • pin next release to 2.16.0
  • videoretire the Shotstack renderer

v2.15.0

Features

  • post-statusremove "pending", default to draft, and make run labels status-aware
  • videoGemini TTS voices with BYOK-aware key routing
  • videogrouped two-provider voice picker across wp-admin and portal
  • videoraise the monthly video cap 20 → 40
  • videoRemotion composition package with six-template lineup
  • videoremotion render pipeline, default renderer with Shotstack rollback
  • visualsfall back to a generic image style instead of blocking when no preset is bound

Fixes

  • none-tiergate AI-suggest to paid tiers + stop Visuals fetch when locked
  • portalwider video configure modal + scalable campaign bindings list
  • video4GiB worker + capped render concurrency after first-render OOM
  • videoaccept Remotion template ids as preset videoStyle values