Changelog
Release Notes
Every feature, every improvement, every fix since v1.0.0.
Page 12 of 20 — 576 releases, newest first.
Theme Switching Hardened: Switch as Often as You Like, Every Switch Lands Clean
Fixed
- Switching between certain theme pairs could crash mid-switch: the activation step loaded the new theme's helper functions into the same request as the old theme's, and shared helper names collided fatally, leaving the site half-switched. Activation now loads only the new theme's configuration — the next page load brings its helpers in cleanly. Verified with a new behavior test that cycles through all 13 themes twice, checks homepage, post and archive rendering on each, and asserts zero residue after returning to the original theme.
License Activation and Heartbeat Restored on the Server, Plus Menu Tab Polish
Improved
- The Menu tab is tidier: the sizing sliders sit on one row and the four element switches (sticky, search, light/dark, social icons) align on a single row beneath them — powered by a new per-tab column layout theme authors can reuse.
Fixed
- The license server's activation and heartbeat endpoints were failing with a server error due to a wrong database-call signature — activations could not complete and installs never got their periodic license confirmation, which surfaced as a persistent "license could not be verified" notice. Both endpoints now respond correctly; installs re-validate automatically on their next check-in.
- On the Personal theme, the menu's logo size slider had no effect when a wide brand logo was uploaded — the slider only drove the compact brand mark. It now sizes the wide logo too.
- Slider tracks in the customizer were invisible in dark mode — only the thumb showed. Sliders now use themed tracks and thumbs that read clearly in both light and dark.
The Menu Tab Grows Up: Five Designs Including Floating Box and Two-Tier, Plus Logo Size and Padding Controls
Added
- Two new menu designs join the visual picker (Personal and Health): Floating Box — the menu sits in a rounded, softly-shadowed bar detached from the page edge — and Two-Tier, a classic editorial layout with the logo and tools on top and a full-width menu strip beneath.
- Fine-grained header sizing: a logo height slider and a vertical padding slider let you make the top menu as compact or as commanding as you want. The Slim design scales both proportionally.
A Menu Tab for the Customizer: Visual Design Picker, Sticky Behavior and Element Switches
Added
- A new Menu tab sits between Post Page and Sidebar in the customizer (Personal and Health themes). Its centerpiece is a visual design picker — mini header mockups you click to switch the top menu between three layouts: Classic, Centered (logo on top, menu below) and Slim (a lower, quieter bar).
- Menu behavior and elements are now switches: keep the menu sticky or let it scroll away, and show or hide the search, the light/dark switch and social media icons (accounts come from Settings → Social). The Personal theme learned to show header social icons for the first time — off by default.
- The visual picker is a new reusable field type for theme authors (choice_cards): any theme option can now be presented as clickable design cards instead of a plain dropdown.
Health Customizer, Brought Up to Par: Page-First Tabs, a Real Appearance Tab and Post-Page Structure Controls
Added
- The Health theme now has the same customizer structure as Personal: the tab bar reads Homepage, Post Page, Sidebar, Appearance, Advanced. Colors and typography live in Appearance, the newsletter widget copy sits inside the Sidebar tab, and footer texts moved under Advanced.
- Post-page structure controls for Health: header style (classic or compact), breadcrumb, excerpt lead, reading progress bar and a featured-image switch — new elements ship switched off, so nothing changes until you opt in.
- Appearance controls that actually work: Health's color pickers now drive the theme's real palette (primary, accent, text, muted, backgrounds, border) with separate light/dark values, and heading/body fonts, content text size and line height apply across the whole theme. Defaults match the current design exactly.
Fixed
- The old Branding color fields on Health pointed at CSS variables the theme never used — they looked adjustable but changed nothing. They were replaced by the wired Appearance controls above.
Customizer: The Variant Dropdown Panel Is No Longer Clipped by Its Card
Fixed
- The admin's styled dropdown component draws its option panel inside the layout card, and the card's overflow clipping was cutting the panel off — sometimes leaving just a sliver visible. A card now releases its clipping while its dropdown is open (the same proven rule the post editor's publish box uses), so the full option list always appears.
Customizer: The Variant Dropdown Now Opens Cleanly on Layout Cards
Fixed
- The variant dropdown on layout cards could open glitched or misplaced. Cause: the whole card was permanently marked as draggable, which interferes with native dropdowns in Chrome. Cards now become draggable only while you are actually holding the drag handle — dropdowns open exactly like everywhere else in the admin, and the menus got the same arrow icon as the rest of the panel.
Customizer: Live Sidebar Preview and a Dropdown Fix
Added
- The Sidebar tab now has its own live preview: the widget stack on the right mirrors your changes instantly — switch a widget on or off or drag it to a new spot and the preview follows.
Fixed
- Opening a layout card's variant dropdown could nudge the card's content upward and clip its title. Cards no longer scroll internally, so the dropdown opens cleanly every time.
The Health Theme Goes Modular: Drag-and-Drop Homepage, Widget Sidebar and Post-Page Blocks
Added
- The Health theme now runs on the modular layout engine — the second theme after Personal. Its homepage sections (hero, trending topics, most popular, recommended, latest articles) become drag-and-drop cards in the customizer: reorder them, switch them off, and tune hero autoplay and cycle speed, posts-per-tab and posts-per-page from each card's gear.
- A real sidebar for Health post pages: the About Me card and table of contents are now widgets you can reorder or disable, joined by five optional ones — latest articles, categories, tags, a newsletter mini-form and a free-form custom content box. Widget-level sticky control and a right/left position switch included.
- Post-page blocks are modular too: the author box, related posts (with a post-count setting) and the comments section can be reordered or turned off from the Post Page tab.
Improved
- The layout engine learned per-theme capability declarations: a theme now lists exactly which variants and settings each section really supports, along with its own defaults — so the customizer only ever shows controls that actually do something in the active theme.
- The Health customizer was cleaned of controls that had no effect: leftover fields from an earlier design (hero texts, category row options, archive grid and disclaimer toggles among others) are gone, replaced by the working layout cards. Existing sites keep their exact current look until they change something.
Customizer Polish: A Unified Appearance Tab with Rich Typography, One Toggle Language and Pixel-Aligned Cards
Added
- A new Appearance tab gathers Colors and Typography in one place — and both grew up. Typography now controls body text size, heading size, line height, paragraph spacing and content column width; Colors gained muted text, border and content-link colors. Defaults match the current look exactly, so nothing changes until you change it.
- The homepage hero and categories cards absorbed their text options (kicker tag, button label, section title) into their gear settings — the loose, confusing text-field pile at the bottom of the Homepage tab is gone.
Improved
- The tab bar is now truly page-first: Homepage, Post Page, Sidebar, Appearance, Advanced. Layout cards align pixel-perfect — variant menus have a fixed width (no more shifting when you pick an option), and every card reserves the same columns so all toggles line up vertically.
- One toggle language everywhere: the customizer now uses the same switch component as the rest of the admin. The layout preview also reflects your variant choice by name, and the Reset Layout button moved up into the tab header where it belongs.
Detail Controls, WordPress-Grade: Block Design Variants, Sticky Widgets and Post-Header Structure
Added
- Design variants for post-page blocks: the author box can render classic (horizontal) or as a centered card, comments come in classic or minimal (compact, avatar-free) style, and related posts switch between a card grid and a row list — each picked right on its layout card, with a round/square avatar shape option for author cards.
- Per-widget sticky control in the sidebar: every widget's gear now has a "Sticky" switch — decide whether the table of contents, share box or any other widget stays on screen while scrolling or flows with the page.
- Post-header structure controls: header style (classic centered or compact left-aligned), plus switches for the breadcrumb, the excerpt lead, the "continue reading" indicator and the reading progress bar.
Improved
- The Advanced tab got tidier: a short description explains what lives there, its own fields are grouped under a "Custom Code" heading, and the Branding and Author sub-sections sit clearly separated below.
The Customizer Thinks in Pages Now: Modular Sidebar with Widget Cards, a Modular Post Page, and a Cleaner Tab Structure
Added
- A brand-new Sidebar tab: the sidebar is now a widget stack you compose with cards — author card, table of contents, share, plus new widgets: recent posts, categories, tag cloud, a mini newsletter form and a Custom Content box for your own HTML. Drag to reorder, toggle, tune counts.
- Sidebar visibility matrix: decide where the sidebar appears — post pages, archive/category pages, search results and author pages each have their own switch, and you can dock the sidebar left or right. Pages without it get the full width automatically.
- The post page went modular too: the author box and comments are reorderable below-content blocks, related posts is a tunable end-of-page block, and a new toggle controls the featured image.
Improved
- The customizer tabs were reorganized around pages: Colors and Typography first, then Homepage, Post Page and Sidebar — each page tab contains its own layout cards and options in one place. Branding and Author collapsed into Advanced as sub-sections, so the tab bar stays short and every control lives exactly where you would look for it.
Layout Cards Grow Up: Per-Section Settings and a Live Page Preview
Added
- Every layout card now opens its own settings via a gear icon. The hero slider is fully tunable: slide count, autoplay on/off, seconds per slide, optional prev/next arrow buttons and dot indicators. Popular and Latest sections control their post counts from the card. Settings that only apply to one variant appear only when that variant is selected.
- A live page skeleton preview beside the cards: the final page is mirrored box by box in the order you arrange, updating instantly as you drag, toggle or retune sections — plus a one-click link to open the real site in a new tab. A page selector is in place for the post-page layout coming in the next phase.
Improved
- The layout cards were rebuilt on a solid grid: no more overlapping variant menus or squeezed labels; existing slider preferences (like slide count) migrate into the new settings automatically, so nothing changes until you change it.
Your Homepage, Your Order: Modular Layout Engine Arrives — Drag, Toggle and Restyle Sections
Added
- A new section-based layout engine turns theme pages into reorderable building blocks. In Customize → Layout, every homepage section (hero, intro grid, categories, popular, latest posts, newsletter band) is a card you can drag to reorder, switch off, or restyle with a variant — the page then renders top to bottom in exactly that order. No theme files are touched, and one click restores the theme default.
- Section variants: the hero can now run as a multi-post slider or a calm single-post opener, chosen from the layout card. The variant system is built into the engine, so future sections and themes gain variants without new UI work.
- The Personal theme is the first to go fully modular: its homepage is now composed of six independent sections. Existing sites look identical until you change something — saved settings and the classic order carry over untouched. Remaining themes migrate to the engine in upcoming releases.
Improved
- The theme customizer got tidier: the newsletter tab moved out — newsletter design (email templates, signup placements, popup) is managed on its own Newsletter → Appearance page, and the customizer now links there. Legacy per-section show/hide toggles are absorbed into the Layout tab so each control exists in exactly one place.
One Brand Voice: jekcms Now Introduces Itself the Same Way Everywhere
Added
- EULA 2.1: the agreement now records the jekcms trademark application before the Turkish Patent and Trademark Office (Application No. 2026/095211, Nice Classes 09 and 42), turning the trademark clause from a general statement into a verifiable fact.
Improved
- jekcms now speaks with one voice: the positioning is "Next-Generation Blog CMS", the homepage slogan is "Start Your Blog. Publish Your Posts." and a single product definition explains what it manages (posts, pages, images and comments in one panel). The same wording now appears on the marketing site, the admin login screen, the license screen and site metadata — replacing four different, jargon-heavy taglines that each described the product differently.
- Technical qualifiers like "self-hosted" and hosting requirements moved out of the first impression and into the feature and comparison sections where technically minded buyers actually look for them.
License Protection Hardened: Installations Now Report Their Integrity, and Every Copy Stays Traceable
Added
- License heartbeats now include a signed-manifest integrity summary: an installation whose protected core files have been modified is flagged on the license server, so tampered or cracked copies surface automatically instead of going unnoticed.
- Every release now carries a SHA-256 manifest of its source tree as timestamped evidence of authorship — the record that backs your licence if a copy of jekcms ever turns up where it should not be.
Improved
- Official core updates now regenerate the file-integrity manifest automatically, so a legitimate update is never mistaken for tampering.
- The footer credit is now generated through the integrity layer and tied to the installation's fingerprint, strengthening the traceability chain of every deployed copy.
- The pricing page now explains, in plain language, how the license you pay for is protected: traceable copies, non-functional pirated installs, and the legal guarantees of EULA 2.0.
EULA 2.0: A Hardened License Agreement with Stronger Electronic-Acceptance Evidence
Improved
- The End User License Agreement was upgraded to version 2.0 with maximum commercial protection: explicit bans on publishing the source code to public repositories, sharing or publishing license keys, and using the code to train AI models or build datasets — each now covered by the liquidated-damages clause. New sections cover electronic acceptance as a binding signature (with an evidence agreement), agency/third-party installations, trial/developer license limits, personal-data processing grounds (KVKK), the no-withdrawal rule for instantly delivered digital goods, and standard severability/no-waiver/entire-agreement terms. Domain limits now correctly reflect the purchased plan.
- Acceptance records got stronger evidentiary value: both the checkout consent and the first-login admin consent now record the agreement's own version (EULA 2.0) and a SHA-256 hash of the exact text accepted, alongside the existing timestamp, IP, browser and identity records.
- The agreement is now readable at a public /eula page rendered from the very same file that ships with the product, showing the version and text hash; the checkout consent link points there instead of the general Terms of Service.
Newsletter Grows Up: 6 Email Templates, Selectable Signup Placements and a Scheduled Popup; Contact Form Admin Rebuilt
Added
- Six selectable email designs for campaigns and newsletters — Signature, Clean, Bold, Editorial, Dark and Minimal — chosen from a visual picker with live previews (Newsletter → Appearance), applied to the campaign template with one click. All designs are email-client-safe (table layout, inline CSS).
- Signup form placements you control: choose where the newsletter form appears — end of every post, top of the sidebar, a band above the footer, and/or a popup. No theme files are touched; the plugin injects the form on every theme through one universal point.
- A polite newsletter popup: shown after a delay you set (in seconds), at most once per day per visitor, never again after subscribing, with four selectable styles — centered card, corner card, bottom bar or mini card.
Fixed
- The Contact Form admin link no longer 404s: its pages moved to the standard plugin-admin location and the inbox was rebuilt as a tabbed page (Inbox + Settings in one place) with unread badge, filters, search, mark-all-read and the message settings alongside.
Theme/Plugin Updates No Longer Resurface After a Core Update; Admin Visits Now Drive the Scheduler Too
Improved
- The visitor-triggered scheduler (scheduled publishing + automatic updates, no cron required) now also fires on admin panel visits — on a low-traffic site, simply logging into the admin is enough to keep automation running. A real cron job remains optional.
Fixed
- Fixed an update loop where an already-applied theme update kept coming back: the core package carries a version ledger, and a stale entry in it could mark an up-to-date theme as outdated again after every core update. The updater now rebuilds the theme/plugin ledger from what is actually on disk after each core update, and the release pipeline generates the packaged ledger from the real component versions — so the loop cannot recur from either side.
- Automatic updates now apply the core first and then theme/plugin updates (with a fresh check in between), so a core update can no longer overwrite the version records of components updated in the same run.
Automatic Updates Now Work from Real Cron Jobs
Fixed
- Update downloads triggered from a real (CLI) cron job were rejected by the license check: without a web request there is no host header, so the download request reported "localhost" instead of the licensed domain and the server refused it — automatic updates could never actually install from cron. The updater now always uses the domain stored with the license activation (matching how the update check already behaved), so scheduled automatic updates install correctly. Verified end-to-end: a live install auto-updated its core from cron with the license intact.
Your License Now Survives Core Updates; Plugin Cards, System Menu and AdSense Intro Polished
Improved
- Plugin cards are aligned and consistent: the action button row now sits at the same height on every card, descriptions are standardized to a fixed length range (with a display clamp as a safety net), and previously unlocalized plugins (Stories, Cloudflare, AdSense Readiness, ZeroTrack) got proper Turkish/English names and descriptions.
- The System section of the sidebar is reordered by frequency of use: Settings, Updates, License, Import, Backups, Users.
- The AdSense Readiness first-run screen was redesigned to match the admin design language: a calm card with the scan scope listed as chips and a single standard primary action, replacing the dashed box with duplicate oversized dark buttons.
- The automatic-updates note on the Updates page now stays on a single line on desktop.
Fixed
- Critical: applying a core update no longer wipes the license activation. The core package ships its own version file and overwriting it dropped the stored license — the panel fell back to "activate your license" and theme/plugin update buttons disappeared. The updater now preserves the license (and a custom update-server address) across core updates. A related latent bug was fixed too: database migrations no longer overwrite the new package version metadata while recording their progress.
- The header update banner now says what is actually pending: the core version when a core update is ready, otherwise the number of theme/plugin updates — instead of a bare "Update available!" that lingered confusingly after a core update.
Plugin Cards Now Show a Distinct Icon per Plugin
Improved
- Every plugin card on the Plugins page now has its own recognizable icon (newsletter envelope, SEO magnifier, social share graph, analytics bars, cloud, quiz, recipe and more) instead of the same generic circle repeated on every card. Plugins without a dedicated icon fall back to a package icon.
Automatic Updates Arrive; the Updates Page Gets Even Simpler
Added
- Automatic updates: on the Updates overview you can now choose "Off", "Plugins + Themes" or "Everything (core included)". With it enabled, the scheduler checks once a day and applies pending updates through the same signed channel — backup first, automatic rollback on failure, and every run is recorded in the History tab.
Fixed
- Fixed a server-side configuration blind spot dating back to the security hardening that moved secrets out of the web root: the update/license API could no longer load its database credentials, so the component update catalog silently served empty results. The API now searches the relocated secrets directory as well — theme and plugin updates published to the channel are actually visible to installations again, verified end-to-end against the signed manifest.
Updates Page Reorganized into Tabs; Package Install Stays Visible (Locked) on Managed Sites
Improved
- The System Updates page now uses the same tabbed layout as Settings: Overview (status strip + available updates + installed components), Install Package, History (updates + backups) and Release Notes each have their own tab, instead of one long scrolling page. The Overview tab shows a pending-update count badge.
- Package type selection on the install tab is now a visual card picker (Plugin / Theme / Core) with the SHA-256 field appearing only for core packages.
- On centrally-managed installations the Install Package tab is no longer hidden: it explains why ZIP installs are disabled there and how they can be enabled when genuinely needed (JEK_ALLOW_SELF_UPDATE); with the flag set, the full install form is available with an overwrite warning.
System Updates Page Rebuilt: Plugin/Theme/Core Package Installs, Update History and In-Panel Release Notes
Added
- The System Updates page can now install packages by ZIP upload — plugins and themes as well as the core. Plugin and theme packages are structure-validated before install (single safe root folder, a real plugin.php version header or theme.json), a backup is taken automatically and a failed install rolls back. Core packages keep the stricter rule: the official release SHA-256 digest is required.
- A local update history now records every applied update — component, old and new version, whether it came from the update channel or a manual upload, and whether it completed, failed or was rolled back. The history survives cache clears and deployments.
- Release notes are now readable inside the panel: the page shows the full recent core changelog (bilingual, categorized) plus published theme and plugin releases, fetched from jekcms.com and cached for 12 hours. Centrally-managed sites see them too, so operators and site owners follow the same history.
- The installed themes and plugins lists moved into their own collapsible "Installed Components" card with counts, so a site with many themes no longer stretches the version summary into a full-page column.
Fixed
- Backup folders no longer appear as installed components: a leftover directory like "Trends.bak-20260430-210630" was listed as a theme on the updates page and even reported to the update server. Backup-named folders (.bak/.old/.backup) are now excluded everywhere.
- Live sites no longer display a stale core version: the per-site version file was left behind by deployments (a site could show 2.16.20 while actually running the current release), and it is now synchronized on every release.
- The update report sent after a core update now carries the real previous version instead of always reporting "unknown".
Update Notifications Across the Admin: Sidebar Badges, Plugin/Theme Cards and a Dashboard Core Alert
Added
- WordPress-style update notifications throughout the admin panel. When an update is published for an active plugin, the "Plugins" sidebar item shows a numbered badge; installed-theme updates show the same badge on "Themes", and the "Updates" item now shows the total pending count instead of a generic mark.
- Plugin and theme cards now show an "Update available vX.Y.Z" notice (with the current → new version in the tooltip) linking straight to the Updates page. The notice appears on every installed plugin, active or not — the sidebar badge only counts active ones.
- A core update now shows a clear notification band on the dashboard with the installed and available version, including a "critical update" emphasis for security releases. Centrally-managed installations receive updates from the operator, so they intentionally show none of these prompts.
- All notifications are fed by a single per-request status helper sitting on top of the existing 12-hour update-check cache, so no extra requests are made to the update server.
Fixed
- Repaired a disconnect in the update release channel: versions uploaded through the release management panel were stored in a legacy catalog that the client update API never read, so published releases were invisible to installations. The panel now writes to the same catalog the update API, the signed manifest and the download endpoint all read, and lists the SHA-256 of every uploaded package.
- Contact Form 1.0.1: server-side responses (validation errors, rate-limit and security messages) now follow the site language — English sites no longer show Turkish error messages to visitors. Field length limits are now counted in characters rather than bytes, so messages with accented or non-Latin characters near the limit are no longer rejected even though the form allowed them.
Content Quality Gate Now Blocks Leaked Rewrite Notes and Stray Image Markers
Added
- The Content Quality Gate now blocks publishing when a post contains a leaked editorial process-note — the kind an automated rewrite step can leave behind, e.g. a fake "Kaynak" (Source) section whose text is "metindeki … temizlendi/çıkarıldı" (commentary about what was edited) rather than a real citation. The check is precise: it triggers only on the "Kaynak"+"metindeki" leak signature, so legitimate uses of the word "metindeki" (e.g. in a regex or text-processing article) are never blocked.
- The gate also blocks any post still containing an unresolved [IMAGE:] placeholder marker, which would otherwise leak into the published page as raw text instead of an image.
Cloudflare Safety: "Apply Recommended" Is Now Origin-Aware and Can Never Take Your Site Down
Fixed
- Fixed a serious bug where "Apply recommended settings" could take a live site offline. It set the Cloudflare SSL mode to Full (Strict) unconditionally; if the origin server's certificate was expired the site returned 526, and if the origin had no HTTPS certificate at all the site returned 525 (SSL handshake failed). Both make the whole site unreachable.
- The recommended SSL mode is now Full (not Full/Strict). Full encrypts browser-to-Cloudflare with a valid certificate and Cloudflare-to-origin as well, but does not reject an expired or self-signed origin certificate, so it can never cause the 526 that Strict does. If your origin certificate is valid you can still upgrade to Full (Strict) manually in the Cloudflare dashboard.
- Added an origin-HTTPS safety gate: before touching the SSL mode the plugin checks whether your origin server can complete a TLS handshake at all. If it cannot (no certificate installed), the SSL setting is skipped entirely and the plugin explains that you need to install a certificate (e.g. free Let's Encrypt) in your hosting panel first. All the other recommended settings still apply. The connected panel also shows this warning up front.
Accessibility: Primary Navigation No Longer Trips the "aria-hidden Contains Focusable Elements" Audit
Fixed
- Fixed an accessibility violation flagged by page audits (and the newer AI-agent accessibility scan): the shared mobile-navigation script set aria-hidden="true" on the primary
- aria-hidden (and inert) are now applied only while the mobile panel is genuinely hidden on small screens, and removed on desktop where the navigation is visible and focusable. Also removed a redundant static aria-hidden="true" from the lifestyle theme mobile-nav so it can never leak into the desktop tree. Applies across every installation via the shared, cache-busted navigation script.
Cloudflare Panel: Consistent Status Icons and a Truthful Exception-Rule State
Fixed
- The two checklists in the connected panel now use the exact same status icons. Previously the recommended-settings list used a plain checkmark while the exception-rules list used a different check-in-a-circle icon, which looked inconsistent.
- The exception-rules list now reflects its real, live state instead of always showing green. The panel reads the current custom rules from Cloudflare and marks each jekcms exception as applied (green check) or not-yet (empty), with an "ALL APPLIED" badge and a re-apply / apply-count button that mirror the recommended-settings card.
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)