Aller au contenu

Notes de version

Ce qui a été livré,quand et pourquoi.

Chaque version, groupée par numéro. Fonctionnalités en haut, correctifs en bas, chaque point lié au commit qui l'a introduit. Généré automatiquement depuis le dépôt — aucun spin marketing, aucune entrée manquante.

v2.24.0

Fonctionnalités

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

Correctifs

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

v2.23.0

Fonctionnalités

  • 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

Correctifs

  • 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

Fonctionnalités

  • 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

Correctifs

  • 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

Annulations

  • wwwremove LaunchKiwi footer badge
  • wwwremove ToolFame footer badge

v2.21.0

Fonctionnalités

  • 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

Correctifs

  • 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

Fonctionnalités

  • 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

Correctifs

  • 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

Fonctionnalités

  • 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

Fonctionnalités

  • 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

Correctifs

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

v2.17.0

Fonctionnalités

  • 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

Correctifs

  • 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.

Fonctionnalités

  • 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

Correctifs

  • 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

Divers

  • pin next release to 2.16.0
  • videoretire the Shotstack renderer

v2.15.0

Fonctionnalités

  • 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

Correctifs

  • 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

v2.14.1

Correctifs

  • none-tierwp.org "none"-tier UX fixes across wizard, diagnostics, and run screen
  • schedulerresolve webhook signing secret by workspace for "none" installs

v2.14.0

Fonctionnalités

  • campaignsshow posts created vs published on the campaign view

v2.13.0

Fonctionnalités

  • billingbundle Channels into all paid tiers + pricing-restructure spec
  • billingcollapse catalog to 3 graduated tiers (agency merge)
  • billingone-ladder pricing UI + regenerated catalog (Slice 2C)
  • billingretire audience gating — seats derive from site quantity
  • billingretire standalone Channels SKU, bundle into every paid plan
  • channelsdiscoverable multi-connection UX for LinkedIn (portal)
  • channelsmake the per-connection publish cooldown env-tunable
  • channelsportal post Channels tab — View post link + throttle display
  • channelspre-emptively gate the video Regenerate button
  • channelswp-admin LinkedIn connect radio choice (portal parity)
  • channelswrite an audit tombstone when a connection is deleted
  • functionsfoundingSeats endpoint for the live scarcity counter
  • wwwadd Video to the channels page, badged "New"
  • wwwFounding-Customer offer on the pricing page
  • wwwlive founding seat counter
  • wwwshow the Founding offer on the ad landing pages

Correctifs

  • channelsclassify rate_limited as a skip, not a delivery failure
  • channelsgate video Regenerate on an active connection + quota
  • channelshide Notification language on publish-only channels
  • channelskey dispatch results by connectionId, not integrationId
  • channelsLinkedIn featured images — read bytes binary-safe, not as text
  • channelsLinkedIn Page picker — versioned organizationAcls contract
  • channelsreconcile LinkedIn Page names against a workspace cache
  • channelswait for LinkedIn image to be AVAILABLE before posting
  • referral-linksgate the referral-links editor to paid tiers
  • schedulercount posts published after manual review
  • workspacesrestore COLLECTION index on invitations.email
  • wwwfounding pricing page — design QA

v2.12.0

Fonctionnalités

  • functions,web,clientclient referral/affiliate links woven into relevant posts
  • webAI "Suggest competitors" on the site profile + subtitle fix

v2.11.0

Fonctionnalités

  • client,pluginvideo styling moves onto the visual preset (wp-admin surfaces)
  • clientper-platform caption packages on the video Ready row
  • clientRegenerate on ready videos behind a quota confirmation
  • clientVideo channel UI in wp-admin — premium store card, config modal, activity lifecycle, quota, gates
  • discoverylocalize explicit topic seeds + thin-pool augmentation
  • functions,typesStripe price-metadata video entitlement + per-site video quota
  • functions,websuper-admin "Regenerate (sandbox)" via Shotstack's free stage env
  • functions'your video is ready' owner email (en/de/es/fr)
  • functionsallowedActivationIds on the workspace member model
  • functionsbackfill channel adapt bodyText from generations store
  • functionscaption placement + palette accents in the video EDL
  • functionsconfigurable Shotstack environment (stage sandbox vs v1)
  • functionsdisconnected flag on cycle rows + discount on billing overview
  • functionsfan headless posts out to channels
  • functionsfan out channels when a review post is manually published
  • functionsfirst-render feedback batch — useful scripts, safe captions, brand mood, persona voice, real filenames, run milestone
  • functionsjoin video jobs into channelsListEvents + video category
  • functionskaraoke captions — word-synced chunks + SRT sidecar
  • functionslive video quota snapshot for the meter UI
  • functionsmake the video channel credential-installable
  • functionsmember access-change notification emails
  • functionsmode:'video' usage metering + cloud_pro quota gate
  • functionsmotion-graphics video assembly — branded cards, numbered step headlines, pipeline seam
  • functionsopen the Video channel in the store (drop comingSoon)
  • functionspage ops on permanent video render failures
  • functionsper-platform social paste packages for the Video channel
  • functionsprefer preset.videoArtDirection in the video adapt art-direction resolver
  • functionsrunVideoSynthesis worker + video channel wiring
  • functionsship boundVisualPreset digest on channelsListConnections
  • functionsShotstack EDL builder for the video channel
  • functionssite-access endpoint + restricted activation listing
  • functionsstock-served headless posts get channels dispatch + owner email + persona stamp
  • functionssuppress owner-signup artifacts for invite-driven signups
  • functionsthread invite-time site scope through invite → accept
  • functionsTTS, Pexels, and Shotstack clients for video synthesis
  • functionsvideo job metadata for the activity UI + kinetic preset
  • functionsvideo retry/regenerate endpoint (bearer + portal)
  • functionsvideo synthesis orchestrator
  • functionsvideo worker resolves style/placement/accent from the bound visual preset
  • functionsvideo-ready email deep-links to the post view Channels tab
  • functionsvideo-script prompt template, parser, adapt-fn factory
  • functionsVideoIntegration (adapt→script, publish→enqueue)
  • functionsvisual suggest pass also drafts videoArtDirection + extracts brand palette
  • functionsvoice personas + video connection settings wire fields
  • functionsworkspace-aware headless gate for operate-on-site endpoints
  • getHeadlessAccess honors workspace-aware gating for the post editor
  • rulesscope activation reads to the member's allowedActivationIds
  • typesadd video styling fields to VisualPreset (packages/types + functions twin)
  • uishared VideoChannelGlyph mark (9:16 frame + play wedge)
  • uiTabs size=xs + stretch — in-card platform switcher variant
  • uivideo-channel primitives — ProgressBar, QuotaMeter, MediaLightbox, PresetRadioCard, Badge dot, Select adornment
  • uivideo-visuals primitives — VideoStylePreview, PlacementRadio, SectionGateTeaser, PaletteSwatches
  • web,clientCaptions (.srt) download on ready videos
  • web,uiportal single-post detail view per design handoff
  • webbilling display modes — unmetered usage, renewal variants, site states
  • webbrand-derived preset swatches + site-named default presets
  • webmove video styling into Visuals — preset editor #video section, slimmed channel dialog, wizard row
  • webper-doc site subscriptions for restricted members
  • webper-platform caption packages on the video Ready card
  • webRegenerate on ready videos behind a quota confirmation
  • webrestructure site Channels page into Store/Connections/Activity tabs
  • webrestyle Channel Store to the board's uniform card grid + local channel glyphs
  • website access controls on the Members page and invite dialog
  • webVideo channel UI in the customer portal (store, config, activity, quota)

Correctifs

  • adminresolve firebase-admin via functions/node_modules in voice-sample script
  • clientconnection-row video meta reads the bound preset's style, not the frozen legacy field
  • clientdefer the Visuals video-section highlight out of the deep-link effect
  • clientmake the Ready video thumbnail a Preview button opening the lightbox
  • clientshow loading state on single stock-post discard confirm
  • discoveryrewrite-tolerant re-rank guard + collapse retry
  • e2eboot portal e2e with committed .env.test firebase config
  • functions,pluginprevent auto-mode category sprawl
  • functionsblank-line paragraph gaps in the Shorts description package
  • functionsdark outline on white video captions for bright footage
  • functionsgate portal stock reads on campaigns.read
  • functionsheadless site names in usage rows + unmetered flag on cycle view
  • functionslet the video styling fields through every visual-preset allowlist
  • functionsscrim captions (Shotstack drops text-shadow) + video fields on the portal preset list
  • functionssnug inline caption scrim + Montserrat font registration + darker pill
  • uipreview thumbs show the scrim pill the render actually produces
  • web,clientclarify voice previews are English-only samples
  • web,functionscorrect public post URLs + persona provenance in the post view
  • webcampaign Posts tab + run detail link to the post view, not the editor
  • webcaption package as full-width row below hero media + clickable video thumbnails
  • webdefault body images ON for portal-created campaigns
  • webgetInitials survives partial pre-provisioning user profiles
  • webkeep disconnected sites out of the site-access pickers
  • webresolve persona names from the workspace library on run + post views
  • webstop Finish setup crashing with React #185 after the draft clears
  • webwizard Persona step scopes to site membership + seeds a tailored voice
  • www,e2efix pricing FAQ invalid dt/dd nesting (hydration crash) + make portal e2e self-seed
  • www,web,uimake Cloud most popular, catalog-drive all prices, fix plan/model/provider copy

v2.10.2

Correctifs

  • aimanaged tiers own the model server-side; alert on batch image failures

v2.10.1

Correctifs

  • campaignsdefault core/code block off for new portal campaigns

v2.10.0

Fonctionnalités

  • aimake Gemini Flash Image the recommended default; seed-tooling fixes
  • discoverytune keyword bank for blog reach; hide difficulty selector

Correctifs

  • aistop heading keyword-stuffing + never inject unverified authority URLs
  • campaignstolerate object-shaped authorityDomains in cluster adapter
  • headlessscope internal-link suggestions to the campaign language

v2.9.0

Fonctionnalités

  • campaignsmake competitors a site-level fact only

v2.8.0

Fonctionnalités

  • campaignclearer discovery actions — "Re-discover" (fresh) vs "Find more" (append)
  • converttell users on the Done step that campaigns came over paused
  • deliverypull fallback when the webhook push is blocked
  • discoverybuyer-intent keyword seeds, winnability filter, clear-on-language
  • discoverykeyword difficulty modes (winnable / balanced / authority)
  • discoveryper-language positioning for multilingual campaigns
  • discoverywebsite-grounded seeds, diversity, and precision filters
  • growthlet users request an unshipped content language from the campaign builder
  • headless-editoreditable publish date + status-change confirmations
  • migratefix in-body internal links after WP→headless import
  • migratevision-derived image alt + scene topic for imported posts
  • migrationshandle unsupported source language on import
  • onboardingcapture the full service range in AI positioning
  • permalinkmake %year% and %category% tokens actually resolve
  • postsadd Published-date column; drop redundant title hover-underline
  • profileinline-editable positioning with AI re-suggest in settings
  • profilemove headless site identity from Settings to the profile
  • visual-suggestground image-style on homepage screenshot, demote logo
  • wwwserve the blog from the headless API (cursor pagination, no search)

Correctifs

  • campaign-viewuse favicons for authority domains (not letter monograms)
  • campaignscoerce keywordBank entries to strings (no more [object Object])
  • campaignshonor campaign language across all discovery explorations
  • convertcarry WP persona bindings (subcollection) onto headless site
  • convertmake the delete-confirm checkbox checkable on the Done step
  • convertpreserve campaign pregenerationEnabled (don't force it off)
  • wwwallow the headless media bucket in next/image remotePatterns

v2.7.0

Fonctionnalités

  • convertoptional source WP app password → authenticated import
  • seoAI strategy suggest on single post + tighter SEO Targeting UI
  • seoescalate a missing SERPER key to an incident instead of silent decay
  • seoportal AI "Generate post strategy" on the single-post page
  • webadd "Generate now" to the portal Stock tab's empty state (plugin parity)

Correctifs

  • stockcoerce object keyword-bank entries to strings before research
  • stockmount SERPER + JINA secrets on the stock-generation functions
  • stockreap FROZEN pending entries in the cleanup cron

v2.6.0

Fonctionnalités

  • functionsground campaign keyword discovery in activation positioning
  • growthserver-side Google Ads OCI for signup + purchase (magic-link fix)
  • migratecapture protected SEO meta via new plugin endpoint
  • schedulerreject host-intercepted webhook responses (no phantom publish)
  • seoground per-post focus keyphrase in real DFS long-tails
  • seoground single-post generation in a real keyphrase + authority
  • uishare DiscoverableChipList + add EmptyState across surfaces
  • webcollapse campaign create/edit into the redesign's Discovery step
  • webDiscovery "Replace" — guarded discard-and-rediscover
  • webedit campaign as one scrollable form + sticky section-nav
  • webEditor/Edit polish — section icon headers + consolidated Discovery
  • webInterview pass — match the create prototype
  • webList card "in stock" chip — reuse existing stock-summary hook
  • webList filters + loading skeleton + View output-progress bar
  • webLOW cosmetic batch — paused hint, mode check, neutral tile, recent×3
  • webpersist the grounded long-tail pool when discovering campaign keywords
  • webprototype polish — keyword volume arrows + Strategy validity dots
  • webprototype polish — SEO live-data pill, tier pills, stepper gating, delete side-effects
  • webrebuild campaign List card to the prototype; drop "dark-first" doctrine
  • webStrategy progressive disclosure + shared Collapsible primitive
  • webView/Delete polish — mode tile, SEO row, competitor chips, dup toast
  • webwire site-runs into List cards — needs-attention pill + live-run strip

Correctifs

  • campaignsforward authorityDomains through campaignDocToCluster
  • campaignsnormalize legacy object-shaped keyword/authority arrays in edit form
  • campaignstopic interview step shows AI seeds only, not bank keywords
  • convertcorrect Review previews — personas count, provider logos, keywords, switch
  • convertschemeless source siteUrl 400'd the move; calmer convert step
  • editorauto-size + soft-wrap the code block
  • growthkeep recordAttribution bound to GROWTH_EVENT_SECRETS
  • growthretry OCI uploads + never permanently lose a signup conversion
  • headlesshonor postStatus on stock-served posts + diversify authority links
  • headlessstrip keyphrase-bolding the model emits despite the prompt
  • migratestrip stray <code> wrapper from imported code blocks
  • portalcount posts-this-week from workspace-rooted runs
  • seoAI-relevance-filter the long-tail pool, not just token-match
  • seofilter long-tail pool to genuine variations of bank keywords
  • seostop the monthly keyword refresh from drifting the bank off-topic
  • webmove campaign filter/needs-attention keys into the campaigns namespace
  • webno auto-discovery on the campaign edit screen
  • webrefetch the raw campaign doc after edit so the view isn't stale

v2.5.0

Fonctionnalités

  • clientdisable campaign image toggles when uploads dir is unwritable
  • pluginwarn + guide when the uploads dir blocks image saves
  • surface plugin image-sideload failures as "completed with warnings"

Correctifs

  • generatehonor post status on single-post gen; never surprise-publish
  • pluginan image sideload failure must not destroy the post
  • uicenter the logo + give the page a dark-mode background

v2.4.0

Fonctionnalités

  • conversionWP→headless site conversion backend (preview + start)
  • convert"Move to Headless" wizard (portal frontend)
  • headlessadd a distinct "draft" post status
  • migratere-polish imported posts + richer html-to-blocks parse
  • opsdaily reconciliation cron for paid-but-unprovisioned accounts
  • opspage ops on billing-webhook + signup-provisioning failures
  • sitesDrafts tab + DRAFT badge + 3-way editor status control
  • sitesre-polish action for imported posts + open imports in editor
  • webBetter Stack error tracking (Sentry SDK) + copyable error block
  • webpage-level error boundary so a page failure degrades in-shell

Correctifs

  • authoritybroaden per-post authority search beyond top-3 domains
  • billingdon't 500 the overview when the invoice list 403s
  • growthsupport gbraid/wbraid in Google Ads OCI + bump sunset API version
  • headlessrespect campaign "Publish immediately" on delivery
  • signupkey provisioning idempotency on the license, not the user doc
  • uifull-viewport height on AppLoader splash screen

v2.3.0

Fonctionnalités

  • headlessemail the site owner when a new draft is ready to review
  • sitestop-right "Re-discover" button in campaign discovery steps
  • supportsend the ticket submitter a branded confirmation email

Correctifs

  • billingredirect checkout to the hosted session url
  • billingstop expanding past Stripe's 4-level limit in overview
  • headlessresolve %lang% permalink token so URLs/redirects don't emit a literal
  • headlesssupply internal-link candidates to stock-generated posts
  • seo-intelground campaign keyword re-rank on the objective
  • sitesraise discovery callable client timeout (deadline-exceeded)

v2.2.1

Correctifs

  • connectredirect into new site after WordPress connect celebration
  • onboardingdrop "What does your site do?" from the wp-admin wizard
  • workspaceshide retired/merged workspaces from listMyWorkspaces

v2.2.0

Fonctionnalités

  • onboardingper-site persona membership in the wp-admin wizard
  • personasbearer-auth membership endpoints for the plugin wizard
  • pluginpersona membership REST routes + envelope for the wizard

Correctifs

  • onboardingSEO auto-draft retry + manual competitor suggest
  • plugin/wizard/state returns a quiet fresh state when license-less
  • portalredirect to Sites when a site route resolves to a deleted site

v2.1.0

Fonctionnalités

  • keywordsshow real DFS monthly search volume on keyword chips
  • onboardingauto-add DFS-measured competitors in the wizard SEO step
  • plugin"permanently delete all data" checkbox in the disconnect dialog
  • portal"permanently delete all data" checkbox in the removal dialog
  • portalkeep AI-guessed competitors as suggestions in onboarding SEO step
  • workspaceshard-purge path for site removal (+ last-site teardown)

Correctifs

  • campaigns/sitepoll next-run, human model names, no auto-discover
  • clientgraceful recovery in the error boundary for a stale connection
  • i18nre-merge + complete de/de_AT/es/fr translations after wizard rebuild
  • seostop interstitial pages poisoning keyword/positioning discovery
  • usagescope the wp-admin cycle-usage widget to the current site

v2.0.0

⚠ BREAKING CHANGES

  • pluginremove site-level keywords + authorities (now campaign-scoped)
  • webremove site-level keywords + authorities (now campaign-scoped)

Fonctionnalités

  • campaignscampaign-level competitor augmentation (language-aware)
  • channelsmanage channels from the portal for non-WP surfaces
  • competitorsthread campaign language through the plugin suggestion path
  • keywordsdrive gap analysis from the campaign's competitor list
  • migratemigrate a WordPress blog into a headless site
  • onboardingadd the image-medium switcher to the wizard Visuals step
  • onboardingseed a site-specific persona even in a populated workspace
  • plugincampaign Competitors step + campaign-scoped persistence
  • pluginremove site-level keywords + authorities (now campaign-scoped)
  • seo-intelDFS-first multi-seed keyword discovery with smart-model re-rank
  • setupland SEO step prefilled, drop redundant step-1 description
  • webcampaign Competitors step (portal) — language-aware augmentation
  • webremove site-level keywords + authorities (now campaign-scoped)

Correctifs

  • ai-enginekeep workspace-key rows single-line for long site names
  • authmagic-link deliverability + signup inbox recovery UX
  • authpolish magic-link "check inbox" panel
  • diagnosticsmake "Run a connection check" actually run the check
  • onboardinglocalize wizard AI drafts + decode entity in key picker
  • runsscope the "Recent generations" widget to the current site
  • siteskeleton the positioning editor while it loads
  • taxonomystop feeding the default category to the model; nudge it to create

v1.89.0

Fonctionnalités

  • channels/linkedinbrand-voice prompt variant for company Page posts

Correctifs

  • channels/linkedinhide unreachable "Personal profile" target on org connections
  • channels/linkedinpopulate company-Page picker via versioned org-ACL read
  • channelsauto-open Configure modal after OAuth connect (hash params)

v1.88.0

Fonctionnalités

  • personasper-site persona membership + in-site rotation; v6 portal Personas/Visuals
  • plugin,weball-tier Bridge Diagnostics + cloud-unreachable warning
  • pluginfold image medium into the Suggest dropdown (wp-admin parity)
  • pluginimage-medium picker on the wp-admin Visuals page
  • portalposts list — thumbnails, click-to-edit rows, three-dot menu
  • visualsfold image medium into a "Suggest image style" dropdown (portal)
  • visualsimage-medium picker + photography-first art direction
  • webauto-suggest authority domains on the Site profile tab

Correctifs

  • ailink validator — HEAD is advisory, confirm dead with GET
  • ainever let the model invent outbound links — homepages or none
  • headlessrepair fabricated internal links + resolve headless public URL
  • schedulerlink-validate against the real site host, not the UUID
  • stockrun link validation in the batch path (was bypassed)
  • suggestionsroute portal visual/persona suggest through the shared getSuggestionBlueprint
  • visualscursor + hover affordance on the image-medium cards
  • visualsricher per-medium art-direction prompts + exact-hex palette
  • webdrop spurious _many plural keys from es/fr locales

v1.87.0

Fonctionnalités

  • headlessbidirectional cursor pagination for read API
  • seocomplete JSON-LD graph on plugin render + dedupe www schema
  • sitesdocument `before` cursor param on the Delivery API page
  • wwwadd competitor comparison pages for neuroflash, mindverse, neuronwriter, zimmwriter, writesonic

Correctifs

  • headlessadd ascending publishedAt indexes for backward paging

v1.86.0

Fonctionnalités

  • headlessper-language delivery blogs
  • headlessregenerate post images with AI
  • headlessrestore trashed posts to their pre-trash status
  • headlesstrash, restore, and permanently delete posts
  • webinline text formatting toolbar + create link
  • webreal top-bar overflow (3-dot) menu
  • webresponsive headless editor layout

Correctifs

  • headlessbind image-gen secrets to regenerateHeadlessImage
  • stockcompare keywordBank by keyword text, not object reference
  • webconfirmations, inline popup errors, status tabs, format polish

v1.85.0

Fonctionnalités

  • headlessFAQ/HowTo JSON-LD schema + section marker classes
  • imagespage ops on inline image-gen provider failures
  • opspage Telegram when a campaign hits the stock failure cap
  • stocksurface "pre-generation paused — provider errors" in the Stock tab
  • webcampaign edit save bar with Cancel

Correctifs

  • aiunique writing-variety seed per stock-batch post
  • headlessdeliver action_steps + FAQ as blocks; heal body image
  • headlessrender body image + caption inline in delivered posts
  • imagesdefault imageModel to a real image model + heal bad values
  • runsflag failed image steps as warnings, not green checks
  • stockforward image alt/caption/fileName/topic in served bundle
  • stockinvalidate on keyword change; refill only when buffer drains to 0
  • stockstop self-cancellations tripping the failure cap; coalesce refills; reap failed entries
  • webrender Select dropdown panels (add missing Select.Content)

v1.84.0

Fonctionnalités

  • aiper-post writing variety to kill content-farm tells
  • campaignsbring headless campaign create flow to plugin parity
  • headlessfull Gutenberg-style post editor in the portal
  • onboardingground wizard keyword suggestions in real demand + two buckets
  • onboardingrebuild portal setup wizard AI/persona/visuals steps
  • onboardingrebuild portal setup wizard as a 6-step plugin clone
  • pluginexplain intentional readability-score variance to users
  • sites'Fetch from site' favicon button
  • sitescross-campaign Posts page for headless sites
  • sitesoptional favicon for the dashboard icon + real domain in SERP preview
  • wwwcontextual AI Detector links on landing pages + blog posts
  • wwwfree in-browser AI Content Detector tool page
  • wwwlink the AI Detector from the footer Resources column
  • wwwPostHog events on footer links

Correctifs

  • campaignsUX polish on the headless campaign create flow
  • headlesseditor polish — portaled-popover styling, list editor, DnD, captions
  • headlessstop editor re-render loop and render full-screen
  • portaldefer account creation to magic-link click
  • workspaceslabel headless activations by siteName, not the raw id
  • wwwactually send the AI-detector breakdown email
  • wwwadd /ai-detector to the sitemap
  • wwwreplace AI-detector placeholders with real homepage assets
  • wwwtidy AI-detector promo spacing on blog posts
  • wwwtype the subscribe-test fetch mock so tsc passes
  • wwwuse Resend Segments API for AI-detector email capture

v1.83.0

Fonctionnalités

  • functions,webAI-guess transparency notes + pipeline fixes from live run
  • functions,webclose plugin-parity gaps — stock/run control, key testing, channels store, billing + chunk fixes
  • functions,webheadless campaign engine — full surface parity
  • functions,webheadless campaigns consume pre-generation stock
  • functions,webpersona + visual-preset CRUD in the portal
  • functions,webportal-triggered WP generation — Run now + single post
  • functions,webv3 paid billing — plan hero, cycle meters, payment method, invoices
  • functionsactivation-reminder cron, personal sender, localized greeting
  • functionscreateHeadlessSite callable (dogfood-gated)
  • functionsdurable headless image storage + upload endpoint (Tier-2 #7b)
  • functionsfeed real site context to headless generation (+ slug foundation)
  • functionsgenerate on headless — store posts instead of webhooking WP (Tier-2 #8)
  • functionshard maxSites gate on createHeadlessSite
  • functionsheadless auto-pilot scheduler backend (Tier-3 #19)
  • functionsheadless block→HTML renderer (Tier-2 #6)
  • functionsheadless categories/tags archives + pagination
  • functionsheadless editor backend + image-block rendering (Tier-3 #2a)
  • functionsheadless image normalization core (Tier-2 #7a)
  • functionsheadless read endpoint + publish action — Tier 2 complete
  • functionsheadless run-now + posts list backend (Tier-3 #1a)
  • functionsheadless surface type foundation + dogfood gate
  • functionsimport existing posts into a headless site (Tier-3 #3a)
  • functionssend a free-tier welcome email on signup
  • headlessrelease gate toggle (Firestore flag, no deploy to flip)
  • ui,webshared Stepper component — one wizard strip everywhere
  • ui,webshared zod form-validation layer — required fields highlight in place
  • web,functionsplan-tier gating for invites + AI providers; show stats for free
  • web,functionsplugin-parity campaign UX — catalog dropdowns, AI Engine, campaign tabs
  • web,functionsportal two-world redesign — site world, wizard, campaign flow
  • webblock-list editor + image paste for headless posts (Tier-3 #2b)
  • webclearer Download Plugin card — drop "Pro", add free/paid note
  • webConnect a site CTA in Overview empty state
  • webexplicit free-activation CTA on Subscription page
  • webheadless auto-pilot schedule UI — GA scheduler complete
  • webheadless integration instructions — Tier 1 complete
  • webhome attention slot — failed-run / all-paused / nothing-scheduled states
  • webimport UI for headless sites — Tier 3 complete (#3b)
  • webminimal Add-Site portal UI (dogfood-gated)
  • webmove headless site management to the Sites page
  • webone-click legacy schedule → campaign conversion
  • webper-site headless area — generate → review → publish (Tier-3 #1b)
  • webremove coming-soon surface waitlist from the Overview
  • webschedule-pulse home header — posts this week + next-post derivation
  • websurface archive + pagination routes in the headless guide
  • webv3 workspace pages redesign — keys, personas, presets, members, billing, settings, account
  • www/autoblogging landing page + /vs/machined-ai comparison
  • wwwadd missing pages
  • wwwadd Structura vs. AI Buster comparison page
  • wwwper-locale blog sources — de/es/fr blogs empty until their content campaigns launch

Correctifs

  • functions,webDFS instant_pages 404 + explicit site-name field in headless connect
  • functions,webportal runs visibility — canonical path + missing doc fields
  • functionsEmailOwnerIntegration sends from the verified Resend domain
  • releaseforce plugin .zip to download as a file (Content-Disposition)
  • uiCodeBlock preserves newlines + bounds width
  • web,functionswizard magic results survive remounts + headless identity fallback
  • webcampaign-flow grids cap at 2 columns — selects were truncating
  • websites table fidelity — tinted header band, flush accent add-row
  • websync admin Test Email template list with the server registry
  • wwwstop dropping landing pageviews — queue captures behind PostHog init, re-emit on consent grant

Annulations

  • wwwback out marketing/www files swept into c3f344955

v1.82.0

Fonctionnalités

  • clientwizard auto-suggests the whole brand layer

Correctifs

  • clientlicense gate success state + centered connect form

v1.81.0

Fonctionnalités

  • clientdefault new campaigns to pending-review post status
  • functions,plugin,clientfeed confirmed keywords + authority domains into AI suggest prompts
  • wwwsurface structural benchmarks + rankings-based internal links in marketing copy

Correctifs

  • clientscope wp-admin cycle-usage widget + quota banner to the current activation
  • functions,clientscope competitor suggestions to the analyzed site + AI prompt context
  • plugin,functions,clientcache workspace audience so the plan badge doesn't flash

v1.80.0

Fonctionnalités

  • clientplan-aware setup wizard — skip AI step on cloud, license gate first
  • plugincarry provider_count_cap + is_anonymous on the settings payload

v1.79.0

Fonctionnalités

  • aiE-E-A-T writing signals + SERP entity coverage as toggleable SEO directives
  • wwwadd Agility Writer comparison page, reorder compare links by directness

Correctifs

  • clientdefault the Code content block off for new campaigns
  • clientremove the 300ms transient frame in interview single-select
  • clientstop interview chip rows rewrapping when the checkmark appears
  • wwwgive every responsive grid an explicit grid-cols-1 base
  • wwwunstick mobile scroll lock + viewport-wide overflow on phones

v1.78.0

Fonctionnalités

  • admindebugging drill-down — site search, activation debug view, run traces
  • stockcampaign Stock tab — visibility + control over pre-generated posts
  • stockcancel frozen batches at the timeout ceiling and notify the owner

Correctifs

  • researchrestore competitor analysis, site-level authority fallback, and stock enrichment
  • webstop dark-mode login logo from stacking icon over wordmark

v1.77.0

Fonctionnalités

  • analyticsroute browser PostHog through first-party reverse proxy
  • functionslog provider-native batch state on still-pending poller ticks
  • suggestionsground campaign/topic suggestions on positioning + target keywords

Correctifs

  • aiclean up prompt-audit findings from a production system prompt
  • clientbackfill empty campaign model fields at the form-provider level
  • functionskey internal-link candidates by the activation's site URL

v1.76.0

Fonctionnalités

  • growthfire purchase milestone server-side (PostHog-only)
  • growthpersist utm_source through the funnel for partner referrals
  • wwwadd audience landing pages for individual + agency ad campaigns

Correctifs

  • onboardinghydrate visuals over a pristine stale draft + make Exit stick

v1.75.1

Correctifs

  • onboardingrestore Step 1 logo + hydrate Step 4 visuals from the bound preset

v1.75.0

Fonctionnalités

  • generationspersist the full prompt on text generation docs
  • growthdeep funnel events to PostHog, Telegram + Google Ads OCI
  • growthenrich funnel Telegram cards with name, plan, uid
  • growthreframe Overview as multi-surface activation + waitlist

Correctifs

  • contentnormalize slug/keyphrase/heading/anchors before publish
  • growthdrop undefined click ids before the attribution set
  • scope site positioning + seoIntel to the activation, not the workspace
  • stockrun the repetition guard on batch-generated posts
  • webcommit public prod env so PostHog can't drop out of a build
  • webPostHog opt-state from consent at init, not a post-load flip

v1.74.0

Fonctionnalités

  • seoAI fallback for competitors + honest 'AI-guess' notices

v1.73.0

Fonctionnalités

  • siteSave button + Add all on Keywords/Competitors/Authority editors

Correctifs

  • clientnamespace persisted localStorage per activation

v1.72.1

Correctifs

  • onboardingcorrect a test cast that broke the release build

v1.72.0

Fonctionnalités

  • campaignsshow creation date on the campaign overview
  • onboardingauto-start the wizard on every activation, including free/none
  • onboardingfree/none get real Site/AI/Visuals/Personas steps; only SEO locked; hide campaign CTA for none
  • onboardingPro-gate format encoding + optimize-on-upload in the wizard Visuals step

Correctifs

  • campaignsclose create wizard when the per-tier cap is hit on launch
  • campaignsreset margins on the launch-CTA heading + paragraph
  • sitefree tiers can restart the wizard + disabled Select now looks disabled
  • sitepad the locked-panel overlay so the lock card isn't flush

v1.71.0

Fonctionnalités

  • campaignsinherit SEO inputs from global settings; drop Competitors step
  • campaignsprominent keyword chips + prefill-from-site note
  • generationground post synthesis in brand positioning (tier-gated)
  • growthdedicated growth Telegram bot + Send-test, separate from ops alerts
  • growthGROWTH_TELEGRAM_CHAT_ID accepts a comma-separated recipient list
  • onboardinglogo→Step 1, unified magic loader, multi-persona, Step 6 CTA finish
  • onboardingrestart-wizard on Site→Settings, drop stale moved-widget, logo to top of Step 1
  • seopromote authority domains to a global workspace setting + fix dropped fields
  • sitere-run AI keyword suggestions on the Keywords tab
  • sitesurface + edit positioning on Site → Info with magic re-draft
  • sitesurface target keywords on the Keywords tab
  • stockpositioning-aware stock pre-generation (parity with live synthesis)
  • uiFileUpload drag-and-drop component; use it for the wizard logo

Correctifs

  • ai-enginedialogs unusable inside onboarding wizard + auto-default sole provider
  • growthsurface Telegram rejection reason in Send-test + consistent button
  • onboardingblock Finish until complete instead of jumping to a step
  • onboardingconnect wizard personas to the shared library + prefill logo from custom_logo
  • onboardingFinish setup dead-ended after reload — persist validity + route to gaps
  • onboardingmodals invisible, loader spacing, empty visual draft, step-5-submit flow
  • onboardingpositioning/keyword AI-draft truncated — cap thinking budget, raise output cap
  • onboardingReact #310 — finishedRef useRef called after loading early return
  • onboardingwiden the wizard container on the Personas step
  • onboardingwizard logo stacked vertically — variant-swap classes clobbered LogoFull's flex
  • personaskeep New/Templates buttons in the Personas page header

Performance

  • authoritycap Gemini thinking + tighten liveness checks to fit the sync request budget

v1.70.0

Fonctionnalités

  • 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

Correctifs

  • 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

Correctifs

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

v1.69.0

Fonctionnalités

  • 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

Fonctionnalités

  • 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

Correctifs

  • 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

Fonctionnalités

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

Correctifs

  • 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

Correctifs

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

v1.66.0

Fonctionnalités

  • 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

Correctifs

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

v1.65.0

Fonctionnalités

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

Correctifs

  • 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

Fonctionnalités

  • 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

Correctifs

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

v1.63.0

Fonctionnalités

  • 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

Correctifs

  • 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%

Annulations

  • channels/promptsrestore original LinkedIn + X social prompts

v1.62.0

Fonctionnalités

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

Correctifs

  • 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

Correctifs

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

v1.61.0

Fonctionnalités

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

Correctifs

  • 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

Correctifs

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

v1.60.0

Fonctionnalités

  • 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

Correctifs

  • 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

Fonctionnalités

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

Correctifs

  • 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

Annulations

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

v1.58.1

Correctifs

  • 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

Fonctionnalités

  • analyticswire PostHog across www, web, and plugin SPA

v1.57.0

Fonctionnalités

  • 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

Correctifs

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

v1.56.0

Fonctionnalités

  • 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

Correctifs

  • 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)

v1.55.0

Fonctionnalités

  • analyticswire Google Ads conversion tracking to consent banner
  • channelsper-connection campaign bindings + every-Nth-post cadence for OAuth

Correctifs

  • pluginstatus badge

v1.54.2

Correctifs

  • channelsforwarder reliability + honest "skipped" chip + de/es/fr i18n

v1.54.1

Correctifs

  • client/billingrebind cycle quota banner to token-based usage view

v1.54.0

Fonctionnalités

  • progressmark bypassed steps as Skipped and add a Channels tail step

v1.53.1

Correctifs

  • channels/oauthland users on the right wp-admin URL after the OAuth dance
  • channelsstop coercing nanoid campaignIds to int across the stack
  • runsstop ephemeral generate-post runs from creating phantom campaign docs

v1.53.0

Fonctionnalités

  • billingmake per-tier campaign cap a per-license Stripe field

v1.52.4

Correctifs

  • billing/catalog-synctolerate restricted keys without meter-read permission

v1.52.3

Correctifs

  • clientstabilize single-post run page and refine timeline chips
  • subscriptionscancel standalone Channels item when plan now bundles it

v1.52.2

Correctifs

  • billingrollup cron resolves planId/maxSites from the bound License
  • client,functionsaudience-aware plan labels in the wp-admin SPA
  • i18nwire audienceMissingOrInvalid in the contracts source
  • subscriptionsrequire explicit audience on Stripe plan products
  • web/billingsingle Stripe-portal funnel + audience-aware plan label

v1.52.1

Correctifs

  • channels,billingOAuth redirect_uri + launch chrome + channels load race

v1.52.0

Fonctionnalités

  • clientuse website favicons on workspace-keys provider chips

v1.51.1

Correctifs

  • clientper-row binding state on workspace keys + brand chips + reorder

v1.51.0

Fonctionnalités

  • plugin,clientcleanup + warn on disconnect, pin cross-license switch

Correctifs

  • recent-posts widget cross-campaign leak + empty textModel synthesis crash

v1.50.1

Correctifs

  • clientdrop the duplicate sync spinner on the Posts tab toolbar

v1.50.0

Fonctionnalités

  • channelsgate save+dispatch on entitlements; fix client agency conflation

v1.49.9

Correctifs

  • client,plugindrop fabricated "up to 5,000 words" claim

v1.49.8

Correctifs

  • clientmove 500-word help text below the post-length grid

v1.49.7

Correctifs

  • aidowngrade non-active licenses to anonymous tier so None→Free→None keeps working

v1.49.6

Correctifs

  • campaignshelp-text under 500-word cap + honest engine-ready gate for None/Free

v1.49.5

Correctifs

  • campaignscap postLength input + form default at 500 for None tier (matches Free)

v1.49.4

Correctifs

  • schedulerswap persona block to picked persona's fields for random campaigns

v1.49.3

Correctifs

  • schedulerresolve random persona to a workspace persona so post_author lands correctly

v1.49.2

Correctifs

  • progresslocalise milestone subtext + filter Free-tier no-op steps from timeline

v1.49.1

Correctifs

  • atomic cloud-side bump of campaign.postsPublished to close the read-then-write race

v1.49.0

Fonctionnalités

  • aicap Free post length at 500 + ban outbound links on Free/None tier
  • pluginhard-strip external `<a>` tags for non-Pro tiers in Block_Serializer

v1.48.0

Fonctionnalités

  • aistrip always-on SEO rules for anonymous (None) tier

v1.47.0

Fonctionnalités

  • campaignsmake pre-generation Pro-only on Free + fix client POT extractor
  • pricingpoint Free upgrade CTA at portal + sync feature lists across www/web/portal

Correctifs

  • client,webpolish free-tier keyword/authority teasers and route unlock intents to /billing
  • close Free-tier value leaks in meta prompts, internal-link injection, and image format
  • drop pregen rollout banner, retire cadence-sync flag gate, hide Free-tier cap warning
  • pluginmint progress runId for Free tier so Run-now lights up the strip without reload

v1.46.0

Fonctionnalités

  • ui,webtop-bar portal shell + workspace-first navigation

Correctifs

  • ui,webportal shell polish + Select dropdown + role-based nav
  • webhide Members tab + sidebar link for editors and viewers

v1.45.0

Fonctionnalités

  • client,webcontext-aware upgrade flow with wizard resume links

v1.44.1

Correctifs

  • billing,functions,clientmeter stock-served runs + retire usage_logs

v1.44.0

Fonctionnalités

  • i18ntranslate the 643 newly-extracted SPA strings (de/es/fr)

Correctifs

  • clientde-block none-tier campaigns teaser, lead with Generate Post
  • clientmake AppErrorBoundary's nav-reset opt-in
  • i18nextract SPA strings + regen .pot via TS-aware scanner

v1.43.1

Correctifs

  • clientbreak Visuals render-loop, reset error boundary on nav
  • functionswire recent titles into stock pre-gen dedup context
  • pluginlog skipped campaigns in cadence sync

v1.43.0

Fonctionnalités

  • clientuseLicense().hasWorkspace + flip 7 hook gates + AI Engine cap restrictions (Phase 1.8 PR7b)
  • functionsbootstrapAnonymousInstall endpoint + anonymous-bootstrap rate limiter (Phase 1.8 PR6)
  • functionsflip free + none tiers to BYOK-only; flatten anti-abuse cap to 100/site/mo
  • functionsPhase 1.8 foundation — Workspace + AnonymousInstall types, anonymous-aware bearer middleware, endpoint classification
  • plugin,client,functionssuppress fresh-install banners and add "Forget this site" flow
  • plugin,functionsanonymous-install bootstrap + claim flow + structuraConfig surface (Phase 1.8 PR7a)

Correctifs

  • clientgate workspace-keys + wp-users queries on license; render unlicensed teaser on Visuals
  • pre-publish polish — unblock None tier end-to-end, harden error/block paths, dashboard cleanup
  • wwwhide HeroEyebrow rule on mobile so the label aligns left

v1.42.0

Fonctionnalités

  • ui,webadd CodeBlock component and use it for the activation key

v1.41.0

Fonctionnalités

  • per-activation scoping for visual styles, personas, and AI keys
  • web,functionsportal viewers for personas + visual presets, plus binding tests

Correctifs

  • clienttype the had_prior_activation bootstrap flag on StructuraConfig

v1.40.1

Correctifs

  • clientgate Channels routes by per-site seat assignment
  • functionsstock pre-gen now uses sync prompt builder for full SEO parity
  • pluginmeta-box image regen — reset apply button + body-image new_url

v1.40.0

Fonctionnalités

  • functionsstock pre-gen failure insurance — timeout, daily cap, rich incidents

Correctifs

  • functionsre-sign stock-image URLs at consume time, not write time
  • pluginmeta-box image regen — trim loaders, support body-from-placeholder
  • pluginpersist pregeneration_enabled toggle through the validator

Performance

  • clientswap AppLoader → PageLoader on route loaders, deduplicate AI Engine settings query

v1.39.1

Performance

  • plugin,clientbootstrap settings on page load to skip first-paint roundtrip

v1.39.0

Fonctionnalités

  • clientpersist new-campaign draft across navigation
  • freeze plugin → cloud surface for wp.org submission
  • functionsPhase 4.5 follow-up — auto-attach metered overage item on subscribe
  • functionsprovider fallback for interview/suggestion calls
  • plugin,clienthumanize provider error toasts in suggestion flow

Correctifs

  • ciwporg-zip workflow — replace multi-line sed with head/tail splice
  • clientpreselect recommended model in provider setup wizard
  • clientwrap multi-pick answers as chips in interview review
  • firestoreadd COLLECTION_GROUP index override for members.userId
  • functionsroute add-on assignment funnel reads/writes through workspaces (Phase 3.3 leftover)
  • functionsroute stock refill through canonical resolver to support BYOK
  • pluginbump cloud-discovery cURL timeouts from 120s to 240s

v1.38.0

Fonctionnalités

  • functions,webPhase 4.4c — portal cycle-usage widget

v1.37.0

Fonctionnalités

  • functions,webPhase 3.7 Pass C — workspace rename
  • functions,webPhase 3.7 Pass D — workspace ownership transfer
  • functions,webPhase 3.7 Pass E — multi-workspace switcher

v1.36.0

Fonctionnalités

  • client,functionsPhase 3.7 — wp-admin "this site is part of workspace X"
  • client,plugincycle-quota site-wide banner + delete legacy Campaign_Repository
  • clientPhase 4.4b — wp-admin Cycle Usage widget
  • functionsPhase 3.4 — hoist personas to workspace root
  • functionsPhase 3.4 — hoist visualSettings to workspace root
  • functionsPhase 4.1 — per-tier × audience quota config
  • functionsPhase 4.2 — per-generation usage metering + nightly rollup
  • functionsPhase 4.3 — Stripe metered overage reporting cron
  • functionsPhase 4.3a — metered prices + Stripe Meters in the catalog
  • functionsPhase 4.4a — cycle usage view + getUsageAnalytics extension
  • plugin,functionsPhase 1.0h — retire AS image chain across both surfaces

Correctifs

  • aihonour resolver's provider override in executeCloudSuggestion
  • functionsroute campaigns store through workspaces path

v1.35.0

Fonctionnalités

  • plugin,functionscloud-only generation Phases 3-6 — retire BYOK adapters

v1.34.1

Correctifs

  • pluginregen-image modal — multi-provider picker, 60s timeout, prompt prefill
  • wwwxerx url

v1.34.0

Fonctionnalités

  • wwwadd "Why not Koala/SEOWriting AI?" sibling comparison on home
  • wwwexpose the "20+ point SEO protocol" as a real disclosure list
  • wwwGDPR/EU trust strip in footer
  • wwwoutcome-framed pricing CTAs + box SERP claim against autobloggers
  • wwwsticky mobile CTA on pricing page

Correctifs

  • aipreserve user-picked orientation for OpenAI image gen
  • functionswipe lib/ on prebuild to prevent stale orphan re-deploys
  • wwwremove brand duplication in &lt;title&gt; tags + noindex thin blog archives
  • wwwsitemap hygiene + meta description audit across 4 locales

v1.33.3

Correctifs

  • functionsmake keyword + authority discovery work end-to-end

v1.33.2

Correctifs

  • functionsmount BYOK_MASTER_KEY on every function that resolves BYOK keys

v1.33.1

Correctifs

  • clientunblock provider setup wizard's Configure step on cloud-only heartbeat
  • tests,i18nunblock CI workflows on main

v1.33.0

Fonctionnalités

  • functions,pluginforward AI key save through cloud, retire wp_options storage
  • functions,webadd workspace credential library endpoints + portal page
  • functionsactivation-scoped credential bindings + resolver rewrite

v1.32.0

Fonctionnalités

  • personas,licenses,clientauto-seed default "House voice" persona on activation

Correctifs

  • clientseed Single Post form from connected provider, not Gemini
  • personas,plugin,clientrequire author on save and stop ghost upserts

v1.31.0

Fonctionnalités

  • ai,billingcloud-only-gen Phase 2 — resolver + rate limit
  • aicloud-only-gen Phase 2 — wire resolver into text engine
  • plugin,licensescloud-only-gen Phase 3 — gated plugin cutover
  • schedulercloud-only-gen Phase 2 — image path + dispatcher catch
  • workspacescloud-only-gen Phase 1 — workspace credentials store

Correctifs

  • licenses,plugin,clientactivation cycle no longer self-deactivates

v1.30.0

Fonctionnalités

  • emails,spectier+audience in over-cap warning + retire pricing-v2 §4.5
  • workspaces,channels,pluginPhase 3.3 — UUID activation + surface discriminator
  • workspaces,permissionsPhase 3.1 + 3.2 — workspace tenant root + RBAC
  • workspaces,pluginPhase 3.5 — API tokens + Bearer auth middleware
  • workspaces,webPhase 3.7 Pass A — member role + remove
  • workspaces,webPhase 3.7 Pass B — invite-by-email + acceptance route
  • workspaces,webPhase 3.7 walking skeleton — workspace settings page
  • wwwimprove mobile menu
  • wwwrefine pricing toggle layout + recommend BYOK for agencies

v1.29.0

Fonctionnalités

  • catalog,web,i18nlock Cloud Pro Individual + BYOK Agency + Cloud Agency prices
  • functions,client,pluginper-tier campaign-count cap (BYOK abuse prevention)
  • functions,clienttier policy — auto-pause on "none" + per-tier provider gating
  • functionsPhase 1.0j — UUID-keyed activations + read-path cutover
  • pluginadd model switch when regenerating images
  • web,www,packages/ui,i18ntwo-grid pricing UI + JustThePluginSection 2-column refactor

Correctifs

  • catalogmatch products by (plan_id, audience), not plan_id alone
  • clientsilence "Active license required" toast storm on disconnected installs
  • pluginpersist authority + keyword bank to cloud campaigns

v1.28.1

Correctifs

  • pluginbody image regeneration

v1.28.0

Fonctionnalités

  • pluginadd body image regeneration feature

Correctifs

  • pluginsingle post gen
  • update indexes

v1.27.4

Correctifs

  • pluginimage generation

v1.27.3

Correctifs

  • pluginbroken endpoints
  • pluginindexnow channel verification
  • wwwlanguages

v1.27.2

Correctifs

  • pluginpersona ID

v1.27.1

Correctifs

  • pluginsingle post generation

v1.27.0

Fonctionnalités

  • pluginconnect generations and posts

v1.26.2

Correctifs

  • plugincampaign ID in post meta

v1.26.1

Correctifs

  • plugintask runner

v1.26.0

Fonctionnalités

  • suggestionadd tracing logs for request, brand content, and blueprint composition

Correctifs

  • pluginschema for stock posts
  • plugintask runner

v1.25.0

Fonctionnalités

  • pluginlink new headless-mode + IndexNow surfaces to docs.structurawp.com
  • ship IndexNow keyfile verify + headless onboarding

Correctifs

  • channelsgenerate PKCE pair on OAuth init (X login was sending empty code_challenge)

v1.24.0

Fonctionnalités

  • pluginadd side identity to settings, allow headless mode

Correctifs

  • pluginpost generation

v1.23.2

Correctifs

  • pluginscampaign auto-cancellation
  • wwwsitemap link
  • wwwsitemap link

v1.23.1

Correctifs

  • build scripts

v1.23.0

Fonctionnalités

  • add resend for sending emails
  • cloud pre-generation pipeline
  • cloud pre-generation pipeline, part 2
  • docsadd missing languages support
  • docsadd sitemap.xml and robots.txt for indexability
  • pluginadd stock logic
  • pluginmove image generation to cloud + buckets

v1.22.0

Fonctionnalités

  • move campaigns, personas and visuals to the cloud
  • pluginmigrate most of entities to cloud
  • wwwadd more json+ld schemas, add search tool
  • wwwupdate features page

Correctifs

  • docsbroken links
  • wwwadd redirect, improve 404 template
  • wwwadd visuals
  • wwwinternal links in blog posts
  • wwwtranslations, homepage visuals

v1.21.5

Correctifs

  • strip content bug

v1.21.4

Correctifs

  • add debug lines

v1.21.3

Correctifs

  • add debug lines

v1.21.2

Correctifs

  • anthropic models for managed tiers

v1.21.1

Correctifs

  • pluginsplit content insertion into 2 phases

v1.21.0

Fonctionnalités

  • pluginadd page builders support

v1.20.0

Fonctionnalités

  • functions,plugin,clientprogress-stream — CampaignRun writer, status API, drawer UI
  • functions,webadmin-log-triage — incidents store, listIncidents endpoint, /admin/incidents dashboard
  • plugin,clientplugin-quiet-mode — Debug_Mode gate, Dashboard widget, legacy Logs surfaces retired
  • pluginadd campaign runs
  • wwwadd favicon from LogoIcon mark
  • wwwadd support page
  • wwwsharded sitemap, blog taxonomy, and post-page polish
  • wwwsupport form with mail + rate limiting

Correctifs

  • wwwopen per-page locale gates so /de /es /fr render

v1.19.0

Fonctionnalités

  • docsrefactor docs
  • pluginadd Site Health probes for background-task blockers
  • wwwadd missing translations

Correctifs

  • pluginstop serializing $campaign through Action Scheduler args

v1.18.0

Fonctionnalités

  • plugin,clientdiagnose image tasks; hide debug logs by default

Correctifs

  • functionspreserve serverTimestamp sentinel in generations writer

v1.17.0

Fonctionnalités

  • clientlocalize enum labels and default disclosure text

Correctifs

  • functionsharden generations store writes
  • pluginsubstitute plan-default image provider when configured one is text-only

v1.16.0

Fonctionnalités

  • channelssurface activation-domain mismatch as a global advisory

Correctifs

  • channels and agency tier appearance
  • pluginremove citation prop

v1.15.0

Fonctionnalités

  • aiextract brand palette and route logo images through multimodal Gemini

Correctifs

  • docs links
  • image visual style
  • plugindrop data-howto-name from action-step &lt;ol&gt; to satisfy Gutenberg
  • render naked URLs as clickable anchor tags in post body
  • wwwpin @exodus/bytes &lt;1.15 to unbreak blog route on Vercel
  • wwwswap isomorphic-dompurify for sanitize-html to fix Vercel ERR_REQUIRE_ESM

v1.14.0

Fonctionnalités

  • www,uiadd blog pagination with shared Pagination component
  • wwwrestructure header/footer nav + persistent language switcher
  • wwwtheme + language switchers in footer

Correctifs

  • openai blocks schema
  • openai blocks schema
  • plugin,functionsrequire explicit text/image provider + fix OpenAI image 400
  • www,uipricing page light-mode polish + live currency in matrix
  • wwwawait params in every App Router route (Next.js 15)
  • wwwpremium cta button color on hover

v1.13.0

Fonctionnalités

  • add comparison pages
  • plugin,wwwmark FAQ + HowTo sections for headless extraction
  • wwwadd /vs/koala-ai comparison page (EN)
  • wwwadd auto-generated /changelog page from release-please CHANGELOG.md
  • wwwadd reusable FaqSection + HowTo JSON-LD schema
  • wwwport persona switcher demo to /features
  • wwwrestore SEO protocol and approach comparison composites on /features

Correctifs

  • price IDs
  • wwwtighten homepage hero scale and drop broken footer links

v1.12.3

Correctifs

  • post model and openai schema

v1.12.2

Correctifs

  • cidrop PHP 8.0 match so Patchwork can tokenize on 7.4
  • pluginre-stub get_post_meta with when() so forwarder tests see the override

v1.12.1

Correctifs

  • ciunblock release pipeline on release-please merges

v1.12.0

Fonctionnalités

  • ai,plugin,clientrestructure SEO rules into always-on tier map + HARD REQUIREMENTS band
  • docs,wwwadd branded error boundaries

Correctifs

  • clientunblock managed-tier dashboard + restore PHP-first license flow
  • docsremove Nextra i18n array to unblock runtime
  • plugin,clientpricing-v2 gaps — Agency badge + entitlement-aware Channels visibility

v1.11.0

Fonctionnalités

  • add agency tier; introduce www project
  • aiper-plan default models for managed tiers
  • billingdeclarative Stripe catalog sync tool
  • billingsynthesize bundled add-on entitlements from plan metadata
  • clientAgency tier feature gates and per-post model picker
  • uilift pricing composites to @structura/ui/pricing
  • web4-tier pricing UI with currency toggle and Agency volume strip
  • wwwbuild real homepage + pricing pages for /en
  • wwwscaffold Next.js marketing site workspace

Correctifs

  • build process
  • docsalign deps with workspace overrides so frozen install works

v1.10.0

Fonctionnalités

  • channelsadd X (Twitter) integration

Correctifs

  • channelswire OAuth client secrets into integration registry

v1.9.0

Fonctionnalités

  • channelsadd LinkedIn integration — OAuth, AI adaptation, publishing (Phase 3+4)
  • channelsadd per-campaign bindings and company page posting
  • channelsadd publishable dispatch, frequency control, and LinkedIn image posting
  • only post published posts on linkedin

v1.8.0

Fonctionnalités

  • adminadd Entitlement health dashboard panel (spec §11.7)
  • channelsadd Email, Telegram, WhatsApp integrations (Phase 7)
  • channelsadd expired-connections admin banner (Phase 7)
  • integrations store + per-add-on entitlements (Phases 1-6)

Correctifs

  • licensesrepair checkActivationLimits cron (spec §11.5.4)

v1.7.1

Correctifs

  • magic link login

v1.7.0

Fonctionnalités

  • add integrations
  • channelsscaffold Integrations Store foundation (Phase 0)
  • make email templates multilingual

Correctifs

  • integrations
  • integrations
  • typesunblock tsc -b after Phase 1 channels work
  • web app translations

v1.6.0

Fonctionnalités

  • add claude support

Correctifs

  • improve prompts

v1.5.0

Fonctionnalités

  • adjust translations

v1.4.0

Fonctionnalités

  • make disable empjis option enabled by default
  • refresh campaigns index page
  • refresh single post creation page
  • split providers

v1.3.0

Fonctionnalités

  • change create campaign flow

v1.2.2

Correctifs

  • keywords and domains discovery

v1.2.1

Correctifs

  • keywords/sources exploration language

v1.2.0

Fonctionnalités

  • add more langs, translate customer portal

v1.1.0

Fonctionnalités

  • add German (de_DE + de_AT) translations for plugin

v1.0.13

Correctifs

  • release workflows

v1.0.12

Correctifs

  • merge release workflows to fix GITHUB_TOKEN trigger limitation

v1.0.11

Correctifs

  • update lockfile after firecrawl-js removal

v1.0.10

Correctifs

  • checkout redirect for existing users
  • self-updater error