Saltar al contenido

Notas de versión

Qué se envió,cuándo y por qué.

Cada versión, agrupada por número. Funciones arriba, correcciones abajo, cada punto enlazado al commit que lo introdujo. Generado automáticamente desde el repositorio — sin spin de marketing, sin entradas que falten.

v1.77.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.76.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.75.1

Ver diff en GitHub

Correcciones

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

v1.75.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.73.0

Ver diff en GitHub

Funciones

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

Correcciones

  • clientnamespace persisted localStorage per activation dbdc391

v1.72.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.71.0

Ver diff en GitHub

Funciones

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

Correcciones

  • ai-enginedialogs unusable inside onboarding wizard + auto-default sole provider aafdc65
  • growthsurface Telegram rejection reason in Send-test + consistent button cf76820
  • onboardingblock Finish until complete instead of jumping to a step f861cea
  • onboardingconnect wizard personas to the shared library + prefill logo from custom_logo 4c415e0
  • onboardingFinish setup dead-ended after reload — persist validity + route to gaps d4b260b
  • onboardingmodals invisible, loader spacing, empty visual draft, step-5-submit flow bd03fde
  • onboardingpositioning/keyword AI-draft truncated — cap thinking budget, raise output cap 5155513
  • onboardingReact [#310](https://github.com/yuriy-vasilyev/structura-core/issues/310) — finishedRef useRef called after loading early return cabd532
  • onboardingwiden the wizard container on the Personas step 144dd4d
  • onboardingwizard logo stacked vertically — variant-swap classes clobbered LogoFull's flex 1811a02
  • personaskeep New/Templates buttons in the Personas page header 8b511de

Rendimiento

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

v1.70.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.69.1

Ver diff en GitHub

Correcciones

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

v1.69.0

Ver diff en GitHub

Funciones

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

v1.68.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.67.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.66.1

Ver diff en GitHub

Correcciones

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

v1.66.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.65.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.64.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.63.0

Ver diff en GitHub

Funciones

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

Correcciones

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

Reversiones

  • channels/promptsrestore original LinkedIn + X social prompts 153c87c

v1.62.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.61.1

Ver diff en GitHub

Correcciones

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

v1.61.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.60.1

Ver diff en GitHub

Correcciones

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

v1.60.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.59.0

Ver diff en GitHub

Funciones

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

Correcciones

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

Reversiones

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

v1.58.1

Ver diff en GitHub

Correcciones

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

v1.57.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.56.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.55.0

Ver diff en GitHub

Funciones

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

Correcciones

v1.54.2

Ver diff en GitHub

Correcciones

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

v1.54.1

Ver diff en GitHub

Correcciones

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

v1.54.0

Ver diff en GitHub

Funciones

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

v1.53.1

Ver diff en GitHub

Correcciones

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

v1.52.4

Ver diff en GitHub

Correcciones

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

v1.52.3

Ver diff en GitHub

Correcciones

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

v1.52.2

Ver diff en GitHub

Correcciones

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

v1.52.1

Ver diff en GitHub

Correcciones

  • channels,billingOAuth redirect_uri + launch chrome + channels load race ([#97](https://github.com/yuriy-vasilyev/structura-core/issues/97)) ee4955b

v1.51.1

Ver diff en GitHub

Correcciones

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

v1.51.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.50.1

Ver diff en GitHub

Correcciones

  • clientdrop the duplicate sync spinner on the Posts tab toolbar eceb189

v1.50.0

Ver diff en GitHub

Funciones

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

v1.49.7

Ver diff en GitHub

Correcciones

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

v1.49.6

Ver diff en GitHub

Correcciones

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

v1.49.5

Ver diff en GitHub

Correcciones

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

v1.49.4

Ver diff en GitHub

Correcciones

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

v1.49.3

Ver diff en GitHub

Correcciones

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

v1.49.2

Ver diff en GitHub

Correcciones

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

v1.49.1

Ver diff en GitHub

Correcciones

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

v1.49.0

Ver diff en GitHub

Funciones

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

v1.47.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.46.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.44.1

Ver diff en GitHub

Correcciones

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

v1.44.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.43.1

Ver diff en GitHub

Correcciones

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

v1.43.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.41.0

Ver diff en GitHub

Funciones

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

Correcciones

  • clienttype the had_prior_activation bootstrap flag on StructuraConfig 3229ecd

v1.40.1

Ver diff en GitHub

Correcciones

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

v1.40.0

Ver diff en GitHub

Funciones

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

Correcciones

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

Rendimiento

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

v1.39.1

Ver diff en GitHub

Rendimiento

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

v1.39.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.37.0

Ver diff en GitHub

Funciones

  • functions,webPhase 3.7 Pass C — workspace rename 8c656a9
  • functions,webPhase 3.7 Pass D — workspace ownership transfer 2dd2cf2
  • functions,webPhase 3.7 Pass E — multi-workspace switcher 6656fbe

v1.36.0

Ver diff en GitHub

Funciones

  • client,functionsPhase 3.7 — wp-admin "this site is part of workspace X" c14509e
  • client,plugincycle-quota site-wide banner + delete legacy Campaign_Repository 359f94e
  • clientPhase 4.4b — wp-admin Cycle Usage widget 86e1845
  • functionsPhase 3.4 — hoist personas to workspace root 4dcc0f2
  • functionsPhase 3.4 — hoist visualSettings to workspace root 2134bfa
  • functionsPhase 4.1 — per-tier × audience quota config 096c18a
  • functionsPhase 4.2 — per-generation usage metering + nightly rollup 4405e39
  • functionsPhase 4.3 — Stripe metered overage reporting cron a0f3111
  • functionsPhase 4.3a — metered prices + Stripe Meters in the catalog f26a959
  • functionsPhase 4.4a — cycle usage view + getUsageAnalytics extension 963aa1a
  • plugin,functionsPhase 1.0h — retire AS image chain across both surfaces 7e8bef5

Correcciones

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

v1.35.0

Ver diff en GitHub

Funciones

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

v1.34.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.33.2

Ver diff en GitHub

Correcciones

  • functionsmount BYOK_MASTER_KEY on every function that resolves BYOK keys 7f9b3d0

v1.33.1

Ver diff en GitHub

Correcciones

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

v1.33.0

Ver diff en GitHub

Funciones

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

v1.32.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.31.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.30.0

Ver diff en GitHub

Funciones

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

v1.29.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.26.0

Ver diff en GitHub

Funciones

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

Correcciones

v1.25.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.23.0

Ver diff en GitHub

Funciones

  • add resend for sending emails 78d81b0
  • cloud pre-generation pipeline 87e7caa
  • cloud pre-generation pipeline, part 2 31ff5c7
  • docsadd missing languages support da4d48b
  • docsadd sitemap.xml and robots.txt for indexability 0205708
  • pluginadd stock logic ab97fd9
  • pluginmove image generation to cloud + buckets 81057e3

v1.22.0

Ver diff en GitHub

Funciones

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

Correcciones

v1.20.0

Ver diff en GitHub

Funciones

  • functions,plugin,clientprogress-stream — CampaignRun writer, status API, drawer UI 82d95f9
  • functions,webadmin-log-triage — incidents store, listIncidents endpoint, /admin/incidents dashboard 9c7f25a
  • plugin,clientplugin-quiet-mode — Debug_Mode gate, Dashboard widget, legacy Logs surfaces retired 3738e9d
  • pluginadd campaign runs d9594bc
  • wwwadd favicon from LogoIcon mark 1bff0ec
  • wwwadd support page 06943dd
  • wwwsharded sitemap, blog taxonomy, and post-page polish 6d90afb
  • wwwsupport form with mail + rate limiting 16f0746

Correcciones

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

v1.19.0

Ver diff en GitHub

Funciones

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

Correcciones

  • pluginstop serializing $campaign through Action Scheduler args 68d2897

v1.18.0

Ver diff en GitHub

Funciones

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

Correcciones

  • functionspreserve serverTimestamp sentinel in generations writer e69423b

v1.17.0

Ver diff en GitHub

Funciones

  • clientlocalize enum labels and default disclosure text 10b1c43

Correcciones

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

v1.16.0

Ver diff en GitHub

Funciones

  • channelssurface activation-domain mismatch as a global advisory 18c86ce

Correcciones

  • channels and agency tier appearance 617d14f
  • pluginremove citation prop 7adf5ba

v1.15.0

Ver diff en GitHub

Funciones

  • aiextract brand palette and route logo images through multimodal Gemini 4bcbc8a

Correcciones

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

v1.14.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.13.0

Ver diff en GitHub

Funciones

  • add comparison pages 8916ac0
  • plugin,wwwmark FAQ + HowTo sections for headless extraction 00159e6
  • wwwadd /vs/koala-ai comparison page (EN) 3d5c3ac
  • wwwadd auto-generated /changelog page from release-please CHANGELOG.md 6964ddf
  • wwwadd reusable FaqSection + HowTo JSON-LD schema 8a4127e
  • wwwport persona switcher demo to /features 10ff6d1
  • wwwrestore SEO protocol and approach comparison composites on /features 191b89f

Correcciones

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

v1.12.2

Ver diff en GitHub

Correcciones

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

v1.12.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.11.0

Ver diff en GitHub

Funciones

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

Correcciones

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

v1.10.0

Ver diff en GitHub

Funciones

  • channelsadd X (Twitter) integration 1bb71b6

Correcciones

  • channelswire OAuth client secrets into integration registry 6704fb4

v1.9.0

Ver diff en GitHub

Funciones

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

v1.8.0

Ver diff en GitHub

Funciones

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

Correcciones

  • licensesrepair checkActivationLimits cron (spec §11.5.4) ea0d0a0

v1.0.12

Ver diff en GitHub

Correcciones

  • merge release workflows to fix GITHUB_TOKEN trigger limitation eff7711
Changelog — Structura