Changelog
Release Notes
Every feature, every improvement, every fix since v1.0.0.
Page 8 of 20 — 576 releases, newest first.
A/B Tests: Even Variant Split on 32-bit PHP
Fixed
- A/B Tests now split traffic evenly on 32-bit PHP builds too. The visitor-bucketing hash could turn negative on 32-bit, which would have pushed almost everyone onto the first variant and skewed the results; the hash is now masked to stay non-negative on every platform. No effect on 64-bit hosting (the common case), where the split was already even.
New Plugin: A/B Tests
Added
- A/B Tests — find out which headline or call-to-action actually works instead of guessing. Create an experiment with two or more variants, drop the [ab id=N] shortcode into any post or page, and each visitor is shown one variant — the same one every time they return, chosen without a cookie so it just works. A link to /ab/go?e=N records a conversion for that visitor's variant and forwards them to your goal page. The admin shows impressions, conversions and conversion rate side by side, highlights the leader with a 🏆, and warns while the sample is still too small to trust. Weights let you send more traffic to a variant, and pausing an experiment freezes the numbers while still showing the winning version to readers. Lightweight by design: cookieless bucketing and aggregate counters, so no per-click table piles up. Activate it under Plugins.
New Plugin: Audience (CRM)
Added
- Audience (CRM) — a lightweight CRM that unifies the contacts you already collect into one place. It gathers your newsletter subscribers, Form Builder leads, Digital Downloads buyers and approved commenters into a single audience keyed by e-mail: someone who subscribed, filled a form and bought a download shows up as one contact with all three sources, not three scattered rows. Search by name or e-mail, filter by source or by your own tags, and open any contact to see a full activity timeline across every channel. Add tags to build segments (vip, prospect, customer…) and a private note per contact, then export the filtered list to CSV for your mail tool. One click rebuilds the audience from your live data, and it always keeps the tags and notes you added. Activate it under Plugins.
New Plugin: Editorial Calendar
Added
- Editorial Calendar — plan your content pipeline with a kanban board (Idea → Draft → Review → Ready) and a month calendar. Assign posts to authors, set due dates, and add editorial notes. Moving a card to Review flips the post to “pending”; the other stages keep it a draft, and publishing still happens in the editor — so nothing goes live by accident. The calendar places published and scheduled posts on their publish date and planned drafts on their due date, giving you a clear month-at-a-glance of what’s coming. Multi-author teams get a shared view of who’s working on what and when it’s due. Activate it under Plugins.
New Plugin: Web Push Notifications
Added
- Web Push Notifications — let visitors opt in to browser notifications and reach them even after they leave your site. When you publish a new post, every subscriber gets a native notification that reopens the article — bringing readers back for repeat visits. Includes a subscriber count and a one-click test broadcast. Fully self-hosted: standard VAPID authentication and RFC 8291 payload encryption in pure PHP, no third-party push service and no per-message fees. Only trusted push endpoints are accepted, dead subscriptions are pruned automatically, and the private key is encrypted at rest. Works on HTTPS sites (and localhost); the visitor grants permission in their browser. Activate it under Plugins and turn on “notify on new post”.
New Plugin: Digital Downloads
Added
- Digital Downloads — sell or give away digital files (ebooks, printables, templates, courses). Embed a product anywhere with the [download id=N] shortcode. Free products act as e-mail-gated lead magnets: the visitor enters an e-mail and instantly gets a secure download link (also e-mailed). Paid products create an order you fulfil however you like — bank transfer / havale or any method — then one click marks it paid and e-mails the buyer their link. Files are stored in a web-blocked folder and served only through single-use tokenized links with a per-order download limit and expiry, so they can’t be shared or hotlinked. Uploads of executable file types are refused. Activate it under Plugins; set your payment instructions on its page.
Smarter Search: Relevance-Ranked Results
Improved
- Site search now ranks results by relevance instead of just date. It uses the database full-text index (which existed but was unused) so the best matches surface first — a term in the title outranks the same term buried in the body — and partial words match too (searching “brew” finds “brewing”). Very short queries automatically fall back to the previous substring search, so nothing is lost. Turkish content and multi-word queries are handled correctly.
New Plugin: Form Builder
Added
- Form Builder — build unlimited custom forms (contact, lead-gen, surveys, quote requests) with a visual field editor. Ten field types (text, email, phone, URL, number, textarea, dropdown, radio, checkbox, date), each optional or required. Embed any form anywhere with the [form id=N] shortcode, collect submissions in a built-in viewer, and get e-mail notifications on new entries. Protected out of the box with a honeypot, CSRF, rate limiting, minimum-submit-time and spam filtering; all stored values are safely escaped. Activate it under Plugins.
Fixed
- Shortcodes such as [form id=5] or [quiz id=3] could leak as raw text into a page’s meta description and social-share (Open Graph) snippet. They are now stripped from the description, so search results and shared links read cleanly.
Core Cleanup: Removed Unused Legacy Modules
Improved
- Removed several unused code modules left over from earlier versions — a dead front-end controller, a duplicate image-optimizer class (the feature runs from a different code path and is unaffected), an unused string helper, a duplicate support-ticket class, two unused cache helpers, an unused query builder, and three already-disabled one-time scripts. This trims the codebase with no change to how the site behaves; every page and feature was re-verified afterward.
Backup System Hardening: View-Safe Restore, Memory-Safe Dumps, Reliable Scheduling
Improved
- Database dumps are now streamed to disk instead of being assembled entirely in memory, so backups no longer risk running out of memory on busy sites with large analytics or log tables.
- Scheduled daily backups are more reliable on low-traffic sites: instead of only firing in a single exact hour (which a quiet site could miss entirely), the backup now runs at the first opportunity from the chosen hour onward, still once per day.
- Old pre-restore safety backups are now cleaned up on the same retention schedule as automatic backups, so they no longer accumulate and fill disk space over time.
Fixed
- Restoring a backup could fail completely on databases that contain a SQL view: the dump treated the view as an ordinary table and the restore aborted partway. Backups now handle views correctly, so a restore runs cleanly from start to finish.
- Restoring a large backup could run out of time and stop halfway, leaving the database partly restored. The restore now lifts the same time and memory limits the backup step already used, and if a specific statement ever fails it reports exactly which one instead of a cryptic error.
Comments & Newsletter Deep Audit: Closed-Post Guard, Accurate Counts, New Notification E-mails
Added
- Optional comment notification e-mails: get an e-mail when a new comment arrives (including ones awaiting moderation), and let commenters know when someone replies to them. Both are off by default and configurable under Settings → Discussion.
Fixed
- Comments could still be posted to an article whose comments were closed: the theme hid the form, but the endpoint did not enforce it, so a direct submission slipped through. Closing comments on a post now truly rejects new submissions.
- The comment counter shown on posts could drift out of sync when comments were approved, unapproved, spammed, or deleted from the admin — the number is now recomputed from the approved comments on every change, so structured-data and listings stay correct.
- The newsletter signup box on the Lifestyle theme never worked — the form pointed at a blocked internal path and returned a silent error. It now uses the correct subscription endpoint and confirms properly.
Fixed a Setting Collision: Comments, Newsletter & Spam “Enabled” Are Now Independent
Fixed
- Three separate features — comments, the newsletter, and the spam filter — were all storing their on/off state under the same internal “enabled” name, so they secretly shared a single database row. Turning one off could silently turn the others off too: disabling the newsletter, for example, could make comments disappear from your site. Each feature now uses its own dedicated setting, so their switches are fully independent. Existing sites are migrated automatically, keeping whatever state they were last showing — no action needed.
General Settings Audit: “Posts Per Page” Now Actually Works
Fixed
- Settings → Reading → Posts Per Page was a dead knob on most themes: changing it did nothing to the category, tag, author, search and archive listings, because those theme templates read a hard-coded constant instead of your setting. The value you pick now drives pagination on all of them, with the constant kept only as a fallback. Every observable general setting was re-verified live: analytics snippets (GA4, GTM, Meta Pixel, AdSense), the cookie-consent banner, custom header/body/footer scripts, SEO verification tags, JSON-LD publisher data, the RSS full-content switch, robots crawler blocking, page-cache headers and maintenance mode all apply correctly.
Plugin Deep Audit: License Gate, Quiz Fix, and Two 500s Closed
Fixed
- The Quiz plugin created no database tables when activated — it looked for a migration file that was never shipped, so every quiz admin page failed with a server error and the plugin was effectively dead on arrival. Its full schema is now built into the plugin itself; activating it (or simply loading a site where it was activated) creates the tables and heals existing broken installs on the next visit.
- Two endpoints returned a server error when reached over the web: the legacy contact-form submit shim and the newsletter weekly-digest web-cron. Both re-declared a core constant (and the digest re-loaded the whole framework a second time) when invoked through the site router. Both now run cleanly — the contact shim rejects a missing security token with a proper 403, and the digest cron enforces its secret key with a 403 before doing any work.
- Hardened the plugin authorization boundary. Plugins are a paid-tier feature: the loader now verifies the licence on every request, so plugin availability always matches the active licence tier — while never restricting a paid site whose token has not yet refreshed.
Preview Bar on the Site + Live Preview in the Customizer
Added
- While you preview a theme, the site itself now pins a small dark bar to the bottom of every page: it names the theme being previewed, reminds you that only you can see it, and carries two links — activate this theme, or close the preview — so you decide right where you are looking, without returning to the panel. Visitors never see the bar; it exists only in your admin session, and preview pages are never written to the shared page cache.
- The theme customizer gained a live preview pane: your site sits in a small window next to the settings, and color, size and font fields repaint it the instant you change them — before saving. Fields that feed several style variables at once update all of them together; the remaining settings show after you save, and the pane can be refreshed or popped into a new tab. The whole appearance layer was re-verified on all 13 themes after these additions: 272 checks, all green.
Theme Preview Now Actually Previews — Plus Two Appearance Fixes
Fixed
- Theme preview was a dead switch: the admin banner said preview mode was active, but nothing on the frontend ever read the flag, so the site kept rendering the active theme. The preview now genuinely applies to your own browser session — you browse the whole site in the candidate theme while visitors keep seeing the live one, then either activate it or close the preview.
- Switching themes could fail with a bare "database error" on customized sites: every activation stored a rollback backup that embedded the previous backup inside itself, so the record snowballed with each switch until it exceeded the database packet limit. The backup now stores only what rollback actually needs, a failed backup can no longer block the activation itself, and per-theme customizations are untouched as before.
- Saving the footer builder could return a silent server error when the payload lacked the logo-type field, losing the save. The whole appearance layer was then re-verified end to end on all 13 themes with a real admin session — activation, preview, rollback, customizer save, footer save, header logo and page rendering: 136 checks, all green.
Trends Theme No Longer Crops In-Content Images
Fixed
- The Trends theme forced every in-content image into a fixed 1.45:1 frame and cover-cropped it to fit — a 16:9 image lost a wide strip on both sides, so infographics went out with their titles and edge elements cut off. The image looked correct in the editor and broken only on the published page, which made the cause hard to spot. Content images now keep their own aspect ratio at full width; covers, cards and hero areas keep their designed framing. The other thirteen themes were audited for the same pattern and are unaffected.
n8n Templates: Live End-to-End Tested, Image Bug Fixed, Flow Slimmed
Fixed
- The queue templates were run live end to end — from a real queue task through research, writing, three image generations, media upload and publishing — and that run caught a real bug: the current image model returns JPEG while the templates named the files .png, so the site rejected every upload as a type mismatch and articles went out without their in-content images and cover. The templates now derive the file extension from the actual image type the model returns, so the images land no matter what format the model produces. After the fix the full live run passed end to end: article published with its cover and both in-content images in place.
- Both queue workflows were slimmed down: a pointless 2-second wait and a decorative dead-end node were removed, so the canvas shows only steps that actually do something.
n8n Templates Upgraded to the Current Gemini Generation
Fixed
- The n8n templates shipped pointing at the previous Gemini generation, and the researched template's writer even defaulted to a model Google no longer offers to newly created API keys — a fresh key failed with a not-found error at the content-writer step on the very first run. All three templates now use the current generation the CMS itself uses: gemini-3.6-flash for writing, research and SEO, and gemini-3.1-flash-image for image generation. Every model was verified live against a plain free-tier key, including the Google Search research step.
- Token budgets in the templates were adjusted for the new generation's thinking behaviour: current models spend part of the output budget on reasoning, so the tight limits on the SEO and image-vetting steps could have returned empty answers. Already-imported workflows are fixed by re-downloading the template, or by updating the model names in its Settings node.
A Direct Path from the n8n Box to Creating an API Key
Fixed
- The n8n box on the Content Panel shows the webhook URL and the templates, but the page where you create the site API key those requests need had no link pointing to it from there — on some plans it was effectively unreachable. The box now says it plainly under the webhook URL: requests need a site API key, with a direct "Create API Key" link.
n8n Templates Live in Exactly One Place
n8n Templates Right Where the Queue Lives
n8n Templates Now Live Inside Settings > API & Automation
The Automation (n8n) Page Is Now in the Menu
Fixed
- The page that holds your site API keys, webhook URLs and the new n8n templates was practically unreachable: its only link lived inside Content Studio, so on plans without that screen the page existed but nothing pointed to it. It now has its own "Automation (n8n)" entry in the admin menu under System, and the Settings > API & Automation tab opens with a clear pointer to it. The page title now says what it is: Automation (n8n) & API Keys.
Ready-Made n8n Workflow Templates
Added
- The API Keys page now offers three downloadable n8n workflow templates, so full content automation no longer starts from a blank canvas: an RSS Content Factory (collects fresh feed items, lets AI pick the best candidate, de-duplicates against your published posts, vets the source image and rewrites everything into an original post), a Content Queue Persona Writer (pulls tasks from your site's content queue, writes in a configurable author voice while producing SEO data in parallel, generates an AI cover and publishes), and a Researched Production template (genuinely researches the topic via Google Search first, writes strictly from the verified data under anti-hallucination rules, and produces a cover plus two in-content images in distinct art styles).
- Every template is configured in one single place: an "Ayarlar" (Settings) node at the start of the workflow holds your site URL, your site API key and your AI keys. No n8n credentials to set up for the queue templates, nothing scattered across nodes — and if you run a template before filling it in, it stops with a clear message telling you exactly what to do. The templates ship with no secrets inside; sticky notes in the canvas explain setup and how each stage works.
Match Images No Longer Skips Your Pinterest Pin
Fixed
- Some AI models echo the file-naming contract back inside the article JSON — a plain file name like "slug-pinterest" in an image field. The importer stored that name as if it were the image's address, so the Pinterest slot looked already filled: Match Images refused to touch a "filled" slot and the pin you uploaded to the temp folder was never picked up, with no error anywhere. A bare file name is no longer treated as an address at import, and the matcher now recognizes such leftover values as unmatched — so previously imported articles heal themselves the next time you press Match Images.
- The same phantom value also inflated the matched/total badge in the queue, made prompt export skip the article as "already done", and could reach the published post as a broken image. All of these paths now check for a real image address before counting a slot as matched.
Update Downloads Now Work on Hardened Hosting
Fixed
- On hosting accounts where the PHP setting allow_url_fopen is switched off — a common security hardening on shared hosting — the panel could find a new version but then fail with a download error. The update check had already been moved to the more capable cURL transport, but the actual package download (and the signed-manifest verification in front of it) was still using the old method, so the very same host that could see the update could not fetch it. Every network step of the update chain now uses the same cURL-first transport, so checking, verifying and downloading all work on the same hosts.
- When a download does fail, the panel no longer says only "failed to download": the message now carries the underlying transport reason (for example the exact cURL error or HTTP status), so support can diagnose the host from a screenshot instead of guessing.
In-Content Image Count Now Means What It Says
Fixed
- The Content Wizard asked for the number of in-content images but quietly counted the cover as one of them: picking 2 delivered a cover plus only 1 in-content image. The count now means exactly what the label says — every article always gets its cover plan, and the number you pick is how many in-content images are planned on top of it. Both creation paths (your own AI and in-app generation), the copied prompt and the downloadable sample template all follow the same rule, and picking 0 now yields a clean cover-only plan instead of no images at all.
- The requested in-content image count is now capped at the article's section count, because each image goes under a different heading — previously an extreme request could instruct the AI to place more images than the article had sections.
Batch Image Production: Prompt Export and a ChatGPT Automation Tool
Added
- Premium plans now solve the hardest part of importing content at scale: the images. A hundred articles easily mean three hundred image prompts, and producing those by hand is not realistic. The Content Queue (and the wizard's image-prompts card) now offers two new buttons: one downloads every pending image prompt as a single JSON file, the other downloads a small automation tool (Windows and macOS). Feed the JSON to the tool and it generates the images one by one in your own ChatGPT Plus account, saves each file under the exact name Match Images expects, stops by itself when your daily quota runs out and resumes where it left off the next day. A step-by-step setup guide for both operating systems is included in the ZIP; requirements (ChatGPT Plus, Python, Chrome) are stated up front.
- The image window of every queue item now shows, next to each prompt, the exact file name the image must be saved under — cover, in-content and Pinterest slots each get their name spelled out, so there is nothing left to guess before pressing Match Images.
Fixed
- The Content Wizard told you to save in-content images as slug-2.jpg — a name the image matcher never recognized, so files saved that way were silently ignored and the posts went out without their in-content images. The matcher's real contract is slug-img02.jpg, and the wizard now shows exactly that.
The Package Upload Box Is Now Always Visible
Fixed
- Manual package upload only appeared after a failed update check, so on a site where the check worked there was no way to find it at all. It is now a section of its own on the Updates screen and always available — whether you need it because the update server cannot be reached, or simply because you want to apply a particular package by hand.
Go live today
Setup, content management, SEO and image optimization — all in one platform. Get started in 30 minutes.
View Pricing- Setup and live in 30 minutes
- 14 ready-made themes
- AVIF/WebP image optimization
- Automatic SEO — Sitemap, Schema.org
- Cookieless built-in analytics (ZeroTrack)