Changelog

Release Notes

Every feature, every improvement, every fix since v1.0.0.

Page 5 of 24 - 710 releases, newest first.

v2.121.2

Stories: a cover-only story now shows; dashboard cards softened and a fifth card added; plugin x theme matrix gate

  • Dashboard summary cards. Five compact cards instead of four large ones, in soft tints that follow the light and dark panel theme rather than saturated solid colours. The new fifth card, Content Health, shows how many posts are waiting in the refresh queue, how many trend signals fit your niche and how many posts carry a broken outbound link.
  • Plugin x theme matrix in the release gate. With every packaged plugin active, all fourteen themes must serve the home page, a post, a page and a category without a PHP error, show the story strip for a cover-only story and carry the analytics tracker. Theme-dependent extras such as the share bar are reported, not enforced.
  • A story saved with a cover image but no slides never appeared on the site. The feed skipped it silently, so "Home" could be selected and nothing showed. A cover-only story now plays its cover as a single slide, on every theme, and the story list marks it as "cover as single slide" so you know why it looks that way.
v2.121.1

Demo mode: a public demo panel refuses deletions, account, settings and install actions

  • Demo mode for showcase installations. With the JEK_DEMO_MODE constant set in the configuration, the admin panel stays fully browsable and editable, but the server refuses, for every panel user, anything a stranger could use to spoil the demo for the next visitor: deleting or trashing posts, pages, media, comments, categories, tags and menus; creating or changing users, passwords and profiles; saving settings; license, plugin, theme (except session previews), update, backup and import/export actions; bulk content tools such as encoding repair and auto-linking; and outbound tools such as link-health scans. Single-shot AI helpers keep working with a small hourly allowance per visitor. Refused page requests come back with a message; refused background requests answer 403. A banner at the top of the panel says what is off and that content resets nightly. On the public jekcms demo, combined with the nightly snapshot restore, this closes the gap a visitor used today to deactivate the demo's license.
v2.121.0

Trend Radar: rising searches next to the posts your site already answers with

  • Trend Radar (Growth menu). Every hour the site reads the day's rising searches for its country from Google Trends (no API key, no quota) and, when the Google Console plugin is connected, the queries whose impressions grew at least 50% in the last 28 days. Each search is compared word by word with your post titles, category and tag names, so the list shows what people are looking for today and whether you already have the answer: a found post, a topic that fits your niche, or noise. Related headlines from the trend are listed under each term.
  • Three exits, nothing automatic. "Refresh the post" sends the matching post to the Content Refresh queue with a "Trending" reason; "Queue a draft" drops a brief with the source headlines into the content queue for tomorrow morning so an editor writes it; "Mute" hides the term for 30 days. The radar never publishes on its own. Region follows the site language and can be overridden; the hourly scan can be switched off.
  • Content queue honours an external refresh signal. Other tools can now open a Content Refresh row for a post with their own reason (used by the radar for "Trending").
v2.120.4

Operator license lock: a showcase or demo installation can no longer be deactivated from the panel

  • A site operator can lock the license against deactivation. Setting the JEK_LICENSE_LOCK constant in the configuration (or JEK_LICENSE_LOCK=1 in the environment file) hides the Deactivate button on the License page and refuses the action if it is posted anyway; activation, verification and refresh keep working. This is meant for demo and showcase installations where visitors have panel access. On the public jekcms demo a visitor had deactivated the license, which put the demo into lockdown until it was restored; the lock closes that path.
v2.120.3

Posts published from the content queue carry an AI-use disclosure; the Pets theme no longer links to empty categories

  • A post published from the content queue can now carry its "AI usage" disclosure automatically. Until now the disclosure field in the editor's Editorial box stayed empty for every queued post, so sites that publish on a schedule had to open each post afterwards to set it. A queue item may state its own value, and a site can set a default for everything the queue publishes (no AI, AI-assisted and human-edited, AI-generated and human-reviewed, or editorially reviewed). Posts you write by hand in the editor are not affected.
  • Pets theme: the mobile menu, the footer and the 404 page listed every category, including ones with no published post yet. A visitor who tapped one landed on an empty archive. Those three places now list only categories that have at least one published post, as the desktop menu already did. Empty categories stay in the admin and fill in as posts are published.
v2.120.2

Fresh installs on Apache no longer fail with a 500 from .htaccess; support policy applied on every channel

  • Ticket support is granted by the license on every channel, not only in the customer portal. The free edition includes documentation, not tickets; a paid license includes six months of ticket support. The contact form's "Technical Support" subject and the client API now apply the same rule: a message from a sender without an active support entitlement is kept and read, but it does not open a ticket, and the sender receives an automatic reply explaining what is included and where the documentation and licenses are. Customers whose support period has ended are told how to renew.
  • The customer portal home now shows your support status. Free license: support is not included, with links to the documentation and licenses. Paid license with 30 days or fewer left: the end date and a renewal link. Ended: a renewal link and a reminder that your license, site and updates keep working.
  • A fresh installation on an Apache host (Plesk, cPanel) could answer every page with a 500 error. The shipped .htaccess began with an invisible byte-order mark; Apache read it as an unknown directive on the first line and refused the whole file, while LiteSpeed hosts silently tolerated it, so the problem had gone unnoticed since May. The .htaccess in the package and on every managed site is clean now, the installer strips the mark if an editor or FTP client adds it back, and the release check refuses any package text file that starts with one. Existing sites that already load fine are unaffected. If your fresh install shows this error, open .htaccess in your host's file manager and save it as UTF-8 without BOM, or replace it with the copy from the new package.
v2.120.1

Retired plugin no longer lingers in the menu after an update

  • On sites updated to 2.120.0 the retired Editorial Calendar could still appear in the sidebar, under a generic "Plugins" heading with its raw database name. The update package had left out the small replacement file that marks the plugin as retired, and an update only adds or overwrites files, so the old plugin stayed in place and its menu entry survived. The package now carries the replacement file, and the sidebar, the plugin list and the plugin loader each check the retired flag themselves, so a leftover database row can never surface a menu entry again. Fresh installations were never affected.
v2.120.0

One calendar instead of two: the Editorial Calendar plugin retires into Content Studio

  • The Editorial Calendar plugin has been retired. Its board only turned existing drafts into cards - it could not create anything, so on a site without drafts it was an empty screen with no obvious next step - and its month view was a weaker copy of the Content Studio calendar that also missed scheduled posts stored without a schedule timestamp. Content Studio is now the single calendar; editor approval stays where it always was, as a core setting. The plugin disappears from the menu and the plugin list on existing installs; its old address redirects to Content Studio. New installations never receive it.
  • The Content Studio calendar now places scheduled posts by whatever date they carry (schedule time, then publish time, then creation time), so posts scheduled by an import or the API no longer vanish from the month.
  • Page headers no longer wrap their description in a half-width column. Six plugin pages had pinned the intro text to 660 pixels; on pages without stat cards on the right, the text broke at the middle of the strip. The header text column now flexes across the strip on every admin page.
v2.119.0

One voice for every AI tool, a queue that tells you which posts to refresh, and an MCP server for your agents

  • Brand voice. Under Settings → API & Automation, describe your audience, tone, how you address the reader, banned words, house rules and a sample paragraph - once. Every place the AI writes now follows it: Content Studio and the wizard, the single-post generator, social captions, video scripts, the SEO analysis and the new short answers. Your banned words join the built-in AI-cliché list, so the generation self-check catches them too. Leave a field empty and it is simply not sent; switch the whole thing off and prompts are exactly as before.
  • Content Refresh, a new queue under Growth. It gathers signals that used to live in five places into one list of posts that need attention: clicks fell 30% or more in Google Console, a broken outbound link, published over 18 months ago and untouched for 12, an old year in the title, or a popular post without a short answer. Each row shows why, with a priority score, and offers Edit, Snooze for 30 days or Done. The queue rescans itself weekly; when a signal disappears the row closes on its own, and a “done” post that is edited later while the signal persists comes back. The problem a blog dies of in year two now has a to-do list.
  • MCP server. Claude Code, Claude Desktop, Cursor and any Model Context Protocol client can now connect straight to your site at /api/mcp/ with an ordinary API key. Eleven tools: site info, list/get/create/update/publish/trash posts, categories and tags, the refresh queue and the AI visibility summary. New posts are drafts until publish_post, which runs the same quality gate as the panel and returns the reasons when it refuses; authors are limited to their own posts exactly as in the REST API. The API Keys page shows the connection snippet; the docs have a full page.
  • Trust page: “How is this sustainable?” A one-time license with lifetime updates raises a fair question, so the answer is now written down: where the revenue comes from, the measurable release rhythm, no lock-in even if jekcms disappeared (WXR/Ghost/JSON export, REST and MCP access), and what we deliberately do not promise.
v2.118.0

See the AI engines reading your site: AI Visibility report, per-post short answers and an llms.txt switch

  • AI Visibility, a new report under Growth. Which AI bots crawl your site (OpenAI Search, ChatGPT-User, GPTBot, Claude Search, ClaudeBot, Perplexity, Google-Extended, Common Crawl, ByteDance, Amazon, Meta, Apple and more), how often, which pages they read, when they were last seen, and whether each one is allowed or blocked by your access policy. A daily crawl chart, a 7/30/90-day window and a top-pages table come with it. Analytics scripts never saw this traffic: bots do not run JavaScript. The log is written at the server, on cached and uncached pages alike, and kept for 90 days.
  • Visits that arrive from AI assistants. With ZeroTrack Analytics active, the report counts visitors who came from ChatGPT, Perplexity, Gemini, Copilot, Claude, Grok, Meta AI and others, shows their share of all visits and the pages they landed on. When an AI answer cites you, you now see the click-through.
  • A short answer block for every post. In the post editor’s SEO box, write a 40–70 word direct answer to the question your title asks, or press “Write with AI” to draft one from the body. It is published as a “Short answer” box at the top of the post in all 14 themes, as the schema.org abstract in your JSON-LD, and as the post’s line in llms.txt. This is the single strongest signal for answer engines to quote you rather than paraphrase you. Off switch in Settings → SEO.
  • GEO readiness list. The report tells you at a glance whether llms.txt is live, how many published posts carry a short answer and an FAQ block, and what your bot policy allows. Each row links to where you fix it.
  • llms.txt can be switched off from Settings → SEO → AI Bot Access, with live links to both files right there. Seven more AI bots (Perplexity-User, Meta fetcher, DuckDuckGo AI, You.com, Mistral, Cohere, Diffbot) joined the access policy list so what you see in the report can also be governed.
  • Honest by design. The report says plainly what cannot be measured: AI engines do not publish which source they showed for which query. jekcms does not invent a “visibility score”; it shows two things that are certain - crawl activity and real visits from AI assistants.
  • The Pets theme never showed the FAQ block. Its table-of-contents generator pre-rendered the post to collect headings and threw the result away, which consumed the one-per-post guard, so the real body came out without the FAQ. The pre-render now skips the boxes; FAQ and the new short answer render once, where they belong.
v2.117.0

A calmer admin: grouped menu, a drawer that closes on mobile, a collapsible sidebar and a search that actually searches

  • The admin menu is now grouped: Content, Growth, Appearance, Revenue, System. Forty-plus items used to sit in one flat list, so capable features read as if they did not exist. Every plugin now lives in the group it belongs to - SEO, Google Console, Traffic, Social, Newsletter, Web Push, Audience, A/B tests and ZeroTrack under Growth; AdSense Readiness, Affiliate Links and the Ad Manager under Revenue; Forms, Quizzes, Recipe Cards, Stories, Downloads, AI Images and the Editorial Calendar under Content. Groups collapse with a click and remember their state; the group holding the page you are on always opens.
  • Pin what you use. Hover any menu item and click the star - it appears in a “Pinned” group at the top of the menu, on every page, in this browser. Unpin the same way.
  • Collapse the sidebar to icons. The button next to the version number shrinks the menu to a 68-pixel icon rail and gives the content the room. The choice persists, and the page paints in the chosen state without a flash.
  • Ctrl+K opens a real command palette. Type a few letters to jump to any admin page or Settings tab; after two characters it also searches posts, pages, media, users and comments. Arrow keys move, Enter opens, Esc closes. The search box in the header used to be an input that did nothing on focus.
  • A new release gate opens every plugin admin page with a real admin session and fails on a PHP error or a missing shell, so a page cannot break silently again. A second gate drives the new shell in a real browser at phone and desktop widths.
  • On phones and tablets the admin menu could not be closed. Below 1024 pixels the content moved to the left edge but the 256-pixel menu stayed fixed on top of it, with no way to dismiss it. The menu is now a drawer: hidden until you tap the menu button, closed by tapping outside, by Esc, by the close button, or by choosing a page. Content is never covered.
  • Admin pages scrolled sideways on small screens. The update banner drew a single 1000-pixel line and the filter toolbar did not wrap, so every page was wider than the phone. The banner wraps, toolbars wrap, wide tables scroll inside their own box, and the page body stays put. Measured on the dashboard, posts, media, settings and plugins pages: zero horizontal overflow.
  • Plugin admin pages look like one product. Web Push had a full-width header over a 760-pixel column of cards, fifteen inline styles and thirteen emoji icons; it is now a two-column layout that matches the rest of the panel. Emoji used as icons were removed from thirty-nine places across fourteen plugin pages, the post editor and the media library (they render differently on every device and look like a chat window). A gate now keeps inline styles and emoji from creeping back.
  • Quick search no longer leaks other authors’ drafts. Authors see only their own posts and pages in results, in line with the posts list. Result labels are translated instead of raw status codes.
v2.116.13

Sidebar widgets are visible again, and the AdSense contact check reads the right setting

  • Part of the sidebar was hidden behind a scrollbar inside it. Both themes capped the sidebar at the height of the screen and gave it its own scrollbar. Anything past that point - usually the widgets you added yourself in Customize - was only reachable by noticing a thin scrollbar and scrolling inside the column. Measured on a live post page: 580 pixels hidden in Pets, 521 in Travel. The column now flows with the page and everything in it is visible. Stickiness is still available where it belongs, in Customize → Sidebar → Sticky mode.
  • The AdSense readiness check said your contact e-mail was missing when it was not. The check only looked at a setting that had no field anywhere in the panel, so a site whose owner had filled in the only e-mail field available still failed it. The check now reads the address you actually set, and Settings → General has a proper “Contact Email” field for the address you want published - separate from the admin e-mail used for logging in and notifications.
v2.116.12

Pets theme: sidebar widgets no longer overlap each other

  • The sticky widget group was sitting on top of the widgets below it. The sidebar is already a sticky, scrollable column, and the group inside it was made sticky a second time - so it rode over whatever followed. On a post page the “Categories” heading was printed inside the list above it, overlapping by 62 pixels. The inner group now scrolls with the column it lives in.
v2.116.11

Post layouts: the article gets the wide column again, and the recipe jump links actually go somewhere

  • Pets theme: the table of contents was taking the article’s column. When a post has a table of contents the theme lays out three columns - contents, article, sidebar. A sidebar rule was forcing a two-column grid on top of that, so the contents box took the wide column, the article was squeezed into roughly 320 pixels, and the sidebar dropped to its own row underneath. This happened on a clean install with nothing changed, because the theme’s own default sidebar position triggered the rule. Sidebar settings no longer override a three-column layout; they adjust the last column instead of collapsing the design.
  • Trends theme: turning share buttons off shrank the article to a sliver. The layout declared a fixed three columns (share rail, article, sidebar) while two of them are optional. With sharing switched off the article fell into the 64-pixel share rail. The column set is now derived from what is actually on the page, so any combination of share and sidebar reads correctly.
  • Recipes theme: six of the seven “In this recipe” links went nowhere. The list was hard-coded to a fixed set of section anchors that most posts never contain - and on a Turkish site none of them matched. The list is now built from the headings the post actually has, and it is not shown at all when there are none.
v2.116.10

Horoscopes: the panel now says when no new reading can be written

  • A silent standstill is now visible. On a Turkish site the external service’s English text has to be translated before it can be published, and translation uses the AI key. With no key configured the module wrote nothing at all and the page simply stayed on the last day that was written - with no sign of it anywhere in the panel. Plugins → Horoscopes now states the problem, says which of the two fixes applies (configure a key, or switch the source to editor text), and shows how many of the twelve signs are filled for the day, the week and the month.
v2.116.9

Horoscopes: weekly and monthly readings, days prepared in advance, and text produced on your own site

  • Weekly and monthly readings. The module only ever kept a reading for the current day. Each sign's page can now also show a weekly and a monthly reading underneath the daily one. If a period has no text yet, its block is simply not printed - no empty headings.
  • Days prepared in advance. Plugins → Horoscopes now has a "days ahead" setting (0–7, default 3). The module fills those days quietly in the background, but a prepared day stays invisible until its date arrives: a visitor always sees today's reading, never tomorrow's. This is what stops the site running dry if the source is unreachable for a few days.
  • A third source: produced on this site. Alongside "written by an editor" and "external service", readings can now be produced on your own site with your own AI key. Because the text is generated where it is published, it carries no third-party rights, it comes out in your site's language with no translation step, and - unlike the external service - it can fill future days at all.
  • A weekly reading no longer overwrites the daily one. Readings were stored one row per day and sign, so any second reading for the same day replaced the first. Rows now also record which period they belong to, and existing readings are carried over as daily ones during the update.
v2.116.8

The site manifest is served correctly again, and the Minimal post header divider can be turned off

  • Newspaper theme: the rules under headings are now yours to choose. The theme drew a line under the post title block and under every H2 inside the article, and neither could be turned off. Customize → Post page now has two switches for them. Both start off, so the lines are gone; turn either back on if you want the newspaper look.
  • Newspaper footer: the legal texts moved to the bottom row. The KVKK notice and the disclaimer sat in the corporate column, away from the other legal pages. They now sit in the bottom legal row next to Privacy, Terms and Cookies, and no longer repeat higher up.
  • Minimal post header: the divider line is now a setting. The shared Minimal design also drew a thin line under the title with no way to remove it. Customize → Post page → Post header now has a "Divider line under the title" switch. It stays on by default there, so nothing changes unless you turn it off.
  • /manifest.json returned the wrong file. A leftover file from an old release sat in the site root under that name and shadowed the real manifest, so browsers could not read your app name and the SEO health check reported "name unreadable". The stale file is no longer shipped and is removed from existing sites on update. The real manifest is generated for you and carries your site name, colours and icons. The same file also exposed the package checksum, file count and upload details publicly; that is gone too.
  • The health check now says what to do. When the manifest address returns something that is not a manifest, the check names the cause instead of only reporting that the name could not be read.
v2.116.7

License screen badges now match what your plan actually does

  • The feature badges on Settings → License described an older tiering. "White label" showed as off on the Personal and Standard plans even though those plans can already hide the footer credit from Settings → General → Branding. "Priority support" showed as on for Standard, which does not have it - the priority queue starts at Professional. Two badges promised things we do not sell at all, 24/7 support and a reseller right; both are gone.
v2.116.6

IndexNow engine list corrected and the API rate limit documented as it actually behaves

  • The Traffic plugin card listed three IndexNow search engines; Seznam also receives the ping and is now named.
  • The bundled documentation still described a Settings → Payments screen with Stripe and iyzico keys. That vendor-side code has not shipped in the install package since 2.65.6, so the pages described something you could not find. Those two integration pages are gone, along with the Help links that pointed at them, and the licence page now states the real numbers: fourteen themes, and six months of support on every plan.
  • The documented API rate limit did not match the code. It is 100 requests per hour counted per client IP, changed with API_RATE_LIMIT - not per API key per minute. The help page and the API reference also promised X-RateLimit and Retry-After response headers that the API does not send; that promise is gone.
v2.116.5

Newspaper footer without repeated links and editable from Menus, overlay cards with author avatars, and a sidebar newsletter fix

  • Newspaper footer: the same page (for example the KVKK notice) could appear three times - in the services column, the pages column and the corporate row. Each address is now printed once. If a menu is assigned to Menus → Footer, that menu becomes the Pages column, so the footer is editable from Menus; the corporate row only shows legal pages not already listed. The footer customizer explains where each column comes from.
  • Cards Studio "Overlay" layout: when a card body contains an author avatar image, the body was not recognised as the text block and titles stayed dark on the dark panel (Newspaper related stories). Only a direct child image now counts as the card image.
  • Newspaper sidebar: the newsletter widget lost its accent background under the boxed widget style, leaving white text on white; backgrounds are kept.
  • Newspaper top strip: the video link no longer fails on a server that still runs the previous helper file for a few seconds after an update.
v2.116.4

Newspaper polish: sidebar and card styles from design packs render cleanly, the info strip never shows a cut-off rate, and the footer customizer can restore the theme default

  • Footer customizer: on a theme that ships its own footer (Newspaper) the picker showed "Classic 4 columns" as selected even though nothing was saved, and saving once replaced the theme footer with no way back. The theme default is now preselected and labelled, and a "Restore theme default" button removes the footer kit record so the theme footer returns.
  • Newspaper info strip: rates that do not fit are hidden from the end instead of being cut in half under the city box; the strip re-measures when the window is resized.
  • Newspaper with Sidebar Studio's "Pill" title (part of the Magazine design pack): the title was invisible or floated over the widget corner. In Newspaper the filled title now renders as a full-width header bar; the dark Trending widget keeps its own header; boxed widgets no longer get a double frame.
  • Homepage newsletter band: the heading disappeared when the "Boxed" section title style was active; band headings are now immune to section title styles.
v2.116.3

Footer legal links now point to your real pages in every theme, Newspaper info-strip and sidebar fixes, and a job title field in Users

  • Footer corporate and legal links (About, Contact, Privacy, Terms, Cookies, Disclaimer, KVKK, Masthead, Advertise) in all 14 themes now resolve to the pages that actually exist on your site, with the page's own title and address. Turkish sites no longer link to English paths such as /privacy-policy or /terms that only worked through redirects, and a concept without a page (for example Advertise) is no longer shown as a dead link. A release check now fetches every footer link in every theme and fails on a 404 or a redirect chain.
  • Newspaper info strip: when many rates are shown the city, prayer-time and weather boxes were pushed off the strip; the rates area now scrolls inside its own space.
  • Newspaper with Sidebar Studio's "Pill" title style: the widget title was invisible (dark text on the dark pill) and the header wrapper was styled a second time; titles now take the pill's colour and nested wrappers stay plain. The same nested-wrapper fix applies to the underline, uppercase and centered styles.
  • Newspaper with Cards Studio's "Overlay" layout: card titles and excerpts kept the dark text colour on the dark panel; they now inherit the layout's white text.
  • Users: the dashboard "Author job titles" warning sent you to Users, but the job title could only be edited on your own Profile. The user editor now has a Job title field (author box, byline and Person schema jobTitle).
  • Newspaper: the top-strip and footer "Video News" links are shown only when a video tag with posts exists; the Contact link goes to your real contact page.
v2.116.2

Newspaper theme: a stacked header with a full-width menu bar, currency and weather chips in the top strip, a "More" menu for long category lists, and a footer pages column that no longer depends on the main menu

  • Header layout choice (Customize → Homepage): "Logo row + separate full-width menu bar" (new default, built for news sites with many categories) or "Logo and menu on one row". The menu bar gets the whole page width, so category names are no longer cut off next to the logo and chips.
  • Currency and weather chips now sit in the top strip next to the date and service links (Customize → Homepage → chip position); the menu row keeps only the logo, search and dark-mode buttons.
  • "More" menu: when categories still do not fit, the trailing items move into a "More" dropdown instead of being clipped; it re-measures on resize and after fonts load.
  • Newspaper footer: the pages column (privacy policy, KVKK notice, about, contact, masthead, disclaimer) is built from the published pages themselves, legal pages first, so removing a page from the main menu no longer removes it from the footer.
  • Newspaper footer: the copyright text entered in Customize → Footer now wins over the footer kit's default line.
v2.116.1

Safe updates: post-update self-check with automatic rollback, an error log page in the panel, and Plesk/cPanel fixes (Themes page under open_basedir, Argon2 password hashing)

  • Post-update self-check: right after the files are copied, the site checks itself over HTTP (admin login page and homepage). If a server error persists, the backup taken before the update is restored automatically, the site keeps running on the previous version, the version is put on hold so the nightly auto-update does not retry it, and the real reason (the last line of the error log) is reported to the update server and shown in the panel.
  • Update lock: while files are being copied and the self-check runs, visitors see a short "update in progress" page that refreshes itself instead of a half-copied site; the admin who started the update is not affected.
  • Error log page (Updates → Error log): the last lines of the application, PHP and update logs with a one-click copy button, so a "Server Error" can be diagnosed without hosting file access.
  • The licence heartbeat now carries the last logged exception, the number of errors in the last 24 hours, the OPcache configuration and any held update, so support can see what went wrong on a site without asking for screenshots.
  • Themes page returned "Server Error" on Plesk and cPanel hosts with an open_basedir restriction: it looked for a shared theme folder two levels above the installation, the restricted host raised a warning and the page died. The lookup now only runs in the jekcms.com multi-site layout; customer installations never look above their own folder. A new release check runs the admin panel under an open_basedir restriction exactly like Plesk.
  • Password hashing failed with "A thread value other than 1 is not supported" on PHP builds that use libsodium for Argon2 (Plesk PHP 8.4): changing a password or creating a user returned a server error. Hashing now uses a single thread (security comes from memory and time cost) and falls back to bcrypt where Argon2 is unavailable.
  • Legal page generator could fail with a duplicate-slug database error when a page with the same address was in the trash; the trashed row is now restored and reused.
  • Social callback routes (/social/callback, /pinterest-callback, /social/uninstall, /social/delete-data) returned a fatal error on installations without the Social plugin; they now answer 404.
  • Updates → History could fail with "Call to undefined function format_bytes" on some installations; the helper is now always available.
  • Themes page could return "Server Error" on hosts whose database does not listen on port 3306 or uses a socket: the page opened its own raw database connection without the configured port. It now uses the core connection (port, socket and options included).
  • Stale-code guard after an update: the self-heal page is now shown on every fatal within the update window (previously the 60-second throttle let a raw "Server Error" through on the second hit), the pattern also covers type and argument errors, uncaught errors in the first 15 minutes after an update use the same auto-refresh page, and the refresh stops after three attempts so a real bug never loops.
  • After a successful update the panel shows a short "preparing the site" page before returning to Updates, instead of loading new admin code in the same process that still had the old code cached.
  • The update request no longer inherits the host's execution-time and memory limits and completes even if the browser tab is closed.
v2.116.0

New Newspaper theme for news sites, a story-type box in the editor, and the Astrology plugin

  • Newspaper theme (14th theme): an editorial news portal layout - top strip with date and service links, red breaking bar with timestamps, market strip (currencies, gold, Bitcoin, Ethereum) with city, weather and next-prayer countdown that follow the visitor's location, numbered hero slider, social video strip, category blocks, most-read list, two-column category boxes, Photo Focus panel, infographic strip, columnists row and daily horoscope. Grey page with boxed white cards, Rubik headlines, full dark mode. Every color, font, strip and section is editable in the customizer; the Newspaper footer template (Hürriyet-style five columns + social circles) is enabled by default.
  • Story type box in the post editor: when the active theme declares content kinds, a "Story type" select (Standard / Video / Photo gallery / Infographic / Breaking) adds the matching tag on save and explains where the story will appear - no need to remember tag names.
  • Astrology plugin: daily horoscopes for all twelve signs (free API, translated with the site AI key on Turkish sites, editable per day in the panel) with /burc and /burc/{sign} pages and a homepage strip.
  • Recommended plugins card on Themes and Dashboard: a theme can list the plugins it works best with (one-click activate) and a "Where does this theme pull content from?" guide.
  • Newspaper footer template for the footer kit: logo + copyright row, five bold link columns, corporate links row and legal text.
  • Layout engine: new homepage sections (info strip, video strip, category block, most-read, dual category, photo focus, infographic, columnists, astrology) with source settings (tag or category) shown on each card.
v2.115.3

Imported "&" names shown correctly, tidier excerpts, and a hero that fills its column in the News theme

  • WordPress import: category and tag names, titles and excerpts that WordPress stores as HTML entities ("Kültür & Sanat") were saved verbatim and escaped again on screen, so visitors saw "&". Both import paths now decode them before saving; migration 10 repairs sites imported earlier (category and tag names, post titles and excerpts only, post bodies untouched).
  • WordPress import: an excerpt generated from the body was cut at the 160th character in the middle of a word. It now ends at a word boundary with an ellipsis.
  • News theme: when the two secondary hero cards were taller than the main card, a large blank area opened under the main story's excerpt. The main image now stretches to fill the column and the byline sits directly under the text.
v2.115.2

News theme: header buttons back in the navigation bar, no empty box next to a single headline

  • News theme: the search, dark-mode and mobile-menu buttons rendered as a lone row under the navigation bar on every install (the stylesheet expected them inside the bar). They now sit at the right end of the bar, white on the dark background, and follow the text colour in the inline header layout.
  • News theme: a site with a single published post showed the headline card next to an empty grey box. The hero grid collapses to one column until a second story exists.
v2.115.1

English installs without Turkish leftovers, and one newsletter band instead of two

  • English sites and dashboards: the remaining Turkish strings are gone. Posts list "Date" column header, the membership price hint in Settings, the sidebar position options in the customizer (they showed both languages at once), the font preview sample, the support ticket error and delete confirmation, the image import confirmation, the Crypto theme's code-copy button and the Lifestyle theme's empty search results text now follow the site language.
  • Lifestyle theme on a fresh install showed two full-width newsletter bands stacked above the footer, and two newsletter widgets in the post sidebar. The footer band now steps aside when the homepage layout already has a newsletter band, and the theme's own sidebar widget yields to the universal one.
  • Customizer: select options declared with separate Turkish and English labels crashed the page ("Array to string"); they now render in the panel language. is_home() also recognises the homepage of a site installed in a subdirectory.
  • Release gate: a new English-install check switches the test install to English, tours every theme across 11 page types plus every dashboard page, and fails on any Turkish word or a doubled newsletter band.
v2.115.0

A fresh install that looks finished: sample content, cover images and the themes checked on an empty site

  • Setup wizard: "Start with sample content" is on by default. It seeds three categories, nine short guide posts with generated cover images, tags and a main menu, so the theme you pick looks complete from the first minute. Everything is removed with one click under Posts; the option is hidden for WordPress migrations.
  • The welcome post created by the wizard now ships with a cover image, and the site description is seeded in the site language (the schema's English text no longer leaks into footers and brand cards).
  • Sample content is seeded through one implementation shared by the wizard and the admin button; covers are editorial two-tone compositions instead of flat gradients, and removal also clears the menu items, tags and cover files it created.
  • Release gate: a fresh-install tour walks every theme in the wizard-only state and with sample content, checking eight page types for PHP errors, broken local images, empty grids, template leftovers and English strings on a Turkish site.
  • Starter theme: the featured hero grid squeezed images into a 140px strip (a list-card width rule leaked into the hero); the header no longer appends a second "Home" link next to the menu and shows a fallback navigation when no menu is defined.
  • Finance theme: the post page printed the cover path relative to the page (a 404 for uploaded covers); Travel theme: the post hero referenced a non-existent AVIF sibling and rendered black, and related cards stacked full-width because the grid rules only loaded on the homepage.
  • News theme on Turkish sites: relative times ("3h ago"), dates, LIVE/NEW badges, comment and contact form labels, the search page and the 404 page were English; the default avatar pointed to a missing file. Trends theme: the "Videos" section presented ordinary posts as videos when no post contained a video.
  • Turkish defaults for theme texts that shipped in English (Finance disclaimers, Health/Recipes/Travel footer and newsletter copy, Recipes home sections, Lifestyle newsletter note, Recipes e-mail placeholders); Crypto's trending box and Health's author list are hidden when they would be empty.
v2.114.0

Premium customizer: button studio, top bar pro, header and footer colours, one control per concept

  • Button studio (Layout → Buttons): style (solid, outline, soft tint, ghost), hover effect (darken, lift, glow, fade), shadow, plus background and text colour with light/dark pairs under Colors → Links and buttons. A live preview in the customizer mirrors every choice, including the theme's primary colour.
  • Top bar pro: bar height (slim / normal / tall), content alignment for a single slot, announcement link shape (underlined text, pill button, text + arrow), scrolling announcement text that respects reduced-motion, and two new visibility options: post pages only, every page except the homepage. A live top-bar preview sits above the settings.
  • Header and footer colours (Colors → Header and footer): background and text colour for the header and the footer, each with a dark-mode pair; empty fields keep the theme colour, and a dark-only value is scoped to dark mode so the light theme is untouched.
  • Dead-setting detector: every customizer field is changed one by one and seven page types are compared; a field that leaves no trace fails the release gate. The full run covers every theme and about 270 fields per theme. A companion selector-coverage audit loads each theme in a headless browser and checks that the CSS a setting emits actually matches elements in that theme; it found the menu, button, sidebar, byline and tag gaps fixed in this release.
  • One control per concept: the theme's own "sticky header" switch and the universal "sticky behaviour" selector asked the same question twice. The selector is now the single control and drives the theme's header class as well ("Not sticky" makes the theme header static, "Always pinned" pins it).
  • Themes that ship their own header social-icon row (Health, Personal) no longer also offer the universal "social icons in the header" switch, and the alias that could print two icon rows was removed.
  • Customizer navigation: heading weight, letter case, letter spacing and article text width moved from Layout to Fonts → Size and shape; the Archive, Media and Mobile tabs now use named sections (Archive layout, List, Archive heading, In-content images, Text scale, Mobile layout) instead of a single "General" pile.
  • Main menu design (link style, size, weight, letter case, spacing, active highlight, alignment) produced CSS that matched nothing in eight themes because their menus use different markup (crypto, tech, travel, personal, trends, health, entertainment and starter); the selector set now follows every built-in theme's real header navigation. The dropdown design option is only offered on themes that render submenus.
  • Button size, weight and uppercase options targeted only .btn/.button classes and did nothing on six themes; they now reach the themes' real button classes (form submit, load-more, newsletter and header buttons) while leaving icon, share, reply and pagination buttons alone.
  • "Hide the sidebar on mobile" missed several themes' sidebar wrappers; the rule now uses the same sidebar selector list as the Sidebar Studio. Byline separator / letter case and tag block design now cover the byline and tag markup of every theme.
  • Starter and Finance themes never printed post tags (the template read a field the page loader does not fill), so the tag block design had no effect there. Lifestyle, Pets and Minimalist query tags but have no tag block; choosing a tag block design now prints one after the post on those themes.

Get your site live

The setup wizard gets a site live in about 30 minutes. See the prices and the free edition.

View Pricing
  • Setup and live in 30 minutes
  • 15 ready-made themes
  • AVIF/WebP image optimization
  • Automatic SEO - Sitemap, Schema.org
  • Cookieless built-in analytics (ZeroTrack)

Be the first to know

New features, release notes and CMS guides. We send a couple of emails a month.