Version History

Release Notes

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

12
Releases
98
Features
41
Fixes
v1.5.3
Latest
v1.5.3 Feature

Auto-Seed Settings, Core Web Vitals, Update System & SEO Hardening

All sites + marketing site
Added 8
  • Settings Auto-Seedensure_default_settings() automatically seeds site_name and site_alternate_name into the database on first page load. Cache-file based, zero performance impact after initial run. No more manual SQL for new sites
  • Migration Systemmigrations/5_seo_settings_seed.php created across all sites. Update system can now distribute database changes automatically
  • LCP Eager Loading — First post card image on page 1 gets loading="eager" fetchpriority="high" across all theme architectures. Expected ~200-500ms LCP improvement
  • CLS Preventionwidth and height attributes added to all post card images. Eliminates layout shift completely
  • CSS Cache Busting?v=THEME_VERSION parameter added to stylesheet links in starter theme headers
  • Update Server Connectedapi/updates/check.php now uses real UpdateManager with database queries instead of static stub response. Graceful fallback on connection errors
  • JekCMS Backlinks — All footer files across active sites, admin panels, and bundled themes now link to jekcms.alfadizayn.com with "JekCMS" anchor text and rel="noopener noreferrer"
  • Marketing SEO — Real favicon URL (SVG), application-name meta tag, theme-color, WebSite schema alternateName added. Decorative text moved to CSS to prevent Google sitelink pollution
Fixed 6
  • Sitemap pagination URLs removed — ?page=2, ?page=3 etc. no longer appear in homepage, category, tag, and author sitemaps. These thin pages wasted crawl budget
  • Thin tag pages now noindex — Tag pages with fewer than 3 posts get noindex, follow via output_robots_meta() to prevent thin content indexing
  • Markdown # Heading now renders as <h2> instead of <h1> — prevents double H1 on post pages where title is already H1
  • SQL migration file sql/v1.5.1-seo-site-names.sql deleted — replaced by automatic ensure_default_settings() mechanism
  • Marketing site favicon was data URI — Google requires real URL for SERP favicon display. Replaced with proper /favicon.svg
  • Marketing site showed "Dashboard Posts Media Settings" as Google sitelinks — decorative text moved from HTML to CSS content: attr(data-label)
Changed Files 18
includes/helpers.php ensure_default_settings() + thin tag noindex + markdown H1→H2
includes/bootstrap.php ensure_default_settings() call added
classes/Sitemap.php Pagination URLs removed
migrations/5_seo_settings_seed.php NEW — DB seed migration
version.json v1.5.3, db_version 5
themes/*/partials/post-card.php LCP eager + CLS dimensions
themes/*/templates/index.php Featured image eager loading
themes/*/templates/archive.php Card index parameter
themes/*/templates/header.php CSS cache busting
themes/*/functions.php render_post_card index param
themes/*/templates/footer.php JekCMS backlink
admin/includes/footer.php JekCMS backlink noreferrer
api/updates/check.php Real UpdateManager connection
favicon.svg NEW — Root favicon for Google SERP (marketing)
index.php Mockup text → CSS data-label (marketing)
marketing-includes/header.php Favicon + application-name + schema (marketing)
marketing-assets/css/main.css Mockup nav CSS content rule (marketing)
changelog.php v1.5.3 release entry (marketing)
v1.5.2 Patch

Deep SEO Audit — Schema, OG Image, Core Web Vitals & Accessibility

All sites + bundled themes
Fixed 6
  • BlogPosting author schema missing url property — Google requires author URL since 2023. Added author.url pointing to /author/{slug} across all sites
  • BreadcrumbList last item missing item (URL) property — Google Rich Results test was reporting errors. Fixed both category and non-category code paths across all sites
  • og:image:width and og:image:height meta tags missing in bundled theme functions.php files — Facebook/LinkedIn image previews could render incorrectly. Added 1200×630 dimensions
  • Featured/hero image missing fetchpriority="high" in active theme single.php files — LCP (Largest Contentful Paint) performance impact. Also added width/height where missing
  • Author avatar <img> tags had empty alt="" in active theme files — accessibility and image SEO issue. Replaced with author name
  • Hardcoded <html lang="tr"> in affected themes — replaced with dynamic get_setting() for correct language declaration
Changed Files 4
includes/helpers.php Author URL + BreadcrumbList item fix
themes/*/functions.php og:image:width/height added
themes/*/templates/single.php fetchpriority + avatar alt text
themes/*/templates/header.php Dynamic html lang attribute
v1.5.1 Patch

SEO Audit — Pagination, Sitemap Language, Tag Cleanup & OG Locale

All sites
Fixed 8
  • Pagination URL double query string bug — ?page=3?page=4 caused by get_canonical_url() returning ?page=N. Now strips page param from baseUrl before rebuilding
  • Schema $currentUrl missing ?page=N on paginated pages — canonical and schema URLs now consistent
  • ?page=1 duplicate content — 301 redirect to clean URL added in all site .htaccess files
  • News sitemap hardcoded <news:language>en</news:language> — now uses get_setting('general', 'site_language') dynamically across all sites
  • Tag URLs returning 301 to homepage — changed to proper 410 Gone response with minimal HTML page across all sites
  • BlogPosting schema missing inLanguage property — added dynamic language detection across all sites
  • og:locale hardcoded to en_US on Turkish sites — now dynamically set to tr_TR or en_US based on site language setting
  • AVIF → WebP schema image fallback missing file_exists() check — WebP URL was emitted even when file didn't exist
Changed Files 6
includes/helpers.php Pagination fix, schema URL, inLanguage, AVIF fallback
.htaccess ?page=1 redirect rule
classes/Sitemap.php News language dynamic detection
config/routes.php Tag 410 Gone response
themes/*/header.php og:locale dynamic setting
themes/*/functions.php og:locale dynamic setting
v1.5.0 Feature

Duplicate Prevention, Smart Thumbnails & Admin Tools

All sites + core infrastructure
Added 12
  • Post::checkDuplicate() method — detects duplicate posts by title or slug before creation
  • Duplicate check integrated into all API webhooks: webhookPublish, webhookSchedule, webhookDraft, webhookBulkPublish, webhookContentGenerate
  • HTTP 409 response with full existing post details (id, title, slug, status, url) when duplicate detected
  • force_duplicate: true request parameter to bypass duplicate check when intentional duplicates are needed
  • Bulk publish silently skips duplicates with skipped counter instead of blocking
  • Admin "Duplicates" button on Posts page — opens modal with full duplicate analysis
  • Slug pattern detection engine: finds posts ending with -N (N=1-10) where the base slug also exists as another post
  • Single-click and bulk "Trash All Duplicates" actions with real-time UI updates
  • Image proxy fallback in get_featured_image() — when pre-generated thumbnail files are missing, dynamically resizes via image-proxy.php
  • Size dimension map: thumbnail (400×400), card (480×300), medium (800×500), large (1600×1000)
  • AVIF → WebP → original format cascade when looking up sized variants
  • Content Queue sidebar badge now counts queued status alongside draft and ready
Changed Files 6
classes/Post.php checkDuplicate() method added
api/v1/index.php checkDuplicatePost() + webhook integrations
admin/posts.php Duplicates button, modal, JavaScript
admin/ajax/find-duplicates.php NEW — AJAX duplicate finder endpoint
includes/helpers.php get_featured_image() image-proxy fallback
admin/includes/init.php Content Queue badge query updated
v1.4.5 Patch

Production Hardening — SEO Fixes, License Enforcement & Session Security

All sites + template
Added 6
  • output_robots_meta() function — per-page robot directives (noindex for 404, search pages; post-level override)
  • License enforcement in init.php and login.php — redirects to license.php when no active license key is configured
  • Cross-site session hijacking prevention: cookie path scoped to site-specific URL path via parse_url(SITE_URL, PHP_URL_PATH)
  • Session _site_hash verification in Auth::loadUser() — prevents authenticated sessions from bleeding across co-hosted sites
  • Site-specific remember_token cookie path — remember-me tokens no longer shared between sites on same domain
  • Footer branding standardized across all installations
Fixed 8
  • API upload path double uploads/uploads/ prefix — uploadFromUrl() and uploadFromBase64() now strip redundant prefix before saving to database
  • Duplicate <link rel="canonical"> tags removed from affected site headers where both inline and output_seo_head() emitted canonicals
  • FAQ schema output: enforced minimum 3 items with 50+ character answers, maximum 10 items, deduplicated across helpers
  • Sidebar category post counts removed per design rules — "(5)" count display no longer appears in category listings
  • Author name links converted from non-clickable <span> to proper <a href> anchor tags in single.php files
  • SITE_NAME config spacing corrected — compound names like "FinanceSubject" updated to properly spaced "Finance Subject"
  • Schema.org URLs stripped of tracking parameters (utm_source, fbclid, etc.) via parse_url()
  • Post card images missing width/height attributes — CLS prevention applied across affected sites
Changed Files 7
api/v1/index.php Upload path fix
includes/helpers.php robots_meta, FAQ schema, schema URL cleanup
classes/Auth.php _site_hash verification, cookie path
classes/Session.php Site-specific cookie path
admin/includes/init.php License enforcement redirect
admin/login.php License check before auth
sql/v1.4.5-migration.sql Fix corrupt featured_image paths
v1.4.0 Feature

SEO Overhaul, Content Optimizer, Breadcrumbs & Table of Contents

All active sites
Added 12
  • Complete SEO overhaul across all active sites — meta tags, Open Graph, Twitter Cards, Schema.org structured data reviewed and standardized
  • Breadcrumb navigation with Schema.org BreadcrumbList markup added to every site
  • Table of Contents (TOC) — automatically generated from <h2>/<h3> headings, renders as sidebar widget or inline block depending on theme
  • Content Optimizer with dictionary-based synonym refresh — replaces removed AI API (Gemini/Groq) approach that broke Turkish morphology
  • Turkish synonym dictionary (~200 modern word pairs) and English synonym dictionary (~180 pairs) with archaic terms removed
  • Auto language detection via get_setting('general', 'ai_content_language') for optimizer dictionary selection
  • Google SERP site name fix: ?? operator replaced with ?: to catch empty strings in og:site_name and WebSite schema
  • <meta name="application-name"> tag added to all theme headers for Google site name signal
  • Pinterest Compose API endpoint for Livecub — Gemini generates photo, PHP GD adds text overlay, 5 layout templates, 1000×1500 output
  • SosyalMedya cover image engine replaced: PHP GD gradients → Gemini Image API professional photographs (1080×1920, AVIF, 5 styles)
  • Turkish slug generation fix: generateSlug() now properly transliterates ç, ğ, ı, ö, ş, ü across all sites
  • fix-slugs.php utility script for repairing existing corrupted Turkish slugs in production databases
Fixed 5
  • robots.txt files had unresolved {{SITE_DOMAIN}} placeholders in affected sites
  • hobirehber schema function was named output_hobbyrig_schema() instead of output_hobirehber_schema()
  • CSP header in production was blocking Google Analytics, AdSense, and Facebook Pixel domains
  • MinimalistRig posts had full URLs in featured_image column instead of relative paths
  • Livecub favicon was showing JekCMS [J] icon instead of Livecub L+Heart brand icon
Changed Files 7
includes/helpers.php SEO functions, breadcrumbs, TOC, schema fixes
includes/ContentOptimizer.php Dictionary-based synonym refresh engine
admin/content-optimizer.php Optimizer admin interface
themes/*/header.php Breadcrumbs, meta tags, application-name
themes/*/single.php TOC integration
themes/*/style.css Breadcrumb and TOC styling
api/v1/pinterest-compose.php NEW — Pinterest image composer (Livecub)
v1.3.1 Patch

Critical SEO Fix, Multi-Site Template & Documentation

All production sites + template system
Added 7
  • _template/ directory established as the canonical base for creating new JekCMS sites — includes all required files, folder structure, and placeholder variables
  • Dual-environment configuration: .env (local development) and .env-production (live server) with automatic detection based on hostname
  • Placeholder system for rapid site cloning: {{SITE_NAME}}, {{SITE_SLUG}}, {{SITE_DOMAIN}}
  • Standard error pages: 400, 401, 403, 404, 500, 502, 503 with consistent branding
  • Maintenance mode page (maintenance.php) with countdown timer
  • Standardized .htaccess with GZIP compression, browser caching (1 year for static assets), security headers, and URL rewriting
  • Complete deployment documentation: architecture guide, SEO checklist, responsive images reference, upgrade instructions
Fixed 6
  • Critical: Removed X-Robots-Tag: noindex HTTP header that was accidentally blocking all Google indexing across production sites
  • Admin content queue retry: attempts counter now resets to 0 when a failed task is re-queued
  • Removed obsolete Pinterest sharing code from post editor panel
  • Removed e-commerce menus (Sales, Customers) from blog-only site admin panels — these belong to the main marketing site only
  • Synchronized missing AJAX endpoints (comment, newsletter, comment-like) across all sites
  • Added missing SpamFilter.php class to kriptogetiri
Changed Files 6
sites/_template/ NEW — Complete site template directory
.env.example Environment configuration template
maintenance.php NEW — Maintenance mode page
error.php NEW — Unified error handler (400-503)
.htaccess Standardized security + performance rules
skills/*.md Architecture, deployment, SEO, image documentation
v1.3.0 Feature

E-Commerce, Customer Portal, License System & Multi-Language Engine

Core architecture
Added 17
  • Complete e-commerce system with iyzico payment gateway integration — credit card processing, 3D Secure, installment support
  • Order management lifecycle: create → payment → confirmation → processing → completed, with cancellation and refund flows
  • PDF invoice generation with automatic numbering, tax calculation, and downloadable customer receipts
  • Customer portal at /customer/ — dashboard with order history, active licenses, downloadable invoices, and profile management
  • Support ticket system with threaded messages, priority levels, and admin response tracking
  • Multi-language engine with database-driven translations — Turkish and English supported out of the box, extensible to any language
  • Translator class with lazy-loading approach: strings parsed on demand, not upfront — significant memory reduction on multi-locale installations
  • JekCMS license system with 6 tiers: DEV (free), PER (personal), STD (standard), PRO (professional), AGC (agency), ENT (enterprise)
  • License activation, validation, and deactivation API at /api/license/
  • Update server with check, download, and report endpoints at /api/updates/
  • Image proxy with SSRF protection — blocks private IP ranges (10.x, 172.16-31.x, 192.168.x, 127.x) and automatic garbage collection (7-day TTL)
  • Cache management system: page cache, query cache, object cache, sitemap cache, feed cache, image cache with admin AJAX clear controls
  • Rate limiting with IP-based tracking and configurable thresholds
  • IP blocking list for persistent abusers
  • SEO pagination: rel="next"/rel="prev" tags, canonical URL query string exclusion, robots.txt Allow: /*?page=
  • Responsive image srcset generation with automatic width/height attributes for CLS prevention
  • Gravatar 2x rendering for HiDPI/Retina displays
Breaking Changes 1
  • Sites relocated to sites/ directory structure — existing installations require path migration
Changed Files 14
classes/Order.php Order management
classes/Customer.php Customer accounts
classes/Invoice.php PDF invoice generation
classes/SupportTicket.php Support ticket system
classes/Translator.php Multi-language engine
classes/Payment/IyzicoGateway.php iyzico payment integration
classes/Security.php Rate limiting, CSRF, XSS protection
classes/License.php License client
classes/Updater.php Update client
includes/image-proxy.php SSRF-protected image proxy with GC
includes/cache-cleanup.php Cache garbage collection
customer/ NEW — Customer portal directory
api/license/ NEW — License API endpoints
api/updates/ NEW — Update server API endpoints
v1.2.1 Patch

Admin Panel English Translation & UI Polish

Initial blog sites
Added 6
  • Complete English translation of all admin panel interface elements — menus, labels, buttons, tooltips, error messages, and success notifications
  • Unified terminology across admin: consistent use of "Posts", "Pages", "Media", "Settings" throughout all modules
  • Post voting system activated — thumbs up/down with per-IP deduplication
  • Post view counter with bot-filtered tracking
  • Newsletter module wired into admin sidebar under PLUGINS section
  • AI content queue foundation — infrastructure for automated content generation pipeline
Fixed 2
  • Admin sidebar spacing reduced for cleaner navigation appearance
  • CSS improvements across admin panel — consistent padding, border alignment, and responsive behavior on smaller screens
v1.2.0 Feature

Plugin Architecture, Newsletter System & Advertising Module

Core + initial blog sites
Added 8
  • Plugin enable/disable system with database-driven management — plugins can be activated, deactivated, and configured without code changes
  • Newsletter module with subscriber management, campaign creation, and delivery tracking — moved from core to PLUGINS menu for optional activation
  • Advertising system for banner and inline ad placements with impression and click tracking
  • Contact form with spam protection, email notifications, and admin message management
  • Email delivery logging with status tracking (sent, failed, bounced)
  • Spam protection logging for audit and pattern analysis
  • Admin sidebar reorganized: PLUGINS section separated from core navigation
  • API endpoint enhancements for external integrations
Changed Files 6
classes/Plugin.php Plugin management engine
classes/Newsletter.php Newsletter subscriber + campaign system
classes/Advertising.php Ad placement and tracking
classes/SpamFilter.php Spam detection and logging
admin/plugins.php NEW — Plugin management interface
admin/newsletter.php NEW — Newsletter administration
v1.1.0 Feature

Environment System, SEO Tools & Performance Foundation

Core CMS foundation
Added 8
  • Environment configuration system — automatic local/production detection based on hostname with separate database credentials and URL settings
  • SEO Optimizer admin tool with on-page analysis, keyword density checker, and readability scoring
  • Extended sitemap system: sitemap.xml index with separate sitemap-posts.xml, sitemap-pages.xml, and sitemap-categories.xml
  • Schema.org auto-detection: Article, BlogPosting, WebPage, and WebSite structured data injected per page type
  • Post view tracking with post_views table — bot-filtered, deduplicated by IP, used for "Popular Posts" widgets
  • Post voting system infrastructure with post_votes table — per-IP rate limiting, thumbs up/down
  • Performance baseline: output buffering, query logging in development mode, execution time tracking
  • Advanced robots meta controls: per-page noindex/nofollow settings in post editor
Changed Files 4
config/environment.php NEW — Environment auto-detection
admin/seo-optimizer.php NEW — SEO analysis tool
includes/sitemap.php Extended sitemap generation
includes/schema.php Schema.org structured data
v1.0.0 Major

Initial Release — Blog CMS Foundation

First public release
Added 14
  • Core blog CMS with post and page management — WYSIWYG editor, draft/published/scheduled status workflow, revision history
  • User authentication with role-based access control: admin, editor, author, subscriber — each role has granular permission boundaries
  • Hierarchical category system with unlimited nesting depth and SEO-friendly URL slugs
  • Tag management with auto-suggest, bulk operations, and tag cloud generation
  • Media library with drag-and-drop upload, AVIF/WebP automatic conversion, and gallery management
  • Theme system supporting 14+ premium themes — each theme is a self-contained directory with templates, partials, assets, and configuration
  • Responsive design with mobile-first approach — all themes pass Google Mobile-Friendly test out of the box
  • Comment system with nested replies, Gravatar integration, and admin moderation queue
  • Basic SEO: <title> tags, <meta description>, canonical URLs, and XML sitemap generation
  • RSS feed at /feed.xml with full-content and excerpt modes
  • Search functionality with relevance scoring across titles, content, and excerpts
  • Admin dashboard with post statistics, recent activity feed, and quick-action buttons
  • API token system for external integrations — key generation, revocation, and usage logging
  • Clean URL routing via .htaccess rewrite rules — /post-slug, /category/name, /tag/name, /author/name
Changed Files 10
classes/Post.php Post/page CRUD + revision system
classes/User.php Authentication + role management
classes/Category.php Hierarchical categories
classes/Tag.php Tag management
classes/Media.php Media library + AVIF/WebP conversion
classes/Comment.php Threaded comments
classes/Database.php PDO wrapper with prepared statements
admin/ Complete admin panel (dashboard, posts, pages, media, settings)
themes/ 14+ responsive themes
api/v1/index.php RESTful API with token authentication