1. Home
  2. Docs
  3. XML Sitemap Generator + A...
  4. Changelog — v3.5.6 to v3.6.0

Changelog — v3.5.6 to v3.6.0

Version 3.6.0 is a major release. Below is a complete list of new features, enhancements, and fixes compared to version 3.5.6.

✅ Upgrading from v3.5.6? Your existing settings and custom links are fully preserved. No manual database changes are needed.


New Features

IndexNow Integration (Entirely New)

  • Full IndexNow queue system with database-backed tracking per entity, store, and language
  • Automatic event hooks — products, categories, manufacturers, and information pages are queued automatically on add, edit, and delete in the OpenCart admin
  • Cron-based async submission — up to 100 URLs per cron run, grouped by store and language
  • IndexNow Queue Manager — dedicated page to view, filter, force-retry, and delete queue entries
  • Auto-disable protection — cron is automatically disabled when consecutive failures or failure rate exceeds configurable thresholds
  • Auto-disable email alert — store admin receives an email when the cron is auto-disabled
  • Key management — generate API keys and cron keys from the admin; validate key file accessibility with one click
  • Automatic key file management — extension writes the key file to your web root during cron processing
  • Bulk Sync All — queue all existing products, categories, manufacturers, and information pages for initial submission
  • Force IndexNow — trigger immediate submission for any specific queue row from the Queue Manager
  • 24-hour activity chart and success/failed totals on the dashboard
  • Individual hook enable/disable — disable specific event hooks (e.g., product-add only) without disabling IndexNow entirely
  • Configurable retry limit, queue retention, log retention, and failure rate threshold

AI JSON Feed (Entirely New)

  • Paginated JSON product feed at /ai_feed_index.json (with .htaccess) or route URL
  • Feed index provides a manifest of all feed pages across all languages
  • Each feed page includes: product_id, URL, name, cleaned description, price, special, currency, manufacturer, category_hierarchy array, stock_status, last_updated
  • importance_score field (0.7–1.0) when Smart SEO Mode is enabled — same formula as sitemap priority
  • Multi-language support with ?hbxmllang= parameter
  • Dedicated AI feed file cache with separate directory, TTL, and purge control
  • ETag and Last-Modified HTTP headers for efficient 304 Not Modified handling
  • Backward compatibility: legacy ?page=N AI feed URLs continue to work

Static File Cache (New for Both Sitemaps and AI Feed)

  • Sitemap XML files cached in system/storage/cache/hbseo_sitemap/
  • AI feed JSON files cached in system/storage/cache/hbseo_ai_feed/
  • Atomic file writes (write to temp + rename) prevent partial reads during regeneration
  • ETag, Last-Modified, and Cache-Control headers on cached responses
  • 304 Not Modified support for both If-None-Match and If-Modified-Since conditional requests
  • X-Feed-Cache: HIT / MISS header for debugging
  • Configurable TTL per cache type (minimum 60 seconds)
  • Separate purge buttons for sitemap cache and AI feed cache in admin

Enhancements

Sitemap Generation

  • Sitemap and child sitemaps now respond with proper 503 Service Unavailable when disabled (previously echoed plain text)
  • All sitemaps served with ETag and Cache-Control headers
  • Smart SEO Mode importance score is now consistent between XML sitemap priority and AI feed importance_score
  • Request-scope caches for max_sales and log_denominator — avoids redundant queries within one page generation
  • Improved product image dimension detection — auto-detects theme popup image size per store; falls back to 1200×1200
  • Image dimensions can be manually overridden with Quick Preset buttons

.htaccess Management

  • htaccess management moved entirely to the model layer (syncHbseoHtaccessRules() / removeHbseoHtaccessRules())
  • Automatic .htaccess.sitemap.BACKUP created before any write
  • Rule detection now uses regex matching (RewriteRule.*extension/hbseo/) — more reliable than simple string search
  • Remove button now reports how many lines were removed
  • htaccess rules updated to include AI feed routes alongside sitemap routes

Admin Panel UX

  • Extension renamed to “XML Sitemap + AI Feed + IndexNow”
  • New AI Feed tab and IndexNow tab added
  • Dashboard now shows AI feed pagination summary and IndexNow statistics
  • Invalid date warnings now show separate counts for products and categories
  • Bulk import now reports added count and duplicate-skipped count separately (no longer silently skips duplicates)
  • Fix Dates action now validates permissions before running

Settings Validation

  • Cache TTL validated: must be numeric and ≥ 60 seconds
  • IndexNow numeric settings validated with min/max constraints
  • Log retention days enforced to be ≥ queue retention days
  • Failure rate threshold validated as 0.0–1.0 float
  • IndexNow API key required when IndexNow is enabled (enforced on save)

Bug Fixes

  • Fixed: store_id not correctly passed to getSitemapImageDimensions() — image sizes could use the wrong store’s theme settings on multi-store setups
  • Fixed: add_link and delete_link AJAX actions now validate URL scheme (only http/https allowed)
  • Fixed: import_bulk reported misleading success when all links were duplicates — now correctly tracks and reports duplicate count separately
  • Fixed: Four near-identical extractEntityIdFromEvent() methods consolidated into one, fixing inconsistent ID extraction
  • Fixed: indexnow_sync_all() now uses the shared queueIndexNowEntity() wrapper, correctly resolving language IDs
  • Fixed: Cache purge endpoints now share a single doPurgeCache() private method, eliminating duplicated permission-check logic

Database Changes

TableChange
oc_hb_indexnow_queueNew — stores the IndexNow submission queue
oc_hb_indexnow_logsNew — stores IndexNow submission history
oc_sitemap_linksUnchanged — existing custom links preserved