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, cleaneddescription,price,special,currency,manufacturer,category_hierarchyarray,stock_status,last_updated importance_scorefield (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
ETagandLast-ModifiedHTTP headers for efficient 304 Not Modified handling- Backward compatibility: legacy
?page=NAI 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, andCache-Controlheaders on cached responses304 Not Modifiedsupport for bothIf-None-MatchandIf-Modified-Sinceconditional requestsX-Feed-Cache: HIT / MISSheader 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 Unavailablewhen disabled (previously echoed plain text) - All sitemaps served with
ETagandCache-Controlheaders - Smart SEO Mode importance score is now consistent between XML sitemap priority and AI feed
importance_score - Request-scope caches for
max_salesandlog_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.BACKUPcreated 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_idnot correctly passed togetSitemapImageDimensions()— image sizes could use the wrong store’s theme settings on multi-store setups - Fixed:
add_linkanddelete_linkAJAX actions now validate URL scheme (onlyhttp/httpsallowed) - Fixed:
import_bulkreported 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 sharedqueueIndexNowEntity()wrapper, correctly resolving language IDs - Fixed: Cache purge endpoints now share a single
doPurgeCache()private method, eliminating duplicated permission-check logic
Database Changes
| Table | Change |
|---|---|
oc_hb_indexnow_queue | New — stores the IndexNow submission queue |
oc_hb_indexnow_logs | New — stores IndexNow submission history |
oc_sitemap_links | Unchanged — existing custom links preserved |