LLMO SEO — v2.1.0 Corrective Notes (English)
Scope
This release addresses packaging and metadata issues reported by XenForo’s Resource Manager: missing option groups, options, and routes, plus icon duplication and hashes placement.
Fixes & Additions
1) Option Group (NEW)
- Added _data/option_groups/llmoseo.json
- Group ID: llmoseo
- Title: “LLMO SEO” (order 1000)
- Purpose: Properly hosts all add-on options in Admin → Options.
2) Options (NEW, 5 items)
- Added _data/options/llmoseo_enable.json → on/off (default: true)
- Added _data/options/llmoseo_debug.json → on/off (default: false)
- Added _data/options/llmoseo_strip_pii.json → on/off (default: true)
- Added _data/options/llmoseo_cache_ttl.json → spinbox, positive integer (default: 3600)
- Added _data/options/llmoseo_route_whitelist.json → multiline textbox (default: threads/
, forums/, resources/
, members/)
- Each option is related to the llmoseo group with a display order.
3) Public Route (NEW)
- Added _data/routes/public/llmoseo_health.json
- Prefix: llmoseo/health
- Controller: Vendor\LlmoSeo\Pub\Controller\Health
- Action: actionIndex() → returns a simple “LLMO SEO OK” message.
- Purpose: Ensure the add-on defines at least one valid route, satisfying Resource Manager checks.
4) Controller (NEW)
- Added Pub/Controller/Health.php
- Minimal public controller implementing actionIndex() to support the health route.
5) Icon (CLEANUP)
- Single icon at add-on root: icon.jpg
- addon.json now references: "icon": "icon.jpg"
- Removed all duplicate icons under _data/ and non-JPG formats.
6) Hashes (COMPLIANCE)
- Generated checksums for all files.
- Provided in BOTH locations for compatibility:
• hashes.json (root, next to addon.json)
• _data/hashes.json
7) Version & Metadata
- addon.json bumped to version_string: "2.1.0", version_id: 2010000
- XenForo requirement unchanged: 2.3.7+.
- PHP compatibility unchanged: 8.4-ready.
Unchanged (for context)
- Listeners: AppPubStart, TemplaterSetup, ThreadView, ResourceView, ForumView, UserView.
- Services: Context (PageContextResolver, EntityExtractor, IntentClassifier); JsonLd (Builder + Types).
- Templates: Public partial llmoseo_jsonld_* rendering a single <script id="llmo-seo" type="application/ld+json"> block.
- CLI: llmo:validate (checks presence/size/valid JSON-LD).
Admin Verification Checklist
1) ACP → Add-ons → LLMO SEO shows icon and version 2.1.0.
2) ACP → Options → “LLMO SEO” group is visible with 5 options.
3) Front-end → /llmoseo/health displays “LLMO SEO OK”.
4) View Source on a thread page → JSON-LD block present in <head>.
5) Optional: run CLI validator or Google Rich Results test to confirm schema.
Upgrade Notes
- Safe to install over prior versions; options will appear under the new “LLMO SEO” group.
- If you previously relied on duplicate icons or hashes locations, the new structure standardizes them while retaining compatibility by keeping hashes at both root and _data.
Troubleshooting
- If the health route 404s, flush caches and rebuild the master data (ACP → Tools).
- If options do not appear, confirm the presence of data/option_groups/llmoseo.json and all _data/options/llmoseo*.json files in the installed package.